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/builtin_clock.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/kernel_wakelocks_config.proto
741
742/// Data source that records kernel (and native) wakelock data.
743#[derive(Clone, PartialEq, ::prost::Message)]
744pub struct KernelWakelocksConfig {
745    /// Record at this frequency.
746    #[prost(uint32, optional, tag="1")]
747    pub poll_ms: ::core::option::Option<u32>,
748}
749// End of protos/perfetto/config/android/kernel_wakelocks_config.proto
750
751// Begin of protos/perfetto/config/android/network_trace_config.proto
752
753/// Network tracing data source that records details on all packets sent or
754/// received by the network.
755#[derive(Clone, PartialEq, ::prost::Message)]
756pub struct NetworkPacketTraceConfig {
757    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
758    /// ring buffer. The polling interval should be such that the ring buffer is
759    /// unlikely to fill in that interval (or that filling is an acceptable risk).
760    /// The minimum polling rate is 100ms (values below this are ignored).
761    /// Introduced in Android 14 (U).
762    #[prost(uint32, optional, tag="1")]
763    pub poll_ms: ::core::option::Option<u32>,
764    /// The aggregation_threshold is the number of packets at which an event will
765    /// switch from per-packet details to aggregate details. For example, a value
766    /// of 50 means that if a particular event (grouped by the unique combinations
767    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
768    /// packets, the exact timestamp and length are recorded for each packet. If
769    /// there were 50 or more packets in an event, it would only record the total
770    /// duration, packets, and length. A value of zero or unspecified will always
771    /// / record per-packet details. A value of 1 always records aggregate details.
772    #[prost(uint32, optional, tag="2")]
773    pub aggregation_threshold: ::core::option::Option<u32>,
774    /// Specifies the maximum number of packet contexts to intern at a time. This
775    /// prevents the interning table from growing too large and controls whether
776    /// interning is enabled or disabled (a value of zero disables interning and
777    /// is the default). When a data sources interning table reaches this amount,
778    /// packet contexts will be inlined into NetworkPacketEvents.
779    #[prost(uint32, optional, tag="3")]
780    pub intern_limit: ::core::option::Option<u32>,
781    /// The following fields specify whether certain fields should be dropped from
782    /// the output. Dropping fields improves normalization results, reduces the
783    /// size of the interning table, and slightly reduces event size.
784    #[prost(bool, optional, tag="4")]
785    pub drop_local_port: ::core::option::Option<bool>,
786    #[prost(bool, optional, tag="5")]
787    pub drop_remote_port: ::core::option::Option<bool>,
788    #[prost(bool, optional, tag="6")]
789    pub drop_tcp_flags: ::core::option::Option<bool>,
790}
791// End of protos/perfetto/config/android/network_trace_config.proto
792
793// Begin of protos/perfetto/config/android/packages_list_config.proto
794
795/// Data source that lists details (such as version code) about packages on an
796/// Android device.
797#[derive(Clone, PartialEq, ::prost::Message)]
798pub struct PackagesListConfig {
799    /// If not empty, emit info about only the following list of package names
800    /// (exact match, no regex). Otherwise, emit info about all packages.
801    #[prost(string, repeated, tag="1")]
802    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
803    /// If present and non-zero, the data source will periodically poll for CPU
804    /// use by packages and only emit results for those that it sees. If absent,
805    /// the data source will emit results for all packages at startup. The package
806    /// name filter applies either way.
807    #[prost(uint32, optional, tag="2")]
808    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
809}
810// End of protos/perfetto/config/android/packages_list_config.proto
811
812// Begin of protos/perfetto/config/android/pixel_modem_config.proto
813
814/// Data source that records events from the modem.
815#[derive(Clone, PartialEq, ::prost::Message)]
816pub struct PixelModemConfig {
817    #[prost(enumeration="pixel_modem_config::EventGroup", optional, tag="1")]
818    pub event_group: ::core::option::Option<i32>,
819    /// If set, record only events with these hashes.
820    #[prost(int64, repeated, packed="false", tag="2")]
821    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
822    /// If set and allow_list is not set, deny events with these hashes.
823    #[prost(int64, repeated, packed="false", tag="3")]
824    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
825}
826/// Nested message and enum types in `PixelModemConfig`.
827pub mod pixel_modem_config {
828    /// Event group to record, as defined by the modem.
829    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
830    #[repr(i32)]
831    pub enum EventGroup {
832        Unknown = 0,
833        /// Events suitable for low bandwidth tracing only.
834        LowBandwidth = 1,
835        /// Events suitable for high and low bandwidth tracing.
836        HighAndLowBandwidth = 2,
837    }
838    impl EventGroup {
839        /// String value of the enum field names used in the ProtoBuf definition.
840        ///
841        /// The values are not transformed in any way and thus are considered stable
842        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
843        pub fn as_str_name(&self) -> &'static str {
844            match self {
845                EventGroup::Unknown => "EVENT_GROUP_UNKNOWN",
846                EventGroup::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
847                EventGroup::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
848            }
849        }
850    }
851}
852// Begin of protos/perfetto/config/android/protolog_config.proto
853
854/// Custom configuration for the "android.protolog" data source.
855/// ProtoLog is a logging mechanism that is intented to be more efficient than
856/// logcat. This configures what logs to capture in the tracing instance.
857#[derive(Clone, PartialEq, ::prost::Message)]
858pub struct ProtoLogConfig {
859    /// Specified the configurations for each of the logging groups. If none is
860    /// specified for a group the defaults will be used.
861    #[prost(message, repeated, tag="1")]
862    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
863    /// Specified what tracing mode to use for the tracing instance.
864    #[prost(enumeration="proto_log_config::TracingMode", optional, tag="2")]
865    pub tracing_mode: ::core::option::Option<i32>,
866    /// If set, any message with log level higher than this level (inclusive) will
867    /// be traced. Group overrides take precedence over this value.
868    #[prost(enumeration="ProtoLogLevel", optional, tag="3")]
869    pub default_log_from_level: ::core::option::Option<i32>,
870}
871/// Nested message and enum types in `ProtoLogConfig`.
872pub mod proto_log_config {
873    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
874    #[repr(i32)]
875    pub enum TracingMode {
876        /// When using the DEFAULT tracing mode, only log groups and levels specified
877        /// in the group_overrides are traced.
878        Default = 0,
879        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
880        /// traced, unless specified in the group_overrides.
881        EnableAll = 1,
882    }
883    impl TracingMode {
884        /// String value of the enum field names used in the ProtoBuf definition.
885        ///
886        /// The values are not transformed in any way and thus are considered stable
887        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
888        pub fn as_str_name(&self) -> &'static str {
889            match self {
890                TracingMode::Default => "DEFAULT",
891                TracingMode::EnableAll => "ENABLE_ALL",
892            }
893        }
894    }
895}
896#[derive(Clone, PartialEq, ::prost::Message)]
897pub struct ProtoLogGroup {
898    /// The ProtoLog group name this configuration entry applies to.
899    #[prost(string, optional, tag="1")]
900    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
901    /// Specify the level from which to start capturing protologs.
902    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
903    /// message will be traced.
904    #[prost(enumeration="ProtoLogLevel", optional, tag="2")]
905    pub log_from: ::core::option::Option<i32>,
906    /// When set to true we will collect the stacktrace for each protolog message
907    /// in this group that we are tracing.
908    #[prost(bool, optional, tag="3")]
909    pub collect_stacktrace: ::core::option::Option<bool>,
910}
911// End of protos/perfetto/config/android/protolog_config.proto
912
913// Begin of protos/perfetto/config/android/surfaceflinger_layers_config.proto
914
915/// Custom configuration for the "android.surfaceflinger.layers" data source.
916#[derive(Clone, PartialEq, ::prost::Message)]
917pub struct SurfaceFlingerLayersConfig {
918    #[prost(enumeration="surface_flinger_layers_config::Mode", optional, tag="1")]
919    pub mode: ::core::option::Option<i32>,
920    #[prost(enumeration="surface_flinger_layers_config::TraceFlag", repeated, packed="false", tag="2")]
921    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
922}
923/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
924pub mod surface_flinger_layers_config {
925    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
926    #[repr(i32)]
927    pub enum Mode {
928        Unspecified = 0,
929        /// Trace layers snapshots. A snapshot is taken every time a layers change
930        /// occurs.
931        Active = 1,
932        /// Generate layers snapshots from the transactions kept in the
933        /// SurfaceFlinger's internal ring buffer.
934        /// The layers snapshots generation occurs when this data source is flushed.
935        Generated = 2,
936        /// Trace a single layers snapshot.
937        Dump = 3,
938        /// Default mode (applied by SurfaceFlinger if no mode is specified).
939        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
940        /// when a bugreport is taken.
941        GeneratedBugreportOnly = 4,
942    }
943    impl Mode {
944        /// String value of the enum field names used in the ProtoBuf definition.
945        ///
946        /// The values are not transformed in any way and thus are considered stable
947        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
948        pub fn as_str_name(&self) -> &'static str {
949            match self {
950                Mode::Unspecified => "MODE_UNSPECIFIED",
951                Mode::Active => "MODE_ACTIVE",
952                Mode::Generated => "MODE_GENERATED",
953                Mode::Dump => "MODE_DUMP",
954                Mode::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
955            }
956        }
957    }
958    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
959    #[repr(i32)]
960    pub enum TraceFlag {
961        Unspecified = 0,
962        Input = 2,
963        Composition = 4,
964        Extra = 8,
965        Hwc = 16,
966        Buffers = 32,
967        VirtualDisplays = 64,
968        /// INPUT | COMPOSITION | EXTRA
969        All = 14,
970    }
971    impl TraceFlag {
972        /// String value of the enum field names used in the ProtoBuf definition.
973        ///
974        /// The values are not transformed in any way and thus are considered stable
975        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
976        pub fn as_str_name(&self) -> &'static str {
977            match self {
978                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
979                TraceFlag::Input => "TRACE_FLAG_INPUT",
980                TraceFlag::Composition => "TRACE_FLAG_COMPOSITION",
981                TraceFlag::Extra => "TRACE_FLAG_EXTRA",
982                TraceFlag::Hwc => "TRACE_FLAG_HWC",
983                TraceFlag::Buffers => "TRACE_FLAG_BUFFERS",
984                TraceFlag::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
985                TraceFlag::All => "TRACE_FLAG_ALL",
986            }
987        }
988    }
989}
990// End of protos/perfetto/config/android/surfaceflinger_layers_config.proto
991
992// Begin of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
993
994/// Custom configuration for the "android.surfaceflinger.transactions" data
995/// source.
996#[derive(Clone, PartialEq, ::prost::Message)]
997pub struct SurfaceFlingerTransactionsConfig {
998    #[prost(enumeration="surface_flinger_transactions_config::Mode", optional, tag="1")]
999    pub mode: ::core::option::Option<i32>,
1000}
1001/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
1002pub mod surface_flinger_transactions_config {
1003    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1004    #[repr(i32)]
1005    pub enum Mode {
1006        Unspecified = 0,
1007        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1008        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1009        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1010        /// initial state and the latest transactions.
1011        Continuous = 1,
1012        /// SurfaceFlinger writes the initial state and then each incoming
1013        /// transaction until the data source is stopped.
1014        Active = 2,
1015    }
1016    impl Mode {
1017        /// String value of the enum field names used in the ProtoBuf definition.
1018        ///
1019        /// The values are not transformed in any way and thus are considered stable
1020        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1021        pub fn as_str_name(&self) -> &'static str {
1022            match self {
1023                Mode::Unspecified => "MODE_UNSPECIFIED",
1024                Mode::Continuous => "MODE_CONTINUOUS",
1025                Mode::Active => "MODE_ACTIVE",
1026            }
1027        }
1028    }
1029}
1030// End of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
1031
1032// Begin of protos/perfetto/config/android/user_list_config.proto
1033
1034/// Data source that lists details (such as version code) about users on an
1035/// Android device.
1036#[derive(Clone, PartialEq, ::prost::Message)]
1037pub struct AndroidUserListConfig {
1038    /// An allowlist of user type strings, used to control the granularity of
1039    /// user type information emitted in the trace. Exact, case-sensitive string
1040    /// matching is used.
1041    ///
1042    /// Any user type read from the device that is NOT present in the
1043    /// effective allowlist will have its type reported as
1044    /// "android.os.usertype.FILTERED".
1045    ///
1046    /// The effective allowlist is determined as follows:
1047    ///
1048    /// 1. If this 'user_type_filter' field is provided and non-empty:
1049    ///     This list itself is the effective allowlist.
1050    ///     Example TraceConfig:
1051    ///     --------------------
1052    ///     data_sources {
1053    ///         config {
1054    ///             name: "android.user_list"
1055    ///             target_buffer: 0
1056    ///             user_list_config {
1057    ///               # Only report these specific types, others become FILTERED.
1058    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
1059    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
1060    ///             }
1061    ///         }
1062    ///     }
1063    ///
1064    ///
1065    /// Note: This field does not support regular expressions.
1066    #[prost(string, repeated, tag="1")]
1067    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1068}
1069// End of protos/perfetto/config/android/user_list_config.proto
1070
1071// Begin of protos/perfetto/config/android/windowmanager_config.proto
1072
1073/// Custom configuration for the "android.windowmanager" data source.
1074#[derive(Clone, PartialEq, ::prost::Message)]
1075pub struct WindowManagerConfig {
1076    #[prost(enumeration="window_manager_config::LogFrequency", optional, tag="1")]
1077    pub log_frequency: ::core::option::Option<i32>,
1078    #[prost(enumeration="window_manager_config::LogLevel", optional, tag="2")]
1079    pub log_level: ::core::option::Option<i32>,
1080}
1081/// Nested message and enum types in `WindowManagerConfig`.
1082pub mod window_manager_config {
1083    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1084    #[repr(i32)]
1085    pub enum LogFrequency {
1086        Unspecified = 0,
1087        /// Trace state snapshots when a frame is committed.
1088        Frame = 1,
1089        /// Trace state snapshots every time a transaction is committed.
1090        Transaction = 2,
1091        /// Trace single state snapshots when the data source is started.
1092        SingleDump = 3,
1093    }
1094    impl LogFrequency {
1095        /// String value of the enum field names used in the ProtoBuf definition.
1096        ///
1097        /// The values are not transformed in any way and thus are considered stable
1098        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1099        pub fn as_str_name(&self) -> &'static str {
1100            match self {
1101                LogFrequency::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1102                LogFrequency::Frame => "LOG_FREQUENCY_FRAME",
1103                LogFrequency::Transaction => "LOG_FREQUENCY_TRANSACTION",
1104                LogFrequency::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1105            }
1106        }
1107    }
1108    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1109    #[repr(i32)]
1110    pub enum LogLevel {
1111        Unspecified = 0,
1112        /// Logs all elements with maximum amount of information.
1113        Verbose = 1,
1114        /// Logs all elements but doesn't write all configuration data.
1115        Debug = 2,
1116        /// Logs only visible elements, with the minimum amount of performance
1117        /// overhead
1118        Critical = 3,
1119    }
1120    impl LogLevel {
1121        /// String value of the enum field names used in the ProtoBuf definition.
1122        ///
1123        /// The values are not transformed in any way and thus are considered stable
1124        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1125        pub fn as_str_name(&self) -> &'static str {
1126            match self {
1127                LogLevel::Unspecified => "LOG_LEVEL_UNSPECIFIED",
1128                LogLevel::Verbose => "LOG_LEVEL_VERBOSE",
1129                LogLevel::Debug => "LOG_LEVEL_DEBUG",
1130                LogLevel::Critical => "LOG_LEVEL_CRITICAL",
1131            }
1132        }
1133    }
1134}
1135// End of protos/perfetto/config/android/windowmanager_config.proto
1136
1137// Begin of protos/perfetto/config/chrome/chrome_config.proto
1138
1139#[derive(Clone, PartialEq, ::prost::Message)]
1140pub struct ChromeConfig {
1141    #[prost(string, optional, tag="1")]
1142    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1143    /// When enabled, the data source should only fill in fields in the output that
1144    /// are not potentially privacy sensitive.
1145    #[prost(bool, optional, tag="2")]
1146    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1147    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1148    /// JSON format. Note that the trace data will still be returned as a series of
1149    /// TracePackets, but the embedded data will be JSON instead of serialized
1150    /// protobuf.
1151    #[prost(bool, optional, tag="3")]
1152    pub convert_to_legacy_json: ::core::option::Option<bool>,
1153    #[prost(enumeration="chrome_config::ClientPriority", optional, tag="4")]
1154    pub client_priority: ::core::option::Option<i32>,
1155    /// Applicable only when using legacy JSON format.
1156    /// If |json_agent_label_filter| is not empty, only data pertaining to
1157    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1158    #[prost(string, optional, tag="5")]
1159    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1160    ///   When enabled, event names should not contain package names.
1161    #[prost(bool, optional, tag="6")]
1162    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
1163}
1164/// Nested message and enum types in `ChromeConfig`.
1165pub mod chrome_config {
1166    /// Priority of the tracing session client. A higher priority session may
1167    /// preempt a lower priority one in configurations where concurrent sessions
1168    /// aren't supported.
1169    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1170    #[repr(i32)]
1171    pub enum ClientPriority {
1172        Unknown = 0,
1173        Background = 1,
1174        UserInitiated = 2,
1175    }
1176    impl ClientPriority {
1177        /// String value of the enum field names used in the ProtoBuf definition.
1178        ///
1179        /// The values are not transformed in any way and thus are considered stable
1180        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1181        pub fn as_str_name(&self) -> &'static str {
1182            match self {
1183                ClientPriority::Unknown => "UNKNOWN",
1184                ClientPriority::Background => "BACKGROUND",
1185                ClientPriority::UserInitiated => "USER_INITIATED",
1186            }
1187        }
1188    }
1189}
1190// End of protos/perfetto/config/chrome/chrome_config.proto
1191
1192// Begin of protos/perfetto/config/chrome/histogram_samples.proto
1193
1194#[derive(Clone, PartialEq, ::prost::Message)]
1195pub struct ChromiumHistogramSamplesConfig {
1196    /// List of histograms to record. If no histogram is specified, all histograms
1197    /// are recorded.
1198    #[prost(message, repeated, tag="1")]
1199    pub histograms: ::prost::alloc::vec::Vec<chromium_histogram_samples_config::HistogramSample>,
1200    /// Default: false (i.e. histogram names are NOT filtered out by default)
1201    /// When true, histogram_name will be filtered out.
1202    #[prost(bool, optional, tag="2")]
1203    pub filter_histogram_names: ::core::option::Option<bool>,
1204}
1205/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
1206pub mod chromium_histogram_samples_config {
1207    /// Records when a value within the specified bounds [min_value, max_value] is
1208    /// emitted into a Chrome histogram.
1209    #[derive(Clone, PartialEq, ::prost::Message)]
1210    pub struct HistogramSample {
1211        #[prost(string, optional, tag="1")]
1212        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
1213        #[prost(int64, optional, tag="2")]
1214        pub min_value: ::core::option::Option<i64>,
1215        #[prost(int64, optional, tag="3")]
1216        pub max_value: ::core::option::Option<i64>,
1217    }
1218}
1219// End of protos/perfetto/config/chrome/histogram_samples.proto
1220
1221// Begin of protos/perfetto/config/chrome/system_metrics.proto
1222
1223#[derive(Clone, PartialEq, ::prost::Message)]
1224pub struct ChromiumSystemMetricsConfig {
1225    /// Samples counters every X ms.
1226    #[prost(uint32, optional, tag="1")]
1227    pub sampling_interval_ms: ::core::option::Option<u32>,
1228}
1229// End of protos/perfetto/config/chrome/system_metrics.proto
1230
1231// Begin of protos/perfetto/config/chrome/v8_config.proto
1232
1233#[derive(Clone, PartialEq, ::prost::Message)]
1234pub struct V8Config {
1235    /// Whether to log the actual content of scripts (e.g. content of the JS file
1236    /// that was compiled to generate code).
1237    /// ATTENTION: This could considerably increase the size of the resuling trace
1238    ///             file.
1239    #[prost(bool, optional, tag="1")]
1240    pub log_script_sources: ::core::option::Option<bool>,
1241    /// Whether to log the generated code for jitted functions (machine code or
1242    /// bytecode).
1243    /// ATTENTION: This could considerably increase the size of the resuling trace
1244    ///             file.
1245    #[prost(bool, optional, tag="2")]
1246    pub log_instructions: ::core::option::Option<bool>,
1247}
1248// End of protos/perfetto/config/chrome/v8_config.proto
1249
1250// Begin of protos/perfetto/config/etw/etw_config.proto
1251
1252/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1253/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1254/// ns-evntrace-event_trace_properties
1255#[derive(Clone, PartialEq, ::prost::Message)]
1256pub struct EtwConfig {
1257    /// The kernel_flags determines the flags that will be used by the etw tracing
1258    /// session. These kernel flags have been built to expose the useful events
1259    /// captured from the kernel mode only.
1260    #[prost(enumeration="etw_config::KernelFlag", repeated, packed="false", tag="1")]
1261    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1262    // See the list of keywords for for individual providers.
1263    // <https://learn.microsoft.com/en-us/windows/win32/etw/system-providers>
1264
1265    /// Provides events relating to the scheduler.
1266    #[prost(string, repeated, tag="2")]
1267    pub scheduler_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1268    /// Provides events relating to the memory manager.
1269    #[prost(string, repeated, tag="3")]
1270    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1271    /// Provides events relating to file I/O.
1272    #[prost(string, repeated, tag="4")]
1273    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1274}
1275/// Nested message and enum types in `EtwConfig`.
1276pub mod etw_config {
1277    /// The KernelFlag represent list of kernel flags that we are intrested in.
1278    /// To get a more extensive list run 'xperf -providers k'.
1279    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1280    #[repr(i32)]
1281    pub enum KernelFlag {
1282        Cswitch = 0,
1283        Dispatcher = 1,
1284    }
1285    impl KernelFlag {
1286        /// String value of the enum field names used in the ProtoBuf definition.
1287        ///
1288        /// The values are not transformed in any way and thus are considered stable
1289        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1290        pub fn as_str_name(&self) -> &'static str {
1291            match self {
1292                KernelFlag::Cswitch => "CSWITCH",
1293                KernelFlag::Dispatcher => "DISPATCHER",
1294            }
1295        }
1296    }
1297}
1298// End of protos/perfetto/config/etw/etw_config.proto
1299
1300// Begin of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1301
1302#[derive(Clone, PartialEq, ::prost::Message)]
1303pub struct FrozenFtraceConfig {
1304    /// The instance name which stores the previous boot ftrace data. Required.
1305    #[prost(string, optional, tag="1")]
1306    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1307}
1308// End of protos/perfetto/config/ftrace/frozen_ftrace_config.proto
1309
1310// Begin of protos/perfetto/config/ftrace/ftrace_config.proto
1311
1312/// Next id: 38
1313#[derive(Clone, PartialEq, ::prost::Message)]
1314pub struct FtraceConfig {
1315    /// Ftrace events to record, example: "sched/sched_switch".
1316    #[prost(string, repeated, tag="1")]
1317    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1318    /// Android-specific event categories:
1319    #[prost(string, repeated, tag="2")]
1320    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1321    #[prost(string, repeated, tag="3")]
1322    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1323    /// Some processes can emit data through atrace or through the perfetto SDK via
1324    /// the "track_event" data source. For these categories, the SDK will be
1325    /// preferred, if possible, for this config.
1326    #[prost(string, repeated, tag="28")]
1327    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1328    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
1329    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
1330    /// events for convenience (and the vendor-specific events on top).
1331    /// Introduced in: perfetto v52.
1332    #[prost(bool, optional, tag="34")]
1333    pub atrace_userspace_only: ::core::option::Option<bool>,
1334    /// Size of each per-cpu kernel ftrace ring buffer.
1335    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
1336    /// buffers cannot be resized without pausing recording in the kernel.
1337    #[prost(uint32, optional, tag="10")]
1338    pub buffer_size_kb: ::core::option::Option<u32>,
1339    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
1340    /// implementation to choose a bigger buffer size.
1341    ///
1342    /// Most configs for perfetto v43+ should simply leave both fields unset.
1343    ///
1344    /// If you need a config compatible with a range of perfetto builds and you
1345    /// used to set a non-default buffer_size_kb, consider setting both fields.
1346    /// Example:
1347    ///    buffer_size_kb: 4096
1348    ///    buffer_size_lower_bound: true
1349    /// On older builds, the per-cpu buffers will be exactly 4 MB.
1350    /// On v43+, buffers will be at least 4 MB.
1351    /// In both cases, neither is guaranteed if there are other concurrent
1352    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
1353    /// the recording in the kernel.
1354    /// Introduced in: perfetto v43.
1355    #[prost(bool, optional, tag="27")]
1356    pub buffer_size_lower_bound: ::core::option::Option<bool>,
1357    /// If set, specifies how often the tracing daemon reads from the kernel ring
1358    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
1359    /// Leave unset unless you're fine-tuning a local config.
1360    #[prost(uint32, optional, tag="11")]
1361    pub drain_period_ms: ::core::option::Option<u32>,
1362    /// If set, the tracing daemon will read kernel ring buffers as soon as
1363    /// they're filled past this percentage of occupancy. In other words, a value
1364    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
1365    /// half-full. Not guaranteed if there are multiple concurrent tracing
1366    /// sessions.
1367    /// Currently does nothing on Linux kernels below v6.9.
1368    /// Introduced in: perfetto v48.
1369    #[prost(uint32, optional, tag="29")]
1370    pub drain_buffer_percent: ::core::option::Option<u32>,
1371    #[prost(message, optional, tag="12")]
1372    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
1373    #[prost(message, optional, tag="22")]
1374    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
1375    /// Enables symbol name resolution against /proc/kallsyms.
1376    /// It requires that either traced_probes is running as root or that
1377    /// kptr_restrict has been manually lowered.
1378    /// It does not disclose KASLR, symbol addresses are mangled.
1379    #[prost(bool, optional, tag="13")]
1380    pub symbolize_ksyms: ::core::option::Option<bool>,
1381    #[prost(enumeration="ftrace_config::KsymsMemPolicy", optional, tag="17")]
1382    pub ksyms_mem_policy: ::core::option::Option<i32>,
1383    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
1384    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
1385    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
1386    /// The historical context for this is the following:
1387    /// - Up to Android S (12), the rss_stat was internally throttled in its
1388    ///    kernel implementation.
1389    /// - A change introduced in the kernels after S has introduced a new
1390    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
1391    ///    (hence very spammy).
1392    /// - Not all Android T/13 devices will receive a new kernel though, hence we
1393    ///    need to deal with both cases.
1394    /// For more context: go/rss-stat-throttled.
1395    #[prost(bool, optional, tag="15")]
1396    pub throttle_rss_stat: ::core::option::Option<bool>,
1397    /// If true, use self-describing proto messages when writing events not known
1398    /// at compile time (aka generic events). Each event bundle will have a set of
1399    /// serialised proto descriptors for events within that bundle.
1400    ///
1401    /// Default if unset:
1402    /// * v53+: true
1403    /// * before v53: false
1404    ///
1405    /// Added in: perfetto v50.
1406    #[prost(bool, optional, tag="32")]
1407    pub denser_generic_event_encoding: ::core::option::Option<bool>,
1408    /// If true, avoid enabling events that aren't statically known by
1409    /// traced_probes. Otherwise, the default is to emit such events as
1410    /// GenericFtraceEvent protos.
1411    /// Prefer to keep this flag at its default. This was added for Android
1412    /// tracing, where atrace categories and/or atrace HAL requested events can
1413    /// expand to events that aren't of interest to the tracing user.
1414    /// Introduced in: Android T.
1415    #[prost(bool, optional, tag="16")]
1416    pub disable_generic_events: ::core::option::Option<bool>,
1417    /// The subset of syscalls to record. To record all syscalls, leave this unset
1418    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
1419    /// * before perfetto v43, requires the config to also enable
1420    ///    raw_syscalls/sys_{enter,exit}.
1421    /// * perfetto v43+ does the right thing if you set only this field.
1422    /// Example: ["sys_read", "sys_open"].
1423    /// Introduced in: Android U.
1424    #[prost(string, repeated, tag="18")]
1425    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1426    /// If true, enable the "function_graph" kernel tracer that emits events
1427    /// whenever a kernel function is entered and exited
1428    /// (funcgraph_entry/funcgraph_exit).
1429    /// Notes on use:
1430    /// * Requires |symbolize_ksyms| for function name resolution.
1431    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
1432    ///    set of functions, otherwise the event bandwidth will be too high for
1433    ///    practical use.
1434    /// * The data source might be rejected if there is already a concurrent
1435    ///    ftrace data source that does not use function graph itself, as we do not
1436    ///    support switching kernel tracers mid-trace.
1437    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
1438    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
1439    ///    "function_graph".
1440    /// Android:
1441    /// * Available only on debuggable builds.
1442    /// * Introduced in: Android U.
1443    #[prost(bool, optional, tag="19")]
1444    pub enable_function_graph: ::core::option::Option<bool>,
1445    /// Constrains the set of functions traced when |enable_function_graph| is
1446    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
1447    /// in which case all matching functions will be traced. See kernel
1448    /// documentation on ftrace "set_ftrace_filter" file for more details.
1449    /// Android:
1450    /// * Available only on debuggable builds.
1451    /// * Introduced in: Android U.
1452    #[prost(string, repeated, tag="20")]
1453    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1454    /// If |enable_function_graph| is true, trace this set of functions *and* all
1455    /// of its callees. Supports globs. Can be set together with
1456    /// |function_filters|, in which case only callees matching the filter will be
1457    /// traced. If setting both, you most likely want all roots to also be
1458    /// included in |function_filters|.
1459    /// Android:
1460    /// * Available only on debuggable builds.
1461    /// * Introduced in: Android U.
1462    #[prost(string, repeated, tag="21")]
1463    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1464    /// If |enable_function_graph| is true, only trace the specified
1465    /// number of calls down the stack. Sets the max_graph_depth value
1466    /// in sys/kernel/tracing/
1467    ///
1468    /// Only respected for the first tracing session that enables
1469    /// function_graph tracing.
1470    ///
1471    /// Introduced in: perfetto v51.
1472    /// Supported on: Android 25Q3+.
1473    #[prost(uint32, optional, tag="33")]
1474    pub function_graph_max_depth: ::core::option::Option<u32>,
1475    /// Ftrace events to record, specific for kprobes and kretprobes
1476    #[prost(message, repeated, tag="30")]
1477    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
1478    /// If true, does not clear kernel ftrace buffers when starting the trace.
1479    /// This makes sense only if this is the first ftrace data source instance
1480    /// created after the daemon has been started. Can be useful for gathering boot
1481    /// traces, if ftrace has been separately configured (e.g. via kernel
1482    /// commandline).
1483    /// NB: when configuring the pre-perfetto ftrace, prefer to set
1484    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
1485    /// anything besides ftrace. Otherwise timestamps might be skewed.
1486    #[prost(bool, optional, tag="23")]
1487    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
1488    /// If true, overrides the default timestamp clock and uses a raw hardware
1489    /// based monotonic clock for getting timestamps.
1490    /// * Introduced in: Android U.
1491    #[prost(bool, optional, tag="24")]
1492    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
1493    /// If |instance_name| is not empty, then attempt to use that tracefs instance
1494    /// for event recording. Normally, this means
1495    /// `/sys/kernel/tracing/instances/$instance_name`.
1496    ///
1497    /// Names "hyp" and "hypervisor" are reserved.
1498    ///
1499    /// The instance must already exist, the tracing daemon *will not* create it
1500    /// for you as it typically doesn't have such permissions.
1501    /// Only a subset of features is guaranteed to work with non-default instances,
1502    /// at the time of writing:
1503    ///   * ftrace_events
1504    ///   * buffer_size_kb
1505    #[prost(string, optional, tag="25")]
1506    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1507    /// For perfetto developer use. If true and on a debuggable android build,
1508    /// serialise raw tracing pages that the implementation cannot parse.
1509    #[prost(bool, optional, tag="31")]
1510    pub debug_ftrace_abi: ::core::option::Option<bool>,
1511    // =================================================
1512    // Exclusive single-tenant features: HERE BE DRAGONS
1513    // =================================================
1514    // The features below are considered "advanced" and require an exclusive
1515    // tracing session (as of Android 25Q3+ and Perfetto v52).
1516    //
1517    // These features directly manipulate the kernel's global ftrace state and
1518    // are incompatible with concurrent ftrace sessions. They are only enabled
1519    // if included in the *first* ftrace data source configured. Subsequent
1520    // ftrace data sources (even those not using advanced features) will be
1521    // rejected while a session with these features is active.
1522    //
1523    // To run the session in exclusive mode, see:
1524    // <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1525
1526    /// Filter ftrace events by Thread ID (TID).
1527    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
1528    ///
1529    /// Note: this is an exclusive feature, see:
1530    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1531    ///
1532    /// Introduced in: perfetto v52.
1533    /// Supported on: Android 25Q3+.
1534    #[prost(uint32, repeated, packed="false", tag="35")]
1535    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
1536    #[prost(message, repeated, tag="36")]
1537    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
1538    /// This mask restricts tracing to a specific set of CPUs using a
1539    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
1540    /// 32-bit chunk of the CPU mask.
1541    ///
1542    /// The chunks are ordered from high CPUs to low CPUs (left to right):
1543    ///    - Rightmost chunk: CPUs 0-31
1544    ///    - 2nd chunk from right: CPUs 32-63
1545    ///    - ...and so on.
1546    ///
1547    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
1548    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
1549    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
1550    /// chunk0 to 0-31.
1551    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
1552    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
1553    ///
1554    /// Note: This is an exclusive feature, see:
1555    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1556    ///
1557    /// Introduced in: perfetto v52.
1558    /// Supported on: Android 25Q3+.
1559    #[prost(string, optional, tag="37")]
1560    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
1561    /// No-op in perfetto v28+. Name preserved because of existing references in
1562    /// textproto configs.
1563    #[deprecated]
1564    #[prost(bool, optional, tag="14")]
1565    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
1566}
1567/// Nested message and enum types in `FtraceConfig`.
1568pub mod ftrace_config {
1569    /// Configuration for compact encoding of scheduler events. When enabled (and
1570    /// recording the relevant ftrace events), specific high-volume events are
1571    /// encoded in a denser format than normal.
1572    #[derive(Clone, PartialEq, ::prost::Message)]
1573    pub struct CompactSchedConfig {
1574        /// If true, and sched_switch or sched_waking ftrace events are enabled,
1575        /// record those events in the compact format.
1576        ///
1577        /// If the field is unset, the default is:
1578        /// * perfetto v42.0+: enabled
1579        /// * before: disabled
1580        #[prost(bool, optional, tag="1")]
1581        pub enabled: ::core::option::Option<bool>,
1582    }
1583    /// Optional filter for "ftrace/print" events.
1584    ///
1585    /// The filter consists of multiple rules. As soon as a rule matches (the rules
1586    /// are processed in order), its `allow` field will be used as the outcome: if
1587    /// `allow` is true, the event will be included in the trace, otherwise it will
1588    /// be discarded. If an event does not match any rule, it will be allowed by
1589    /// default (a rule with an empty prefix and allow=false, disallows everything
1590    /// by default).
1591    #[derive(Clone, PartialEq, ::prost::Message)]
1592    pub struct PrintFilter {
1593        #[prost(message, repeated, tag="1")]
1594        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
1595    }
1596    /// Nested message and enum types in `PrintFilter`.
1597    pub mod print_filter {
1598        #[derive(Clone, PartialEq, ::prost::Message)]
1599        pub struct Rule {
1600            #[prost(bool, optional, tag="2")]
1601            pub allow: ::core::option::Option<bool>,
1602            #[prost(oneof="rule::Match", tags="1, 3")]
1603            pub r#match: ::core::option::Option<rule::Match>,
1604        }
1605        /// Nested message and enum types in `Rule`.
1606        pub mod rule {
1607            /// Matches an atrace message of the form:
1608            /// <type>|pid|<prefix>...
1609            #[derive(Clone, PartialEq, ::prost::Message)]
1610            pub struct AtraceMessage {
1611                #[prost(string, optional, tag="1")]
1612                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
1613                #[prost(string, optional, tag="2")]
1614                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
1615            }
1616            #[derive(Clone, PartialEq, ::prost::Oneof)]
1617            pub enum Match {
1618                /// This rule matches if `prefix` matches exactly with the beginning of
1619                /// the "ftrace/print" "buf" field.
1620                #[prost(string, tag="1")]
1621                Prefix(::prost::alloc::string::String),
1622                /// This rule matches if the "buf" field contains an atrace-style print
1623                /// message as specified in `atrace_msg`.
1624                #[prost(message, tag="3")]
1625                AtraceMsg(AtraceMessage),
1626            }
1627        }
1628    }
1629    #[derive(Clone, PartialEq, ::prost::Message)]
1630    pub struct KprobeEvent {
1631        /// Kernel function name to attach to, for example "fuse_file_write_iter"
1632        #[prost(string, optional, tag="1")]
1633        pub probe: ::core::option::Option<::prost::alloc::string::String>,
1634        #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
1635        pub r#type: ::core::option::Option<i32>,
1636    }
1637    /// Nested message and enum types in `KprobeEvent`.
1638    pub mod kprobe_event {
1639        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1640        #[repr(i32)]
1641        pub enum KprobeType {
1642            Unknown = 0,
1643            Kprobe = 1,
1644            Kretprobe = 2,
1645            Both = 3,
1646        }
1647        impl KprobeType {
1648            /// String value of the enum field names used in the ProtoBuf definition.
1649            ///
1650            /// The values are not transformed in any way and thus are considered stable
1651            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1652            pub fn as_str_name(&self) -> &'static str {
1653                match self {
1654                    KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
1655                    KprobeType::Kprobe => "KPROBE_TYPE_KPROBE",
1656                    KprobeType::Kretprobe => "KPROBE_TYPE_KRETPROBE",
1657                    KprobeType::Both => "KPROBE_TYPE_BOTH",
1658                }
1659            }
1660        }
1661    }
1662    /// Tracefs options to set directly in the tracefs instance. This is a very
1663    /// niche feature since almost all of the options deal with formatting textual
1664    /// output (the /trace file), which perfetto doesn't use.
1665    ///
1666    /// The options with a known use-case:
1667    /// * event-fork: when using `tids_to_trace` above, the kernel will
1668    ///    automatically add newly spawned descendant threads to the set of TIDs.
1669    ///
1670    /// Full list of options is available at
1671    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
1672    ///
1673    /// Note: this is an exclusive feature, see:
1674    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
1675    ///
1676    /// Introduced in: perfetto v52.
1677    /// Supported on: Android 25Q3+.
1678    #[derive(Clone, PartialEq, ::prost::Message)]
1679    pub struct TracefsOption {
1680        /// The name of the tracefs option as found in tracefs/trace_options (without
1681        /// the "no" prefix).
1682        #[prost(string, optional, tag="1")]
1683        pub name: ::core::option::Option<::prost::alloc::string::String>,
1684        #[prost(enumeration="tracefs_option::State", optional, tag="2")]
1685        pub state: ::core::option::Option<i32>,
1686    }
1687    /// Nested message and enum types in `TracefsOption`.
1688    pub mod tracefs_option {
1689        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1690        #[repr(i32)]
1691        pub enum State {
1692            Unknown = 0,
1693            Enabled = 1,
1694            Disabled = 2,
1695        }
1696        impl State {
1697            /// String value of the enum field names used in the ProtoBuf definition.
1698            ///
1699            /// The values are not transformed in any way and thus are considered stable
1700            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1701            pub fn as_str_name(&self) -> &'static str {
1702                match self {
1703                    State::Unknown => "STATE_UNKNOWN",
1704                    State::Enabled => "STATE_ENABLED",
1705                    State::Disabled => "STATE_DISABLED",
1706                }
1707            }
1708        }
1709    }
1710    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
1711    /// should keep the symbol map in memory (and reuse it for future tracing
1712    /// sessions) or clear it (saving memory) and re-create it on each tracing
1713    /// session (wasting cpu and wall time).
1714    /// The tradeoff is roughly:
1715    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
1716    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
1717    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
1718    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1719    #[repr(i32)]
1720    pub enum KsymsMemPolicy {
1721        KsymsUnspecified = 0,
1722        KsymsCleanupOnStop = 1,
1723        KsymsRetain = 2,
1724    }
1725    impl KsymsMemPolicy {
1726        /// String value of the enum field names used in the ProtoBuf definition.
1727        ///
1728        /// The values are not transformed in any way and thus are considered stable
1729        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1730        pub fn as_str_name(&self) -> &'static str {
1731            match self {
1732                KsymsMemPolicy::KsymsUnspecified => "KSYMS_UNSPECIFIED",
1733                KsymsMemPolicy::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
1734                KsymsMemPolicy::KsymsRetain => "KSYMS_RETAIN",
1735            }
1736        }
1737    }
1738}
1739// End of protos/perfetto/config/ftrace/ftrace_config.proto
1740
1741// Begin of protos/perfetto/config/gpu/gpu_counter_config.proto
1742
1743#[derive(Clone, PartialEq, ::prost::Message)]
1744pub struct GpuCounterConfig {
1745    /// Desired sampling interval for counters.
1746    #[prost(uint64, optional, tag="1")]
1747    pub counter_period_ns: ::core::option::Option<u64>,
1748    /// List of counters to be sampled. Counter IDs correspond to the ones
1749    /// described in GpuCounterSpec in the data source descriptor.
1750    #[prost(uint32, repeated, packed="false", tag="2")]
1751    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
1752    /// Sample counters by instrumenting command buffers.
1753    #[prost(bool, optional, tag="3")]
1754    pub instrumented_sampling: ::core::option::Option<bool>,
1755    /// Fix gpu clock rate during trace session.
1756    #[prost(bool, optional, tag="4")]
1757    pub fix_gpu_clock: ::core::option::Option<bool>,
1758}
1759// End of protos/perfetto/config/gpu/gpu_counter_config.proto
1760
1761// Begin of protos/perfetto/config/gpu/gpu_renderstages_config.proto
1762
1763#[derive(Clone, PartialEq, ::prost::Message)]
1764pub struct GpuRenderStagesConfig {
1765    /// Enable to separate the color and depth/stencil load and store stages
1766    /// into a separate stages. If disabled, the depth/stencil load and store
1767    /// stages will be combined.  Disabled by default. This option has no effect if
1768    /// Low Overhead mode is enabled.
1769    #[prost(bool, optional, tag="1")]
1770    pub full_loadstore: ::core::option::Option<bool>,
1771    /// Use the low overhead mode for traces. In this mode render stages are
1772    /// combined into a single workload stage. This provides less granular data but
1773    /// induces minimal GPU overhead. Disabled by default.
1774    #[prost(bool, optional, tag="2")]
1775    pub low_overhead: ::core::option::Option<bool>,
1776    /// Trace metrics to capture for each render stage
1777    #[prost(string, repeated, tag="3")]
1778    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1779}
1780// End of protos/perfetto/config/gpu/gpu_renderstages_config.proto
1781
1782// Begin of protos/perfetto/config/gpu/vulkan_memory_config.proto
1783
1784#[derive(Clone, PartialEq, ::prost::Message)]
1785pub struct VulkanMemoryConfig {
1786    /// Tracking driver memory usage events
1787    #[prost(bool, optional, tag="1")]
1788    pub track_driver_memory_usage: ::core::option::Option<bool>,
1789    /// Tracking device memory usage events
1790    #[prost(bool, optional, tag="2")]
1791    pub track_device_memory_usage: ::core::option::Option<bool>,
1792}
1793// End of protos/perfetto/config/gpu/vulkan_memory_config.proto
1794
1795// Begin of protos/perfetto/config/inode_file/inode_file_config.proto
1796
1797/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
1798/// systems.
1799#[derive(Clone, PartialEq, ::prost::Message)]
1800pub struct InodeFileConfig {
1801    /// How long to pause between batches.
1802    #[prost(uint32, optional, tag="1")]
1803    pub scan_interval_ms: ::core::option::Option<u32>,
1804    /// How long to wait before the first scan in order to accumulate inodes.
1805    #[prost(uint32, optional, tag="2")]
1806    pub scan_delay_ms: ::core::option::Option<u32>,
1807    /// How many inodes to scan in one batch.
1808    #[prost(uint32, optional, tag="3")]
1809    pub scan_batch_size: ::core::option::Option<u32>,
1810    /// Do not scan for inodes not found in the static map.
1811    #[prost(bool, optional, tag="4")]
1812    pub do_not_scan: ::core::option::Option<bool>,
1813    /// If non-empty, only scan inodes corresponding to block devices named in
1814    /// this list.
1815    #[prost(string, repeated, tag="5")]
1816    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1817    /// When encountering an inode belonging to a block device corresponding
1818    /// to one of the mount points in this map, scan its scan_roots instead.
1819    #[prost(message, repeated, tag="6")]
1820    pub mount_point_mapping: ::prost::alloc::vec::Vec<inode_file_config::MountPointMappingEntry>,
1821}
1822/// Nested message and enum types in `InodeFileConfig`.
1823pub mod inode_file_config {
1824    #[derive(Clone, PartialEq, ::prost::Message)]
1825    pub struct MountPointMappingEntry {
1826        #[prost(string, optional, tag="1")]
1827        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
1828        #[prost(string, repeated, tag="2")]
1829        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1830    }
1831}
1832// End of protos/perfetto/config/inode_file/inode_file_config.proto
1833
1834// Begin of protos/perfetto/config/interceptors/console_config.proto
1835
1836#[derive(Clone, PartialEq, ::prost::Message)]
1837pub struct ConsoleConfig {
1838    #[prost(enumeration="console_config::Output", optional, tag="1")]
1839    pub output: ::core::option::Option<i32>,
1840    #[prost(bool, optional, tag="2")]
1841    pub enable_colors: ::core::option::Option<bool>,
1842}
1843/// Nested message and enum types in `ConsoleConfig`.
1844pub mod console_config {
1845    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1846    #[repr(i32)]
1847    pub enum Output {
1848        Unspecified = 0,
1849        Stdout = 1,
1850        Stderr = 2,
1851    }
1852    impl Output {
1853        /// String value of the enum field names used in the ProtoBuf definition.
1854        ///
1855        /// The values are not transformed in any way and thus are considered stable
1856        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1857        pub fn as_str_name(&self) -> &'static str {
1858            match self {
1859                Output::Unspecified => "OUTPUT_UNSPECIFIED",
1860                Output::Stdout => "OUTPUT_STDOUT",
1861                Output::Stderr => "OUTPUT_STDERR",
1862            }
1863        }
1864    }
1865}
1866// End of protos/perfetto/config/interceptors/console_config.proto
1867
1868// Begin of protos/perfetto/config/interceptor_config.proto
1869
1870/// Configuration for trace packet interception. Used for diverting trace data to
1871/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
1872/// Perfetto SDK.
1873#[derive(Clone, PartialEq, ::prost::Message)]
1874pub struct InterceptorConfig {
1875    /// Matches the name given to RegisterInterceptor().
1876    #[prost(string, optional, tag="1")]
1877    pub name: ::core::option::Option<::prost::alloc::string::String>,
1878    #[prost(message, optional, tag="100")]
1879    pub console_config: ::core::option::Option<ConsoleConfig>,
1880}
1881// End of protos/perfetto/config/interceptor_config.proto
1882
1883// Begin of protos/perfetto/config/power/android_power_config.proto
1884
1885#[derive(Clone, PartialEq, ::prost::Message)]
1886pub struct AndroidPowerConfig {
1887    #[prost(uint32, optional, tag="1")]
1888    pub battery_poll_ms: ::core::option::Option<u32>,
1889    #[prost(enumeration="android_power_config::BatteryCounters", repeated, packed="false", tag="2")]
1890    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
1891    /// Where available enables per-power-rail measurements.
1892    #[prost(bool, optional, tag="3")]
1893    pub collect_power_rails: ::core::option::Option<bool>,
1894    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
1895    /// Available from Android S.
1896    #[prost(bool, optional, tag="4")]
1897    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
1898    /// Provides a breakdown of time in state for various subsystems.
1899    /// Available from Android U.
1900    #[prost(bool, optional, tag="5")]
1901    pub collect_entity_state_residency: ::core::option::Option<bool>,
1902}
1903/// Nested message and enum types in `AndroidPowerConfig`.
1904pub mod android_power_config {
1905    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1906    #[repr(i32)]
1907    pub enum BatteryCounters {
1908        BatteryCounterUnspecified = 0,
1909        /// Coulomb counter.
1910        BatteryCounterCharge = 1,
1911        /// Charge (%).
1912        BatteryCounterCapacityPercent = 2,
1913        /// Instantaneous current.
1914        BatteryCounterCurrent = 3,
1915        /// Avg current.
1916        BatteryCounterCurrentAvg = 4,
1917        /// Instantaneous voltage.
1918        BatteryCounterVoltage = 5,
1919    }
1920    impl BatteryCounters {
1921        /// String value of the enum field names used in the ProtoBuf definition.
1922        ///
1923        /// The values are not transformed in any way and thus are considered stable
1924        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1925        pub fn as_str_name(&self) -> &'static str {
1926            match self {
1927                BatteryCounters::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
1928                BatteryCounters::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
1929                BatteryCounters::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
1930                BatteryCounters::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
1931                BatteryCounters::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
1932                BatteryCounters::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
1933            }
1934        }
1935    }
1936}
1937// End of protos/perfetto/config/power/android_power_config.proto
1938
1939// Begin of protos/perfetto/config/priority_boost/priority_boost_config.proto
1940
1941/// Configuration that allows to boost the priority of the 'traced' or
1942/// 'traced_probs' processes, by changing the scheduler configuration.
1943/// Only supported on Linux and Android the boosted process must have
1944/// 'CAP_SYS_NICE' capability.
1945#[derive(Clone, PartialEq, ::prost::Message)]
1946pub struct PriorityBoostConfig {
1947    #[prost(enumeration="priority_boost_config::BoostPolicy", optional, tag="1")]
1948    pub policy: ::core::option::Option<i32>,
1949    #[prost(uint32, optional, tag="2")]
1950    pub priority: ::core::option::Option<u32>,
1951}
1952/// Nested message and enum types in `PriorityBoostConfig`.
1953pub mod priority_boost_config {
1954    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1955    #[repr(i32)]
1956    pub enum BoostPolicy {
1957        PolicyUnspecified = 0,
1958        /// The default policy (e.g., CFS on Linux). Priority range: [0; 20]
1959        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
1960        /// than default 0, 20 is the highest priority.
1961        /// Note: this is the opposite semantic of the cmdline nice, and is done for
1962        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
1963        PolicySchedOther = 1,
1964        /// The Real-time policy, Priority range: [1; 99]
1965        PolicySchedFifo = 2,
1966    }
1967    impl BoostPolicy {
1968        /// String value of the enum field names used in the ProtoBuf definition.
1969        ///
1970        /// The values are not transformed in any way and thus are considered stable
1971        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1972        pub fn as_str_name(&self) -> &'static str {
1973            match self {
1974                BoostPolicy::PolicyUnspecified => "POLICY_UNSPECIFIED",
1975                BoostPolicy::PolicySchedOther => "POLICY_SCHED_OTHER",
1976                BoostPolicy::PolicySchedFifo => "POLICY_SCHED_FIFO",
1977            }
1978        }
1979    }
1980}
1981// Begin of protos/perfetto/config/process_stats/process_stats_config.proto
1982
1983/// Config for polling process-related information from /proc/pid/status and
1984/// related files on Linux.
1985///
1986/// Data source name: "linux.process_stats".
1987#[derive(Clone, PartialEq, ::prost::Message)]
1988pub struct ProcessStatsConfig {
1989    #[prost(enumeration="process_stats_config::Quirks", repeated, packed="false", tag="1")]
1990    pub quirks: ::prost::alloc::vec::Vec<i32>,
1991    /// If enabled all processes will be scanned and dumped when the trace starts.
1992    #[prost(bool, optional, tag="2")]
1993    pub scan_all_processes_on_start: ::core::option::Option<bool>,
1994    /// If enabled thread names are also recoded (this is redundant if sched_switch
1995    /// is enabled).
1996    #[prost(bool, optional, tag="3")]
1997    pub record_thread_names: ::core::option::Option<bool>,
1998    /// If > 0 samples counters (see process_stats.proto) from
1999    /// /proc/pid/status and oom_score_adj every X ms.
2000    /// This is required to be > 100ms to avoid excessive CPU usage.
2001    #[prost(uint32, optional, tag="4")]
2002    pub proc_stats_poll_ms: ::core::option::Option<u32>,
2003    // id 5 never used
2004
2005    /// Explicit caching period during which the polling won't re-emit identical
2006    /// counter values. This is required to be either = 0 or a multiple of
2007    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
2008    /// rounded down to the nearest multiple.
2009    #[prost(uint32, optional, tag="6")]
2010    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
2011    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
2012    /// /proc/pid/smaps_rollup.
2013    ///
2014    /// Android: does NOT work with the system daemons by default, as it requires
2015    /// running the recording process (traced_probes or tracebox) as root. It is
2016    /// possible to avoid the root requirement, but the exact steps depend on the
2017    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
2018    /// check, and might be further covered by the procfs "hidepid" mount option.
2019    #[prost(bool, optional, tag="10")]
2020    pub scan_smaps_rollup: ::core::option::Option<bool>,
2021    /// If true: process descriptions will include process age (starttime in
2022    /// /proc/pid/stat).
2023    /// Introduced in: perfetto v44.
2024    #[prost(bool, optional, tag="11")]
2025    pub record_process_age: ::core::option::Option<bool>,
2026    /// If true and |proc_stats_poll_ms| is set, process stats will include time
2027    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
2028    /// Introduced in: perfetto v44.
2029    #[prost(bool, optional, tag="12")]
2030    pub record_process_runtime: ::core::option::Option<bool>,
2031    /// If true obtain per-process dmabuf resident set size from
2032    /// /proc/pid/dmabuf_rss.
2033    /// This feature is not in upstream linux, and is available only on some
2034    /// Android kernels.
2035    #[prost(bool, optional, tag="13")]
2036    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
2037    /// WARNING: unmaintained and deprecated. If true this will resolve file
2038    /// descriptors for each process so these can be mapped to their actual device
2039    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
2040    /// or new fds opened after initially scanning a process will not be
2041    /// recognized.
2042    #[prost(bool, optional, tag="9")]
2043    pub resolve_process_fds: ::core::option::Option<bool>,
2044}
2045/// Nested message and enum types in `ProcessStatsConfig`.
2046pub mod process_stats_config {
2047    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2048    #[repr(i32)]
2049    pub enum Quirks {
2050        Unspecified = 0,
2051        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
2052        /// startup is now disabled by default and can be re-enabled using the
2053        /// |scan_all_processes_on_start| arg.
2054        DisableInitialDump = 1,
2055        /// If set, disables the special interaction with "linux.ftrace" data source,
2056        /// where the process stats rescrapes any thread id seen in the ftrace
2057        /// stream.
2058        DisableOnDemand = 2,
2059    }
2060    impl Quirks {
2061        /// String value of the enum field names used in the ProtoBuf definition.
2062        ///
2063        /// The values are not transformed in any way and thus are considered stable
2064        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2065        pub fn as_str_name(&self) -> &'static str {
2066            match self {
2067                Quirks::Unspecified => "QUIRKS_UNSPECIFIED",
2068                Quirks::DisableInitialDump => "DISABLE_INITIAL_DUMP",
2069                Quirks::DisableOnDemand => "DISABLE_ON_DEMAND",
2070            }
2071        }
2072    }
2073}
2074// End of protos/perfetto/config/process_stats/process_stats_config.proto
2075
2076// Begin of protos/perfetto/config/profiling/heapprofd_config.proto
2077
2078/// Configuration for go/heapprofd.
2079/// Next id: 28
2080#[derive(Clone, PartialEq, ::prost::Message)]
2081pub struct HeapprofdConfig {
2082    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
2083    ///
2084    /// These are:
2085    /// * All heaps if heap_sampling_intervals is empty.
2086    /// * Those profiled due to all_heaps and not named in heaps if
2087    ///    heap_sampling_intervals is not empty.
2088    /// * The implicit libc.malloc heap if heaps is empty.
2089    ///
2090    /// Set to 1 for perfect accuracy.
2091    /// Otherwise, sample every sample_interval_bytes on average.
2092    ///
2093    /// See
2094    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
2095    /// for more details.
2096    ///
2097    /// BUGS
2098    /// Before Android 12, setting this to 0 would crash the target process.
2099    ///
2100    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
2101    /// this field or with heap_sampling_intervals), otherwise the producer will
2102    /// not start.
2103    #[prost(uint64, optional, tag="1")]
2104    pub sampling_interval_bytes: ::core::option::Option<u64>,
2105    /// If less than the given numbers of bytes are left free in the shared
2106    /// memory buffer, increase sampling interval by a factor of two.
2107    /// Adaptive sampling is disabled when set to 0.
2108    #[prost(uint64, optional, tag="24")]
2109    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
2110    /// Stop doubling the sampling_interval once the sampling interval has reached
2111    /// this value.
2112    #[prost(uint64, optional, tag="25")]
2113    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
2114    /// E.g. surfaceflinger, com.android.phone
2115    /// This input is normalized in the following way: if it contains slashes,
2116    /// everything up to the last slash is discarded. If it contains "@",
2117    /// everything after the first @ is discared.
2118    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
2119    /// This transformation is also applied to the processes' command lines when
2120    /// matching.
2121    #[prost(string, repeated, tag="2")]
2122    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2123    /// For watermark based triggering or local debugging.
2124    #[prost(uint64, repeated, packed="false", tag="4")]
2125    pub pid: ::prost::alloc::vec::Vec<u64>,
2126    /// Only profile target if it was installed by one of the packages given.
2127    /// Special values are:
2128    /// * @system: installed on the system partition
2129    /// * @product: installed on the product partition
2130    /// * @null: sideloaded
2131    /// Supported on Android 12+.
2132    #[prost(string, repeated, tag="26")]
2133    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2134    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
2135    /// "malloc".
2136    ///
2137    /// Introduced in Android 12.
2138    #[prost(string, repeated, tag="20")]
2139    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2140    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
2141    /// combination with all_heaps;
2142    ///
2143    /// Introduced in Android 12.
2144    #[prost(string, repeated, tag="27")]
2145    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2146    #[prost(bool, optional, tag="23")]
2147    pub stream_allocations: ::core::option::Option<bool>,
2148    /// If given, needs to be the same length as heaps and gives the sampling
2149    /// interval for the respective entry in heaps.
2150    ///
2151    /// Otherwise, sampling_interval_bytes is used.
2152    ///
2153    /// It is recommended to set sampling_interval_bytes to a reasonable default
2154    /// value when using this, as a value of 0 for sampling_interval_bytes will
2155    /// crash the target process before Android 12.
2156    ///
2157    /// Introduced in Android 12.
2158    ///
2159    /// All values must be non-zero or the producer will not start.
2160    #[prost(uint64, repeated, packed="false", tag="22")]
2161    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
2162    /// Sample all heaps registered by target process. Introduced in Android 12.
2163    #[prost(bool, optional, tag="21")]
2164    pub all_heaps: ::core::option::Option<bool>,
2165    /// Profile all processes eligible for profiling on the system.
2166    /// See
2167    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
2168    /// for which processes are eligible.
2169    ///
2170    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
2171    /// will crash when trying to launch a new process as it will have an
2172    /// unexpected open socket to heapprofd.
2173    ///
2174    /// heapprofd will likely be overloaded by the amount of data for low
2175    /// sampling intervals.
2176    #[prost(bool, optional, tag="5")]
2177    pub all: ::core::option::Option<bool>,
2178    /// Do not profile processes whose anon RSS + swap < given value.
2179    /// Introduced in Android 11.
2180    #[prost(uint32, optional, tag="15")]
2181    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2182    /// Stop profile if heapprofd memory usage goes beyond the given value.
2183    /// Introduced in Android 11.
2184    #[prost(uint32, optional, tag="16")]
2185    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
2186    /// Stop profile if heapprofd CPU time since start of this data-source
2187    /// goes beyond given value.
2188    /// Introduced in Android 11.
2189    #[prost(uint64, optional, tag="17")]
2190    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
2191    /// Do not emit function names for mappings starting with this prefix.
2192    /// E.g. /system to not emit symbols for any system libraries.
2193    #[prost(string, repeated, tag="7")]
2194    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2195    /// Dump at a predefined interval.
2196    #[prost(message, optional, tag="6")]
2197    pub continuous_dump_config: ::core::option::Option<heapprofd_config::ContinuousDumpConfig>,
2198    /// Size of the shared memory buffer between the profiled processes and
2199    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
2200    /// MiB.
2201    ///
2202    /// Needs to be:
2203    /// * at least 8192,
2204    /// * a power of two,
2205    /// * a multiple of 4096.
2206    #[prost(uint64, optional, tag="8")]
2207    pub shmem_size_bytes: ::core::option::Option<u64>,
2208    /// When the shmem buffer is full, block the client instead of ending the
2209    /// trace. Use with caution as this will significantly slow down the target
2210    /// process.
2211    #[prost(bool, optional, tag="9")]
2212    pub block_client: ::core::option::Option<bool>,
2213    /// If set, stop the trace session after blocking the client for this
2214    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
2215    /// Introduced in Android 11.
2216    #[prost(uint32, optional, tag="14")]
2217    pub block_client_timeout_us: ::core::option::Option<u32>,
2218    /// Do not profile processes from startup, only match already running
2219    /// processes.
2220    ///
2221    /// Can not be set at the same time as no_running.
2222    /// Introduced in Android 11.
2223    #[prost(bool, optional, tag="10")]
2224    pub no_startup: ::core::option::Option<bool>,
2225    /// Do not profile running processes. Only match processes on startup.
2226    ///
2227    /// Can not be set at the same time as no_startup.
2228    /// Introduced in Android 11.
2229    #[prost(bool, optional, tag="11")]
2230    pub no_running: ::core::option::Option<bool>,
2231    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
2232    /// at the point in time when the sampled heap usage of the process was at its
2233    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
2234    /// self_allocated and self_freed to not be set.
2235    /// Introduced in Android 11.
2236    #[prost(bool, optional, tag="13")]
2237    pub dump_at_max: ::core::option::Option<bool>,
2238    // FEATURE FLAGS. THERE BE DRAGONS.
2239
2240    /// Escape hatch if the session is being torn down because of a forked child
2241    /// that shares memory space, but is not correctly identified as a vforked
2242    /// child.
2243    /// Introduced in Android 11.
2244    #[prost(bool, optional, tag="18")]
2245    pub disable_fork_teardown: ::core::option::Option<bool>,
2246    /// We try to automatically detect when a target applicatation vforks but then
2247    /// does a memory allocation (or free). This auto-detection can be disabled
2248    /// with this.
2249    /// Introduced in Android 11.
2250    #[prost(bool, optional, tag="19")]
2251    pub disable_vfork_detection: ::core::option::Option<bool>,
2252}
2253/// Nested message and enum types in `HeapprofdConfig`.
2254pub mod heapprofd_config {
2255    #[derive(Clone, PartialEq, ::prost::Message)]
2256    pub struct ContinuousDumpConfig {
2257        /// ms to wait before first dump.
2258        #[prost(uint32, optional, tag="5")]
2259        pub dump_phase_ms: ::core::option::Option<u32>,
2260        /// ms to wait between following dumps.
2261        #[prost(uint32, optional, tag="6")]
2262        pub dump_interval_ms: ::core::option::Option<u32>,
2263    }
2264}
2265// End of protos/perfetto/config/profiling/heapprofd_config.proto
2266
2267// Begin of protos/perfetto/config/profiling/java_hprof_config.proto
2268
2269/// Configuration for managed app heap graph snapshots.
2270#[derive(Clone, PartialEq, ::prost::Message)]
2271pub struct JavaHprofConfig {
2272    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2273    /// comm string). The semantics of this field were changed since its original
2274    /// introduction.
2275    ///
2276    /// On Android T+ (13+), this field can specify a single wildcard (*), and
2277    /// the profiler will attempt to match it in two possible ways:
2278    /// * if the pattern starts with a '/', then it is matched against the first
2279    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
2280    ///    "/bin/echo".
2281    /// * otherwise the pattern is matched against the part of argv0
2282    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
2283    ///    For example "echo" would match "/bin/echo".
2284    ///
2285    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
2286    /// normalized prior to an exact string comparison. Normalization is as
2287    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
2288    /// the string contains forward slashes, trim everything up to and including
2289    /// the last one.
2290    ///
2291    /// Implementation note: in either case, at most 511 characters of cmdline
2292    /// are considered.
2293    #[prost(string, repeated, tag="1")]
2294    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2295    /// For watermark based triggering or local debugging.
2296    #[prost(uint64, repeated, packed="false", tag="2")]
2297    pub pid: ::prost::alloc::vec::Vec<u64>,
2298    /// Only profile target if it was installed by one of the packages given.
2299    /// Special values are:
2300    /// * @system: installed on the system partition
2301    /// * @product: installed on the product partition
2302    /// * @null: sideloaded
2303    /// Supported on Android 12+.
2304    #[prost(string, repeated, tag="7")]
2305    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2306    /// Dump at a predefined interval.
2307    #[prost(message, optional, tag="3")]
2308    pub continuous_dump_config: ::core::option::Option<java_hprof_config::ContinuousDumpConfig>,
2309    /// Do not profile processes whose anon RSS + swap < given value.
2310    #[prost(uint32, optional, tag="4")]
2311    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
2312    /// Include the process' /proc/self/smaps.
2313    /// This only shows maps that:
2314    /// * start with /system
2315    /// * start with /vendor
2316    /// * start with /data/app
2317    /// * contain "extracted in memory from Y", where Y matches any of the above
2318    #[prost(bool, optional, tag="5")]
2319    pub dump_smaps: ::core::option::Option<bool>,
2320    /// Exclude objects of the following types from the profile. This can be
2321    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
2322    #[prost(string, repeated, tag="6")]
2323    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2324}
2325/// Nested message and enum types in `JavaHprofConfig`.
2326pub mod java_hprof_config {
2327    /// If dump_interval_ms != 0, the following configuration is used.
2328    #[derive(Clone, PartialEq, ::prost::Message)]
2329    pub struct ContinuousDumpConfig {
2330        /// ms to wait before first continuous dump.
2331        /// A dump is always created at the beginning of the trace.
2332        #[prost(uint32, optional, tag="1")]
2333        pub dump_phase_ms: ::core::option::Option<u32>,
2334        /// ms to wait between following dumps.
2335        #[prost(uint32, optional, tag="2")]
2336        pub dump_interval_ms: ::core::option::Option<u32>,
2337        /// If true, scans all the processes to find `process_cmdline` and filter by
2338        /// `min_anonymous_memory_kb` only at data source start. Default on Android
2339        /// S-.
2340        ///
2341        /// If false, rescans all the processes to find on every dump. Default on
2342        /// Android T+.
2343        #[prost(bool, optional, tag="3")]
2344        pub scan_pids_only_on_start: ::core::option::Option<bool>,
2345    }
2346}
2347// End of protos/perfetto/config/profiling/java_hprof_config.proto
2348
2349// Begin of protos/perfetto/common/perf_events.proto
2350
2351#[derive(Clone, PartialEq, ::prost::Message)]
2352pub struct PerfEvents {
2353}
2354/// Nested message and enum types in `PerfEvents`.
2355pub mod perf_events {
2356    /// The primary event to count. If recording multiple events, this
2357    /// counter is the "group leader".
2358    /// Commented from the perspective of its use in |PerfEventConfig|.
2359    /// Next id: 13
2360    #[derive(Clone, PartialEq, ::prost::Message)]
2361    pub struct Timebase {
2362        /// Optional modifiers for the event. Modelled after the perftool's
2363        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
2364        /// Currently supported: count scoping such as :u, :k, :uk, ...
2365        /// Modifiers can differ between the timebase and followers.
2366        #[prost(enumeration="EventModifier", repeated, packed="false", tag="12")]
2367        pub modifiers: ::prost::alloc::vec::Vec<i32>,
2368        /// If set, samples will be timestamped with the given clock.
2369        /// If unset, the clock is chosen by the implementation.
2370        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
2371        /// used for hardware events (due to interrupt safety), for which the
2372        /// recommendation is to use one of the monotonic clocks.
2373        #[prost(enumeration="PerfClock", optional, tag="11")]
2374        pub timestamp_clock: ::core::option::Option<i32>,
2375        /// Optional arbitrary name for the event, to identify it in the parsed
2376        /// trace. Does *not* affect the profiling itself. If unset, the trace
2377        /// parser will choose a suitable name.
2378        #[prost(string, optional, tag="10")]
2379        pub name: ::core::option::Option<::prost::alloc::string::String>,
2380        /// How often to snapshot the counter, along with any follower events and
2381        /// any additional sampled data such as callstacks.
2382        ///
2383        /// This choice also controls how the readings are taken:
2384        /// * With |frequency| or |period|, samples are taken by the kernel
2385        ///    into a ring buffer. Analogous to `perf record`.
2386        /// * With |poll_period_ms|, the userspace periodically snapshots
2387        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2388        /// Prefer the sampling options unless you're recording PMUs whose
2389        /// perf drivers only support the reading mode.
2390        ///
2391        /// If unset, an implementation-defined sampling default is used.
2392        #[prost(oneof="timebase::Interval", tags="2, 1, 6")]
2393        pub interval: ::core::option::Option<timebase::Interval>,
2394        /// Counting event to use as the timebase.
2395        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2396        /// which is what you usually want.
2397        #[prost(oneof="timebase::Event", tags="4, 3, 5")]
2398        pub event: ::core::option::Option<timebase::Event>,
2399    }
2400    /// Nested message and enum types in `Timebase`.
2401    pub mod timebase {
2402        /// How often to snapshot the counter, along with any follower events and
2403        /// any additional sampled data such as callstacks.
2404        ///
2405        /// This choice also controls how the readings are taken:
2406        /// * With |frequency| or |period|, samples are taken by the kernel
2407        ///    into a ring buffer. Analogous to `perf record`.
2408        /// * With |poll_period_ms|, the userspace periodically snapshots
2409        ///    the counters using the read syscall. Analogous to `perf stat -I`.
2410        /// Prefer the sampling options unless you're recording PMUs whose
2411        /// perf drivers only support the reading mode.
2412        ///
2413        /// If unset, an implementation-defined sampling default is used.
2414        #[derive(Clone, PartialEq, ::prost::Oneof)]
2415        pub enum Interval {
2416            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
2417            /// same as 1/period.
2418            /// Details: the actual sampling will still be based on a period, but the
2419            /// kernel will dynamically adjust it based on the observed event rate, to
2420            /// approximate this frequency. Works best with steady-rate events like
2421            /// timers.
2422            /// Not guaranteed to be honored as the kernel can throttle the sampling
2423            /// rate if it's too high.
2424            #[prost(uint64, tag="2")]
2425            Frequency(u64),
2426            /// Per-cpu sampling will occur every |period| counts of |event|.
2427            /// Prefer |frequency| by default, as it's easier to oversample with a
2428            /// fixed period.
2429            /// Not guaranteed to be honored as the kernel can throttle the sampling
2430            /// rate if it's too high.
2431            #[prost(uint64, tag="1")]
2432            Period(u64),
2433            /// Per-cpu values are read by the userspace every interval. If using this
2434            /// mode, only follower events are supported. Options such as
2435            /// |PerfEventConfig.CallstackSampling| are incompatible.
2436            /// The period can't be guaranteed to be exact since the readings are taken
2437            /// by userspace.
2438            #[prost(uint32, tag="6")]
2439            PollPeriodMs(u32),
2440        }
2441        /// Counting event to use as the timebase.
2442        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
2443        /// which is what you usually want.
2444        #[derive(Clone, PartialEq, ::prost::Oneof)]
2445        pub enum Event {
2446            #[prost(enumeration="super::Counter", tag="4")]
2447            Counter(i32),
2448            #[prost(message, tag="3")]
2449            Tracepoint(super::Tracepoint),
2450            #[prost(message, tag="5")]
2451            RawEvent(super::RawEvent),
2452        }
2453    }
2454    #[derive(Clone, PartialEq, ::prost::Message)]
2455    pub struct Tracepoint {
2456        /// Group and name for the tracepoint, acceptable forms:
2457        /// * "sched/sched_switch"
2458        /// * "sched:sched_switch"
2459        #[prost(string, optional, tag="1")]
2460        pub name: ::core::option::Option<::prost::alloc::string::String>,
2461        /// Optional field-level filter for the tracepoint. Only events matching this
2462        /// filter will be counted (and therefore contribute to the sampling period).
2463        /// Example: "prev_pid >= 42 && next_pid == 0".
2464        /// For full syntax, see kernel documentation on "Event filtering":
2465        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
2466        #[prost(string, optional, tag="2")]
2467        pub filter: ::core::option::Option<::prost::alloc::string::String>,
2468    }
2469    /// Syscall-level description of the event, propagated to the perf_event_attr
2470    /// struct. Primarily for local use-cases, since the event availability and
2471    /// encoding is hardware-specific.
2472    #[derive(Clone, PartialEq, ::prost::Message)]
2473    pub struct RawEvent {
2474        #[prost(uint32, optional, tag="1")]
2475        pub r#type: ::core::option::Option<u32>,
2476        #[prost(uint64, optional, tag="2")]
2477        pub config: ::core::option::Option<u64>,
2478        #[prost(uint64, optional, tag="3")]
2479        pub config1: ::core::option::Option<u64>,
2480        #[prost(uint64, optional, tag="4")]
2481        pub config2: ::core::option::Option<u64>,
2482    }
2483    /// Builtin counter names from the uapi header. Commented with their perf tool
2484    /// aliases.
2485    /// TODO(rsavitski): consider generating enums for cache events (should be
2486    /// finite), and generally make this list as extensive as possible. Excluding
2487    /// things like dynamic PMUs since those don't fit into a static enum.
2488    /// Next id: 21
2489    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2490    #[repr(i32)]
2491    pub enum Counter {
2492        UnknownCounter = 0,
2493        /// cpu-clock
2494        SwCpuClock = 1,
2495        /// page-faults, faults
2496        SwPageFaults = 2,
2497        /// task-clock
2498        SwTaskClock = 3,
2499        /// context-switches, cs
2500        SwContextSwitches = 4,
2501        /// cpu-migrations, migrations
2502        SwCpuMigrations = 5,
2503        /// minor-faults
2504        SwPageFaultsMin = 6,
2505        /// major-faults
2506        SwPageFaultsMaj = 7,
2507        /// alignment-faults
2508        SwAlignmentFaults = 8,
2509        /// emulation-faults
2510        SwEmulationFaults = 9,
2511        /// dummy
2512        SwDummy = 20,
2513        /// cpu-cycles, cycles
2514        HwCpuCycles = 10,
2515        /// instructions
2516        HwInstructions = 11,
2517        /// cache-references
2518        HwCacheReferences = 12,
2519        /// cache-misses
2520        HwCacheMisses = 13,
2521        /// branch-instructions, branches
2522        HwBranchInstructions = 14,
2523        /// branch-misses
2524        HwBranchMisses = 15,
2525        /// bus-cycles
2526        HwBusCycles = 16,
2527        /// stalled-cycles-frontend, idle-cycles-frontend
2528        HwStalledCyclesFrontend = 17,
2529        /// stalled-cycles-backend, idle-cycles-backend
2530        HwStalledCyclesBackend = 18,
2531        /// ref-cycles
2532        HwRefCpuCycles = 19,
2533    }
2534    impl Counter {
2535        /// String value of the enum field names used in the ProtoBuf definition.
2536        ///
2537        /// The values are not transformed in any way and thus are considered stable
2538        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2539        pub fn as_str_name(&self) -> &'static str {
2540            match self {
2541                Counter::UnknownCounter => "UNKNOWN_COUNTER",
2542                Counter::SwCpuClock => "SW_CPU_CLOCK",
2543                Counter::SwPageFaults => "SW_PAGE_FAULTS",
2544                Counter::SwTaskClock => "SW_TASK_CLOCK",
2545                Counter::SwContextSwitches => "SW_CONTEXT_SWITCHES",
2546                Counter::SwCpuMigrations => "SW_CPU_MIGRATIONS",
2547                Counter::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
2548                Counter::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
2549                Counter::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
2550                Counter::SwEmulationFaults => "SW_EMULATION_FAULTS",
2551                Counter::SwDummy => "SW_DUMMY",
2552                Counter::HwCpuCycles => "HW_CPU_CYCLES",
2553                Counter::HwInstructions => "HW_INSTRUCTIONS",
2554                Counter::HwCacheReferences => "HW_CACHE_REFERENCES",
2555                Counter::HwCacheMisses => "HW_CACHE_MISSES",
2556                Counter::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
2557                Counter::HwBranchMisses => "HW_BRANCH_MISSES",
2558                Counter::HwBusCycles => "HW_BUS_CYCLES",
2559                Counter::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
2560                Counter::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
2561                Counter::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
2562            }
2563        }
2564    }
2565    /// Subset of clocks that is supported by perf timestamping.
2566    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
2567    /// would require additions to the trace clock synchronisation logic.
2568    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2569    #[repr(i32)]
2570    pub enum PerfClock {
2571        UnknownPerfClock = 0,
2572        Realtime = 1,
2573        Monotonic = 2,
2574        MonotonicRaw = 3,
2575        Boottime = 4,
2576    }
2577    impl PerfClock {
2578        /// String value of the enum field names used in the ProtoBuf definition.
2579        ///
2580        /// The values are not transformed in any way and thus are considered stable
2581        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2582        pub fn as_str_name(&self) -> &'static str {
2583            match self {
2584                PerfClock::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
2585                PerfClock::Realtime => "PERF_CLOCK_REALTIME",
2586                PerfClock::Monotonic => "PERF_CLOCK_MONOTONIC",
2587                PerfClock::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
2588                PerfClock::Boottime => "PERF_CLOCK_BOOTTIME",
2589            }
2590        }
2591    }
2592    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2593    #[repr(i32)]
2594    pub enum EventModifier {
2595        UnknownEventModifier = 0,
2596        /// count only while in userspace
2597        CountUserspace = 1,
2598        /// count only while in kernel
2599        CountKernel = 2,
2600        /// count only while in hypervisor
2601        CountHypervisor = 3,
2602    }
2603    impl EventModifier {
2604        /// String value of the enum field names used in the ProtoBuf definition.
2605        ///
2606        /// The values are not transformed in any way and thus are considered stable
2607        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2608        pub fn as_str_name(&self) -> &'static str {
2609            match self {
2610                EventModifier::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
2611                EventModifier::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
2612                EventModifier::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
2613                EventModifier::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
2614            }
2615        }
2616    }
2617}
2618/// Additional events associated with a leader.
2619/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
2620#[derive(Clone, PartialEq, ::prost::Message)]
2621pub struct FollowerEvent {
2622    /// Modifiers can differ between the timebase and followers.
2623    #[prost(enumeration="perf_events::EventModifier", repeated, packed="false", tag="5")]
2624    pub modifiers: ::prost::alloc::vec::Vec<i32>,
2625    /// Optional arbitrary name for the event, to identify it in the parsed
2626    /// trace. Does *not* affect the profiling itself. If unset, the trace
2627    /// parser will choose a suitable name.
2628    #[prost(string, optional, tag="4")]
2629    pub name: ::core::option::Option<::prost::alloc::string::String>,
2630    #[prost(oneof="follower_event::Event", tags="1, 2, 3")]
2631    pub event: ::core::option::Option<follower_event::Event>,
2632}
2633/// Nested message and enum types in `FollowerEvent`.
2634pub mod follower_event {
2635    #[derive(Clone, PartialEq, ::prost::Oneof)]
2636    pub enum Event {
2637        #[prost(enumeration="super::perf_events::Counter", tag="1")]
2638        Counter(i32),
2639        #[prost(message, tag="2")]
2640        Tracepoint(super::perf_events::Tracepoint),
2641        #[prost(message, tag="3")]
2642        RawEvent(super::perf_events::RawEvent),
2643    }
2644}
2645// End of protos/perfetto/common/perf_events.proto
2646
2647// Begin of protos/perfetto/config/profiling/perf_event_config.proto
2648
2649/// Configuration for the traced_perf profiler.
2650///
2651/// Example config for basic cpu profiling:
2652///    perf_event_config {
2653///      timebase {
2654///        frequency: 80
2655///      }
2656///      callstack_sampling {
2657///        scope {
2658///          target_cmdline: "surfaceflinger"
2659///          target_cmdline: "system_server"
2660///        }
2661///        kernel_frames: true
2662///      }
2663///    }
2664///
2665/// Next id: 21
2666#[derive(Clone, PartialEq, ::prost::Message)]
2667pub struct PerfEventConfig {
2668    /// What event to sample on, and how often.
2669    /// Defined in common/perf_events.proto.
2670    #[prost(message, optional, tag="15")]
2671    pub timebase: ::core::option::Option<perf_events::Timebase>,
2672    /// Other events associated with the leader described in the timebase.
2673    #[prost(message, repeated, tag="19")]
2674    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
2675    /// If set, the profiler will sample userspace processes' callstacks at the
2676    /// interval specified by the |timebase|.
2677    /// If unset, the profiler will record only the event counts.
2678    #[prost(message, optional, tag="16")]
2679    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
2680    /// List of cpu indices for counting. If empty, the default is all cpus.
2681    ///
2682    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
2683    /// counter-only traces. A future change will likely reorganise the options,
2684    /// but this field will continue to be supported.
2685    ///
2686    /// Available since: perfetto v50.
2687    #[prost(uint32, repeated, packed="false", tag="20")]
2688    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
2689    //
2690    // Kernel <-> userspace ring buffer options:
2691    //
2692
2693    /// How often the per-cpu ring buffers are read by the producer.
2694    /// If unset, an implementation-defined default is used.
2695    #[prost(uint32, optional, tag="8")]
2696    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
2697    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
2698    /// kernel. If set, must be a power of two.
2699    /// If unset, an implementation-defined default is used.
2700    #[prost(uint32, optional, tag="3")]
2701    pub ring_buffer_pages: ::core::option::Option<u32>,
2702    //
2703    // Daemon's resource usage limits:
2704    //
2705
2706    /// Drop samples if the heap memory held by the samples in the unwinder queue
2707    /// is above the given limit. This counts the memory across all concurrent data
2708    /// sources (not just this one's), and there is no fairness guarantee - the
2709    /// whole quota might be used up by a concurrent source.
2710    #[prost(uint64, optional, tag="17")]
2711    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
2712    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
2713    /// footprint exceeds this value.
2714    #[prost(uint32, optional, tag="13")]
2715    pub max_daemon_memory_kb: ::core::option::Option<u32>,
2716    //
2717    // Niche options:
2718    //
2719
2720    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
2721    /// sampled process. This is primarily for Android, where this lookup is
2722    /// asynchronous. As long as the producer is waiting, the associated samples
2723    /// will be kept enqueued (putting pressure on the capacity of the shared
2724    /// unwinding queue). Once a lookup for a process expires, all associated
2725    /// samples are discarded. However, if the lookup still succeeds after the
2726    /// timeout, future samples will be handled normally.
2727    /// If unset, an implementation-defined default is used.
2728    #[prost(uint32, optional, tag="9")]
2729    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
2730    /// Optional period for clearing state cached by the userspace unwinder. This
2731    /// is a heavy operation that is only necessary for traces that target a wide
2732    /// set of processes, and require the memory footprint to be reset
2733    /// periodically. To effectively disable the cache clearing, set to a value
2734    /// greater than your trace duration.
2735    ///
2736    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
2737    ///
2738    /// If zero or unset:
2739    /// * before perfetto v52: no cache clearing.
2740    /// * perfetto v52+: implementation chooses an infrequent default.
2741    #[prost(uint32, optional, tag="10")]
2742    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
2743    /// If set, only profile target if it was installed by a package with one of
2744    /// these names. Special values:
2745    /// * "@system": installed on the system partition
2746    /// * "@product": installed on the product partition
2747    /// * "@null": sideloaded
2748    /// Supported on Android 12+.
2749    #[prost(string, repeated, tag="18")]
2750    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2751    //
2752    // Deprecated (superseded by options above):
2753    //
2754    // Do not set *any* of these fields in new configs.
2755    //
2756
2757    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
2758    /// We rely on this to detect such configs.
2759    #[prost(bool, optional, tag="1")]
2760    pub all_cpus: ::core::option::Option<bool>,
2761    #[prost(uint32, optional, tag="2")]
2762    pub sampling_frequency: ::core::option::Option<u32>,
2763    #[prost(bool, optional, tag="12")]
2764    pub kernel_frames: ::core::option::Option<bool>,
2765    #[prost(int32, repeated, packed="false", tag="4")]
2766    pub target_pid: ::prost::alloc::vec::Vec<i32>,
2767    #[prost(string, repeated, tag="5")]
2768    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2769    #[prost(int32, repeated, packed="false", tag="6")]
2770    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
2771    #[prost(string, repeated, tag="7")]
2772    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2773    #[prost(uint32, optional, tag="11")]
2774    pub additional_cmdline_count: ::core::option::Option<u32>,
2775}
2776/// Nested message and enum types in `PerfEventConfig`.
2777pub mod perf_event_config {
2778    //
2779    // Sub-messages (nested for generated code namespacing).
2780    //
2781
2782    #[derive(Clone, PartialEq, ::prost::Message)]
2783    pub struct CallstackSampling {
2784        /// Defines a set of processes for which samples are retained/skipped. If
2785        /// unset, all samples are kept, but beware that it will be very heavy on the
2786        /// stack unwinder, which might start dropping samples due to overload.
2787        #[prost(message, optional, tag="1")]
2788        pub scope: ::core::option::Option<Scope>,
2789        /// If true, callstacks will include the kernel-space frames. Such frames can
2790        /// be identified by a magical "kernel" string as their mapping name.
2791        /// Requires traced_perf to be running as root, or kptr_restrict to have been
2792        /// manually unrestricted. On Android, the platform should do the right thing
2793        /// on debug builds.
2794        /// This does *not* disclose KASLR, as only the function names are emitted.
2795        #[prost(bool, optional, tag="2")]
2796        pub kernel_frames: ::core::option::Option<bool>,
2797        /// Whether to record and unwind userspace callstacks. If unset, defaults to
2798        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
2799        /// as the most common default (this defaulting is only applicable if the
2800        /// outer CallstackSampling message is explicitly set).
2801        #[prost(enumeration="UnwindMode", optional, tag="3")]
2802        pub user_frames: ::core::option::Option<i32>,
2803    }
2804    #[derive(Clone, PartialEq, ::prost::Message)]
2805    pub struct Scope {
2806        /// Process ID (TGID) allowlist. If this list is not empty, only matching
2807        /// samples will be retained. If multiple allow/deny-lists are
2808        /// specified by the config, then all of them are evaluated for each sampled
2809        /// process.
2810        #[prost(int32, repeated, packed="false", tag="1")]
2811        pub target_pid: ::prost::alloc::vec::Vec<i32>,
2812        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
2813        /// comm string). The semantics of this field were changed since its original
2814        /// introduction.
2815        ///
2816        /// On Android T+ (13+), this field can specify a single wildcard (*), and
2817        /// the profiler will attempt to match it in two possible ways:
2818        /// * if the pattern starts with a '/', then it is matched against the first
2819        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
2820        ///    "/bin/echo".
2821        /// * otherwise the pattern is matched against the part of argv0
2822        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
2823        ///    For example "echo" would match "/bin/echo".
2824        ///
2825        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
2826        /// normalized prior to an exact string comparison. Normalization is as
2827        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
2828        /// the string contains forward slashes, trim everything up to and including
2829        /// the last one.
2830        ///
2831        /// Implementation note: in either case, at most 511 characters of cmdline
2832        /// are considered.
2833        #[prost(string, repeated, tag="2")]
2834        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2835        /// List of excluded pids.
2836        #[prost(int32, repeated, packed="false", tag="3")]
2837        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
2838        /// List of excluded cmdlines. See description of |target_cmdline| for how
2839        /// this is handled.
2840        #[prost(string, repeated, tag="4")]
2841        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2842        // Niche features for systemwide callstacks:
2843
2844        /// Number of additional command lines to sample. Only those which are
2845        /// neither explicitly included nor excluded will be considered. Processes
2846        /// are accepted on a first come, first served basis.
2847        #[prost(uint32, optional, tag="5")]
2848        pub additional_cmdline_count: ::core::option::Option<u32>,
2849        /// If set to N, all encountered processes will be put into one of the N
2850        /// possible bins, and only one randomly-chosen bin will be selected for
2851        /// unwinding. The binning is simply "pid % N", under the assumption that
2852        /// low-order bits of pids are roughly uniformly distributed. Other explicit
2853        /// inclusions/exclusions in this |Scope| message are still respected.
2854        ///
2855        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
2856        /// values will be queryable in trace processor under the "stats" table as
2857        /// "perf_process_shard_count" and "perf_chosen_process_shard".
2858        ///
2859        /// NB: all data sources in a config that set |process_shard_count| must set
2860        /// it to the same value. The profiler will choose one bin for all those data
2861        /// sources.
2862        #[prost(uint32, optional, tag="6")]
2863        pub process_shard_count: ::core::option::Option<u32>,
2864    }
2865    /// Userspace unwinding mode. A possible future addition is kernel-unwound
2866    /// callchains for frame pointer based systems.
2867    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2868    #[repr(i32)]
2869    pub enum UnwindMode {
2870        UnwindUnknown = 0,
2871        /// Do not unwind userspace:
2872        UnwindSkip = 1,
2873        /// Use libunwindstack (default):
2874        UnwindDwarf = 2,
2875        /// Use userspace frame pointer unwinder:
2876        UnwindFramePointer = 3,
2877    }
2878    impl UnwindMode {
2879        /// String value of the enum field names used in the ProtoBuf definition.
2880        ///
2881        /// The values are not transformed in any way and thus are considered stable
2882        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2883        pub fn as_str_name(&self) -> &'static str {
2884            match self {
2885                UnwindMode::UnwindUnknown => "UNWIND_UNKNOWN",
2886                UnwindMode::UnwindSkip => "UNWIND_SKIP",
2887                UnwindMode::UnwindDwarf => "UNWIND_DWARF",
2888                UnwindMode::UnwindFramePointer => "UNWIND_FRAME_POINTER",
2889            }
2890        }
2891    }
2892}
2893// Begin of protos/perfetto/config/statsd/statsd_tracing_config.proto
2894
2895/// This file is named 'statsd_tracing_config.proto' rather than
2896/// 'statsd_config.proto' (which would be more consistent with the other
2897/// config protos) so it doesn't show up and confuse folks looking for
2898/// the existing statsd_config.proto for configuring statsd itself.
2899/// Same for the config proto itself.
2900#[derive(Clone, PartialEq, ::prost::Message)]
2901pub struct StatsdTracingConfig {
2902    /// This is for the common case of the atom id being known in the enum AtomId.
2903    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
2904    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
2905    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
2906    /// (e.g. non-upstream atoms that don't exist in AOSP).
2907    #[prost(int32, repeated, packed="false", tag="2")]
2908    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
2909    #[prost(message, repeated, tag="3")]
2910    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
2911}
2912#[derive(Clone, PartialEq, ::prost::Message)]
2913pub struct StatsdPullAtomConfig {
2914    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
2915    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
2916    #[prost(int32, repeated, packed="false", tag="2")]
2917    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
2918    #[prost(int32, optional, tag="3")]
2919    pub pull_frequency_ms: ::core::option::Option<i32>,
2920    #[prost(string, repeated, tag="4")]
2921    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2922}
2923// End of protos/perfetto/common/sys_stats_counters.proto
2924
2925// Begin of protos/perfetto/config/sys_stats/sys_stats_config.proto
2926
2927/// This file defines the configuration for the Linux /proc poller data source,
2928/// which injects counters in the trace.
2929/// Counters that are needed in the trace must be explicitly listed in the
2930/// *_counters fields. This is to avoid spamming the trace with all counters
2931/// at all times.
2932/// The sampling rate is configurable. All polling rates (*_period_ms) need
2933/// to be integer multiples of each other.
2934/// OK:     [10ms, 10ms, 10ms],  [10ms, 20ms, 10ms],  [10ms, 20ms, 60ms]
2935/// Not OK: [10ms, 10ms, 11ms],  [10ms, 15ms, 20ms]
2936#[derive(Clone, PartialEq, ::prost::Message)]
2937pub struct SysStatsConfig {
2938    /// Polls /proc/meminfo every X ms, if non-zero.
2939    /// This is required to be > 10ms to avoid excessive CPU usage.
2940    /// Cost: 0.3 ms \[read\] + 0.07 ms [parse + trace injection]
2941    #[prost(uint32, optional, tag="1")]
2942    pub meminfo_period_ms: ::core::option::Option<u32>,
2943    /// If empty all known counters are reported. Otherwise, only the counters
2944    /// specified below are reported.
2945    #[prost(enumeration="MeminfoCounters", repeated, packed="false", tag="2")]
2946    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
2947    /// Polls /proc/vmstat every X ms, if non-zero.
2948    /// This is required to be > 10ms to avoid excessive CPU usage.
2949    /// Cost: 0.2 ms \[read\] + 0.3 ms [parse + trace injection]
2950    #[prost(uint32, optional, tag="3")]
2951    pub vmstat_period_ms: ::core::option::Option<u32>,
2952    #[prost(enumeration="VmstatCounters", repeated, packed="false", tag="4")]
2953    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
2954    /// Pols /proc/stat every X ms, if non-zero.
2955    /// This is required to be > 10ms to avoid excessive CPU usage.
2956    /// Cost: 4.1 ms \[read\] + 1.9 ms [parse + trace injection]
2957    #[prost(uint32, optional, tag="5")]
2958    pub stat_period_ms: ::core::option::Option<u32>,
2959    #[prost(enumeration="sys_stats_config::StatCounters", repeated, packed="false", tag="6")]
2960    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
2961    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
2962    /// This is required to be > 10ms to avoid excessive CPU usage.
2963    /// This option can be used to record unchanging values.
2964    /// Updates from frequency changes can come from ftrace/set_clock_rate.
2965    #[prost(uint32, optional, tag="7")]
2966    pub devfreq_period_ms: ::core::option::Option<u32>,
2967    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
2968    /// This is required to be > 10ms to avoid excessive CPU usage.
2969    #[prost(uint32, optional, tag="8")]
2970    pub cpufreq_period_ms: ::core::option::Option<u32>,
2971    /// Polls /proc/buddyinfo every X ms, if non-zero.
2972    /// This is required to be > 10ms to avoid excessive CPU usage.
2973    #[prost(uint32, optional, tag="9")]
2974    pub buddyinfo_period_ms: ::core::option::Option<u32>,
2975    /// Polls /proc/diskstats every X ms, if non-zero.
2976    /// This is required to be > 10ms to avoid excessive CPU usage.
2977    #[prost(uint32, optional, tag="10")]
2978    pub diskstat_period_ms: ::core::option::Option<u32>,
2979    /// Polls /proc/pressure/* every X ms, if non-zero.
2980    /// This is required to be > 10ms to avoid excessive CPU usage.
2981    #[prost(uint32, optional, tag="11")]
2982    pub psi_period_ms: ::core::option::Option<u32>,
2983    /// Polls /sys/class/thermal/* every X ms, if non-zero.
2984    /// This is required to be > 10ms to avoid excessive CPU usage.
2985    #[prost(uint32, optional, tag="12")]
2986    pub thermal_period_ms: ::core::option::Option<u32>,
2987    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
2988    /// This is required to be > 10ms to avoid excessive CPU usage.
2989    #[prost(uint32, optional, tag="13")]
2990    pub cpuidle_period_ms: ::core::option::Option<u32>,
2991    /// Polls device-specific GPU frequency info every X ms, if non-zero.
2992    /// This is required to be > 10ms to avoid excessive CPU usage.
2993    #[prost(uint32, optional, tag="14")]
2994    pub gpufreq_period_ms: ::core::option::Option<u32>,
2995}
2996/// Nested message and enum types in `SysStatsConfig`.
2997pub mod sys_stats_config {
2998    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2999    #[repr(i32)]
3000    pub enum StatCounters {
3001        StatUnspecified = 0,
3002        StatCpuTimes = 1,
3003        StatIrqCounts = 2,
3004        StatSoftirqCounts = 3,
3005        StatForkCount = 4,
3006    }
3007    impl StatCounters {
3008        /// String value of the enum field names used in the ProtoBuf definition.
3009        ///
3010        /// The values are not transformed in any way and thus are considered stable
3011        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3012        pub fn as_str_name(&self) -> &'static str {
3013            match self {
3014                StatCounters::StatUnspecified => "STAT_UNSPECIFIED",
3015                StatCounters::StatCpuTimes => "STAT_CPU_TIMES",
3016                StatCounters::StatIrqCounts => "STAT_IRQ_COUNTS",
3017                StatCounters::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
3018                StatCounters::StatForkCount => "STAT_FORK_COUNT",
3019            }
3020        }
3021    }
3022}
3023// End of protos/perfetto/config/sys_stats/sys_stats_config.proto
3024
3025// Begin of protos/perfetto/config/system_info/system_info_config.proto
3026
3027/// This data-source does a one-off recording of system information when
3028/// the trace starts.
3029/// Currently this includes:
3030/// - Values of
3031/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
3032/// datasource has no configuration options at present.
3033#[derive(Clone, PartialEq, ::prost::Message)]
3034pub struct SystemInfoConfig {
3035}
3036// End of protos/perfetto/config/system_info/system_info_config.proto
3037
3038// Begin of protos/perfetto/config/test_config.proto
3039
3040/// The configuration for a fake producer used in tests.
3041#[derive(Clone, PartialEq, ::prost::Message)]
3042pub struct TestConfig {
3043    /// The number of messages the fake producer should send.
3044    #[prost(uint32, optional, tag="1")]
3045    pub message_count: ::core::option::Option<u32>,
3046    /// The maximum number of messages which should be sent each second.
3047    /// The actual obserced speed may be lower if the producer is unable to
3048    /// work fast enough.
3049    /// If this is zero or unset, the producer will send as fast as possible.
3050    #[prost(uint32, optional, tag="2")]
3051    pub max_messages_per_second: ::core::option::Option<u32>,
3052    /// The seed value for a simple multiplicative congruential pseudo-random
3053    /// number sequence.
3054    #[prost(uint32, optional, tag="3")]
3055    pub seed: ::core::option::Option<u32>,
3056    /// The size of each message in bytes. Should be greater than or equal 5 to
3057    /// account for the number of bytes needed to encode the random number and a
3058    /// null byte for the string.
3059    #[prost(uint32, optional, tag="4")]
3060    pub message_size: ::core::option::Option<u32>,
3061    /// Whether the producer should send a event batch when the data source is
3062    /// is initially registered.
3063    #[prost(bool, optional, tag="5")]
3064    pub send_batch_on_register: ::core::option::Option<bool>,
3065    #[prost(message, optional, tag="6")]
3066    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
3067}
3068/// Nested message and enum types in `TestConfig`.
3069pub mod test_config {
3070    #[derive(Clone, PartialEq, ::prost::Message)]
3071    pub struct DummyFields {
3072        #[prost(uint32, optional, tag="1")]
3073        pub field_uint32: ::core::option::Option<u32>,
3074        #[prost(int32, optional, tag="2")]
3075        pub field_int32: ::core::option::Option<i32>,
3076        #[prost(uint64, optional, tag="3")]
3077        pub field_uint64: ::core::option::Option<u64>,
3078        #[prost(int64, optional, tag="4")]
3079        pub field_int64: ::core::option::Option<i64>,
3080        #[prost(fixed64, optional, tag="5")]
3081        pub field_fixed64: ::core::option::Option<u64>,
3082        #[prost(sfixed64, optional, tag="6")]
3083        pub field_sfixed64: ::core::option::Option<i64>,
3084        #[prost(fixed32, optional, tag="7")]
3085        pub field_fixed32: ::core::option::Option<u32>,
3086        #[prost(sfixed32, optional, tag="8")]
3087        pub field_sfixed32: ::core::option::Option<i32>,
3088        #[prost(double, optional, tag="9")]
3089        pub field_double: ::core::option::Option<f64>,
3090        #[prost(float, optional, tag="10")]
3091        pub field_float: ::core::option::Option<f32>,
3092        #[prost(sint64, optional, tag="11")]
3093        pub field_sint64: ::core::option::Option<i64>,
3094        #[prost(sint32, optional, tag="12")]
3095        pub field_sint32: ::core::option::Option<i32>,
3096        #[prost(string, optional, tag="13")]
3097        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
3098        #[prost(bytes="vec", optional, tag="14")]
3099        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
3100    }
3101}
3102// End of protos/perfetto/config/test_config.proto
3103
3104// Begin of protos/perfetto/config/track_event/track_event_config.proto
3105
3106/// The following fields define the set of enabled trace categories. Each list
3107/// item is a glob.
3108///
3109/// To determine if category is enabled, it is checked against the filters in
3110/// the following order:
3111///
3112///    1. Exact matches in enabled categories.
3113///    2. Exact matches in enabled tags.
3114///    3. Exact matches in disabled categories.
3115///    4. Exact matches in disabled tags.
3116///    5. Pattern matches in enabled categories.
3117///    6. Pattern matches in enabled tags.
3118///    7. Pattern matches in disabled categories.
3119///    8. Pattern matches in disabled tags.
3120///
3121/// If none of the steps produced a match:
3122///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
3123///   default.
3124///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
3125///
3126/// Examples:
3127///
3128///   - To enable all non-slow/debug categories:
3129///
3130///        enabled_categories: "*"
3131///
3132///   - To enable specific categories:
3133///
3134///        disabled_categories: "*"
3135///        enabled_categories: "my_category"
3136///        enabled_categories: "my_category2"
3137///
3138///   - To enable only categories with a specific tag:
3139///
3140///        disabled_tags: "*"
3141///        enabled_tags: "my_tag"
3142///
3143#[derive(Clone, PartialEq, ::prost::Message)]
3144pub struct TrackEventConfig {
3145    /// Default: []
3146    #[prost(string, repeated, tag="1")]
3147    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3148    /// Default: []
3149    #[prost(string, repeated, tag="2")]
3150    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3151    /// Default: ["slow", "debug"]
3152    #[prost(string, repeated, tag="3")]
3153    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3154    /// Default: []
3155    #[prost(string, repeated, tag="4")]
3156    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3157    /// Default: false (i.e. enabled by default)
3158    #[prost(bool, optional, tag="5")]
3159    pub disable_incremental_timestamps: ::core::option::Option<bool>,
3160    /// Allows to specify a custom unit different than the default (ns).
3161    /// Also affects thread timestamps if enable_thread_time_sampling = true.
3162    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
3163    /// 3000 ns = 3 us.
3164    /// Default: 1 (if unset, it should be read as 1).
3165    #[prost(uint64, optional, tag="6")]
3166    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
3167    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
3168    /// When true, any debug annotations provided as arguments to the
3169    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
3170    /// still be emitted even if set to true.
3171    #[prost(bool, optional, tag="7")]
3172    pub filter_debug_annotations: ::core::option::Option<bool>,
3173    /// Default: false (i.e. disabled)
3174    /// When true, the SDK samples and emits the current thread time counter value
3175    /// for each event on the current thread's track. This value represents the
3176    /// total CPU time consumed by that thread since its creation.
3177    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
3178    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
3179    #[prost(bool, optional, tag="8")]
3180    pub enable_thread_time_sampling: ::core::option::Option<bool>,
3181    /// When enable_thread_time_sampling is true, and this is specified, thread
3182    /// time is sampled only if the elapsed wall time >
3183    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
3184    /// Effectively, this means thread time will have a leeway of
3185    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
3186    #[prost(uint64, optional, tag="10")]
3187    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
3188    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
3189    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
3190    /// out.
3191    #[prost(bool, optional, tag="9")]
3192    pub filter_dynamic_event_names: ::core::option::Option<bool>,
3193}
3194// End of protos/perfetto/config/track_event/track_event_config.proto
3195
3196// Begin of protos/perfetto/config/data_source_config.proto
3197
3198/// The configuration that is passed to each data source when starting tracing.
3199/// Next id: 139
3200#[derive(Clone, PartialEq, ::prost::Message)]
3201pub struct DataSourceConfig {
3202    /// Data source unique name, e.g., "linux.ftrace". This must match
3203    /// the name passed by the data source when it registers (see
3204    /// RegisterDataSource()).
3205    #[prost(string, optional, tag="1")]
3206    pub name: ::core::option::Option<::prost::alloc::string::String>,
3207    /// The index of the logging buffer where TracePacket(s) will be stored.
3208    /// This field is quite subtle as it has a double semantic:
3209    /// 1) When the config is passed, this field is a 0-based index relative to the
3210    ///     buffer array in the TraceConfig and defines the mapping between data
3211    ///     sources and config. From v54 this is optional because the user can
3212    ///     instead use target_buffer_name.
3213    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
3214    ///     producer, it overwrites this field with the global buffer index (which
3215    ///     depends on other tracing sessions active). This tells the producer which
3216    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
3217    ///     service always sets the resolved global id, even when using
3218    ///     `target_buffer_name`.
3219    /// In hindsight we should have used two different fields given even in v0 they
3220    /// had a different semantic. But now it's too late as this would be a major
3221    /// protocol breaking change.
3222    #[prost(uint32, optional, tag="2")]
3223    pub target_buffer: ::core::option::Option<u32>,
3224    /// Alternative to |target_buffer|. References a buffer by name (as specified
3225    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
3226    /// readable and less error-prone than using buffer indices.
3227    /// If both |target_buffer| and |target_buffer_name| are specified, they must
3228    /// refer to the same buffer, otherwise the service will reject the config.
3229    /// Using both fields allows configs to work with both old and new versions
3230    /// of the tracing service. Introduced in v54.
3231    #[prost(string, optional, tag="11")]
3232    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
3233    /// Set by the service to indicate the duration of the trace.
3234    /// DO NOT SET in consumer as this will be overridden by the service.
3235    #[prost(uint32, optional, tag="3")]
3236    pub trace_duration_ms: ::core::option::Option<u32>,
3237    /// If true, |trace_duration_ms| should count also time in suspend. This
3238    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
3239    #[prost(bool, optional, tag="122")]
3240    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3241    /// Set by the service to indicate how long it waits after StopDataSource.
3242    /// DO NOT SET in consumer as this will be overridden by the service.
3243    #[prost(uint32, optional, tag="7")]
3244    pub stop_timeout_ms: ::core::option::Option<u32>,
3245    /// Set by the service to indicate whether this tracing session has extra
3246    /// guardrails.
3247    /// DO NOT SET in consumer as this will be overridden by the service.
3248    #[prost(bool, optional, tag="6")]
3249    pub enable_extra_guardrails: ::core::option::Option<bool>,
3250    /// Set by the service to indicate which user initiated this trace.
3251    /// DO NOT SET in consumer as this will be overridden by the service.
3252    #[prost(enumeration="data_source_config::SessionInitiator", optional, tag="8")]
3253    pub session_initiator: ::core::option::Option<i32>,
3254    /// Set by the service to indicate which tracing session the data source
3255    /// belongs to. The intended use case for this is checking if two data sources,
3256    /// one of which produces metadata for the other one, belong to the same trace
3257    /// session and hence should be linked together.
3258    /// This field was introduced in Aug 2018 after Android P.
3259    /// DO NOT SET in consumer as this will be overridden by the service.
3260    #[prost(uint64, optional, tag="4")]
3261    pub tracing_session_id: ::core::option::Option<u64>,
3262    /// How to behave when the producer runs out of space in the shared memory
3263    /// buffer. This is only honored by some data sources (in the SDK, the data
3264    /// sources registered with a configurable buffer exhausted policy).
3265    #[prost(enumeration="data_source_config::BufferExhaustedPolicy", optional, tag="9")]
3266    pub buffer_exhausted_policy: ::core::option::Option<i32>,
3267    #[prost(message, optional, tag="10")]
3268    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3269    // Keep the lower IDs (up to 99) for fields that are *not* specific to
3270    // data-sources and needs to be processed by the traced daemon.
3271
3272    // All data source config fields must be marked as \[lazy=true\]. This prevents
3273    // the proto-to-cpp generator from recursing into those when generating the
3274    // cpp classes and polluting tracing/core with data-source-specific classes.
3275    // Instead they are treated as opaque strings containing raw proto bytes.
3276
3277    /// Data source name: linux.ftrace
3278    #[prost(message, optional, tag="100")]
3279    pub ftrace_config: ::core::option::Option<FtraceConfig>,
3280    /// Data source name: linux.inode_file_map
3281    #[prost(message, optional, tag="102")]
3282    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
3283    /// Data source name: linux.process_stats
3284    #[prost(message, optional, tag="103")]
3285    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
3286    /// Data source name: linux.sys_stats
3287    #[prost(message, optional, tag="104")]
3288    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
3289    /// Data source name: android.heapprofd
3290    /// Introduced in Android 10.
3291    #[prost(message, optional, tag="105")]
3292    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
3293    /// Data source name: android.java_hprof
3294    /// Introduced in Android 11.
3295    #[prost(message, optional, tag="110")]
3296    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
3297    /// Data source name: android.power
3298    #[prost(message, optional, tag="106")]
3299    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
3300    /// Data source name: android.log
3301    #[prost(message, optional, tag="107")]
3302    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
3303    /// Data source name: gpu.counters
3304    #[prost(message, optional, tag="108")]
3305    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
3306    /// Data source name: android.game_interventions
3307    #[prost(message, optional, tag="116")]
3308    pub android_game_intervention_list_config: ::core::option::Option<AndroidGameInterventionListConfig>,
3309    /// Data source name: android.packages_list
3310    #[prost(message, optional, tag="109")]
3311    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
3312    /// Data source name: linux.perf
3313    #[prost(message, optional, tag="111")]
3314    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
3315    /// Data source name: vulkan.memory_tracker
3316    #[prost(message, optional, tag="112")]
3317    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
3318    /// Data source name: track_event
3319    #[prost(message, optional, tag="113")]
3320    pub track_event_config: ::core::option::Option<TrackEventConfig>,
3321    /// Data source name: android.polled_state
3322    #[prost(message, optional, tag="114")]
3323    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
3324    /// Data source name: android.system_property
3325    #[prost(message, optional, tag="118")]
3326    pub android_system_property_config: ::core::option::Option<AndroidSystemPropertyConfig>,
3327    /// Data source name: android.statsd
3328    #[prost(message, optional, tag="117")]
3329    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
3330    /// Data source name: linux.system_info
3331    #[prost(message, optional, tag="119")]
3332    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
3333    /// Data source name: linux.frozen_ftrace
3334    #[prost(message, optional, tag="136")]
3335    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
3336    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
3337    /// avoid proto serialization and de-serialization there because that would
3338    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
3339    /// C++ class for it so it can pass around plain C++ objets.
3340    #[prost(message, optional, tag="101")]
3341    pub chrome_config: ::core::option::Option<ChromeConfig>,
3342    /// Data source name: code.v8.dev
3343    #[prost(message, optional, tag="127")]
3344    pub v8_config: ::core::option::Option<V8Config>,
3345    /// If an interceptor is specified here, packets for this data source will be
3346    /// rerouted to the interceptor instead of the main trace buffer. This can be
3347    /// used, for example, to write trace data into ETW or for logging trace points
3348    /// to the console.
3349    ///
3350    /// Note that interceptors are only supported by data sources registered
3351    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
3352    /// traced_probes) may not support interception.
3353    #[prost(message, optional, tag="115")]
3354    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
3355    /// Data source name: android.network_packets.
3356    /// Introduced in Android 14 (U).
3357    #[prost(message, optional, tag="120")]
3358    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
3359    /// Data source name: android.surfaceflinger.layers
3360    #[prost(message, optional, tag="121")]
3361    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
3362    /// Data source name: android.surfaceflinger.transactions
3363    #[prost(message, optional, tag="123")]
3364    pub surfaceflinger_transactions_config: ::core::option::Option<SurfaceFlingerTransactionsConfig>,
3365    /// Data source name: android.sdk_sysprop_guard
3366    /// Introduced in Android 14 (U) QPR1.
3367    #[prost(message, optional, tag="124")]
3368    pub android_sdk_sysprop_guard_config: ::core::option::Option<AndroidSdkSyspropGuardConfig>,
3369    /// Data source name: windows.etw
3370    #[prost(message, optional, tag="125")]
3371    pub etw_config: ::core::option::Option<EtwConfig>,
3372    /// Data source name: android.protolog
3373    #[prost(message, optional, tag="126")]
3374    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
3375    /// Data source name: android.input.inputevent
3376    #[prost(message, optional, tag="128")]
3377    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
3378    /// Data source name: android.pixel.modem
3379    #[prost(message, optional, tag="129")]
3380    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
3381    /// Data source name: android.windowmanager
3382    #[prost(message, optional, tag="130")]
3383    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
3384    /// Data source name: org.chromium.system_metrics
3385    #[prost(message, optional, tag="131")]
3386    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
3387    /// Data source name: android.kernel_wakelocks
3388    #[prost(message, optional, tag="132")]
3389    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
3390    /// Data source name: gpu.renderstages
3391    #[prost(message, optional, tag="133")]
3392    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
3393    /// Data source name: org.chromium.histogram_samples
3394    #[prost(message, optional, tag="134")]
3395    pub chromium_histogram_samples: ::core::option::Option<ChromiumHistogramSamplesConfig>,
3396    /// Data source name: android.app_wakelocks
3397    #[prost(message, optional, tag="135")]
3398    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
3399    /// Data source name: android.cpu_per_uid
3400    #[prost(message, optional, tag="137")]
3401    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
3402    /// Data source name: android.user_list
3403    #[prost(message, optional, tag="138")]
3404    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
3405    /// This is a fallback mechanism to send a free-form text config to the
3406    /// producer. In theory this should never be needed. All the code that
3407    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
3408    /// the trace config proto and propagate unknown fields. However, if anything
3409    /// in the pipeline (client or backend) ends up breaking this forward compat
3410    /// plan, this field will become the escape hatch to allow future data sources
3411    /// to get some meaningful configuration.
3412    #[prost(string, optional, tag="1000")]
3413    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
3414    /// This field is only used for testing.
3415    #[prost(message, optional, tag="1001")]
3416    pub for_testing: ::core::option::Option<TestConfig>,
3417}
3418/// Nested message and enum types in `DataSourceConfig`.
3419pub mod data_source_config {
3420    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3421    #[repr(i32)]
3422    pub enum SessionInitiator {
3423        Unspecified = 0,
3424        /// This trace was initiated from a trusted system app has DUMP and
3425        /// USAGE_STATS permission. This system app is expected to not expose the
3426        /// trace to the user of the device.
3427        /// This is determined by checking the UID initiating the trace.
3428        TrustedSystem = 1,
3429    }
3430    impl SessionInitiator {
3431        /// String value of the enum field names used in the ProtoBuf definition.
3432        ///
3433        /// The values are not transformed in any way and thus are considered stable
3434        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3435        pub fn as_str_name(&self) -> &'static str {
3436            match self {
3437                SessionInitiator::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
3438                SessionInitiator::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
3439            }
3440        }
3441    }
3442    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3443    #[repr(i32)]
3444    pub enum BufferExhaustedPolicy {
3445        /// The data source will use its default buffer exhausted policy, specified
3446        /// by the code when the data source is registered.
3447        BufferExhaustedUnspecified = 0,
3448        /// The data source will drop packets when there's no space in the shared
3449        /// memory buffer.
3450        BufferExhaustedDrop = 1,
3451        /// The data source will wait when there's no space in the shared memory
3452        /// buffer. If there's still not space, after a few seconds, the whole
3453        /// producer process will be aborted.
3454        BufferExhaustedStallThenAbort = 2,
3455        /// The data source will wait when there's no space in the shared memory
3456        /// buffer.  If there's still not space, after a few seconds, the data source
3457        /// will drop packets.
3458        BufferExhaustedStallThenDrop = 3,
3459    }
3460    impl BufferExhaustedPolicy {
3461        /// String value of the enum field names used in the ProtoBuf definition.
3462        ///
3463        /// The values are not transformed in any way and thus are considered stable
3464        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3465        pub fn as_str_name(&self) -> &'static str {
3466            match self {
3467                BufferExhaustedPolicy::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
3468                BufferExhaustedPolicy::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
3469                BufferExhaustedPolicy::BufferExhaustedStallThenAbort => "BUFFER_EXHAUSTED_STALL_THEN_ABORT",
3470                BufferExhaustedPolicy::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
3471            }
3472        }
3473    }
3474}
3475// End of protos/perfetto/config/data_source_config.proto
3476
3477// Begin of protos/perfetto/config/trace_config.proto
3478
3479/// The overall config that is used when starting a new tracing session through
3480/// ProducerPort::StartTracing().
3481/// It contains the general config for the logging buffer(s) and the configs for
3482/// all the data source being enabled.
3483///
3484/// Next id: 44.
3485#[derive(Clone, PartialEq, ::prost::Message)]
3486pub struct TraceConfig {
3487    #[prost(message, repeated, tag="1")]
3488    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
3489    #[prost(message, repeated, tag="2")]
3490    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
3491    #[prost(message, optional, tag="20")]
3492    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
3493    /// If specified, the trace will be stopped |duration_ms| after starting.
3494    /// This does *not* count the time the system is suspended, so we will run
3495    /// for duration_ms of system activity, not wall time.
3496    ///
3497    /// However in case of traces with triggers, see
3498    /// TriggerConfig.trigger_timeout_ms instead.
3499    #[prost(uint32, optional, tag="3")]
3500    pub duration_ms: ::core::option::Option<u32>,
3501    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
3502    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
3503    /// Linux/Android, no-op on other platforms. This is used when dealing with
3504    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
3505    /// wall-time, making them more likely to hit device reboots (and hence loss).
3506    /// This option also changes consistently the semantic of
3507    /// TriggerConfig.stop_delay_ms.
3508    #[prost(bool, optional, tag="36")]
3509    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3510    /// This is set when --dropbox is passed to the Perfetto command line client
3511    /// and enables guardrails that limit resource usage for traces requested
3512    /// by statsd.
3513    #[prost(bool, optional, tag="4")]
3514    pub enable_extra_guardrails: ::core::option::Option<bool>,
3515    /// Reject producers that are not running under the same UID as the tracing
3516    /// service.
3517    #[prost(enumeration="trace_config::LockdownModeOperation", optional, tag="5")]
3518    pub lockdown_mode: ::core::option::Option<i32>,
3519    #[prost(message, repeated, tag="6")]
3520    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
3521    /// Statsd-specific metadata.
3522    #[prost(message, optional, tag="7")]
3523    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
3524    /// When true && |output_path| is empty, the EnableTracing() request must
3525    /// provide a file descriptor. The service will then periodically read packets
3526    /// out of the trace buffer and store it into the passed file.
3527    /// If |output_path| is not empty no fd should be passed, the service
3528    /// will create a new file and write into that (see comment below).
3529    #[prost(bool, optional, tag="8")]
3530    pub write_into_file: ::core::option::Option<bool>,
3531    /// This must point to a non-existing file. If the file exists the service
3532    /// will NOT overwrite and will fail instead as a security precaution.
3533    /// On Android, when this is used with the system traced, the path must be
3534    /// within /data/misc/perfetto-traces/ or the trace will fail.
3535    /// This option has been introduced in Android R. Before R write_into_file
3536    /// can be used only with the "pass a file descriptor over IPC" mode.
3537    #[prost(string, optional, tag="29")]
3538    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
3539    /// Optional. If non-zero tunes the write period. A min value of 100ms is
3540    /// enforced (i.e. smaller values are ignored).
3541    #[prost(uint32, optional, tag="9")]
3542    pub file_write_period_ms: ::core::option::Option<u32>,
3543    /// Optional. When non zero the periodic write stops once at most X bytes
3544    /// have been written into the file. Tracing is disabled when this limit is
3545    /// reached, even if |duration_ms| has not been reached yet.
3546    #[prost(uint64, optional, tag="10")]
3547    pub max_file_size_bytes: ::core::option::Option<u64>,
3548    #[prost(message, optional, tag="11")]
3549    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
3550    /// When true, data sources are not started until an explicit call to
3551    /// StartTracing() on the consumer port. This is to support early
3552    /// initialization and fast trace triggering. This can be used only when the
3553    /// Consumer explicitly triggers the StartTracing() method.
3554    /// This should not be used in a remote trace config via statsd, doing so will
3555    /// result in a hung trace session.
3556    #[prost(bool, optional, tag="12")]
3557    pub deferred_start: ::core::option::Option<bool>,
3558    /// When set, it periodically issues a Flush() to all data source, forcing them
3559    /// to commit their data into the tracing service. This can be used for
3560    /// quasi-real-time streaming mode and to guarantee some partial ordering of
3561    /// events in the trace in windows of X ms.
3562    #[prost(uint32, optional, tag="13")]
3563    pub flush_period_ms: ::core::option::Option<u32>,
3564    /// Wait for this long for producers to acknowledge flush requests.
3565    /// Default 5s.
3566    #[prost(uint32, optional, tag="14")]
3567    pub flush_timeout_ms: ::core::option::Option<u32>,
3568    /// Wait for this long for producers to acknowledge stop requests.
3569    /// Default 5s.
3570    #[prost(uint32, optional, tag="23")]
3571    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
3572    /// Android-only. If set, sends an intent to the Traceur system app when the
3573    /// trace ends to notify it about the trace readiness.
3574    #[prost(bool, optional, tag="16")]
3575    pub notify_traceur: ::core::option::Option<bool>,
3576    /// This field was introduced in Android S.
3577    /// Android-only. If set to a value > 0, marks the trace session as a candidate
3578    /// for being attached to a bugreport. This field effectively acts as a z-index
3579    /// for bugreports. When Android's dumpstate runs perfetto
3580    /// --save-for-bugreport, traced will pick the tracing session with the highest
3581    /// score (score <= 0 is ignored) and:
3582    /// On Android S, T:  will steal its contents, save the trace into
3583    ///      a known path and stop prematurely.
3584    /// On Android U+: will create a read-only snapshot and save that into a known
3585    ///      path, without stoppin the original tracing session.
3586    /// When this field is set the tracing session becomes eligible to be cloned
3587    /// by other UIDs.
3588    #[prost(int32, optional, tag="30")]
3589    pub bugreport_score: ::core::option::Option<i32>,
3590    /// When set, defines name of the file that will be saved under
3591    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
3592    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
3593    /// starting from the highest `bugreport_score`.
3594    /// Introduced in v42 / Android V.
3595    #[prost(string, optional, tag="38")]
3596    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
3597    #[prost(message, optional, tag="17")]
3598    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
3599    /// When this is non-empty the perfetto command line tool will ignore the rest
3600    /// of this TraceConfig and instead connect to the perfetto service as a
3601    /// producer and send these triggers, potentially stopping or starting traces
3602    /// that were previous configured to use a TriggerConfig.
3603    #[prost(string, repeated, tag="18")]
3604    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3605    #[prost(message, optional, tag="21")]
3606    pub incremental_state_config: ::core::option::Option<trace_config::IncrementalStateConfig>,
3607    /// No longer needed as we unconditionally allow tracing on user builds.
3608    #[deprecated]
3609    #[prost(bool, optional, tag="19")]
3610    pub allow_user_build_tracing: ::core::option::Option<bool>,
3611    /// If set the tracing service will ensure there is at most one tracing session
3612    /// with this key.
3613    #[prost(string, optional, tag="22")]
3614    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
3615    #[prost(enumeration="trace_config::CompressionType", optional, tag="24")]
3616    pub compression_type: ::core::option::Option<i32>,
3617    #[prost(message, optional, tag="25")]
3618    pub incident_report_config: ::core::option::Option<trace_config::IncidentReportConfig>,
3619    /// Android-only. Not for general use. If specified, sets the logging to statsd
3620    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
3621    /// this to enabled (if not explicitly set in the config) when specifying
3622    /// --upload.
3623    #[prost(enumeration="trace_config::StatsdLogging", optional, tag="31")]
3624    pub statsd_logging: ::core::option::Option<i32>,
3625    /// An identifier clients can use to tie this trace to other logging.
3626    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
3627    /// Trace UUID. If this field is set, the tracing service will respect the
3628    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
3629    /// gap-less snapshotting is not used.
3630    #[deprecated]
3631    #[prost(int64, optional, tag="27")]
3632    pub trace_uuid_msb: ::core::option::Option<i64>,
3633    #[deprecated]
3634    #[prost(int64, optional, tag="28")]
3635    pub trace_uuid_lsb: ::core::option::Option<i64>,
3636    #[prost(message, optional, tag="33")]
3637    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
3638    #[prost(message, optional, tag="34")]
3639    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
3640    #[prost(message, optional, tag="35")]
3641    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
3642    #[prost(message, repeated, tag="39")]
3643    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
3644    /// Priority boost to be applied to the traced process, when the session is
3645    /// running.
3646    #[prost(message, optional, tag="40")]
3647    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3648    /// When set to a value > 0, this tracing session will be started in
3649    /// "exclusive mode". This has the following semantics:
3650    /// - It can only be set by shell or root users.
3651    /// - A new exclusive session will only be started if its priority is strictly
3652    ///    higher than any other active tracing session.
3653    /// - If a new exclusive session is started, all other existing tracing
3654    ///    sessions (exclusive or not) are aborted.
3655    /// - While an exclusive session is active, any new non-exclusive session (or
3656    ///    any exclusive session with a lower or equal priority) will be rejected.
3657    ///
3658    /// Introduced in: perfetto v52.
3659    /// Supported on: Android 25Q3+.
3660    #[prost(uint32, optional, tag="41")]
3661    pub exclusive_prio: ::core::option::Option<u32>,
3662    /// If true && |write_into_file|, do NOT flush buffers when periodically write
3663    /// them into file.
3664    ///
3665    /// By default, if |write_into_file| is set, each time we periodically write
3666    /// buffers into file, we first issue a Flush() to all data source, forcing
3667    /// them to commit their data into the tracing service. This helps us to always
3668    /// write latest data to the file.
3669    ///
3670    /// Before this flag was introduced, the default behavior was NOT to flush
3671    /// buffers when periodically write them into file. If true this flag
3672    /// returns the old default behavior.
3673    ///
3674    /// Introduced in: perfetto v53.
3675    /// Supported on: Android 25Q4+.
3676    #[prost(bool, optional, tag="42")]
3677    pub no_flush_before_write_into_file: ::core::option::Option<bool>,
3678    /// When true, data sources in remote producers (machines connected via
3679    /// traced_relay) will be matched by default. When false (the default), data
3680    /// sources only match the host machine. In either case, an explicit
3681    /// |DataSource.machine_name_filter| takes priority.
3682    ///
3683    /// NB: perfetto versions before v54 do not have this option and match across
3684    /// machines by default. To be compatible across this version boundary, either
3685    /// set this field to true, or set an explicit machine_name_filter on all data
3686    /// sources.
3687    ///
3688    /// Introduced in: perfetto v54.
3689    #[prost(bool, optional, tag="43")]
3690    pub trace_all_machines: ::core::option::Option<bool>,
3691}
3692/// Nested message and enum types in `TraceConfig`.
3693pub mod trace_config {
3694    #[derive(Clone, PartialEq, ::prost::Message)]
3695    pub struct BufferConfig {
3696        #[prost(uint32, optional, tag="1")]
3697        pub size_kb: ::core::option::Option<u32>,
3698        #[prost(enumeration="buffer_config::FillPolicy", optional, tag="4")]
3699        pub fill_policy: ::core::option::Option<i32>,
3700        /// When true the buffer is moved (rather than copied) onto the cloned
3701        /// session, and an empty buffer of the same size is allocated in the source
3702        /// tracing session. This feature will likely get deprecated in the future.
3703        /// It been introduced mainly to support the surfaceflinger snapshot dump
3704        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
3705        /// that case we don't want to retain another in-memory copy of the buffer.
3706        #[prost(bool, optional, tag="5")]
3707        pub transfer_on_clone: ::core::option::Option<bool>,
3708        /// Used in conjunction with transfer_on_clone. When true the buffer is
3709        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
3710        /// that if the data source took too long to write the data in a previous
3711        /// clone-related flush, we don't end up with a mixture of leftovers from
3712        /// the previous write and new data.
3713        #[prost(bool, optional, tag="6")]
3714        pub clear_before_clone: ::core::option::Option<bool>,
3715        /// Optional name for this buffer. If set, data sources can reference this
3716        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
3717        /// using the buffer index. Buffer names must be unique within a tracing
3718        /// session. This provides a more human-readable and less error-prone way to
3719        /// configure which buffer a data source writes to.
3720        #[prost(string, optional, tag="7")]
3721        pub name: ::core::option::Option<::prost::alloc::string::String>,
3722    }
3723    /// Nested message and enum types in `BufferConfig`.
3724    pub mod buffer_config {
3725        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3726        #[repr(i32)]
3727        pub enum FillPolicy {
3728            Unspecified = 0,
3729            /// Default behavior. The buffer operates as a conventional ring buffer.
3730            /// If the writer is faster than the reader (or if the reader reads only
3731            /// after tracing is stopped) newly written packets will overwrite old
3732            /// packets.
3733            RingBuffer = 1,
3734            /// Behaves like RING_BUFFER as long as there is space in the buffer or
3735            /// the reader catches up with the writer. As soon as the writer hits
3736            /// an unread chunk, it stops accepting new data in the buffer.
3737            Discard = 2,
3738        }
3739        impl FillPolicy {
3740            /// String value of the enum field names used in the ProtoBuf definition.
3741            ///
3742            /// The values are not transformed in any way and thus are considered stable
3743            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3744            pub fn as_str_name(&self) -> &'static str {
3745                match self {
3746                    FillPolicy::Unspecified => "UNSPECIFIED",
3747                    FillPolicy::RingBuffer => "RING_BUFFER",
3748                    FillPolicy::Discard => "DISCARD",
3749                }
3750            }
3751        }
3752    }
3753    #[derive(Clone, PartialEq, ::prost::Message)]
3754    pub struct DataSource {
3755        /// Filters and data-source specific config. It contains also the unique name
3756        /// of the data source, the one passed in the  DataSourceDescriptor when they
3757        /// register on the service.
3758        #[prost(message, optional, tag="1")]
3759        pub config: ::core::option::Option<super::DataSourceConfig>,
3760        /// Optional. If multiple producers (~processes) expose the same data source
3761        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
3762        /// the data source is enabled only for producers whose names match any of
3763        /// the filters.
3764        /// |producer_name_filter| has to be an exact match, while
3765        /// |producer_name_regex_filter| is a regular expression.
3766        /// This allows to enable a data source only for specific processes.
3767        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
3768        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
3769        #[prost(string, repeated, tag="2")]
3770        pub producer_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3771        #[prost(string, repeated, tag="3")]
3772        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3773        /// Filter by machine names. The name of a machine is determined by the
3774        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
3775        /// variable is not set then the
3776        /// persist.traced_relay.machine_name system property is used. If the
3777        /// sysprop isn't set or not in an Android system, then the machine name by
3778        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
3779        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
3780        /// to the host machine, which is the machine running traced.
3781        #[prost(string, repeated, tag="4")]
3782        pub machine_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3783    }
3784    /// Config for disabling builtin data sources in the tracing service.
3785    #[derive(Clone, PartialEq, ::prost::Message)]
3786    pub struct BuiltinDataSource {
3787        /// Disable emitting clock timestamps into the trace.
3788        #[prost(bool, optional, tag="1")]
3789        pub disable_clock_snapshotting: ::core::option::Option<bool>,
3790        /// Disable echoing the original trace config in the trace.
3791        #[prost(bool, optional, tag="2")]
3792        pub disable_trace_config: ::core::option::Option<bool>,
3793        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
3794        #[prost(bool, optional, tag="3")]
3795        pub disable_system_info: ::core::option::Option<bool>,
3796        /// Disable emitting events for data-source state changes (e.g. the marker
3797        /// for all data sources having ACKed the start of the trace).
3798        #[prost(bool, optional, tag="4")]
3799        pub disable_service_events: ::core::option::Option<bool>,
3800        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
3801        /// also ClockSnapshot's primary_trace_clock. The configured value is written
3802        /// into the trace as part of the ClockSnapshots emitted by the service.
3803        /// Trace processor will attempt to translate packet/event timestamps from
3804        /// various data sources (and their chosen clock domains) to this domain
3805        /// during import. Added in Android R.
3806        #[prost(enumeration="super::BuiltinClock", optional, tag="5")]
3807        pub primary_trace_clock: ::core::option::Option<i32>,
3808        /// Time interval in between snapshotting of sync markers, clock snapshots,
3809        /// stats, and other periodic service-emitted events. Note that the service
3810        /// only keeps track of the first and the most recent snapshot until
3811        /// ReadBuffers() is called.
3812        #[prost(uint32, optional, tag="6")]
3813        pub snapshot_interval_ms: ::core::option::Option<u32>,
3814        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
3815        /// clock should be used for periodic snapshots of service-emitted events.
3816        /// This means, if a snapshot *should* have happened during suspend, it will
3817        /// happen immediately after the device resumes.
3818        ///
3819        /// Choosing a clock like this is done on best-effort basis; not all
3820        /// platforms (e.g. Windows) expose a clock which can be used for periodic
3821        /// tasks counting suspend. If such a clock is not available, the service
3822        /// falls back to the best-available alternative.
3823        ///
3824        /// Introduced in Android S.
3825        /// TODO(lalitm): deprecate this in T and make this the default if nothing
3826        /// crashes in S.
3827        #[prost(bool, optional, tag="7")]
3828        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
3829        /// Disables the reporting of per-trace-writer histograms in TraceStats.
3830        #[prost(bool, optional, tag="8")]
3831        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
3832    }
3833    #[derive(Clone, PartialEq, ::prost::Message)]
3834    pub struct ProducerConfig {
3835        /// Identifies the producer for which this config is for.
3836        #[prost(string, optional, tag="1")]
3837        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
3838        /// Specifies the preferred size of the shared memory buffer. If the size is
3839        /// larger than the max size, the max will be used. If it is smaller than
3840        /// the page size or doesn't fit pages evenly into it, it will fall back to
3841        /// the size specified by the producer or finally the default shared memory
3842        /// size.
3843        #[prost(uint32, optional, tag="2")]
3844        pub shm_size_kb: ::core::option::Option<u32>,
3845        /// Specifies the preferred size of each page in the shared memory buffer.
3846        /// Must be an integer multiple of 4K.
3847        #[prost(uint32, optional, tag="3")]
3848        pub page_size_kb: ::core::option::Option<u32>,
3849    }
3850    /// Contains statsd-specific metadata about an alert associated with the trace.
3851    #[derive(Clone, PartialEq, ::prost::Message)]
3852    pub struct StatsdMetadata {
3853        /// The identifier of the alert which triggered this trace.
3854        #[prost(int64, optional, tag="1")]
3855        pub triggering_alert_id: ::core::option::Option<i64>,
3856        /// The uid which registered the triggering configuration with statsd.
3857        #[prost(int32, optional, tag="2")]
3858        pub triggering_config_uid: ::core::option::Option<i32>,
3859        /// The identifier of the config which triggered the alert.
3860        #[prost(int64, optional, tag="3")]
3861        pub triggering_config_id: ::core::option::Option<i64>,
3862        /// The identifier of the subscription which triggered this trace.
3863        #[prost(int64, optional, tag="4")]
3864        pub triggering_subscription_id: ::core::option::Option<i64>,
3865    }
3866    /// Contains flags which override the default values of the guardrails inside
3867    /// Perfetto.
3868    #[derive(Clone, PartialEq, ::prost::Message)]
3869    pub struct GuardrailOverrides {
3870        /// Override the default limit (in bytes) for uploading data to server within
3871        /// a 24 hour period.
3872        /// On R-, this override only affected userdebug builds. Since S, it also
3873        /// affects user builds.
3874        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
3875        /// was removed from Perfetto.
3876        #[deprecated]
3877        #[prost(uint64, optional, tag="1")]
3878        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
3879        /// Overrides the guardrail for maximum trace buffer size.
3880        /// Available on U+
3881        #[prost(uint32, optional, tag="2")]
3882        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
3883    }
3884    /// Triggers allow producers to start or stop the tracing session when an event
3885    /// occurs.
3886    ///
3887    /// For example if we are tracing probabilistically, most traces will be
3888    /// uninteresting. Triggers allow us to keep only the interesting ones such as
3889    /// those traces during which the device temperature reached a certain
3890    /// threshold. In this case the producer can activate a trigger to keep
3891    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
3892    /// (START_TRACING) because it knows something is about to happen.
3893    #[derive(Clone, PartialEq, ::prost::Message)]
3894    pub struct TriggerConfig {
3895        #[prost(enumeration="trigger_config::TriggerMode", optional, tag="1")]
3896        pub trigger_mode: ::core::option::Option<i32>,
3897        /// This flag is really a workaround for b/274931668. This is needed only
3898        /// when deploying configs to different versions of the tracing service.
3899        /// When this is set to true this has the same effect of setting trigger_mode
3900        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
3901        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
3902        /// versions of Android and fall back to STOP_TRACING on older versions where
3903        /// CLONE_SNAPSHOT did not exist.
3904        /// When using this flag, trigger_mode must be set to STOP_TRACING.
3905        #[prost(bool, optional, tag="5")]
3906        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
3907        /// A list of triggers which are related to this configuration. If ANY
3908        /// trigger is seen then an action will be performed based on |trigger_mode|.
3909        #[prost(message, repeated, tag="2")]
3910        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
3911        /// Required and must be positive if a TriggerConfig is specified. This is
3912        /// how long this TraceConfig should wait for a trigger to arrive. After this
3913        /// period of time if no trigger is seen the TracingSession will be cleaned
3914        /// up.
3915        #[prost(uint32, optional, tag="3")]
3916        pub trigger_timeout_ms: ::core::option::Option<u32>,
3917    }
3918    /// Nested message and enum types in `TriggerConfig`.
3919    pub mod trigger_config {
3920        #[derive(Clone, PartialEq, ::prost::Message)]
3921        pub struct Trigger {
3922            /// The producer must specify this name to activate the trigger.
3923            #[prost(string, optional, tag="1")]
3924            pub name: ::core::option::Option<::prost::alloc::string::String>,
3925            /// An std::regex that will match the producer that can activate this
3926            /// trigger. This is optional. If unset any producers can activate this
3927            /// trigger.
3928            #[prost(string, optional, tag="2")]
3929            pub producer_name_regex: ::core::option::Option<::prost::alloc::string::String>,
3930            /// After a trigger is received either in START_TRACING or STOP_TRACING
3931            /// mode then the trace will end |stop_delay_ms| after triggering.
3932            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
3933            /// snapshot.
3934            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
3935            /// based on wall-clock, counting also time in suspend.
3936            #[prost(uint32, optional, tag="3")]
3937            pub stop_delay_ms: ::core::option::Option<u32>,
3938            /// Limits the number of traces this trigger can start/stop in a rolling
3939            /// 24 hour window. If this field is unset or zero, no limit is applied and
3940            /// activiation of this trigger *always* starts/stops the trace.
3941            #[prost(uint32, optional, tag="4")]
3942            pub max_per_24_h: ::core::option::Option<u32>,
3943            /// A value between 0 and 1 which encodes the probability of skipping a
3944            /// trigger with this name. This is useful for reducing the probability
3945            /// of high-frequency triggers from dominating trace finaization. If this
3946            /// field is unset or zero, the trigger will *never* be skipped. If this
3947            /// field is greater than or equal to 1, this trigger will *always* be
3948            /// skipped i.e. it will be as if this trigger was never included in the
3949            /// first place.
3950            /// This probability check is applied *before* any other limits. For
3951            /// example, if |max_per_24_h| is also set, first we will check if the
3952            /// probability bar is met and only then will we check the |max_per_24_h|
3953            /// limit.
3954            #[prost(double, optional, tag="5")]
3955            pub skip_probability: ::core::option::Option<f64>,
3956        }
3957        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3958        #[repr(i32)]
3959        pub enum TriggerMode {
3960            Unspecified = 0,
3961            /// When this mode is chosen, data sources are not started until one of the
3962            /// |triggers| are received. This supports early initialization and fast
3963            /// starting of the tracing system. On triggering, the session will then
3964            /// record for |stop_delay_ms|. However if no trigger is seen
3965            /// after |trigger_timeout_ms| the session will be stopped and no data will
3966            /// be returned.
3967            StartTracing = 1,
3968            /// When this mode is chosen, the session will be started via the normal
3969            /// EnableTracing() & StartTracing(). If no trigger is ever seen
3970            /// the session will be stopped after |trigger_timeout_ms| and no data will
3971            /// be returned. However if triggered the trace will stop after
3972            /// |stop_delay_ms| and any data in the buffer will be returned to the
3973            /// consumer.
3974            StopTracing = 2,
3975            /// When this mode is chosen, this causes a snapshot of the current tracing
3976            /// session to be created after |stop_delay_ms| while the current tracing
3977            /// session continues undisturbed (% an extra flush). This mode can be
3978            /// used only when the tracing session is handled by the "perfetto" cmdline
3979            /// client (which is true in 90% of cases). Part of the business logic
3980            /// necessary for this behavior, and ensuing file handling, lives in
3981            /// perfetto_cmd.cc . On other consumers, this causes only a notification
3982            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
3983            /// consumer is supposed to call CloneSession() itself after the event.
3984            /// Use use_clone_snapshot_if_available=true when targeting older versions
3985            /// of perfetto.
3986            CloneSnapshot = 4,
3987        }
3988        impl TriggerMode {
3989            /// String value of the enum field names used in the ProtoBuf definition.
3990            ///
3991            /// The values are not transformed in any way and thus are considered stable
3992            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3993            pub fn as_str_name(&self) -> &'static str {
3994                match self {
3995                    TriggerMode::Unspecified => "UNSPECIFIED",
3996                    TriggerMode::StartTracing => "START_TRACING",
3997                    TriggerMode::StopTracing => "STOP_TRACING",
3998                    TriggerMode::CloneSnapshot => "CLONE_SNAPSHOT",
3999                }
4000            }
4001        }
4002    }
4003    /// Configuration for trace contents that reference earlier trace data. For
4004    /// example, a data source might intern strings, and emit packets containing
4005    /// {interned id : string} pairs. Future packets from that data source can then
4006    /// use the interned ids instead of duplicating the raw string contents. The
4007    /// trace parser will then need to use that interning table to fully interpret
4008    /// the rest of the trace.
4009    #[derive(Clone, PartialEq, ::prost::Message)]
4010    pub struct IncrementalStateConfig {
4011        /// If nonzero, notify eligible data sources to clear their incremental state
4012        /// periodically, with the given period. The notification is sent only to
4013        /// data sources that have |handles_incremental_state_clear| set in their
4014        /// DataSourceDescriptor. The notification requests that the data source
4015        /// stops referring to past trace contents. This is particularly useful when
4016        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
4017        /// trace data.
4018        ///
4019        /// Warning: this time-based global clearing is likely to be removed in the
4020        /// future, to be replaced with a smarter way of sending the notifications
4021        /// only when necessary.
4022        #[prost(uint32, optional, tag="1")]
4023        pub clear_period_ms: ::core::option::Option<u32>,
4024    }
4025    /// Android-only. Not for general use. If set, saves the trace into an
4026    /// incident. This field is read by perfetto_cmd, rather than the tracing
4027    /// service. This field must be set when passing the --upload flag to
4028    /// perfetto_cmd.
4029    ///
4030    /// In this message, either:
4031    ///   * all of |destination_package|, |destination_class| and |privacy_level|
4032    ///     must be set.
4033    ///   * |skip_incidentd| must be explicitly set to true.
4034    #[derive(Clone, PartialEq, ::prost::Message)]
4035    pub struct IncidentReportConfig {
4036        #[prost(string, optional, tag="1")]
4037        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
4038        #[prost(string, optional, tag="2")]
4039        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
4040        /// Level of filtering in the requested incident. See |Destination| in
4041        /// frameworks/base/core/proto/android/privacy.proto.
4042        #[prost(int32, optional, tag="3")]
4043        pub privacy_level: ::core::option::Option<i32>,
4044        /// If true, then skips saving the trace to incidentd.
4045        ///
4046        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
4047        /// or when we explicitly don't want traces to go to incidentd even when they
4048        /// usually would (e.g. configs deployed using statsd but only used for
4049        /// inclusion in bugreports using |bugreport_score|).
4050        ///
4051        /// The motivation for having this flag, instead of just not setting
4052        /// |incident_report_config|, is prevent accidents where
4053        /// |incident_report_config| is omitted by mistake.
4054        #[prost(bool, optional, tag="5")]
4055        pub skip_incidentd: ::core::option::Option<bool>,
4056        /// If true, do not write the trace into dropbox (i.e. incident only).
4057        /// Otherwise, write to both dropbox and incident.
4058        /// TODO(lalitm): remove this field as we no longer use Dropbox.
4059        #[deprecated]
4060        #[prost(bool, optional, tag="4")]
4061        pub skip_dropbox: ::core::option::Option<bool>,
4062    }
4063    /// When set applies a post-filter to the trace contents using the filter
4064    /// provided. The filter is applied at ReadBuffers() time and works both in the
4065    /// case of IPC readback and write_into_file. This filter can be generated
4066    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
4067    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
4068    /// design.
4069    ///
4070    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
4071    /// Android T with a different field number. Updated in Android U with a new
4072    /// bytecode version which supports string filtering.
4073    ///
4074    /// =========================
4075    /// Filter bytecode.
4076    /// =========================
4077    #[derive(Clone, PartialEq, ::prost::Message)]
4078    pub struct TraceFilter {
4079        /// The bytecode as implemented in Android T.
4080        #[prost(bytes="vec", optional, tag="1")]
4081        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4082        /// The bytecode as implemented in Android U. Adds support for string
4083        /// filtering.
4084        #[prost(bytes="vec", optional, tag="2")]
4085        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4086        #[prost(message, optional, tag="3")]
4087        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
4088    }
4089    /// Nested message and enum types in `TraceFilter`.
4090    pub mod trace_filter {
4091        /// A rule specifies how strings should be filtered.
4092        #[derive(Clone, PartialEq, ::prost::Message)]
4093        pub struct StringFilterRule {
4094            /// The policy (i.e. algorithm) dictating how strings matching this rule
4095            /// should be handled.
4096            #[prost(enumeration="StringFilterPolicy", optional, tag="1")]
4097            pub policy: ::core::option::Option<i32>,
4098            /// The regex pattern used to match against each string.
4099            #[prost(string, optional, tag="2")]
4100            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
4101            /// The string which should appear after the tgid in atrace tracepoint
4102            /// strings.
4103            #[prost(string, optional, tag="3")]
4104            pub atrace_payload_starts_with: ::core::option::Option<::prost::alloc::string::String>,
4105        }
4106        /// A chain is a list of rules which string will be sequentially checked
4107        /// against.
4108        #[derive(Clone, PartialEq, ::prost::Message)]
4109        pub struct StringFilterChain {
4110            #[prost(message, repeated, tag="1")]
4111            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
4112        }
4113        // =========================
4114        // String filtering
4115        // =========================
4116
4117        // The principles and terminology of string filtering is heavily inspired by
4118        // iptables. A "rule" decide how strings should be filtered. Each rule
4119        // contains a "policy" which indicates the algorithm to use for filtering.
4120        // A "chain" is a list of rules which will be sequentially checked against
4121        // each string.
4122        //
4123        // The first rule which applies to the string terminates filtering for that
4124        // string. If no rules apply, the string is left unchanged.
4125
4126        /// A policy specifies which algorithm should be used for filtering the
4127        /// string.
4128        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4129        #[repr(i32)]
4130        pub enum StringFilterPolicy {
4131            SfpUnspecified = 0,
4132            /// Tries to match the string field against |regex_pattern|. If it
4133            /// matches, all matching groups are "redacted" (i.e. replaced with a
4134            /// constant string) and filtering is terminated (i.e. no further rules are
4135            /// checked). If it doesn't match, the string is left unchanged and the
4136            /// next rule in chain is considered.
4137            SfpMatchRedactGroups = 1,
4138            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
4139            /// checking the regex. Specifically, it tries to parse the string field as
4140            /// an atrace tracepoint and checks if the post-tgid field starts with
4141            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
4142            /// this check succeeds.
4143            SfpAtraceMatchRedactGroups = 2,
4144            /// Tries to match the string field against |regex_pattern|. If it
4145            /// matches, filtering is terminated (i.e. no further rules are checked).
4146            /// If it doesn't match, the string is left unchanged and the next rule in
4147            /// chain is considered.
4148            SfpMatchBreak = 3,
4149            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
4150            /// the regex. Specifically, it tries to parse the string field as an
4151            /// atrace tracepoint and checks if the post-tgid field starts with
4152            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
4153            /// this check succeeds.
4154            SfpAtraceMatchBreak = 4,
4155            /// Tries to repeatedly search (i.e. find substrings of) the string field
4156            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
4157            /// replaced with a constant string). Once there are no further matches,
4158            /// filtering is terminated (i.e. no further rules are checked).
4159            ///
4160            /// Note that this is policy is a "search" policy not a "match" policy
4161            /// unlike the above policies:
4162            ///   * Match policies require matching the full string i.e. there is an
4163            ///     implicit leading `^` and trailing `$`.
4164            ///   * Search policies perform repeated partial matching of the string
4165            ///     e.g.
4166            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
4167            ///       - Pattern: `foo=(\d+)`
4168            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
4169            ///     where P6O is the redaction string
4170            ///
4171            /// All of this is only performed after some pre-work where we try to parse
4172            /// the string field as an atrace tracepoint and check if the post-tgid
4173            /// field starts with |atrace_post_tgid_starts_with|.
4174            ///
4175            /// If there are no partial matches, the string is left unchanged and the
4176            /// next rule in chain is considered.
4177            SfpAtraceRepeatedSearchRedactGroups = 5,
4178        }
4179        impl StringFilterPolicy {
4180            /// String value of the enum field names used in the ProtoBuf definition.
4181            ///
4182            /// The values are not transformed in any way and thus are considered stable
4183            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4184            pub fn as_str_name(&self) -> &'static str {
4185                match self {
4186                    StringFilterPolicy::SfpUnspecified => "SFP_UNSPECIFIED",
4187                    StringFilterPolicy::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
4188                    StringFilterPolicy::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
4189                    StringFilterPolicy::SfpMatchBreak => "SFP_MATCH_BREAK",
4190                    StringFilterPolicy::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
4191                    StringFilterPolicy::SfpAtraceRepeatedSearchRedactGroups => "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS",
4192                }
4193            }
4194        }
4195    }
4196    /// Android-only. Not for general use. If set, reports the trace to the
4197    /// Android framework. This field is read by perfetto_cmd, rather than the
4198    /// tracing service. This field must be set when passing the --upload flag to
4199    /// perfetto_cmd.
4200    ///
4201    /// In this message, either:
4202    ///   * |reporter_service_package| and |reporter_service_class| must be set.
4203    ///   * |skip_reporting| must be explicitly set to true.
4204    #[derive(Clone, PartialEq, ::prost::Message)]
4205    pub struct AndroidReportConfig {
4206        #[prost(string, optional, tag="1")]
4207        pub reporter_service_package: ::core::option::Option<::prost::alloc::string::String>,
4208        #[prost(string, optional, tag="2")]
4209        pub reporter_service_class: ::core::option::Option<::prost::alloc::string::String>,
4210        /// If true, then skips reporting the trace to Android framework.
4211        ///
4212        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
4213        /// or when we explicitly don't want to report traces to the framework even
4214        /// when they usually would (e.g. configs deployed using statsd but only
4215        /// used for inclusion in bugreports using |bugreport_score|).
4216        ///
4217        /// The motivation for having this flag, instead of just not setting
4218        /// |framework_report_config|, is prevent accidents where
4219        /// |framework_report_config| is omitted by mistake.
4220        #[prost(bool, optional, tag="3")]
4221        pub skip_report: ::core::option::Option<bool>,
4222        /// If true, will direct the Android framework to read the data in trace
4223        /// file and pass it to the reporter class over a pipe instead of passing
4224        /// the file descriptor directly.
4225        ///
4226        /// This flag is needed because the Android test framework does not
4227        /// currently support priv-app helper apps (in terms of SELinux) and we
4228        /// really don't want to add an allow rule for untrusted_app to receive
4229        /// trace fds.
4230        ///
4231        /// Because of this, we instead will direct the framework to create a new
4232        /// pipe and pass this to the reporter process instead. As the pipe is
4233        /// created by the framework, we won't have any problems with SELinux
4234        /// (system_server is already allowed to pass pipe fds, even
4235        /// to untrusted apps).
4236        ///
4237        /// As the name suggests this option *MUST* only be used for testing.
4238        /// Note that the framework will reject (and drop) files which are too
4239        /// large both for simplicity and to be minimize the amount of data we
4240        /// pass to a non-priv app (note that the framework will still check
4241        /// manifest permissions even though SELinux permissions are worked around).
4242        #[prost(bool, optional, tag="4")]
4243        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
4244    }
4245    /// If set, delays the start of tracing by a random duration. The duration is
4246    /// chosen from a uniform distribution between the specified minimum and
4247    /// maximum.
4248    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
4249    /// not work if you communicate with traced directly over the consumer API.
4250    /// Introduced in Android T.
4251    #[derive(Clone, PartialEq, ::prost::Message)]
4252    pub struct CmdTraceStartDelay {
4253        #[prost(uint32, optional, tag="1")]
4254        pub min_delay_ms: ::core::option::Option<u32>,
4255        #[prost(uint32, optional, tag="2")]
4256        pub max_delay_ms: ::core::option::Option<u32>,
4257    }
4258    /// When non-empty, ensures that for a each semaphore named `name at most
4259    /// `max_other_session_count`` *other* sessions (whose value is taken of the
4260    /// minimum of all values specified by this config or any already-running
4261    /// session) can be be running.
4262    ///
4263    /// If a semaphore "acquisition" fails, EnableTracing will return an error
4264    /// and the tracing session will not be started (or elgible to start in
4265    /// the case of deferred sessions).
4266    ///
4267    /// This is easiest to explain with an example. Suppose the tracing service has
4268    /// the following active tracing sessions:
4269    ///    S1 = [{name=foo, max_other_session_count=2},
4270    ///          {name=bar, max_other_session_count=0}]
4271    ///    S2 = [{name=foo, max_other_session_count=1},
4272    ///          {name=baz, max_other_session_count=1}]
4273    ///
4274    /// Then, for a new session, the following would be the expected behaviour of
4275    /// EnableSession given the state of `session_semaphores`.
4276    ///    Q: session_semaphores = []
4277    ///    A: Allowed because it does not specify any semaphores. Will be allowed
4278    ///       no matter the state of any other tracing session.
4279    ///    Q: session_semaphores = [{name=baz, max_other_session_count=1}]
4280    ///    A: Allowed because both S2 and this config specify
4281    ///       max_other_session_count=1 for baz.
4282    ///    Q: session_semaphores = [{name=foo, max_other_session_count=3}]
4283    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
4284    ///       takes that slot.
4285    ///    Q: session_semaphores = [{name=bar, max_other_session_count=0}]
4286    ///    A: Denied because S1 takes the the slot specified by both S1 and
4287    ///       this config.
4288    ///
4289    /// Introduced in 24Q3 (Android V).
4290    #[derive(Clone, PartialEq, ::prost::Message)]
4291    pub struct SessionSemaphore {
4292        /// The name of the semaphore. Acts as a unique identifier across all
4293        /// tracing sessions (including the one being started).
4294        #[prost(string, optional, tag="1")]
4295        pub name: ::core::option::Option<::prost::alloc::string::String>,
4296        /// The maximum number of *other* sesssions which specify the same semaphore
4297        /// which can be active. The minimum of this value across all tracing
4298        /// sessions and the value specified by the config is used when deciding
4299        /// whether the tracing session can be started.
4300        #[prost(uint64, optional, tag="2")]
4301        pub max_other_session_count: ::core::option::Option<u64>,
4302    }
4303    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4304    #[repr(i32)]
4305    pub enum LockdownModeOperation {
4306        LockdownUnchanged = 0,
4307        LockdownClear = 1,
4308        LockdownSet = 2,
4309    }
4310    impl LockdownModeOperation {
4311        /// String value of the enum field names used in the ProtoBuf definition.
4312        ///
4313        /// The values are not transformed in any way and thus are considered stable
4314        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4315        pub fn as_str_name(&self) -> &'static str {
4316            match self {
4317                LockdownModeOperation::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
4318                LockdownModeOperation::LockdownClear => "LOCKDOWN_CLEAR",
4319                LockdownModeOperation::LockdownSet => "LOCKDOWN_SET",
4320            }
4321        }
4322    }
4323    /// Compress trace with the given method. Best effort.
4324    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4325    #[repr(i32)]
4326    pub enum CompressionType {
4327        Unspecified = 0,
4328        Deflate = 1,
4329    }
4330    impl CompressionType {
4331        /// String value of the enum field names used in the ProtoBuf definition.
4332        ///
4333        /// The values are not transformed in any way and thus are considered stable
4334        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4335        pub fn as_str_name(&self) -> &'static str {
4336            match self {
4337                CompressionType::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
4338                CompressionType::Deflate => "COMPRESSION_TYPE_DEFLATE",
4339            }
4340        }
4341    }
4342    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4343    #[repr(i32)]
4344    pub enum StatsdLogging {
4345        Unspecified = 0,
4346        Enabled = 1,
4347        Disabled = 2,
4348    }
4349    impl StatsdLogging {
4350        /// String value of the enum field names used in the ProtoBuf definition.
4351        ///
4352        /// The values are not transformed in any way and thus are considered stable
4353        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4354        pub fn as_str_name(&self) -> &'static str {
4355            match self {
4356                StatsdLogging::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
4357                StatsdLogging::Enabled => "STATSD_LOGGING_ENABLED",
4358                StatsdLogging::Disabled => "STATSD_LOGGING_DISABLED",
4359            }
4360        }
4361    }
4362}
4363// End of protos/perfetto/config/trace_config.proto
4364
4365// Begin of protos/perfetto/common/system_info.proto
4366
4367#[derive(Clone, PartialEq, ::prost::Message)]
4368pub struct Utsname {
4369    #[prost(string, optional, tag="1")]
4370    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
4371    #[prost(string, optional, tag="2")]
4372    pub version: ::core::option::Option<::prost::alloc::string::String>,
4373    #[prost(string, optional, tag="3")]
4374    pub release: ::core::option::Option<::prost::alloc::string::String>,
4375    #[prost(string, optional, tag="4")]
4376    pub machine: ::core::option::Option<::prost::alloc::string::String>,
4377}
4378/// Next id: 16
4379#[derive(Clone, PartialEq, ::prost::Message)]
4380pub struct SystemInfo {
4381    #[prost(message, optional, tag="1")]
4382    pub utsname: ::core::option::Option<Utsname>,
4383    #[prost(string, optional, tag="2")]
4384    pub android_build_fingerprint: ::core::option::Option<::prost::alloc::string::String>,
4385    /// The manufacturer of the product/hardware.
4386    /// Source : "ro.product.manufacturer"
4387    /// Introduced after Android W in Nov 2024 and is not supported on older
4388    /// versions.
4389    #[prost(string, optional, tag="14")]
4390    pub android_device_manufacturer: ::core::option::Option<::prost::alloc::string::String>,
4391    /// The SoC model from which trace is collected
4392    #[prost(string, optional, tag="9")]
4393    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4394    /// The guest SoC model from which trace is collected in case of VMs
4395    #[prost(string, optional, tag="13")]
4396    pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4397    /// The hardware reversion from android device
4398    #[prost(string, optional, tag="10")]
4399    pub android_hardware_revision: ::core::option::Option<::prost::alloc::string::String>,
4400    /// The storage component from android_device. This field has been introduced
4401    /// after Android W in Aug 2024 and is not supported on older versions.
4402    #[prost(string, optional, tag="11")]
4403    pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
4404    /// The RAM component information from android device. This field has been
4405    /// introduced after Android W in Aug 2024 and is not supported on older
4406    /// versions.
4407    #[prost(string, optional, tag="12")]
4408    pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
4409    /// The serial console information from android device.
4410    #[prost(string, optional, tag="15")]
4411    pub android_serial_console: ::core::option::Option<::prost::alloc::string::String>,
4412    /// The version of traced (the same returned by `traced --version`).
4413    /// This is a human readable string with and its format varies depending on
4414    /// the build system and the repo (standalone vs AOSP).
4415    /// This is intended for human debugging only.
4416    #[prost(string, optional, tag="4")]
4417    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
4418    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
4419    /// Introduced in Android T.
4420    #[prost(uint64, optional, tag="5")]
4421    pub android_sdk_version: ::core::option::Option<u64>,
4422    /// Kernel page size - sysconf(_SC_PAGESIZE).
4423    #[prost(uint32, optional, tag="6")]
4424    pub page_size: ::core::option::Option<u32>,
4425    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
4426    /// Might be different to the number of online cpus.
4427    /// Introduced in perfetto v44.
4428    #[prost(uint32, optional, tag="8")]
4429    pub num_cpus: ::core::option::Option<u32>,
4430    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
4431    /// Introduced in v38 / Android V.
4432    #[prost(int32, optional, tag="7")]
4433    pub timezone_off_mins: ::core::option::Option<i32>,
4434    /// Ticks per second - sysconf(_SC_CLK_TCK).
4435    /// Not serialised as of perfetto v44.
4436    #[prost(int64, optional, tag="3")]
4437    pub hz: ::core::option::Option<i64>,
4438}
4439// End of protos/perfetto/common/system_info.proto
4440
4441// Begin of protos/perfetto/common/trace_stats.proto
4442
4443/// Statistics for the internals of the tracing service.
4444///
4445/// Next id: 19.
4446#[derive(Clone, PartialEq, ::prost::Message)]
4447pub struct TraceStats {
4448    /// Stats for the TraceBuffer(s) of the current trace session.
4449    #[prost(message, repeated, tag="1")]
4450    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
4451    /// The thresholds of each the `writer_stats` histogram buckets. This is
4452    /// emitted only once as all WriterStats share the same bucket layout.
4453    /// This field has the same cardinality of the
4454    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
4455    /// (The -1 is because the last overflow bucket is not reported in the _def).
4456    /// An array of values [10, 100, 1000] in the _def array means that there are
4457    /// four buckets (3 + the implicit overflow bucket):
4458    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
4459    #[prost(int64, repeated, packed="false", tag="17")]
4460    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
4461    #[prost(message, repeated, tag="18")]
4462    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
4463    /// Num. producers connected (whether they are involved in the current tracing
4464    /// session or not).
4465    #[prost(uint32, optional, tag="2")]
4466    pub producers_connected: ::core::option::Option<u32>,
4467    /// Num. producers ever seen for all trace sessions since startup (it's a good
4468    /// proxy for inferring num. producers crashed / killed).
4469    #[prost(uint64, optional, tag="3")]
4470    pub producers_seen: ::core::option::Option<u64>,
4471    /// Num. data sources registered for all trace sessions.
4472    #[prost(uint32, optional, tag="4")]
4473    pub data_sources_registered: ::core::option::Option<u32>,
4474    /// Num. data sources ever seen for all trace sessions since startup.
4475    #[prost(uint64, optional, tag="5")]
4476    pub data_sources_seen: ::core::option::Option<u64>,
4477    /// Num. concurrently active tracing sessions.
4478    #[prost(uint32, optional, tag="6")]
4479    pub tracing_sessions: ::core::option::Option<u32>,
4480    /// Num. buffers for all tracing session (not just the current one). This will
4481    /// be >= buffer_stats.size(), because the latter is only about the current
4482    /// session.
4483    #[prost(uint32, optional, tag="7")]
4484    pub total_buffers: ::core::option::Option<u32>,
4485    // The fields below have been introduced in Android Q.
4486
4487    /// Num. chunks that were discarded by the service before attempting to commit
4488    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
4489    #[prost(uint64, optional, tag="8")]
4490    pub chunks_discarded: ::core::option::Option<u64>,
4491    /// Num. patches that were discarded by the service before attempting to apply
4492    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
4493    #[prost(uint64, optional, tag="9")]
4494    pub patches_discarded: ::core::option::Option<u64>,
4495    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
4496    /// is a bug in the producer.
4497    #[prost(uint64, optional, tag="10")]
4498    pub invalid_packets: ::core::option::Option<u64>,
4499    #[prost(message, optional, tag="11")]
4500    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
4501    /// Count of Flush() requests (either from the Consumer, or self-induced
4502    /// periodic flushes). The final Flush() is also included in the count.
4503    #[prost(uint64, optional, tag="12")]
4504    pub flushes_requested: ::core::option::Option<u64>,
4505    /// The count of the Flush() requests that were completed successfully.
4506    /// In a well behaving trace this should always be == `flush_requests`.
4507    #[prost(uint64, optional, tag="13")]
4508    pub flushes_succeeded: ::core::option::Option<u64>,
4509    /// The count of the Flush() requests that failed (in most timed out).
4510    /// In a well behaving trace this should always be == 0.
4511    #[prost(uint64, optional, tag="14")]
4512    pub flushes_failed: ::core::option::Option<u64>,
4513    #[prost(enumeration="trace_stats::FinalFlushOutcome", optional, tag="15")]
4514    pub final_flush_outcome: ::core::option::Option<i32>,
4515}
4516/// Nested message and enum types in `TraceStats`.
4517pub mod trace_stats {
4518    /// From TraceBuffer::Stats.
4519    ///
4520    /// Next id: 21.
4521    #[derive(Clone, PartialEq, ::prost::Message)]
4522    pub struct BufferStats {
4523        /// Size of the circular buffer in bytes.
4524        #[prost(uint64, optional, tag="12")]
4525        pub buffer_size: ::core::option::Option<u64>,
4526        /// Num. bytes written into the circular buffer, including chunk headers.
4527        #[prost(uint64, optional, tag="1")]
4528        pub bytes_written: ::core::option::Option<u64>,
4529        /// Num. bytes overwritten before they have been read (i.e. loss of data).
4530        #[prost(uint64, optional, tag="13")]
4531        pub bytes_overwritten: ::core::option::Option<u64>,
4532        /// Total size of chunks that were fully read from the circular buffer by the
4533        /// consumer. This may not be equal to |bytes_written| either in the middle
4534        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
4535        /// size of the chunks read from the buffer, including chunk headers, which
4536        /// will be different from the total size of packets returned to the
4537        /// consumer.
4538        ///
4539        /// The current utilization of the trace buffer (mid-tracing) can be obtained
4540        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
4541        /// adding the difference of |padding_bytes_written| and
4542        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
4543        /// Note that this represents the total size of buffered data in the buffer,
4544        /// yet this data may be spread non-contiguously through the buffer and may
4545        /// be overridden before the utilization reaches 100%.
4546        #[prost(uint64, optional, tag="14")]
4547        pub bytes_read: ::core::option::Option<u64>,
4548        /// Num. bytes that were allocated as padding between chunks in the circular
4549        /// buffer.
4550        #[prost(uint64, optional, tag="15")]
4551        pub padding_bytes_written: ::core::option::Option<u64>,
4552        /// Num. of padding bytes that were removed from the circular buffer when
4553        /// they were overwritten.
4554        ///
4555        /// The difference between |padding_bytes_written| and
4556        /// |padding_bytes_cleared| denotes the total size of padding currently
4557        /// present in the buffer.
4558        #[prost(uint64, optional, tag="16")]
4559        pub padding_bytes_cleared: ::core::option::Option<u64>,
4560        /// Num. chunks (!= packets) written into the buffer.
4561        #[prost(uint64, optional, tag="2")]
4562        pub chunks_written: ::core::option::Option<u64>,
4563        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
4564        /// the same chunk with additional packets appended to the end.
4565        #[prost(uint64, optional, tag="10")]
4566        pub chunks_rewritten: ::core::option::Option<u64>,
4567        /// Num. chunks overwritten before they have been read (i.e. loss of data).
4568        #[prost(uint64, optional, tag="3")]
4569        pub chunks_overwritten: ::core::option::Option<u64>,
4570        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
4571        /// is configured with FillPolicy == DISCARD.
4572        #[prost(uint64, optional, tag="18")]
4573        pub chunks_discarded: ::core::option::Option<u64>,
4574        /// Num. chunks (!= packets) that were fully read from the circular buffer by
4575        /// the consumer. This may not be equal to |chunks_written| either in the
4576        /// middle of tracing, or if |chunks_overwritten| is non-zero.
4577        #[prost(uint64, optional, tag="17")]
4578        pub chunks_read: ::core::option::Option<u64>,
4579        /// Num. chunks that were committed out of order.
4580        #[prost(uint64, optional, tag="11")]
4581        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
4582        /// Num. times the ring buffer wrapped around.
4583        #[prost(uint64, optional, tag="4")]
4584        pub write_wrap_count: ::core::option::Option<u64>,
4585        /// Num. out-of-band (OOB) patches that succeeded.
4586        #[prost(uint64, optional, tag="5")]
4587        pub patches_succeeded: ::core::option::Option<u64>,
4588        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
4589        #[prost(uint64, optional, tag="6")]
4590        pub patches_failed: ::core::option::Option<u64>,
4591        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
4592        /// successful packet read.
4593        #[prost(uint64, optional, tag="7")]
4594        pub readaheads_succeeded: ::core::option::Option<u64>,
4595        /// Num. readaheads aborted because of missing chunks in the sequence stream.
4596        /// Note that a small number > 0 is totally expected: occasionally, when
4597        /// issuing a read, the very last packet in a sequence might be incomplete
4598        /// (because the producer is still writing it while we read). The read will
4599        /// stop at that point, for that sequence, increasing this counter.
4600        #[prost(uint64, optional, tag="8")]
4601        pub readaheads_failed: ::core::option::Option<u64>,
4602        /// Num. of violations of the SharedMemoryABI found while writing or reading
4603        /// the buffer. This is an indication of either a bug in the producer(s) or
4604        /// malicious producer(s).
4605        #[prost(uint64, optional, tag="9")]
4606        pub abi_violations: ::core::option::Option<u64>,
4607        // The fields below have been introduced in Android R.
4608
4609        /// Num. of times the service detected packet loss on a trace writer
4610        /// sequence. This is usually caused by exhaustion of available chunks in the
4611        /// writer process's SMB. Note that this relies on the client's TraceWriter
4612        /// indicating this loss to the service -- packets lost for other reasons are
4613        /// not reflected in this stat.
4614        #[prost(uint64, optional, tag="19")]
4615        pub trace_writer_packet_loss: ::core::option::Option<u64>,
4616    }
4617    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
4618    /// visible as a unique sequence ID in the trace.
4619    #[derive(Clone, PartialEq, ::prost::Message)]
4620    pub struct WriterStats {
4621        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
4622        /// correlate the stats with the actual packet types.
4623        #[prost(uint64, optional, tag="1")]
4624        pub sequence_id: ::core::option::Option<u64>,
4625        /// The buffer index (0..N, as defined in the TraceConfig).
4626        #[prost(uint32, optional, tag="4")]
4627        pub buffer: ::core::option::Option<u32>,
4628        /// These two arrays have the same cardinality and match the cardinality of
4629        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
4630        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
4631        /// for each bucket.
4632        #[prost(uint64, repeated, tag="2")]
4633        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
4634        #[prost(int64, repeated, tag="3")]
4635        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
4636    }
4637    /// This is set only when the TraceConfig specifies a TraceFilter.
4638    #[derive(Clone, PartialEq, ::prost::Message)]
4639    pub struct FilterStats {
4640        #[prost(uint64, optional, tag="1")]
4641        pub input_packets: ::core::option::Option<u64>,
4642        #[prost(uint64, optional, tag="2")]
4643        pub input_bytes: ::core::option::Option<u64>,
4644        #[prost(uint64, optional, tag="3")]
4645        pub output_bytes: ::core::option::Option<u64>,
4646        #[prost(uint64, optional, tag="4")]
4647        pub errors: ::core::option::Option<u64>,
4648        #[prost(uint64, optional, tag="5")]
4649        pub time_taken_ns: ::core::option::Option<u64>,
4650        /// The number of bytes discarded by the filter (i.e. output - input).
4651        /// The array has one entry for each buffer defined in the config (unless no
4652        /// packets for that buffer were seen and hence filtered).
4653        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
4654        /// (output_bytes - input_bytes) because the filter might also discard
4655        /// server-generated synthetic packets, that have no buffer index.
4656        #[prost(uint64, repeated, packed="false", tag="20")]
4657        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
4658    }
4659    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4660    #[repr(i32)]
4661    pub enum FinalFlushOutcome {
4662        FinalFlushUnspecified = 0,
4663        FinalFlushSucceeded = 1,
4664        FinalFlushFailed = 2,
4665    }
4666    impl FinalFlushOutcome {
4667        /// String value of the enum field names used in the ProtoBuf definition.
4668        ///
4669        /// The values are not transformed in any way and thus are considered stable
4670        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4671        pub fn as_str_name(&self) -> &'static str {
4672            match self {
4673                FinalFlushOutcome::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
4674                FinalFlushOutcome::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
4675                FinalFlushOutcome::FinalFlushFailed => "FINAL_FLUSH_FAILED",
4676            }
4677        }
4678    }
4679}
4680// End of protos/perfetto/common/trace_stats.proto
4681
4682// Begin of protos/perfetto/trace/android/android_game_intervention_list.proto
4683
4684#[derive(Clone, PartialEq, ::prost::Message)]
4685pub struct AndroidGameInterventionList {
4686    #[prost(message, repeated, tag="1")]
4687    pub game_packages: ::prost::alloc::vec::Vec<android_game_intervention_list::GamePackageInfo>,
4688    /// True when at least one error occurred when parsing
4689    /// game_mode_intervention.list
4690    #[prost(bool, optional, tag="2")]
4691    pub parse_error: ::core::option::Option<bool>,
4692    /// Failed to open / read game_mode_intervention.list
4693    #[prost(bool, optional, tag="3")]
4694    pub read_error: ::core::option::Option<bool>,
4695}
4696/// Nested message and enum types in `AndroidGameInterventionList`.
4697pub mod android_game_intervention_list {
4698    #[derive(Clone, PartialEq, ::prost::Message)]
4699    pub struct GameModeInfo {
4700        #[prost(uint32, optional, tag="1")]
4701        pub mode: ::core::option::Option<u32>,
4702        #[prost(bool, optional, tag="2")]
4703        pub use_angle: ::core::option::Option<bool>,
4704        #[prost(float, optional, tag="3")]
4705        pub resolution_downscale: ::core::option::Option<f32>,
4706        #[prost(float, optional, tag="4")]
4707        pub fps: ::core::option::Option<f32>,
4708    }
4709    #[derive(Clone, PartialEq, ::prost::Message)]
4710    pub struct GamePackageInfo {
4711        #[prost(string, optional, tag="1")]
4712        pub name: ::core::option::Option<::prost::alloc::string::String>,
4713        #[prost(uint64, optional, tag="2")]
4714        pub uid: ::core::option::Option<u64>,
4715        #[prost(uint32, optional, tag="3")]
4716        pub current_mode: ::core::option::Option<u32>,
4717        #[prost(message, repeated, tag="4")]
4718        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
4719    }
4720}
4721// End of protos/perfetto/trace/android/android_game_intervention_list.proto
4722
4723// Begin of protos/perfetto/trace/android/android_log.proto
4724
4725#[derive(Clone, PartialEq, ::prost::Message)]
4726pub struct AndroidLogPacket {
4727    #[prost(message, repeated, tag="1")]
4728    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
4729    #[prost(message, optional, tag="2")]
4730    pub stats: ::core::option::Option<android_log_packet::Stats>,
4731}
4732/// Nested message and enum types in `AndroidLogPacket`.
4733pub mod android_log_packet {
4734    #[derive(Clone, PartialEq, ::prost::Message)]
4735    pub struct LogEvent {
4736        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
4737        #[prost(enumeration="super::AndroidLogId", optional, tag="1")]
4738        pub log_id: ::core::option::Option<i32>,
4739        /// PID (TGID), TID and UID of the task that emitted the event.
4740        #[prost(int32, optional, tag="2")]
4741        pub pid: ::core::option::Option<i32>,
4742        #[prost(int32, optional, tag="3")]
4743        pub tid: ::core::option::Option<i32>,
4744        #[prost(int32, optional, tag="4")]
4745        pub uid: ::core::option::Option<i32>,
4746        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
4747        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
4748        /// processor will take care of realigning clocks using the ClockSnapshot(s).
4749        #[prost(uint64, optional, tag="5")]
4750        pub timestamp: ::core::option::Option<u64>,
4751        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
4752        /// the second column of /system/etc/event-log-tags. For all other events,
4753        /// |tag| is the app-specified argument passed to __android_log_write().
4754        #[prost(string, optional, tag="6")]
4755        pub tag: ::core::option::Option<::prost::alloc::string::String>,
4756        /// Empty when log_id == LID_EVENTS.
4757        #[prost(enumeration="super::AndroidLogPriority", optional, tag="7")]
4758        pub prio: ::core::option::Option<i32>,
4759        /// Empty when log_id == LID_EVENTS.
4760        #[prost(string, optional, tag="8")]
4761        pub message: ::core::option::Option<::prost::alloc::string::String>,
4762        /// Only populated when log_id == LID_EVENTS.
4763        #[prost(message, repeated, tag="9")]
4764        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
4765    }
4766    /// Nested message and enum types in `LogEvent`.
4767    pub mod log_event {
4768        #[derive(Clone, PartialEq, ::prost::Message)]
4769        pub struct Arg {
4770            #[prost(string, optional, tag="1")]
4771            pub name: ::core::option::Option<::prost::alloc::string::String>,
4772            #[prost(oneof="arg::Value", tags="2, 3, 4")]
4773            pub value: ::core::option::Option<arg::Value>,
4774        }
4775        /// Nested message and enum types in `Arg`.
4776        pub mod arg {
4777            #[derive(Clone, PartialEq, ::prost::Oneof)]
4778            pub enum Value {
4779                #[prost(int64, tag="2")]
4780                IntValue(i64),
4781                #[prost(float, tag="3")]
4782                FloatValue(f32),
4783                #[prost(string, tag="4")]
4784                StringValue(::prost::alloc::string::String),
4785            }
4786        }
4787    }
4788    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
4789    /// absolute counters since the beginning of the lifetime of the tracing
4790    /// session and NOT relative to the previous Stats snapshot).
4791    #[derive(Clone, PartialEq, ::prost::Message)]
4792    pub struct Stats {
4793        /// Total number of log events seen, including errors and skipped entries
4794        /// (num of events stored in the trace = total - failed - skipped).
4795        #[prost(uint64, optional, tag="1")]
4796        pub num_total: ::core::option::Option<u64>,
4797        /// Parser failures.
4798        #[prost(uint64, optional, tag="2")]
4799        pub num_failed: ::core::option::Option<u64>,
4800        /// Messages skipped due to filters.
4801        #[prost(uint64, optional, tag="3")]
4802        pub num_skipped: ::core::option::Option<u64>,
4803    }
4804}
4805// End of protos/perfetto/trace/android/android_log.proto
4806
4807// Begin of protos/perfetto/trace/android/android_system_property.proto
4808
4809#[derive(Clone, PartialEq, ::prost::Message)]
4810pub struct AndroidSystemProperty {
4811    #[prost(message, repeated, tag="1")]
4812    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
4813}
4814/// Nested message and enum types in `AndroidSystemProperty`.
4815pub mod android_system_property {
4816    #[derive(Clone, PartialEq, ::prost::Message)]
4817    pub struct PropertyValue {
4818        #[prost(string, optional, tag="1")]
4819        pub name: ::core::option::Option<::prost::alloc::string::String>,
4820        #[prost(string, optional, tag="2")]
4821        pub value: ::core::option::Option<::prost::alloc::string::String>,
4822    }
4823}
4824// End of protos/perfetto/trace/android/android_system_property.proto
4825
4826// Begin of protos/perfetto/trace/android/app_wakelock_data.proto
4827
4828/// AppWakelockInfo describes the time-independent properties of a wakelock, such
4829/// as the owning package or wakelock tag. This is interned to reduce trace size.
4830/// Event bundles refer to interned wakelock info by the iid.
4831#[derive(Clone, PartialEq, ::prost::Message)]
4832pub struct AppWakelockInfo {
4833    /// The interned id of this wakelock.
4834    #[prost(int32, optional, tag="1")]
4835    pub iid: ::core::option::Option<i32>,
4836    /// The app-provided tag of the wakelock.
4837    #[prost(string, optional, tag="2")]
4838    pub tag: ::core::option::Option<::prost::alloc::string::String>,
4839    /// The wakelock flags (such as partial vs full).
4840    #[prost(int32, optional, tag="3")]
4841    pub flags: ::core::option::Option<i32>,
4842    /// The pid that created the wakelock.
4843    #[prost(int32, optional, tag="4")]
4844    pub owner_pid: ::core::option::Option<i32>,
4845    /// The uid that created the wakelock.
4846    #[prost(int32, optional, tag="5")]
4847    pub owner_uid: ::core::option::Option<i32>,
4848    /// The uid of the work source root (if present).
4849    #[prost(int32, optional, tag="6")]
4850    pub work_uid: ::core::option::Option<i32>,
4851}
4852/// AppWakelockBundle describes one or more wakelock events. Events are written
4853/// in two paired array, such that the details for event i are in intern_id\[i\]
4854/// and encoded_ts\[i\].
4855#[derive(Clone, PartialEq, ::prost::Message)]
4856pub struct AppWakelockBundle {
4857    /// The interned id for the WakelockInfo of the event.
4858    #[prost(uint32, repeated, tag="1")]
4859    pub intern_id: ::prost::alloc::vec::Vec<u32>,
4860    /// The timestamp and event type, encoded as:
4861    ///    (event_time - packet_time) << 1 | (acquired ? 1 : 0)
4862    #[prost(uint64, repeated, tag="2")]
4863    pub encoded_ts: ::prost::alloc::vec::Vec<u64>,
4864    /// For writing single packets (mainly by tokenization).
4865    #[prost(message, optional, tag="3")]
4866    pub info: ::core::option::Option<AppWakelockInfo>,
4867    #[prost(bool, optional, tag="4")]
4868    pub acquired: ::core::option::Option<bool>,
4869}
4870/// Trace event for bluetooth
4871#[derive(Clone, PartialEq, ::prost::Message)]
4872pub struct BluetoothTraceEvent {
4873    /// Packet type and direction
4874    #[prost(enumeration="BluetoothTracePacketType", optional, tag="1")]
4875    pub packet_type: ::core::option::Option<i32>,
4876    /// Total count of the packets collected during the collection interval
4877    #[prost(uint32, optional, tag="2")]
4878    pub count: ::core::option::Option<u32>,
4879    /// Total cumulative length of the packets collected during the collection
4880    /// interval
4881    #[prost(uint32, optional, tag="3")]
4882    pub length: ::core::option::Option<u32>,
4883    /// The collection interval in nanoseconds. This is the duration between the
4884    /// first and last packets collected.
4885    #[prost(uint32, optional, tag="4")]
4886    pub duration: ::core::option::Option<u32>,
4887    /// In case of CMD type, further breakdown of the type of command
4888    #[prost(uint32, optional, tag="5")]
4889    pub op_code: ::core::option::Option<u32>,
4890    /// In the case of EVT type, further breakdown of the type of event
4891    #[prost(uint32, optional, tag="6")]
4892    pub event_code: ::core::option::Option<u32>,
4893    /// When applicable for EVT type, further breakdown of event type into specific
4894    /// subevent
4895    #[prost(uint32, optional, tag="7")]
4896    pub subevent_code: ::core::option::Option<u32>,
4897    /// Associated handle for the bluetooth packet
4898    #[prost(uint32, optional, tag="8")]
4899    pub connection_handle: ::core::option::Option<u32>,
4900}
4901// End of protos/perfetto/trace/android/bluetooth_trace.proto
4902
4903// Begin of protos/perfetto/trace/android/camera_event.proto
4904
4905/// A profiling event corresponding to a single camera frame. This message
4906/// collects important details and timestamps involved in producing a single
4907/// camera frame.
4908/// Next ID: 17
4909#[derive(Clone, PartialEq, ::prost::Message)]
4910pub struct AndroidCameraFrameEvent {
4911    /// Identifier for the CameraCaptureSession this frame originates from. See:
4912    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
4913    #[prost(uint64, optional, tag="1")]
4914    pub session_id: ::core::option::Option<u64>,
4915    /// Identifier for the camera sensor that is the source of this frame. This may
4916    /// be either a physical or logical camera (up to vendor interpretation).
4917    #[prost(uint32, optional, tag="2")]
4918    pub camera_id: ::core::option::Option<u32>,
4919    /// The frame number identifying this frame on this camera.
4920    #[prost(int64, optional, tag="3")]
4921    pub frame_number: ::core::option::Option<i64>,
4922    /// Identifier for the CaptureRequest. See:
4923    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest>
4924    ///
4925    /// If multiple cameras are streaming simultaneously, the request_id may be
4926    /// used to identify which frames were captured in service of the same request.
4927    #[prost(int64, optional, tag="4")]
4928    pub request_id: ::core::option::Option<i64>,
4929    /// The CLOCK_BOOTTIME timestamp at which the camera framework request is
4930    /// received by the camera HAL pipeline. Note that this request may wait for
4931    /// some time before processing actually begins. See also
4932    /// request_processing_started_ns.
4933    #[prost(int64, optional, tag="5")]
4934    pub request_received_ns: ::core::option::Option<i64>,
4935    /// The CLOCK_BOOTTIME timestamp at which the framework request is accepted for
4936    /// processing by the camera HAL pipeline. This is the time at which the
4937    /// pipeline actually begins to work on the request.
4938    #[prost(int64, optional, tag="6")]
4939    pub request_processing_started_ns: ::core::option::Option<i64>,
4940    /// The CLOCK_BOOTTIME timestamp at which the sensor begins its exposure.
4941    #[prost(int64, optional, tag="7")]
4942    pub start_of_exposure_ns: ::core::option::Option<i64>,
4943    /// The CLOCK_BOOTTIME timestamp corresponding to the sensor start of frame
4944    /// event.
4945    #[prost(int64, optional, tag="8")]
4946    pub start_of_frame_ns: ::core::option::Option<i64>,
4947    /// The CLOCK_BOOTTIME timestamp at which the camera HAL has sent all responses
4948    /// for the frame.
4949    #[prost(int64, optional, tag="9")]
4950    pub responses_all_sent_ns: ::core::option::Option<i64>,
4951    #[prost(enumeration="android_camera_frame_event::CaptureResultStatus", optional, tag="10")]
4952    pub capture_result_status: ::core::option::Option<i32>,
4953    /// The number of sensor frames that were skipped between this frame and the
4954    /// previous frame. Under normal operation, this should be zero. Any number
4955    /// greater than zero indicates dropped sensor frames.
4956    #[prost(int32, optional, tag="11")]
4957    pub skipped_sensor_frames: ::core::option::Option<i32>,
4958    /// The value of CONTROL_CAPTURE_INTENT. See:
4959    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#CONTROL_CAPTURE_INTENT>
4960    #[prost(int32, optional, tag="12")]
4961    pub capture_intent: ::core::option::Option<i32>,
4962    /// The number of streams in the capture request.
4963    #[prost(int32, optional, tag="13")]
4964    pub num_streams: ::core::option::Option<i32>,
4965    #[prost(message, repeated, tag="14")]
4966    pub node_processing_details: ::prost::alloc::vec::Vec<android_camera_frame_event::CameraNodeProcessingDetails>,
4967    /// These fields capture vendor-specific additions to this proto message. In
4968    /// practice `vendor_data` typically contains a serialized message of the
4969    /// vendor's design, and `vendor_data_version` is incremented each time there
4970    /// is a backwards incompatible change made to the message.
4971    #[prost(int32, optional, tag="15")]
4972    pub vendor_data_version: ::core::option::Option<i32>,
4973    #[prost(bytes="vec", optional, tag="16")]
4974    pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4975}
4976/// Nested message and enum types in `AndroidCameraFrameEvent`.
4977pub mod android_camera_frame_event {
4978    /// A profiling event corresponding to a single node processing within the
4979    /// camera pipeline. Intuitively this corresponds to a single stage of
4980    /// processing to produce a camera frame. Next ID: 6
4981    #[derive(Clone, PartialEq, ::prost::Message)]
4982    pub struct CameraNodeProcessingDetails {
4983        #[prost(int64, optional, tag="1")]
4984        pub node_id: ::core::option::Option<i64>,
4985        /// The timestamp at which node processing begins to run.
4986        #[prost(int64, optional, tag="2")]
4987        pub start_processing_ns: ::core::option::Option<i64>,
4988        /// The timestamp at which node processing finishes running.
4989        #[prost(int64, optional, tag="3")]
4990        pub end_processing_ns: ::core::option::Option<i64>,
4991        /// The delay between inputs becoming ready and the node actually beginning
4992        /// to run.
4993        #[prost(int64, optional, tag="4")]
4994        pub scheduling_latency_ns: ::core::option::Option<i64>,
4995    }
4996    /// The error status, if any, reported to the camera framework. Any status
4997    /// other than STATUS_OK indicates a dropped frame.
4998    /// Next Enum: 6
4999    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5000    #[repr(i32)]
5001    pub enum CaptureResultStatus {
5002        StatusUnspecified = 0,
5003        StatusOk = 1,
5004        /// Early metadata was returned to the camera framework with an error.
5005        StatusEarlyMetadataError = 2,
5006        /// Final metadata was returned to the camera framework with an error.
5007        StatusFinalMetadataError = 3,
5008        /// One or more buffers were returned to the camera framework with an error.
5009        StatusBufferError = 4,
5010        /// The frame was dropped as a result of a flush operation.
5011        StatusFlushError = 5,
5012    }
5013    impl CaptureResultStatus {
5014        /// String value of the enum field names used in the ProtoBuf definition.
5015        ///
5016        /// The values are not transformed in any way and thus are considered stable
5017        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5018        pub fn as_str_name(&self) -> &'static str {
5019            match self {
5020                CaptureResultStatus::StatusUnspecified => "STATUS_UNSPECIFIED",
5021                CaptureResultStatus::StatusOk => "STATUS_OK",
5022                CaptureResultStatus::StatusEarlyMetadataError => "STATUS_EARLY_METADATA_ERROR",
5023                CaptureResultStatus::StatusFinalMetadataError => "STATUS_FINAL_METADATA_ERROR",
5024                CaptureResultStatus::StatusBufferError => "STATUS_BUFFER_ERROR",
5025                CaptureResultStatus::StatusFlushError => "STATUS_FLUSH_ERROR",
5026            }
5027        }
5028    }
5029}
5030/// A profiling event that may be emitted periodically (i.e., at a slower rate
5031/// than `AndroidCameraFrameEvent`s) to record fixed and aggregated camera
5032/// session-specific values.
5033#[derive(Clone, PartialEq, ::prost::Message)]
5034pub struct AndroidCameraSessionStats {
5035    /// Identifier for the CameraCaptureSession this frame originates from. See:
5036    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
5037    #[prost(uint64, optional, tag="1")]
5038    pub session_id: ::core::option::Option<u64>,
5039    #[prost(message, optional, tag="2")]
5040    pub graph: ::core::option::Option<android_camera_session_stats::CameraGraph>,
5041}
5042/// Nested message and enum types in `AndroidCameraSessionStats`.
5043pub mod android_camera_session_stats {
5044    /// Although vendor implementations may vary, camera pipeline processing is
5045    /// typically arranged into a directed graph-like structure. This message is
5046    /// used to record that graph.
5047    #[derive(Clone, PartialEq, ::prost::Message)]
5048    pub struct CameraGraph {
5049        #[prost(message, repeated, tag="1")]
5050        pub nodes: ::prost::alloc::vec::Vec<camera_graph::CameraNode>,
5051        #[prost(message, repeated, tag="2")]
5052        pub edges: ::prost::alloc::vec::Vec<camera_graph::CameraEdge>,
5053    }
5054    /// Nested message and enum types in `CameraGraph`.
5055    pub mod camera_graph {
5056        #[derive(Clone, PartialEq, ::prost::Message)]
5057        pub struct CameraNode {
5058            #[prost(int64, optional, tag="1")]
5059            pub node_id: ::core::option::Option<i64>,
5060            /// A list of inputs consumed by this node.
5061            #[prost(int64, repeated, packed="false", tag="2")]
5062            pub input_ids: ::prost::alloc::vec::Vec<i64>,
5063            /// A list of outputs produced by this node.
5064            #[prost(int64, repeated, packed="false", tag="3")]
5065            pub output_ids: ::prost::alloc::vec::Vec<i64>,
5066            /// These fields capture vendor-specific additions to this proto message.
5067            /// In practice `vendor_data` typically contains a serialized message of
5068            /// the vendor's design, and `vendor_data_version` is incremented each time
5069            /// there is a backwards incompatible change made to the message.
5070            #[prost(int32, optional, tag="4")]
5071            pub vendor_data_version: ::core::option::Option<i32>,
5072            #[prost(bytes="vec", optional, tag="5")]
5073            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5074        }
5075        /// An adjacency list describing connections between CameraNodes, mapping
5076        /// nodes and their outputs to other nodes that consume them as inputs.
5077        #[derive(Clone, PartialEq, ::prost::Message)]
5078        pub struct CameraEdge {
5079            /// The pair of IDs identifying the node and output connected by this edge.
5080            #[prost(int64, optional, tag="1")]
5081            pub output_node_id: ::core::option::Option<i64>,
5082            #[prost(int64, optional, tag="2")]
5083            pub output_id: ::core::option::Option<i64>,
5084            /// The pair of IDs identifying the node and input connected by this edge.
5085            #[prost(int64, optional, tag="3")]
5086            pub input_node_id: ::core::option::Option<i64>,
5087            #[prost(int64, optional, tag="4")]
5088            pub input_id: ::core::option::Option<i64>,
5089            /// These fields capture vendor-specific additions to this proto message.
5090            /// In practice `vendor_data` typically contains a serialized message of
5091            /// the vendor's design, and `vendor_data_version` is incremented each time
5092            /// there is a backwards incompatible change made to the message.
5093            #[prost(int32, optional, tag="5")]
5094            pub vendor_data_version: ::core::option::Option<i32>,
5095            #[prost(bytes="vec", optional, tag="6")]
5096            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5097        }
5098    }
5099}
5100// End of protos/perfetto/trace/android/camera_event.proto
5101
5102// Begin of protos/perfetto/trace/android/cpu_per_uid_data.proto
5103
5104#[derive(Clone, PartialEq, ::prost::Message)]
5105pub struct CpuPerUidData {
5106    /// Number of clusters in the device. This will only be filled in the first
5107    /// packet in a sequence.
5108    #[prost(uint32, optional, tag="1")]
5109    pub cluster_count: ::core::option::Option<u32>,
5110    /// The UIDs for which we have data in this packet.
5111    #[prost(uint32, repeated, tag="2")]
5112    pub uid: ::prost::alloc::vec::Vec<u32>,
5113    /// List of times for {UID, cluster} tuples. This will be cluster_count
5114    /// times as long as the UID list.
5115    ///
5116    /// Ordered like:
5117    /// [{UID 0, cluster 0}, {UID 0, cluster 1}, {UID 0, cluster 2},
5118    ///   {UID 1, cluster 0}, {UID 1, cluster 1}, {UID 1, cluster 2}, ...]
5119    ///
5120    /// Each value is an absolute count for the first packet in a sequence, and a
5121    /// delta thereafter. UIDs for which all clusters have a zero delta are
5122    /// omitted; a single non-zero value for any cluster for a UID will cause
5123    /// values for all clusters to be recorded.
5124    #[prost(uint64, repeated, tag="3")]
5125    pub total_time_ms: ::prost::alloc::vec::Vec<u64>,
5126}
5127// End of protos/perfetto/trace/android/cpu_per_uid_data.proto
5128
5129// Begin of protos/perfetto/trace/android/frame_timeline_event.proto
5130
5131/// Generated by SurfaceFlinger's FrameTimeline (go/adaptive-scheduling-fr).
5132/// Used in comparing the expected timeline of a frame to the actual timeline.
5133/// Key terms:
5134///     1) DisplayFrame - represents SurfaceFlinger's work on a frame(composited)
5135///     2) SurfaceFrame - represents App's work on its frame
5136///     3) Timeline = start to end of a component's(app/SF) work on a frame.
5137/// SurfaceFlinger composites frames from many apps together, so
5138///     One DisplayFrame can map to N SurfaceFrame(s)
5139/// This relationship can be reconstructed by using
5140///     DisplayFrame.token = SurfaceFrame.display_frame_token
5141#[derive(Clone, PartialEq, ::prost::Message)]
5142pub struct FrameTimelineEvent {
5143    #[prost(oneof="frame_timeline_event::Event", tags="1, 2, 3, 4, 5")]
5144    pub event: ::core::option::Option<frame_timeline_event::Event>,
5145}
5146/// Nested message and enum types in `FrameTimelineEvent`.
5147pub mod frame_timeline_event {
5148    /// Indicates the start of expected timeline slice for SurfaceFrames.
5149    #[derive(Clone, PartialEq, ::prost::Message)]
5150    pub struct ExpectedSurfaceFrameStart {
5151        /// Cookie used to correlate between the start and end messages of the same
5152        /// frame. Since all values except the ts are same for start and end, cookie
5153        /// helps in preventing redundant data transmission.
5154        /// The same cookie is used only by start and end messages of a single frame
5155        /// and is otherwise unique.
5156        #[prost(int64, optional, tag="1")]
5157        pub cookie: ::core::option::Option<i64>,
5158        /// Token received by the app for its work. Can be shared between multiple
5159        /// layers of the same app (example: pip mode).
5160        #[prost(int64, optional, tag="2")]
5161        pub token: ::core::option::Option<i64>,
5162        /// The corresponding DisplayFrame token is required to link the App's work
5163        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
5164        /// DisplayFrame.
5165        /// this.display_frame_token = DisplayFrame.token
5166        #[prost(int64, optional, tag="3")]
5167        pub display_frame_token: ::core::option::Option<i64>,
5168        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
5169        /// the respective process track group.
5170        #[prost(int32, optional, tag="4")]
5171        pub pid: ::core::option::Option<i32>,
5172        #[prost(string, optional, tag="5")]
5173        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5174    }
5175    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
5176    /// includes the jank information.
5177    #[derive(Clone, PartialEq, ::prost::Message)]
5178    pub struct ActualSurfaceFrameStart {
5179        /// Cookie used to correlate between the start and end messages of the same
5180        /// frame. Since all values except the ts are same for start and end, cookie
5181        /// helps in preventing redundant data transmission.
5182        /// The same cookie is used only by start and end messages of a single frame
5183        /// and is otherwise unique.
5184        #[prost(int64, optional, tag="1")]
5185        pub cookie: ::core::option::Option<i64>,
5186        /// Token received by the app for its work. Can be shared between multiple
5187        /// layers of the same app (example: pip mode).
5188        #[prost(int64, optional, tag="2")]
5189        pub token: ::core::option::Option<i64>,
5190        /// The corresponding DisplayFrame token is required to link the App's work
5191        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
5192        /// DisplayFrame.
5193        /// this.display_frame_token = DisplayFrame.token
5194        #[prost(int64, optional, tag="3")]
5195        pub display_frame_token: ::core::option::Option<i64>,
5196        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
5197        /// the respective process track group.
5198        #[prost(int32, optional, tag="4")]
5199        pub pid: ::core::option::Option<i32>,
5200        #[prost(string, optional, tag="5")]
5201        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5202        #[prost(enumeration="PresentType", optional, tag="6")]
5203        pub present_type: ::core::option::Option<i32>,
5204        #[prost(bool, optional, tag="7")]
5205        pub on_time_finish: ::core::option::Option<bool>,
5206        #[prost(bool, optional, tag="8")]
5207        pub gpu_composition: ::core::option::Option<bool>,
5208        /// A bitmask of JankType. More than one reason can be attributed to a janky
5209        /// frame.
5210        #[prost(int32, optional, tag="9")]
5211        pub jank_type: ::core::option::Option<i32>,
5212        #[prost(enumeration="PredictionType", optional, tag="10")]
5213        pub prediction_type: ::core::option::Option<i32>,
5214        #[prost(bool, optional, tag="11")]
5215        pub is_buffer: ::core::option::Option<bool>,
5216        #[prost(enumeration="JankSeverityType", optional, tag="12")]
5217        pub jank_severity_type: ::core::option::Option<i32>,
5218        #[prost(float, optional, tag="13")]
5219        pub present_delay_millis: ::core::option::Option<f32>,
5220        #[prost(float, optional, tag="14")]
5221        pub vsync_resynced_jitter_millis: ::core::option::Option<f32>,
5222        #[prost(float, optional, tag="15")]
5223        pub jank_severity_score: ::core::option::Option<f32>,
5224        /// experimental value for jank_type. Do not consider in jank analysis.
5225        #[prost(int32, optional, tag="16")]
5226        pub jank_type_experimental: ::core::option::Option<i32>,
5227        /// experimental value for present_type. Do not consider in jank analysis.
5228        #[prost(enumeration="PresentType", optional, tag="17")]
5229        pub present_type_experimental: ::core::option::Option<i32>,
5230        /// jank metadata information (for debug).
5231        #[prost(float, optional, tag="18")]
5232        pub jank_debug_metadata: ::core::option::Option<f32>,
5233    }
5234    /// Indicates the start of expected timeline slice for DisplayFrames.
5235    #[derive(Clone, PartialEq, ::prost::Message)]
5236    pub struct ExpectedDisplayFrameStart {
5237        /// Cookie used to correlate between the start and end messages of the same
5238        /// frame. Since all values except the ts are same for start and end, cookie
5239        /// helps in preventing redundant data transmission.
5240        /// The same cookie is used only by start and end messages of a single frame
5241        /// and is otherwise unique.
5242        #[prost(int64, optional, tag="1")]
5243        pub cookie: ::core::option::Option<i64>,
5244        /// Token received by SurfaceFlinger for its work
5245        /// this.token = SurfaceFrame.display_frame_token
5246        #[prost(int64, optional, tag="2")]
5247        pub token: ::core::option::Option<i64>,
5248        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
5249        /// inside the SurfaceFlinger process group.
5250        #[prost(int32, optional, tag="3")]
5251        pub pid: ::core::option::Option<i32>,
5252    }
5253    /// Indicates the start of actual timeline slice for DisplayFrames. Also
5254    /// includes the jank information.
5255    #[derive(Clone, PartialEq, ::prost::Message)]
5256    pub struct ActualDisplayFrameStart {
5257        /// Cookie used to correlate between the start and end messages of the same
5258        /// frame. Since all values except the ts are same for start and end, cookie
5259        /// helps in preventing redundant data transmission.
5260        /// The same cookie is used only by start and end messages of a single frame
5261        /// and is otherwise unique.
5262        #[prost(int64, optional, tag="1")]
5263        pub cookie: ::core::option::Option<i64>,
5264        /// Token received by SurfaceFlinger for its work
5265        /// this.token = SurfaceFrame.display_frame_token
5266        #[prost(int64, optional, tag="2")]
5267        pub token: ::core::option::Option<i64>,
5268        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
5269        /// inside the SurfaceFlinger process group.
5270        #[prost(int32, optional, tag="3")]
5271        pub pid: ::core::option::Option<i32>,
5272        #[prost(enumeration="PresentType", optional, tag="4")]
5273        pub present_type: ::core::option::Option<i32>,
5274        #[prost(bool, optional, tag="5")]
5275        pub on_time_finish: ::core::option::Option<bool>,
5276        #[prost(bool, optional, tag="6")]
5277        pub gpu_composition: ::core::option::Option<bool>,
5278        /// A bitmask of JankType. More than one reason can be attributed to a janky
5279        /// frame.
5280        #[prost(int32, optional, tag="7")]
5281        pub jank_type: ::core::option::Option<i32>,
5282        #[prost(enumeration="PredictionType", optional, tag="8")]
5283        pub prediction_type: ::core::option::Option<i32>,
5284        #[prost(enumeration="JankSeverityType", optional, tag="9")]
5285        pub jank_severity_type: ::core::option::Option<i32>,
5286        #[prost(float, optional, tag="10")]
5287        pub present_delay_millis: ::core::option::Option<f32>,
5288        #[prost(float, optional, tag="11")]
5289        pub jank_severity_score: ::core::option::Option<f32>,
5290        /// experimental value for jank_type. Do not consider in jank analysis.
5291        #[prost(int32, optional, tag="12")]
5292        pub jank_type_experimental: ::core::option::Option<i32>,
5293        /// experimental value for present_type. Do not consider in jank analysis.
5294        #[prost(enumeration="PresentType", optional, tag="13")]
5295        pub present_type_experimental: ::core::option::Option<i32>,
5296        /// jank metadata information (for debug).
5297        #[prost(float, optional, tag="14")]
5298        pub jank_debug_metadata: ::core::option::Option<f32>,
5299    }
5300    /// FrameEnd just sends the cookie to indicate that the corresponding
5301    /// <display/surface>frame slice's end.
5302    #[derive(Clone, PartialEq, ::prost::Message)]
5303    pub struct FrameEnd {
5304        #[prost(int64, optional, tag="1")]
5305        pub cookie: ::core::option::Option<i64>,
5306    }
5307    /// Specifies the reason(s) most likely to have caused the jank.
5308    /// Used as a bitmask.
5309    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5310    #[repr(i32)]
5311    pub enum JankType {
5312        JankUnspecified = 0,
5313        JankNone = 1,
5314        JankSfScheduling = 2,
5315        JankPredictionError = 4,
5316        JankDisplayHal = 8,
5317        JankSfCpuDeadlineMissed = 16,
5318        JankSfGpuDeadlineMissed = 32,
5319        JankAppDeadlineMissed = 64,
5320        JankBufferStuffing = 128,
5321        JankUnknown = 256,
5322        JankSfStuffing = 512,
5323        JankDropped = 1024,
5324        JankNonAnimating = 2048,
5325        JankAppResyncedJitter = 4096,
5326        JankDisplayNotOn = 8192,
5327    }
5328    impl JankType {
5329        /// String value of the enum field names used in the ProtoBuf definition.
5330        ///
5331        /// The values are not transformed in any way and thus are considered stable
5332        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5333        pub fn as_str_name(&self) -> &'static str {
5334            match self {
5335                JankType::JankUnspecified => "JANK_UNSPECIFIED",
5336                JankType::JankNone => "JANK_NONE",
5337                JankType::JankSfScheduling => "JANK_SF_SCHEDULING",
5338                JankType::JankPredictionError => "JANK_PREDICTION_ERROR",
5339                JankType::JankDisplayHal => "JANK_DISPLAY_HAL",
5340                JankType::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
5341                JankType::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
5342                JankType::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
5343                JankType::JankBufferStuffing => "JANK_BUFFER_STUFFING",
5344                JankType::JankUnknown => "JANK_UNKNOWN",
5345                JankType::JankSfStuffing => "JANK_SF_STUFFING",
5346                JankType::JankDropped => "JANK_DROPPED",
5347                JankType::JankNonAnimating => "JANK_NON_ANIMATING",
5348                JankType::JankAppResyncedJitter => "JANK_APP_RESYNCED_JITTER",
5349                JankType::JankDisplayNotOn => "JANK_DISPLAY_NOT_ON",
5350            }
5351        }
5352    }
5353    /// Specifies the severity of a jank.
5354    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5355    #[repr(i32)]
5356    pub enum JankSeverityType {
5357        SeverityUnknown = 0,
5358        SeverityNone = 1,
5359        SeverityPartial = 2,
5360        SeverityFull = 3,
5361    }
5362    impl JankSeverityType {
5363        /// String value of the enum field names used in the ProtoBuf definition.
5364        ///
5365        /// The values are not transformed in any way and thus are considered stable
5366        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5367        pub fn as_str_name(&self) -> &'static str {
5368            match self {
5369                JankSeverityType::SeverityUnknown => "SEVERITY_UNKNOWN",
5370                JankSeverityType::SeverityNone => "SEVERITY_NONE",
5371                JankSeverityType::SeverityPartial => "SEVERITY_PARTIAL",
5372                JankSeverityType::SeverityFull => "SEVERITY_FULL",
5373            }
5374        }
5375    }
5376    /// Specifies how a frame was presented on screen w.r.t. timing.
5377    /// Can be different for SurfaceFrame and DisplayFrame.
5378    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5379    #[repr(i32)]
5380    pub enum PresentType {
5381        PresentUnspecified = 0,
5382        PresentOnTime = 1,
5383        PresentLate = 2,
5384        PresentEarly = 3,
5385        PresentDropped = 4,
5386        PresentUnknown = 5,
5387    }
5388    impl PresentType {
5389        /// String value of the enum field names used in the ProtoBuf definition.
5390        ///
5391        /// The values are not transformed in any way and thus are considered stable
5392        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5393        pub fn as_str_name(&self) -> &'static str {
5394            match self {
5395                PresentType::PresentUnspecified => "PRESENT_UNSPECIFIED",
5396                PresentType::PresentOnTime => "PRESENT_ON_TIME",
5397                PresentType::PresentLate => "PRESENT_LATE",
5398                PresentType::PresentEarly => "PRESENT_EARLY",
5399                PresentType::PresentDropped => "PRESENT_DROPPED",
5400                PresentType::PresentUnknown => "PRESENT_UNKNOWN",
5401            }
5402        }
5403    }
5404    /// Specifies if the predictions for the frame are still valid, expired or
5405    /// unknown.
5406    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5407    #[repr(i32)]
5408    pub enum PredictionType {
5409        PredictionUnspecified = 0,
5410        PredictionValid = 1,
5411        PredictionExpired = 2,
5412        PredictionUnknown = 3,
5413    }
5414    impl PredictionType {
5415        /// String value of the enum field names used in the ProtoBuf definition.
5416        ///
5417        /// The values are not transformed in any way and thus are considered stable
5418        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5419        pub fn as_str_name(&self) -> &'static str {
5420            match self {
5421                PredictionType::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
5422                PredictionType::PredictionValid => "PREDICTION_VALID",
5423                PredictionType::PredictionExpired => "PREDICTION_EXPIRED",
5424                PredictionType::PredictionUnknown => "PREDICTION_UNKNOWN",
5425            }
5426        }
5427    }
5428    #[derive(Clone, PartialEq, ::prost::Oneof)]
5429    pub enum Event {
5430        #[prost(message, tag="1")]
5431        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
5432        #[prost(message, tag="2")]
5433        ActualDisplayFrameStart(ActualDisplayFrameStart),
5434        #[prost(message, tag="3")]
5435        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
5436        #[prost(message, tag="4")]
5437        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
5438        #[prost(message, tag="5")]
5439        FrameEnd(FrameEnd),
5440    }
5441}
5442// End of protos/perfetto/trace/android/frame_timeline_event.proto
5443
5444// Begin of protos/perfetto/trace/android/gpu_mem_event.proto
5445
5446/// Generated by Android's GpuService.
5447#[derive(Clone, PartialEq, ::prost::Message)]
5448pub struct GpuMemTotalEvent {
5449    #[prost(uint32, optional, tag="1")]
5450    pub gpu_id: ::core::option::Option<u32>,
5451    #[prost(uint32, optional, tag="2")]
5452    pub pid: ::core::option::Option<u32>,
5453    #[prost(uint64, optional, tag="3")]
5454    pub size: ::core::option::Option<u64>,
5455}
5456// End of protos/perfetto/trace/android/gpu_mem_event.proto
5457
5458// Begin of protos/perfetto/trace/android/graphics_frame_event.proto
5459
5460/// Generated by Android's SurfaceFlinger.
5461#[derive(Clone, PartialEq, ::prost::Message)]
5462pub struct GraphicsFrameEvent {
5463    #[prost(message, optional, tag="1")]
5464    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
5465}
5466/// Nested message and enum types in `GraphicsFrameEvent`.
5467pub mod graphics_frame_event {
5468    #[derive(Clone, PartialEq, ::prost::Message)]
5469    pub struct BufferEvent {
5470        #[prost(uint32, optional, tag="1")]
5471        pub frame_number: ::core::option::Option<u32>,
5472        #[prost(enumeration="BufferEventType", optional, tag="2")]
5473        pub r#type: ::core::option::Option<i32>,
5474        #[prost(string, optional, tag="3")]
5475        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5476        /// If no duration is set, the event is an instant event.
5477        #[prost(uint64, optional, tag="4")]
5478        pub duration_ns: ::core::option::Option<u64>,
5479        /// Unique buffer identifier.
5480        #[prost(uint32, optional, tag="5")]
5481        pub buffer_id: ::core::option::Option<u32>,
5482    }
5483    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5484    #[repr(i32)]
5485    pub enum BufferEventType {
5486        Unspecified = 0,
5487        Dequeue = 1,
5488        Queue = 2,
5489        Post = 3,
5490        AcquireFence = 4,
5491        Latch = 5,
5492        /// HWC will compose this buffer
5493        HwcCompositionQueued = 6,
5494        /// renderEngine composition
5495        FallbackComposition = 7,
5496        PresentFence = 8,
5497        ReleaseFence = 9,
5498        Modify = 10,
5499        Detach = 11,
5500        Attach = 12,
5501        Cancel = 13,
5502    }
5503    impl BufferEventType {
5504        /// String value of the enum field names used in the ProtoBuf definition.
5505        ///
5506        /// The values are not transformed in any way and thus are considered stable
5507        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5508        pub fn as_str_name(&self) -> &'static str {
5509            match self {
5510                BufferEventType::Unspecified => "UNSPECIFIED",
5511                BufferEventType::Dequeue => "DEQUEUE",
5512                BufferEventType::Queue => "QUEUE",
5513                BufferEventType::Post => "POST",
5514                BufferEventType::AcquireFence => "ACQUIRE_FENCE",
5515                BufferEventType::Latch => "LATCH",
5516                BufferEventType::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
5517                BufferEventType::FallbackComposition => "FALLBACK_COMPOSITION",
5518                BufferEventType::PresentFence => "PRESENT_FENCE",
5519                BufferEventType::ReleaseFence => "RELEASE_FENCE",
5520                BufferEventType::Modify => "MODIFY",
5521                BufferEventType::Detach => "DETACH",
5522                BufferEventType::Attach => "ATTACH",
5523                BufferEventType::Cancel => "CANCEL",
5524            }
5525        }
5526    }
5527}
5528// End of protos/perfetto/trace/android/graphics_frame_event.proto
5529
5530// Begin of protos/perfetto/trace/android/initial_display_state.proto
5531
5532#[derive(Clone, PartialEq, ::prost::Message)]
5533pub struct InitialDisplayState {
5534    /// Same values as android.view.Display.STATE_*
5535    #[prost(int32, optional, tag="1")]
5536    pub display_state: ::core::option::Option<i32>,
5537    #[prost(double, optional, tag="2")]
5538    pub brightness: ::core::option::Option<f64>,
5539}
5540// End of protos/perfetto/trace/android/initial_display_state.proto
5541
5542// Begin of protos/perfetto/trace/android/kernel_wakelock_data.proto
5543
5544#[derive(Clone, PartialEq, ::prost::Message)]
5545pub struct KernelWakelockData {
5546    /// This is only emitted when we encounter new wakelocks.
5547    #[prost(message, repeated, tag="1")]
5548    pub wakelock: ::prost::alloc::vec::Vec<kernel_wakelock_data::Wakelock>,
5549    /// Interning id.
5550    #[prost(uint32, repeated, tag="2")]
5551    pub wakelock_id: ::prost::alloc::vec::Vec<u32>,
5552    /// If we interned the wakelock name in this packet, this is the total time
5553    /// the wakelock has been held.
5554    /// If not, it's a delta from the last time we saw it.
5555    #[prost(uint64, repeated, tag="3")]
5556    pub time_held_millis: ::prost::alloc::vec::Vec<u64>,
5557    #[prost(uint64, optional, tag="4")]
5558    pub error_flags: ::core::option::Option<u64>,
5559}
5560/// Nested message and enum types in `KernelWakelockData`.
5561pub mod kernel_wakelock_data {
5562    #[derive(Clone, PartialEq, ::prost::Message)]
5563    pub struct Wakelock {
5564        /// Interning id.
5565        #[prost(uint32, optional, tag="1")]
5566        pub wakelock_id: ::core::option::Option<u32>,
5567        /// Name of the wakelock.
5568        #[prost(string, optional, tag="2")]
5569        pub wakelock_name: ::core::option::Option<::prost::alloc::string::String>,
5570        /// Type of the wakelock. We record data about both true kernel wakelocks
5571        /// and "native" wakelocks which are taken in userspace but are more
5572        /// conceptually similar to kernel wakelocks than normal userspace ones.
5573        #[prost(enumeration="wakelock::Type", optional, tag="3")]
5574        pub wakelock_type: ::core::option::Option<i32>,
5575    }
5576    /// Nested message and enum types in `Wakelock`.
5577    pub mod wakelock {
5578        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5579        #[repr(i32)]
5580        pub enum Type {
5581            WakelockTypeUnknown = 0,
5582            WakelockTypeKernel = 1,
5583            WakelockTypeNative = 2,
5584        }
5585        impl Type {
5586            /// String value of the enum field names used in the ProtoBuf definition.
5587            ///
5588            /// The values are not transformed in any way and thus are considered stable
5589            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5590            pub fn as_str_name(&self) -> &'static str {
5591                match self {
5592                    Type::WakelockTypeUnknown => "WAKELOCK_TYPE_UNKNOWN",
5593                    Type::WakelockTypeKernel => "WAKELOCK_TYPE_KERNEL",
5594                    Type::WakelockTypeNative => "WAKELOCK_TYPE_NATIVE",
5595                }
5596            }
5597        }
5598    }
5599}
5600/// NetworkPacketEvent records the details of a single packet sent or received
5601/// on the network (in Linux kernel terminology, one sk_buff struct).
5602#[derive(Clone, PartialEq, ::prost::Message)]
5603pub struct NetworkPacketEvent {
5604    /// The direction traffic is flowing for this event.
5605    #[prost(enumeration="TrafficDirection", optional, tag="1")]
5606    pub direction: ::core::option::Option<i32>,
5607    /// The name of the network interface if available (e.g. 'rmnet0').
5608    #[prost(string, optional, tag="2")]
5609    pub network_interface: ::core::option::Option<::prost::alloc::string::String>,
5610    /// The length of the packet in bytes (wire_size - L2_header_size). Ignored
5611    /// when using NetworkPacketEvent as the ctx in either NetworkPacketBundle or
5612    /// NetworkPacketContext.
5613    #[prost(uint32, optional, tag="3")]
5614    pub length: ::core::option::Option<u32>,
5615    /// The Linux user id associated with the packet's socket.
5616    #[prost(uint32, optional, tag="4")]
5617    pub uid: ::core::option::Option<u32>,
5618    /// The Android network tag associated with the packet's socket.
5619    #[prost(uint32, optional, tag="5")]
5620    pub tag: ::core::option::Option<u32>,
5621    /// The packet's IP protocol (TCP=6, UDP=17, etc).
5622    #[prost(uint32, optional, tag="6")]
5623    pub ip_proto: ::core::option::Option<u32>,
5624    /// The packet's TCP flags as a bitmask (FIN=0x1, SYN=0x2, RST=0x4, etc).
5625    #[prost(uint32, optional, tag="7")]
5626    pub tcp_flags: ::core::option::Option<u32>,
5627    /// The local udp/tcp port of the packet.
5628    #[prost(uint32, optional, tag="8")]
5629    pub local_port: ::core::option::Option<u32>,
5630    /// The remote udp/tcp port of the packet.
5631    #[prost(uint32, optional, tag="9")]
5632    pub remote_port: ::core::option::Option<u32>,
5633    /// The 1-byte ICMP type identifier.
5634    #[prost(uint32, optional, tag="10")]
5635    pub icmp_type: ::core::option::Option<u32>,
5636    /// The 1-byte ICMP code identifier.
5637    #[prost(uint32, optional, tag="11")]
5638    pub icmp_code: ::core::option::Option<u32>,
5639}
5640/// NetworkPacketBundle bundles one or more packets sharing the same attributes.
5641#[derive(Clone, PartialEq, ::prost::Message)]
5642pub struct NetworkPacketBundle {
5643    /// The timestamp of the i-th packet encoded as the nanoseconds since the
5644    /// enclosing TracePacket's timestamp.
5645    #[prost(uint64, repeated, tag="3")]
5646    pub packet_timestamps: ::prost::alloc::vec::Vec<u64>,
5647    /// The length of the i-th packet in bytes (wire_size - L2_header_size).
5648    #[prost(uint32, repeated, tag="4")]
5649    pub packet_lengths: ::prost::alloc::vec::Vec<u32>,
5650    /// Total number of packets in the bundle (when above aggregation_threshold).
5651    #[prost(uint32, optional, tag="5")]
5652    pub total_packets: ::core::option::Option<u32>,
5653    /// Duration between first and last packet (when above aggregation_threshold).
5654    #[prost(uint64, optional, tag="6")]
5655    pub total_duration: ::core::option::Option<u64>,
5656    /// Total packet length in bytes (when above aggregation_threshold).
5657    #[prost(uint64, optional, tag="7")]
5658    pub total_length: ::core::option::Option<u64>,
5659    #[prost(oneof="network_packet_bundle::PacketContext", tags="1, 2")]
5660    pub packet_context: ::core::option::Option<network_packet_bundle::PacketContext>,
5661}
5662/// Nested message and enum types in `NetworkPacketBundle`.
5663pub mod network_packet_bundle {
5664    #[derive(Clone, PartialEq, ::prost::Oneof)]
5665    pub enum PacketContext {
5666        /// The intern id for looking up the associated packet context.
5667        #[prost(uint64, tag="1")]
5668        Iid(u64),
5669        /// The inlined context for events in this bundle.
5670        #[prost(message, tag="2")]
5671        Ctx(super::NetworkPacketEvent),
5672    }
5673}
5674/// An internable packet context.
5675#[derive(Clone, PartialEq, ::prost::Message)]
5676pub struct NetworkPacketContext {
5677    #[prost(uint64, optional, tag="1")]
5678    pub iid: ::core::option::Option<u64>,
5679    #[prost(message, optional, tag="2")]
5680    pub ctx: ::core::option::Option<NetworkPacketEvent>,
5681}
5682// End of protos/perfetto/trace/android/network_trace.proto
5683
5684// Begin of protos/perfetto/trace/android/packages_list.proto
5685
5686#[derive(Clone, PartialEq, ::prost::Message)]
5687pub struct PackagesList {
5688    #[prost(message, repeated, tag="1")]
5689    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
5690    /// At least one error occurred parsing the packages.list.
5691    #[prost(bool, optional, tag="2")]
5692    pub parse_error: ::core::option::Option<bool>,
5693    /// Failed to open / read packages.list.
5694    #[prost(bool, optional, tag="3")]
5695    pub read_error: ::core::option::Option<bool>,
5696}
5697/// Nested message and enum types in `PackagesList`.
5698pub mod packages_list {
5699    #[derive(Clone, PartialEq, ::prost::Message)]
5700    pub struct PackageInfo {
5701        #[prost(string, optional, tag="1")]
5702        pub name: ::core::option::Option<::prost::alloc::string::String>,
5703        #[prost(uint64, optional, tag="2")]
5704        pub uid: ::core::option::Option<u64>,
5705        #[prost(bool, optional, tag="3")]
5706        pub debuggable: ::core::option::Option<bool>,
5707        #[prost(bool, optional, tag="4")]
5708        pub profileable_from_shell: ::core::option::Option<bool>,
5709        #[prost(int64, optional, tag="5")]
5710        pub version_code: ::core::option::Option<i64>,
5711    }
5712}
5713// End of protos/perfetto/trace/android/packages_list.proto
5714
5715// Begin of protos/perfetto/trace/android/pixel_modem_events.proto
5716
5717#[derive(Clone, PartialEq, ::prost::Message)]
5718pub struct PixelModemEvents {
5719    /// Pigweed-format dehydrated events.
5720    #[prost(bytes="vec", repeated, tag="1")]
5721    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
5722    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
5723    /// timestamp is the absolute timestamp of the first event. Subsequent
5724    /// timestamps are deltas from the previous timestamp.
5725    /// The nth entry from `events` gets the nth entry here.
5726    #[prost(uint64, repeated, packed="false", tag="2")]
5727    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
5728}
5729/// NB: this is not emitted in the trace but can be prepended later.
5730#[derive(Clone, PartialEq, ::prost::Message)]
5731pub struct PixelModemTokenDatabase {
5732    /// Pigweed-format database to allow event rehydration.
5733    #[prost(bytes="vec", optional, tag="1")]
5734    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5735}
5736// End of protos/perfetto/trace/android/pixel_modem_events.proto
5737
5738// Begin of protos/perfetto/trace/android/protolog.proto
5739
5740/// represents a single log entry 
5741#[derive(Clone, PartialEq, ::prost::Message)]
5742pub struct ProtoLogMessage {
5743    /// log statement identifier, created from message string and log level. 
5744    #[prost(fixed64, optional, tag="1")]
5745    pub message_id: ::core::option::Option<u64>,
5746    /// string parameters passed to the log call that have been interned. 
5747    #[prost(uint32, repeated, packed="false", tag="2")]
5748    pub str_param_iids: ::prost::alloc::vec::Vec<u32>,
5749    /// integer parameters passed to the log call. 
5750    #[prost(sint64, repeated, packed="false", tag="3")]
5751    pub sint64_params: ::prost::alloc::vec::Vec<i64>,
5752    /// floating point parameters passed to the log call. 
5753    #[prost(double, repeated, packed="false", tag="4")]
5754    pub double_params: ::prost::alloc::vec::Vec<f64>,
5755    /// boolean parameters passed to the log call. 
5756    #[prost(int32, repeated, packed="false", tag="5")]
5757    pub boolean_params: ::prost::alloc::vec::Vec<i32>,
5758    /// id of the interned stacktrace string
5759    /// (only dumped if explicitly confuigured to do so)
5760    #[prost(uint32, optional, tag="6")]
5761    pub stacktrace_iid: ::core::option::Option<u32>,
5762}
5763/// contains all the data required to fully decode the protolog messages 
5764#[derive(Clone, PartialEq, ::prost::Message)]
5765pub struct ProtoLogViewerConfig {
5766    #[prost(message, repeated, tag="1")]
5767    pub messages: ::prost::alloc::vec::Vec<proto_log_viewer_config::MessageData>,
5768    #[prost(message, repeated, tag="2")]
5769    pub groups: ::prost::alloc::vec::Vec<proto_log_viewer_config::Group>,
5770}
5771/// Nested message and enum types in `ProtoLogViewerConfig`.
5772pub mod proto_log_viewer_config {
5773    #[derive(Clone, PartialEq, ::prost::Message)]
5774    pub struct MessageData {
5775        /// the id of the message that is logged in a ProtoLogMessage
5776        #[prost(fixed64, optional, tag="1")]
5777        pub message_id: ::core::option::Option<u64>,
5778        /// the string representation of the message
5779        #[prost(string, optional, tag="2")]
5780        pub message: ::core::option::Option<::prost::alloc::string::String>,
5781        /// the level of the message
5782        #[prost(enumeration="super::ProtoLogLevel", optional, tag="3")]
5783        pub level: ::core::option::Option<i32>,
5784        /// the id of the log group this message belongs to
5785        #[prost(uint32, optional, tag="4")]
5786        pub group_id: ::core::option::Option<u32>,
5787        /// path to the file where the message was logged
5788        #[prost(string, optional, tag="5")]
5789        pub location: ::core::option::Option<::prost::alloc::string::String>,
5790    }
5791    /// information about a ProtoLog log group 
5792    #[derive(Clone, PartialEq, ::prost::Message)]
5793    pub struct Group {
5794        #[prost(uint32, optional, tag="1")]
5795        pub id: ::core::option::Option<u32>,
5796        #[prost(string, optional, tag="2")]
5797        pub name: ::core::option::Option<::prost::alloc::string::String>,
5798        #[prost(string, optional, tag="3")]
5799        pub tag: ::core::option::Option<::prost::alloc::string::String>,
5800    }
5801}
5802// End of protos/perfetto/trace/android/protolog.proto
5803
5804// Begin of protos/perfetto/trace/android/shell_transition.proto
5805
5806/// ShellTransition messages record information about the shell transitions in
5807/// the system. This is used to track the animations that are created and execute
5808/// through the shell transition system.
5809#[derive(Clone, PartialEq, ::prost::Message)]
5810pub struct ShellTransition {
5811    /// The unique identifier of the transition.
5812    #[prost(int32, optional, tag="1")]
5813    pub id: ::core::option::Option<i32>,
5814    /// The time the transition was created on the WM side
5815    /// (using SystemClock.elapsedRealtimeNanos())
5816    #[prost(int64, optional, tag="2")]
5817    pub create_time_ns: ::core::option::Option<i64>,
5818    /// The time the transition was sent from the WM side to shell
5819    /// (using SystemClock.elapsedRealtimeNanos())
5820    #[prost(int64, optional, tag="3")]
5821    pub send_time_ns: ::core::option::Option<i64>,
5822    /// The time the transition was dispatched by shell to execute
5823    /// (using SystemClock.elapsedRealtimeNanos())
5824    #[prost(int64, optional, tag="4")]
5825    pub dispatch_time_ns: ::core::option::Option<i64>,
5826    /// If the transition merge was accepted by the transition handler, this
5827    /// contains the time the transition was merged into transition with id
5828    /// `merge_target`.
5829    /// (using SystemClock.elapsedRealtimeNanos())
5830    #[prost(int64, optional, tag="5")]
5831    pub merge_time_ns: ::core::option::Option<i64>,
5832    /// The time shell proposed the transition should be merged to the transition
5833    /// handler into transition with id `merge_target`.
5834    /// (using SystemClock.elapsedRealtimeNanos()).
5835    #[prost(int64, optional, tag="6")]
5836    pub merge_request_time_ns: ::core::option::Option<i64>,
5837    /// If the transition was aborted on the shell side, this is the time that
5838    /// occurred.
5839    /// (using SystemClock.elapsedRealtimeNanos())
5840    #[prost(int64, optional, tag="7")]
5841    pub shell_abort_time_ns: ::core::option::Option<i64>,
5842    /// If the transition was aborted on the wm side, this is the time that
5843    /// occurred.
5844    /// (using SystemClock.elapsedRealtimeNanos())
5845    #[prost(int64, optional, tag="8")]
5846    pub wm_abort_time_ns: ::core::option::Option<i64>,
5847    /// The time WM considers the transition to be complete.
5848    /// (using SystemClock.elapsedRealtimeNanos())
5849    #[prost(int64, optional, tag="9")]
5850    pub finish_time_ns: ::core::option::Option<i64>,
5851    /// The id of the transaction that WM proposed to use as the starting
5852    /// transaction. It contains all the layer changes required to setup the
5853    /// transition and should be executed right at the start of the transition
5854    /// by the transition handler.
5855    #[prost(uint64, optional, tag="10")]
5856    pub start_transaction_id: ::core::option::Option<u64>,
5857    /// The if of the transaction that WM proposed to use as the finish
5858    /// transaction. It contains all the layer changes required to set the final
5859    /// state of the transition.
5860    #[prost(uint64, optional, tag="11")]
5861    pub finish_transaction_id: ::core::option::Option<u64>,
5862    /// The id of the handler that executed the transition. A HandlerMappings
5863    /// message in the trace will contain the mapping of id to a string
5864    /// representation of the handler.
5865    #[prost(int32, optional, tag="12")]
5866    pub handler: ::core::option::Option<i32>,
5867    /// The transition type of this transition (e.g. TO_FRONT, OPEN, CLOSE).
5868    #[prost(int32, optional, tag="13")]
5869    pub r#type: ::core::option::Option<i32>,
5870    /// The list of targets that are part of this transition.
5871    #[prost(message, repeated, tag="14")]
5872    pub targets: ::prost::alloc::vec::Vec<shell_transition::Target>,
5873    /// The id of the transition we have requested to merge or have merged this
5874    /// transition into.
5875    #[prost(int32, optional, tag="15")]
5876    pub merge_target: ::core::option::Option<i32>,
5877    /// The flags set on this transition.
5878    #[prost(int32, optional, tag="16")]
5879    pub flags: ::core::option::Option<i32>,
5880    /// The time the starting window was removed. Tracked because this can
5881    /// happen after the transition finishes, but the app may not yet be visible
5882    /// until the starting window is removed. So in a sense the transition is not
5883    /// finished until the starting window is removed. (b/284302118)
5884    /// (using SystemClock.elapsedRealtimeNanos())
5885    #[prost(int64, optional, tag="17")]
5886    pub starting_window_remove_time_ns: ::core::option::Option<i64>,
5887}
5888/// Nested message and enum types in `ShellTransition`.
5889pub mod shell_transition {
5890    /// Contains the information about the windows targeted in a transition.
5891    #[derive(Clone, PartialEq, ::prost::Message)]
5892    pub struct Target {
5893        /// The transition mode of this target (e.g. TO_FRONT, CLOSE...)
5894        #[prost(int32, optional, tag="1")]
5895        pub mode: ::core::option::Option<i32>,
5896        /// The layer id of this target.
5897        #[prost(int32, optional, tag="2")]
5898        pub layer_id: ::core::option::Option<i32>,
5899        /// The window id of this target.
5900        #[prost(int32, optional, tag="3")]
5901        pub window_id: ::core::option::Option<i32>,
5902        /// The flags set on this target.
5903        #[prost(int32, optional, tag="4")]
5904        pub flags: ::core::option::Option<i32>,
5905    }
5906}
5907/// Contains mappings from handler ids to string representation of the handlers.
5908#[derive(Clone, PartialEq, ::prost::Message)]
5909pub struct ShellHandlerMappings {
5910    #[prost(message, repeated, tag="1")]
5911    pub mapping: ::prost::alloc::vec::Vec<ShellHandlerMapping>,
5912}
5913#[derive(Clone, PartialEq, ::prost::Message)]
5914pub struct ShellHandlerMapping {
5915    /// The id of the handler used in the ShellTransition message.
5916    #[prost(int32, optional, tag="1")]
5917    pub id: ::core::option::Option<i32>,
5918    /// A human readable and meaningful string representation of the handler.
5919    #[prost(string, optional, tag="2")]
5920    pub name: ::core::option::Option<::prost::alloc::string::String>,
5921}
5922// End of protos/perfetto/trace/android/shell_transition.proto
5923
5924// Begin of protos/perfetto/trace/android/graphics/rect.proto
5925
5926#[derive(Clone, PartialEq, ::prost::Message)]
5927pub struct RectProto {
5928    #[prost(int32, optional, tag="1")]
5929    pub left: ::core::option::Option<i32>,
5930    #[prost(int32, optional, tag="2")]
5931    pub top: ::core::option::Option<i32>,
5932    #[prost(int32, optional, tag="3")]
5933    pub right: ::core::option::Option<i32>,
5934    #[prost(int32, optional, tag="4")]
5935    pub bottom: ::core::option::Option<i32>,
5936}
5937// End of protos/perfetto/trace/android/graphics/rect.proto
5938
5939// Begin of protos/perfetto/trace/android/surfaceflinger_common.proto
5940
5941#[derive(Clone, PartialEq, ::prost::Message)]
5942pub struct RegionProto {
5943    #[prost(message, repeated, tag="2")]
5944    pub rect: ::prost::alloc::vec::Vec<RectProto>,
5945}
5946#[derive(Clone, PartialEq, ::prost::Message)]
5947pub struct SizeProto {
5948    #[prost(int32, optional, tag="1")]
5949    pub w: ::core::option::Option<i32>,
5950    #[prost(int32, optional, tag="2")]
5951    pub h: ::core::option::Option<i32>,
5952}
5953#[derive(Clone, PartialEq, ::prost::Message)]
5954pub struct TransformProto {
5955    #[prost(float, optional, tag="1")]
5956    pub dsdx: ::core::option::Option<f32>,
5957    #[prost(float, optional, tag="2")]
5958    pub dtdx: ::core::option::Option<f32>,
5959    #[prost(float, optional, tag="3")]
5960    pub dsdy: ::core::option::Option<f32>,
5961    #[prost(float, optional, tag="4")]
5962    pub dtdy: ::core::option::Option<f32>,
5963    #[prost(int32, optional, tag="5")]
5964    pub r#type: ::core::option::Option<i32>,
5965}
5966#[derive(Clone, PartialEq, ::prost::Message)]
5967pub struct ColorProto {
5968    #[prost(float, optional, tag="1")]
5969    pub r: ::core::option::Option<f32>,
5970    #[prost(float, optional, tag="2")]
5971    pub g: ::core::option::Option<f32>,
5972    #[prost(float, optional, tag="3")]
5973    pub b: ::core::option::Option<f32>,
5974    #[prost(float, optional, tag="4")]
5975    pub a: ::core::option::Option<f32>,
5976}
5977#[derive(Clone, PartialEq, ::prost::Message)]
5978pub struct InputWindowInfoProto {
5979    #[prost(uint32, optional, tag="1")]
5980    pub layout_params_flags: ::core::option::Option<u32>,
5981    #[prost(int32, optional, tag="2")]
5982    pub layout_params_type: ::core::option::Option<i32>,
5983    #[prost(message, optional, tag="3")]
5984    pub frame: ::core::option::Option<RectProto>,
5985    #[prost(message, optional, tag="4")]
5986    pub touchable_region: ::core::option::Option<RegionProto>,
5987    #[prost(int32, optional, tag="5")]
5988    pub surface_inset: ::core::option::Option<i32>,
5989    #[prost(bool, optional, tag="6")]
5990    pub visible: ::core::option::Option<bool>,
5991    #[deprecated]
5992    #[prost(bool, optional, tag="7")]
5993    pub can_receive_keys: ::core::option::Option<bool>,
5994    #[prost(bool, optional, tag="8")]
5995    pub focusable: ::core::option::Option<bool>,
5996    #[prost(bool, optional, tag="9")]
5997    pub has_wallpaper: ::core::option::Option<bool>,
5998    #[prost(float, optional, tag="10")]
5999    pub global_scale_factor: ::core::option::Option<f32>,
6000    #[deprecated]
6001    #[prost(float, optional, tag="11")]
6002    pub window_x_scale: ::core::option::Option<f32>,
6003    #[deprecated]
6004    #[prost(float, optional, tag="12")]
6005    pub window_y_scale: ::core::option::Option<f32>,
6006    #[prost(int32, optional, tag="13")]
6007    pub crop_layer_id: ::core::option::Option<i32>,
6008    #[prost(bool, optional, tag="14")]
6009    pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
6010    #[prost(message, optional, tag="15")]
6011    pub touchable_region_crop: ::core::option::Option<RectProto>,
6012    #[prost(message, optional, tag="16")]
6013    pub transform: ::core::option::Option<TransformProto>,
6014    #[prost(uint32, optional, tag="17")]
6015    pub input_config: ::core::option::Option<u32>,
6016}
6017#[derive(Clone, PartialEq, ::prost::Message)]
6018pub struct BlurRegion {
6019    #[prost(uint32, optional, tag="1")]
6020    pub blur_radius: ::core::option::Option<u32>,
6021    #[deprecated]
6022    #[prost(uint32, optional, tag="2")]
6023    pub corner_radius_tl: ::core::option::Option<u32>,
6024    #[deprecated]
6025    #[prost(uint32, optional, tag="3")]
6026    pub corner_radius_tr: ::core::option::Option<u32>,
6027    #[deprecated]
6028    #[prost(uint32, optional, tag="4")]
6029    pub corner_radius_bl: ::core::option::Option<u32>,
6030    #[deprecated]
6031    #[prost(float, optional, tag="5")]
6032    pub corner_radius_br: ::core::option::Option<f32>,
6033    #[prost(float, optional, tag="11")]
6034    pub corner_radius_tlx: ::core::option::Option<f32>,
6035    #[prost(float, optional, tag="12")]
6036    pub corner_radius_tly: ::core::option::Option<f32>,
6037    #[prost(float, optional, tag="13")]
6038    pub corner_radius_trx: ::core::option::Option<f32>,
6039    #[prost(float, optional, tag="14")]
6040    pub corner_radius_try: ::core::option::Option<f32>,
6041    #[prost(float, optional, tag="15")]
6042    pub corner_radius_blx: ::core::option::Option<f32>,
6043    #[prost(float, optional, tag="16")]
6044    pub corner_radius_bly: ::core::option::Option<f32>,
6045    #[prost(float, optional, tag="17")]
6046    pub corner_radius_brx: ::core::option::Option<f32>,
6047    #[prost(float, optional, tag="18")]
6048    pub corner_radius_bry: ::core::option::Option<f32>,
6049    #[prost(float, optional, tag="6")]
6050    pub alpha: ::core::option::Option<f32>,
6051    #[prost(int32, optional, tag="7")]
6052    pub left: ::core::option::Option<i32>,
6053    #[prost(int32, optional, tag="8")]
6054    pub top: ::core::option::Option<i32>,
6055    #[prost(int32, optional, tag="9")]
6056    pub right: ::core::option::Option<i32>,
6057    #[prost(int32, optional, tag="10")]
6058    pub bottom: ::core::option::Option<i32>,
6059}
6060#[derive(Clone, PartialEq, ::prost::Message)]
6061pub struct ColorTransformProto {
6062    /// This will be a 4x4 matrix of float values
6063    #[prost(float, repeated, tag="1")]
6064    pub val: ::prost::alloc::vec::Vec<f32>,
6065}
6066#[derive(Clone, PartialEq, ::prost::Message)]
6067pub struct BoxShadowSettings {
6068    #[prost(message, repeated, tag="1")]
6069    pub box_shadows: ::prost::alloc::vec::Vec<box_shadow_settings::BoxShadowParams>,
6070}
6071/// Nested message and enum types in `BoxShadowSettings`.
6072pub mod box_shadow_settings {
6073    #[derive(Clone, PartialEq, ::prost::Message)]
6074    pub struct BoxShadowParams {
6075        #[prost(float, optional, tag="1")]
6076        pub blur_radius: ::core::option::Option<f32>,
6077        #[prost(float, optional, tag="2")]
6078        pub spread_radius: ::core::option::Option<f32>,
6079        #[prost(int32, optional, tag="3")]
6080        pub color: ::core::option::Option<i32>,
6081        #[prost(float, optional, tag="4")]
6082        pub offset_x: ::core::option::Option<f32>,
6083        #[prost(float, optional, tag="5")]
6084        pub offset_y: ::core::option::Option<f32>,
6085    }
6086}
6087#[derive(Clone, PartialEq, ::prost::Message)]
6088pub struct BorderSettings {
6089    #[prost(float, optional, tag="1")]
6090    pub stroke_width: ::core::option::Option<f32>,
6091    #[prost(int32, optional, tag="2")]
6092    pub color: ::core::option::Option<i32>,
6093}
6094// Begin of protos/perfetto/trace/android/surfaceflinger_layers.proto
6095
6096/// Message used by Winscope to process legacy trace files.
6097/// Represents a file full of surface flinger trace entries.
6098/// Encoded, it should start with 0x4c 0x59 0x52 0x54 0x52 0x41 0x43 0x45
6099/// (.LYRTRACE), such that they can be easily identified.
6100#[derive(Clone, PartialEq, ::prost::Message)]
6101pub struct LayersTraceFileProto {
6102    /// Must be the first field, set to value in MagicNumber
6103    #[prost(fixed64, optional, tag="1")]
6104    pub magic_number: ::core::option::Option<u64>,
6105    #[prost(message, repeated, tag="2")]
6106    pub entry: ::prost::alloc::vec::Vec<LayersSnapshotProto>,
6107    /// Offset between real-time clock and elapsed time clock in nanoseconds.
6108    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
6109    /// systemTime(SYSTEM_TIME_MONOTONIC)
6110    #[prost(fixed64, optional, tag="3")]
6111    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
6112}
6113/// Nested message and enum types in `LayersTraceFileProto`.
6114pub mod layers_trace_file_proto {
6115    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
6116    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
6117    /// and there's no nice way to put 64bit constants into .proto files.
6118    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6119    #[repr(i32)]
6120    pub enum MagicNumber {
6121        Invalid = 0,
6122        /// LYRT (little-endian ASCII)
6123        L = 1414682956,
6124        /// RACE (little-endian ASCII)
6125        H = 1162035538,
6126    }
6127    impl MagicNumber {
6128        /// String value of the enum field names used in the ProtoBuf definition.
6129        ///
6130        /// The values are not transformed in any way and thus are considered stable
6131        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6132        pub fn as_str_name(&self) -> &'static str {
6133            match self {
6134                MagicNumber::Invalid => "INVALID",
6135                MagicNumber::L => "MAGIC_NUMBER_L",
6136                MagicNumber::H => "MAGIC_NUMBER_H",
6137            }
6138        }
6139    }
6140}
6141#[derive(Clone, PartialEq, ::prost::Message)]
6142pub struct LayersSnapshotProto {
6143    /// elapsed realtime in nanos since boot of when this entry was logged
6144    #[prost(sfixed64, optional, tag="1")]
6145    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
6146    /// SurfaceFlinger's stage where the snapshot was triggered.
6147    /// Currently either "visibleRegionsDirty" or "bufferLatched".
6148    #[prost(string, optional, tag="2")]
6149    pub r#where: ::core::option::Option<::prost::alloc::string::String>,
6150    #[prost(message, optional, tag="3")]
6151    pub layers: ::core::option::Option<LayersProto>,
6152    /// Blob for the current HWC information for all layers, reported by dumpsys.
6153    /// Example:
6154    ///    "maxDownScale: 4, maxFullWidth: 8192, HWState: 1, AssignedState: 3, ..."
6155    #[prost(string, optional, tag="4")]
6156    pub hwc_blob: ::core::option::Option<::prost::alloc::string::String>,
6157    /// Excludes state sent during composition like visible region and composition
6158    /// type.
6159    #[prost(bool, optional, tag="5")]
6160    pub excludes_composition_state: ::core::option::Option<bool>,
6161    /// Number of missed entries since the last entry was recorded.
6162    #[prost(uint32, optional, tag="6")]
6163    pub missed_entries: ::core::option::Option<u32>,
6164    #[prost(message, repeated, tag="7")]
6165    pub displays: ::prost::alloc::vec::Vec<DisplayProto>,
6166    #[prost(int64, optional, tag="8")]
6167    pub vsync_id: ::core::option::Option<i64>,
6168}
6169/// Contains a list of all layers.
6170#[derive(Clone, PartialEq, ::prost::Message)]
6171pub struct LayersProto {
6172    #[prost(message, repeated, tag="1")]
6173    pub layers: ::prost::alloc::vec::Vec<LayerProto>,
6174}
6175#[derive(Clone, PartialEq, ::prost::Message)]
6176pub struct DisplayProto {
6177    #[prost(uint64, optional, tag="1")]
6178    pub id: ::core::option::Option<u64>,
6179    /// Display descriptor, e.g. "Built-In Screen"
6180    #[prost(string, optional, tag="2")]
6181    pub name: ::core::option::Option<::prost::alloc::string::String>,
6182    #[prost(uint32, optional, tag="3")]
6183    pub layer_stack: ::core::option::Option<u32>,
6184    #[prost(message, optional, tag="4")]
6185    pub size: ::core::option::Option<SizeProto>,
6186    #[prost(message, optional, tag="5")]
6187    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
6188    #[prost(message, optional, tag="6")]
6189    pub transform: ::core::option::Option<TransformProto>,
6190    #[prost(bool, optional, tag="7")]
6191    pub is_virtual: ::core::option::Option<bool>,
6192    #[prost(double, optional, tag="8")]
6193    pub dpi_x: ::core::option::Option<f64>,
6194    #[prost(double, optional, tag="9")]
6195    pub dpi_y: ::core::option::Option<f64>,
6196}
6197/// Information about each layer.
6198#[derive(Clone, PartialEq, ::prost::Message)]
6199pub struct LayerProto {
6200    /// unique id per layer.
6201    #[prost(int32, optional, tag="1")]
6202    pub id: ::core::option::Option<i32>,
6203    /// unique name per layer.
6204    /// Example: "Wallpaper".
6205    #[prost(string, optional, tag="2")]
6206    pub name: ::core::option::Option<::prost::alloc::string::String>,
6207    /// list of children this layer may have. May be empty.
6208    #[prost(int32, repeated, tag="3")]
6209    pub children: ::prost::alloc::vec::Vec<i32>,
6210    /// list of layers that are z order relative to this layer.
6211    #[prost(int32, repeated, tag="4")]
6212    pub relatives: ::prost::alloc::vec::Vec<i32>,
6213    /// The type of layer.
6214    /// Examples: "ContainerLayer", "BufferStateLayer".
6215    #[prost(string, optional, tag="5")]
6216    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
6217    #[prost(message, optional, tag="6")]
6218    pub transparent_region: ::core::option::Option<RegionProto>,
6219    #[prost(message, optional, tag="7")]
6220    pub visible_region: ::core::option::Option<RegionProto>,
6221    #[prost(message, optional, tag="8")]
6222    pub damage_region: ::core::option::Option<RegionProto>,
6223    #[prost(uint32, optional, tag="9")]
6224    pub layer_stack: ::core::option::Option<u32>,
6225    /// The layer's z order. Can be z order in layer stack, relative to parent,
6226    /// or relative to another layer specified in zOrderRelative.
6227    #[prost(int32, optional, tag="10")]
6228    pub z: ::core::option::Option<i32>,
6229    /// The layer's position on the display.
6230    #[prost(message, optional, tag="11")]
6231    pub position: ::core::option::Option<PositionProto>,
6232    /// The layer's requested position.
6233    #[prost(message, optional, tag="12")]
6234    pub requested_position: ::core::option::Option<PositionProto>,
6235    /// The layer's size.
6236    #[prost(message, optional, tag="13")]
6237    pub size: ::core::option::Option<SizeProto>,
6238    /// The layer's crop in its own bounds.
6239    #[prost(message, optional, tag="14")]
6240    pub crop: ::core::option::Option<RectProto>,
6241    /// The layer's crop in its parent's bounds.
6242    #[deprecated]
6243    #[prost(message, optional, tag="15")]
6244    pub final_crop: ::core::option::Option<RectProto>,
6245    #[prost(bool, optional, tag="16")]
6246    pub is_opaque: ::core::option::Option<bool>,
6247    #[prost(bool, optional, tag="17")]
6248    pub invalidate: ::core::option::Option<bool>,
6249    /// Composition states's dataspace.
6250    /// Examples: "STANDARD_BT709", "STANDARD_BT601_625".
6251    /// See full enum in
6252    /// frameworks/native/libs/nativewindow/include/android/data_space.h
6253    #[prost(string, optional, tag="18")]
6254    pub dataspace: ::core::option::Option<::prost::alloc::string::String>,
6255    /// Buffer's pixel format
6256    /// Examples: "PIXEL_FORMAT_TRANSLUCENT", "PIXEL_FORMAT_RGBA_8888".
6257    /// See full enum in frameworks/native/libs/ui/include/ui/PixelFormat.h
6258    #[prost(string, optional, tag="19")]
6259    pub pixel_format: ::core::option::Option<::prost::alloc::string::String>,
6260    /// The layer's actual color.
6261    #[prost(message, optional, tag="20")]
6262    pub color: ::core::option::Option<ColorProto>,
6263    /// The layer's requested color.
6264    #[prost(message, optional, tag="21")]
6265    pub requested_color: ::core::option::Option<ColorProto>,
6266    /// Can be any combination of
6267    ///     hidden = 0x01
6268    ///     opaque = 0x02,
6269    ///     secure = 0x80,
6270    #[prost(uint32, optional, tag="22")]
6271    pub flags: ::core::option::Option<u32>,
6272    /// The layer's actual transform
6273    #[prost(message, optional, tag="23")]
6274    pub transform: ::core::option::Option<TransformProto>,
6275    /// The layer's requested transform.
6276    #[prost(message, optional, tag="24")]
6277    pub requested_transform: ::core::option::Option<TransformProto>,
6278    /// The parent layer. This value can be null if there is no parent.
6279    #[prost(int32, optional, tag="25")]
6280    pub parent: ::core::option::Option<i32>,
6281    /// The layer that this layer has a z order relative to. This value can be
6282    /// null.
6283    #[prost(int32, optional, tag="26")]
6284    pub z_order_relative_of: ::core::option::Option<i32>,
6285    /// This value can be null if there's nothing to draw.
6286    #[prost(message, optional, tag="27")]
6287    pub active_buffer: ::core::option::Option<ActiveBufferProto>,
6288    /// The number of frames available.
6289    #[prost(int32, optional, tag="28")]
6290    pub queued_frames: ::core::option::Option<i32>,
6291    #[prost(bool, optional, tag="29")]
6292    pub refresh_pending: ::core::option::Option<bool>,
6293    /// The layer's composer backend destination frame
6294    #[prost(message, optional, tag="30")]
6295    pub hwc_frame: ::core::option::Option<RectProto>,
6296    /// The layer's composer backend source crop
6297    #[prost(message, optional, tag="31")]
6298    pub hwc_crop: ::core::option::Option<FloatRectProto>,
6299    /// The layer's composer backend transform
6300    #[prost(int32, optional, tag="32")]
6301    pub hwc_transform: ::core::option::Option<i32>,
6302    #[deprecated]
6303    #[prost(int32, optional, tag="33")]
6304    pub window_type: ::core::option::Option<i32>,
6305    #[deprecated]
6306    #[prost(int32, optional, tag="34")]
6307    pub app_id: ::core::option::Option<i32>,
6308    /// The layer's composition type
6309    #[prost(enumeration="HwcCompositionType", optional, tag="35")]
6310    pub hwc_composition_type: ::core::option::Option<i32>,
6311    /// If it's a buffer layer, indicate if the content is protected
6312    #[prost(bool, optional, tag="36")]
6313    pub is_protected: ::core::option::Option<bool>,
6314    /// Current frame number being rendered.
6315    #[prost(uint64, optional, tag="37")]
6316    pub curr_frame: ::core::option::Option<u64>,
6317    /// A list of barriers that the layer is waiting to update state.
6318    #[prost(message, repeated, tag="38")]
6319    pub barrier_layer: ::prost::alloc::vec::Vec<BarrierLayerProto>,
6320    /// If active_buffer is not null, record its transform.
6321    #[prost(message, optional, tag="39")]
6322    pub buffer_transform: ::core::option::Option<TransformProto>,
6323    #[prost(int32, optional, tag="40")]
6324    pub effective_scaling_mode: ::core::option::Option<i32>,
6325    /// Layer's corner radius
6326    #[deprecated]
6327    #[prost(float, optional, tag="41")]
6328    pub corner_radius: ::core::option::Option<f32>,
6329    /// Metadata map. May be empty.
6330    #[prost(map="int32, string", tag="42")]
6331    pub metadata: ::std::collections::HashMap<i32, ::prost::alloc::string::String>,
6332    #[prost(message, optional, tag="43")]
6333    pub effective_transform: ::core::option::Option<TransformProto>,
6334    #[prost(message, optional, tag="44")]
6335    pub source_bounds: ::core::option::Option<FloatRectProto>,
6336    #[prost(message, optional, tag="45")]
6337    pub bounds: ::core::option::Option<FloatRectProto>,
6338    #[prost(message, optional, tag="46")]
6339    pub screen_bounds: ::core::option::Option<FloatRectProto>,
6340    #[prost(message, optional, tag="47")]
6341    pub input_window_info: ::core::option::Option<InputWindowInfoProto>,
6342    /// Crop used to draw the rounded corner.
6343    #[prost(message, optional, tag="48")]
6344    pub corner_radius_crop: ::core::option::Option<FloatRectProto>,
6345    /// length of the shadow to draw around the layer, it may be set on the
6346    /// layer or set by a parent layer.
6347    #[prost(float, optional, tag="49")]
6348    pub shadow_radius: ::core::option::Option<f32>,
6349    #[prost(message, optional, tag="50")]
6350    pub color_transform: ::core::option::Option<ColorTransformProto>,
6351    #[prost(bool, optional, tag="51")]
6352    pub is_relative_of: ::core::option::Option<bool>,
6353    /// Layer's background blur radius in pixels.
6354    #[prost(int32, optional, tag="52")]
6355    pub background_blur_radius: ::core::option::Option<i32>,
6356    #[prost(uint32, optional, tag="53")]
6357    pub owner_uid: ::core::option::Option<u32>,
6358    /// Regions of a layer, where blur should be applied.
6359    #[prost(message, repeated, tag="54")]
6360    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
6361    #[prost(bool, optional, tag="55")]
6362    pub is_trusted_overlay: ::core::option::Option<bool>,
6363    /// Corner radius explicitly set on layer rather than inherited
6364    #[deprecated]
6365    #[prost(float, optional, tag="56")]
6366    pub requested_corner_radius: ::core::option::Option<f32>,
6367    #[prost(message, optional, tag="57")]
6368    pub destination_frame: ::core::option::Option<RectProto>,
6369    #[prost(uint32, optional, tag="58")]
6370    pub original_id: ::core::option::Option<u32>,
6371    #[prost(enumeration="TrustedOverlay", optional, tag="59")]
6372    pub trusted_overlay: ::core::option::Option<i32>,
6373    /// Layer's scale during background blur, relative to 1.0f=100%
6374    #[prost(float, optional, tag="60")]
6375    pub background_blur_scale: ::core::option::Option<f32>,
6376    /// Layer's corner radius.
6377    #[prost(message, optional, tag="61")]
6378    pub corner_radii: ::core::option::Option<CornerRadiiProto>,
6379    /// Corner radius explicitly set on layer rather than inherited
6380    #[prost(message, optional, tag="62")]
6381    pub requested_corner_radii: ::core::option::Option<CornerRadiiProto>,
6382    /// Corner radius explicity set as drawn by client
6383    #[prost(message, optional, tag="63")]
6384    pub client_drawn_corner_radii: ::core::option::Option<CornerRadiiProto>,
6385    /// Priority value of the layer set by the system.
6386    #[prost(int32, optional, tag="64")]
6387    pub system_content_priority: ::core::option::Option<i32>,
6388    /// Settings which specify how shadows should be drawn for a layer.
6389    #[prost(message, optional, tag="65")]
6390    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
6391    /// Settings which specify how an outline should be drawn for a layer.
6392    #[prost(message, optional, tag="66")]
6393    pub border_settings: ::core::option::Option<BorderSettings>,
6394    /// "True" corner radii of the layer computed by SurfaceFlinger.
6395    #[prost(message, optional, tag="67")]
6396    pub effective_radii: ::core::option::Option<CornerRadiiProto>,
6397}
6398#[derive(Clone, PartialEq, ::prost::Message)]
6399pub struct PositionProto {
6400    #[prost(float, optional, tag="1")]
6401    pub x: ::core::option::Option<f32>,
6402    #[prost(float, optional, tag="2")]
6403    pub y: ::core::option::Option<f32>,
6404}
6405#[derive(Clone, PartialEq, ::prost::Message)]
6406pub struct FloatRectProto {
6407    #[prost(float, optional, tag="1")]
6408    pub left: ::core::option::Option<f32>,
6409    #[prost(float, optional, tag="2")]
6410    pub top: ::core::option::Option<f32>,
6411    #[prost(float, optional, tag="3")]
6412    pub right: ::core::option::Option<f32>,
6413    #[prost(float, optional, tag="4")]
6414    pub bottom: ::core::option::Option<f32>,
6415}
6416#[derive(Clone, PartialEq, ::prost::Message)]
6417pub struct CornerRadiiProto {
6418    #[prost(float, optional, tag="1")]
6419    pub tl: ::core::option::Option<f32>,
6420    #[prost(float, optional, tag="2")]
6421    pub tr: ::core::option::Option<f32>,
6422    #[prost(float, optional, tag="3")]
6423    pub bl: ::core::option::Option<f32>,
6424    #[prost(float, optional, tag="4")]
6425    pub br: ::core::option::Option<f32>,
6426}
6427#[derive(Clone, PartialEq, ::prost::Message)]
6428pub struct ActiveBufferProto {
6429    #[prost(uint32, optional, tag="1")]
6430    pub width: ::core::option::Option<u32>,
6431    #[prost(uint32, optional, tag="2")]
6432    pub height: ::core::option::Option<u32>,
6433    #[prost(uint32, optional, tag="3")]
6434    pub stride: ::core::option::Option<u32>,
6435    #[prost(int32, optional, tag="4")]
6436    pub format: ::core::option::Option<i32>,
6437    #[prost(uint64, optional, tag="5")]
6438    pub usage: ::core::option::Option<u64>,
6439}
6440#[derive(Clone, PartialEq, ::prost::Message)]
6441pub struct BarrierLayerProto {
6442    /// layer id the barrier is waiting on.
6443    #[prost(int32, optional, tag="1")]
6444    pub id: ::core::option::Option<i32>,
6445    /// frame number the barrier is waiting on.
6446    #[prost(uint64, optional, tag="2")]
6447    pub frame_number: ::core::option::Option<u64>,
6448}
6449// End of protos/perfetto/trace/android/surfaceflinger_layers.proto
6450
6451// Begin of protos/perfetto/trace/android/surfaceflinger_transactions.proto
6452
6453/// Message used by Winscope to process legacy trace files.
6454/// Represents a file full of surface flinger transactions.
6455/// Encoded, it should start with 0x54 0x4E 0x58 0x54 0x52 0x41 0x43 0x45
6456/// (.TNXTRACE), such that they can be easily identified.
6457#[derive(Clone, PartialEq, ::prost::Message)]
6458pub struct TransactionTraceFile {
6459    /// Must be the first field, set to value in MagicNumber
6460    #[prost(fixed64, optional, tag="1")]
6461    pub magic_number: ::core::option::Option<u64>,
6462    #[prost(message, repeated, tag="2")]
6463    pub entry: ::prost::alloc::vec::Vec<TransactionTraceEntry>,
6464    /// offset between real-time clock and elapsed time clock in nanoseconds.
6465    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
6466    /// systemTime(SYSTEM_TIME_MONOTONIC)
6467    #[prost(fixed64, optional, tag="3")]
6468    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
6469    #[prost(uint32, optional, tag="4")]
6470    pub version: ::core::option::Option<u32>,
6471}
6472/// Nested message and enum types in `TransactionTraceFile`.
6473pub mod transaction_trace_file {
6474    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
6475    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
6476    /// and there's no nice way to put 64bit constants into .proto files.
6477    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6478    #[repr(i32)]
6479    pub enum MagicNumber {
6480        Invalid = 0,
6481        /// TNXT (little-endian ASCII)
6482        L = 1415073364,
6483        /// RACE (little-endian ASCII)
6484        H = 1162035538,
6485    }
6486    impl MagicNumber {
6487        /// String value of the enum field names used in the ProtoBuf definition.
6488        ///
6489        /// The values are not transformed in any way and thus are considered stable
6490        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6491        pub fn as_str_name(&self) -> &'static str {
6492            match self {
6493                MagicNumber::Invalid => "INVALID",
6494                MagicNumber::L => "MAGIC_NUMBER_L",
6495                MagicNumber::H => "MAGIC_NUMBER_H",
6496            }
6497        }
6498    }
6499}
6500#[derive(Clone, PartialEq, ::prost::Message)]
6501pub struct TransactionTraceEntry {
6502    #[prost(int64, optional, tag="1")]
6503    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
6504    #[prost(int64, optional, tag="2")]
6505    pub vsync_id: ::core::option::Option<i64>,
6506    #[prost(message, repeated, tag="3")]
6507    pub transactions: ::prost::alloc::vec::Vec<TransactionState>,
6508    #[prost(message, repeated, tag="4")]
6509    pub added_layers: ::prost::alloc::vec::Vec<LayerCreationArgs>,
6510    #[prost(uint32, repeated, packed="false", tag="5")]
6511    pub destroyed_layers: ::prost::alloc::vec::Vec<u32>,
6512    #[prost(message, repeated, tag="6")]
6513    pub added_displays: ::prost::alloc::vec::Vec<DisplayState>,
6514    #[prost(int32, repeated, packed="false", tag="7")]
6515    pub removed_displays: ::prost::alloc::vec::Vec<i32>,
6516    #[prost(uint32, repeated, packed="false", tag="8")]
6517    pub destroyed_layer_handles: ::prost::alloc::vec::Vec<u32>,
6518    #[prost(bool, optional, tag="9")]
6519    pub displays_changed: ::core::option::Option<bool>,
6520    #[prost(message, repeated, tag="10")]
6521    pub displays: ::prost::alloc::vec::Vec<DisplayInfo>,
6522}
6523#[derive(Clone, PartialEq, ::prost::Message)]
6524pub struct DisplayInfo {
6525    #[prost(uint32, optional, tag="1")]
6526    pub layer_stack: ::core::option::Option<u32>,
6527    #[prost(int32, optional, tag="2")]
6528    pub display_id: ::core::option::Option<i32>,
6529    #[prost(int32, optional, tag="3")]
6530    pub logical_width: ::core::option::Option<i32>,
6531    #[prost(int32, optional, tag="4")]
6532    pub logical_height: ::core::option::Option<i32>,
6533    #[prost(message, optional, tag="5")]
6534    pub transform_inverse: ::core::option::Option<Transform>,
6535    #[prost(message, optional, tag="6")]
6536    pub transform: ::core::option::Option<Transform>,
6537    #[prost(bool, optional, tag="7")]
6538    pub receives_input: ::core::option::Option<bool>,
6539    #[prost(bool, optional, tag="8")]
6540    pub is_secure: ::core::option::Option<bool>,
6541    #[prost(bool, optional, tag="9")]
6542    pub is_primary: ::core::option::Option<bool>,
6543    #[prost(bool, optional, tag="10")]
6544    pub is_virtual: ::core::option::Option<bool>,
6545    #[prost(int32, optional, tag="11")]
6546    pub rotation_flags: ::core::option::Option<i32>,
6547    #[prost(int32, optional, tag="12")]
6548    pub transform_hint: ::core::option::Option<i32>,
6549}
6550#[derive(Clone, PartialEq, ::prost::Message)]
6551pub struct LayerCreationArgs {
6552    #[prost(uint32, optional, tag="1")]
6553    pub layer_id: ::core::option::Option<u32>,
6554    #[prost(string, optional, tag="2")]
6555    pub name: ::core::option::Option<::prost::alloc::string::String>,
6556    #[prost(uint32, optional, tag="3")]
6557    pub flags: ::core::option::Option<u32>,
6558    #[prost(uint32, optional, tag="4")]
6559    pub parent_id: ::core::option::Option<u32>,
6560    #[prost(uint32, optional, tag="5")]
6561    pub mirror_from_id: ::core::option::Option<u32>,
6562    #[prost(bool, optional, tag="6")]
6563    pub add_to_root: ::core::option::Option<bool>,
6564    #[prost(uint32, optional, tag="7")]
6565    pub layer_stack_to_mirror: ::core::option::Option<u32>,
6566}
6567#[derive(Clone, PartialEq, ::prost::Message)]
6568pub struct Transform {
6569    #[prost(float, optional, tag="1")]
6570    pub dsdx: ::core::option::Option<f32>,
6571    #[prost(float, optional, tag="2")]
6572    pub dtdx: ::core::option::Option<f32>,
6573    #[prost(float, optional, tag="3")]
6574    pub dtdy: ::core::option::Option<f32>,
6575    #[prost(float, optional, tag="4")]
6576    pub dsdy: ::core::option::Option<f32>,
6577    #[prost(float, optional, tag="5")]
6578    pub tx: ::core::option::Option<f32>,
6579    #[prost(float, optional, tag="6")]
6580    pub ty: ::core::option::Option<f32>,
6581}
6582#[derive(Clone, PartialEq, ::prost::Message)]
6583pub struct TransactionBarrier {
6584    #[prost(string, optional, tag="1")]
6585    pub barrier_token: ::core::option::Option<::prost::alloc::string::String>,
6586    #[prost(uint32, optional, tag="2")]
6587    pub kind: ::core::option::Option<u32>,
6588}
6589#[derive(Clone, PartialEq, ::prost::Message)]
6590pub struct TransactionState {
6591    #[prost(int32, optional, tag="1")]
6592    pub pid: ::core::option::Option<i32>,
6593    #[prost(int32, optional, tag="2")]
6594    pub uid: ::core::option::Option<i32>,
6595    #[prost(int64, optional, tag="3")]
6596    pub vsync_id: ::core::option::Option<i64>,
6597    #[prost(int32, optional, tag="4")]
6598    pub input_event_id: ::core::option::Option<i32>,
6599    #[prost(int64, optional, tag="5")]
6600    pub post_time: ::core::option::Option<i64>,
6601    #[prost(uint64, optional, tag="6")]
6602    pub transaction_id: ::core::option::Option<u64>,
6603    #[prost(message, repeated, tag="7")]
6604    pub layer_changes: ::prost::alloc::vec::Vec<LayerState>,
6605    #[prost(message, repeated, tag="8")]
6606    pub display_changes: ::prost::alloc::vec::Vec<DisplayState>,
6607    #[prost(uint64, repeated, packed="false", tag="9")]
6608    pub merged_transaction_ids: ::prost::alloc::vec::Vec<u64>,
6609    #[prost(uint64, optional, tag="10")]
6610    pub apply_token: ::core::option::Option<u64>,
6611    #[prost(message, repeated, tag="11")]
6612    pub transaction_barriers: ::prost::alloc::vec::Vec<TransactionBarrier>,
6613}
6614/// Keep insync with layer_state_t
6615#[derive(Clone, PartialEq, ::prost::Message)]
6616pub struct LayerState {
6617    #[prost(uint32, optional, tag="1")]
6618    pub layer_id: ::core::option::Option<u32>,
6619    #[prost(uint64, optional, tag="2")]
6620    pub what: ::core::option::Option<u64>,
6621    #[prost(float, optional, tag="3")]
6622    pub x: ::core::option::Option<f32>,
6623    #[prost(float, optional, tag="4")]
6624    pub y: ::core::option::Option<f32>,
6625    #[prost(int32, optional, tag="5")]
6626    pub z: ::core::option::Option<i32>,
6627    #[prost(uint32, optional, tag="6")]
6628    pub w: ::core::option::Option<u32>,
6629    #[prost(uint32, optional, tag="7")]
6630    pub h: ::core::option::Option<u32>,
6631    #[prost(uint32, optional, tag="8")]
6632    pub layer_stack: ::core::option::Option<u32>,
6633    #[prost(uint32, optional, tag="9")]
6634    pub flags: ::core::option::Option<u32>,
6635    #[prost(uint32, optional, tag="10")]
6636    pub mask: ::core::option::Option<u32>,
6637    #[prost(message, optional, tag="11")]
6638    pub matrix: ::core::option::Option<layer_state::Matrix22>,
6639    #[deprecated]
6640    #[prost(float, optional, tag="12")]
6641    pub corner_radius: ::core::option::Option<f32>,
6642    #[prost(uint32, optional, tag="13")]
6643    pub background_blur_radius: ::core::option::Option<u32>,
6644    #[prost(uint32, optional, tag="14")]
6645    pub parent_id: ::core::option::Option<u32>,
6646    #[prost(uint32, optional, tag="15")]
6647    pub relative_parent_id: ::core::option::Option<u32>,
6648    #[prost(float, optional, tag="16")]
6649    pub alpha: ::core::option::Option<f32>,
6650    #[prost(message, optional, tag="17")]
6651    pub color: ::core::option::Option<layer_state::Color3>,
6652    #[prost(message, optional, tag="18")]
6653    pub transparent_region: ::core::option::Option<RegionProto>,
6654    #[prost(uint32, optional, tag="19")]
6655    pub transform: ::core::option::Option<u32>,
6656    #[prost(bool, optional, tag="20")]
6657    pub transform_to_display_inverse: ::core::option::Option<bool>,
6658    #[prost(message, optional, tag="21")]
6659    pub crop: ::core::option::Option<RectProto>,
6660    #[prost(message, optional, tag="22")]
6661    pub buffer_data: ::core::option::Option<layer_state::BufferData>,
6662    #[prost(int32, optional, tag="23")]
6663    pub api: ::core::option::Option<i32>,
6664    #[prost(bool, optional, tag="24")]
6665    pub has_sideband_stream: ::core::option::Option<bool>,
6666    #[prost(message, optional, tag="25")]
6667    pub color_transform: ::core::option::Option<ColorTransformProto>,
6668    #[prost(message, repeated, tag="26")]
6669    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
6670    #[prost(message, optional, tag="27")]
6671    pub window_info_handle: ::core::option::Option<layer_state::WindowInfo>,
6672    #[prost(float, optional, tag="28")]
6673    pub bg_color_alpha: ::core::option::Option<f32>,
6674    #[prost(int32, optional, tag="29")]
6675    pub bg_color_dataspace: ::core::option::Option<i32>,
6676    #[prost(bool, optional, tag="30")]
6677    pub color_space_agnostic: ::core::option::Option<bool>,
6678    #[prost(float, optional, tag="31")]
6679    pub shadow_radius: ::core::option::Option<f32>,
6680    #[prost(int32, optional, tag="32")]
6681    pub frame_rate_selection_priority: ::core::option::Option<i32>,
6682    #[prost(float, optional, tag="33")]
6683    pub frame_rate: ::core::option::Option<f32>,
6684    #[prost(int32, optional, tag="34")]
6685    pub frame_rate_compatibility: ::core::option::Option<i32>,
6686    #[prost(int32, optional, tag="35")]
6687    pub change_frame_rate_strategy: ::core::option::Option<i32>,
6688    #[prost(uint32, optional, tag="36")]
6689    pub fixed_transform_hint: ::core::option::Option<u32>,
6690    #[prost(uint64, optional, tag="37")]
6691    pub frame_number: ::core::option::Option<u64>,
6692    #[prost(bool, optional, tag="38")]
6693    pub auto_refresh: ::core::option::Option<bool>,
6694    /// unused
6695    #[prost(bool, optional, tag="39")]
6696    pub is_trusted_overlay: ::core::option::Option<bool>,
6697    #[prost(message, optional, tag="40")]
6698    pub buffer_crop: ::core::option::Option<RectProto>,
6699    #[prost(message, optional, tag="41")]
6700    pub destination_frame: ::core::option::Option<RectProto>,
6701    #[prost(enumeration="layer_state::DropInputMode", optional, tag="42")]
6702    pub drop_input_mode: ::core::option::Option<i32>,
6703    #[prost(enumeration="TrustedOverlay", optional, tag="43")]
6704    pub trusted_overlay: ::core::option::Option<i32>,
6705    #[prost(float, optional, tag="44")]
6706    pub background_blur_scale: ::core::option::Option<f32>,
6707    #[prost(message, optional, tag="45")]
6708    pub corner_radii: ::core::option::Option<layer_state::CornerRadii>,
6709    #[prost(message, optional, tag="46")]
6710    pub client_drawn_corner_radii: ::core::option::Option<layer_state::CornerRadii>,
6711    #[prost(int32, optional, tag="47")]
6712    pub system_content_priority: ::core::option::Option<i32>,
6713    #[prost(message, optional, tag="48")]
6714    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
6715    #[prost(message, optional, tag="49")]
6716    pub border_settings: ::core::option::Option<BorderSettings>,
6717}
6718/// Nested message and enum types in `LayerState`.
6719pub mod layer_state {
6720    #[derive(Clone, PartialEq, ::prost::Message)]
6721    pub struct Matrix22 {
6722        #[prost(float, optional, tag="1")]
6723        pub dsdx: ::core::option::Option<f32>,
6724        #[prost(float, optional, tag="2")]
6725        pub dtdx: ::core::option::Option<f32>,
6726        #[prost(float, optional, tag="3")]
6727        pub dtdy: ::core::option::Option<f32>,
6728        #[prost(float, optional, tag="4")]
6729        pub dsdy: ::core::option::Option<f32>,
6730    }
6731    #[derive(Clone, PartialEq, ::prost::Message)]
6732    pub struct CornerRadii {
6733        #[prost(float, optional, tag="1")]
6734        pub tl: ::core::option::Option<f32>,
6735        #[prost(float, optional, tag="2")]
6736        pub tr: ::core::option::Option<f32>,
6737        #[prost(float, optional, tag="3")]
6738        pub bl: ::core::option::Option<f32>,
6739        #[prost(float, optional, tag="4")]
6740        pub br: ::core::option::Option<f32>,
6741    }
6742    #[derive(Clone, PartialEq, ::prost::Message)]
6743    pub struct Color3 {
6744        #[prost(float, optional, tag="1")]
6745        pub r: ::core::option::Option<f32>,
6746        #[prost(float, optional, tag="2")]
6747        pub g: ::core::option::Option<f32>,
6748        #[prost(float, optional, tag="3")]
6749        pub b: ::core::option::Option<f32>,
6750    }
6751    #[derive(Clone, PartialEq, ::prost::Message)]
6752    pub struct BufferData {
6753        #[prost(uint64, optional, tag="1")]
6754        pub buffer_id: ::core::option::Option<u64>,
6755        #[prost(uint32, optional, tag="2")]
6756        pub width: ::core::option::Option<u32>,
6757        #[prost(uint32, optional, tag="3")]
6758        pub height: ::core::option::Option<u32>,
6759        #[prost(uint64, optional, tag="4")]
6760        pub frame_number: ::core::option::Option<u64>,
6761        #[prost(uint32, optional, tag="5")]
6762        pub flags: ::core::option::Option<u32>,
6763        #[prost(uint64, optional, tag="6")]
6764        pub cached_buffer_id: ::core::option::Option<u64>,
6765        #[prost(enumeration="buffer_data::PixelFormat", optional, tag="7")]
6766        pub pixel_format: ::core::option::Option<i32>,
6767        #[prost(uint64, optional, tag="8")]
6768        pub usage: ::core::option::Option<u64>,
6769    }
6770    /// Nested message and enum types in `BufferData`.
6771    pub mod buffer_data {
6772        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6773        #[repr(i32)]
6774        pub enum BufferDataChange {
6775            None = 0,
6776            FenceChanged = 1,
6777            FrameNumberChanged = 2,
6778            CachedBufferChanged = 4,
6779        }
6780        impl BufferDataChange {
6781            /// String value of the enum field names used in the ProtoBuf definition.
6782            ///
6783            /// The values are not transformed in any way and thus are considered stable
6784            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6785            pub fn as_str_name(&self) -> &'static str {
6786                match self {
6787                    BufferDataChange::None => "BufferDataChangeNone",
6788                    BufferDataChange::FenceChanged => "fenceChanged",
6789                    BufferDataChange::FrameNumberChanged => "frameNumberChanged",
6790                    BufferDataChange::CachedBufferChanged => "cachedBufferChanged",
6791                }
6792            }
6793        }
6794        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6795        #[repr(i32)]
6796        pub enum PixelFormat {
6797            Unknown = 0,
6798            Custom = -4,
6799            Translucent = -3,
6800            Transparent = -2,
6801            Opaque = -1,
6802            Rgba8888 = 1,
6803            Rgbx8888 = 2,
6804            Rgb888 = 3,
6805            Rgb565 = 4,
6806            Bgra8888 = 5,
6807            Rgba5551 = 6,
6808            Rgba4444 = 7,
6809            RgbaFp16 = 22,
6810            Rgba1010102 = 43,
6811            R8 = 56,
6812        }
6813        impl PixelFormat {
6814            /// String value of the enum field names used in the ProtoBuf definition.
6815            ///
6816            /// The values are not transformed in any way and thus are considered stable
6817            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6818            pub fn as_str_name(&self) -> &'static str {
6819                match self {
6820                    PixelFormat::Unknown => "PIXEL_FORMAT_UNKNOWN",
6821                    PixelFormat::Custom => "PIXEL_FORMAT_CUSTOM",
6822                    PixelFormat::Translucent => "PIXEL_FORMAT_TRANSLUCENT",
6823                    PixelFormat::Transparent => "PIXEL_FORMAT_TRANSPARENT",
6824                    PixelFormat::Opaque => "PIXEL_FORMAT_OPAQUE",
6825                    PixelFormat::Rgba8888 => "PIXEL_FORMAT_RGBA_8888",
6826                    PixelFormat::Rgbx8888 => "PIXEL_FORMAT_RGBX_8888",
6827                    PixelFormat::Rgb888 => "PIXEL_FORMAT_RGB_888",
6828                    PixelFormat::Rgb565 => "PIXEL_FORMAT_RGB_565",
6829                    PixelFormat::Bgra8888 => "PIXEL_FORMAT_BGRA_8888",
6830                    PixelFormat::Rgba5551 => "PIXEL_FORMAT_RGBA_5551",
6831                    PixelFormat::Rgba4444 => "PIXEL_FORMAT_RGBA_4444",
6832                    PixelFormat::RgbaFp16 => "PIXEL_FORMAT_RGBA_FP16",
6833                    PixelFormat::Rgba1010102 => "PIXEL_FORMAT_RGBA_1010102",
6834                    PixelFormat::R8 => "PIXEL_FORMAT_R_8",
6835                }
6836            }
6837        }
6838    }
6839    #[derive(Clone, PartialEq, ::prost::Message)]
6840    pub struct WindowInfo {
6841        #[prost(uint32, optional, tag="1")]
6842        pub layout_params_flags: ::core::option::Option<u32>,
6843        #[prost(int32, optional, tag="2")]
6844        pub layout_params_type: ::core::option::Option<i32>,
6845        #[prost(message, optional, tag="3")]
6846        pub touchable_region: ::core::option::Option<super::RegionProto>,
6847        #[prost(int32, optional, tag="4")]
6848        pub surface_inset: ::core::option::Option<i32>,
6849        /// unused
6850        #[prost(bool, optional, tag="5")]
6851        pub focusable: ::core::option::Option<bool>,
6852        /// unused
6853        #[prost(bool, optional, tag="6")]
6854        pub has_wallpaper: ::core::option::Option<bool>,
6855        #[prost(float, optional, tag="7")]
6856        pub global_scale_factor: ::core::option::Option<f32>,
6857        #[prost(uint32, optional, tag="8")]
6858        pub crop_layer_id: ::core::option::Option<u32>,
6859        #[prost(bool, optional, tag="9")]
6860        pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
6861        #[prost(message, optional, tag="10")]
6862        pub touchable_region_crop: ::core::option::Option<super::RectProto>,
6863        #[prost(message, optional, tag="11")]
6864        pub transform: ::core::option::Option<super::Transform>,
6865        #[prost(uint32, optional, tag="12")]
6866        pub input_config: ::core::option::Option<u32>,
6867    }
6868    /// Changes are split into ChangesLsb and ChangesMsb. First 32 bits are in
6869    /// ChangesLsb and the next 32 bits are in ChangesMsb. This is needed because
6870    /// enums have to be 32 bits and there's no nice way to put 64bit constants
6871    /// into .proto files.
6872    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6873    #[repr(i32)]
6874    pub enum ChangesLsb {
6875        EChangesLsbNone = 0,
6876        EPositionChanged = 1,
6877        ELayerChanged = 2,
6878        /// unused = 0x00000004;
6879        EAlphaChanged = 8,
6880        EMatrixChanged = 16,
6881        ETransparentRegionChanged = 32,
6882        EFlagsChanged = 64,
6883        ELayerStackChanged = 128,
6884        EReleaseBufferListenerChanged = 1024,
6885        EShadowRadiusChanged = 2048,
6886        EBufferCropChanged = 8192,
6887        ERelativeLayerChanged = 16384,
6888        EReparent = 32768,
6889        EColorChanged = 65536,
6890        EBufferTransformChanged = 262144,
6891        ETransformToDisplayInverseChanged = 524288,
6892        ECropChanged = 1048576,
6893        EBufferChanged = 2097152,
6894        EAcquireFenceChanged = 4194304,
6895        EDataspaceChanged = 8388608,
6896        EHdrMetadataChanged = 16777216,
6897        ESurfaceDamageRegionChanged = 33554432,
6898        EApiChanged = 67108864,
6899        ESidebandStreamChanged = 134217728,
6900        EColorTransformChanged = 268435456,
6901        EHasListenerCallbacksChanged = 536870912,
6902        EInputInfoChanged = 1073741824,
6903        /// 0x80000000; (proto stores enums as signed int)
6904        ECornerRadiusChanged = -2147483648,
6905    }
6906    impl ChangesLsb {
6907        /// String value of the enum field names used in the ProtoBuf definition.
6908        ///
6909        /// The values are not transformed in any way and thus are considered stable
6910        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6911        pub fn as_str_name(&self) -> &'static str {
6912            match self {
6913                ChangesLsb::EChangesLsbNone => "eChangesLsbNone",
6914                ChangesLsb::EPositionChanged => "ePositionChanged",
6915                ChangesLsb::ELayerChanged => "eLayerChanged",
6916                ChangesLsb::EAlphaChanged => "eAlphaChanged",
6917                ChangesLsb::EMatrixChanged => "eMatrixChanged",
6918                ChangesLsb::ETransparentRegionChanged => "eTransparentRegionChanged",
6919                ChangesLsb::EFlagsChanged => "eFlagsChanged",
6920                ChangesLsb::ELayerStackChanged => "eLayerStackChanged",
6921                ChangesLsb::EReleaseBufferListenerChanged => "eReleaseBufferListenerChanged",
6922                ChangesLsb::EShadowRadiusChanged => "eShadowRadiusChanged",
6923                ChangesLsb::EBufferCropChanged => "eBufferCropChanged",
6924                ChangesLsb::ERelativeLayerChanged => "eRelativeLayerChanged",
6925                ChangesLsb::EReparent => "eReparent",
6926                ChangesLsb::EColorChanged => "eColorChanged",
6927                ChangesLsb::EBufferTransformChanged => "eBufferTransformChanged",
6928                ChangesLsb::ETransformToDisplayInverseChanged => "eTransformToDisplayInverseChanged",
6929                ChangesLsb::ECropChanged => "eCropChanged",
6930                ChangesLsb::EBufferChanged => "eBufferChanged",
6931                ChangesLsb::EAcquireFenceChanged => "eAcquireFenceChanged",
6932                ChangesLsb::EDataspaceChanged => "eDataspaceChanged",
6933                ChangesLsb::EHdrMetadataChanged => "eHdrMetadataChanged",
6934                ChangesLsb::ESurfaceDamageRegionChanged => "eSurfaceDamageRegionChanged",
6935                ChangesLsb::EApiChanged => "eApiChanged",
6936                ChangesLsb::ESidebandStreamChanged => "eSidebandStreamChanged",
6937                ChangesLsb::EColorTransformChanged => "eColorTransformChanged",
6938                ChangesLsb::EHasListenerCallbacksChanged => "eHasListenerCallbacksChanged",
6939                ChangesLsb::EInputInfoChanged => "eInputInfoChanged",
6940                ChangesLsb::ECornerRadiusChanged => "eCornerRadiusChanged",
6941            }
6942        }
6943    }
6944    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6945    #[repr(i32)]
6946    pub enum ChangesMsb {
6947        EChangesMsbNone = 0,
6948        EDestinationFrameChanged = 1,
6949        ECachedBufferChanged = 2,
6950        EBackgroundColorChanged = 4,
6951        EMetadataChanged = 8,
6952        EColorSpaceAgnosticChanged = 16,
6953        EFrameRateSelectionPriority = 32,
6954        EFrameRateChanged = 64,
6955        EBackgroundBlurRadiusChanged = 128,
6956        EProducerDisconnect = 256,
6957        EFixedTransformHintChanged = 512,
6958        EFrameNumberChanged = 1024,
6959        EBlurRegionsChanged = 2048,
6960        EAutoRefreshChanged = 4096,
6961        EStretchChanged = 8192,
6962        ETrustedOverlayChanged = 16384,
6963        EDropInputModeChanged = 32768,
6964        EClientDrawnCornerRadiusChanged = 65536,
6965        ESystemContentPriorityChanged = 131072,
6966        EBoxShadowSettingsChanged = 262144,
6967        EBorderSettingsChanged = 524288,
6968    }
6969    impl ChangesMsb {
6970        /// String value of the enum field names used in the ProtoBuf definition.
6971        ///
6972        /// The values are not transformed in any way and thus are considered stable
6973        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6974        pub fn as_str_name(&self) -> &'static str {
6975            match self {
6976                ChangesMsb::EChangesMsbNone => "eChangesMsbNone",
6977                ChangesMsb::EDestinationFrameChanged => "eDestinationFrameChanged",
6978                ChangesMsb::ECachedBufferChanged => "eCachedBufferChanged",
6979                ChangesMsb::EBackgroundColorChanged => "eBackgroundColorChanged",
6980                ChangesMsb::EMetadataChanged => "eMetadataChanged",
6981                ChangesMsb::EColorSpaceAgnosticChanged => "eColorSpaceAgnosticChanged",
6982                ChangesMsb::EFrameRateSelectionPriority => "eFrameRateSelectionPriority",
6983                ChangesMsb::EFrameRateChanged => "eFrameRateChanged",
6984                ChangesMsb::EBackgroundBlurRadiusChanged => "eBackgroundBlurRadiusChanged",
6985                ChangesMsb::EProducerDisconnect => "eProducerDisconnect",
6986                ChangesMsb::EFixedTransformHintChanged => "eFixedTransformHintChanged",
6987                ChangesMsb::EFrameNumberChanged => "eFrameNumberChanged",
6988                ChangesMsb::EBlurRegionsChanged => "eBlurRegionsChanged",
6989                ChangesMsb::EAutoRefreshChanged => "eAutoRefreshChanged",
6990                ChangesMsb::EStretchChanged => "eStretchChanged",
6991                ChangesMsb::ETrustedOverlayChanged => "eTrustedOverlayChanged",
6992                ChangesMsb::EDropInputModeChanged => "eDropInputModeChanged",
6993                ChangesMsb::EClientDrawnCornerRadiusChanged => "eClientDrawnCornerRadiusChanged",
6994                ChangesMsb::ESystemContentPriorityChanged => "eSystemContentPriorityChanged",
6995                ChangesMsb::EBoxShadowSettingsChanged => "eBoxShadowSettingsChanged",
6996                ChangesMsb::EBorderSettingsChanged => "eBorderSettingsChanged",
6997            }
6998        }
6999    }
7000    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7001    #[repr(i32)]
7002    pub enum Flags {
7003        EFlagsNone = 0,
7004        ELayerHidden = 1,
7005        ELayerOpaque = 2,
7006        ELayerSkipScreenshot = 64,
7007        ELayerSecure = 128,
7008        EEnableBackpressure = 256,
7009        ELayerIsDisplayDecoration = 512,
7010    }
7011    impl Flags {
7012        /// String value of the enum field names used in the ProtoBuf definition.
7013        ///
7014        /// The values are not transformed in any way and thus are considered stable
7015        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7016        pub fn as_str_name(&self) -> &'static str {
7017            match self {
7018                Flags::EFlagsNone => "eFlagsNone",
7019                Flags::ELayerHidden => "eLayerHidden",
7020                Flags::ELayerOpaque => "eLayerOpaque",
7021                Flags::ELayerSkipScreenshot => "eLayerSkipScreenshot",
7022                Flags::ELayerSecure => "eLayerSecure",
7023                Flags::EEnableBackpressure => "eEnableBackpressure",
7024                Flags::ELayerIsDisplayDecoration => "eLayerIsDisplayDecoration",
7025            }
7026        }
7027    }
7028    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7029    #[repr(i32)]
7030    pub enum DropInputMode {
7031        None = 0,
7032        All = 1,
7033        Obscured = 2,
7034    }
7035    impl DropInputMode {
7036        /// String value of the enum field names used in the ProtoBuf definition.
7037        ///
7038        /// The values are not transformed in any way and thus are considered stable
7039        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7040        pub fn as_str_name(&self) -> &'static str {
7041            match self {
7042                DropInputMode::None => "NONE",
7043                DropInputMode::All => "ALL",
7044                DropInputMode::Obscured => "OBSCURED",
7045            }
7046        }
7047    }
7048}
7049#[derive(Clone, PartialEq, ::prost::Message)]
7050pub struct DisplayState {
7051    #[prost(int32, optional, tag="1")]
7052    pub id: ::core::option::Option<i32>,
7053    #[prost(uint32, optional, tag="2")]
7054    pub what: ::core::option::Option<u32>,
7055    #[prost(uint32, optional, tag="3")]
7056    pub flags: ::core::option::Option<u32>,
7057    #[prost(uint32, optional, tag="4")]
7058    pub layer_stack: ::core::option::Option<u32>,
7059    #[prost(uint32, optional, tag="5")]
7060    pub orientation: ::core::option::Option<u32>,
7061    #[prost(message, optional, tag="6")]
7062    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
7063    #[prost(message, optional, tag="7")]
7064    pub oriented_display_space_rect: ::core::option::Option<RectProto>,
7065    #[prost(uint32, optional, tag="8")]
7066    pub width: ::core::option::Option<u32>,
7067    #[prost(uint32, optional, tag="9")]
7068    pub height: ::core::option::Option<u32>,
7069}
7070/// Nested message and enum types in `DisplayState`.
7071pub mod display_state {
7072    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7073    #[repr(i32)]
7074    pub enum Changes {
7075        EChangesNone = 0,
7076        ESurfaceChanged = 1,
7077        ELayerStackChanged = 2,
7078        EDisplayProjectionChanged = 4,
7079        EDisplaySizeChanged = 8,
7080        EFlagsChanged = 16,
7081    }
7082    impl Changes {
7083        /// String value of the enum field names used in the ProtoBuf definition.
7084        ///
7085        /// The values are not transformed in any way and thus are considered stable
7086        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7087        pub fn as_str_name(&self) -> &'static str {
7088            match self {
7089                Changes::EChangesNone => "eChangesNone",
7090                Changes::ESurfaceChanged => "eSurfaceChanged",
7091                Changes::ELayerStackChanged => "eLayerStackChanged",
7092                Changes::EDisplayProjectionChanged => "eDisplayProjectionChanged",
7093                Changes::EDisplaySizeChanged => "eDisplaySizeChanged",
7094                Changes::EFlagsChanged => "eFlagsChanged",
7095            }
7096        }
7097    }
7098}
7099// End of protos/perfetto/trace/android/surfaceflinger_transactions.proto
7100
7101// Begin of protos/perfetto/trace/android/user_list.proto
7102
7103#[derive(Clone, PartialEq, ::prost::Message)]
7104pub struct AndroidUserList {
7105    #[prost(message, repeated, tag="1")]
7106    pub users: ::prost::alloc::vec::Vec<android_user_list::UserInfo>,
7107    /// Error number
7108    #[prost(int32, optional, tag="2")]
7109    pub error: ::core::option::Option<i32>,
7110}
7111/// Nested message and enum types in `AndroidUserList`.
7112pub mod android_user_list {
7113    #[derive(Clone, PartialEq, ::prost::Message)]
7114    pub struct UserInfo {
7115        /// eg. android.os.usertype.full.SYSTEM, android.os.usertype.full.SECONDARY
7116        #[prost(string, optional, tag="1")]
7117        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
7118        #[prost(int32, optional, tag="2")]
7119        pub uid: ::core::option::Option<i32>,
7120    }
7121}
7122// End of protos/perfetto/trace/android/user_list.proto
7123
7124// Begin of protos/perfetto/trace/android/winscope_extensions.proto
7125
7126#[derive(Clone, PartialEq, ::prost::Message)]
7127pub struct WinscopeExtensions {
7128}
7129// End of protos/perfetto/trace/android/winscope_extensions.proto
7130
7131// Begin of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
7132
7133/// This message is not intended to be written by the chrome on the device.
7134/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
7135/// part of the trace that's written by the telemetry tracing agent).
7136#[derive(Clone, PartialEq, ::prost::Message)]
7137pub struct ChromeBenchmarkMetadata {
7138    /// Time when the benchmark execution started (host unixtime in microseconds).
7139    #[prost(int64, optional, tag="1")]
7140    pub benchmark_start_time_us: ::core::option::Option<i64>,
7141    /// Time when this particular story was run (host unixtime in microseconds).
7142    #[prost(int64, optional, tag="2")]
7143    pub story_run_time_us: ::core::option::Option<i64>,
7144    /// Name of benchmark.
7145    #[prost(string, optional, tag="3")]
7146    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
7147    /// Description of benchmark.
7148    #[prost(string, optional, tag="4")]
7149    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
7150    /// Optional label.
7151    #[prost(string, optional, tag="5")]
7152    pub label: ::core::option::Option<::prost::alloc::string::String>,
7153    /// Name of story.
7154    #[prost(string, optional, tag="6")]
7155    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
7156    /// List of story tags.
7157    #[prost(string, repeated, tag="7")]
7158    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7159    /// Index of the story run (>0 if the same story was run several times).
7160    #[prost(int32, optional, tag="8")]
7161    pub story_run_index: ::core::option::Option<i32>,
7162    /// Whether this run failed.
7163    #[prost(bool, optional, tag="9")]
7164    pub had_failures: ::core::option::Option<bool>,
7165}
7166// End of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
7167
7168// Begin of protos/perfetto/trace/chrome/chrome_metadata.proto
7169
7170/// Metadata for chrome traces.
7171#[derive(Clone, PartialEq, ::prost::Message)]
7172pub struct ChromeMetadataPacket {
7173    #[prost(message, optional, tag="1")]
7174    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
7175    /// Version code of Chrome used by Android's Play Store. This field is only set
7176    /// on Android.
7177    #[prost(int32, optional, tag="2")]
7178    pub chrome_version_code: ::core::option::Option<i32>,
7179    /// Comma separated list of enabled categories for tracing. The list of
7180    /// possible category strings are listed in code
7181    /// base/trace_event/builtin_categories.h.
7182    #[prost(string, optional, tag="3")]
7183    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
7184    /// List of Finch study/groups that apply to this trace.
7185    #[prost(message, repeated, tag="4")]
7186    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
7187}
7188/// Nested message and enum types in `ChromeMetadataPacket`.
7189pub mod chrome_metadata_packet {
7190    /// Finch name and group based on the ActiveGroupId.
7191    #[derive(Clone, PartialEq, ::prost::Message)]
7192    pub struct FinchHash {
7193        #[prost(uint32, optional, tag="1")]
7194        pub name: ::core::option::Option<u32>,
7195        #[prost(uint32, optional, tag="2")]
7196        pub group: ::core::option::Option<u32>,
7197    }
7198}
7199/// Metadata related to background tracing scenarios, states and triggers.
7200#[derive(Clone, PartialEq, ::prost::Message)]
7201pub struct BackgroundTracingMetadata {
7202    /// Specifies the rule that caused the trace to be uploaded.
7203    #[prost(message, optional, tag="1")]
7204    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
7205    /// List of all active triggers in current session, when trace was triggered.
7206    #[prost(message, repeated, tag="2")]
7207    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
7208    /// Hash of the scenario name.
7209    #[prost(fixed32, optional, tag="3")]
7210    pub scenario_name_hash: ::core::option::Option<u32>,
7211}
7212/// Nested message and enum types in `BackgroundTracingMetadata`.
7213pub mod background_tracing_metadata {
7214    /// Information about a trigger rule defined in the experiment config.
7215    #[derive(Clone, PartialEq, ::prost::Message)]
7216    pub struct TriggerRule {
7217        #[prost(enumeration="trigger_rule::TriggerType", optional, tag="1")]
7218        pub trigger_type: ::core::option::Option<i32>,
7219        #[prost(message, optional, tag="2")]
7220        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
7221        #[prost(message, optional, tag="3")]
7222        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
7223        /// Hash of the rule name.
7224        #[prost(fixed32, optional, tag="4")]
7225        pub name_hash: ::core::option::Option<u32>,
7226    }
7227    /// Nested message and enum types in `TriggerRule`.
7228    pub mod trigger_rule {
7229        /// Configuration of histogram trigger.
7230        #[derive(Clone, PartialEq, ::prost::Message)]
7231        pub struct HistogramRule {
7232            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
7233            #[prost(fixed64, optional, tag="1")]
7234            pub histogram_name_hash: ::core::option::Option<u64>,
7235            /// Range of values of the histogram that activates trigger.
7236            #[prost(int64, optional, tag="2")]
7237            pub histogram_min_trigger: ::core::option::Option<i64>,
7238            #[prost(int64, optional, tag="3")]
7239            pub histogram_max_trigger: ::core::option::Option<i64>,
7240        }
7241        /// Configuration of named trigger.
7242        #[derive(Clone, PartialEq, ::prost::Message)]
7243        pub struct NamedRule {
7244            #[prost(enumeration="named_rule::EventType", optional, tag="1")]
7245            pub event_type: ::core::option::Option<i32>,
7246            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
7247            /// content-trigger that actually fired.
7248            #[prost(fixed64, optional, tag="2")]
7249            pub content_trigger_name_hash: ::core::option::Option<u64>,
7250        }
7251        /// Nested message and enum types in `NamedRule`.
7252        pub mod named_rule {
7253            #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7254            #[repr(i32)]
7255            pub enum EventType {
7256                Unspecified = 0,
7257                SessionRestore = 1,
7258                Navigation = 2,
7259                Startup = 3,
7260                ReachedCode = 4,
7261                ContentTrigger = 5,
7262                TestRule = 1000,
7263            }
7264            impl EventType {
7265                /// String value of the enum field names used in the ProtoBuf definition.
7266                ///
7267                /// The values are not transformed in any way and thus are considered stable
7268                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7269                pub fn as_str_name(&self) -> &'static str {
7270                    match self {
7271                        EventType::Unspecified => "UNSPECIFIED",
7272                        EventType::SessionRestore => "SESSION_RESTORE",
7273                        EventType::Navigation => "NAVIGATION",
7274                        EventType::Startup => "STARTUP",
7275                        EventType::ReachedCode => "REACHED_CODE",
7276                        EventType::ContentTrigger => "CONTENT_TRIGGER",
7277                        EventType::TestRule => "TEST_RULE",
7278                    }
7279                }
7280            }
7281        }
7282        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7283        #[repr(i32)]
7284        pub enum TriggerType {
7285            TriggerUnspecified = 0,
7286            /// Traces are triggered by specific range of values of an UMA histogram.
7287            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
7288            /// Traces are triggered by specific named events in chromium codebase,
7289            /// like "second-update-failure".
7290            MonitorAndDumpWhenTriggerNamed = 2,
7291        }
7292        impl TriggerType {
7293            /// String value of the enum field names used in the ProtoBuf definition.
7294            ///
7295            /// The values are not transformed in any way and thus are considered stable
7296            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7297            pub fn as_str_name(&self) -> &'static str {
7298                match self {
7299                    TriggerType::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
7300                    TriggerType::MonitorAndDumpWhenSpecificHistogramAndValue => "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE",
7301                    TriggerType::MonitorAndDumpWhenTriggerNamed => "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED",
7302                }
7303            }
7304        }
7305    }
7306}
7307// End of protos/perfetto/trace/chrome/chrome_metadata.proto
7308
7309// Begin of protos/perfetto/trace/chrome/chrome_trace_event.proto
7310
7311#[derive(Clone, PartialEq, ::prost::Message)]
7312pub struct ChromeTracedValue {
7313    #[prost(enumeration="chrome_traced_value::NestedType", optional, tag="1")]
7314    pub nested_type: ::core::option::Option<i32>,
7315    #[prost(string, repeated, tag="2")]
7316    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7317    #[prost(message, repeated, tag="3")]
7318    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7319    #[prost(message, repeated, tag="4")]
7320    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7321    #[prost(int32, optional, tag="5")]
7322    pub int_value: ::core::option::Option<i32>,
7323    #[prost(double, optional, tag="6")]
7324    pub double_value: ::core::option::Option<f64>,
7325    #[prost(bool, optional, tag="7")]
7326    pub bool_value: ::core::option::Option<bool>,
7327    #[prost(string, optional, tag="8")]
7328    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
7329}
7330/// Nested message and enum types in `ChromeTracedValue`.
7331pub mod chrome_traced_value {
7332    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7333    #[repr(i32)]
7334    pub enum NestedType {
7335        Dict = 0,
7336        Array = 1,
7337    }
7338    impl NestedType {
7339        /// String value of the enum field names used in the ProtoBuf definition.
7340        ///
7341        /// The values are not transformed in any way and thus are considered stable
7342        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7343        pub fn as_str_name(&self) -> &'static str {
7344            match self {
7345                NestedType::Dict => "DICT",
7346                NestedType::Array => "ARRAY",
7347            }
7348        }
7349    }
7350}
7351#[derive(Clone, PartialEq, ::prost::Message)]
7352pub struct ChromeStringTableEntry {
7353    #[prost(string, optional, tag="1")]
7354    pub value: ::core::option::Option<::prost::alloc::string::String>,
7355    #[prost(int32, optional, tag="2")]
7356    pub index: ::core::option::Option<i32>,
7357}
7358/// Deprecated, use TrackEvent protos instead.
7359#[derive(Clone, PartialEq, ::prost::Message)]
7360pub struct ChromeTraceEvent {
7361    #[prost(string, optional, tag="1")]
7362    pub name: ::core::option::Option<::prost::alloc::string::String>,
7363    #[prost(int64, optional, tag="2")]
7364    pub timestamp: ::core::option::Option<i64>,
7365    #[prost(int32, optional, tag="3")]
7366    pub phase: ::core::option::Option<i32>,
7367    #[prost(int32, optional, tag="4")]
7368    pub thread_id: ::core::option::Option<i32>,
7369    #[prost(int64, optional, tag="5")]
7370    pub duration: ::core::option::Option<i64>,
7371    #[prost(int64, optional, tag="6")]
7372    pub thread_duration: ::core::option::Option<i64>,
7373    #[prost(string, optional, tag="7")]
7374    pub scope: ::core::option::Option<::prost::alloc::string::String>,
7375    #[prost(uint64, optional, tag="8")]
7376    pub id: ::core::option::Option<u64>,
7377    #[prost(uint32, optional, tag="9")]
7378    pub flags: ::core::option::Option<u32>,
7379    #[prost(string, optional, tag="10")]
7380    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
7381    #[prost(int32, optional, tag="11")]
7382    pub process_id: ::core::option::Option<i32>,
7383    #[prost(int64, optional, tag="12")]
7384    pub thread_timestamp: ::core::option::Option<i64>,
7385    #[prost(uint64, optional, tag="13")]
7386    pub bind_id: ::core::option::Option<u64>,
7387    #[prost(message, repeated, tag="14")]
7388    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
7389    /// Takes precedence over respectively |name| and
7390    /// |category_group_name_index| if set,
7391    /// and are indices into |string_table|.
7392    #[prost(uint32, optional, tag="15")]
7393    pub name_index: ::core::option::Option<u32>,
7394    #[prost(uint32, optional, tag="16")]
7395    pub category_group_name_index: ::core::option::Option<u32>,
7396}
7397/// Nested message and enum types in `ChromeTraceEvent`.
7398pub mod chrome_trace_event {
7399    #[derive(Clone, PartialEq, ::prost::Message)]
7400    pub struct Arg {
7401        #[prost(string, optional, tag="1")]
7402        pub name: ::core::option::Option<::prost::alloc::string::String>,
7403        /// Takes precedence over |name| if set,
7404        /// and is an index into |string_table|.
7405        #[prost(uint32, optional, tag="9")]
7406        pub name_index: ::core::option::Option<u32>,
7407        #[prost(oneof="arg::Value", tags="2, 3, 4, 5, 6, 7, 8, 10")]
7408        pub value: ::core::option::Option<arg::Value>,
7409    }
7410    /// Nested message and enum types in `Arg`.
7411    pub mod arg {
7412        #[derive(Clone, PartialEq, ::prost::Oneof)]
7413        pub enum Value {
7414            #[prost(bool, tag="2")]
7415            BoolValue(bool),
7416            #[prost(uint64, tag="3")]
7417            UintValue(u64),
7418            #[prost(int64, tag="4")]
7419            IntValue(i64),
7420            #[prost(double, tag="5")]
7421            DoubleValue(f64),
7422            #[prost(string, tag="6")]
7423            StringValue(::prost::alloc::string::String),
7424            /// Pointers are stored in a separate type as the JSON output treats them
7425            /// differently from other uint64 values.
7426            #[prost(uint64, tag="7")]
7427            PointerValue(u64),
7428            #[prost(string, tag="8")]
7429            JsonValue(::prost::alloc::string::String),
7430            #[prost(message, tag="10")]
7431            TracedValue(super::super::ChromeTracedValue),
7432        }
7433    }
7434}
7435#[derive(Clone, PartialEq, ::prost::Message)]
7436pub struct ChromeMetadata {
7437    #[prost(string, optional, tag="1")]
7438    pub name: ::core::option::Option<::prost::alloc::string::String>,
7439    #[prost(oneof="chrome_metadata::Value", tags="2, 3, 4, 5")]
7440    pub value: ::core::option::Option<chrome_metadata::Value>,
7441}
7442/// Nested message and enum types in `ChromeMetadata`.
7443pub mod chrome_metadata {
7444    #[derive(Clone, PartialEq, ::prost::Oneof)]
7445    pub enum Value {
7446        #[prost(string, tag="2")]
7447        StringValue(::prost::alloc::string::String),
7448        #[prost(bool, tag="3")]
7449        BoolValue(bool),
7450        #[prost(int64, tag="4")]
7451        IntValue(i64),
7452        #[prost(string, tag="5")]
7453        JsonValue(::prost::alloc::string::String),
7454    }
7455}
7456/// Subtraces produced in legacy json format by Chrome tracing agents not yet
7457/// updated to support the new binary format, e.g. ETW and CrOS ARC.
7458/// TODO(eseckler): Update these agents to become perfetto producers.
7459#[derive(Clone, PartialEq, ::prost::Message)]
7460pub struct ChromeLegacyJsonTrace {
7461    #[prost(enumeration="chrome_legacy_json_trace::TraceType", optional, tag="1")]
7462    pub r#type: ::core::option::Option<i32>,
7463    #[prost(string, optional, tag="2")]
7464    pub data: ::core::option::Option<::prost::alloc::string::String>,
7465}
7466/// Nested message and enum types in `ChromeLegacyJsonTrace`.
7467pub mod chrome_legacy_json_trace {
7468    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7469    #[repr(i32)]
7470    pub enum TraceType {
7471        UserTrace = 0,
7472        /// Deprecated.
7473        SystemTrace = 1,
7474    }
7475    impl TraceType {
7476        /// String value of the enum field names used in the ProtoBuf definition.
7477        ///
7478        /// The values are not transformed in any way and thus are considered stable
7479        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7480        pub fn as_str_name(&self) -> &'static str {
7481            match self {
7482                TraceType::UserTrace => "USER_TRACE",
7483                TraceType::SystemTrace => "SYSTEM_TRACE",
7484            }
7485        }
7486    }
7487}
7488#[derive(Clone, PartialEq, ::prost::Message)]
7489pub struct ChromeEventBundle {
7490    /// Deprecated, use TrackEvent protos instead.
7491    #[deprecated]
7492    #[prost(message, repeated, tag="1")]
7493    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
7494    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
7495    /// which contains typed fields.
7496    #[prost(message, repeated, tag="2")]
7497    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
7498    /// ftrace output from CrOS and Cast system tracing agents.
7499    /// TODO(eseckler): Replace system traces with native perfetto service.
7500    #[prost(string, repeated, tag="4")]
7501    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7502    #[prost(message, repeated, tag="5")]
7503    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
7504    /// Contents of a string table that's valid for
7505    /// the whole ChromeEventBundle entry.
7506    #[deprecated]
7507    #[prost(message, repeated, tag="3")]
7508    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
7509}
7510// End of protos/perfetto/trace/chrome/chrome_trace_event.proto
7511
7512// Begin of protos/perfetto/trace/chrome/chrome_trigger.proto
7513
7514/// Information about a specific trigger during a background tracing scenario
7515/// Associated packet timestamps are useful to delimitate a scenario range in a
7516/// trace. Triggers are also useful for filtering traces.
7517#[derive(Clone, PartialEq, ::prost::Message)]
7518pub struct ChromeTrigger {
7519    /// Name of the trigger which was received.
7520    #[prost(string, optional, tag="1")]
7521    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
7522    /// SHA1 hash of the trigger name.
7523    #[prost(fixed32, optional, tag="2")]
7524    pub trigger_name_hash: ::core::option::Option<u32>,
7525    /// Flow id which should terminate on this trigger.
7526    #[prost(fixed64, optional, tag="3")]
7527    pub flow_id: ::core::option::Option<u64>,
7528}
7529// End of protos/perfetto/trace/chrome/chrome_trigger.proto
7530
7531// Begin of protos/perfetto/trace/chrome/v8.proto
7532
7533// These are the protos for the V8 data source.
7534//
7535// All events are associated to a V8 isolate instance. There can be multiple
7536// instances associated to a given thread, although this is rare.
7537//
7538// Generated code in V8 is allocated in the V8 heap (in a special executeable
7539// section), this means that code can be garbage collected (when no longer used)
7540// or can be moved around (e.g. during heap compactation). This means that a
7541// given callsite might correspond to function `A` at one point in time and to
7542// function `B` later on.
7543// In addition V8 code has various levels of optimization, so a function might
7544// have multiple associated code snippets.
7545//
7546// V8 does not track code deletion, so we have to indirectly infer it by
7547// detecting code overlaps, if a newer code creation event overlaps with older
7548// code we need to asume that the old code was deleted. Code moves are logged,
7549// and there is an event to track those.
7550
7551/// Strings used by V8 can have different encodings, instead of coverting to a
7552/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
7553/// "raw" string and do the convestion at trace ingestion time.
7554///
7555/// ATTENTION: There is some overhead in using a message (as opossed to having
7556/// the `oneof encoded_string`` direcly embedded in the message), so use this
7557/// message in places were these extra bytes don't matter that much.
7558/// Next id: 5
7559#[derive(Clone, PartialEq, ::prost::Message)]
7560pub struct V8String {
7561    #[prost(oneof="v8_string::EncodedString", tags="1, 2, 3")]
7562    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
7563}
7564/// Nested message and enum types in `V8String`.
7565pub mod v8_string {
7566    #[derive(Clone, PartialEq, ::prost::Oneof)]
7567    pub enum EncodedString {
7568        /// ISO/IEC 8859-1:1998 encoding aka latin1
7569        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7570        #[prost(bytes, tag="1")]
7571        Latin1(::prost::alloc::vec::Vec<u8>),
7572        /// UTF-16 Little Endian Encoding
7573        #[prost(bytes, tag="2")]
7574        Utf16Le(::prost::alloc::vec::Vec<u8>),
7575        /// UTF-16 Big Endian Encoding
7576        #[prost(bytes, tag="3")]
7577        Utf16Be(::prost::alloc::vec::Vec<u8>),
7578    }
7579}
7580/// Interned version of V8String
7581#[derive(Clone, PartialEq, ::prost::Message)]
7582pub struct InternedV8String {
7583    #[prost(uint64, optional, tag="1")]
7584    pub iid: ::core::option::Option<u64>,
7585    /// We inline the fields in V8String here to save some bytes in the serialized
7586    /// proto format. Interning is about saving bytes so this makes sense here.
7587    #[prost(oneof="interned_v8_string::EncodedString", tags="2, 3, 4")]
7588    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
7589}
7590/// Nested message and enum types in `InternedV8String`.
7591pub mod interned_v8_string {
7592    /// We inline the fields in V8String here to save some bytes in the serialized
7593    /// proto format. Interning is about saving bytes so this makes sense here.
7594    #[derive(Clone, PartialEq, ::prost::Oneof)]
7595    pub enum EncodedString {
7596        /// ISO/IEC 8859-1:1998 encoding aka latin1
7597        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7598        #[prost(bytes, tag="2")]
7599        Latin1(::prost::alloc::vec::Vec<u8>),
7600        /// UTF-16 Little Endian Encoding
7601        #[prost(bytes, tag="3")]
7602        Utf16Le(::prost::alloc::vec::Vec<u8>),
7603        /// UTF-16 Big Endian Encoding
7604        #[prost(bytes, tag="4")]
7605        Utf16Be(::prost::alloc::vec::Vec<u8>),
7606    }
7607}
7608/// Represents a script that was compiled to generate code. Some V8 code is
7609/// generated out of scripts and will reference a V8Script other types of code
7610/// will not (e.g. builtins).
7611#[derive(Clone, PartialEq, ::prost::Message)]
7612pub struct InternedV8JsScript {
7613    #[prost(uint64, optional, tag="1")]
7614    pub iid: ::core::option::Option<u64>,
7615    /// Unique in a given isolate
7616    #[prost(int32, optional, tag="2")]
7617    pub script_id: ::core::option::Option<i32>,
7618    #[prost(enumeration="interned_v8_js_script::Type", optional, tag="3")]
7619    pub r#type: ::core::option::Option<i32>,
7620    #[prost(message, optional, tag="4")]
7621    pub name: ::core::option::Option<V8String>,
7622    /// Actual source of the script
7623    #[prost(message, optional, tag="5")]
7624    pub source: ::core::option::Option<V8String>,
7625}
7626/// Nested message and enum types in `InternedV8JsScript`.
7627pub mod interned_v8_js_script {
7628    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7629    #[repr(i32)]
7630    pub enum Type {
7631        Unknown = 0,
7632        Normal = 1,
7633        Eval = 2,
7634        Module = 3,
7635        Native = 4,
7636        Extension = 5,
7637        Inspector = 6,
7638    }
7639    impl Type {
7640        /// String value of the enum field names used in the ProtoBuf definition.
7641        ///
7642        /// The values are not transformed in any way and thus are considered stable
7643        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7644        pub fn as_str_name(&self) -> &'static str {
7645            match self {
7646                Type::Unknown => "TYPE_UNKNOWN",
7647                Type::Normal => "TYPE_NORMAL",
7648                Type::Eval => "TYPE_EVAL",
7649                Type::Module => "TYPE_MODULE",
7650                Type::Native => "TYPE_NATIVE",
7651                Type::Extension => "TYPE_EXTENSION",
7652                Type::Inspector => "TYPE_INSPECTOR",
7653            }
7654        }
7655    }
7656}
7657#[derive(Clone, PartialEq, ::prost::Message)]
7658pub struct InternedV8WasmScript {
7659    #[prost(uint64, optional, tag="1")]
7660    pub iid: ::core::option::Option<u64>,
7661    /// Unique in a given isolate
7662    #[prost(int32, optional, tag="2")]
7663    pub script_id: ::core::option::Option<i32>,
7664    #[prost(string, optional, tag="3")]
7665    pub url: ::core::option::Option<::prost::alloc::string::String>,
7666    /// Raw transferred wasm native module wire bytes.
7667    #[prost(bytes="vec", optional, tag="4")]
7668    pub wire_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7669}
7670#[derive(Clone, PartialEq, ::prost::Message)]
7671pub struct InternedV8JsFunction {
7672    #[prost(uint64, optional, tag="1")]
7673    pub iid: ::core::option::Option<u64>,
7674    #[prost(uint64, optional, tag="2")]
7675    pub v8_js_function_name_iid: ::core::option::Option<u64>,
7676    #[prost(uint64, optional, tag="3")]
7677    pub v8_js_script_iid: ::core::option::Option<u64>,
7678    #[prost(bool, optional, tag="4")]
7679    pub is_toplevel: ::core::option::Option<bool>,
7680    #[prost(enumeration="interned_v8_js_function::Kind", optional, tag="5")]
7681    pub kind: ::core::option::Option<i32>,
7682    /// Where in the script source this function is defined. This is counted in
7683    /// bytes not characters.
7684    #[prost(uint32, optional, tag="6")]
7685    pub byte_offset: ::core::option::Option<u32>,
7686    #[prost(uint32, optional, tag="7")]
7687    pub line: ::core::option::Option<u32>,
7688    #[prost(uint32, optional, tag="8")]
7689    pub column: ::core::option::Option<u32>,
7690}
7691/// Nested message and enum types in `InternedV8JsFunction`.
7692pub mod interned_v8_js_function {
7693    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7694    #[repr(i32)]
7695    pub enum Kind {
7696        Unknown = 0,
7697        NormalFunction = 1,
7698        Module = 2,
7699        AsyncModule = 3,
7700        BaseConstructor = 4,
7701        DefaultBaseConstructor = 5,
7702        DefaultDerivedConstructor = 6,
7703        DerivedConstructor = 7,
7704        GetterFunction = 8,
7705        StaticGetterFunction = 9,
7706        SetterFunction = 10,
7707        StaticSetterFunction = 11,
7708        ArrowFunction = 12,
7709        AsyncArrowFunction = 13,
7710        AsyncFunction = 14,
7711        AsyncConciseMethod = 15,
7712        StaticAsyncConciseMethod = 16,
7713        AsyncConciseGeneratorMethod = 17,
7714        StaticAsyncConciseGeneratorMethod = 18,
7715        AsyncGeneratorFunction = 19,
7716        GeneratorFunction = 20,
7717        ConciseGeneratorMethod = 21,
7718        StaticConciseGeneratorMethod = 22,
7719        ConciseMethod = 23,
7720        StaticConciseMethod = 24,
7721        ClassMembersInitializerFunction = 25,
7722        ClassStaticInitializerFunction = 26,
7723        Invalid = 27,
7724    }
7725    impl Kind {
7726        /// String value of the enum field names used in the ProtoBuf definition.
7727        ///
7728        /// The values are not transformed in any way and thus are considered stable
7729        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7730        pub fn as_str_name(&self) -> &'static str {
7731            match self {
7732                Kind::Unknown => "KIND_UNKNOWN",
7733                Kind::NormalFunction => "KIND_NORMAL_FUNCTION",
7734                Kind::Module => "KIND_MODULE",
7735                Kind::AsyncModule => "KIND_ASYNC_MODULE",
7736                Kind::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
7737                Kind::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
7738                Kind::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
7739                Kind::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
7740                Kind::GetterFunction => "KIND_GETTER_FUNCTION",
7741                Kind::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
7742                Kind::SetterFunction => "KIND_SETTER_FUNCTION",
7743                Kind::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
7744                Kind::ArrowFunction => "KIND_ARROW_FUNCTION",
7745                Kind::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
7746                Kind::AsyncFunction => "KIND_ASYNC_FUNCTION",
7747                Kind::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
7748                Kind::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
7749                Kind::AsyncConciseGeneratorMethod => "KIND_ASYNC_CONCISE_GENERATOR_METHOD",
7750                Kind::StaticAsyncConciseGeneratorMethod => "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD",
7751                Kind::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
7752                Kind::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
7753                Kind::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
7754                Kind::StaticConciseGeneratorMethod => "KIND_STATIC_CONCISE_GENERATOR_METHOD",
7755                Kind::ConciseMethod => "KIND_CONCISE_METHOD",
7756                Kind::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
7757                Kind::ClassMembersInitializerFunction => "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION",
7758                Kind::ClassStaticInitializerFunction => "KIND_CLASS_STATIC_INITIALIZER_FUNCTION",
7759                Kind::Invalid => "KIND_INVALID",
7760            }
7761        }
7762    }
7763}
7764/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
7765/// engine.
7766#[derive(Clone, PartialEq, ::prost::Message)]
7767pub struct InternedV8Isolate {
7768    #[prost(uint64, optional, tag="1")]
7769    pub iid: ::core::option::Option<u64>,
7770    #[prost(uint32, optional, tag="2")]
7771    pub pid: ::core::option::Option<u32>,
7772    /// Process unique isolate id.
7773    #[prost(int32, optional, tag="3")]
7774    pub isolate_id: ::core::option::Option<i32>,
7775    #[prost(message, optional, tag="4")]
7776    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
7777    /// The embedded blob holds code for built in functions that are precompiled in
7778    /// the V8 library.
7779    #[prost(uint64, optional, tag="5")]
7780    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
7781    #[prost(uint64, optional, tag="6")]
7782    pub embedded_blob_code_size: ::core::option::Option<u64>,
7783}
7784/// Nested message and enum types in `InternedV8Isolate`.
7785pub mod interned_v8_isolate {
7786    /// A code range is a virtual memory cage that may contain executable code.
7787    /// Depending on the Isolate settings the Isolate might have one or not.
7788    /// See:
7789    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
7790    /// If the isolate defines code range this will be tracked here.
7791    #[derive(Clone, PartialEq, ::prost::Message)]
7792    pub struct CodeRange {
7793        #[prost(uint64, optional, tag="1")]
7794        pub base_address: ::core::option::Option<u64>,
7795        #[prost(uint64, optional, tag="2")]
7796        pub size: ::core::option::Option<u64>,
7797        /// Used when short builtin calls are enabled, where embedded builtins are
7798        /// copied into the CodeRange so calls can be nearer.
7799        #[prost(uint64, optional, tag="3")]
7800        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
7801        /// Whether this code range is shared with other Isolates in the same process
7802        #[prost(bool, optional, tag="4")]
7803        pub is_process_wide: ::core::option::Option<bool>,
7804    }
7805}
7806#[derive(Clone, PartialEq, ::prost::Message)]
7807pub struct V8JsCode {
7808    #[prost(uint64, optional, tag="1")]
7809    pub v8_isolate_iid: ::core::option::Option<u64>,
7810    #[prost(uint32, optional, tag="2")]
7811    pub tid: ::core::option::Option<u32>,
7812    #[prost(uint64, optional, tag="3")]
7813    pub v8_js_function_iid: ::core::option::Option<u64>,
7814    #[prost(enumeration="v8_js_code::Tier", optional, tag="4")]
7815    pub tier: ::core::option::Option<i32>,
7816    #[prost(uint64, optional, tag="5")]
7817    pub instruction_start: ::core::option::Option<u64>,
7818    #[prost(uint64, optional, tag="6")]
7819    pub instruction_size_bytes: ::core::option::Option<u64>,
7820    #[prost(oneof="v8_js_code::Instructions", tags="7, 8")]
7821    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
7822}
7823/// Nested message and enum types in `V8JsCode`.
7824pub mod v8_js_code {
7825    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7826    #[repr(i32)]
7827    pub enum Tier {
7828        Unknown = 0,
7829        Ignition = 1,
7830        Sparkplug = 2,
7831        Maglev = 3,
7832        Turboshaft = 4,
7833        Turbofan = 5,
7834    }
7835    impl Tier {
7836        /// String value of the enum field names used in the ProtoBuf definition.
7837        ///
7838        /// The values are not transformed in any way and thus are considered stable
7839        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7840        pub fn as_str_name(&self) -> &'static str {
7841            match self {
7842                Tier::Unknown => "TIER_UNKNOWN",
7843                Tier::Ignition => "TIER_IGNITION",
7844                Tier::Sparkplug => "TIER_SPARKPLUG",
7845                Tier::Maglev => "TIER_MAGLEV",
7846                Tier::Turboshaft => "TIER_TURBOSHAFT",
7847                Tier::Turbofan => "TIER_TURBOFAN",
7848            }
7849        }
7850    }
7851    #[derive(Clone, PartialEq, ::prost::Oneof)]
7852    pub enum Instructions {
7853        #[prost(bytes, tag="7")]
7854        MachineCode(::prost::alloc::vec::Vec<u8>),
7855        #[prost(bytes, tag="8")]
7856        Bytecode(::prost::alloc::vec::Vec<u8>),
7857    }
7858}
7859#[derive(Clone, PartialEq, ::prost::Message)]
7860pub struct V8InternalCode {
7861    #[prost(uint64, optional, tag="1")]
7862    pub v8_isolate_iid: ::core::option::Option<u64>,
7863    #[prost(uint32, optional, tag="2")]
7864    pub tid: ::core::option::Option<u32>,
7865    #[prost(string, optional, tag="3")]
7866    pub name: ::core::option::Option<::prost::alloc::string::String>,
7867    #[prost(enumeration="v8_internal_code::Type", optional, tag="4")]
7868    pub r#type: ::core::option::Option<i32>,
7869    #[prost(int32, optional, tag="5")]
7870    pub builtin_id: ::core::option::Option<i32>,
7871    #[prost(uint64, optional, tag="6")]
7872    pub instruction_start: ::core::option::Option<u64>,
7873    #[prost(uint64, optional, tag="7")]
7874    pub instruction_size_bytes: ::core::option::Option<u64>,
7875    #[prost(bytes="vec", optional, tag="8")]
7876    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7877}
7878/// Nested message and enum types in `V8InternalCode`.
7879pub mod v8_internal_code {
7880    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7881    #[repr(i32)]
7882    pub enum Type {
7883        Unknown = 0,
7884        BytecodeHandler = 1,
7885        ForTesting = 2,
7886        Builtin = 3,
7887        WasmFunction = 4,
7888        WasmToCapiFunction = 5,
7889        WasmToJsFunction = 6,
7890        JsToWasmFunction = 7,
7891        JsToJsFunction = 8,
7892        CWasmEntry = 9,
7893    }
7894    impl Type {
7895        /// String value of the enum field names used in the ProtoBuf definition.
7896        ///
7897        /// The values are not transformed in any way and thus are considered stable
7898        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7899        pub fn as_str_name(&self) -> &'static str {
7900            match self {
7901                Type::Unknown => "TYPE_UNKNOWN",
7902                Type::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
7903                Type::ForTesting => "TYPE_FOR_TESTING",
7904                Type::Builtin => "TYPE_BUILTIN",
7905                Type::WasmFunction => "TYPE_WASM_FUNCTION",
7906                Type::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
7907                Type::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
7908                Type::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
7909                Type::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
7910                Type::CWasmEntry => "TYPE_C_WASM_ENTRY",
7911            }
7912        }
7913    }
7914}
7915#[derive(Clone, PartialEq, ::prost::Message)]
7916pub struct V8WasmCode {
7917    #[prost(uint64, optional, tag="1")]
7918    pub v8_isolate_iid: ::core::option::Option<u64>,
7919    #[prost(uint32, optional, tag="2")]
7920    pub tid: ::core::option::Option<u32>,
7921    #[prost(uint64, optional, tag="3")]
7922    pub v8_wasm_script_iid: ::core::option::Option<u64>,
7923    #[prost(string, optional, tag="4")]
7924    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
7925    #[prost(enumeration="v8_wasm_code::Tier", optional, tag="5")]
7926    pub tier: ::core::option::Option<i32>,
7927    #[prost(int32, optional, tag="6")]
7928    pub code_offset_in_module: ::core::option::Option<i32>,
7929    #[prost(uint64, optional, tag="7")]
7930    pub instruction_start: ::core::option::Option<u64>,
7931    #[prost(uint64, optional, tag="8")]
7932    pub instruction_size_bytes: ::core::option::Option<u64>,
7933    #[prost(bytes="vec", optional, tag="9")]
7934    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7935}
7936/// Nested message and enum types in `V8WasmCode`.
7937pub mod v8_wasm_code {
7938    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7939    #[repr(i32)]
7940    pub enum Tier {
7941        Unknown = 0,
7942        Liftoff = 1,
7943        Turbofan = 2,
7944    }
7945    impl Tier {
7946        /// String value of the enum field names used in the ProtoBuf definition.
7947        ///
7948        /// The values are not transformed in any way and thus are considered stable
7949        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7950        pub fn as_str_name(&self) -> &'static str {
7951            match self {
7952                Tier::Unknown => "TIER_UNKNOWN",
7953                Tier::Liftoff => "TIER_LIFTOFF",
7954                Tier::Turbofan => "TIER_TURBOFAN",
7955            }
7956        }
7957    }
7958}
7959#[derive(Clone, PartialEq, ::prost::Message)]
7960pub struct V8RegExpCode {
7961    #[prost(uint64, optional, tag="1")]
7962    pub v8_isolate_iid: ::core::option::Option<u64>,
7963    #[prost(uint32, optional, tag="2")]
7964    pub tid: ::core::option::Option<u32>,
7965    #[prost(message, optional, tag="3")]
7966    pub pattern: ::core::option::Option<V8String>,
7967    #[prost(uint64, optional, tag="4")]
7968    pub instruction_start: ::core::option::Option<u64>,
7969    #[prost(uint64, optional, tag="5")]
7970    pub instruction_size_bytes: ::core::option::Option<u64>,
7971    #[prost(bytes="vec", optional, tag="6")]
7972    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7973}
7974/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
7975/// memory by V8's GC.
7976#[derive(Clone, PartialEq, ::prost::Message)]
7977pub struct V8CodeMove {
7978    #[prost(uint64, optional, tag="1")]
7979    pub isolate_iid: ::core::option::Option<u64>,
7980    #[prost(uint32, optional, tag="2")]
7981    pub tid: ::core::option::Option<u32>,
7982    #[prost(uint64, optional, tag="3")]
7983    pub from_instruction_start_address: ::core::option::Option<u64>,
7984    #[prost(uint64, optional, tag="4")]
7985    pub to_instruction_start_address: ::core::option::Option<u64>,
7986    #[prost(uint64, optional, tag="5")]
7987    pub instruction_size_bytes: ::core::option::Option<u64>,
7988    #[prost(oneof="v8_code_move::ToInstructions", tags="6, 7")]
7989    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
7990}
7991/// Nested message and enum types in `V8CodeMove`.
7992pub mod v8_code_move {
7993    #[derive(Clone, PartialEq, ::prost::Oneof)]
7994    pub enum ToInstructions {
7995        #[prost(bytes, tag="6")]
7996        ToMachineCode(::prost::alloc::vec::Vec<u8>),
7997        #[prost(bytes, tag="7")]
7998        ToBytecode(::prost::alloc::vec::Vec<u8>),
7999    }
8000}
8001#[derive(Clone, PartialEq, ::prost::Message)]
8002pub struct V8CodeDefaults {
8003    #[prost(uint32, optional, tag="1")]
8004    pub tid: ::core::option::Option<u32>,
8005}
8006// End of protos/perfetto/trace/chrome/v8.proto
8007
8008// Begin of protos/perfetto/trace/clock_snapshot.proto
8009
8010/// A snapshot of clock readings to allow for trace alignment.
8011#[derive(Clone, PartialEq, ::prost::Message)]
8012pub struct ClockSnapshot {
8013    #[prost(message, repeated, tag="1")]
8014    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
8015    /// The authoritative clock domain for the trace. Defaults to BOOTTIME, but can
8016    /// be overridden in TraceConfig's builtin_data_sources. Trace processor will
8017    /// attempt to translate packet/event timestamps from various data sources (and
8018    /// their chosen clock domains) to this domain during import.
8019    #[prost(enumeration="BuiltinClock", optional, tag="2")]
8020    pub primary_trace_clock: ::core::option::Option<i32>,
8021}
8022/// Nested message and enum types in `ClockSnapshot`.
8023pub mod clock_snapshot {
8024    #[derive(Clone, PartialEq, ::prost::Message)]
8025    pub struct Clock {
8026        /// Clock IDs have the following semantic:
8027        /// [1, 63]:    Builtin types, see BuiltinClock from
8028        ///              ../common/builtin_clock.proto.
8029        /// [64, 127]:  User-defined clocks. These clocks are sequence-scoped. They
8030        ///              are only valid within the same |trusted_packet_sequence_id|
8031        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
8032        ///              that emitted the clock snapshot).
8033        /// [128, MAX]: Reserved for future use. The idea is to allow global clock
8034        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
8035        #[prost(uint32, optional, tag="1")]
8036        pub clock_id: ::core::option::Option<u32>,
8037        /// Absolute timestamp. Unit is ns unless specified otherwise by the
8038        /// unit_multiplier_ns field below.
8039        #[prost(uint64, optional, tag="2")]
8040        pub timestamp: ::core::option::Option<u64>,
8041        /// When true each TracePacket's timestamp should be interpreted as a delta
8042        /// from the last TracePacket's timestamp (referencing this clock) emitted by
8043        /// the same packet_sequence_id. Should only be used for user-defined
8044        /// sequence-local clocks. The first packet timestamp after each
8045        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
8046        /// the ClockSnapshot.
8047        #[prost(bool, optional, tag="3")]
8048        pub is_incremental: ::core::option::Option<bool>,
8049        /// Allows to specify a custom unit different than the default (ns) for this
8050        /// clock domain.
8051        ///
8052        /// * A multiplier of 1000 means that a timestamp = 3 should be interpreted
8053        ///    as 3000 ns = 3 us.
8054        /// * All snapshots for the same clock within a trace need to use the same
8055        ///    unit.
8056        /// * `unit_multiplier_ns` is *not* supported for the `primary_trace_clock`.
8057        #[prost(uint64, optional, tag="4")]
8058        pub unit_multiplier_ns: ::core::option::Option<u64>,
8059    }
8060    /// Nested message and enum types in `Clock`.
8061    pub mod clock {
8062        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
8063        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8064        #[repr(i32)]
8065        pub enum BuiltinClocks {
8066            Unknown = 0,
8067            Realtime = 1,
8068            RealtimeCoarse = 2,
8069            Monotonic = 3,
8070            MonotonicCoarse = 4,
8071            MonotonicRaw = 5,
8072            Boottime = 6,
8073            BuiltinClockMaxId = 63,
8074        }
8075        impl BuiltinClocks {
8076            /// String value of the enum field names used in the ProtoBuf definition.
8077            ///
8078            /// The values are not transformed in any way and thus are considered stable
8079            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8080            pub fn as_str_name(&self) -> &'static str {
8081                match self {
8082                    BuiltinClocks::Unknown => "UNKNOWN",
8083                    BuiltinClocks::Realtime => "REALTIME",
8084                    BuiltinClocks::RealtimeCoarse => "REALTIME_COARSE",
8085                    BuiltinClocks::Monotonic => "MONOTONIC",
8086                    BuiltinClocks::MonotonicCoarse => "MONOTONIC_COARSE",
8087                    BuiltinClocks::MonotonicRaw => "MONOTONIC_RAW",
8088                    BuiltinClocks::Boottime => "BOOTTIME",
8089                    BuiltinClocks::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
8090                }
8091            }
8092        }
8093    }
8094}
8095// End of protos/perfetto/trace/clock_snapshot.proto
8096
8097// Begin of protos/perfetto/trace/etw/etw.proto
8098
8099/// Proto definition based on the Thread_v2 CSwitch class definition
8100/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
8101#[derive(Clone, PartialEq, ::prost::Message)]
8102pub struct CSwitchEtwEvent {
8103    /// New thread ID after the switch.
8104    #[prost(uint32, optional, tag="1")]
8105    pub new_thread_id: ::core::option::Option<u32>,
8106    /// Previous thread ID.
8107    #[prost(uint32, optional, tag="2")]
8108    pub old_thread_id: ::core::option::Option<u32>,
8109    /// Thread priority of the new thread.
8110    #[prost(sint32, optional, tag="3")]
8111    pub new_thread_priority: ::core::option::Option<i32>,
8112    /// Thread priority of the previous thread.
8113    #[prost(sint32, optional, tag="4")]
8114    pub old_thread_priority: ::core::option::Option<i32>,
8115    /// The index of the C-state that was last used by the processor. A value of 0
8116    /// represents the lightest idle state with higher values representing deeper
8117    /// C-states.
8118    #[prost(uint32, optional, tag="5")]
8119    pub previous_c_state: ::core::option::Option<u32>,
8120    /// Ideal wait time of the previous thread.
8121    #[prost(sint32, optional, tag="9")]
8122    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
8123    /// Wait time for the new thread.
8124    #[prost(uint32, optional, tag="10")]
8125    pub new_thread_wait_time: ::core::option::Option<u32>,
8126    #[prost(oneof="c_switch_etw_event::OldThreadWaitReasonEnumOrInt", tags="6, 11")]
8127    pub old_thread_wait_reason_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitReasonEnumOrInt>,
8128    #[prost(oneof="c_switch_etw_event::OldThreadWaitModeEnumOrInt", tags="7, 12")]
8129    pub old_thread_wait_mode_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitModeEnumOrInt>,
8130    #[prost(oneof="c_switch_etw_event::OldThreadStateEnumOrInt", tags="8, 13")]
8131    pub old_thread_state_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadStateEnumOrInt>,
8132}
8133/// Nested message and enum types in `CSwitchEtwEvent`.
8134pub mod c_switch_etw_event {
8135    /// Wait reason for the previous thread. The ordering is important as based on
8136    /// the OldThreadWaitReason definition from the link above. The following are
8137    /// the possible values:
8138    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8139    #[repr(i32)]
8140    pub enum OldThreadWaitReason {
8141        Executive = 0,
8142        FreePage = 1,
8143        PageIn = 2,
8144        PoolAllocation = 3,
8145        DelayExecution = 4,
8146        Suspend = 5,
8147        UserRequest = 6,
8148        WrExecutive = 7,
8149        WrFreePage = 8,
8150        WrPageIn = 9,
8151        WrPoolAllocation = 10,
8152        WrDelayExecution = 11,
8153        WrSuspended = 12,
8154        WrUserRequest = 13,
8155        WrEventPair = 14,
8156        WrQueue = 15,
8157        WrLpcReceiver = 16,
8158        WrLpcReply = 17,
8159        WrVirtualMemory = 18,
8160        WrPageOut = 19,
8161        WrRendezVous = 20,
8162        WrKeyedEvent = 21,
8163        WrTerminated = 22,
8164        WrProcessInSwap = 23,
8165        WrCpuRateControl = 24,
8166        WrCalloutStack = 25,
8167        WrKernel = 26,
8168        WrResource = 27,
8169        WrPushLock = 28,
8170        WrMutex = 29,
8171        WrQuantumEnd = 30,
8172        WrDispatchInt = 31,
8173        WrPreempted = 32,
8174        WrYieldExecution = 33,
8175        WrFastMutex = 34,
8176        WrGuardMutex = 35,
8177        WrRundown = 36,
8178        MaximumWaitReason = 37,
8179    }
8180    impl OldThreadWaitReason {
8181        /// String value of the enum field names used in the ProtoBuf definition.
8182        ///
8183        /// The values are not transformed in any way and thus are considered stable
8184        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8185        pub fn as_str_name(&self) -> &'static str {
8186            match self {
8187                OldThreadWaitReason::Executive => "EXECUTIVE",
8188                OldThreadWaitReason::FreePage => "FREE_PAGE",
8189                OldThreadWaitReason::PageIn => "PAGE_IN",
8190                OldThreadWaitReason::PoolAllocation => "POOL_ALLOCATION",
8191                OldThreadWaitReason::DelayExecution => "DELAY_EXECUTION",
8192                OldThreadWaitReason::Suspend => "SUSPEND",
8193                OldThreadWaitReason::UserRequest => "USER_REQUEST",
8194                OldThreadWaitReason::WrExecutive => "WR_EXECUTIVE",
8195                OldThreadWaitReason::WrFreePage => "WR_FREE_PAGE",
8196                OldThreadWaitReason::WrPageIn => "WR_PAGE_IN",
8197                OldThreadWaitReason::WrPoolAllocation => "WR_POOL_ALLOCATION",
8198                OldThreadWaitReason::WrDelayExecution => "WR_DELAY_EXECUTION",
8199                OldThreadWaitReason::WrSuspended => "WR_SUSPENDED",
8200                OldThreadWaitReason::WrUserRequest => "WR_USER_REQUEST",
8201                OldThreadWaitReason::WrEventPair => "WR_EVENT_PAIR",
8202                OldThreadWaitReason::WrQueue => "WR_QUEUE",
8203                OldThreadWaitReason::WrLpcReceiver => "WR_LPC_RECEIVER",
8204                OldThreadWaitReason::WrLpcReply => "WR_LPC_REPLY",
8205                OldThreadWaitReason::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
8206                OldThreadWaitReason::WrPageOut => "WR_PAGE_OUT",
8207                OldThreadWaitReason::WrRendezVous => "WR_RENDEZ_VOUS",
8208                OldThreadWaitReason::WrKeyedEvent => "WR_KEYED_EVENT",
8209                OldThreadWaitReason::WrTerminated => "WR_TERMINATED",
8210                OldThreadWaitReason::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
8211                OldThreadWaitReason::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
8212                OldThreadWaitReason::WrCalloutStack => "WR_CALLOUT_STACK",
8213                OldThreadWaitReason::WrKernel => "WR_KERNEL",
8214                OldThreadWaitReason::WrResource => "WR_RESOURCE",
8215                OldThreadWaitReason::WrPushLock => "WR_PUSH_LOCK",
8216                OldThreadWaitReason::WrMutex => "WR_MUTEX",
8217                OldThreadWaitReason::WrQuantumEnd => "WR_QUANTUM_END",
8218                OldThreadWaitReason::WrDispatchInt => "WR_DISPATCH_INT",
8219                OldThreadWaitReason::WrPreempted => "WR_PREEMPTED",
8220                OldThreadWaitReason::WrYieldExecution => "WR_YIELD_EXECUTION",
8221                OldThreadWaitReason::WrFastMutex => "WR_FAST_MUTEX",
8222                OldThreadWaitReason::WrGuardMutex => "WR_GUARD_MUTEX",
8223                OldThreadWaitReason::WrRundown => "WR_RUNDOWN",
8224                OldThreadWaitReason::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
8225            }
8226        }
8227    }
8228    /// Wait mode for the previous thread. The ordering is important as based on
8229    /// the OldThreadWaitMode definition from the link above. The following are the
8230    /// possible values:
8231    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8232    #[repr(i32)]
8233    pub enum OldThreadWaitMode {
8234        KernelMode = 0,
8235        UserMode = 1,
8236    }
8237    impl OldThreadWaitMode {
8238        /// String value of the enum field names used in the ProtoBuf definition.
8239        ///
8240        /// The values are not transformed in any way and thus are considered stable
8241        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8242        pub fn as_str_name(&self) -> &'static str {
8243            match self {
8244                OldThreadWaitMode::KernelMode => "KERNEL_MODE",
8245                OldThreadWaitMode::UserMode => "USER_MODE",
8246            }
8247        }
8248    }
8249    /// State of the previous thread. The ordering is important as based on the
8250    /// OldThreadState definition from the link above. The following are the
8251    /// possible state values:
8252    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8253    #[repr(i32)]
8254    pub enum OldThreadState {
8255        Initialized = 0,
8256        Ready = 1,
8257        Running = 2,
8258        Standby = 3,
8259        Terminated = 4,
8260        Waiting = 5,
8261        Transition = 6,
8262        DeferredReady = 7,
8263    }
8264    impl OldThreadState {
8265        /// String value of the enum field names used in the ProtoBuf definition.
8266        ///
8267        /// The values are not transformed in any way and thus are considered stable
8268        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8269        pub fn as_str_name(&self) -> &'static str {
8270            match self {
8271                OldThreadState::Initialized => "INITIALIZED",
8272                OldThreadState::Ready => "READY",
8273                OldThreadState::Running => "RUNNING",
8274                OldThreadState::Standby => "STANDBY",
8275                OldThreadState::Terminated => "TERMINATED",
8276                OldThreadState::Waiting => "WAITING",
8277                OldThreadState::Transition => "TRANSITION",
8278                OldThreadState::DeferredReady => "DEFERRED_READY",
8279            }
8280        }
8281    }
8282    #[derive(Clone, PartialEq, ::prost::Oneof)]
8283    pub enum OldThreadWaitReasonEnumOrInt {
8284        #[prost(enumeration="OldThreadWaitReason", tag="6")]
8285        OldThreadWaitReason(i32),
8286        #[prost(int32, tag="11")]
8287        OldThreadWaitReasonInt(i32),
8288    }
8289    #[derive(Clone, PartialEq, ::prost::Oneof)]
8290    pub enum OldThreadWaitModeEnumOrInt {
8291        #[prost(enumeration="OldThreadWaitMode", tag="7")]
8292        OldThreadWaitMode(i32),
8293        #[prost(int32, tag="12")]
8294        OldThreadWaitModeInt(i32),
8295    }
8296    #[derive(Clone, PartialEq, ::prost::Oneof)]
8297    pub enum OldThreadStateEnumOrInt {
8298        #[prost(enumeration="OldThreadState", tag="8")]
8299        OldThreadState(i32),
8300        #[prost(sint32, tag="13")]
8301        OldThreadStateInt(i32),
8302    }
8303}
8304/// Proto definition based on the Thread_v2 CSwitch class definition
8305/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
8306#[derive(Clone, PartialEq, ::prost::Message)]
8307pub struct ReadyThreadEtwEvent {
8308    /// The thread identifier of the thread being readied for execution.
8309    #[prost(uint32, optional, tag="1")]
8310    pub t_thread_id: ::core::option::Option<u32>,
8311    ///   The value by which the priority is being adjusted.
8312    #[prost(sint32, optional, tag="3")]
8313    pub adjust_increment: ::core::option::Option<i32>,
8314    #[prost(oneof="ready_thread_etw_event::AdjustReasonEnumOrInt", tags="2, 5")]
8315    pub adjust_reason_enum_or_int: ::core::option::Option<ready_thread_etw_event::AdjustReasonEnumOrInt>,
8316    #[prost(oneof="ready_thread_etw_event::FlagEnumOrInt", tags="4, 6")]
8317    pub flag_enum_or_int: ::core::option::Option<ready_thread_etw_event::FlagEnumOrInt>,
8318}
8319/// Nested message and enum types in `ReadyThreadEtwEvent`.
8320pub mod ready_thread_etw_event {
8321    /// The reason for the priority boost. The ordering is important as based on
8322    /// the AdjustReason definition from the link above.
8323    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8324    #[repr(i32)]
8325    pub enum AdjustReason {
8326        IgnoreTheIncrement = 0,
8327        /// Apply the increment, which will decay incrementally at the end of each
8328        /// quantum.
8329        ApplyIncrement = 1,
8330        /// Apply the increment as a boost that will decay in its entirety at quantum
8331        /// (typically for priority donation).
8332        ApplyIncrementBoost = 2,
8333    }
8334    impl AdjustReason {
8335        /// String value of the enum field names used in the ProtoBuf definition.
8336        ///
8337        /// The values are not transformed in any way and thus are considered stable
8338        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8339        pub fn as_str_name(&self) -> &'static str {
8340            match self {
8341                AdjustReason::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
8342                AdjustReason::ApplyIncrement => "APPLY_INCREMENT",
8343                AdjustReason::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
8344            }
8345        }
8346    }
8347    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8348    #[repr(i32)]
8349    pub enum TraceFlag {
8350        Unspecified = 0,
8351        /// The thread has been readied from DPC (deferred procedure call).
8352        ThreadReadied = 1,
8353        /// The kernel stack is currently swapped out.
8354        KernelStackSwappedOut = 2,
8355        /// The process address space is swapped out.
8356        ProcessAddressSwappedOut = 4,
8357    }
8358    impl TraceFlag {
8359        /// String value of the enum field names used in the ProtoBuf definition.
8360        ///
8361        /// The values are not transformed in any way and thus are considered stable
8362        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8363        pub fn as_str_name(&self) -> &'static str {
8364            match self {
8365                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
8366                TraceFlag::ThreadReadied => "THREAD_READIED",
8367                TraceFlag::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
8368                TraceFlag::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
8369            }
8370        }
8371    }
8372    #[derive(Clone, PartialEq, ::prost::Oneof)]
8373    pub enum AdjustReasonEnumOrInt {
8374        #[prost(enumeration="AdjustReason", tag="2")]
8375        AdjustReason(i32),
8376        #[prost(int32, tag="5")]
8377        AdjustReasonInt(i32),
8378    }
8379    #[derive(Clone, PartialEq, ::prost::Oneof)]
8380    pub enum FlagEnumOrInt {
8381        #[prost(enumeration="TraceFlag", tag="4")]
8382        Flag(i32),
8383        #[prost(int32, tag="6")]
8384        FlagInt(i32),
8385    }
8386}
8387/// Proto definition based on the type of MemInfoArgs_V1, found here and observed
8388/// on local traces using tracerpt:
8389/// <https://github.com/repnz/etw-providers-docs/blob/master/Manifests-Win10-17134/Microsoft-Windows-Kernel-Memory.xml>
8390#[derive(Clone, PartialEq, ::prost::Message)]
8391pub struct MemInfoEtwEvent {
8392    /// Number of memory priorities on the system.
8393    #[prost(uint32, optional, tag="1")]
8394    pub priority_levels: ::core::option::Option<u32>,
8395    /// Number of pages in the zero list.
8396    #[prost(uint64, optional, tag="2")]
8397    pub zero_page_count: ::core::option::Option<u64>,
8398    /// Number of pages in the free list.
8399    #[prost(uint64, optional, tag="3")]
8400    pub free_page_count: ::core::option::Option<u64>,
8401    /// Number of pages in the modified list.
8402    #[prost(uint64, optional, tag="4")]
8403    pub modified_page_count: ::core::option::Option<u64>,
8404    /// Number of modified non-paged pool pages.
8405    #[prost(uint64, optional, tag="5")]
8406    pub modified_no_write_page_count: ::core::option::Option<u64>,
8407    /// Number of bad pages.
8408    #[prost(uint64, optional, tag="6")]
8409    pub bad_page_count: ::core::option::Option<u64>,
8410    /// Number of standby pages by memory priority.
8411    #[prost(uint64, repeated, packed="false", tag="7")]
8412    pub standby_page_counts: ::prost::alloc::vec::Vec<u64>,
8413    /// Number of repurposed pages by memory priority.
8414    #[prost(uint64, repeated, packed="false", tag="8")]
8415    pub repurposed_page_counts: ::prost::alloc::vec::Vec<u64>,
8416    /// Modified paged pages.
8417    #[prost(uint64, optional, tag="9")]
8418    pub modified_page_count_page_file: ::core::option::Option<u64>,
8419    /// Pool page counts.
8420    #[prost(uint64, optional, tag="10")]
8421    pub paged_pool_page_count: ::core::option::Option<u64>,
8422    #[prost(uint64, optional, tag="11")]
8423    pub non_paged_pool_page_count: ::core::option::Option<u64>,
8424    /// Memory Descriptor List page count.
8425    #[prost(uint64, optional, tag="12")]
8426    pub mdl_page_count: ::core::option::Option<u64>,
8427    /// Commit weight.
8428    #[prost(uint64, optional, tag="13")]
8429    pub commit_page_count: ::core::option::Option<u64>,
8430}
8431/// Proto definition based on the `FileIo_Create` class definition.
8432#[derive(Clone, PartialEq, ::prost::Message)]
8433pub struct FileIoCreateEtwEvent {
8434    #[prost(uint64, optional, tag="1")]
8435    pub irp_ptr: ::core::option::Option<u64>,
8436    #[prost(uint64, optional, tag="2")]
8437    pub file_object: ::core::option::Option<u64>,
8438    #[prost(uint32, optional, tag="3")]
8439    pub ttid: ::core::option::Option<u32>,
8440    #[prost(uint32, optional, tag="4")]
8441    pub create_options: ::core::option::Option<u32>,
8442    #[prost(uint32, optional, tag="5")]
8443    pub file_attributes: ::core::option::Option<u32>,
8444    #[prost(uint32, optional, tag="6")]
8445    pub share_access: ::core::option::Option<u32>,
8446    #[prost(string, optional, tag="7")]
8447    pub open_path: ::core::option::Option<::prost::alloc::string::String>,
8448}
8449/// Proto definition based on the `FileIo_DirEnum` class definition.
8450#[derive(Clone, PartialEq, ::prost::Message)]
8451pub struct FileIoDirEnumEtwEvent {
8452    #[prost(uint64, optional, tag="1")]
8453    pub irp_ptr: ::core::option::Option<u64>,
8454    #[prost(uint64, optional, tag="2")]
8455    pub file_object: ::core::option::Option<u64>,
8456    #[prost(uint64, optional, tag="3")]
8457    pub file_key: ::core::option::Option<u64>,
8458    #[prost(uint32, optional, tag="4")]
8459    pub ttid: ::core::option::Option<u32>,
8460    #[prost(uint32, optional, tag="5")]
8461    pub length: ::core::option::Option<u32>,
8462    #[prost(uint32, optional, tag="6")]
8463    pub info_class: ::core::option::Option<u32>,
8464    #[prost(uint32, optional, tag="7")]
8465    pub file_index: ::core::option::Option<u32>,
8466    #[prost(string, optional, tag="8")]
8467    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
8468    #[prost(uint32, optional, tag="9")]
8469    pub opcode: ::core::option::Option<u32>,
8470}
8471/// Proto definition based on the `FileIo_Info` class definition.
8472#[derive(Clone, PartialEq, ::prost::Message)]
8473pub struct FileIoInfoEtwEvent {
8474    #[prost(uint64, optional, tag="1")]
8475    pub irp_ptr: ::core::option::Option<u64>,
8476    #[prost(uint64, optional, tag="2")]
8477    pub file_object: ::core::option::Option<u64>,
8478    #[prost(uint64, optional, tag="3")]
8479    pub file_key: ::core::option::Option<u64>,
8480    #[prost(uint64, optional, tag="4")]
8481    pub extra_info: ::core::option::Option<u64>,
8482    #[prost(uint32, optional, tag="5")]
8483    pub ttid: ::core::option::Option<u32>,
8484    #[prost(uint32, optional, tag="6")]
8485    pub info_class: ::core::option::Option<u32>,
8486    #[prost(uint32, optional, tag="7")]
8487    pub opcode: ::core::option::Option<u32>,
8488}
8489/// Proto definition based on the `FileIo_ReadWrite` class definition.
8490#[derive(Clone, PartialEq, ::prost::Message)]
8491pub struct FileIoReadWriteEtwEvent {
8492    #[prost(uint64, optional, tag="1")]
8493    pub offset: ::core::option::Option<u64>,
8494    #[prost(uint64, optional, tag="2")]
8495    pub irp_ptr: ::core::option::Option<u64>,
8496    #[prost(uint64, optional, tag="3")]
8497    pub file_object: ::core::option::Option<u64>,
8498    #[prost(uint64, optional, tag="4")]
8499    pub file_key: ::core::option::Option<u64>,
8500    #[prost(uint32, optional, tag="5")]
8501    pub ttid: ::core::option::Option<u32>,
8502    #[prost(uint32, optional, tag="6")]
8503    pub io_size: ::core::option::Option<u32>,
8504    #[prost(uint32, optional, tag="7")]
8505    pub io_flags: ::core::option::Option<u32>,
8506    #[prost(uint32, optional, tag="8")]
8507    pub opcode: ::core::option::Option<u32>,
8508}
8509/// Proto definition based on the `FileIo_SimpleOp` class definition.
8510#[derive(Clone, PartialEq, ::prost::Message)]
8511pub struct FileIoSimpleOpEtwEvent {
8512    #[prost(uint64, optional, tag="1")]
8513    pub irp_ptr: ::core::option::Option<u64>,
8514    #[prost(uint64, optional, tag="2")]
8515    pub file_object: ::core::option::Option<u64>,
8516    #[prost(uint64, optional, tag="3")]
8517    pub file_key: ::core::option::Option<u64>,
8518    #[prost(uint32, optional, tag="4")]
8519    pub ttid: ::core::option::Option<u32>,
8520    #[prost(uint32, optional, tag="5")]
8521    pub opcode: ::core::option::Option<u32>,
8522}
8523/// Proto definition based on the `FileIo_OpEnd` class definition.
8524#[derive(Clone, PartialEq, ::prost::Message)]
8525pub struct FileIoOpEndEtwEvent {
8526    #[prost(uint64, optional, tag="1")]
8527    pub irp_ptr: ::core::option::Option<u64>,
8528    #[prost(uint64, optional, tag="2")]
8529    pub extra_info: ::core::option::Option<u64>,
8530    #[prost(uint32, optional, tag="3")]
8531    pub nt_status: ::core::option::Option<u32>,
8532}
8533// End of protos/perfetto/trace/etw/etw.proto
8534
8535// Begin of protos/perfetto/trace/etw/etw_event.proto
8536
8537#[derive(Clone, PartialEq, ::prost::Message)]
8538pub struct EtwTraceEvent {
8539    #[prost(uint64, optional, tag="1")]
8540    pub timestamp: ::core::option::Option<u64>,
8541    #[prost(uint32, optional, tag="4")]
8542    pub cpu: ::core::option::Option<u32>,
8543    #[prost(uint32, optional, tag="5")]
8544    pub thread_id: ::core::option::Option<u32>,
8545    #[prost(oneof="etw_trace_event::Event", tags="2, 3, 6, 7, 8, 9, 10, 11, 12")]
8546    pub event: ::core::option::Option<etw_trace_event::Event>,
8547}
8548/// Nested message and enum types in `EtwTraceEvent`.
8549pub mod etw_trace_event {
8550    #[derive(Clone, PartialEq, ::prost::Oneof)]
8551    pub enum Event {
8552        #[prost(message, tag="2")]
8553        CSwitch(super::CSwitchEtwEvent),
8554        #[prost(message, tag="3")]
8555        ReadyThread(super::ReadyThreadEtwEvent),
8556        #[prost(message, tag="6")]
8557        MemInfo(super::MemInfoEtwEvent),
8558        #[prost(message, tag="7")]
8559        FileIoCreate(super::FileIoCreateEtwEvent),
8560        #[prost(message, tag="8")]
8561        FileIoDirEnum(super::FileIoDirEnumEtwEvent),
8562        #[prost(message, tag="9")]
8563        FileIoInfo(super::FileIoInfoEtwEvent),
8564        #[prost(message, tag="10")]
8565        FileIoReadWrite(super::FileIoReadWriteEtwEvent),
8566        #[prost(message, tag="11")]
8567        FileIoSimpleOp(super::FileIoSimpleOpEtwEvent),
8568        #[prost(message, tag="12")]
8569        FileIoOpEnd(super::FileIoOpEndEtwEvent),
8570    }
8571}
8572// End of protos/perfetto/trace/etw/etw_event.proto
8573
8574// Begin of protos/perfetto/trace/etw/etw_event_bundle.proto
8575
8576/// The result of tracing one or more etw event uses per-processor buffers where
8577/// an in-use buffer is assigned to each processor at all times. Therefore,
8578/// collecting multiple events they should already be synchronized.
8579#[derive(Clone, PartialEq, ::prost::Message)]
8580pub struct EtwTraceEventBundle {
8581    #[prost(uint32, optional, tag="1")]
8582    pub cpu: ::core::option::Option<u32>,
8583    #[prost(message, repeated, tag="2")]
8584    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
8585}
8586// Begin of protos/perfetto/trace/evdev.proto
8587
8588/// Records an event in the evdev protocol, as used by Linux and some other *nix
8589/// kernels to report events from human interface devices.
8590///
8591/// Next ID: 3
8592#[derive(Clone, PartialEq, ::prost::Message)]
8593pub struct EvdevEvent {
8594    /// The device's unique ID number. This need not be the number of its
8595    /// /dev/input/event node.
8596    #[prost(uint32, optional, tag="1")]
8597    pub device_id: ::core::option::Option<u32>,
8598    #[prost(oneof="evdev_event::Event", tags="2")]
8599    pub event: ::core::option::Option<evdev_event::Event>,
8600}
8601/// Nested message and enum types in `EvdevEvent`.
8602pub mod evdev_event {
8603    /// Proto version of Linux's struct input_event. The meaning of types and codes
8604    /// are described in the Linux kernel documentation at
8605    /// <https://www.kernel.org/doc/html/latest/input/event-codes.html.>
8606    ///
8607    /// Next ID: 5
8608    #[derive(Clone, PartialEq, ::prost::Message)]
8609    pub struct InputEvent {
8610        /// The monotonic timestamp at which the event occurred, as reported by the
8611        /// kernel, in integer nanoseconds. If omitted, assume that it hasn't changed
8612        /// since the previous event.
8613        #[prost(uint64, optional, tag="1")]
8614        pub kernel_timestamp: ::core::option::Option<u64>,
8615        /// The code grouping for this event, used to distinguish signals, absolute
8616        /// and relative axis changes, and other types of event.
8617        #[prost(uint32, optional, tag="2")]
8618        pub r#type: ::core::option::Option<u32>,
8619        /// The precise type of the event, such as the axis code for absolute and
8620        /// relative events.
8621        #[prost(uint32, optional, tag="3")]
8622        pub code: ::core::option::Option<u32>,
8623        /// The new value of the axis described by type and code.
8624        #[prost(sint32, optional, tag="4")]
8625        pub value: ::core::option::Option<i32>,
8626    }
8627    #[derive(Clone, PartialEq, ::prost::Oneof)]
8628    pub enum Event {
8629        #[prost(message, tag="2")]
8630        InputEvent(InputEvent),
8631    }
8632}
8633// End of protos/perfetto/trace/evdev.proto
8634
8635// Begin of protos/perfetto/common/descriptor.proto
8636
8637/// The protocol compiler can output a FileDescriptorSet containing the .proto
8638/// files it parses.
8639#[derive(Clone, PartialEq, ::prost::Message)]
8640pub struct FileDescriptorSet {
8641    #[prost(message, repeated, tag="1")]
8642    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
8643}
8644/// Describes a complete .proto file.
8645#[derive(Clone, PartialEq, ::prost::Message)]
8646pub struct FileDescriptorProto {
8647    /// file name, relative to root of source tree
8648    #[prost(string, optional, tag="1")]
8649    pub name: ::core::option::Option<::prost::alloc::string::String>,
8650    /// e.g. "foo", "foo.bar", etc.
8651    #[prost(string, optional, tag="2")]
8652    pub package: ::core::option::Option<::prost::alloc::string::String>,
8653    /// Names of files imported by this file.
8654    #[prost(string, repeated, tag="3")]
8655    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8656    /// Indexes of the public imported files in the dependency list above.
8657    #[prost(int32, repeated, packed="false", tag="10")]
8658    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
8659    /// Indexes of the weak imported files in the dependency list.
8660    /// For Google-internal migration only. Do not use.
8661    #[prost(int32, repeated, packed="false", tag="11")]
8662    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
8663    /// All top-level definitions in this file.
8664    #[prost(message, repeated, tag="4")]
8665    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
8666    #[prost(message, repeated, tag="5")]
8667    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
8668    #[prost(message, repeated, tag="7")]
8669    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8670}
8671/// Describes a message type.
8672#[derive(Clone, PartialEq, ::prost::Message)]
8673pub struct DescriptorProto {
8674    #[prost(string, optional, tag="1")]
8675    pub name: ::core::option::Option<::prost::alloc::string::String>,
8676    #[prost(message, repeated, tag="2")]
8677    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8678    #[prost(message, repeated, tag="6")]
8679    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8680    #[prost(message, repeated, tag="3")]
8681    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
8682    #[prost(message, repeated, tag="4")]
8683    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
8684    #[prost(message, repeated, tag="8")]
8685    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
8686    #[prost(message, repeated, tag="9")]
8687    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
8688    /// Reserved field names, which may not be used by fields in the same message.
8689    /// A given name may only be reserved once.
8690    #[prost(string, repeated, tag="10")]
8691    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8692}
8693/// Nested message and enum types in `DescriptorProto`.
8694pub mod descriptor_proto {
8695    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
8696    /// fields or extension ranges in the same message. Reserved ranges may
8697    /// not overlap.
8698    #[derive(Clone, PartialEq, ::prost::Message)]
8699    pub struct ReservedRange {
8700        /// Inclusive.
8701        #[prost(int32, optional, tag="1")]
8702        pub start: ::core::option::Option<i32>,
8703        /// Exclusive.
8704        #[prost(int32, optional, tag="2")]
8705        pub end: ::core::option::Option<i32>,
8706    }
8707}
8708/// A message representing a option the parser does not recognize. This only
8709/// appears in options protos created by the compiler::Parser class.
8710/// DescriptorPool resolves these when building Descriptor objects. Therefore,
8711/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
8712/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
8713/// in them.
8714#[derive(Clone, PartialEq, ::prost::Message)]
8715pub struct UninterpretedOption {
8716    #[prost(message, repeated, tag="2")]
8717    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
8718    /// The value of the uninterpreted option, in whatever type the tokenizer
8719    /// identified it as during parsing. Exactly one of these should be set.
8720    #[prost(string, optional, tag="3")]
8721    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
8722    #[prost(uint64, optional, tag="4")]
8723    pub positive_int_value: ::core::option::Option<u64>,
8724    #[prost(int64, optional, tag="5")]
8725    pub negative_int_value: ::core::option::Option<i64>,
8726    #[prost(double, optional, tag="6")]
8727    pub double_value: ::core::option::Option<f64>,
8728    #[prost(bytes="vec", optional, tag="7")]
8729    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8730    #[prost(string, optional, tag="8")]
8731    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
8732}
8733/// Nested message and enum types in `UninterpretedOption`.
8734pub mod uninterpreted_option {
8735    /// The name of the uninterpreted option.  Each string represents a segment in
8736    /// a dot-separated name.  is_extension is true iff a segment represents an
8737    /// extension (denoted with parentheses in options specs in .proto files).
8738    /// E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
8739    /// "foo.(bar.baz).moo".
8740    #[derive(Clone, PartialEq, ::prost::Message)]
8741    pub struct NamePart {
8742        #[prost(string, optional, tag="1")]
8743        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
8744        #[prost(bool, optional, tag="2")]
8745        pub is_extension: ::core::option::Option<bool>,
8746    }
8747}
8748#[derive(Clone, PartialEq, ::prost::Message)]
8749pub struct FieldOptions {
8750    /// The packed option can be enabled for repeated primitive fields to enable
8751    /// a more efficient representation on the wire. Rather than repeatedly
8752    /// writing the tag and type for each element, the entire array is encoded as
8753    /// a single length-delimited blob. In proto3, only explicit setting it to
8754    /// false will avoid using packed encoding.
8755    #[prost(bool, optional, tag="2")]
8756    pub packed: ::core::option::Option<bool>,
8757    /// The parser stores options it doesn't recognize here. See above.
8758    #[prost(message, repeated, tag="999")]
8759    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
8760}
8761/// Describes a field within a message.
8762#[derive(Clone, PartialEq, ::prost::Message)]
8763pub struct FieldDescriptorProto {
8764    #[prost(string, optional, tag="1")]
8765    pub name: ::core::option::Option<::prost::alloc::string::String>,
8766    #[prost(int32, optional, tag="3")]
8767    pub number: ::core::option::Option<i32>,
8768    #[prost(enumeration="field_descriptor_proto::Label", optional, tag="4")]
8769    pub label: ::core::option::Option<i32>,
8770    /// If type_name is set, this need not be set.  If both this and type_name
8771    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
8772    #[prost(enumeration="field_descriptor_proto::Type", optional, tag="5")]
8773    pub r#type: ::core::option::Option<i32>,
8774    /// For message and enum types, this is the name of the type.  If the name
8775    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
8776    /// rules are used to find the type (i.e. first the nested types within this
8777    /// message are searched, then within the parent, on up to the root
8778    /// namespace).
8779    #[prost(string, optional, tag="6")]
8780    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
8781    /// For extensions, this is the name of the type being extended.  It is
8782    /// resolved in the same manner as type_name.
8783    #[prost(string, optional, tag="2")]
8784    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
8785    /// For numeric types, contains the original text representation of the value.
8786    /// For booleans, "true" or "false".
8787    /// For strings, contains the default text contents (not escaped in any way).
8788    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
8789    /// TODO(kenton):  Base-64 encode?
8790    #[prost(string, optional, tag="7")]
8791    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
8792    #[prost(message, optional, tag="8")]
8793    pub options: ::core::option::Option<FieldOptions>,
8794    /// If set, gives the index of a oneof in the containing type's oneof_decl
8795    /// list.  This field is a member of that oneof.
8796    #[prost(int32, optional, tag="9")]
8797    pub oneof_index: ::core::option::Option<i32>,
8798}
8799/// Nested message and enum types in `FieldDescriptorProto`.
8800pub mod field_descriptor_proto {
8801    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8802    #[repr(i32)]
8803    pub enum Type {
8804        /// 0 is reserved for errors.
8805        /// Order is weird for historical reasons.
8806        Double = 1,
8807        Float = 2,
8808        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
8809        /// negative values are likely.
8810        Int64 = 3,
8811        Uint64 = 4,
8812        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
8813        /// negative values are likely.
8814        Int32 = 5,
8815        Fixed64 = 6,
8816        Fixed32 = 7,
8817        Bool = 8,
8818        String = 9,
8819        /// Tag-delimited aggregate.
8820        /// Group type is deprecated and not supported in proto3. However, Proto3
8821        /// implementations should still be able to parse the group wire format and
8822        /// treat group fields as unknown fields.
8823        Group = 10,
8824        /// Length-delimited aggregate.
8825        Message = 11,
8826        /// New in version 2.
8827        Bytes = 12,
8828        Uint32 = 13,
8829        Enum = 14,
8830        Sfixed32 = 15,
8831        Sfixed64 = 16,
8832        /// Uses ZigZag encoding.
8833        Sint32 = 17,
8834        /// Uses ZigZag encoding.
8835        Sint64 = 18,
8836    }
8837    impl Type {
8838        /// String value of the enum field names used in the ProtoBuf definition.
8839        ///
8840        /// The values are not transformed in any way and thus are considered stable
8841        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8842        pub fn as_str_name(&self) -> &'static str {
8843            match self {
8844                Type::Double => "TYPE_DOUBLE",
8845                Type::Float => "TYPE_FLOAT",
8846                Type::Int64 => "TYPE_INT64",
8847                Type::Uint64 => "TYPE_UINT64",
8848                Type::Int32 => "TYPE_INT32",
8849                Type::Fixed64 => "TYPE_FIXED64",
8850                Type::Fixed32 => "TYPE_FIXED32",
8851                Type::Bool => "TYPE_BOOL",
8852                Type::String => "TYPE_STRING",
8853                Type::Group => "TYPE_GROUP",
8854                Type::Message => "TYPE_MESSAGE",
8855                Type::Bytes => "TYPE_BYTES",
8856                Type::Uint32 => "TYPE_UINT32",
8857                Type::Enum => "TYPE_ENUM",
8858                Type::Sfixed32 => "TYPE_SFIXED32",
8859                Type::Sfixed64 => "TYPE_SFIXED64",
8860                Type::Sint32 => "TYPE_SINT32",
8861                Type::Sint64 => "TYPE_SINT64",
8862            }
8863        }
8864    }
8865    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8866    #[repr(i32)]
8867    pub enum Label {
8868        /// 0 is reserved for errors
8869        Optional = 1,
8870        Required = 2,
8871        Repeated = 3,
8872    }
8873    impl Label {
8874        /// String value of the enum field names used in the ProtoBuf definition.
8875        ///
8876        /// The values are not transformed in any way and thus are considered stable
8877        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8878        pub fn as_str_name(&self) -> &'static str {
8879            match self {
8880                Label::Optional => "LABEL_OPTIONAL",
8881                Label::Required => "LABEL_REQUIRED",
8882                Label::Repeated => "LABEL_REPEATED",
8883            }
8884        }
8885    }
8886}
8887/// Describes a oneof.
8888#[derive(Clone, PartialEq, ::prost::Message)]
8889pub struct OneofDescriptorProto {
8890    #[prost(string, optional, tag="1")]
8891    pub name: ::core::option::Option<::prost::alloc::string::String>,
8892    #[prost(message, optional, tag="2")]
8893    pub options: ::core::option::Option<OneofOptions>,
8894}
8895/// Describes an enum type.
8896#[derive(Clone, PartialEq, ::prost::Message)]
8897pub struct EnumDescriptorProto {
8898    #[prost(string, optional, tag="1")]
8899    pub name: ::core::option::Option<::prost::alloc::string::String>,
8900    #[prost(message, repeated, tag="2")]
8901    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
8902    /// Reserved enum value names, which may not be reused. A given name may only
8903    /// be reserved once.
8904    #[prost(string, repeated, tag="5")]
8905    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8906}
8907/// Describes a value within an enum.
8908#[derive(Clone, PartialEq, ::prost::Message)]
8909pub struct EnumValueDescriptorProto {
8910    #[prost(string, optional, tag="1")]
8911    pub name: ::core::option::Option<::prost::alloc::string::String>,
8912    #[prost(int32, optional, tag="2")]
8913    pub number: ::core::option::Option<i32>,
8914}
8915#[derive(Clone, PartialEq, ::prost::Message)]
8916pub struct OneofOptions {
8917}
8918// End of protos/perfetto/common/descriptor.proto
8919
8920// Begin of protos/perfetto/trace/extension_descriptor.proto
8921
8922/// This message contains descriptors used to parse extension fields of
8923/// TrackEvent.
8924///
8925/// See docs/design-docs/extensions.md for more details.
8926#[derive(Clone, PartialEq, ::prost::Message)]
8927pub struct ExtensionDescriptor {
8928    #[prost(message, optional, tag="1")]
8929    pub extension_set: ::core::option::Option<FileDescriptorSet>,
8930}
8931// End of protos/perfetto/trace/extension_descriptor.proto
8932
8933// Begin of protos/perfetto/trace/filesystem/inode_file_map.proto
8934
8935/// Represents the mapping between inode numbers in a block device and their path
8936/// on the filesystem
8937#[derive(Clone, PartialEq, ::prost::Message)]
8938pub struct InodeFileMap {
8939    #[prost(uint64, optional, tag="1")]
8940    pub block_device_id: ::core::option::Option<u64>,
8941    /// The mount points of the block device, e.g. \["system"\].
8942    #[prost(string, repeated, tag="2")]
8943    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8944    /// The list of all the entries from the block device
8945    #[prost(message, repeated, tag="3")]
8946    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
8947}
8948/// Nested message and enum types in `InodeFileMap`.
8949pub mod inode_file_map {
8950    /// Representation of Entry
8951    #[derive(Clone, PartialEq, ::prost::Message)]
8952    pub struct Entry {
8953        #[prost(uint64, optional, tag="1")]
8954        pub inode_number: ::core::option::Option<u64>,
8955        /// The path to the file, e.g. "etc/file.xml"
8956        /// List of strings for multiple hardlinks
8957        #[prost(string, repeated, tag="2")]
8958        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8959        #[prost(enumeration="entry::Type", optional, tag="3")]
8960        pub r#type: ::core::option::Option<i32>,
8961    }
8962    /// Nested message and enum types in `Entry`.
8963    pub mod entry {
8964        /// The file type
8965        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8966        #[repr(i32)]
8967        pub enum Type {
8968            Unknown = 0,
8969            File = 1,
8970            Directory = 2,
8971        }
8972        impl Type {
8973            /// String value of the enum field names used in the ProtoBuf definition.
8974            ///
8975            /// The values are not transformed in any way and thus are considered stable
8976            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8977            pub fn as_str_name(&self) -> &'static str {
8978                match self {
8979                    Type::Unknown => "UNKNOWN",
8980                    Type::File => "FILE",
8981                    Type::Directory => "DIRECTORY",
8982                }
8983            }
8984        }
8985    }
8986}
8987// End of protos/perfetto/trace/filesystem/inode_file_map.proto
8988
8989// Begin of protos/perfetto/trace/ftrace/android_fs.proto
8990
8991#[derive(Clone, PartialEq, ::prost::Message)]
8992pub struct AndroidFsDatareadEndFtraceEvent {
8993    #[prost(int32, optional, tag="1")]
8994    pub bytes: ::core::option::Option<i32>,
8995    #[prost(uint64, optional, tag="2")]
8996    pub ino: ::core::option::Option<u64>,
8997    #[prost(int64, optional, tag="3")]
8998    pub offset: ::core::option::Option<i64>,
8999}
9000#[derive(Clone, PartialEq, ::prost::Message)]
9001pub struct AndroidFsDatareadStartFtraceEvent {
9002    #[prost(int32, optional, tag="1")]
9003    pub bytes: ::core::option::Option<i32>,
9004    #[prost(string, optional, tag="2")]
9005    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9006    #[prost(int64, optional, tag="3")]
9007    pub i_size: ::core::option::Option<i64>,
9008    #[prost(uint64, optional, tag="4")]
9009    pub ino: ::core::option::Option<u64>,
9010    #[prost(int64, optional, tag="5")]
9011    pub offset: ::core::option::Option<i64>,
9012    #[prost(string, optional, tag="6")]
9013    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9014    #[prost(int32, optional, tag="7")]
9015    pub pid: ::core::option::Option<i32>,
9016}
9017#[derive(Clone, PartialEq, ::prost::Message)]
9018pub struct AndroidFsDatawriteEndFtraceEvent {
9019    #[prost(int32, optional, tag="1")]
9020    pub bytes: ::core::option::Option<i32>,
9021    #[prost(uint64, optional, tag="2")]
9022    pub ino: ::core::option::Option<u64>,
9023    #[prost(int64, optional, tag="3")]
9024    pub offset: ::core::option::Option<i64>,
9025}
9026#[derive(Clone, PartialEq, ::prost::Message)]
9027pub struct AndroidFsDatawriteStartFtraceEvent {
9028    #[prost(int32, optional, tag="1")]
9029    pub bytes: ::core::option::Option<i32>,
9030    #[prost(string, optional, tag="2")]
9031    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9032    #[prost(int64, optional, tag="3")]
9033    pub i_size: ::core::option::Option<i64>,
9034    #[prost(uint64, optional, tag="4")]
9035    pub ino: ::core::option::Option<u64>,
9036    #[prost(int64, optional, tag="5")]
9037    pub offset: ::core::option::Option<i64>,
9038    #[prost(string, optional, tag="6")]
9039    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9040    #[prost(int32, optional, tag="7")]
9041    pub pid: ::core::option::Option<i32>,
9042}
9043#[derive(Clone, PartialEq, ::prost::Message)]
9044pub struct AndroidFsFsyncEndFtraceEvent {
9045    #[prost(int32, optional, tag="1")]
9046    pub bytes: ::core::option::Option<i32>,
9047    #[prost(uint64, optional, tag="2")]
9048    pub ino: ::core::option::Option<u64>,
9049    #[prost(int64, optional, tag="3")]
9050    pub offset: ::core::option::Option<i64>,
9051}
9052#[derive(Clone, PartialEq, ::prost::Message)]
9053pub struct AndroidFsFsyncStartFtraceEvent {
9054    #[prost(string, optional, tag="1")]
9055    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9056    #[prost(int64, optional, tag="2")]
9057    pub i_size: ::core::option::Option<i64>,
9058    #[prost(uint64, optional, tag="3")]
9059    pub ino: ::core::option::Option<u64>,
9060    #[prost(string, optional, tag="4")]
9061    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9062    #[prost(int32, optional, tag="5")]
9063    pub pid: ::core::option::Option<i32>,
9064}
9065// End of protos/perfetto/trace/ftrace/android_fs.proto
9066
9067// Begin of protos/perfetto/trace/ftrace/bcl_exynos.proto
9068
9069#[derive(Clone, PartialEq, ::prost::Message)]
9070pub struct BclIrqTriggerFtraceEvent {
9071    #[prost(int32, optional, tag="1")]
9072    pub id: ::core::option::Option<i32>,
9073    #[prost(int32, optional, tag="2")]
9074    pub throttle: ::core::option::Option<i32>,
9075    #[prost(int32, optional, tag="3")]
9076    pub cpu0_limit: ::core::option::Option<i32>,
9077    #[prost(int32, optional, tag="4")]
9078    pub cpu1_limit: ::core::option::Option<i32>,
9079    #[prost(int32, optional, tag="5")]
9080    pub cpu2_limit: ::core::option::Option<i32>,
9081    #[prost(int32, optional, tag="6")]
9082    pub tpu_limit: ::core::option::Option<i32>,
9083    #[prost(int32, optional, tag="7")]
9084    pub gpu_limit: ::core::option::Option<i32>,
9085    #[prost(int32, optional, tag="8")]
9086    pub voltage: ::core::option::Option<i32>,
9087    #[prost(int32, optional, tag="9")]
9088    pub capacity: ::core::option::Option<i32>,
9089}
9090// End of protos/perfetto/trace/ftrace/bcl_exynos.proto
9091
9092// Begin of protos/perfetto/trace/ftrace/binder.proto
9093
9094#[derive(Clone, PartialEq, ::prost::Message)]
9095pub struct BinderTransactionFtraceEvent {
9096    #[prost(int32, optional, tag="1")]
9097    pub debug_id: ::core::option::Option<i32>,
9098    #[prost(int32, optional, tag="2")]
9099    pub target_node: ::core::option::Option<i32>,
9100    #[prost(int32, optional, tag="3")]
9101    pub to_proc: ::core::option::Option<i32>,
9102    #[prost(int32, optional, tag="4")]
9103    pub to_thread: ::core::option::Option<i32>,
9104    #[prost(int32, optional, tag="5")]
9105    pub reply: ::core::option::Option<i32>,
9106    #[prost(uint32, optional, tag="6")]
9107    pub code: ::core::option::Option<u32>,
9108    #[prost(uint32, optional, tag="7")]
9109    pub flags: ::core::option::Option<u32>,
9110}
9111#[derive(Clone, PartialEq, ::prost::Message)]
9112pub struct BinderTransactionReceivedFtraceEvent {
9113    #[prost(int32, optional, tag="1")]
9114    pub debug_id: ::core::option::Option<i32>,
9115}
9116#[derive(Clone, PartialEq, ::prost::Message)]
9117pub struct BinderSetPriorityFtraceEvent {
9118    #[prost(int32, optional, tag="1")]
9119    pub proc: ::core::option::Option<i32>,
9120    #[prost(int32, optional, tag="2")]
9121    pub thread: ::core::option::Option<i32>,
9122    #[prost(uint32, optional, tag="3")]
9123    pub old_prio: ::core::option::Option<u32>,
9124    #[prost(uint32, optional, tag="4")]
9125    pub new_prio: ::core::option::Option<u32>,
9126    #[prost(uint32, optional, tag="5")]
9127    pub desired_prio: ::core::option::Option<u32>,
9128}
9129#[derive(Clone, PartialEq, ::prost::Message)]
9130pub struct BinderLockFtraceEvent {
9131    #[prost(string, optional, tag="1")]
9132    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9133}
9134#[derive(Clone, PartialEq, ::prost::Message)]
9135pub struct BinderLockedFtraceEvent {
9136    #[prost(string, optional, tag="1")]
9137    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9138}
9139#[derive(Clone, PartialEq, ::prost::Message)]
9140pub struct BinderUnlockFtraceEvent {
9141    #[prost(string, optional, tag="1")]
9142    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9143}
9144#[derive(Clone, PartialEq, ::prost::Message)]
9145pub struct BinderTransactionAllocBufFtraceEvent {
9146    #[prost(uint64, optional, tag="1")]
9147    pub data_size: ::core::option::Option<u64>,
9148    #[prost(int32, optional, tag="2")]
9149    pub debug_id: ::core::option::Option<i32>,
9150    #[prost(uint64, optional, tag="3")]
9151    pub offsets_size: ::core::option::Option<u64>,
9152    #[prost(uint64, optional, tag="4")]
9153    pub extra_buffers_size: ::core::option::Option<u64>,
9154}
9155#[derive(Clone, PartialEq, ::prost::Message)]
9156pub struct BinderCommandFtraceEvent {
9157    #[prost(uint32, optional, tag="1")]
9158    pub cmd: ::core::option::Option<u32>,
9159}
9160#[derive(Clone, PartialEq, ::prost::Message)]
9161pub struct BinderReturnFtraceEvent {
9162    #[prost(uint32, optional, tag="1")]
9163    pub cmd: ::core::option::Option<u32>,
9164}
9165// End of protos/perfetto/trace/ftrace/binder.proto
9166
9167// Begin of protos/perfetto/trace/ftrace/block.proto
9168
9169#[derive(Clone, PartialEq, ::prost::Message)]
9170pub struct BlockRqIssueFtraceEvent {
9171    #[prost(uint64, optional, tag="1")]
9172    pub dev: ::core::option::Option<u64>,
9173    #[prost(uint64, optional, tag="2")]
9174    pub sector: ::core::option::Option<u64>,
9175    #[prost(uint32, optional, tag="3")]
9176    pub nr_sector: ::core::option::Option<u32>,
9177    #[prost(uint32, optional, tag="4")]
9178    pub bytes: ::core::option::Option<u32>,
9179    #[prost(string, optional, tag="5")]
9180    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9181    #[prost(string, optional, tag="6")]
9182    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9183    #[prost(string, optional, tag="7")]
9184    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9185}
9186#[derive(Clone, PartialEq, ::prost::Message)]
9187pub struct BlockBioBackmergeFtraceEvent {
9188    #[prost(uint64, optional, tag="1")]
9189    pub dev: ::core::option::Option<u64>,
9190    #[prost(uint64, optional, tag="2")]
9191    pub sector: ::core::option::Option<u64>,
9192    #[prost(uint32, optional, tag="3")]
9193    pub nr_sector: ::core::option::Option<u32>,
9194    #[prost(string, optional, tag="4")]
9195    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9196    #[prost(string, optional, tag="5")]
9197    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9198}
9199#[derive(Clone, PartialEq, ::prost::Message)]
9200pub struct BlockBioBounceFtraceEvent {
9201    #[prost(uint64, optional, tag="1")]
9202    pub dev: ::core::option::Option<u64>,
9203    #[prost(uint64, optional, tag="2")]
9204    pub sector: ::core::option::Option<u64>,
9205    #[prost(uint32, optional, tag="3")]
9206    pub nr_sector: ::core::option::Option<u32>,
9207    #[prost(string, optional, tag="4")]
9208    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9209    #[prost(string, optional, tag="5")]
9210    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9211}
9212#[derive(Clone, PartialEq, ::prost::Message)]
9213pub struct BlockBioCompleteFtraceEvent {
9214    #[prost(uint64, optional, tag="1")]
9215    pub dev: ::core::option::Option<u64>,
9216    #[prost(uint64, optional, tag="2")]
9217    pub sector: ::core::option::Option<u64>,
9218    #[prost(uint32, optional, tag="3")]
9219    pub nr_sector: ::core::option::Option<u32>,
9220    #[prost(int32, optional, tag="4")]
9221    pub error: ::core::option::Option<i32>,
9222    #[prost(string, optional, tag="5")]
9223    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9224}
9225#[derive(Clone, PartialEq, ::prost::Message)]
9226pub struct BlockBioFrontmergeFtraceEvent {
9227    #[prost(uint64, optional, tag="1")]
9228    pub dev: ::core::option::Option<u64>,
9229    #[prost(uint64, optional, tag="2")]
9230    pub sector: ::core::option::Option<u64>,
9231    #[prost(uint32, optional, tag="3")]
9232    pub nr_sector: ::core::option::Option<u32>,
9233    #[prost(string, optional, tag="4")]
9234    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9235    #[prost(string, optional, tag="5")]
9236    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9237}
9238#[derive(Clone, PartialEq, ::prost::Message)]
9239pub struct BlockBioQueueFtraceEvent {
9240    #[prost(uint64, optional, tag="1")]
9241    pub dev: ::core::option::Option<u64>,
9242    #[prost(uint64, optional, tag="2")]
9243    pub sector: ::core::option::Option<u64>,
9244    #[prost(uint32, optional, tag="3")]
9245    pub nr_sector: ::core::option::Option<u32>,
9246    #[prost(string, optional, tag="4")]
9247    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9248    #[prost(string, optional, tag="5")]
9249    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9250}
9251#[derive(Clone, PartialEq, ::prost::Message)]
9252pub struct BlockBioRemapFtraceEvent {
9253    #[prost(uint64, optional, tag="1")]
9254    pub dev: ::core::option::Option<u64>,
9255    #[prost(uint64, optional, tag="2")]
9256    pub sector: ::core::option::Option<u64>,
9257    #[prost(uint32, optional, tag="3")]
9258    pub nr_sector: ::core::option::Option<u32>,
9259    #[prost(uint64, optional, tag="4")]
9260    pub old_dev: ::core::option::Option<u64>,
9261    #[prost(uint64, optional, tag="5")]
9262    pub old_sector: ::core::option::Option<u64>,
9263    #[prost(string, optional, tag="6")]
9264    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9265}
9266#[derive(Clone, PartialEq, ::prost::Message)]
9267pub struct BlockDirtyBufferFtraceEvent {
9268    #[prost(uint64, optional, tag="1")]
9269    pub dev: ::core::option::Option<u64>,
9270    #[prost(uint64, optional, tag="2")]
9271    pub sector: ::core::option::Option<u64>,
9272    #[prost(uint64, optional, tag="3")]
9273    pub size: ::core::option::Option<u64>,
9274}
9275#[derive(Clone, PartialEq, ::prost::Message)]
9276pub struct BlockGetrqFtraceEvent {
9277    #[prost(uint64, optional, tag="1")]
9278    pub dev: ::core::option::Option<u64>,
9279    #[prost(uint64, optional, tag="2")]
9280    pub sector: ::core::option::Option<u64>,
9281    #[prost(uint32, optional, tag="3")]
9282    pub nr_sector: ::core::option::Option<u32>,
9283    #[prost(string, optional, tag="4")]
9284    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9285    #[prost(string, optional, tag="5")]
9286    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9287}
9288#[derive(Clone, PartialEq, ::prost::Message)]
9289pub struct BlockPlugFtraceEvent {
9290    #[prost(string, optional, tag="1")]
9291    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9292}
9293#[derive(Clone, PartialEq, ::prost::Message)]
9294pub struct BlockRqAbortFtraceEvent {
9295    #[prost(uint64, optional, tag="1")]
9296    pub dev: ::core::option::Option<u64>,
9297    #[prost(uint64, optional, tag="2")]
9298    pub sector: ::core::option::Option<u64>,
9299    #[prost(uint32, optional, tag="3")]
9300    pub nr_sector: ::core::option::Option<u32>,
9301    #[prost(int32, optional, tag="4")]
9302    pub errors: ::core::option::Option<i32>,
9303    #[prost(string, optional, tag="5")]
9304    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9305    #[prost(string, optional, tag="6")]
9306    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9307}
9308#[derive(Clone, PartialEq, ::prost::Message)]
9309pub struct BlockRqCompleteFtraceEvent {
9310    #[prost(uint64, optional, tag="1")]
9311    pub dev: ::core::option::Option<u64>,
9312    #[prost(uint64, optional, tag="2")]
9313    pub sector: ::core::option::Option<u64>,
9314    #[prost(uint32, optional, tag="3")]
9315    pub nr_sector: ::core::option::Option<u32>,
9316    #[prost(int32, optional, tag="4")]
9317    pub errors: ::core::option::Option<i32>,
9318    #[prost(string, optional, tag="5")]
9319    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9320    #[prost(string, optional, tag="6")]
9321    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9322    #[prost(int32, optional, tag="7")]
9323    pub error: ::core::option::Option<i32>,
9324}
9325#[derive(Clone, PartialEq, ::prost::Message)]
9326pub struct BlockRqInsertFtraceEvent {
9327    #[prost(uint64, optional, tag="1")]
9328    pub dev: ::core::option::Option<u64>,
9329    #[prost(uint64, optional, tag="2")]
9330    pub sector: ::core::option::Option<u64>,
9331    #[prost(uint32, optional, tag="3")]
9332    pub nr_sector: ::core::option::Option<u32>,
9333    #[prost(uint32, optional, tag="4")]
9334    pub bytes: ::core::option::Option<u32>,
9335    #[prost(string, optional, tag="5")]
9336    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9337    #[prost(string, optional, tag="6")]
9338    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9339    #[prost(string, optional, tag="7")]
9340    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9341}
9342#[derive(Clone, PartialEq, ::prost::Message)]
9343pub struct BlockRqRemapFtraceEvent {
9344    #[prost(uint64, optional, tag="1")]
9345    pub dev: ::core::option::Option<u64>,
9346    #[prost(uint64, optional, tag="2")]
9347    pub sector: ::core::option::Option<u64>,
9348    #[prost(uint32, optional, tag="3")]
9349    pub nr_sector: ::core::option::Option<u32>,
9350    #[prost(uint64, optional, tag="4")]
9351    pub old_dev: ::core::option::Option<u64>,
9352    #[prost(uint64, optional, tag="5")]
9353    pub old_sector: ::core::option::Option<u64>,
9354    #[prost(uint32, optional, tag="6")]
9355    pub nr_bios: ::core::option::Option<u32>,
9356    #[prost(string, optional, tag="7")]
9357    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9358}
9359#[derive(Clone, PartialEq, ::prost::Message)]
9360pub struct BlockRqRequeueFtraceEvent {
9361    #[prost(uint64, optional, tag="1")]
9362    pub dev: ::core::option::Option<u64>,
9363    #[prost(uint64, optional, tag="2")]
9364    pub sector: ::core::option::Option<u64>,
9365    #[prost(uint32, optional, tag="3")]
9366    pub nr_sector: ::core::option::Option<u32>,
9367    #[prost(int32, optional, tag="4")]
9368    pub errors: ::core::option::Option<i32>,
9369    #[prost(string, optional, tag="5")]
9370    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9371    #[prost(string, optional, tag="6")]
9372    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9373}
9374#[derive(Clone, PartialEq, ::prost::Message)]
9375pub struct BlockSleeprqFtraceEvent {
9376    #[prost(uint64, optional, tag="1")]
9377    pub dev: ::core::option::Option<u64>,
9378    #[prost(uint64, optional, tag="2")]
9379    pub sector: ::core::option::Option<u64>,
9380    #[prost(uint32, optional, tag="3")]
9381    pub nr_sector: ::core::option::Option<u32>,
9382    #[prost(string, optional, tag="4")]
9383    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9384    #[prost(string, optional, tag="5")]
9385    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9386}
9387#[derive(Clone, PartialEq, ::prost::Message)]
9388pub struct BlockSplitFtraceEvent {
9389    #[prost(uint64, optional, tag="1")]
9390    pub dev: ::core::option::Option<u64>,
9391    #[prost(uint64, optional, tag="2")]
9392    pub sector: ::core::option::Option<u64>,
9393    #[prost(uint64, optional, tag="3")]
9394    pub new_sector: ::core::option::Option<u64>,
9395    #[prost(string, optional, tag="4")]
9396    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9397    #[prost(string, optional, tag="5")]
9398    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9399}
9400#[derive(Clone, PartialEq, ::prost::Message)]
9401pub struct BlockTouchBufferFtraceEvent {
9402    #[prost(uint64, optional, tag="1")]
9403    pub dev: ::core::option::Option<u64>,
9404    #[prost(uint64, optional, tag="2")]
9405    pub sector: ::core::option::Option<u64>,
9406    #[prost(uint64, optional, tag="3")]
9407    pub size: ::core::option::Option<u64>,
9408}
9409#[derive(Clone, PartialEq, ::prost::Message)]
9410pub struct BlockUnplugFtraceEvent {
9411    #[prost(int32, optional, tag="1")]
9412    pub nr_rq: ::core::option::Option<i32>,
9413    #[prost(string, optional, tag="2")]
9414    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9415}
9416#[derive(Clone, PartialEq, ::prost::Message)]
9417pub struct BlockIoStartFtraceEvent {
9418    #[prost(uint64, optional, tag="1")]
9419    pub dev: ::core::option::Option<u64>,
9420    #[prost(uint64, optional, tag="2")]
9421    pub sector: ::core::option::Option<u64>,
9422    #[prost(uint32, optional, tag="3")]
9423    pub nr_sector: ::core::option::Option<u32>,
9424    #[prost(uint32, optional, tag="4")]
9425    pub bytes: ::core::option::Option<u32>,
9426    #[prost(uint32, optional, tag="5")]
9427    pub ioprio: ::core::option::Option<u32>,
9428    #[prost(string, optional, tag="6")]
9429    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9430    #[prost(string, optional, tag="7")]
9431    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9432    #[prost(string, optional, tag="8")]
9433    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9434}
9435#[derive(Clone, PartialEq, ::prost::Message)]
9436pub struct BlockIoDoneFtraceEvent {
9437    #[prost(uint64, optional, tag="1")]
9438    pub dev: ::core::option::Option<u64>,
9439    #[prost(uint64, optional, tag="2")]
9440    pub sector: ::core::option::Option<u64>,
9441    #[prost(uint32, optional, tag="3")]
9442    pub nr_sector: ::core::option::Option<u32>,
9443    #[prost(uint32, optional, tag="4")]
9444    pub bytes: ::core::option::Option<u32>,
9445    #[prost(uint32, optional, tag="5")]
9446    pub ioprio: ::core::option::Option<u32>,
9447    #[prost(string, optional, tag="6")]
9448    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9449    #[prost(string, optional, tag="7")]
9450    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9451    #[prost(string, optional, tag="8")]
9452    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9453}
9454// End of protos/perfetto/trace/ftrace/block.proto
9455
9456// Begin of protos/perfetto/trace/ftrace/cgroup.proto
9457
9458#[derive(Clone, PartialEq, ::prost::Message)]
9459pub struct CgroupAttachTaskFtraceEvent {
9460    #[prost(int32, optional, tag="1")]
9461    pub dst_root: ::core::option::Option<i32>,
9462    #[prost(int32, optional, tag="2")]
9463    pub dst_id: ::core::option::Option<i32>,
9464    #[prost(int32, optional, tag="3")]
9465    pub pid: ::core::option::Option<i32>,
9466    #[prost(string, optional, tag="4")]
9467    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9468    #[prost(string, optional, tag="5")]
9469    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9470    #[prost(int32, optional, tag="6")]
9471    pub dst_level: ::core::option::Option<i32>,
9472    #[prost(string, optional, tag="7")]
9473    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
9474}
9475#[derive(Clone, PartialEq, ::prost::Message)]
9476pub struct CgroupMkdirFtraceEvent {
9477    #[prost(int32, optional, tag="1")]
9478    pub root: ::core::option::Option<i32>,
9479    #[prost(int32, optional, tag="2")]
9480    pub id: ::core::option::Option<i32>,
9481    #[prost(string, optional, tag="3")]
9482    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9483    #[prost(int32, optional, tag="4")]
9484    pub level: ::core::option::Option<i32>,
9485    #[prost(string, optional, tag="5")]
9486    pub path: ::core::option::Option<::prost::alloc::string::String>,
9487}
9488#[derive(Clone, PartialEq, ::prost::Message)]
9489pub struct CgroupRemountFtraceEvent {
9490    #[prost(int32, optional, tag="1")]
9491    pub root: ::core::option::Option<i32>,
9492    #[prost(uint32, optional, tag="2")]
9493    pub ss_mask: ::core::option::Option<u32>,
9494    #[prost(string, optional, tag="3")]
9495    pub name: ::core::option::Option<::prost::alloc::string::String>,
9496}
9497#[derive(Clone, PartialEq, ::prost::Message)]
9498pub struct CgroupRmdirFtraceEvent {
9499    #[prost(int32, optional, tag="1")]
9500    pub root: ::core::option::Option<i32>,
9501    #[prost(int32, optional, tag="2")]
9502    pub id: ::core::option::Option<i32>,
9503    #[prost(string, optional, tag="3")]
9504    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9505    #[prost(int32, optional, tag="4")]
9506    pub level: ::core::option::Option<i32>,
9507    #[prost(string, optional, tag="5")]
9508    pub path: ::core::option::Option<::prost::alloc::string::String>,
9509}
9510#[derive(Clone, PartialEq, ::prost::Message)]
9511pub struct CgroupTransferTasksFtraceEvent {
9512    #[prost(int32, optional, tag="1")]
9513    pub dst_root: ::core::option::Option<i32>,
9514    #[prost(int32, optional, tag="2")]
9515    pub dst_id: ::core::option::Option<i32>,
9516    #[prost(int32, optional, tag="3")]
9517    pub pid: ::core::option::Option<i32>,
9518    #[prost(string, optional, tag="4")]
9519    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9520    #[prost(string, optional, tag="5")]
9521    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9522    #[prost(int32, optional, tag="6")]
9523    pub dst_level: ::core::option::Option<i32>,
9524    #[prost(string, optional, tag="7")]
9525    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
9526}
9527#[derive(Clone, PartialEq, ::prost::Message)]
9528pub struct CgroupDestroyRootFtraceEvent {
9529    #[prost(int32, optional, tag="1")]
9530    pub root: ::core::option::Option<i32>,
9531    #[prost(uint32, optional, tag="2")]
9532    pub ss_mask: ::core::option::Option<u32>,
9533    #[prost(string, optional, tag="3")]
9534    pub name: ::core::option::Option<::prost::alloc::string::String>,
9535}
9536#[derive(Clone, PartialEq, ::prost::Message)]
9537pub struct CgroupReleaseFtraceEvent {
9538    #[prost(int32, optional, tag="1")]
9539    pub root: ::core::option::Option<i32>,
9540    #[prost(int32, optional, tag="2")]
9541    pub id: ::core::option::Option<i32>,
9542    #[prost(string, optional, tag="3")]
9543    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9544    #[prost(int32, optional, tag="4")]
9545    pub level: ::core::option::Option<i32>,
9546    #[prost(string, optional, tag="5")]
9547    pub path: ::core::option::Option<::prost::alloc::string::String>,
9548}
9549#[derive(Clone, PartialEq, ::prost::Message)]
9550pub struct CgroupRenameFtraceEvent {
9551    #[prost(int32, optional, tag="1")]
9552    pub root: ::core::option::Option<i32>,
9553    #[prost(int32, optional, tag="2")]
9554    pub id: ::core::option::Option<i32>,
9555    #[prost(string, optional, tag="3")]
9556    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9557    #[prost(int32, optional, tag="4")]
9558    pub level: ::core::option::Option<i32>,
9559    #[prost(string, optional, tag="5")]
9560    pub path: ::core::option::Option<::prost::alloc::string::String>,
9561}
9562#[derive(Clone, PartialEq, ::prost::Message)]
9563pub struct CgroupSetupRootFtraceEvent {
9564    #[prost(int32, optional, tag="1")]
9565    pub root: ::core::option::Option<i32>,
9566    #[prost(uint32, optional, tag="2")]
9567    pub ss_mask: ::core::option::Option<u32>,
9568    #[prost(string, optional, tag="3")]
9569    pub name: ::core::option::Option<::prost::alloc::string::String>,
9570}
9571// End of protos/perfetto/trace/ftrace/cgroup.proto
9572
9573// Begin of protos/perfetto/trace/ftrace/clk.proto
9574
9575#[derive(Clone, PartialEq, ::prost::Message)]
9576pub struct ClkEnableFtraceEvent {
9577    #[prost(string, optional, tag="1")]
9578    pub name: ::core::option::Option<::prost::alloc::string::String>,
9579}
9580#[derive(Clone, PartialEq, ::prost::Message)]
9581pub struct ClkDisableFtraceEvent {
9582    #[prost(string, optional, tag="1")]
9583    pub name: ::core::option::Option<::prost::alloc::string::String>,
9584}
9585#[derive(Clone, PartialEq, ::prost::Message)]
9586pub struct ClkSetRateFtraceEvent {
9587    #[prost(string, optional, tag="1")]
9588    pub name: ::core::option::Option<::prost::alloc::string::String>,
9589    #[prost(uint64, optional, tag="2")]
9590    pub rate: ::core::option::Option<u64>,
9591}
9592// End of protos/perfetto/trace/ftrace/clk.proto
9593
9594// Begin of protos/perfetto/trace/ftrace/cma.proto
9595
9596#[derive(Clone, PartialEq, ::prost::Message)]
9597pub struct CmaAllocStartFtraceEvent {
9598    #[prost(uint32, optional, tag="1")]
9599    pub align: ::core::option::Option<u32>,
9600    #[prost(uint32, optional, tag="2")]
9601    pub count: ::core::option::Option<u32>,
9602    #[prost(string, optional, tag="3")]
9603    pub name: ::core::option::Option<::prost::alloc::string::String>,
9604}
9605#[derive(Clone, PartialEq, ::prost::Message)]
9606pub struct CmaAllocInfoFtraceEvent {
9607    #[prost(uint32, optional, tag="1")]
9608    pub align: ::core::option::Option<u32>,
9609    #[prost(uint32, optional, tag="2")]
9610    pub count: ::core::option::Option<u32>,
9611    #[prost(uint32, optional, tag="3")]
9612    pub err_iso: ::core::option::Option<u32>,
9613    #[prost(uint32, optional, tag="4")]
9614    pub err_mig: ::core::option::Option<u32>,
9615    #[prost(uint32, optional, tag="5")]
9616    pub err_test: ::core::option::Option<u32>,
9617    #[prost(string, optional, tag="6")]
9618    pub name: ::core::option::Option<::prost::alloc::string::String>,
9619    #[prost(uint64, optional, tag="7")]
9620    pub nr_mapped: ::core::option::Option<u64>,
9621    #[prost(uint64, optional, tag="8")]
9622    pub nr_migrated: ::core::option::Option<u64>,
9623    #[prost(uint64, optional, tag="9")]
9624    pub nr_reclaimed: ::core::option::Option<u64>,
9625    #[prost(uint64, optional, tag="10")]
9626    pub pfn: ::core::option::Option<u64>,
9627}
9628#[derive(Clone, PartialEq, ::prost::Message)]
9629pub struct CmaAllocFinishFtraceEvent {
9630    #[prost(string, optional, tag="1")]
9631    pub name: ::core::option::Option<::prost::alloc::string::String>,
9632    #[prost(uint64, optional, tag="2")]
9633    pub pfn: ::core::option::Option<u64>,
9634    #[prost(uint64, optional, tag="3")]
9635    pub page: ::core::option::Option<u64>,
9636    #[prost(uint64, optional, tag="4")]
9637    pub count: ::core::option::Option<u64>,
9638    #[prost(uint32, optional, tag="5")]
9639    pub align: ::core::option::Option<u32>,
9640    #[prost(int32, optional, tag="6")]
9641    pub errorno: ::core::option::Option<i32>,
9642}
9643// End of protos/perfetto/trace/ftrace/cma.proto
9644
9645// Begin of protos/perfetto/trace/ftrace/compaction.proto
9646
9647#[derive(Clone, PartialEq, ::prost::Message)]
9648pub struct MmCompactionBeginFtraceEvent {
9649    #[prost(uint64, optional, tag="1")]
9650    pub zone_start: ::core::option::Option<u64>,
9651    #[prost(uint64, optional, tag="2")]
9652    pub migrate_pfn: ::core::option::Option<u64>,
9653    #[prost(uint64, optional, tag="3")]
9654    pub free_pfn: ::core::option::Option<u64>,
9655    #[prost(uint64, optional, tag="4")]
9656    pub zone_end: ::core::option::Option<u64>,
9657    #[prost(uint32, optional, tag="5")]
9658    pub sync: ::core::option::Option<u32>,
9659}
9660#[derive(Clone, PartialEq, ::prost::Message)]
9661pub struct MmCompactionDeferCompactionFtraceEvent {
9662    #[prost(int32, optional, tag="1")]
9663    pub nid: ::core::option::Option<i32>,
9664    #[prost(uint32, optional, tag="2")]
9665    pub idx: ::core::option::Option<u32>,
9666    #[prost(int32, optional, tag="3")]
9667    pub order: ::core::option::Option<i32>,
9668    #[prost(uint32, optional, tag="4")]
9669    pub considered: ::core::option::Option<u32>,
9670    #[prost(uint32, optional, tag="5")]
9671    pub defer_shift: ::core::option::Option<u32>,
9672    #[prost(int32, optional, tag="6")]
9673    pub order_failed: ::core::option::Option<i32>,
9674}
9675#[derive(Clone, PartialEq, ::prost::Message)]
9676pub struct MmCompactionDeferredFtraceEvent {
9677    #[prost(int32, optional, tag="1")]
9678    pub nid: ::core::option::Option<i32>,
9679    #[prost(uint32, optional, tag="2")]
9680    pub idx: ::core::option::Option<u32>,
9681    #[prost(int32, optional, tag="3")]
9682    pub order: ::core::option::Option<i32>,
9683    #[prost(uint32, optional, tag="4")]
9684    pub considered: ::core::option::Option<u32>,
9685    #[prost(uint32, optional, tag="5")]
9686    pub defer_shift: ::core::option::Option<u32>,
9687    #[prost(int32, optional, tag="6")]
9688    pub order_failed: ::core::option::Option<i32>,
9689}
9690#[derive(Clone, PartialEq, ::prost::Message)]
9691pub struct MmCompactionDeferResetFtraceEvent {
9692    #[prost(int32, optional, tag="1")]
9693    pub nid: ::core::option::Option<i32>,
9694    #[prost(uint32, optional, tag="2")]
9695    pub idx: ::core::option::Option<u32>,
9696    #[prost(int32, optional, tag="3")]
9697    pub order: ::core::option::Option<i32>,
9698    #[prost(uint32, optional, tag="4")]
9699    pub considered: ::core::option::Option<u32>,
9700    #[prost(uint32, optional, tag="5")]
9701    pub defer_shift: ::core::option::Option<u32>,
9702    #[prost(int32, optional, tag="6")]
9703    pub order_failed: ::core::option::Option<i32>,
9704}
9705#[derive(Clone, PartialEq, ::prost::Message)]
9706pub struct MmCompactionEndFtraceEvent {
9707    #[prost(uint64, optional, tag="1")]
9708    pub zone_start: ::core::option::Option<u64>,
9709    #[prost(uint64, optional, tag="2")]
9710    pub migrate_pfn: ::core::option::Option<u64>,
9711    #[prost(uint64, optional, tag="3")]
9712    pub free_pfn: ::core::option::Option<u64>,
9713    #[prost(uint64, optional, tag="4")]
9714    pub zone_end: ::core::option::Option<u64>,
9715    #[prost(uint32, optional, tag="5")]
9716    pub sync: ::core::option::Option<u32>,
9717    #[prost(int32, optional, tag="6")]
9718    pub status: ::core::option::Option<i32>,
9719}
9720#[derive(Clone, PartialEq, ::prost::Message)]
9721pub struct MmCompactionFinishedFtraceEvent {
9722    #[prost(int32, optional, tag="1")]
9723    pub nid: ::core::option::Option<i32>,
9724    #[prost(uint32, optional, tag="2")]
9725    pub idx: ::core::option::Option<u32>,
9726    #[prost(int32, optional, tag="3")]
9727    pub order: ::core::option::Option<i32>,
9728    #[prost(int32, optional, tag="4")]
9729    pub ret: ::core::option::Option<i32>,
9730}
9731#[derive(Clone, PartialEq, ::prost::Message)]
9732pub struct MmCompactionIsolateFreepagesFtraceEvent {
9733    #[prost(uint64, optional, tag="1")]
9734    pub start_pfn: ::core::option::Option<u64>,
9735    #[prost(uint64, optional, tag="2")]
9736    pub end_pfn: ::core::option::Option<u64>,
9737    #[prost(uint64, optional, tag="3")]
9738    pub nr_scanned: ::core::option::Option<u64>,
9739    #[prost(uint64, optional, tag="4")]
9740    pub nr_taken: ::core::option::Option<u64>,
9741}
9742#[derive(Clone, PartialEq, ::prost::Message)]
9743pub struct MmCompactionIsolateMigratepagesFtraceEvent {
9744    #[prost(uint64, optional, tag="1")]
9745    pub start_pfn: ::core::option::Option<u64>,
9746    #[prost(uint64, optional, tag="2")]
9747    pub end_pfn: ::core::option::Option<u64>,
9748    #[prost(uint64, optional, tag="3")]
9749    pub nr_scanned: ::core::option::Option<u64>,
9750    #[prost(uint64, optional, tag="4")]
9751    pub nr_taken: ::core::option::Option<u64>,
9752}
9753#[derive(Clone, PartialEq, ::prost::Message)]
9754pub struct MmCompactionKcompactdSleepFtraceEvent {
9755    #[prost(int32, optional, tag="1")]
9756    pub nid: ::core::option::Option<i32>,
9757}
9758#[derive(Clone, PartialEq, ::prost::Message)]
9759pub struct MmCompactionKcompactdWakeFtraceEvent {
9760    #[prost(int32, optional, tag="1")]
9761    pub nid: ::core::option::Option<i32>,
9762    #[prost(int32, optional, tag="2")]
9763    pub order: ::core::option::Option<i32>,
9764    #[prost(uint32, optional, tag="3")]
9765    pub classzone_idx: ::core::option::Option<u32>,
9766    #[prost(uint32, optional, tag="4")]
9767    pub highest_zoneidx: ::core::option::Option<u32>,
9768}
9769#[derive(Clone, PartialEq, ::prost::Message)]
9770pub struct MmCompactionMigratepagesFtraceEvent {
9771    #[prost(uint64, optional, tag="1")]
9772    pub nr_migrated: ::core::option::Option<u64>,
9773    #[prost(uint64, optional, tag="2")]
9774    pub nr_failed: ::core::option::Option<u64>,
9775}
9776#[derive(Clone, PartialEq, ::prost::Message)]
9777pub struct MmCompactionSuitableFtraceEvent {
9778    #[prost(int32, optional, tag="1")]
9779    pub nid: ::core::option::Option<i32>,
9780    #[prost(uint32, optional, tag="2")]
9781    pub idx: ::core::option::Option<u32>,
9782    #[prost(int32, optional, tag="3")]
9783    pub order: ::core::option::Option<i32>,
9784    #[prost(int32, optional, tag="4")]
9785    pub ret: ::core::option::Option<i32>,
9786}
9787#[derive(Clone, PartialEq, ::prost::Message)]
9788pub struct MmCompactionTryToCompactPagesFtraceEvent {
9789    #[prost(int32, optional, tag="1")]
9790    pub order: ::core::option::Option<i32>,
9791    #[prost(uint32, optional, tag="2")]
9792    pub gfp_mask: ::core::option::Option<u32>,
9793    #[prost(uint32, optional, tag="3")]
9794    pub mode: ::core::option::Option<u32>,
9795    #[prost(int32, optional, tag="4")]
9796    pub prio: ::core::option::Option<i32>,
9797}
9798#[derive(Clone, PartialEq, ::prost::Message)]
9799pub struct MmCompactionWakeupKcompactdFtraceEvent {
9800    #[prost(int32, optional, tag="1")]
9801    pub nid: ::core::option::Option<i32>,
9802    #[prost(int32, optional, tag="2")]
9803    pub order: ::core::option::Option<i32>,
9804    #[prost(uint32, optional, tag="3")]
9805    pub classzone_idx: ::core::option::Option<u32>,
9806    #[prost(uint32, optional, tag="4")]
9807    pub highest_zoneidx: ::core::option::Option<u32>,
9808}
9809// End of protos/perfetto/trace/ftrace/compaction.proto
9810
9811// Begin of protos/perfetto/trace/ftrace/cpm_trace.proto
9812
9813#[derive(Clone, PartialEq, ::prost::Message)]
9814pub struct ParamSetValueCpmFtraceEvent {
9815    #[prost(string, optional, tag="1")]
9816    pub body: ::core::option::Option<::prost::alloc::string::String>,
9817    #[prost(uint32, optional, tag="2")]
9818    pub value: ::core::option::Option<u32>,
9819    #[prost(int64, optional, tag="3")]
9820    pub timestamp: ::core::option::Option<i64>,
9821}
9822// End of protos/perfetto/trace/ftrace/cpm_trace.proto
9823
9824// Begin of protos/perfetto/trace/ftrace/cpuhp.proto
9825
9826#[derive(Clone, PartialEq, ::prost::Message)]
9827pub struct CpuhpExitFtraceEvent {
9828    #[prost(uint32, optional, tag="1")]
9829    pub cpu: ::core::option::Option<u32>,
9830    #[prost(int32, optional, tag="2")]
9831    pub idx: ::core::option::Option<i32>,
9832    #[prost(int32, optional, tag="3")]
9833    pub ret: ::core::option::Option<i32>,
9834    #[prost(int32, optional, tag="4")]
9835    pub state: ::core::option::Option<i32>,
9836}
9837#[derive(Clone, PartialEq, ::prost::Message)]
9838pub struct CpuhpMultiEnterFtraceEvent {
9839    #[prost(uint32, optional, tag="1")]
9840    pub cpu: ::core::option::Option<u32>,
9841    #[prost(uint64, optional, tag="2")]
9842    pub fun: ::core::option::Option<u64>,
9843    #[prost(int32, optional, tag="3")]
9844    pub idx: ::core::option::Option<i32>,
9845    #[prost(int32, optional, tag="4")]
9846    pub target: ::core::option::Option<i32>,
9847}
9848#[derive(Clone, PartialEq, ::prost::Message)]
9849pub struct CpuhpEnterFtraceEvent {
9850    #[prost(uint32, optional, tag="1")]
9851    pub cpu: ::core::option::Option<u32>,
9852    #[prost(uint64, optional, tag="2")]
9853    pub fun: ::core::option::Option<u64>,
9854    #[prost(int32, optional, tag="3")]
9855    pub idx: ::core::option::Option<i32>,
9856    #[prost(int32, optional, tag="4")]
9857    pub target: ::core::option::Option<i32>,
9858}
9859#[derive(Clone, PartialEq, ::prost::Message)]
9860pub struct CpuhpLatencyFtraceEvent {
9861    #[prost(uint32, optional, tag="1")]
9862    pub cpu: ::core::option::Option<u32>,
9863    #[prost(int32, optional, tag="2")]
9864    pub ret: ::core::option::Option<i32>,
9865    #[prost(uint32, optional, tag="3")]
9866    pub state: ::core::option::Option<u32>,
9867    #[prost(uint64, optional, tag="4")]
9868    pub time: ::core::option::Option<u64>,
9869}
9870#[derive(Clone, PartialEq, ::prost::Message)]
9871pub struct CpuhpPauseFtraceEvent {
9872    #[prost(uint32, optional, tag="1")]
9873    pub active_cpus: ::core::option::Option<u32>,
9874    #[prost(uint32, optional, tag="2")]
9875    pub cpus: ::core::option::Option<u32>,
9876    #[prost(uint32, optional, tag="3")]
9877    pub pause: ::core::option::Option<u32>,
9878    #[prost(uint32, optional, tag="4")]
9879    pub time: ::core::option::Option<u32>,
9880}
9881// End of protos/perfetto/trace/ftrace/cpuhp.proto
9882
9883// Begin of protos/perfetto/trace/ftrace/cros_ec.proto
9884
9885#[derive(Clone, PartialEq, ::prost::Message)]
9886pub struct CrosEcSensorhubDataFtraceEvent {
9887    #[prost(int64, optional, tag="1")]
9888    pub current_time: ::core::option::Option<i64>,
9889    #[prost(int64, optional, tag="2")]
9890    pub current_timestamp: ::core::option::Option<i64>,
9891    #[prost(int64, optional, tag="3")]
9892    pub delta: ::core::option::Option<i64>,
9893    #[prost(uint32, optional, tag="4")]
9894    pub ec_fifo_timestamp: ::core::option::Option<u32>,
9895    #[prost(uint32, optional, tag="5")]
9896    pub ec_sensor_num: ::core::option::Option<u32>,
9897    #[prost(int64, optional, tag="6")]
9898    pub fifo_timestamp: ::core::option::Option<i64>,
9899}
9900// End of protos/perfetto/trace/ftrace/cros_ec.proto
9901
9902// Begin of protos/perfetto/trace/ftrace/dcvsh.proto
9903
9904#[derive(Clone, PartialEq, ::prost::Message)]
9905pub struct DcvshFreqFtraceEvent {
9906    #[prost(uint64, optional, tag="1")]
9907    pub cpu: ::core::option::Option<u64>,
9908    #[prost(uint64, optional, tag="2")]
9909    pub freq: ::core::option::Option<u64>,
9910}
9911// End of protos/perfetto/trace/ftrace/dcvsh.proto
9912
9913// Begin of protos/perfetto/trace/ftrace/devfreq.proto
9914
9915#[derive(Clone, PartialEq, ::prost::Message)]
9916pub struct DevfreqFrequencyFtraceEvent {
9917    #[prost(string, optional, tag="1")]
9918    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
9919    #[prost(uint64, optional, tag="2")]
9920    pub freq: ::core::option::Option<u64>,
9921    #[prost(uint64, optional, tag="3")]
9922    pub prev_freq: ::core::option::Option<u64>,
9923    #[prost(uint64, optional, tag="4")]
9924    pub busy_time: ::core::option::Option<u64>,
9925    #[prost(uint64, optional, tag="5")]
9926    pub total_time: ::core::option::Option<u64>,
9927}
9928// End of protos/perfetto/trace/ftrace/devfreq.proto
9929
9930// Begin of protos/perfetto/trace/ftrace/dma_fence.proto
9931
9932#[derive(Clone, PartialEq, ::prost::Message)]
9933pub struct DmaFenceInitFtraceEvent {
9934    #[prost(uint32, optional, tag="1")]
9935    pub context: ::core::option::Option<u32>,
9936    #[prost(string, optional, tag="2")]
9937    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9938    #[prost(uint32, optional, tag="3")]
9939    pub seqno: ::core::option::Option<u32>,
9940    #[prost(string, optional, tag="4")]
9941    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9942}
9943#[derive(Clone, PartialEq, ::prost::Message)]
9944pub struct DmaFenceEmitFtraceEvent {
9945    #[prost(uint32, optional, tag="1")]
9946    pub context: ::core::option::Option<u32>,
9947    #[prost(string, optional, tag="2")]
9948    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9949    #[prost(uint32, optional, tag="3")]
9950    pub seqno: ::core::option::Option<u32>,
9951    #[prost(string, optional, tag="4")]
9952    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9953}
9954#[derive(Clone, PartialEq, ::prost::Message)]
9955pub struct DmaFenceSignaledFtraceEvent {
9956    #[prost(uint32, optional, tag="1")]
9957    pub context: ::core::option::Option<u32>,
9958    #[prost(string, optional, tag="2")]
9959    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9960    #[prost(uint32, optional, tag="3")]
9961    pub seqno: ::core::option::Option<u32>,
9962    #[prost(string, optional, tag="4")]
9963    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9964}
9965#[derive(Clone, PartialEq, ::prost::Message)]
9966pub struct DmaFenceWaitStartFtraceEvent {
9967    #[prost(uint32, optional, tag="1")]
9968    pub context: ::core::option::Option<u32>,
9969    #[prost(string, optional, tag="2")]
9970    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9971    #[prost(uint32, optional, tag="3")]
9972    pub seqno: ::core::option::Option<u32>,
9973    #[prost(string, optional, tag="4")]
9974    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9975}
9976#[derive(Clone, PartialEq, ::prost::Message)]
9977pub struct DmaFenceWaitEndFtraceEvent {
9978    #[prost(uint32, optional, tag="1")]
9979    pub context: ::core::option::Option<u32>,
9980    #[prost(string, optional, tag="2")]
9981    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9982    #[prost(uint32, optional, tag="3")]
9983    pub seqno: ::core::option::Option<u32>,
9984    #[prost(string, optional, tag="4")]
9985    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9986}
9987// End of protos/perfetto/trace/ftrace/dma_fence.proto
9988
9989// Begin of protos/perfetto/trace/ftrace/dmabuf_heap.proto
9990
9991#[derive(Clone, PartialEq, ::prost::Message)]
9992pub struct DmaHeapStatFtraceEvent {
9993    #[prost(uint64, optional, tag="1")]
9994    pub inode: ::core::option::Option<u64>,
9995    #[prost(int64, optional, tag="2")]
9996    pub len: ::core::option::Option<i64>,
9997    #[prost(uint64, optional, tag="3")]
9998    pub total_allocated: ::core::option::Option<u64>,
9999}
10000// End of protos/perfetto/trace/ftrace/dmabuf_heap.proto
10001
10002// Begin of protos/perfetto/trace/ftrace/dpu.proto
10003
10004#[derive(Clone, PartialEq, ::prost::Message)]
10005pub struct DpuTracingMarkWriteFtraceEvent {
10006    #[prost(int32, optional, tag="1")]
10007    pub pid: ::core::option::Option<i32>,
10008    #[prost(string, optional, tag="2")]
10009    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
10010    #[prost(uint32, optional, tag="3")]
10011    pub trace_begin: ::core::option::Option<u32>,
10012    #[prost(string, optional, tag="4")]
10013    pub name: ::core::option::Option<::prost::alloc::string::String>,
10014    #[prost(uint32, optional, tag="5")]
10015    pub r#type: ::core::option::Option<u32>,
10016    #[prost(int32, optional, tag="6")]
10017    pub value: ::core::option::Option<i32>,
10018}
10019#[derive(Clone, PartialEq, ::prost::Message)]
10020pub struct DpuDsiCmdFifoStatusFtraceEvent {
10021    #[prost(uint32, optional, tag="1")]
10022    pub header: ::core::option::Option<u32>,
10023    #[prost(uint32, optional, tag="2")]
10024    pub payload: ::core::option::Option<u32>,
10025}
10026#[derive(Clone, PartialEq, ::prost::Message)]
10027pub struct DpuDsiRxFtraceEvent {
10028    #[prost(uint32, optional, tag="1")]
10029    pub cmd: ::core::option::Option<u32>,
10030    #[prost(uint32, optional, tag="2")]
10031    pub rx_buf: ::core::option::Option<u32>,
10032}
10033#[derive(Clone, PartialEq, ::prost::Message)]
10034pub struct DpuDsiTxFtraceEvent {
10035    #[prost(uint32, optional, tag="1")]
10036    pub r#type: ::core::option::Option<u32>,
10037    #[prost(uint32, optional, tag="2")]
10038    pub tx_buf: ::core::option::Option<u32>,
10039    #[prost(uint32, optional, tag="3")]
10040    pub last: ::core::option::Option<u32>,
10041    #[prost(uint32, optional, tag="4")]
10042    pub delay_ms: ::core::option::Option<u32>,
10043}
10044#[derive(Clone, PartialEq, ::prost::Message)]
10045pub struct DpuDispDpuUnderrunFtraceEvent {
10046    #[prost(int32, optional, tag="1")]
10047    pub id: ::core::option::Option<i32>,
10048    #[prost(int32, optional, tag="2")]
10049    pub frames_pending: ::core::option::Option<i32>,
10050    #[prost(int32, optional, tag="3")]
10051    pub vsync_count: ::core::option::Option<i32>,
10052}
10053#[derive(Clone, PartialEq, ::prost::Message)]
10054pub struct DpuDispVblankIrqEnableFtraceEvent {
10055    #[prost(int32, optional, tag="1")]
10056    pub id: ::core::option::Option<i32>,
10057    #[prost(int32, optional, tag="2")]
10058    pub output_id: ::core::option::Option<i32>,
10059    #[prost(int32, optional, tag="3")]
10060    pub enable: ::core::option::Option<i32>,
10061}
10062// End of protos/perfetto/trace/ftrace/dpu.proto
10063
10064// Begin of protos/perfetto/trace/ftrace/drm.proto
10065
10066#[derive(Clone, PartialEq, ::prost::Message)]
10067pub struct DrmVblankEventFtraceEvent {
10068    #[prost(int32, optional, tag="1")]
10069    pub crtc: ::core::option::Option<i32>,
10070    #[prost(uint32, optional, tag="2")]
10071    pub high_prec: ::core::option::Option<u32>,
10072    #[prost(uint32, optional, tag="3")]
10073    pub seq: ::core::option::Option<u32>,
10074    #[prost(int64, optional, tag="4")]
10075    pub time: ::core::option::Option<i64>,
10076}
10077#[derive(Clone, PartialEq, ::prost::Message)]
10078pub struct DrmVblankEventDeliveredFtraceEvent {
10079    #[prost(int32, optional, tag="1")]
10080    pub crtc: ::core::option::Option<i32>,
10081    #[prost(uint64, optional, tag="2")]
10082    pub file: ::core::option::Option<u64>,
10083    #[prost(uint32, optional, tag="3")]
10084    pub seq: ::core::option::Option<u32>,
10085}
10086// End of protos/perfetto/trace/ftrace/drm.proto
10087
10088// Begin of protos/perfetto/trace/ftrace/dwc3.proto
10089
10090#[derive(Clone, PartialEq, ::prost::Message)]
10091pub struct Dwc3AllocRequestFtraceEvent {
10092    #[prost(string, optional, tag="1")]
10093    pub name: ::core::option::Option<::prost::alloc::string::String>,
10094    #[prost(uint64, optional, tag="2")]
10095    pub req: ::core::option::Option<u64>,
10096    #[prost(uint32, optional, tag="3")]
10097    pub actual: ::core::option::Option<u32>,
10098    #[prost(uint32, optional, tag="4")]
10099    pub length: ::core::option::Option<u32>,
10100    #[prost(int32, optional, tag="5")]
10101    pub status: ::core::option::Option<i32>,
10102    #[prost(int32, optional, tag="6")]
10103    pub zero: ::core::option::Option<i32>,
10104    #[prost(int32, optional, tag="7")]
10105    pub short_not_ok: ::core::option::Option<i32>,
10106    #[prost(int32, optional, tag="8")]
10107    pub no_interrupt: ::core::option::Option<i32>,
10108}
10109#[derive(Clone, PartialEq, ::prost::Message)]
10110pub struct Dwc3CompleteTrbFtraceEvent {
10111    #[prost(string, optional, tag="1")]
10112    pub name: ::core::option::Option<::prost::alloc::string::String>,
10113    #[prost(uint64, optional, tag="2")]
10114    pub trb: ::core::option::Option<u64>,
10115    #[prost(uint32, optional, tag="3")]
10116    pub allocated: ::core::option::Option<u32>,
10117    #[prost(uint32, optional, tag="4")]
10118    pub queued: ::core::option::Option<u32>,
10119    #[prost(uint32, optional, tag="5")]
10120    pub bpl: ::core::option::Option<u32>,
10121    #[prost(uint32, optional, tag="6")]
10122    pub bph: ::core::option::Option<u32>,
10123    #[prost(uint32, optional, tag="7")]
10124    pub size: ::core::option::Option<u32>,
10125    #[prost(uint32, optional, tag="8")]
10126    pub ctrl: ::core::option::Option<u32>,
10127    #[prost(uint32, optional, tag="9")]
10128    pub r#type: ::core::option::Option<u32>,
10129    #[prost(uint32, optional, tag="10")]
10130    pub enqueue: ::core::option::Option<u32>,
10131    #[prost(uint32, optional, tag="11")]
10132    pub dequeue: ::core::option::Option<u32>,
10133}
10134#[derive(Clone, PartialEq, ::prost::Message)]
10135pub struct Dwc3CtrlReqFtraceEvent {
10136    #[prost(uint32, optional, tag="1")]
10137    pub b_request_type: ::core::option::Option<u32>,
10138    #[prost(uint32, optional, tag="2")]
10139    pub b_request: ::core::option::Option<u32>,
10140    #[prost(uint32, optional, tag="3")]
10141    pub w_value: ::core::option::Option<u32>,
10142    #[prost(uint32, optional, tag="4")]
10143    pub w_index: ::core::option::Option<u32>,
10144    #[prost(uint32, optional, tag="5")]
10145    pub w_length: ::core::option::Option<u32>,
10146    #[prost(string, optional, tag="6")]
10147    pub str: ::core::option::Option<::prost::alloc::string::String>,
10148}
10149#[derive(Clone, PartialEq, ::prost::Message)]
10150pub struct Dwc3EpDequeueFtraceEvent {
10151    #[prost(string, optional, tag="1")]
10152    pub name: ::core::option::Option<::prost::alloc::string::String>,
10153    #[prost(uint64, optional, tag="2")]
10154    pub req: ::core::option::Option<u64>,
10155    #[prost(uint32, optional, tag="3")]
10156    pub actual: ::core::option::Option<u32>,
10157    #[prost(uint32, optional, tag="4")]
10158    pub length: ::core::option::Option<u32>,
10159    #[prost(int32, optional, tag="5")]
10160    pub status: ::core::option::Option<i32>,
10161    #[prost(int32, optional, tag="6")]
10162    pub zero: ::core::option::Option<i32>,
10163    #[prost(int32, optional, tag="7")]
10164    pub short_not_ok: ::core::option::Option<i32>,
10165    #[prost(int32, optional, tag="8")]
10166    pub no_interrupt: ::core::option::Option<i32>,
10167}
10168#[derive(Clone, PartialEq, ::prost::Message)]
10169pub struct Dwc3EpQueueFtraceEvent {
10170    #[prost(string, optional, tag="1")]
10171    pub name: ::core::option::Option<::prost::alloc::string::String>,
10172    #[prost(uint64, optional, tag="2")]
10173    pub req: ::core::option::Option<u64>,
10174    #[prost(uint32, optional, tag="3")]
10175    pub actual: ::core::option::Option<u32>,
10176    #[prost(uint32, optional, tag="4")]
10177    pub length: ::core::option::Option<u32>,
10178    #[prost(int32, optional, tag="5")]
10179    pub status: ::core::option::Option<i32>,
10180    #[prost(int32, optional, tag="6")]
10181    pub zero: ::core::option::Option<i32>,
10182    #[prost(int32, optional, tag="7")]
10183    pub short_not_ok: ::core::option::Option<i32>,
10184    #[prost(int32, optional, tag="8")]
10185    pub no_interrupt: ::core::option::Option<i32>,
10186}
10187#[derive(Clone, PartialEq, ::prost::Message)]
10188pub struct Dwc3EventFtraceEvent {
10189    #[prost(uint32, optional, tag="1")]
10190    pub event: ::core::option::Option<u32>,
10191    #[prost(uint32, optional, tag="2")]
10192    pub ep0state: ::core::option::Option<u32>,
10193    #[prost(string, optional, tag="3")]
10194    pub str: ::core::option::Option<::prost::alloc::string::String>,
10195}
10196#[derive(Clone, PartialEq, ::prost::Message)]
10197pub struct Dwc3FreeRequestFtraceEvent {
10198    #[prost(string, optional, tag="1")]
10199    pub name: ::core::option::Option<::prost::alloc::string::String>,
10200    #[prost(uint64, optional, tag="2")]
10201    pub req: ::core::option::Option<u64>,
10202    #[prost(uint32, optional, tag="3")]
10203    pub actual: ::core::option::Option<u32>,
10204    #[prost(uint32, optional, tag="4")]
10205    pub length: ::core::option::Option<u32>,
10206    #[prost(int32, optional, tag="5")]
10207    pub status: ::core::option::Option<i32>,
10208    #[prost(int32, optional, tag="6")]
10209    pub zero: ::core::option::Option<i32>,
10210    #[prost(int32, optional, tag="7")]
10211    pub short_not_ok: ::core::option::Option<i32>,
10212    #[prost(int32, optional, tag="8")]
10213    pub no_interrupt: ::core::option::Option<i32>,
10214}
10215#[derive(Clone, PartialEq, ::prost::Message)]
10216pub struct Dwc3GadgetEpCmdFtraceEvent {
10217    #[prost(string, optional, tag="1")]
10218    pub name: ::core::option::Option<::prost::alloc::string::String>,
10219    #[prost(uint32, optional, tag="2")]
10220    pub cmd: ::core::option::Option<u32>,
10221    #[prost(uint32, optional, tag="3")]
10222    pub param0: ::core::option::Option<u32>,
10223    #[prost(uint32, optional, tag="4")]
10224    pub param1: ::core::option::Option<u32>,
10225    #[prost(uint32, optional, tag="5")]
10226    pub param2: ::core::option::Option<u32>,
10227    #[prost(int32, optional, tag="6")]
10228    pub cmd_status: ::core::option::Option<i32>,
10229}
10230#[derive(Clone, PartialEq, ::prost::Message)]
10231pub struct Dwc3GadgetEpDisableFtraceEvent {
10232    #[prost(string, optional, tag="1")]
10233    pub name: ::core::option::Option<::prost::alloc::string::String>,
10234    #[prost(uint32, optional, tag="2")]
10235    pub maxpacket: ::core::option::Option<u32>,
10236    #[prost(uint32, optional, tag="3")]
10237    pub maxpacket_limit: ::core::option::Option<u32>,
10238    #[prost(uint32, optional, tag="4")]
10239    pub max_streams: ::core::option::Option<u32>,
10240    #[prost(uint32, optional, tag="5")]
10241    pub maxburst: ::core::option::Option<u32>,
10242    #[prost(uint32, optional, tag="6")]
10243    pub flags: ::core::option::Option<u32>,
10244    #[prost(uint32, optional, tag="7")]
10245    pub direction: ::core::option::Option<u32>,
10246    #[prost(uint32, optional, tag="8")]
10247    pub trb_enqueue: ::core::option::Option<u32>,
10248    #[prost(uint32, optional, tag="9")]
10249    pub trb_dequeue: ::core::option::Option<u32>,
10250}
10251#[derive(Clone, PartialEq, ::prost::Message)]
10252pub struct Dwc3GadgetEpEnableFtraceEvent {
10253    #[prost(string, optional, tag="1")]
10254    pub name: ::core::option::Option<::prost::alloc::string::String>,
10255    #[prost(uint32, optional, tag="2")]
10256    pub maxpacket: ::core::option::Option<u32>,
10257    #[prost(uint32, optional, tag="3")]
10258    pub maxpacket_limit: ::core::option::Option<u32>,
10259    #[prost(uint32, optional, tag="4")]
10260    pub max_streams: ::core::option::Option<u32>,
10261    #[prost(uint32, optional, tag="5")]
10262    pub maxburst: ::core::option::Option<u32>,
10263    #[prost(uint32, optional, tag="6")]
10264    pub flags: ::core::option::Option<u32>,
10265    #[prost(uint32, optional, tag="7")]
10266    pub direction: ::core::option::Option<u32>,
10267    #[prost(uint32, optional, tag="8")]
10268    pub trb_enqueue: ::core::option::Option<u32>,
10269    #[prost(uint32, optional, tag="9")]
10270    pub trb_dequeue: ::core::option::Option<u32>,
10271}
10272#[derive(Clone, PartialEq, ::prost::Message)]
10273pub struct Dwc3GadgetGenericCmdFtraceEvent {
10274    #[prost(uint32, optional, tag="1")]
10275    pub cmd: ::core::option::Option<u32>,
10276    #[prost(uint32, optional, tag="2")]
10277    pub param: ::core::option::Option<u32>,
10278    #[prost(int32, optional, tag="3")]
10279    pub status: ::core::option::Option<i32>,
10280}
10281#[derive(Clone, PartialEq, ::prost::Message)]
10282pub struct Dwc3GadgetGivebackFtraceEvent {
10283    #[prost(string, optional, tag="1")]
10284    pub name: ::core::option::Option<::prost::alloc::string::String>,
10285    #[prost(uint64, optional, tag="2")]
10286    pub req: ::core::option::Option<u64>,
10287    #[prost(uint32, optional, tag="3")]
10288    pub actual: ::core::option::Option<u32>,
10289    #[prost(uint32, optional, tag="4")]
10290    pub length: ::core::option::Option<u32>,
10291    #[prost(int32, optional, tag="5")]
10292    pub status: ::core::option::Option<i32>,
10293    #[prost(int32, optional, tag="6")]
10294    pub zero: ::core::option::Option<i32>,
10295    #[prost(int32, optional, tag="7")]
10296    pub short_not_ok: ::core::option::Option<i32>,
10297    #[prost(int32, optional, tag="8")]
10298    pub no_interrupt: ::core::option::Option<i32>,
10299}
10300#[derive(Clone, PartialEq, ::prost::Message)]
10301pub struct Dwc3PrepareTrbFtraceEvent {
10302    #[prost(string, optional, tag="1")]
10303    pub name: ::core::option::Option<::prost::alloc::string::String>,
10304    #[prost(uint64, optional, tag="2")]
10305    pub trb: ::core::option::Option<u64>,
10306    #[prost(uint32, optional, tag="3")]
10307    pub allocated: ::core::option::Option<u32>,
10308    #[prost(uint32, optional, tag="4")]
10309    pub queued: ::core::option::Option<u32>,
10310    #[prost(uint32, optional, tag="5")]
10311    pub bpl: ::core::option::Option<u32>,
10312    #[prost(uint32, optional, tag="6")]
10313    pub bph: ::core::option::Option<u32>,
10314    #[prost(uint32, optional, tag="7")]
10315    pub size: ::core::option::Option<u32>,
10316    #[prost(uint32, optional, tag="8")]
10317    pub ctrl: ::core::option::Option<u32>,
10318    #[prost(uint32, optional, tag="9")]
10319    pub r#type: ::core::option::Option<u32>,
10320    #[prost(uint32, optional, tag="10")]
10321    pub enqueue: ::core::option::Option<u32>,
10322    #[prost(uint32, optional, tag="11")]
10323    pub dequeue: ::core::option::Option<u32>,
10324}
10325#[derive(Clone, PartialEq, ::prost::Message)]
10326pub struct Dwc3ReadlFtraceEvent {
10327    #[prost(uint64, optional, tag="1")]
10328    pub base: ::core::option::Option<u64>,
10329    #[prost(uint32, optional, tag="2")]
10330    pub offset: ::core::option::Option<u32>,
10331    #[prost(uint32, optional, tag="3")]
10332    pub value: ::core::option::Option<u32>,
10333    #[prost(string, optional, tag="4")]
10334    pub msg: ::core::option::Option<::prost::alloc::string::String>,
10335}
10336#[derive(Clone, PartialEq, ::prost::Message)]
10337pub struct Dwc3WritelFtraceEvent {
10338    #[prost(uint64, optional, tag="1")]
10339    pub base: ::core::option::Option<u64>,
10340    #[prost(uint32, optional, tag="2")]
10341    pub offset: ::core::option::Option<u32>,
10342    #[prost(uint32, optional, tag="3")]
10343    pub value: ::core::option::Option<u32>,
10344    #[prost(string, optional, tag="4")]
10345    pub msg: ::core::option::Option<::prost::alloc::string::String>,
10346}
10347// End of protos/perfetto/trace/ftrace/dwc3.proto
10348
10349// Begin of protos/perfetto/trace/ftrace/ext4.proto
10350
10351#[derive(Clone, PartialEq, ::prost::Message)]
10352pub struct Ext4DaWriteBeginFtraceEvent {
10353    #[prost(uint64, optional, tag="1")]
10354    pub dev: ::core::option::Option<u64>,
10355    #[prost(uint64, optional, tag="2")]
10356    pub ino: ::core::option::Option<u64>,
10357    #[prost(int64, optional, tag="3")]
10358    pub pos: ::core::option::Option<i64>,
10359    #[prost(uint32, optional, tag="4")]
10360    pub len: ::core::option::Option<u32>,
10361    #[prost(uint32, optional, tag="5")]
10362    pub flags: ::core::option::Option<u32>,
10363}
10364#[derive(Clone, PartialEq, ::prost::Message)]
10365pub struct Ext4DaWriteEndFtraceEvent {
10366    #[prost(uint64, optional, tag="1")]
10367    pub dev: ::core::option::Option<u64>,
10368    #[prost(uint64, optional, tag="2")]
10369    pub ino: ::core::option::Option<u64>,
10370    #[prost(int64, optional, tag="3")]
10371    pub pos: ::core::option::Option<i64>,
10372    #[prost(uint32, optional, tag="4")]
10373    pub len: ::core::option::Option<u32>,
10374    #[prost(uint32, optional, tag="5")]
10375    pub copied: ::core::option::Option<u32>,
10376}
10377#[derive(Clone, PartialEq, ::prost::Message)]
10378pub struct Ext4SyncFileEnterFtraceEvent {
10379    #[prost(uint64, optional, tag="1")]
10380    pub dev: ::core::option::Option<u64>,
10381    #[prost(uint64, optional, tag="2")]
10382    pub ino: ::core::option::Option<u64>,
10383    #[prost(uint64, optional, tag="3")]
10384    pub parent: ::core::option::Option<u64>,
10385    #[prost(int32, optional, tag="4")]
10386    pub datasync: ::core::option::Option<i32>,
10387}
10388#[derive(Clone, PartialEq, ::prost::Message)]
10389pub struct Ext4SyncFileExitFtraceEvent {
10390    #[prost(uint64, optional, tag="1")]
10391    pub dev: ::core::option::Option<u64>,
10392    #[prost(uint64, optional, tag="2")]
10393    pub ino: ::core::option::Option<u64>,
10394    #[prost(int32, optional, tag="3")]
10395    pub ret: ::core::option::Option<i32>,
10396}
10397#[derive(Clone, PartialEq, ::prost::Message)]
10398pub struct Ext4AllocDaBlocksFtraceEvent {
10399    #[prost(uint64, optional, tag="1")]
10400    pub dev: ::core::option::Option<u64>,
10401    #[prost(uint64, optional, tag="2")]
10402    pub ino: ::core::option::Option<u64>,
10403    #[prost(uint32, optional, tag="3")]
10404    pub data_blocks: ::core::option::Option<u32>,
10405    #[prost(uint32, optional, tag="4")]
10406    pub meta_blocks: ::core::option::Option<u32>,
10407}
10408#[derive(Clone, PartialEq, ::prost::Message)]
10409pub struct Ext4AllocateBlocksFtraceEvent {
10410    #[prost(uint64, optional, tag="1")]
10411    pub dev: ::core::option::Option<u64>,
10412    #[prost(uint64, optional, tag="2")]
10413    pub ino: ::core::option::Option<u64>,
10414    #[prost(uint64, optional, tag="3")]
10415    pub block: ::core::option::Option<u64>,
10416    #[prost(uint32, optional, tag="4")]
10417    pub len: ::core::option::Option<u32>,
10418    #[prost(uint32, optional, tag="5")]
10419    pub logical: ::core::option::Option<u32>,
10420    #[prost(uint32, optional, tag="6")]
10421    pub lleft: ::core::option::Option<u32>,
10422    #[prost(uint32, optional, tag="7")]
10423    pub lright: ::core::option::Option<u32>,
10424    #[prost(uint64, optional, tag="8")]
10425    pub goal: ::core::option::Option<u64>,
10426    #[prost(uint64, optional, tag="9")]
10427    pub pleft: ::core::option::Option<u64>,
10428    #[prost(uint64, optional, tag="10")]
10429    pub pright: ::core::option::Option<u64>,
10430    #[prost(uint32, optional, tag="11")]
10431    pub flags: ::core::option::Option<u32>,
10432}
10433#[derive(Clone, PartialEq, ::prost::Message)]
10434pub struct Ext4AllocateInodeFtraceEvent {
10435    #[prost(uint64, optional, tag="1")]
10436    pub dev: ::core::option::Option<u64>,
10437    #[prost(uint64, optional, tag="2")]
10438    pub ino: ::core::option::Option<u64>,
10439    #[prost(uint64, optional, tag="3")]
10440    pub dir: ::core::option::Option<u64>,
10441    #[prost(uint32, optional, tag="4")]
10442    pub mode: ::core::option::Option<u32>,
10443}
10444#[derive(Clone, PartialEq, ::prost::Message)]
10445pub struct Ext4BeginOrderedTruncateFtraceEvent {
10446    #[prost(uint64, optional, tag="1")]
10447    pub dev: ::core::option::Option<u64>,
10448    #[prost(uint64, optional, tag="2")]
10449    pub ino: ::core::option::Option<u64>,
10450    #[prost(int64, optional, tag="3")]
10451    pub new_size: ::core::option::Option<i64>,
10452}
10453#[derive(Clone, PartialEq, ::prost::Message)]
10454pub struct Ext4CollapseRangeFtraceEvent {
10455    #[prost(uint64, optional, tag="1")]
10456    pub dev: ::core::option::Option<u64>,
10457    #[prost(uint64, optional, tag="2")]
10458    pub ino: ::core::option::Option<u64>,
10459    #[prost(int64, optional, tag="3")]
10460    pub offset: ::core::option::Option<i64>,
10461    #[prost(int64, optional, tag="4")]
10462    pub len: ::core::option::Option<i64>,
10463}
10464#[derive(Clone, PartialEq, ::prost::Message)]
10465pub struct Ext4DaReleaseSpaceFtraceEvent {
10466    #[prost(uint64, optional, tag="1")]
10467    pub dev: ::core::option::Option<u64>,
10468    #[prost(uint64, optional, tag="2")]
10469    pub ino: ::core::option::Option<u64>,
10470    #[prost(uint64, optional, tag="3")]
10471    pub i_blocks: ::core::option::Option<u64>,
10472    #[prost(int32, optional, tag="4")]
10473    pub freed_blocks: ::core::option::Option<i32>,
10474    #[prost(int32, optional, tag="5")]
10475    pub reserved_data_blocks: ::core::option::Option<i32>,
10476    #[prost(int32, optional, tag="6")]
10477    pub reserved_meta_blocks: ::core::option::Option<i32>,
10478    #[prost(int32, optional, tag="7")]
10479    pub allocated_meta_blocks: ::core::option::Option<i32>,
10480    #[prost(uint32, optional, tag="8")]
10481    pub mode: ::core::option::Option<u32>,
10482}
10483#[derive(Clone, PartialEq, ::prost::Message)]
10484pub struct Ext4DaReserveSpaceFtraceEvent {
10485    #[prost(uint64, optional, tag="1")]
10486    pub dev: ::core::option::Option<u64>,
10487    #[prost(uint64, optional, tag="2")]
10488    pub ino: ::core::option::Option<u64>,
10489    #[prost(uint64, optional, tag="3")]
10490    pub i_blocks: ::core::option::Option<u64>,
10491    #[prost(int32, optional, tag="4")]
10492    pub reserved_data_blocks: ::core::option::Option<i32>,
10493    #[prost(int32, optional, tag="5")]
10494    pub reserved_meta_blocks: ::core::option::Option<i32>,
10495    #[prost(uint32, optional, tag="6")]
10496    pub mode: ::core::option::Option<u32>,
10497    #[prost(int32, optional, tag="7")]
10498    pub md_needed: ::core::option::Option<i32>,
10499}
10500#[derive(Clone, PartialEq, ::prost::Message)]
10501pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
10502    #[prost(uint64, optional, tag="1")]
10503    pub dev: ::core::option::Option<u64>,
10504    #[prost(uint64, optional, tag="2")]
10505    pub ino: ::core::option::Option<u64>,
10506    #[prost(uint64, optional, tag="3")]
10507    pub i_blocks: ::core::option::Option<u64>,
10508    #[prost(int32, optional, tag="4")]
10509    pub used_blocks: ::core::option::Option<i32>,
10510    #[prost(int32, optional, tag="5")]
10511    pub reserved_data_blocks: ::core::option::Option<i32>,
10512    #[prost(int32, optional, tag="6")]
10513    pub reserved_meta_blocks: ::core::option::Option<i32>,
10514    #[prost(int32, optional, tag="7")]
10515    pub allocated_meta_blocks: ::core::option::Option<i32>,
10516    #[prost(int32, optional, tag="8")]
10517    pub quota_claim: ::core::option::Option<i32>,
10518    #[prost(uint32, optional, tag="9")]
10519    pub mode: ::core::option::Option<u32>,
10520}
10521#[derive(Clone, PartialEq, ::prost::Message)]
10522pub struct Ext4DaWritePagesFtraceEvent {
10523    #[prost(uint64, optional, tag="1")]
10524    pub dev: ::core::option::Option<u64>,
10525    #[prost(uint64, optional, tag="2")]
10526    pub ino: ::core::option::Option<u64>,
10527    #[prost(uint64, optional, tag="3")]
10528    pub first_page: ::core::option::Option<u64>,
10529    #[prost(int64, optional, tag="4")]
10530    pub nr_to_write: ::core::option::Option<i64>,
10531    #[prost(int32, optional, tag="5")]
10532    pub sync_mode: ::core::option::Option<i32>,
10533    #[prost(uint64, optional, tag="6")]
10534    pub b_blocknr: ::core::option::Option<u64>,
10535    #[prost(uint32, optional, tag="7")]
10536    pub b_size: ::core::option::Option<u32>,
10537    #[prost(uint32, optional, tag="8")]
10538    pub b_state: ::core::option::Option<u32>,
10539    #[prost(int32, optional, tag="9")]
10540    pub io_done: ::core::option::Option<i32>,
10541    #[prost(int32, optional, tag="10")]
10542    pub pages_written: ::core::option::Option<i32>,
10543}
10544#[derive(Clone, PartialEq, ::prost::Message)]
10545pub struct Ext4DaWritePagesExtentFtraceEvent {
10546    #[prost(uint64, optional, tag="1")]
10547    pub dev: ::core::option::Option<u64>,
10548    #[prost(uint64, optional, tag="2")]
10549    pub ino: ::core::option::Option<u64>,
10550    #[prost(uint64, optional, tag="3")]
10551    pub lblk: ::core::option::Option<u64>,
10552    #[prost(uint32, optional, tag="4")]
10553    pub len: ::core::option::Option<u32>,
10554    #[prost(uint32, optional, tag="5")]
10555    pub flags: ::core::option::Option<u32>,
10556}
10557#[derive(Clone, PartialEq, ::prost::Message)]
10558pub struct Ext4DirectIoEnterFtraceEvent {
10559    #[prost(uint64, optional, tag="1")]
10560    pub dev: ::core::option::Option<u64>,
10561    #[prost(uint64, optional, tag="2")]
10562    pub ino: ::core::option::Option<u64>,
10563    #[prost(int64, optional, tag="3")]
10564    pub pos: ::core::option::Option<i64>,
10565    #[prost(uint64, optional, tag="4")]
10566    pub len: ::core::option::Option<u64>,
10567    #[prost(int32, optional, tag="5")]
10568    pub rw: ::core::option::Option<i32>,
10569}
10570#[derive(Clone, PartialEq, ::prost::Message)]
10571pub struct Ext4DirectIoExitFtraceEvent {
10572    #[prost(uint64, optional, tag="1")]
10573    pub dev: ::core::option::Option<u64>,
10574    #[prost(uint64, optional, tag="2")]
10575    pub ino: ::core::option::Option<u64>,
10576    #[prost(int64, optional, tag="3")]
10577    pub pos: ::core::option::Option<i64>,
10578    #[prost(uint64, optional, tag="4")]
10579    pub len: ::core::option::Option<u64>,
10580    #[prost(int32, optional, tag="5")]
10581    pub rw: ::core::option::Option<i32>,
10582    #[prost(int32, optional, tag="6")]
10583    pub ret: ::core::option::Option<i32>,
10584}
10585#[derive(Clone, PartialEq, ::prost::Message)]
10586pub struct Ext4DiscardBlocksFtraceEvent {
10587    #[prost(uint64, optional, tag="1")]
10588    pub dev: ::core::option::Option<u64>,
10589    #[prost(uint64, optional, tag="2")]
10590    pub blk: ::core::option::Option<u64>,
10591    #[prost(uint64, optional, tag="3")]
10592    pub count: ::core::option::Option<u64>,
10593}
10594#[derive(Clone, PartialEq, ::prost::Message)]
10595pub struct Ext4DiscardPreallocationsFtraceEvent {
10596    #[prost(uint64, optional, tag="1")]
10597    pub dev: ::core::option::Option<u64>,
10598    #[prost(uint64, optional, tag="2")]
10599    pub ino: ::core::option::Option<u64>,
10600    #[prost(uint32, optional, tag="3")]
10601    pub len: ::core::option::Option<u32>,
10602    #[prost(uint32, optional, tag="4")]
10603    pub needed: ::core::option::Option<u32>,
10604}
10605#[derive(Clone, PartialEq, ::prost::Message)]
10606pub struct Ext4DropInodeFtraceEvent {
10607    #[prost(uint64, optional, tag="1")]
10608    pub dev: ::core::option::Option<u64>,
10609    #[prost(uint64, optional, tag="2")]
10610    pub ino: ::core::option::Option<u64>,
10611    #[prost(int32, optional, tag="3")]
10612    pub drop: ::core::option::Option<i32>,
10613}
10614#[derive(Clone, PartialEq, ::prost::Message)]
10615pub struct Ext4EsCacheExtentFtraceEvent {
10616    #[prost(uint64, optional, tag="1")]
10617    pub dev: ::core::option::Option<u64>,
10618    #[prost(uint64, optional, tag="2")]
10619    pub ino: ::core::option::Option<u64>,
10620    #[prost(uint32, optional, tag="3")]
10621    pub lblk: ::core::option::Option<u32>,
10622    #[prost(uint32, optional, tag="4")]
10623    pub len: ::core::option::Option<u32>,
10624    #[prost(uint64, optional, tag="5")]
10625    pub pblk: ::core::option::Option<u64>,
10626    #[prost(uint32, optional, tag="6")]
10627    pub status: ::core::option::Option<u32>,
10628}
10629#[derive(Clone, PartialEq, ::prost::Message)]
10630pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
10631    #[prost(uint64, optional, tag="1")]
10632    pub dev: ::core::option::Option<u64>,
10633    #[prost(uint64, optional, tag="2")]
10634    pub ino: ::core::option::Option<u64>,
10635    #[prost(uint32, optional, tag="3")]
10636    pub lblk: ::core::option::Option<u32>,
10637}
10638#[derive(Clone, PartialEq, ::prost::Message)]
10639pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
10640    #[prost(uint64, optional, tag="1")]
10641    pub dev: ::core::option::Option<u64>,
10642    #[prost(uint64, optional, tag="2")]
10643    pub ino: ::core::option::Option<u64>,
10644    #[prost(uint32, optional, tag="3")]
10645    pub lblk: ::core::option::Option<u32>,
10646    #[prost(uint32, optional, tag="4")]
10647    pub len: ::core::option::Option<u32>,
10648    #[prost(uint64, optional, tag="5")]
10649    pub pblk: ::core::option::Option<u64>,
10650    #[prost(uint64, optional, tag="6")]
10651    pub status: ::core::option::Option<u64>,
10652}
10653#[derive(Clone, PartialEq, ::prost::Message)]
10654pub struct Ext4EsInsertExtentFtraceEvent {
10655    #[prost(uint64, optional, tag="1")]
10656    pub dev: ::core::option::Option<u64>,
10657    #[prost(uint64, optional, tag="2")]
10658    pub ino: ::core::option::Option<u64>,
10659    #[prost(uint32, optional, tag="3")]
10660    pub lblk: ::core::option::Option<u32>,
10661    #[prost(uint32, optional, tag="4")]
10662    pub len: ::core::option::Option<u32>,
10663    #[prost(uint64, optional, tag="5")]
10664    pub pblk: ::core::option::Option<u64>,
10665    #[prost(uint64, optional, tag="6")]
10666    pub status: ::core::option::Option<u64>,
10667}
10668#[derive(Clone, PartialEq, ::prost::Message)]
10669pub struct Ext4EsLookupExtentEnterFtraceEvent {
10670    #[prost(uint64, optional, tag="1")]
10671    pub dev: ::core::option::Option<u64>,
10672    #[prost(uint64, optional, tag="2")]
10673    pub ino: ::core::option::Option<u64>,
10674    #[prost(uint32, optional, tag="3")]
10675    pub lblk: ::core::option::Option<u32>,
10676}
10677#[derive(Clone, PartialEq, ::prost::Message)]
10678pub struct Ext4EsLookupExtentExitFtraceEvent {
10679    #[prost(uint64, optional, tag="1")]
10680    pub dev: ::core::option::Option<u64>,
10681    #[prost(uint64, optional, tag="2")]
10682    pub ino: ::core::option::Option<u64>,
10683    #[prost(uint32, optional, tag="3")]
10684    pub lblk: ::core::option::Option<u32>,
10685    #[prost(uint32, optional, tag="4")]
10686    pub len: ::core::option::Option<u32>,
10687    #[prost(uint64, optional, tag="5")]
10688    pub pblk: ::core::option::Option<u64>,
10689    #[prost(uint64, optional, tag="6")]
10690    pub status: ::core::option::Option<u64>,
10691    #[prost(int32, optional, tag="7")]
10692    pub found: ::core::option::Option<i32>,
10693}
10694#[derive(Clone, PartialEq, ::prost::Message)]
10695pub struct Ext4EsRemoveExtentFtraceEvent {
10696    #[prost(uint64, optional, tag="1")]
10697    pub dev: ::core::option::Option<u64>,
10698    #[prost(uint64, optional, tag="2")]
10699    pub ino: ::core::option::Option<u64>,
10700    #[prost(int64, optional, tag="3")]
10701    pub lblk: ::core::option::Option<i64>,
10702    #[prost(int64, optional, tag="4")]
10703    pub len: ::core::option::Option<i64>,
10704}
10705#[derive(Clone, PartialEq, ::prost::Message)]
10706pub struct Ext4EsShrinkFtraceEvent {
10707    #[prost(uint64, optional, tag="1")]
10708    pub dev: ::core::option::Option<u64>,
10709    #[prost(int32, optional, tag="2")]
10710    pub nr_shrunk: ::core::option::Option<i32>,
10711    #[prost(uint64, optional, tag="3")]
10712    pub scan_time: ::core::option::Option<u64>,
10713    #[prost(int32, optional, tag="4")]
10714    pub nr_skipped: ::core::option::Option<i32>,
10715    #[prost(int32, optional, tag="5")]
10716    pub retried: ::core::option::Option<i32>,
10717}
10718#[derive(Clone, PartialEq, ::prost::Message)]
10719pub struct Ext4EsShrinkCountFtraceEvent {
10720    #[prost(uint64, optional, tag="1")]
10721    pub dev: ::core::option::Option<u64>,
10722    #[prost(int32, optional, tag="2")]
10723    pub nr_to_scan: ::core::option::Option<i32>,
10724    #[prost(int32, optional, tag="3")]
10725    pub cache_cnt: ::core::option::Option<i32>,
10726}
10727#[derive(Clone, PartialEq, ::prost::Message)]
10728pub struct Ext4EsShrinkScanEnterFtraceEvent {
10729    #[prost(uint64, optional, tag="1")]
10730    pub dev: ::core::option::Option<u64>,
10731    #[prost(int32, optional, tag="2")]
10732    pub nr_to_scan: ::core::option::Option<i32>,
10733    #[prost(int32, optional, tag="3")]
10734    pub cache_cnt: ::core::option::Option<i32>,
10735}
10736#[derive(Clone, PartialEq, ::prost::Message)]
10737pub struct Ext4EsShrinkScanExitFtraceEvent {
10738    #[prost(uint64, optional, tag="1")]
10739    pub dev: ::core::option::Option<u64>,
10740    #[prost(int32, optional, tag="2")]
10741    pub nr_shrunk: ::core::option::Option<i32>,
10742    #[prost(int32, optional, tag="3")]
10743    pub cache_cnt: ::core::option::Option<i32>,
10744}
10745#[derive(Clone, PartialEq, ::prost::Message)]
10746pub struct Ext4EvictInodeFtraceEvent {
10747    #[prost(uint64, optional, tag="1")]
10748    pub dev: ::core::option::Option<u64>,
10749    #[prost(uint64, optional, tag="2")]
10750    pub ino: ::core::option::Option<u64>,
10751    #[prost(int32, optional, tag="3")]
10752    pub nlink: ::core::option::Option<i32>,
10753}
10754#[derive(Clone, PartialEq, ::prost::Message)]
10755pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
10756    #[prost(uint64, optional, tag="1")]
10757    pub dev: ::core::option::Option<u64>,
10758    #[prost(uint64, optional, tag="2")]
10759    pub ino: ::core::option::Option<u64>,
10760    #[prost(uint32, optional, tag="3")]
10761    pub m_lblk: ::core::option::Option<u32>,
10762    #[prost(uint32, optional, tag="4")]
10763    pub m_len: ::core::option::Option<u32>,
10764    #[prost(uint32, optional, tag="5")]
10765    pub u_lblk: ::core::option::Option<u32>,
10766    #[prost(uint32, optional, tag="6")]
10767    pub u_len: ::core::option::Option<u32>,
10768    #[prost(uint64, optional, tag="7")]
10769    pub u_pblk: ::core::option::Option<u64>,
10770}
10771#[derive(Clone, PartialEq, ::prost::Message)]
10772pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
10773    #[prost(uint64, optional, tag="1")]
10774    pub dev: ::core::option::Option<u64>,
10775    #[prost(uint64, optional, tag="2")]
10776    pub ino: ::core::option::Option<u64>,
10777    #[prost(uint32, optional, tag="3")]
10778    pub m_lblk: ::core::option::Option<u32>,
10779    #[prost(uint32, optional, tag="4")]
10780    pub m_len: ::core::option::Option<u32>,
10781    #[prost(uint32, optional, tag="5")]
10782    pub u_lblk: ::core::option::Option<u32>,
10783    #[prost(uint32, optional, tag="6")]
10784    pub u_len: ::core::option::Option<u32>,
10785    #[prost(uint64, optional, tag="7")]
10786    pub u_pblk: ::core::option::Option<u64>,
10787    #[prost(uint32, optional, tag="8")]
10788    pub i_lblk: ::core::option::Option<u32>,
10789    #[prost(uint32, optional, tag="9")]
10790    pub i_len: ::core::option::Option<u32>,
10791    #[prost(uint64, optional, tag="10")]
10792    pub i_pblk: ::core::option::Option<u64>,
10793}
10794#[derive(Clone, PartialEq, ::prost::Message)]
10795pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
10796    #[prost(uint64, optional, tag="1")]
10797    pub dev: ::core::option::Option<u64>,
10798    #[prost(uint64, optional, tag="2")]
10799    pub ino: ::core::option::Option<u64>,
10800    #[prost(int32, optional, tag="3")]
10801    pub flags: ::core::option::Option<i32>,
10802    #[prost(uint32, optional, tag="4")]
10803    pub lblk: ::core::option::Option<u32>,
10804    #[prost(uint64, optional, tag="5")]
10805    pub pblk: ::core::option::Option<u64>,
10806    #[prost(uint32, optional, tag="6")]
10807    pub len: ::core::option::Option<u32>,
10808    #[prost(uint32, optional, tag="7")]
10809    pub allocated: ::core::option::Option<u32>,
10810    #[prost(uint64, optional, tag="8")]
10811    pub newblk: ::core::option::Option<u64>,
10812}
10813#[derive(Clone, PartialEq, ::prost::Message)]
10814pub struct Ext4ExtInCacheFtraceEvent {
10815    #[prost(uint64, optional, tag="1")]
10816    pub dev: ::core::option::Option<u64>,
10817    #[prost(uint64, optional, tag="2")]
10818    pub ino: ::core::option::Option<u64>,
10819    #[prost(uint32, optional, tag="3")]
10820    pub lblk: ::core::option::Option<u32>,
10821    #[prost(int32, optional, tag="4")]
10822    pub ret: ::core::option::Option<i32>,
10823}
10824#[derive(Clone, PartialEq, ::prost::Message)]
10825pub struct Ext4ExtLoadExtentFtraceEvent {
10826    #[prost(uint64, optional, tag="1")]
10827    pub dev: ::core::option::Option<u64>,
10828    #[prost(uint64, optional, tag="2")]
10829    pub ino: ::core::option::Option<u64>,
10830    #[prost(uint64, optional, tag="3")]
10831    pub pblk: ::core::option::Option<u64>,
10832    #[prost(uint32, optional, tag="4")]
10833    pub lblk: ::core::option::Option<u32>,
10834}
10835#[derive(Clone, PartialEq, ::prost::Message)]
10836pub struct Ext4ExtMapBlocksEnterFtraceEvent {
10837    #[prost(uint64, optional, tag="1")]
10838    pub dev: ::core::option::Option<u64>,
10839    #[prost(uint64, optional, tag="2")]
10840    pub ino: ::core::option::Option<u64>,
10841    #[prost(uint32, optional, tag="3")]
10842    pub lblk: ::core::option::Option<u32>,
10843    #[prost(uint32, optional, tag="4")]
10844    pub len: ::core::option::Option<u32>,
10845    #[prost(uint32, optional, tag="5")]
10846    pub flags: ::core::option::Option<u32>,
10847}
10848#[derive(Clone, PartialEq, ::prost::Message)]
10849pub struct Ext4ExtMapBlocksExitFtraceEvent {
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 flags: ::core::option::Option<u32>,
10856    #[prost(uint64, optional, tag="4")]
10857    pub pblk: ::core::option::Option<u64>,
10858    #[prost(uint32, optional, tag="5")]
10859    pub lblk: ::core::option::Option<u32>,
10860    #[prost(uint32, optional, tag="6")]
10861    pub len: ::core::option::Option<u32>,
10862    #[prost(uint32, optional, tag="7")]
10863    pub mflags: ::core::option::Option<u32>,
10864    #[prost(int32, optional, tag="8")]
10865    pub ret: ::core::option::Option<i32>,
10866}
10867#[derive(Clone, PartialEq, ::prost::Message)]
10868pub struct Ext4ExtPutInCacheFtraceEvent {
10869    #[prost(uint64, optional, tag="1")]
10870    pub dev: ::core::option::Option<u64>,
10871    #[prost(uint64, optional, tag="2")]
10872    pub ino: ::core::option::Option<u64>,
10873    #[prost(uint32, optional, tag="3")]
10874    pub lblk: ::core::option::Option<u32>,
10875    #[prost(uint32, optional, tag="4")]
10876    pub len: ::core::option::Option<u32>,
10877    #[prost(uint64, optional, tag="5")]
10878    pub start: ::core::option::Option<u64>,
10879}
10880#[derive(Clone, PartialEq, ::prost::Message)]
10881pub struct Ext4ExtRemoveSpaceFtraceEvent {
10882    #[prost(uint64, optional, tag="1")]
10883    pub dev: ::core::option::Option<u64>,
10884    #[prost(uint64, optional, tag="2")]
10885    pub ino: ::core::option::Option<u64>,
10886    #[prost(uint32, optional, tag="3")]
10887    pub start: ::core::option::Option<u32>,
10888    #[prost(uint32, optional, tag="4")]
10889    pub end: ::core::option::Option<u32>,
10890    #[prost(int32, optional, tag="5")]
10891    pub depth: ::core::option::Option<i32>,
10892}
10893#[derive(Clone, PartialEq, ::prost::Message)]
10894pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
10895    #[prost(uint64, optional, tag="1")]
10896    pub dev: ::core::option::Option<u64>,
10897    #[prost(uint64, optional, tag="2")]
10898    pub ino: ::core::option::Option<u64>,
10899    #[prost(uint32, optional, tag="3")]
10900    pub start: ::core::option::Option<u32>,
10901    #[prost(uint32, optional, tag="4")]
10902    pub end: ::core::option::Option<u32>,
10903    #[prost(int32, optional, tag="5")]
10904    pub depth: ::core::option::Option<i32>,
10905    #[prost(int64, optional, tag="6")]
10906    pub partial: ::core::option::Option<i64>,
10907    #[prost(uint32, optional, tag="7")]
10908    pub eh_entries: ::core::option::Option<u32>,
10909    #[prost(uint32, optional, tag="8")]
10910    pub pc_lblk: ::core::option::Option<u32>,
10911    #[prost(uint64, optional, tag="9")]
10912    pub pc_pclu: ::core::option::Option<u64>,
10913    #[prost(int32, optional, tag="10")]
10914    pub pc_state: ::core::option::Option<i32>,
10915}
10916#[derive(Clone, PartialEq, ::prost::Message)]
10917pub struct Ext4ExtRmIdxFtraceEvent {
10918    #[prost(uint64, optional, tag="1")]
10919    pub dev: ::core::option::Option<u64>,
10920    #[prost(uint64, optional, tag="2")]
10921    pub ino: ::core::option::Option<u64>,
10922    #[prost(uint64, optional, tag="3")]
10923    pub pblk: ::core::option::Option<u64>,
10924}
10925#[derive(Clone, PartialEq, ::prost::Message)]
10926pub struct Ext4ExtRmLeafFtraceEvent {
10927    #[prost(uint64, optional, tag="1")]
10928    pub dev: ::core::option::Option<u64>,
10929    #[prost(uint64, optional, tag="2")]
10930    pub ino: ::core::option::Option<u64>,
10931    #[prost(int64, optional, tag="3")]
10932    pub partial: ::core::option::Option<i64>,
10933    #[prost(uint32, optional, tag="4")]
10934    pub start: ::core::option::Option<u32>,
10935    #[prost(uint32, optional, tag="5")]
10936    pub ee_lblk: ::core::option::Option<u32>,
10937    #[prost(uint64, optional, tag="6")]
10938    pub ee_pblk: ::core::option::Option<u64>,
10939    #[prost(int32, optional, tag="7")]
10940    pub ee_len: ::core::option::Option<i32>,
10941    #[prost(uint32, optional, tag="8")]
10942    pub pc_lblk: ::core::option::Option<u32>,
10943    #[prost(uint64, optional, tag="9")]
10944    pub pc_pclu: ::core::option::Option<u64>,
10945    #[prost(int32, optional, tag="10")]
10946    pub pc_state: ::core::option::Option<i32>,
10947}
10948#[derive(Clone, PartialEq, ::prost::Message)]
10949pub struct Ext4ExtShowExtentFtraceEvent {
10950    #[prost(uint64, optional, tag="1")]
10951    pub dev: ::core::option::Option<u64>,
10952    #[prost(uint64, optional, tag="2")]
10953    pub ino: ::core::option::Option<u64>,
10954    #[prost(uint64, optional, tag="3")]
10955    pub pblk: ::core::option::Option<u64>,
10956    #[prost(uint32, optional, tag="4")]
10957    pub lblk: ::core::option::Option<u32>,
10958    #[prost(uint32, optional, tag="5")]
10959    pub len: ::core::option::Option<u32>,
10960}
10961#[derive(Clone, PartialEq, ::prost::Message)]
10962pub struct Ext4FallocateEnterFtraceEvent {
10963    #[prost(uint64, optional, tag="1")]
10964    pub dev: ::core::option::Option<u64>,
10965    #[prost(uint64, optional, tag="2")]
10966    pub ino: ::core::option::Option<u64>,
10967    #[prost(int64, optional, tag="3")]
10968    pub offset: ::core::option::Option<i64>,
10969    #[prost(int64, optional, tag="4")]
10970    pub len: ::core::option::Option<i64>,
10971    #[prost(int32, optional, tag="5")]
10972    pub mode: ::core::option::Option<i32>,
10973    #[prost(int64, optional, tag="6")]
10974    pub pos: ::core::option::Option<i64>,
10975}
10976#[derive(Clone, PartialEq, ::prost::Message)]
10977pub struct Ext4FallocateExitFtraceEvent {
10978    #[prost(uint64, optional, tag="1")]
10979    pub dev: ::core::option::Option<u64>,
10980    #[prost(uint64, optional, tag="2")]
10981    pub ino: ::core::option::Option<u64>,
10982    #[prost(int64, optional, tag="3")]
10983    pub pos: ::core::option::Option<i64>,
10984    #[prost(uint32, optional, tag="4")]
10985    pub blocks: ::core::option::Option<u32>,
10986    #[prost(int32, optional, tag="5")]
10987    pub ret: ::core::option::Option<i32>,
10988}
10989#[derive(Clone, PartialEq, ::prost::Message)]
10990pub struct Ext4FindDelallocRangeFtraceEvent {
10991    #[prost(uint64, optional, tag="1")]
10992    pub dev: ::core::option::Option<u64>,
10993    #[prost(uint64, optional, tag="2")]
10994    pub ino: ::core::option::Option<u64>,
10995    #[prost(uint32, optional, tag="3")]
10996    pub from: ::core::option::Option<u32>,
10997    #[prost(uint32, optional, tag="4")]
10998    pub to: ::core::option::Option<u32>,
10999    #[prost(int32, optional, tag="5")]
11000    pub reverse: ::core::option::Option<i32>,
11001    #[prost(int32, optional, tag="6")]
11002    pub found: ::core::option::Option<i32>,
11003    #[prost(uint32, optional, tag="7")]
11004    pub found_blk: ::core::option::Option<u32>,
11005}
11006#[derive(Clone, PartialEq, ::prost::Message)]
11007pub struct Ext4ForgetFtraceEvent {
11008    #[prost(uint64, optional, tag="1")]
11009    pub dev: ::core::option::Option<u64>,
11010    #[prost(uint64, optional, tag="2")]
11011    pub ino: ::core::option::Option<u64>,
11012    #[prost(uint64, optional, tag="3")]
11013    pub block: ::core::option::Option<u64>,
11014    #[prost(int32, optional, tag="4")]
11015    pub is_metadata: ::core::option::Option<i32>,
11016    #[prost(uint32, optional, tag="5")]
11017    pub mode: ::core::option::Option<u32>,
11018}
11019#[derive(Clone, PartialEq, ::prost::Message)]
11020pub struct Ext4FreeBlocksFtraceEvent {
11021    #[prost(uint64, optional, tag="1")]
11022    pub dev: ::core::option::Option<u64>,
11023    #[prost(uint64, optional, tag="2")]
11024    pub ino: ::core::option::Option<u64>,
11025    #[prost(uint64, optional, tag="3")]
11026    pub block: ::core::option::Option<u64>,
11027    #[prost(uint64, optional, tag="4")]
11028    pub count: ::core::option::Option<u64>,
11029    #[prost(int32, optional, tag="5")]
11030    pub flags: ::core::option::Option<i32>,
11031    #[prost(uint32, optional, tag="6")]
11032    pub mode: ::core::option::Option<u32>,
11033}
11034#[derive(Clone, PartialEq, ::prost::Message)]
11035pub struct Ext4FreeInodeFtraceEvent {
11036    #[prost(uint64, optional, tag="1")]
11037    pub dev: ::core::option::Option<u64>,
11038    #[prost(uint64, optional, tag="2")]
11039    pub ino: ::core::option::Option<u64>,
11040    #[prost(uint32, optional, tag="3")]
11041    pub uid: ::core::option::Option<u32>,
11042    #[prost(uint32, optional, tag="4")]
11043    pub gid: ::core::option::Option<u32>,
11044    #[prost(uint64, optional, tag="5")]
11045    pub blocks: ::core::option::Option<u64>,
11046    #[prost(uint32, optional, tag="6")]
11047    pub mode: ::core::option::Option<u32>,
11048}
11049#[derive(Clone, PartialEq, ::prost::Message)]
11050pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
11051    #[prost(uint64, optional, tag="1")]
11052    pub dev: ::core::option::Option<u64>,
11053    #[prost(uint32, optional, tag="2")]
11054    pub flags: ::core::option::Option<u32>,
11055    #[prost(uint32, optional, tag="3")]
11056    pub lblk: ::core::option::Option<u32>,
11057    #[prost(uint64, optional, tag="4")]
11058    pub pblk: ::core::option::Option<u64>,
11059    #[prost(uint32, optional, tag="5")]
11060    pub len: ::core::option::Option<u32>,
11061    #[prost(int32, optional, tag="6")]
11062    pub ret: ::core::option::Option<i32>,
11063}
11064#[derive(Clone, PartialEq, ::prost::Message)]
11065pub struct Ext4GetReservedClusterAllocFtraceEvent {
11066    #[prost(uint64, optional, tag="1")]
11067    pub dev: ::core::option::Option<u64>,
11068    #[prost(uint64, optional, tag="2")]
11069    pub ino: ::core::option::Option<u64>,
11070    #[prost(uint32, optional, tag="3")]
11071    pub lblk: ::core::option::Option<u32>,
11072    #[prost(uint32, optional, tag="4")]
11073    pub len: ::core::option::Option<u32>,
11074}
11075#[derive(Clone, PartialEq, ::prost::Message)]
11076pub struct Ext4IndMapBlocksEnterFtraceEvent {
11077    #[prost(uint64, optional, tag="1")]
11078    pub dev: ::core::option::Option<u64>,
11079    #[prost(uint64, optional, tag="2")]
11080    pub ino: ::core::option::Option<u64>,
11081    #[prost(uint32, optional, tag="3")]
11082    pub lblk: ::core::option::Option<u32>,
11083    #[prost(uint32, optional, tag="4")]
11084    pub len: ::core::option::Option<u32>,
11085    #[prost(uint32, optional, tag="5")]
11086    pub flags: ::core::option::Option<u32>,
11087}
11088#[derive(Clone, PartialEq, ::prost::Message)]
11089pub struct Ext4IndMapBlocksExitFtraceEvent {
11090    #[prost(uint64, optional, tag="1")]
11091    pub dev: ::core::option::Option<u64>,
11092    #[prost(uint64, optional, tag="2")]
11093    pub ino: ::core::option::Option<u64>,
11094    #[prost(uint32, optional, tag="3")]
11095    pub flags: ::core::option::Option<u32>,
11096    #[prost(uint64, optional, tag="4")]
11097    pub pblk: ::core::option::Option<u64>,
11098    #[prost(uint32, optional, tag="5")]
11099    pub lblk: ::core::option::Option<u32>,
11100    #[prost(uint32, optional, tag="6")]
11101    pub len: ::core::option::Option<u32>,
11102    #[prost(uint32, optional, tag="7")]
11103    pub mflags: ::core::option::Option<u32>,
11104    #[prost(int32, optional, tag="8")]
11105    pub ret: ::core::option::Option<i32>,
11106}
11107#[derive(Clone, PartialEq, ::prost::Message)]
11108pub struct Ext4InsertRangeFtraceEvent {
11109    #[prost(uint64, optional, tag="1")]
11110    pub dev: ::core::option::Option<u64>,
11111    #[prost(uint64, optional, tag="2")]
11112    pub ino: ::core::option::Option<u64>,
11113    #[prost(int64, optional, tag="3")]
11114    pub offset: ::core::option::Option<i64>,
11115    #[prost(int64, optional, tag="4")]
11116    pub len: ::core::option::Option<i64>,
11117}
11118#[derive(Clone, PartialEq, ::prost::Message)]
11119pub struct Ext4InvalidatepageFtraceEvent {
11120    #[prost(uint64, optional, tag="1")]
11121    pub dev: ::core::option::Option<u64>,
11122    #[prost(uint64, optional, tag="2")]
11123    pub ino: ::core::option::Option<u64>,
11124    #[prost(uint64, optional, tag="3")]
11125    pub index: ::core::option::Option<u64>,
11126    #[prost(uint64, optional, tag="4")]
11127    pub offset: ::core::option::Option<u64>,
11128    #[prost(uint32, optional, tag="5")]
11129    pub length: ::core::option::Option<u32>,
11130}
11131#[derive(Clone, PartialEq, ::prost::Message)]
11132pub struct Ext4JournalStartFtraceEvent {
11133    #[prost(uint64, optional, tag="1")]
11134    pub dev: ::core::option::Option<u64>,
11135    #[prost(uint64, optional, tag="2")]
11136    pub ip: ::core::option::Option<u64>,
11137    #[prost(int32, optional, tag="3")]
11138    pub blocks: ::core::option::Option<i32>,
11139    #[prost(int32, optional, tag="4")]
11140    pub rsv_blocks: ::core::option::Option<i32>,
11141    #[prost(int32, optional, tag="5")]
11142    pub nblocks: ::core::option::Option<i32>,
11143    #[prost(int32, optional, tag="6")]
11144    pub revoke_creds: ::core::option::Option<i32>,
11145}
11146#[derive(Clone, PartialEq, ::prost::Message)]
11147pub struct Ext4JournalStartReservedFtraceEvent {
11148    #[prost(uint64, optional, tag="1")]
11149    pub dev: ::core::option::Option<u64>,
11150    #[prost(uint64, optional, tag="2")]
11151    pub ip: ::core::option::Option<u64>,
11152    #[prost(int32, optional, tag="3")]
11153    pub blocks: ::core::option::Option<i32>,
11154}
11155#[derive(Clone, PartialEq, ::prost::Message)]
11156pub struct Ext4JournalledInvalidatepageFtraceEvent {
11157    #[prost(uint64, optional, tag="1")]
11158    pub dev: ::core::option::Option<u64>,
11159    #[prost(uint64, optional, tag="2")]
11160    pub ino: ::core::option::Option<u64>,
11161    #[prost(uint64, optional, tag="3")]
11162    pub index: ::core::option::Option<u64>,
11163    #[prost(uint64, optional, tag="4")]
11164    pub offset: ::core::option::Option<u64>,
11165    #[prost(uint32, optional, tag="5")]
11166    pub length: ::core::option::Option<u32>,
11167}
11168#[derive(Clone, PartialEq, ::prost::Message)]
11169pub struct Ext4JournalledWriteEndFtraceEvent {
11170    #[prost(uint64, optional, tag="1")]
11171    pub dev: ::core::option::Option<u64>,
11172    #[prost(uint64, optional, tag="2")]
11173    pub ino: ::core::option::Option<u64>,
11174    #[prost(int64, optional, tag="3")]
11175    pub pos: ::core::option::Option<i64>,
11176    #[prost(uint32, optional, tag="4")]
11177    pub len: ::core::option::Option<u32>,
11178    #[prost(uint32, optional, tag="5")]
11179    pub copied: ::core::option::Option<u32>,
11180}
11181#[derive(Clone, PartialEq, ::prost::Message)]
11182pub struct Ext4LoadInodeFtraceEvent {
11183    #[prost(uint64, optional, tag="1")]
11184    pub dev: ::core::option::Option<u64>,
11185    #[prost(uint64, optional, tag="2")]
11186    pub ino: ::core::option::Option<u64>,
11187}
11188#[derive(Clone, PartialEq, ::prost::Message)]
11189pub struct Ext4LoadInodeBitmapFtraceEvent {
11190    #[prost(uint64, optional, tag="1")]
11191    pub dev: ::core::option::Option<u64>,
11192    #[prost(uint32, optional, tag="2")]
11193    pub group: ::core::option::Option<u32>,
11194}
11195#[derive(Clone, PartialEq, ::prost::Message)]
11196pub struct Ext4MarkInodeDirtyFtraceEvent {
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(uint64, optional, tag="3")]
11202    pub ip: ::core::option::Option<u64>,
11203}
11204#[derive(Clone, PartialEq, ::prost::Message)]
11205pub struct Ext4MbBitmapLoadFtraceEvent {
11206    #[prost(uint64, optional, tag="1")]
11207    pub dev: ::core::option::Option<u64>,
11208    #[prost(uint32, optional, tag="2")]
11209    pub group: ::core::option::Option<u32>,
11210}
11211#[derive(Clone, PartialEq, ::prost::Message)]
11212pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
11213    #[prost(uint64, optional, tag="1")]
11214    pub dev: ::core::option::Option<u64>,
11215    #[prost(uint32, optional, tag="2")]
11216    pub group: ::core::option::Option<u32>,
11217}
11218#[derive(Clone, PartialEq, ::prost::Message)]
11219pub struct Ext4MbDiscardPreallocationsFtraceEvent {
11220    #[prost(uint64, optional, tag="1")]
11221    pub dev: ::core::option::Option<u64>,
11222    #[prost(int32, optional, tag="2")]
11223    pub needed: ::core::option::Option<i32>,
11224}
11225#[derive(Clone, PartialEq, ::prost::Message)]
11226pub struct Ext4MbNewGroupPaFtraceEvent {
11227    #[prost(uint64, optional, tag="1")]
11228    pub dev: ::core::option::Option<u64>,
11229    #[prost(uint64, optional, tag="2")]
11230    pub ino: ::core::option::Option<u64>,
11231    #[prost(uint64, optional, tag="3")]
11232    pub pa_pstart: ::core::option::Option<u64>,
11233    #[prost(uint64, optional, tag="4")]
11234    pub pa_lstart: ::core::option::Option<u64>,
11235    #[prost(uint32, optional, tag="5")]
11236    pub pa_len: ::core::option::Option<u32>,
11237}
11238#[derive(Clone, PartialEq, ::prost::Message)]
11239pub struct Ext4MbNewInodePaFtraceEvent {
11240    #[prost(uint64, optional, tag="1")]
11241    pub dev: ::core::option::Option<u64>,
11242    #[prost(uint64, optional, tag="2")]
11243    pub ino: ::core::option::Option<u64>,
11244    #[prost(uint64, optional, tag="3")]
11245    pub pa_pstart: ::core::option::Option<u64>,
11246    #[prost(uint64, optional, tag="4")]
11247    pub pa_lstart: ::core::option::Option<u64>,
11248    #[prost(uint32, optional, tag="5")]
11249    pub pa_len: ::core::option::Option<u32>,
11250}
11251#[derive(Clone, PartialEq, ::prost::Message)]
11252pub struct Ext4MbReleaseGroupPaFtraceEvent {
11253    #[prost(uint64, optional, tag="1")]
11254    pub dev: ::core::option::Option<u64>,
11255    #[prost(uint64, optional, tag="2")]
11256    pub pa_pstart: ::core::option::Option<u64>,
11257    #[prost(uint32, optional, tag="3")]
11258    pub pa_len: ::core::option::Option<u32>,
11259}
11260#[derive(Clone, PartialEq, ::prost::Message)]
11261pub struct Ext4MbReleaseInodePaFtraceEvent {
11262    #[prost(uint64, optional, tag="1")]
11263    pub dev: ::core::option::Option<u64>,
11264    #[prost(uint64, optional, tag="2")]
11265    pub ino: ::core::option::Option<u64>,
11266    #[prost(uint64, optional, tag="3")]
11267    pub block: ::core::option::Option<u64>,
11268    #[prost(uint32, optional, tag="4")]
11269    pub count: ::core::option::Option<u32>,
11270}
11271#[derive(Clone, PartialEq, ::prost::Message)]
11272pub struct Ext4MballocAllocFtraceEvent {
11273    #[prost(uint64, optional, tag="1")]
11274    pub dev: ::core::option::Option<u64>,
11275    #[prost(uint64, optional, tag="2")]
11276    pub ino: ::core::option::Option<u64>,
11277    #[prost(uint32, optional, tag="3")]
11278    pub orig_logical: ::core::option::Option<u32>,
11279    #[prost(int32, optional, tag="4")]
11280    pub orig_start: ::core::option::Option<i32>,
11281    #[prost(uint32, optional, tag="5")]
11282    pub orig_group: ::core::option::Option<u32>,
11283    #[prost(int32, optional, tag="6")]
11284    pub orig_len: ::core::option::Option<i32>,
11285    #[prost(uint32, optional, tag="7")]
11286    pub goal_logical: ::core::option::Option<u32>,
11287    #[prost(int32, optional, tag="8")]
11288    pub goal_start: ::core::option::Option<i32>,
11289    #[prost(uint32, optional, tag="9")]
11290    pub goal_group: ::core::option::Option<u32>,
11291    #[prost(int32, optional, tag="10")]
11292    pub goal_len: ::core::option::Option<i32>,
11293    #[prost(uint32, optional, tag="11")]
11294    pub result_logical: ::core::option::Option<u32>,
11295    #[prost(int32, optional, tag="12")]
11296    pub result_start: ::core::option::Option<i32>,
11297    #[prost(uint32, optional, tag="13")]
11298    pub result_group: ::core::option::Option<u32>,
11299    #[prost(int32, optional, tag="14")]
11300    pub result_len: ::core::option::Option<i32>,
11301    #[prost(uint32, optional, tag="15")]
11302    pub found: ::core::option::Option<u32>,
11303    #[prost(uint32, optional, tag="16")]
11304    pub groups: ::core::option::Option<u32>,
11305    #[prost(uint32, optional, tag="17")]
11306    pub buddy: ::core::option::Option<u32>,
11307    #[prost(uint32, optional, tag="18")]
11308    pub flags: ::core::option::Option<u32>,
11309    #[prost(uint32, optional, tag="19")]
11310    pub tail: ::core::option::Option<u32>,
11311    #[prost(uint32, optional, tag="20")]
11312    pub cr: ::core::option::Option<u32>,
11313}
11314#[derive(Clone, PartialEq, ::prost::Message)]
11315pub struct Ext4MballocDiscardFtraceEvent {
11316    #[prost(uint64, optional, tag="1")]
11317    pub dev: ::core::option::Option<u64>,
11318    #[prost(uint64, optional, tag="2")]
11319    pub ino: ::core::option::Option<u64>,
11320    #[prost(int32, optional, tag="3")]
11321    pub result_start: ::core::option::Option<i32>,
11322    #[prost(uint32, optional, tag="4")]
11323    pub result_group: ::core::option::Option<u32>,
11324    #[prost(int32, optional, tag="5")]
11325    pub result_len: ::core::option::Option<i32>,
11326}
11327#[derive(Clone, PartialEq, ::prost::Message)]
11328pub struct Ext4MballocFreeFtraceEvent {
11329    #[prost(uint64, optional, tag="1")]
11330    pub dev: ::core::option::Option<u64>,
11331    #[prost(uint64, optional, tag="2")]
11332    pub ino: ::core::option::Option<u64>,
11333    #[prost(int32, optional, tag="3")]
11334    pub result_start: ::core::option::Option<i32>,
11335    #[prost(uint32, optional, tag="4")]
11336    pub result_group: ::core::option::Option<u32>,
11337    #[prost(int32, optional, tag="5")]
11338    pub result_len: ::core::option::Option<i32>,
11339}
11340#[derive(Clone, PartialEq, ::prost::Message)]
11341pub struct Ext4MballocPreallocFtraceEvent {
11342    #[prost(uint64, optional, tag="1")]
11343    pub dev: ::core::option::Option<u64>,
11344    #[prost(uint64, optional, tag="2")]
11345    pub ino: ::core::option::Option<u64>,
11346    #[prost(uint32, optional, tag="3")]
11347    pub orig_logical: ::core::option::Option<u32>,
11348    #[prost(int32, optional, tag="4")]
11349    pub orig_start: ::core::option::Option<i32>,
11350    #[prost(uint32, optional, tag="5")]
11351    pub orig_group: ::core::option::Option<u32>,
11352    #[prost(int32, optional, tag="6")]
11353    pub orig_len: ::core::option::Option<i32>,
11354    #[prost(uint32, optional, tag="7")]
11355    pub result_logical: ::core::option::Option<u32>,
11356    #[prost(int32, optional, tag="8")]
11357    pub result_start: ::core::option::Option<i32>,
11358    #[prost(uint32, optional, tag="9")]
11359    pub result_group: ::core::option::Option<u32>,
11360    #[prost(int32, optional, tag="10")]
11361    pub result_len: ::core::option::Option<i32>,
11362}
11363#[derive(Clone, PartialEq, ::prost::Message)]
11364pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
11365    #[prost(uint64, optional, tag="1")]
11366    pub dev: ::core::option::Option<u64>,
11367    #[prost(uint64, optional, tag="2")]
11368    pub ino: ::core::option::Option<u64>,
11369    #[prost(uint64, optional, tag="3")]
11370    pub orig_ino: ::core::option::Option<u64>,
11371    #[prost(uint32, optional, tag="4")]
11372    pub uid: ::core::option::Option<u32>,
11373    #[prost(uint32, optional, tag="5")]
11374    pub gid: ::core::option::Option<u32>,
11375    #[prost(uint32, optional, tag="6")]
11376    pub mode: ::core::option::Option<u32>,
11377}
11378#[derive(Clone, PartialEq, ::prost::Message)]
11379pub struct Ext4PunchHoleFtraceEvent {
11380    #[prost(uint64, optional, tag="1")]
11381    pub dev: ::core::option::Option<u64>,
11382    #[prost(uint64, optional, tag="2")]
11383    pub ino: ::core::option::Option<u64>,
11384    #[prost(int64, optional, tag="3")]
11385    pub offset: ::core::option::Option<i64>,
11386    #[prost(int64, optional, tag="4")]
11387    pub len: ::core::option::Option<i64>,
11388    #[prost(int32, optional, tag="5")]
11389    pub mode: ::core::option::Option<i32>,
11390}
11391#[derive(Clone, PartialEq, ::prost::Message)]
11392pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
11393    #[prost(uint64, optional, tag="1")]
11394    pub dev: ::core::option::Option<u64>,
11395    #[prost(uint32, optional, tag="2")]
11396    pub group: ::core::option::Option<u32>,
11397    #[prost(uint32, optional, tag="3")]
11398    pub prefetch: ::core::option::Option<u32>,
11399}
11400#[derive(Clone, PartialEq, ::prost::Message)]
11401pub struct Ext4ReadpageFtraceEvent {
11402    #[prost(uint64, optional, tag="1")]
11403    pub dev: ::core::option::Option<u64>,
11404    #[prost(uint64, optional, tag="2")]
11405    pub ino: ::core::option::Option<u64>,
11406    #[prost(uint64, optional, tag="3")]
11407    pub index: ::core::option::Option<u64>,
11408}
11409#[derive(Clone, PartialEq, ::prost::Message)]
11410pub struct Ext4ReleasepageFtraceEvent {
11411    #[prost(uint64, optional, tag="1")]
11412    pub dev: ::core::option::Option<u64>,
11413    #[prost(uint64, optional, tag="2")]
11414    pub ino: ::core::option::Option<u64>,
11415    #[prost(uint64, optional, tag="3")]
11416    pub index: ::core::option::Option<u64>,
11417}
11418#[derive(Clone, PartialEq, ::prost::Message)]
11419pub struct Ext4RemoveBlocksFtraceEvent {
11420    #[prost(uint64, optional, tag="1")]
11421    pub dev: ::core::option::Option<u64>,
11422    #[prost(uint64, optional, tag="2")]
11423    pub ino: ::core::option::Option<u64>,
11424    #[prost(uint32, optional, tag="3")]
11425    pub from: ::core::option::Option<u32>,
11426    #[prost(uint32, optional, tag="4")]
11427    pub to: ::core::option::Option<u32>,
11428    #[prost(int64, optional, tag="5")]
11429    pub partial: ::core::option::Option<i64>,
11430    #[prost(uint64, optional, tag="6")]
11431    pub ee_pblk: ::core::option::Option<u64>,
11432    #[prost(uint32, optional, tag="7")]
11433    pub ee_lblk: ::core::option::Option<u32>,
11434    #[prost(uint32, optional, tag="8")]
11435    pub ee_len: ::core::option::Option<u32>,
11436    #[prost(uint32, optional, tag="9")]
11437    pub pc_lblk: ::core::option::Option<u32>,
11438    #[prost(uint64, optional, tag="10")]
11439    pub pc_pclu: ::core::option::Option<u64>,
11440    #[prost(int32, optional, tag="11")]
11441    pub pc_state: ::core::option::Option<i32>,
11442}
11443#[derive(Clone, PartialEq, ::prost::Message)]
11444pub struct Ext4RequestBlocksFtraceEvent {
11445    #[prost(uint64, optional, tag="1")]
11446    pub dev: ::core::option::Option<u64>,
11447    #[prost(uint64, optional, tag="2")]
11448    pub ino: ::core::option::Option<u64>,
11449    #[prost(uint32, optional, tag="3")]
11450    pub len: ::core::option::Option<u32>,
11451    #[prost(uint32, optional, tag="4")]
11452    pub logical: ::core::option::Option<u32>,
11453    #[prost(uint32, optional, tag="5")]
11454    pub lleft: ::core::option::Option<u32>,
11455    #[prost(uint32, optional, tag="6")]
11456    pub lright: ::core::option::Option<u32>,
11457    #[prost(uint64, optional, tag="7")]
11458    pub goal: ::core::option::Option<u64>,
11459    #[prost(uint64, optional, tag="8")]
11460    pub pleft: ::core::option::Option<u64>,
11461    #[prost(uint64, optional, tag="9")]
11462    pub pright: ::core::option::Option<u64>,
11463    #[prost(uint32, optional, tag="10")]
11464    pub flags: ::core::option::Option<u32>,
11465}
11466#[derive(Clone, PartialEq, ::prost::Message)]
11467pub struct Ext4RequestInodeFtraceEvent {
11468    #[prost(uint64, optional, tag="1")]
11469    pub dev: ::core::option::Option<u64>,
11470    #[prost(uint64, optional, tag="2")]
11471    pub dir: ::core::option::Option<u64>,
11472    #[prost(uint32, optional, tag="3")]
11473    pub mode: ::core::option::Option<u32>,
11474}
11475#[derive(Clone, PartialEq, ::prost::Message)]
11476pub struct Ext4SyncFsFtraceEvent {
11477    #[prost(uint64, optional, tag="1")]
11478    pub dev: ::core::option::Option<u64>,
11479    #[prost(int32, optional, tag="2")]
11480    pub wait: ::core::option::Option<i32>,
11481}
11482#[derive(Clone, PartialEq, ::prost::Message)]
11483pub struct Ext4TrimAllFreeFtraceEvent {
11484    #[prost(int32, optional, tag="1")]
11485    pub dev_major: ::core::option::Option<i32>,
11486    #[prost(int32, optional, tag="2")]
11487    pub dev_minor: ::core::option::Option<i32>,
11488    #[prost(uint32, optional, tag="3")]
11489    pub group: ::core::option::Option<u32>,
11490    #[prost(int32, optional, tag="4")]
11491    pub start: ::core::option::Option<i32>,
11492    #[prost(int32, optional, tag="5")]
11493    pub len: ::core::option::Option<i32>,
11494}
11495#[derive(Clone, PartialEq, ::prost::Message)]
11496pub struct Ext4TrimExtentFtraceEvent {
11497    #[prost(int32, optional, tag="1")]
11498    pub dev_major: ::core::option::Option<i32>,
11499    #[prost(int32, optional, tag="2")]
11500    pub dev_minor: ::core::option::Option<i32>,
11501    #[prost(uint32, optional, tag="3")]
11502    pub group: ::core::option::Option<u32>,
11503    #[prost(int32, optional, tag="4")]
11504    pub start: ::core::option::Option<i32>,
11505    #[prost(int32, optional, tag="5")]
11506    pub len: ::core::option::Option<i32>,
11507}
11508#[derive(Clone, PartialEq, ::prost::Message)]
11509pub struct Ext4TruncateEnterFtraceEvent {
11510    #[prost(uint64, optional, tag="1")]
11511    pub dev: ::core::option::Option<u64>,
11512    #[prost(uint64, optional, tag="2")]
11513    pub ino: ::core::option::Option<u64>,
11514    #[prost(uint64, optional, tag="3")]
11515    pub blocks: ::core::option::Option<u64>,
11516}
11517#[derive(Clone, PartialEq, ::prost::Message)]
11518pub struct Ext4TruncateExitFtraceEvent {
11519    #[prost(uint64, optional, tag="1")]
11520    pub dev: ::core::option::Option<u64>,
11521    #[prost(uint64, optional, tag="2")]
11522    pub ino: ::core::option::Option<u64>,
11523    #[prost(uint64, optional, tag="3")]
11524    pub blocks: ::core::option::Option<u64>,
11525}
11526#[derive(Clone, PartialEq, ::prost::Message)]
11527pub struct Ext4UnlinkEnterFtraceEvent {
11528    #[prost(uint64, optional, tag="1")]
11529    pub dev: ::core::option::Option<u64>,
11530    #[prost(uint64, optional, tag="2")]
11531    pub ino: ::core::option::Option<u64>,
11532    #[prost(uint64, optional, tag="3")]
11533    pub parent: ::core::option::Option<u64>,
11534    #[prost(int64, optional, tag="4")]
11535    pub size: ::core::option::Option<i64>,
11536}
11537#[derive(Clone, PartialEq, ::prost::Message)]
11538pub struct Ext4UnlinkExitFtraceEvent {
11539    #[prost(uint64, optional, tag="1")]
11540    pub dev: ::core::option::Option<u64>,
11541    #[prost(uint64, optional, tag="2")]
11542    pub ino: ::core::option::Option<u64>,
11543    #[prost(int32, optional, tag="3")]
11544    pub ret: ::core::option::Option<i32>,
11545}
11546#[derive(Clone, PartialEq, ::prost::Message)]
11547pub struct Ext4WriteBeginFtraceEvent {
11548    #[prost(uint64, optional, tag="1")]
11549    pub dev: ::core::option::Option<u64>,
11550    #[prost(uint64, optional, tag="2")]
11551    pub ino: ::core::option::Option<u64>,
11552    #[prost(int64, optional, tag="3")]
11553    pub pos: ::core::option::Option<i64>,
11554    #[prost(uint32, optional, tag="4")]
11555    pub len: ::core::option::Option<u32>,
11556    #[prost(uint32, optional, tag="5")]
11557    pub flags: ::core::option::Option<u32>,
11558}
11559#[derive(Clone, PartialEq, ::prost::Message)]
11560pub struct Ext4WriteEndFtraceEvent {
11561    #[prost(uint64, optional, tag="1")]
11562    pub dev: ::core::option::Option<u64>,
11563    #[prost(uint64, optional, tag="2")]
11564    pub ino: ::core::option::Option<u64>,
11565    #[prost(int64, optional, tag="3")]
11566    pub pos: ::core::option::Option<i64>,
11567    #[prost(uint32, optional, tag="4")]
11568    pub len: ::core::option::Option<u32>,
11569    #[prost(uint32, optional, tag="5")]
11570    pub copied: ::core::option::Option<u32>,
11571}
11572#[derive(Clone, PartialEq, ::prost::Message)]
11573pub struct Ext4WritepageFtraceEvent {
11574    #[prost(uint64, optional, tag="1")]
11575    pub dev: ::core::option::Option<u64>,
11576    #[prost(uint64, optional, tag="2")]
11577    pub ino: ::core::option::Option<u64>,
11578    #[prost(uint64, optional, tag="3")]
11579    pub index: ::core::option::Option<u64>,
11580}
11581#[derive(Clone, PartialEq, ::prost::Message)]
11582pub struct Ext4WritepagesFtraceEvent {
11583    #[prost(uint64, optional, tag="1")]
11584    pub dev: ::core::option::Option<u64>,
11585    #[prost(uint64, optional, tag="2")]
11586    pub ino: ::core::option::Option<u64>,
11587    #[prost(int64, optional, tag="3")]
11588    pub nr_to_write: ::core::option::Option<i64>,
11589    #[prost(int64, optional, tag="4")]
11590    pub pages_skipped: ::core::option::Option<i64>,
11591    #[prost(int64, optional, tag="5")]
11592    pub range_start: ::core::option::Option<i64>,
11593    #[prost(int64, optional, tag="6")]
11594    pub range_end: ::core::option::Option<i64>,
11595    #[prost(uint64, optional, tag="7")]
11596    pub writeback_index: ::core::option::Option<u64>,
11597    #[prost(int32, optional, tag="8")]
11598    pub sync_mode: ::core::option::Option<i32>,
11599    #[prost(uint32, optional, tag="9")]
11600    pub for_kupdate: ::core::option::Option<u32>,
11601    #[prost(uint32, optional, tag="10")]
11602    pub range_cyclic: ::core::option::Option<u32>,
11603}
11604#[derive(Clone, PartialEq, ::prost::Message)]
11605pub struct Ext4WritepagesResultFtraceEvent {
11606    #[prost(uint64, optional, tag="1")]
11607    pub dev: ::core::option::Option<u64>,
11608    #[prost(uint64, optional, tag="2")]
11609    pub ino: ::core::option::Option<u64>,
11610    #[prost(int32, optional, tag="3")]
11611    pub ret: ::core::option::Option<i32>,
11612    #[prost(int32, optional, tag="4")]
11613    pub pages_written: ::core::option::Option<i32>,
11614    #[prost(int64, optional, tag="5")]
11615    pub pages_skipped: ::core::option::Option<i64>,
11616    #[prost(uint64, optional, tag="6")]
11617    pub writeback_index: ::core::option::Option<u64>,
11618    #[prost(int32, optional, tag="7")]
11619    pub sync_mode: ::core::option::Option<i32>,
11620}
11621#[derive(Clone, PartialEq, ::prost::Message)]
11622pub struct Ext4ZeroRangeFtraceEvent {
11623    #[prost(uint64, optional, tag="1")]
11624    pub dev: ::core::option::Option<u64>,
11625    #[prost(uint64, optional, tag="2")]
11626    pub ino: ::core::option::Option<u64>,
11627    #[prost(int64, optional, tag="3")]
11628    pub offset: ::core::option::Option<i64>,
11629    #[prost(int64, optional, tag="4")]
11630    pub len: ::core::option::Option<i64>,
11631    #[prost(int32, optional, tag="5")]
11632    pub mode: ::core::option::Option<i32>,
11633}
11634// End of protos/perfetto/trace/ftrace/ext4.proto
11635
11636// Begin of protos/perfetto/trace/ftrace/f2fs.proto
11637
11638#[derive(Clone, PartialEq, ::prost::Message)]
11639pub struct F2fsDoSubmitBioFtraceEvent {
11640    #[prost(uint64, optional, tag="1")]
11641    pub dev: ::core::option::Option<u64>,
11642    #[prost(int32, optional, tag="2")]
11643    pub btype: ::core::option::Option<i32>,
11644    #[prost(uint32, optional, tag="3")]
11645    pub sync: ::core::option::Option<u32>,
11646    #[prost(uint64, optional, tag="4")]
11647    pub sector: ::core::option::Option<u64>,
11648    #[prost(uint32, optional, tag="5")]
11649    pub size: ::core::option::Option<u32>,
11650}
11651#[derive(Clone, PartialEq, ::prost::Message)]
11652pub struct F2fsEvictInodeFtraceEvent {
11653    #[prost(uint64, optional, tag="1")]
11654    pub dev: ::core::option::Option<u64>,
11655    #[prost(uint64, optional, tag="2")]
11656    pub ino: ::core::option::Option<u64>,
11657    #[prost(uint64, optional, tag="3")]
11658    pub pino: ::core::option::Option<u64>,
11659    #[prost(uint32, optional, tag="4")]
11660    pub mode: ::core::option::Option<u32>,
11661    #[prost(int64, optional, tag="5")]
11662    pub size: ::core::option::Option<i64>,
11663    #[prost(uint32, optional, tag="6")]
11664    pub nlink: ::core::option::Option<u32>,
11665    #[prost(uint64, optional, tag="7")]
11666    pub blocks: ::core::option::Option<u64>,
11667    #[prost(uint32, optional, tag="8")]
11668    pub advise: ::core::option::Option<u32>,
11669}
11670#[derive(Clone, PartialEq, ::prost::Message)]
11671pub struct F2fsFallocateFtraceEvent {
11672    #[prost(uint64, optional, tag="1")]
11673    pub dev: ::core::option::Option<u64>,
11674    #[prost(uint64, optional, tag="2")]
11675    pub ino: ::core::option::Option<u64>,
11676    #[prost(int32, optional, tag="3")]
11677    pub mode: ::core::option::Option<i32>,
11678    #[prost(int64, optional, tag="4")]
11679    pub offset: ::core::option::Option<i64>,
11680    #[prost(int64, optional, tag="5")]
11681    pub len: ::core::option::Option<i64>,
11682    #[prost(int64, optional, tag="6")]
11683    pub size: ::core::option::Option<i64>,
11684    #[prost(uint64, optional, tag="7")]
11685    pub blocks: ::core::option::Option<u64>,
11686    #[prost(int32, optional, tag="8")]
11687    pub ret: ::core::option::Option<i32>,
11688}
11689#[derive(Clone, PartialEq, ::prost::Message)]
11690pub struct F2fsGetDataBlockFtraceEvent {
11691    #[prost(uint64, optional, tag="1")]
11692    pub dev: ::core::option::Option<u64>,
11693    #[prost(uint64, optional, tag="2")]
11694    pub ino: ::core::option::Option<u64>,
11695    #[prost(uint64, optional, tag="3")]
11696    pub iblock: ::core::option::Option<u64>,
11697    #[prost(uint64, optional, tag="4")]
11698    pub bh_start: ::core::option::Option<u64>,
11699    #[prost(uint64, optional, tag="5")]
11700    pub bh_size: ::core::option::Option<u64>,
11701    #[prost(int32, optional, tag="6")]
11702    pub ret: ::core::option::Option<i32>,
11703}
11704#[derive(Clone, PartialEq, ::prost::Message)]
11705pub struct F2fsGetVictimFtraceEvent {
11706    #[prost(uint64, optional, tag="1")]
11707    pub dev: ::core::option::Option<u64>,
11708    #[prost(int32, optional, tag="2")]
11709    pub r#type: ::core::option::Option<i32>,
11710    #[prost(int32, optional, tag="3")]
11711    pub gc_type: ::core::option::Option<i32>,
11712    #[prost(int32, optional, tag="4")]
11713    pub alloc_mode: ::core::option::Option<i32>,
11714    #[prost(int32, optional, tag="5")]
11715    pub gc_mode: ::core::option::Option<i32>,
11716    #[prost(uint32, optional, tag="6")]
11717    pub victim: ::core::option::Option<u32>,
11718    #[prost(uint32, optional, tag="7")]
11719    pub ofs_unit: ::core::option::Option<u32>,
11720    #[prost(uint32, optional, tag="8")]
11721    pub pre_victim: ::core::option::Option<u32>,
11722    #[prost(uint32, optional, tag="9")]
11723    pub prefree: ::core::option::Option<u32>,
11724    #[prost(uint32, optional, tag="10")]
11725    pub free: ::core::option::Option<u32>,
11726    #[prost(uint32, optional, tag="11")]
11727    pub cost: ::core::option::Option<u32>,
11728}
11729#[derive(Clone, PartialEq, ::prost::Message)]
11730pub struct F2fsIgetFtraceEvent {
11731    #[prost(uint64, optional, tag="1")]
11732    pub dev: ::core::option::Option<u64>,
11733    #[prost(uint64, optional, tag="2")]
11734    pub ino: ::core::option::Option<u64>,
11735    #[prost(uint64, optional, tag="3")]
11736    pub pino: ::core::option::Option<u64>,
11737    #[prost(uint32, optional, tag="4")]
11738    pub mode: ::core::option::Option<u32>,
11739    #[prost(int64, optional, tag="5")]
11740    pub size: ::core::option::Option<i64>,
11741    #[prost(uint32, optional, tag="6")]
11742    pub nlink: ::core::option::Option<u32>,
11743    #[prost(uint64, optional, tag="7")]
11744    pub blocks: ::core::option::Option<u64>,
11745    #[prost(uint32, optional, tag="8")]
11746    pub advise: ::core::option::Option<u32>,
11747}
11748#[derive(Clone, PartialEq, ::prost::Message)]
11749pub struct F2fsIgetExitFtraceEvent {
11750    #[prost(uint64, optional, tag="1")]
11751    pub dev: ::core::option::Option<u64>,
11752    #[prost(uint64, optional, tag="2")]
11753    pub ino: ::core::option::Option<u64>,
11754    #[prost(int32, optional, tag="3")]
11755    pub ret: ::core::option::Option<i32>,
11756}
11757#[derive(Clone, PartialEq, ::prost::Message)]
11758pub struct F2fsNewInodeFtraceEvent {
11759    #[prost(uint64, optional, tag="1")]
11760    pub dev: ::core::option::Option<u64>,
11761    #[prost(uint64, optional, tag="2")]
11762    pub ino: ::core::option::Option<u64>,
11763    #[prost(int32, optional, tag="3")]
11764    pub ret: ::core::option::Option<i32>,
11765}
11766#[derive(Clone, PartialEq, ::prost::Message)]
11767pub struct F2fsReadpageFtraceEvent {
11768    #[prost(uint64, optional, tag="1")]
11769    pub dev: ::core::option::Option<u64>,
11770    #[prost(uint64, optional, tag="2")]
11771    pub ino: ::core::option::Option<u64>,
11772    #[prost(uint64, optional, tag="3")]
11773    pub index: ::core::option::Option<u64>,
11774    #[prost(uint64, optional, tag="4")]
11775    pub blkaddr: ::core::option::Option<u64>,
11776    #[prost(int32, optional, tag="5")]
11777    pub r#type: ::core::option::Option<i32>,
11778    #[prost(int32, optional, tag="6")]
11779    pub dir: ::core::option::Option<i32>,
11780    #[prost(int32, optional, tag="7")]
11781    pub dirty: ::core::option::Option<i32>,
11782    #[prost(int32, optional, tag="8")]
11783    pub uptodate: ::core::option::Option<i32>,
11784}
11785#[derive(Clone, PartialEq, ::prost::Message)]
11786pub struct F2fsReserveNewBlockFtraceEvent {
11787    #[prost(uint64, optional, tag="1")]
11788    pub dev: ::core::option::Option<u64>,
11789    #[prost(uint32, optional, tag="2")]
11790    pub nid: ::core::option::Option<u32>,
11791    #[prost(uint32, optional, tag="3")]
11792    pub ofs_in_node: ::core::option::Option<u32>,
11793}
11794#[derive(Clone, PartialEq, ::prost::Message)]
11795pub struct F2fsSetPageDirtyFtraceEvent {
11796    #[prost(uint64, optional, tag="1")]
11797    pub dev: ::core::option::Option<u64>,
11798    #[prost(uint64, optional, tag="2")]
11799    pub ino: ::core::option::Option<u64>,
11800    #[prost(int32, optional, tag="3")]
11801    pub r#type: ::core::option::Option<i32>,
11802    #[prost(int32, optional, tag="4")]
11803    pub dir: ::core::option::Option<i32>,
11804    #[prost(uint64, optional, tag="5")]
11805    pub index: ::core::option::Option<u64>,
11806    #[prost(int32, optional, tag="6")]
11807    pub dirty: ::core::option::Option<i32>,
11808    #[prost(int32, optional, tag="7")]
11809    pub uptodate: ::core::option::Option<i32>,
11810}
11811#[derive(Clone, PartialEq, ::prost::Message)]
11812pub struct F2fsSubmitWritePageFtraceEvent {
11813    #[prost(uint64, optional, tag="1")]
11814    pub dev: ::core::option::Option<u64>,
11815    #[prost(uint64, optional, tag="2")]
11816    pub ino: ::core::option::Option<u64>,
11817    #[prost(int32, optional, tag="3")]
11818    pub r#type: ::core::option::Option<i32>,
11819    #[prost(uint64, optional, tag="4")]
11820    pub index: ::core::option::Option<u64>,
11821    #[prost(uint32, optional, tag="5")]
11822    pub block: ::core::option::Option<u32>,
11823}
11824#[derive(Clone, PartialEq, ::prost::Message)]
11825pub struct F2fsSyncFileEnterFtraceEvent {
11826    #[prost(uint64, optional, tag="1")]
11827    pub dev: ::core::option::Option<u64>,
11828    #[prost(uint64, optional, tag="2")]
11829    pub ino: ::core::option::Option<u64>,
11830    #[prost(uint64, optional, tag="3")]
11831    pub pino: ::core::option::Option<u64>,
11832    #[prost(uint32, optional, tag="4")]
11833    pub mode: ::core::option::Option<u32>,
11834    #[prost(int64, optional, tag="5")]
11835    pub size: ::core::option::Option<i64>,
11836    #[prost(uint32, optional, tag="6")]
11837    pub nlink: ::core::option::Option<u32>,
11838    #[prost(uint64, optional, tag="7")]
11839    pub blocks: ::core::option::Option<u64>,
11840    #[prost(uint32, optional, tag="8")]
11841    pub advise: ::core::option::Option<u32>,
11842}
11843#[derive(Clone, PartialEq, ::prost::Message)]
11844pub struct F2fsSyncFileExitFtraceEvent {
11845    #[prost(uint64, optional, tag="1")]
11846    pub dev: ::core::option::Option<u64>,
11847    #[prost(uint64, optional, tag="2")]
11848    pub ino: ::core::option::Option<u64>,
11849    #[prost(uint32, optional, tag="3")]
11850    pub need_cp: ::core::option::Option<u32>,
11851    #[prost(int32, optional, tag="4")]
11852    pub datasync: ::core::option::Option<i32>,
11853    #[prost(int32, optional, tag="5")]
11854    pub ret: ::core::option::Option<i32>,
11855    #[prost(int32, optional, tag="6")]
11856    pub cp_reason: ::core::option::Option<i32>,
11857}
11858#[derive(Clone, PartialEq, ::prost::Message)]
11859pub struct F2fsSyncFsFtraceEvent {
11860    #[prost(uint64, optional, tag="1")]
11861    pub dev: ::core::option::Option<u64>,
11862    #[prost(int32, optional, tag="2")]
11863    pub dirty: ::core::option::Option<i32>,
11864    #[prost(int32, optional, tag="3")]
11865    pub wait: ::core::option::Option<i32>,
11866}
11867#[derive(Clone, PartialEq, ::prost::Message)]
11868pub struct F2fsTruncateFtraceEvent {
11869    #[prost(uint64, optional, tag="1")]
11870    pub dev: ::core::option::Option<u64>,
11871    #[prost(uint64, optional, tag="2")]
11872    pub ino: ::core::option::Option<u64>,
11873    #[prost(uint64, optional, tag="3")]
11874    pub pino: ::core::option::Option<u64>,
11875    #[prost(uint32, optional, tag="4")]
11876    pub mode: ::core::option::Option<u32>,
11877    #[prost(int64, optional, tag="5")]
11878    pub size: ::core::option::Option<i64>,
11879    #[prost(uint32, optional, tag="6")]
11880    pub nlink: ::core::option::Option<u32>,
11881    #[prost(uint64, optional, tag="7")]
11882    pub blocks: ::core::option::Option<u64>,
11883    #[prost(uint32, optional, tag="8")]
11884    pub advise: ::core::option::Option<u32>,
11885}
11886#[derive(Clone, PartialEq, ::prost::Message)]
11887pub struct F2fsTruncateBlocksEnterFtraceEvent {
11888    #[prost(uint64, optional, tag="1")]
11889    pub dev: ::core::option::Option<u64>,
11890    #[prost(uint64, optional, tag="2")]
11891    pub ino: ::core::option::Option<u64>,
11892    #[prost(int64, optional, tag="3")]
11893    pub size: ::core::option::Option<i64>,
11894    #[prost(uint64, optional, tag="4")]
11895    pub blocks: ::core::option::Option<u64>,
11896    #[prost(uint64, optional, tag="5")]
11897    pub from: ::core::option::Option<u64>,
11898}
11899#[derive(Clone, PartialEq, ::prost::Message)]
11900pub struct F2fsTruncateBlocksExitFtraceEvent {
11901    #[prost(uint64, optional, tag="1")]
11902    pub dev: ::core::option::Option<u64>,
11903    #[prost(uint64, optional, tag="2")]
11904    pub ino: ::core::option::Option<u64>,
11905    #[prost(int32, optional, tag="3")]
11906    pub ret: ::core::option::Option<i32>,
11907}
11908#[derive(Clone, PartialEq, ::prost::Message)]
11909pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
11910    #[prost(uint64, optional, tag="1")]
11911    pub dev: ::core::option::Option<u64>,
11912    #[prost(uint64, optional, tag="2")]
11913    pub ino: ::core::option::Option<u64>,
11914    #[prost(uint32, optional, tag="3")]
11915    pub nid: ::core::option::Option<u32>,
11916    #[prost(uint32, optional, tag="4")]
11917    pub ofs: ::core::option::Option<u32>,
11918    #[prost(int32, optional, tag="5")]
11919    pub free: ::core::option::Option<i32>,
11920}
11921#[derive(Clone, PartialEq, ::prost::Message)]
11922pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
11923    #[prost(uint64, optional, tag="1")]
11924    pub dev: ::core::option::Option<u64>,
11925    #[prost(uint64, optional, tag="2")]
11926    pub ino: ::core::option::Option<u64>,
11927    #[prost(int64, optional, tag="3")]
11928    pub size: ::core::option::Option<i64>,
11929    #[prost(uint64, optional, tag="4")]
11930    pub blocks: ::core::option::Option<u64>,
11931    #[prost(uint64, optional, tag="5")]
11932    pub from: ::core::option::Option<u64>,
11933}
11934#[derive(Clone, PartialEq, ::prost::Message)]
11935pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
11936    #[prost(uint64, optional, tag="1")]
11937    pub dev: ::core::option::Option<u64>,
11938    #[prost(uint64, optional, tag="2")]
11939    pub ino: ::core::option::Option<u64>,
11940    #[prost(int32, optional, tag="3")]
11941    pub ret: ::core::option::Option<i32>,
11942}
11943#[derive(Clone, PartialEq, ::prost::Message)]
11944pub struct F2fsTruncateNodeFtraceEvent {
11945    #[prost(uint64, optional, tag="1")]
11946    pub dev: ::core::option::Option<u64>,
11947    #[prost(uint64, optional, tag="2")]
11948    pub ino: ::core::option::Option<u64>,
11949    #[prost(uint32, optional, tag="3")]
11950    pub nid: ::core::option::Option<u32>,
11951    #[prost(uint32, optional, tag="4")]
11952    pub blk_addr: ::core::option::Option<u32>,
11953}
11954#[derive(Clone, PartialEq, ::prost::Message)]
11955pub struct F2fsTruncateNodesEnterFtraceEvent {
11956    #[prost(uint64, optional, tag="1")]
11957    pub dev: ::core::option::Option<u64>,
11958    #[prost(uint64, optional, tag="2")]
11959    pub ino: ::core::option::Option<u64>,
11960    #[prost(uint32, optional, tag="3")]
11961    pub nid: ::core::option::Option<u32>,
11962    #[prost(uint32, optional, tag="4")]
11963    pub blk_addr: ::core::option::Option<u32>,
11964}
11965#[derive(Clone, PartialEq, ::prost::Message)]
11966pub struct F2fsTruncateNodesExitFtraceEvent {
11967    #[prost(uint64, optional, tag="1")]
11968    pub dev: ::core::option::Option<u64>,
11969    #[prost(uint64, optional, tag="2")]
11970    pub ino: ::core::option::Option<u64>,
11971    #[prost(int32, optional, tag="3")]
11972    pub ret: ::core::option::Option<i32>,
11973}
11974#[derive(Clone, PartialEq, ::prost::Message)]
11975pub struct F2fsTruncatePartialNodesFtraceEvent {
11976    #[prost(uint64, optional, tag="1")]
11977    pub dev: ::core::option::Option<u64>,
11978    #[prost(uint64, optional, tag="2")]
11979    pub ino: ::core::option::Option<u64>,
11980    #[prost(uint32, optional, tag="3")]
11981    pub nid: ::core::option::Option<u32>,
11982    #[prost(int32, optional, tag="4")]
11983    pub depth: ::core::option::Option<i32>,
11984    #[prost(int32, optional, tag="5")]
11985    pub err: ::core::option::Option<i32>,
11986}
11987#[derive(Clone, PartialEq, ::prost::Message)]
11988pub struct F2fsUnlinkEnterFtraceEvent {
11989    #[prost(uint64, optional, tag="1")]
11990    pub dev: ::core::option::Option<u64>,
11991    #[prost(uint64, optional, tag="2")]
11992    pub ino: ::core::option::Option<u64>,
11993    #[prost(int64, optional, tag="3")]
11994    pub size: ::core::option::Option<i64>,
11995    #[prost(uint64, optional, tag="4")]
11996    pub blocks: ::core::option::Option<u64>,
11997    #[prost(string, optional, tag="5")]
11998    pub name: ::core::option::Option<::prost::alloc::string::String>,
11999}
12000#[derive(Clone, PartialEq, ::prost::Message)]
12001pub struct F2fsUnlinkExitFtraceEvent {
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(int32, optional, tag="3")]
12007    pub ret: ::core::option::Option<i32>,
12008}
12009#[derive(Clone, PartialEq, ::prost::Message)]
12010pub struct F2fsVmPageMkwriteFtraceEvent {
12011    #[prost(uint64, optional, tag="1")]
12012    pub dev: ::core::option::Option<u64>,
12013    #[prost(uint64, optional, tag="2")]
12014    pub ino: ::core::option::Option<u64>,
12015    #[prost(int32, optional, tag="3")]
12016    pub r#type: ::core::option::Option<i32>,
12017    #[prost(int32, optional, tag="4")]
12018    pub dir: ::core::option::Option<i32>,
12019    #[prost(uint64, optional, tag="5")]
12020    pub index: ::core::option::Option<u64>,
12021    #[prost(int32, optional, tag="6")]
12022    pub dirty: ::core::option::Option<i32>,
12023    #[prost(int32, optional, tag="7")]
12024    pub uptodate: ::core::option::Option<i32>,
12025}
12026#[derive(Clone, PartialEq, ::prost::Message)]
12027pub struct F2fsWriteBeginFtraceEvent {
12028    #[prost(uint64, optional, tag="1")]
12029    pub dev: ::core::option::Option<u64>,
12030    #[prost(uint64, optional, tag="2")]
12031    pub ino: ::core::option::Option<u64>,
12032    #[prost(int64, optional, tag="3")]
12033    pub pos: ::core::option::Option<i64>,
12034    #[prost(uint32, optional, tag="4")]
12035    pub len: ::core::option::Option<u32>,
12036    #[prost(uint32, optional, tag="5")]
12037    pub flags: ::core::option::Option<u32>,
12038}
12039#[derive(Clone, PartialEq, ::prost::Message)]
12040pub struct F2fsWriteCheckpointFtraceEvent {
12041    #[prost(uint64, optional, tag="1")]
12042    pub dev: ::core::option::Option<u64>,
12043    #[prost(uint32, optional, tag="2")]
12044    pub is_umount: ::core::option::Option<u32>,
12045    #[prost(string, optional, tag="3")]
12046    pub msg: ::core::option::Option<::prost::alloc::string::String>,
12047    #[prost(int32, optional, tag="4")]
12048    pub reason: ::core::option::Option<i32>,
12049}
12050#[derive(Clone, PartialEq, ::prost::Message)]
12051pub struct F2fsWriteEndFtraceEvent {
12052    #[prost(uint64, optional, tag="1")]
12053    pub dev: ::core::option::Option<u64>,
12054    #[prost(uint64, optional, tag="2")]
12055    pub ino: ::core::option::Option<u64>,
12056    #[prost(int64, optional, tag="3")]
12057    pub pos: ::core::option::Option<i64>,
12058    #[prost(uint32, optional, tag="4")]
12059    pub len: ::core::option::Option<u32>,
12060    #[prost(uint32, optional, tag="5")]
12061    pub copied: ::core::option::Option<u32>,
12062}
12063#[derive(Clone, PartialEq, ::prost::Message)]
12064pub struct F2fsIostatFtraceEvent {
12065    #[prost(uint64, optional, tag="1")]
12066    pub app_bio: ::core::option::Option<u64>,
12067    #[prost(uint64, optional, tag="2")]
12068    pub app_brio: ::core::option::Option<u64>,
12069    #[prost(uint64, optional, tag="3")]
12070    pub app_dio: ::core::option::Option<u64>,
12071    #[prost(uint64, optional, tag="4")]
12072    pub app_drio: ::core::option::Option<u64>,
12073    #[prost(uint64, optional, tag="5")]
12074    pub app_mio: ::core::option::Option<u64>,
12075    #[prost(uint64, optional, tag="6")]
12076    pub app_mrio: ::core::option::Option<u64>,
12077    #[prost(uint64, optional, tag="7")]
12078    pub app_rio: ::core::option::Option<u64>,
12079    #[prost(uint64, optional, tag="8")]
12080    pub app_wio: ::core::option::Option<u64>,
12081    #[prost(uint64, optional, tag="9")]
12082    pub dev: ::core::option::Option<u64>,
12083    #[prost(uint64, optional, tag="10")]
12084    pub fs_cdrio: ::core::option::Option<u64>,
12085    #[prost(uint64, optional, tag="11")]
12086    pub fs_cp_dio: ::core::option::Option<u64>,
12087    #[prost(uint64, optional, tag="12")]
12088    pub fs_cp_mio: ::core::option::Option<u64>,
12089    #[prost(uint64, optional, tag="13")]
12090    pub fs_cp_nio: ::core::option::Option<u64>,
12091    #[prost(uint64, optional, tag="14")]
12092    pub fs_dio: ::core::option::Option<u64>,
12093    #[prost(uint64, optional, tag="15")]
12094    pub fs_discard: ::core::option::Option<u64>,
12095    #[prost(uint64, optional, tag="16")]
12096    pub fs_drio: ::core::option::Option<u64>,
12097    #[prost(uint64, optional, tag="17")]
12098    pub fs_gc_dio: ::core::option::Option<u64>,
12099    #[prost(uint64, optional, tag="18")]
12100    pub fs_gc_nio: ::core::option::Option<u64>,
12101    #[prost(uint64, optional, tag="19")]
12102    pub fs_gdrio: ::core::option::Option<u64>,
12103    #[prost(uint64, optional, tag="20")]
12104    pub fs_mio: ::core::option::Option<u64>,
12105    #[prost(uint64, optional, tag="21")]
12106    pub fs_mrio: ::core::option::Option<u64>,
12107    #[prost(uint64, optional, tag="22")]
12108    pub fs_nio: ::core::option::Option<u64>,
12109    #[prost(uint64, optional, tag="23")]
12110    pub fs_nrio: ::core::option::Option<u64>,
12111}
12112#[derive(Clone, PartialEq, ::prost::Message)]
12113pub struct F2fsIostatLatencyFtraceEvent {
12114    #[prost(uint32, optional, tag="1")]
12115    pub d_rd_avg: ::core::option::Option<u32>,
12116    #[prost(uint32, optional, tag="2")]
12117    pub d_rd_cnt: ::core::option::Option<u32>,
12118    #[prost(uint32, optional, tag="3")]
12119    pub d_rd_peak: ::core::option::Option<u32>,
12120    #[prost(uint32, optional, tag="4")]
12121    pub d_wr_as_avg: ::core::option::Option<u32>,
12122    #[prost(uint32, optional, tag="5")]
12123    pub d_wr_as_cnt: ::core::option::Option<u32>,
12124    #[prost(uint32, optional, tag="6")]
12125    pub d_wr_as_peak: ::core::option::Option<u32>,
12126    #[prost(uint32, optional, tag="7")]
12127    pub d_wr_s_avg: ::core::option::Option<u32>,
12128    #[prost(uint32, optional, tag="8")]
12129    pub d_wr_s_cnt: ::core::option::Option<u32>,
12130    #[prost(uint32, optional, tag="9")]
12131    pub d_wr_s_peak: ::core::option::Option<u32>,
12132    #[prost(uint64, optional, tag="10")]
12133    pub dev: ::core::option::Option<u64>,
12134    #[prost(uint32, optional, tag="11")]
12135    pub m_rd_avg: ::core::option::Option<u32>,
12136    #[prost(uint32, optional, tag="12")]
12137    pub m_rd_cnt: ::core::option::Option<u32>,
12138    #[prost(uint32, optional, tag="13")]
12139    pub m_rd_peak: ::core::option::Option<u32>,
12140    #[prost(uint32, optional, tag="14")]
12141    pub m_wr_as_avg: ::core::option::Option<u32>,
12142    #[prost(uint32, optional, tag="15")]
12143    pub m_wr_as_cnt: ::core::option::Option<u32>,
12144    #[prost(uint32, optional, tag="16")]
12145    pub m_wr_as_peak: ::core::option::Option<u32>,
12146    #[prost(uint32, optional, tag="17")]
12147    pub m_wr_s_avg: ::core::option::Option<u32>,
12148    #[prost(uint32, optional, tag="18")]
12149    pub m_wr_s_cnt: ::core::option::Option<u32>,
12150    #[prost(uint32, optional, tag="19")]
12151    pub m_wr_s_peak: ::core::option::Option<u32>,
12152    #[prost(uint32, optional, tag="20")]
12153    pub n_rd_avg: ::core::option::Option<u32>,
12154    #[prost(uint32, optional, tag="21")]
12155    pub n_rd_cnt: ::core::option::Option<u32>,
12156    #[prost(uint32, optional, tag="22")]
12157    pub n_rd_peak: ::core::option::Option<u32>,
12158    #[prost(uint32, optional, tag="23")]
12159    pub n_wr_as_avg: ::core::option::Option<u32>,
12160    #[prost(uint32, optional, tag="24")]
12161    pub n_wr_as_cnt: ::core::option::Option<u32>,
12162    #[prost(uint32, optional, tag="25")]
12163    pub n_wr_as_peak: ::core::option::Option<u32>,
12164    #[prost(uint32, optional, tag="26")]
12165    pub n_wr_s_avg: ::core::option::Option<u32>,
12166    #[prost(uint32, optional, tag="27")]
12167    pub n_wr_s_cnt: ::core::option::Option<u32>,
12168    #[prost(uint32, optional, tag="28")]
12169    pub n_wr_s_peak: ::core::option::Option<u32>,
12170}
12171#[derive(Clone, PartialEq, ::prost::Message)]
12172pub struct F2fsBackgroundGcFtraceEvent {
12173    #[prost(uint64, optional, tag="1")]
12174    pub dev: ::core::option::Option<u64>,
12175    #[prost(uint32, optional, tag="2")]
12176    pub wait_ms: ::core::option::Option<u32>,
12177    #[prost(uint32, optional, tag="3")]
12178    pub prefree: ::core::option::Option<u32>,
12179    #[prost(uint32, optional, tag="4")]
12180    pub free: ::core::option::Option<u32>,
12181}
12182#[derive(Clone, PartialEq, ::prost::Message)]
12183pub struct F2fsGcBeginFtraceEvent {
12184    #[prost(uint64, optional, tag="1")]
12185    pub dev: ::core::option::Option<u64>,
12186    #[prost(uint32, optional, tag="2")]
12187    pub sync: ::core::option::Option<u32>,
12188    #[prost(uint32, optional, tag="3")]
12189    pub background: ::core::option::Option<u32>,
12190    #[prost(int64, optional, tag="4")]
12191    pub dirty_nodes: ::core::option::Option<i64>,
12192    #[prost(int64, optional, tag="5")]
12193    pub dirty_dents: ::core::option::Option<i64>,
12194    #[prost(int64, optional, tag="6")]
12195    pub dirty_imeta: ::core::option::Option<i64>,
12196    #[prost(uint32, optional, tag="7")]
12197    pub free_sec: ::core::option::Option<u32>,
12198    #[prost(uint32, optional, tag="8")]
12199    pub free_seg: ::core::option::Option<u32>,
12200    #[prost(int32, optional, tag="9")]
12201    pub reserved_seg: ::core::option::Option<i32>,
12202    #[prost(uint32, optional, tag="10")]
12203    pub prefree_seg: ::core::option::Option<u32>,
12204    #[prost(int32, optional, tag="11")]
12205    pub gc_type: ::core::option::Option<i32>,
12206    #[prost(uint32, optional, tag="12")]
12207    pub no_bg_gc: ::core::option::Option<u32>,
12208    #[prost(uint32, optional, tag="13")]
12209    pub nr_free_secs: ::core::option::Option<u32>,
12210}
12211#[derive(Clone, PartialEq, ::prost::Message)]
12212pub struct F2fsGcEndFtraceEvent {
12213    #[prost(uint64, optional, tag="1")]
12214    pub dev: ::core::option::Option<u64>,
12215    #[prost(int32, optional, tag="2")]
12216    pub ret: ::core::option::Option<i32>,
12217    #[prost(int32, optional, tag="3")]
12218    pub seg_freed: ::core::option::Option<i32>,
12219    #[prost(int32, optional, tag="4")]
12220    pub sec_freed: ::core::option::Option<i32>,
12221    #[prost(int64, optional, tag="5")]
12222    pub dirty_nodes: ::core::option::Option<i64>,
12223    #[prost(int64, optional, tag="6")]
12224    pub dirty_dents: ::core::option::Option<i64>,
12225    #[prost(int64, optional, tag="7")]
12226    pub dirty_imeta: ::core::option::Option<i64>,
12227    #[prost(uint32, optional, tag="8")]
12228    pub free_sec: ::core::option::Option<u32>,
12229    #[prost(uint32, optional, tag="9")]
12230    pub free_seg: ::core::option::Option<u32>,
12231    #[prost(int32, optional, tag="10")]
12232    pub reserved_seg: ::core::option::Option<i32>,
12233    #[prost(uint32, optional, tag="11")]
12234    pub prefree_seg: ::core::option::Option<u32>,
12235}
12236// End of protos/perfetto/trace/ftrace/f2fs.proto
12237
12238// Begin of protos/perfetto/trace/ftrace/fastrpc.proto
12239
12240#[derive(Clone, PartialEq, ::prost::Message)]
12241pub struct FastrpcDmaStatFtraceEvent {
12242    #[prost(int32, optional, tag="1")]
12243    pub cid: ::core::option::Option<i32>,
12244    #[prost(int64, optional, tag="2")]
12245    pub len: ::core::option::Option<i64>,
12246    #[prost(uint64, optional, tag="3")]
12247    pub total_allocated: ::core::option::Option<u64>,
12248}
12249#[derive(Clone, PartialEq, ::prost::Message)]
12250pub struct FastrpcDmaFreeFtraceEvent {
12251    #[prost(int32, optional, tag="1")]
12252    pub cid: ::core::option::Option<i32>,
12253    #[prost(uint64, optional, tag="2")]
12254    pub phys: ::core::option::Option<u64>,
12255    #[prost(uint64, optional, tag="3")]
12256    pub size: ::core::option::Option<u64>,
12257}
12258#[derive(Clone, PartialEq, ::prost::Message)]
12259pub struct FastrpcDmaAllocFtraceEvent {
12260    #[prost(int32, optional, tag="1")]
12261    pub cid: ::core::option::Option<i32>,
12262    #[prost(uint64, optional, tag="2")]
12263    pub phys: ::core::option::Option<u64>,
12264    #[prost(uint64, optional, tag="3")]
12265    pub size: ::core::option::Option<u64>,
12266    #[prost(uint64, optional, tag="4")]
12267    pub attr: ::core::option::Option<u64>,
12268    #[prost(int32, optional, tag="5")]
12269    pub mflags: ::core::option::Option<i32>,
12270}
12271#[derive(Clone, PartialEq, ::prost::Message)]
12272pub struct FastrpcDmaUnmapFtraceEvent {
12273    #[prost(int32, optional, tag="1")]
12274    pub cid: ::core::option::Option<i32>,
12275    #[prost(uint64, optional, tag="2")]
12276    pub phys: ::core::option::Option<u64>,
12277    #[prost(uint64, optional, tag="3")]
12278    pub size: ::core::option::Option<u64>,
12279}
12280#[derive(Clone, PartialEq, ::prost::Message)]
12281pub struct FastrpcDmaMapFtraceEvent {
12282    #[prost(int32, optional, tag="1")]
12283    pub cid: ::core::option::Option<i32>,
12284    #[prost(int32, optional, tag="2")]
12285    pub fd: ::core::option::Option<i32>,
12286    #[prost(uint64, optional, tag="3")]
12287    pub phys: ::core::option::Option<u64>,
12288    #[prost(uint64, optional, tag="4")]
12289    pub size: ::core::option::Option<u64>,
12290    #[prost(uint64, optional, tag="5")]
12291    pub len: ::core::option::Option<u64>,
12292    #[prost(uint32, optional, tag="6")]
12293    pub attr: ::core::option::Option<u32>,
12294    #[prost(int32, optional, tag="7")]
12295    pub mflags: ::core::option::Option<i32>,
12296}
12297// End of protos/perfetto/trace/ftrace/fastrpc.proto
12298
12299// Begin of protos/perfetto/trace/ftrace/fence.proto
12300
12301#[derive(Clone, PartialEq, ::prost::Message)]
12302pub struct FenceInitFtraceEvent {
12303    #[prost(uint32, optional, tag="1")]
12304    pub context: ::core::option::Option<u32>,
12305    #[prost(string, optional, tag="2")]
12306    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12307    #[prost(uint32, optional, tag="3")]
12308    pub seqno: ::core::option::Option<u32>,
12309    #[prost(string, optional, tag="4")]
12310    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12311}
12312#[derive(Clone, PartialEq, ::prost::Message)]
12313pub struct FenceDestroyFtraceEvent {
12314    #[prost(uint32, optional, tag="1")]
12315    pub context: ::core::option::Option<u32>,
12316    #[prost(string, optional, tag="2")]
12317    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12318    #[prost(uint32, optional, tag="3")]
12319    pub seqno: ::core::option::Option<u32>,
12320    #[prost(string, optional, tag="4")]
12321    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12322}
12323#[derive(Clone, PartialEq, ::prost::Message)]
12324pub struct FenceEnableSignalFtraceEvent {
12325    #[prost(uint32, optional, tag="1")]
12326    pub context: ::core::option::Option<u32>,
12327    #[prost(string, optional, tag="2")]
12328    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12329    #[prost(uint32, optional, tag="3")]
12330    pub seqno: ::core::option::Option<u32>,
12331    #[prost(string, optional, tag="4")]
12332    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12333}
12334#[derive(Clone, PartialEq, ::prost::Message)]
12335pub struct FenceSignaledFtraceEvent {
12336    #[prost(uint32, optional, tag="1")]
12337    pub context: ::core::option::Option<u32>,
12338    #[prost(string, optional, tag="2")]
12339    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12340    #[prost(uint32, optional, tag="3")]
12341    pub seqno: ::core::option::Option<u32>,
12342    #[prost(string, optional, tag="4")]
12343    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12344}
12345// End of protos/perfetto/trace/ftrace/fence.proto
12346
12347// Begin of protos/perfetto/trace/ftrace/filemap.proto
12348
12349#[derive(Clone, PartialEq, ::prost::Message)]
12350pub struct MmFilemapAddToPageCacheFtraceEvent {
12351    #[prost(uint64, optional, tag="1")]
12352    pub pfn: ::core::option::Option<u64>,
12353    #[prost(uint64, optional, tag="2")]
12354    pub i_ino: ::core::option::Option<u64>,
12355    #[prost(uint64, optional, tag="3")]
12356    pub index: ::core::option::Option<u64>,
12357    #[prost(uint64, optional, tag="4")]
12358    pub s_dev: ::core::option::Option<u64>,
12359    #[prost(uint64, optional, tag="5")]
12360    pub page: ::core::option::Option<u64>,
12361}
12362#[derive(Clone, PartialEq, ::prost::Message)]
12363pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
12364    #[prost(uint64, optional, tag="1")]
12365    pub pfn: ::core::option::Option<u64>,
12366    #[prost(uint64, optional, tag="2")]
12367    pub i_ino: ::core::option::Option<u64>,
12368    #[prost(uint64, optional, tag="3")]
12369    pub index: ::core::option::Option<u64>,
12370    #[prost(uint64, optional, tag="4")]
12371    pub s_dev: ::core::option::Option<u64>,
12372    #[prost(uint64, optional, tag="5")]
12373    pub page: ::core::option::Option<u64>,
12374}
12375// End of protos/perfetto/trace/ftrace/filemap.proto
12376
12377// Begin of protos/perfetto/trace/ftrace/fs.proto
12378
12379#[derive(Clone, PartialEq, ::prost::Message)]
12380pub struct DoSysOpenFtraceEvent {
12381    #[prost(string, optional, tag="1")]
12382    pub filename: ::core::option::Option<::prost::alloc::string::String>,
12383    #[prost(int32, optional, tag="2")]
12384    pub flags: ::core::option::Option<i32>,
12385    #[prost(int32, optional, tag="3")]
12386    pub mode: ::core::option::Option<i32>,
12387}
12388#[derive(Clone, PartialEq, ::prost::Message)]
12389pub struct OpenExecFtraceEvent {
12390    #[prost(string, optional, tag="1")]
12391    pub filename: ::core::option::Option<::prost::alloc::string::String>,
12392}
12393// End of protos/perfetto/trace/ftrace/fs.proto
12394
12395// Begin of protos/perfetto/trace/ftrace/ftrace.proto
12396
12397#[derive(Clone, PartialEq, ::prost::Message)]
12398pub struct PrintFtraceEvent {
12399    #[prost(uint64, optional, tag="1")]
12400    pub ip: ::core::option::Option<u64>,
12401    #[prost(string, optional, tag="2")]
12402    pub buf: ::core::option::Option<::prost::alloc::string::String>,
12403}
12404#[derive(Clone, PartialEq, ::prost::Message)]
12405pub struct FuncgraphEntryFtraceEvent {
12406    #[prost(int32, optional, tag="1")]
12407    pub depth: ::core::option::Option<i32>,
12408    #[prost(uint64, optional, tag="2")]
12409    pub func: ::core::option::Option<u64>,
12410}
12411#[derive(Clone, PartialEq, ::prost::Message)]
12412pub struct FuncgraphExitFtraceEvent {
12413    #[prost(uint64, optional, tag="1")]
12414    pub calltime: ::core::option::Option<u64>,
12415    #[prost(int32, optional, tag="2")]
12416    pub depth: ::core::option::Option<i32>,
12417    #[prost(uint64, optional, tag="3")]
12418    pub func: ::core::option::Option<u64>,
12419    #[prost(uint64, optional, tag="4")]
12420    pub overrun: ::core::option::Option<u64>,
12421    #[prost(uint64, optional, tag="5")]
12422    pub rettime: ::core::option::Option<u64>,
12423}
12424// End of protos/perfetto/trace/ftrace/ftrace.proto
12425
12426// Begin of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
12427
12428#[derive(Clone, PartialEq, ::prost::Message)]
12429pub struct FwtpPerfettoCounterFtraceEvent {
12430    #[prost(uint64, optional, tag="1")]
12431    pub timestamp: ::core::option::Option<u64>,
12432    #[prost(uint32, optional, tag="2")]
12433    pub track_id: ::core::option::Option<u32>,
12434    #[prost(string, optional, tag="3")]
12435    pub category: ::core::option::Option<::prost::alloc::string::String>,
12436    #[prost(string, optional, tag="4")]
12437    pub name: ::core::option::Option<::prost::alloc::string::String>,
12438    #[prost(uint32, optional, tag="5")]
12439    pub value: ::core::option::Option<u32>,
12440}
12441// End of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
12442
12443// Begin of protos/perfetto/trace/ftrace/g2d.proto
12444
12445#[derive(Clone, PartialEq, ::prost::Message)]
12446pub struct G2dTracingMarkWriteFtraceEvent {
12447    #[prost(int32, optional, tag="1")]
12448    pub pid: ::core::option::Option<i32>,
12449    #[prost(string, optional, tag="4")]
12450    pub name: ::core::option::Option<::prost::alloc::string::String>,
12451    #[prost(uint32, optional, tag="5")]
12452    pub r#type: ::core::option::Option<u32>,
12453    #[prost(int32, optional, tag="6")]
12454    pub value: ::core::option::Option<i32>,
12455}
12456// End of protos/perfetto/trace/ftrace/g2d.proto
12457
12458// Begin of protos/perfetto/trace/ftrace/generic.proto
12459
12460/// This generic proto is used to output events in the trace
12461/// when a specific proto for that event does not exist.
12462#[derive(Clone, PartialEq, ::prost::Message)]
12463pub struct GenericFtraceEvent {
12464    #[prost(string, optional, tag="1")]
12465    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
12466    #[prost(message, repeated, tag="2")]
12467    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
12468}
12469/// Nested message and enum types in `GenericFtraceEvent`.
12470pub mod generic_ftrace_event {
12471    #[derive(Clone, PartialEq, ::prost::Message)]
12472    pub struct Field {
12473        #[prost(string, optional, tag="1")]
12474        pub name: ::core::option::Option<::prost::alloc::string::String>,
12475        #[prost(oneof="field::Value", tags="3, 4, 5")]
12476        pub value: ::core::option::Option<field::Value>,
12477    }
12478    /// Nested message and enum types in `Field`.
12479    pub mod field {
12480        #[derive(Clone, PartialEq, ::prost::Oneof)]
12481        pub enum Value {
12482            #[prost(string, tag="3")]
12483            StrValue(::prost::alloc::string::String),
12484            #[prost(int64, tag="4")]
12485            IntValue(i64),
12486            #[prost(uint64, tag="5")]
12487            UintValue(u64),
12488        }
12489    }
12490}
12491#[derive(Clone, PartialEq, ::prost::Message)]
12492pub struct KprobeEvent {
12493    #[prost(string, optional, tag="1")]
12494    pub name: ::core::option::Option<::prost::alloc::string::String>,
12495    #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
12496    pub r#type: ::core::option::Option<i32>,
12497}
12498/// Nested message and enum types in `KprobeEvent`.
12499pub mod kprobe_event {
12500    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
12501    #[repr(i32)]
12502    pub enum KprobeType {
12503        Unknown = 0,
12504        Begin = 1,
12505        End = 2,
12506        Instant = 3,
12507    }
12508    impl KprobeType {
12509        /// String value of the enum field names used in the ProtoBuf definition.
12510        ///
12511        /// The values are not transformed in any way and thus are considered stable
12512        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12513        pub fn as_str_name(&self) -> &'static str {
12514            match self {
12515                KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
12516                KprobeType::Begin => "KPROBE_TYPE_BEGIN",
12517                KprobeType::End => "KPROBE_TYPE_END",
12518                KprobeType::Instant => "KPROBE_TYPE_INSTANT",
12519            }
12520        }
12521    }
12522}
12523// End of protos/perfetto/trace/ftrace/generic.proto
12524
12525// Begin of protos/perfetto/trace/ftrace/google_icc_trace.proto
12526
12527#[derive(Clone, PartialEq, ::prost::Message)]
12528pub struct GoogleIccEventFtraceEvent {
12529    #[prost(string, optional, tag="1")]
12530    pub event: ::core::option::Option<::prost::alloc::string::String>,
12531    #[prost(uint64, optional, tag="2")]
12532    pub timestamp: ::core::option::Option<u64>,
12533}
12534// End of protos/perfetto/trace/ftrace/google_icc_trace.proto
12535
12536// Begin of protos/perfetto/trace/ftrace/google_irm_trace.proto
12537
12538#[derive(Clone, PartialEq, ::prost::Message)]
12539pub struct GoogleIrmEventFtraceEvent {
12540    #[prost(string, optional, tag="1")]
12541    pub event: ::core::option::Option<::prost::alloc::string::String>,
12542    #[prost(uint64, optional, tag="2")]
12543    pub timestamp: ::core::option::Option<u64>,
12544}
12545// End of protos/perfetto/trace/ftrace/google_irm_trace.proto
12546
12547// Begin of protos/perfetto/trace/ftrace/gpu_mem.proto
12548
12549#[derive(Clone, PartialEq, ::prost::Message)]
12550pub struct GpuMemTotalFtraceEvent {
12551    #[prost(uint32, optional, tag="1")]
12552    pub gpu_id: ::core::option::Option<u32>,
12553    #[prost(uint32, optional, tag="2")]
12554    pub pid: ::core::option::Option<u32>,
12555    #[prost(uint64, optional, tag="3")]
12556    pub size: ::core::option::Option<u64>,
12557}
12558// End of protos/perfetto/trace/ftrace/gpu_mem.proto
12559
12560// Begin of protos/perfetto/trace/ftrace/gpu_scheduler.proto
12561
12562#[derive(Clone, PartialEq, ::prost::Message)]
12563pub struct DrmSchedJobFtraceEvent {
12564    #[prost(uint64, optional, tag="1")]
12565    pub entity: ::core::option::Option<u64>,
12566    #[prost(uint64, optional, tag="2")]
12567    pub fence: ::core::option::Option<u64>,
12568    #[prost(int32, optional, tag="3")]
12569    pub hw_job_count: ::core::option::Option<i32>,
12570    #[prost(uint64, optional, tag="4")]
12571    pub id: ::core::option::Option<u64>,
12572    #[prost(uint32, optional, tag="5")]
12573    pub job_count: ::core::option::Option<u32>,
12574    #[prost(string, optional, tag="6")]
12575    pub name: ::core::option::Option<::prost::alloc::string::String>,
12576}
12577#[derive(Clone, PartialEq, ::prost::Message)]
12578pub struct DrmRunJobFtraceEvent {
12579    #[prost(uint64, optional, tag="1")]
12580    pub entity: ::core::option::Option<u64>,
12581    #[prost(uint64, optional, tag="2")]
12582    pub fence: ::core::option::Option<u64>,
12583    #[prost(int32, optional, tag="3")]
12584    pub hw_job_count: ::core::option::Option<i32>,
12585    #[prost(uint64, optional, tag="4")]
12586    pub id: ::core::option::Option<u64>,
12587    #[prost(uint32, optional, tag="5")]
12588    pub job_count: ::core::option::Option<u32>,
12589    #[prost(string, optional, tag="6")]
12590    pub name: ::core::option::Option<::prost::alloc::string::String>,
12591}
12592#[derive(Clone, PartialEq, ::prost::Message)]
12593pub struct DrmSchedProcessJobFtraceEvent {
12594    #[prost(uint64, optional, tag="1")]
12595    pub fence: ::core::option::Option<u64>,
12596}
12597#[derive(Clone, PartialEq, ::prost::Message)]
12598pub struct DrmSchedJobAddDepFtraceEvent {
12599    #[prost(uint64, optional, tag="1")]
12600    pub fence_context: ::core::option::Option<u64>,
12601    #[prost(uint64, optional, tag="2")]
12602    pub fence_seqno: ::core::option::Option<u64>,
12603    #[prost(uint64, optional, tag="3")]
12604    pub ctx: ::core::option::Option<u64>,
12605    #[prost(uint64, optional, tag="4")]
12606    pub seqno: ::core::option::Option<u64>,
12607}
12608#[derive(Clone, PartialEq, ::prost::Message)]
12609pub struct DrmSchedJobDoneFtraceEvent {
12610    #[prost(uint64, optional, tag="1")]
12611    pub fence_context: ::core::option::Option<u64>,
12612    #[prost(uint64, optional, tag="2")]
12613    pub fence_seqno: ::core::option::Option<u64>,
12614}
12615#[derive(Clone, PartialEq, ::prost::Message)]
12616pub struct DrmSchedJobQueueFtraceEvent {
12617    #[prost(string, optional, tag="1")]
12618    pub name: ::core::option::Option<::prost::alloc::string::String>,
12619    #[prost(uint32, optional, tag="2")]
12620    pub job_count: ::core::option::Option<u32>,
12621    #[prost(int32, optional, tag="3")]
12622    pub hw_job_count: ::core::option::Option<i32>,
12623    #[prost(string, optional, tag="4")]
12624    pub dev: ::core::option::Option<::prost::alloc::string::String>,
12625    #[prost(uint64, optional, tag="5")]
12626    pub fence_context: ::core::option::Option<u64>,
12627    #[prost(uint64, optional, tag="6")]
12628    pub fence_seqno: ::core::option::Option<u64>,
12629    #[prost(uint64, optional, tag="7")]
12630    pub client_id: ::core::option::Option<u64>,
12631}
12632#[derive(Clone, PartialEq, ::prost::Message)]
12633pub struct DrmSchedJobRunFtraceEvent {
12634    #[prost(string, optional, tag="1")]
12635    pub name: ::core::option::Option<::prost::alloc::string::String>,
12636    #[prost(uint32, optional, tag="2")]
12637    pub job_count: ::core::option::Option<u32>,
12638    #[prost(int32, optional, tag="3")]
12639    pub hw_job_count: ::core::option::Option<i32>,
12640    #[prost(string, optional, tag="4")]
12641    pub dev: ::core::option::Option<::prost::alloc::string::String>,
12642    #[prost(uint64, optional, tag="5")]
12643    pub fence_context: ::core::option::Option<u64>,
12644    #[prost(uint64, optional, tag="6")]
12645    pub fence_seqno: ::core::option::Option<u64>,
12646    #[prost(uint64, optional, tag="7")]
12647    pub client_id: ::core::option::Option<u64>,
12648}
12649#[derive(Clone, PartialEq, ::prost::Message)]
12650pub struct DrmSchedJobUnschedulableFtraceEvent {
12651    #[prost(uint64, optional, tag="1")]
12652    pub fence_context: ::core::option::Option<u64>,
12653    #[prost(uint64, optional, tag="2")]
12654    pub fence_seqno: ::core::option::Option<u64>,
12655    #[prost(uint64, optional, tag="3")]
12656    pub ctx: ::core::option::Option<u64>,
12657    #[prost(uint64, optional, tag="4")]
12658    pub seqno: ::core::option::Option<u64>,
12659}
12660// End of protos/perfetto/trace/ftrace/gpu_scheduler.proto
12661
12662// Begin of protos/perfetto/trace/ftrace/hyp.proto
12663
12664#[derive(Clone, PartialEq, ::prost::Message)]
12665pub struct HypEnterFtraceEvent {
12666}
12667#[derive(Clone, PartialEq, ::prost::Message)]
12668pub struct HypExitFtraceEvent {
12669}
12670#[derive(Clone, PartialEq, ::prost::Message)]
12671pub struct HostHcallFtraceEvent {
12672    #[prost(uint32, optional, tag="1")]
12673    pub id: ::core::option::Option<u32>,
12674    #[prost(uint32, optional, tag="2")]
12675    pub invalid: ::core::option::Option<u32>,
12676}
12677#[derive(Clone, PartialEq, ::prost::Message)]
12678pub struct HostSmcFtraceEvent {
12679    #[prost(uint64, optional, tag="1")]
12680    pub id: ::core::option::Option<u64>,
12681    #[prost(uint32, optional, tag="2")]
12682    pub forwarded: ::core::option::Option<u32>,
12683}
12684#[derive(Clone, PartialEq, ::prost::Message)]
12685pub struct HostMemAbortFtraceEvent {
12686    #[prost(uint64, optional, tag="1")]
12687    pub esr: ::core::option::Option<u64>,
12688    #[prost(uint64, optional, tag="2")]
12689    pub addr: ::core::option::Option<u64>,
12690}
12691#[derive(Clone, PartialEq, ::prost::Message)]
12692pub struct HostFfaCallFtraceEvent {
12693    #[prost(uint64, optional, tag="1")]
12694    pub func_id: ::core::option::Option<u64>,
12695    #[prost(uint64, optional, tag="2")]
12696    pub res_a1: ::core::option::Option<u64>,
12697    #[prost(uint64, optional, tag="3")]
12698    pub res_a2: ::core::option::Option<u64>,
12699    #[prost(uint64, optional, tag="4")]
12700    pub res_a3: ::core::option::Option<u64>,
12701    #[prost(uint64, optional, tag="5")]
12702    pub res_a4: ::core::option::Option<u64>,
12703    #[prost(int32, optional, tag="6")]
12704    pub handled: ::core::option::Option<i32>,
12705    #[prost(int32, optional, tag="7")]
12706    pub err: ::core::option::Option<i32>,
12707}
12708#[derive(Clone, PartialEq, ::prost::Message)]
12709pub struct IommuIdmapFtraceEvent {
12710    #[prost(uint64, optional, tag="1")]
12711    pub from: ::core::option::Option<u64>,
12712    #[prost(uint64, optional, tag="2")]
12713    pub to: ::core::option::Option<u64>,
12714    #[prost(int32, optional, tag="3")]
12715    pub prot: ::core::option::Option<i32>,
12716}
12717#[derive(Clone, PartialEq, ::prost::Message)]
12718pub struct PsciMemProtectFtraceEvent {
12719    #[prost(uint64, optional, tag="1")]
12720    pub count: ::core::option::Option<u64>,
12721    #[prost(uint64, optional, tag="2")]
12722    pub was: ::core::option::Option<u64>,
12723}
12724// End of protos/perfetto/trace/ftrace/hyp.proto
12725
12726// Begin of protos/perfetto/trace/ftrace/hypervisor.proto
12727
12728#[derive(Clone, PartialEq, ::prost::Message)]
12729pub struct HypervisorHostHcallFtraceEvent {
12730    #[prost(uint32, optional, tag="1")]
12731    pub id: ::core::option::Option<u32>,
12732    #[prost(uint32, optional, tag="2")]
12733    pub invalid: ::core::option::Option<u32>,
12734}
12735#[derive(Clone, PartialEq, ::prost::Message)]
12736pub struct HypervisorHostSmcFtraceEvent {
12737    #[prost(uint64, optional, tag="1")]
12738    pub id: ::core::option::Option<u64>,
12739    #[prost(uint32, optional, tag="2")]
12740    pub forwarded: ::core::option::Option<u32>,
12741}
12742#[derive(Clone, PartialEq, ::prost::Message)]
12743pub struct HypervisorHypExitFtraceEvent {
12744}
12745#[derive(Clone, PartialEq, ::prost::Message)]
12746pub struct HypervisorIommuIdmapFtraceEvent {
12747    #[prost(uint64, optional, tag="1")]
12748    pub from: ::core::option::Option<u64>,
12749    #[prost(uint64, optional, tag="2")]
12750    pub to: ::core::option::Option<u64>,
12751    #[prost(int32, optional, tag="3")]
12752    pub prot: ::core::option::Option<i32>,
12753}
12754#[derive(Clone, PartialEq, ::prost::Message)]
12755pub struct HypervisorPsciMemProtectFtraceEvent {
12756    #[prost(uint64, optional, tag="1")]
12757    pub count: ::core::option::Option<u64>,
12758    #[prost(uint64, optional, tag="2")]
12759    pub was: ::core::option::Option<u64>,
12760}
12761#[derive(Clone, PartialEq, ::prost::Message)]
12762pub struct HypervisorHostMemAbortFtraceEvent {
12763    #[prost(uint64, optional, tag="1")]
12764    pub esr: ::core::option::Option<u64>,
12765    #[prost(uint64, optional, tag="2")]
12766    pub addr: ::core::option::Option<u64>,
12767}
12768#[derive(Clone, PartialEq, ::prost::Message)]
12769pub struct HypervisorHypEnterFtraceEvent {
12770}
12771#[derive(Clone, PartialEq, ::prost::Message)]
12772pub struct HypervisorIommuIdmapCompleteFtraceEvent {
12773    #[prost(uint32, optional, tag="1")]
12774    pub map: ::core::option::Option<u32>,
12775}
12776#[derive(Clone, PartialEq, ::prost::Message)]
12777pub struct HypervisorVcpuIllegalTrapFtraceEvent {
12778    #[prost(uint64, optional, tag="1")]
12779    pub esr: ::core::option::Option<u64>,
12780}
12781// End of protos/perfetto/trace/ftrace/hypervisor.proto
12782
12783// Begin of protos/perfetto/trace/ftrace/i2c.proto
12784
12785#[derive(Clone, PartialEq, ::prost::Message)]
12786pub struct I2cReadFtraceEvent {
12787    #[prost(int32, optional, tag="1")]
12788    pub adapter_nr: ::core::option::Option<i32>,
12789    #[prost(uint32, optional, tag="2")]
12790    pub msg_nr: ::core::option::Option<u32>,
12791    #[prost(uint32, optional, tag="3")]
12792    pub addr: ::core::option::Option<u32>,
12793    #[prost(uint32, optional, tag="4")]
12794    pub flags: ::core::option::Option<u32>,
12795    #[prost(uint32, optional, tag="5")]
12796    pub len: ::core::option::Option<u32>,
12797}
12798#[derive(Clone, PartialEq, ::prost::Message)]
12799pub struct I2cWriteFtraceEvent {
12800    #[prost(int32, optional, tag="1")]
12801    pub adapter_nr: ::core::option::Option<i32>,
12802    #[prost(uint32, optional, tag="2")]
12803    pub msg_nr: ::core::option::Option<u32>,
12804    #[prost(uint32, optional, tag="3")]
12805    pub addr: ::core::option::Option<u32>,
12806    #[prost(uint32, optional, tag="4")]
12807    pub flags: ::core::option::Option<u32>,
12808    #[prost(uint32, optional, tag="5")]
12809    pub len: ::core::option::Option<u32>,
12810    #[prost(uint32, optional, tag="6")]
12811    pub buf: ::core::option::Option<u32>,
12812}
12813#[derive(Clone, PartialEq, ::prost::Message)]
12814pub struct I2cResultFtraceEvent {
12815    #[prost(int32, optional, tag="1")]
12816    pub adapter_nr: ::core::option::Option<i32>,
12817    #[prost(uint32, optional, tag="2")]
12818    pub nr_msgs: ::core::option::Option<u32>,
12819    #[prost(int32, optional, tag="3")]
12820    pub ret: ::core::option::Option<i32>,
12821}
12822#[derive(Clone, PartialEq, ::prost::Message)]
12823pub struct I2cReplyFtraceEvent {
12824    #[prost(int32, optional, tag="1")]
12825    pub adapter_nr: ::core::option::Option<i32>,
12826    #[prost(uint32, optional, tag="2")]
12827    pub msg_nr: ::core::option::Option<u32>,
12828    #[prost(uint32, optional, tag="3")]
12829    pub addr: ::core::option::Option<u32>,
12830    #[prost(uint32, optional, tag="4")]
12831    pub flags: ::core::option::Option<u32>,
12832    #[prost(uint32, optional, tag="5")]
12833    pub len: ::core::option::Option<u32>,
12834    #[prost(uint32, optional, tag="6")]
12835    pub buf: ::core::option::Option<u32>,
12836}
12837#[derive(Clone, PartialEq, ::prost::Message)]
12838pub struct SmbusReadFtraceEvent {
12839    #[prost(int32, optional, tag="1")]
12840    pub adapter_nr: ::core::option::Option<i32>,
12841    #[prost(uint32, optional, tag="2")]
12842    pub flags: ::core::option::Option<u32>,
12843    #[prost(uint32, optional, tag="3")]
12844    pub addr: ::core::option::Option<u32>,
12845    #[prost(uint32, optional, tag="4")]
12846    pub command: ::core::option::Option<u32>,
12847    #[prost(uint32, optional, tag="5")]
12848    pub protocol: ::core::option::Option<u32>,
12849}
12850#[derive(Clone, PartialEq, ::prost::Message)]
12851pub struct SmbusWriteFtraceEvent {
12852    #[prost(int32, optional, tag="1")]
12853    pub adapter_nr: ::core::option::Option<i32>,
12854    #[prost(uint32, optional, tag="2")]
12855    pub addr: ::core::option::Option<u32>,
12856    #[prost(uint32, optional, tag="3")]
12857    pub flags: ::core::option::Option<u32>,
12858    #[prost(uint32, optional, tag="4")]
12859    pub command: ::core::option::Option<u32>,
12860    #[prost(uint32, optional, tag="5")]
12861    pub len: ::core::option::Option<u32>,
12862    #[prost(uint32, optional, tag="6")]
12863    pub protocol: ::core::option::Option<u32>,
12864}
12865#[derive(Clone, PartialEq, ::prost::Message)]
12866pub struct SmbusResultFtraceEvent {
12867    #[prost(int32, optional, tag="1")]
12868    pub adapter_nr: ::core::option::Option<i32>,
12869    #[prost(uint32, optional, tag="2")]
12870    pub addr: ::core::option::Option<u32>,
12871    #[prost(uint32, optional, tag="3")]
12872    pub flags: ::core::option::Option<u32>,
12873    #[prost(uint32, optional, tag="4")]
12874    pub read_write: ::core::option::Option<u32>,
12875    #[prost(uint32, optional, tag="5")]
12876    pub command: ::core::option::Option<u32>,
12877    #[prost(int32, optional, tag="6")]
12878    pub res: ::core::option::Option<i32>,
12879    #[prost(uint32, optional, tag="7")]
12880    pub protocol: ::core::option::Option<u32>,
12881}
12882#[derive(Clone, PartialEq, ::prost::Message)]
12883pub struct SmbusReplyFtraceEvent {
12884    #[prost(int32, optional, tag="1")]
12885    pub adapter_nr: ::core::option::Option<i32>,
12886    #[prost(uint32, optional, tag="2")]
12887    pub addr: ::core::option::Option<u32>,
12888    #[prost(uint32, optional, tag="3")]
12889    pub flags: ::core::option::Option<u32>,
12890    #[prost(uint32, optional, tag="4")]
12891    pub command: ::core::option::Option<u32>,
12892    #[prost(uint32, optional, tag="5")]
12893    pub len: ::core::option::Option<u32>,
12894    #[prost(uint32, optional, tag="6")]
12895    pub protocol: ::core::option::Option<u32>,
12896}
12897// End of protos/perfetto/trace/ftrace/i2c.proto
12898
12899// Begin of protos/perfetto/trace/ftrace/ion.proto
12900
12901#[derive(Clone, PartialEq, ::prost::Message)]
12902pub struct IonStatFtraceEvent {
12903    #[prost(uint32, optional, tag="1")]
12904    pub buffer_id: ::core::option::Option<u32>,
12905    #[prost(int64, optional, tag="2")]
12906    pub len: ::core::option::Option<i64>,
12907    #[prost(uint64, optional, tag="3")]
12908    pub total_allocated: ::core::option::Option<u64>,
12909}
12910// End of protos/perfetto/trace/ftrace/ion.proto
12911
12912// Begin of protos/perfetto/trace/ftrace/ipi.proto
12913
12914#[derive(Clone, PartialEq, ::prost::Message)]
12915pub struct IpiEntryFtraceEvent {
12916    #[prost(string, optional, tag="1")]
12917    pub reason: ::core::option::Option<::prost::alloc::string::String>,
12918}
12919#[derive(Clone, PartialEq, ::prost::Message)]
12920pub struct IpiExitFtraceEvent {
12921    #[prost(string, optional, tag="1")]
12922    pub reason: ::core::option::Option<::prost::alloc::string::String>,
12923}
12924#[derive(Clone, PartialEq, ::prost::Message)]
12925pub struct IpiRaiseFtraceEvent {
12926    #[prost(uint32, optional, tag="1")]
12927    pub target_cpus: ::core::option::Option<u32>,
12928    #[prost(string, optional, tag="2")]
12929    pub reason: ::core::option::Option<::prost::alloc::string::String>,
12930}
12931// End of protos/perfetto/trace/ftrace/ipi.proto
12932
12933// Begin of protos/perfetto/trace/ftrace/irq.proto
12934
12935#[derive(Clone, PartialEq, ::prost::Message)]
12936pub struct SoftirqEntryFtraceEvent {
12937    #[prost(uint32, optional, tag="1")]
12938    pub vec: ::core::option::Option<u32>,
12939}
12940#[derive(Clone, PartialEq, ::prost::Message)]
12941pub struct SoftirqExitFtraceEvent {
12942    #[prost(uint32, optional, tag="1")]
12943    pub vec: ::core::option::Option<u32>,
12944}
12945#[derive(Clone, PartialEq, ::prost::Message)]
12946pub struct SoftirqRaiseFtraceEvent {
12947    #[prost(uint32, optional, tag="1")]
12948    pub vec: ::core::option::Option<u32>,
12949}
12950#[derive(Clone, PartialEq, ::prost::Message)]
12951pub struct IrqHandlerEntryFtraceEvent {
12952    #[prost(int32, optional, tag="1")]
12953    pub irq: ::core::option::Option<i32>,
12954    #[prost(string, optional, tag="2")]
12955    pub name: ::core::option::Option<::prost::alloc::string::String>,
12956    #[prost(uint32, optional, tag="3")]
12957    pub handler: ::core::option::Option<u32>,
12958}
12959#[derive(Clone, PartialEq, ::prost::Message)]
12960pub struct IrqHandlerExitFtraceEvent {
12961    #[prost(int32, optional, tag="1")]
12962    pub irq: ::core::option::Option<i32>,
12963    #[prost(int32, optional, tag="2")]
12964    pub ret: ::core::option::Option<i32>,
12965}
12966// End of protos/perfetto/trace/ftrace/irq.proto
12967
12968// Begin of protos/perfetto/trace/ftrace/irq_vectors.proto
12969
12970#[derive(Clone, PartialEq, ::prost::Message)]
12971pub struct LocalTimerEntryFtraceEvent {
12972    #[prost(int32, optional, tag="1")]
12973    pub vector: ::core::option::Option<i32>,
12974}
12975#[derive(Clone, PartialEq, ::prost::Message)]
12976pub struct LocalTimerExitFtraceEvent {
12977    #[prost(int32, optional, tag="1")]
12978    pub vector: ::core::option::Option<i32>,
12979}
12980// End of protos/perfetto/trace/ftrace/irq_vectors.proto
12981
12982// Begin of protos/perfetto/trace/ftrace/kgsl.proto
12983
12984#[derive(Clone, PartialEq, ::prost::Message)]
12985pub struct KgslGpuFrequencyFtraceEvent {
12986    #[prost(uint32, optional, tag="1")]
12987    pub gpu_freq: ::core::option::Option<u32>,
12988    #[prost(uint32, optional, tag="2")]
12989    pub gpu_id: ::core::option::Option<u32>,
12990}
12991#[derive(Clone, PartialEq, ::prost::Message)]
12992pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
12993    #[prost(uint32, optional, tag="1")]
12994    pub id: ::core::option::Option<u32>,
12995    #[prost(uint32, optional, tag="2")]
12996    pub timestamp: ::core::option::Option<u32>,
12997    #[prost(uint32, optional, tag="3")]
12998    pub queued: ::core::option::Option<u32>,
12999    #[prost(uint32, optional, tag="4")]
13000    pub flags: ::core::option::Option<u32>,
13001    #[prost(uint32, optional, tag="5")]
13002    pub prio: ::core::option::Option<u32>,
13003}
13004#[derive(Clone, PartialEq, ::prost::Message)]
13005pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
13006    #[prost(uint32, optional, tag="1")]
13007    pub id: ::core::option::Option<u32>,
13008    #[prost(uint32, optional, tag="2")]
13009    pub timestamp: ::core::option::Option<u32>,
13010    #[prost(int64, optional, tag="3")]
13011    pub inflight: ::core::option::Option<i64>,
13012    #[prost(uint32, optional, tag="4")]
13013    pub flags: ::core::option::Option<u32>,
13014    #[prost(uint64, optional, tag="5")]
13015    pub ticks: ::core::option::Option<u64>,
13016    #[prost(uint64, optional, tag="6")]
13017    pub secs: ::core::option::Option<u64>,
13018    #[prost(uint64, optional, tag="7")]
13019    pub usecs: ::core::option::Option<u64>,
13020    #[prost(int32, optional, tag="8")]
13021    pub prio: ::core::option::Option<i32>,
13022    #[prost(int32, optional, tag="9")]
13023    pub rb_id: ::core::option::Option<i32>,
13024    #[prost(uint32, optional, tag="10")]
13025    pub rptr: ::core::option::Option<u32>,
13026    #[prost(uint32, optional, tag="11")]
13027    pub wptr: ::core::option::Option<u32>,
13028    #[prost(int32, optional, tag="12")]
13029    pub q_inflight: ::core::option::Option<i32>,
13030    #[prost(int32, optional, tag="13")]
13031    pub dispatch_queue: ::core::option::Option<i32>,
13032}
13033#[derive(Clone, PartialEq, ::prost::Message)]
13034pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
13035    #[prost(uint32, optional, tag="1")]
13036    pub id: ::core::option::Option<u32>,
13037    #[prost(uint32, optional, tag="2")]
13038    pub timestamp: ::core::option::Option<u32>,
13039    #[prost(uint64, optional, tag="3")]
13040    pub ticks: ::core::option::Option<u64>,
13041    #[prost(int32, optional, tag="4")]
13042    pub prio: ::core::option::Option<i32>,
13043}
13044#[derive(Clone, PartialEq, ::prost::Message)]
13045pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
13046    #[prost(uint32, optional, tag="1")]
13047    pub id: ::core::option::Option<u32>,
13048    #[prost(uint32, optional, tag="2")]
13049    pub timestamp: ::core::option::Option<u32>,
13050    #[prost(int64, optional, tag="3")]
13051    pub inflight: ::core::option::Option<i64>,
13052    #[prost(uint32, optional, tag="4")]
13053    pub recovery: ::core::option::Option<u32>,
13054    #[prost(uint32, optional, tag="5")]
13055    pub flags: ::core::option::Option<u32>,
13056    #[prost(uint64, optional, tag="6")]
13057    pub start: ::core::option::Option<u64>,
13058    #[prost(uint64, optional, tag="7")]
13059    pub retire: ::core::option::Option<u64>,
13060    #[prost(int32, optional, tag="8")]
13061    pub prio: ::core::option::Option<i32>,
13062    #[prost(int32, optional, tag="9")]
13063    pub rb_id: ::core::option::Option<i32>,
13064    #[prost(uint32, optional, tag="10")]
13065    pub rptr: ::core::option::Option<u32>,
13066    #[prost(uint32, optional, tag="11")]
13067    pub wptr: ::core::option::Option<u32>,
13068    #[prost(int32, optional, tag="12")]
13069    pub q_inflight: ::core::option::Option<i32>,
13070    #[prost(uint64, optional, tag="13")]
13071    pub fault_recovery: ::core::option::Option<u64>,
13072    #[prost(uint32, optional, tag="14")]
13073    pub dispatch_queue: ::core::option::Option<u32>,
13074    #[prost(uint64, optional, tag="15")]
13075    pub submitted_to_rb: ::core::option::Option<u64>,
13076    #[prost(uint64, optional, tag="16")]
13077    pub retired_on_gmu: ::core::option::Option<u64>,
13078    #[prost(uint64, optional, tag="17")]
13079    pub active: ::core::option::Option<u64>,
13080}
13081// End of protos/perfetto/trace/ftrace/kgsl.proto
13082
13083// Begin of protos/perfetto/trace/ftrace/kmem.proto
13084
13085#[derive(Clone, PartialEq, ::prost::Message)]
13086pub struct AllocPagesIommuEndFtraceEvent {
13087    #[prost(uint32, optional, tag="1")]
13088    pub gfp_flags: ::core::option::Option<u32>,
13089    #[prost(uint32, optional, tag="2")]
13090    pub order: ::core::option::Option<u32>,
13091}
13092#[derive(Clone, PartialEq, ::prost::Message)]
13093pub struct AllocPagesIommuFailFtraceEvent {
13094    #[prost(uint32, optional, tag="1")]
13095    pub gfp_flags: ::core::option::Option<u32>,
13096    #[prost(uint32, optional, tag="2")]
13097    pub order: ::core::option::Option<u32>,
13098}
13099#[derive(Clone, PartialEq, ::prost::Message)]
13100pub struct AllocPagesIommuStartFtraceEvent {
13101    #[prost(uint32, optional, tag="1")]
13102    pub gfp_flags: ::core::option::Option<u32>,
13103    #[prost(uint32, optional, tag="2")]
13104    pub order: ::core::option::Option<u32>,
13105}
13106#[derive(Clone, PartialEq, ::prost::Message)]
13107pub struct AllocPagesSysEndFtraceEvent {
13108    #[prost(uint32, optional, tag="1")]
13109    pub gfp_flags: ::core::option::Option<u32>,
13110    #[prost(uint32, optional, tag="2")]
13111    pub order: ::core::option::Option<u32>,
13112}
13113#[derive(Clone, PartialEq, ::prost::Message)]
13114pub struct AllocPagesSysFailFtraceEvent {
13115    #[prost(uint32, optional, tag="1")]
13116    pub gfp_flags: ::core::option::Option<u32>,
13117    #[prost(uint32, optional, tag="2")]
13118    pub order: ::core::option::Option<u32>,
13119}
13120#[derive(Clone, PartialEq, ::prost::Message)]
13121pub struct AllocPagesSysStartFtraceEvent {
13122    #[prost(uint32, optional, tag="1")]
13123    pub gfp_flags: ::core::option::Option<u32>,
13124    #[prost(uint32, optional, tag="2")]
13125    pub order: ::core::option::Option<u32>,
13126}
13127#[derive(Clone, PartialEq, ::prost::Message)]
13128pub struct DmaAllocContiguousRetryFtraceEvent {
13129    #[prost(int32, optional, tag="1")]
13130    pub tries: ::core::option::Option<i32>,
13131}
13132#[derive(Clone, PartialEq, ::prost::Message)]
13133pub struct IommuMapRangeFtraceEvent {
13134    #[prost(uint64, optional, tag="1")]
13135    pub chunk_size: ::core::option::Option<u64>,
13136    #[prost(uint64, optional, tag="2")]
13137    pub len: ::core::option::Option<u64>,
13138    #[prost(uint64, optional, tag="3")]
13139    pub pa: ::core::option::Option<u64>,
13140    #[prost(uint64, optional, tag="4")]
13141    pub va: ::core::option::Option<u64>,
13142}
13143#[derive(Clone, PartialEq, ::prost::Message)]
13144pub struct IommuSecPtblMapRangeEndFtraceEvent {
13145    #[prost(uint64, optional, tag="1")]
13146    pub len: ::core::option::Option<u64>,
13147    #[prost(int32, optional, tag="2")]
13148    pub num: ::core::option::Option<i32>,
13149    #[prost(uint32, optional, tag="3")]
13150    pub pa: ::core::option::Option<u32>,
13151    #[prost(int32, optional, tag="4")]
13152    pub sec_id: ::core::option::Option<i32>,
13153    #[prost(uint64, optional, tag="5")]
13154    pub va: ::core::option::Option<u64>,
13155}
13156#[derive(Clone, PartialEq, ::prost::Message)]
13157pub struct IommuSecPtblMapRangeStartFtraceEvent {
13158    #[prost(uint64, optional, tag="1")]
13159    pub len: ::core::option::Option<u64>,
13160    #[prost(int32, optional, tag="2")]
13161    pub num: ::core::option::Option<i32>,
13162    #[prost(uint32, optional, tag="3")]
13163    pub pa: ::core::option::Option<u32>,
13164    #[prost(int32, optional, tag="4")]
13165    pub sec_id: ::core::option::Option<i32>,
13166    #[prost(uint64, optional, tag="5")]
13167    pub va: ::core::option::Option<u64>,
13168}
13169#[derive(Clone, PartialEq, ::prost::Message)]
13170pub struct IonAllocBufferEndFtraceEvent {
13171    #[prost(string, optional, tag="1")]
13172    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13173    #[prost(uint32, optional, tag="2")]
13174    pub flags: ::core::option::Option<u32>,
13175    #[prost(string, optional, tag="3")]
13176    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13177    #[prost(uint64, optional, tag="4")]
13178    pub len: ::core::option::Option<u64>,
13179    #[prost(uint32, optional, tag="5")]
13180    pub mask: ::core::option::Option<u32>,
13181}
13182#[derive(Clone, PartialEq, ::prost::Message)]
13183pub struct IonAllocBufferFailFtraceEvent {
13184    #[prost(string, optional, tag="1")]
13185    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13186    #[prost(int64, optional, tag="2")]
13187    pub error: ::core::option::Option<i64>,
13188    #[prost(uint32, optional, tag="3")]
13189    pub flags: ::core::option::Option<u32>,
13190    #[prost(string, optional, tag="4")]
13191    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13192    #[prost(uint64, optional, tag="5")]
13193    pub len: ::core::option::Option<u64>,
13194    #[prost(uint32, optional, tag="6")]
13195    pub mask: ::core::option::Option<u32>,
13196}
13197#[derive(Clone, PartialEq, ::prost::Message)]
13198pub struct IonAllocBufferFallbackFtraceEvent {
13199    #[prost(string, optional, tag="1")]
13200    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13201    #[prost(int64, optional, tag="2")]
13202    pub error: ::core::option::Option<i64>,
13203    #[prost(uint32, optional, tag="3")]
13204    pub flags: ::core::option::Option<u32>,
13205    #[prost(string, optional, tag="4")]
13206    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13207    #[prost(uint64, optional, tag="5")]
13208    pub len: ::core::option::Option<u64>,
13209    #[prost(uint32, optional, tag="6")]
13210    pub mask: ::core::option::Option<u32>,
13211}
13212#[derive(Clone, PartialEq, ::prost::Message)]
13213pub struct IonAllocBufferStartFtraceEvent {
13214    #[prost(string, optional, tag="1")]
13215    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13216    #[prost(uint32, optional, tag="2")]
13217    pub flags: ::core::option::Option<u32>,
13218    #[prost(string, optional, tag="3")]
13219    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13220    #[prost(uint64, optional, tag="4")]
13221    pub len: ::core::option::Option<u64>,
13222    #[prost(uint32, optional, tag="5")]
13223    pub mask: ::core::option::Option<u32>,
13224}
13225#[derive(Clone, PartialEq, ::prost::Message)]
13226pub struct IonCpAllocRetryFtraceEvent {
13227    #[prost(int32, optional, tag="1")]
13228    pub tries: ::core::option::Option<i32>,
13229}
13230#[derive(Clone, PartialEq, ::prost::Message)]
13231pub struct IonCpSecureBufferEndFtraceEvent {
13232    #[prost(uint64, optional, tag="1")]
13233    pub align: ::core::option::Option<u64>,
13234    #[prost(uint64, optional, tag="2")]
13235    pub flags: ::core::option::Option<u64>,
13236    #[prost(string, optional, tag="3")]
13237    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13238    #[prost(uint64, optional, tag="4")]
13239    pub len: ::core::option::Option<u64>,
13240}
13241#[derive(Clone, PartialEq, ::prost::Message)]
13242pub struct IonCpSecureBufferStartFtraceEvent {
13243    #[prost(uint64, optional, tag="1")]
13244    pub align: ::core::option::Option<u64>,
13245    #[prost(uint64, optional, tag="2")]
13246    pub flags: ::core::option::Option<u64>,
13247    #[prost(string, optional, tag="3")]
13248    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13249    #[prost(uint64, optional, tag="4")]
13250    pub len: ::core::option::Option<u64>,
13251}
13252#[derive(Clone, PartialEq, ::prost::Message)]
13253pub struct IonPrefetchingFtraceEvent {
13254    #[prost(uint64, optional, tag="1")]
13255    pub len: ::core::option::Option<u64>,
13256}
13257#[derive(Clone, PartialEq, ::prost::Message)]
13258pub struct IonSecureCmaAddToPoolEndFtraceEvent {
13259    #[prost(uint32, optional, tag="1")]
13260    pub is_prefetch: ::core::option::Option<u32>,
13261    #[prost(uint64, optional, tag="2")]
13262    pub len: ::core::option::Option<u64>,
13263    #[prost(int32, optional, tag="3")]
13264    pub pool_total: ::core::option::Option<i32>,
13265}
13266#[derive(Clone, PartialEq, ::prost::Message)]
13267pub struct IonSecureCmaAddToPoolStartFtraceEvent {
13268    #[prost(uint32, optional, tag="1")]
13269    pub is_prefetch: ::core::option::Option<u32>,
13270    #[prost(uint64, optional, tag="2")]
13271    pub len: ::core::option::Option<u64>,
13272    #[prost(int32, optional, tag="3")]
13273    pub pool_total: ::core::option::Option<i32>,
13274}
13275#[derive(Clone, PartialEq, ::prost::Message)]
13276pub struct IonSecureCmaAllocateEndFtraceEvent {
13277    #[prost(uint64, optional, tag="1")]
13278    pub align: ::core::option::Option<u64>,
13279    #[prost(uint64, optional, tag="2")]
13280    pub flags: ::core::option::Option<u64>,
13281    #[prost(string, optional, tag="3")]
13282    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13283    #[prost(uint64, optional, tag="4")]
13284    pub len: ::core::option::Option<u64>,
13285}
13286#[derive(Clone, PartialEq, ::prost::Message)]
13287pub struct IonSecureCmaAllocateStartFtraceEvent {
13288    #[prost(uint64, optional, tag="1")]
13289    pub align: ::core::option::Option<u64>,
13290    #[prost(uint64, optional, tag="2")]
13291    pub flags: ::core::option::Option<u64>,
13292    #[prost(string, optional, tag="3")]
13293    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13294    #[prost(uint64, optional, tag="4")]
13295    pub len: ::core::option::Option<u64>,
13296}
13297#[derive(Clone, PartialEq, ::prost::Message)]
13298pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
13299    #[prost(uint64, optional, tag="1")]
13300    pub drained_size: ::core::option::Option<u64>,
13301    #[prost(uint64, optional, tag="2")]
13302    pub skipped_size: ::core::option::Option<u64>,
13303}
13304#[derive(Clone, PartialEq, ::prost::Message)]
13305pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
13306    #[prost(uint64, optional, tag="1")]
13307    pub drained_size: ::core::option::Option<u64>,
13308    #[prost(uint64, optional, tag="2")]
13309    pub skipped_size: ::core::option::Option<u64>,
13310}
13311#[derive(Clone, PartialEq, ::prost::Message)]
13312pub struct KfreeFtraceEvent {
13313    #[prost(uint64, optional, tag="1")]
13314    pub call_site: ::core::option::Option<u64>,
13315    #[prost(uint64, optional, tag="2")]
13316    pub ptr: ::core::option::Option<u64>,
13317}
13318#[derive(Clone, PartialEq, ::prost::Message)]
13319pub struct KmallocFtraceEvent {
13320    #[prost(uint64, optional, tag="1")]
13321    pub bytes_alloc: ::core::option::Option<u64>,
13322    #[prost(uint64, optional, tag="2")]
13323    pub bytes_req: ::core::option::Option<u64>,
13324    #[prost(uint64, optional, tag="3")]
13325    pub call_site: ::core::option::Option<u64>,
13326    #[prost(uint32, optional, tag="4")]
13327    pub gfp_flags: ::core::option::Option<u32>,
13328    #[prost(uint64, optional, tag="5")]
13329    pub ptr: ::core::option::Option<u64>,
13330}
13331#[derive(Clone, PartialEq, ::prost::Message)]
13332pub struct KmallocNodeFtraceEvent {
13333    #[prost(uint64, optional, tag="1")]
13334    pub bytes_alloc: ::core::option::Option<u64>,
13335    #[prost(uint64, optional, tag="2")]
13336    pub bytes_req: ::core::option::Option<u64>,
13337    #[prost(uint64, optional, tag="3")]
13338    pub call_site: ::core::option::Option<u64>,
13339    #[prost(uint32, optional, tag="4")]
13340    pub gfp_flags: ::core::option::Option<u32>,
13341    #[prost(int32, optional, tag="5")]
13342    pub node: ::core::option::Option<i32>,
13343    #[prost(uint64, optional, tag="6")]
13344    pub ptr: ::core::option::Option<u64>,
13345}
13346#[derive(Clone, PartialEq, ::prost::Message)]
13347pub struct KmemCacheAllocFtraceEvent {
13348    #[prost(uint64, optional, tag="1")]
13349    pub bytes_alloc: ::core::option::Option<u64>,
13350    #[prost(uint64, optional, tag="2")]
13351    pub bytes_req: ::core::option::Option<u64>,
13352    #[prost(uint64, optional, tag="3")]
13353    pub call_site: ::core::option::Option<u64>,
13354    #[prost(uint32, optional, tag="4")]
13355    pub gfp_flags: ::core::option::Option<u32>,
13356    #[prost(uint64, optional, tag="5")]
13357    pub ptr: ::core::option::Option<u64>,
13358}
13359#[derive(Clone, PartialEq, ::prost::Message)]
13360pub struct KmemCacheAllocNodeFtraceEvent {
13361    #[prost(uint64, optional, tag="1")]
13362    pub bytes_alloc: ::core::option::Option<u64>,
13363    #[prost(uint64, optional, tag="2")]
13364    pub bytes_req: ::core::option::Option<u64>,
13365    #[prost(uint64, optional, tag="3")]
13366    pub call_site: ::core::option::Option<u64>,
13367    #[prost(uint32, optional, tag="4")]
13368    pub gfp_flags: ::core::option::Option<u32>,
13369    #[prost(int32, optional, tag="5")]
13370    pub node: ::core::option::Option<i32>,
13371    #[prost(uint64, optional, tag="6")]
13372    pub ptr: ::core::option::Option<u64>,
13373}
13374#[derive(Clone, PartialEq, ::prost::Message)]
13375pub struct KmemCacheFreeFtraceEvent {
13376    #[prost(uint64, optional, tag="1")]
13377    pub call_site: ::core::option::Option<u64>,
13378    #[prost(uint64, optional, tag="2")]
13379    pub ptr: ::core::option::Option<u64>,
13380}
13381#[derive(Clone, PartialEq, ::prost::Message)]
13382pub struct MigratePagesEndFtraceEvent {
13383    #[prost(int32, optional, tag="1")]
13384    pub mode: ::core::option::Option<i32>,
13385}
13386#[derive(Clone, PartialEq, ::prost::Message)]
13387pub struct MigratePagesStartFtraceEvent {
13388    #[prost(int32, optional, tag="1")]
13389    pub mode: ::core::option::Option<i32>,
13390}
13391#[derive(Clone, PartialEq, ::prost::Message)]
13392pub struct MigrateRetryFtraceEvent {
13393    #[prost(int32, optional, tag="1")]
13394    pub tries: ::core::option::Option<i32>,
13395}
13396#[derive(Clone, PartialEq, ::prost::Message)]
13397pub struct MmPageAllocFtraceEvent {
13398    #[prost(uint32, optional, tag="1")]
13399    pub gfp_flags: ::core::option::Option<u32>,
13400    #[prost(int32, optional, tag="2")]
13401    pub migratetype: ::core::option::Option<i32>,
13402    #[prost(uint32, optional, tag="3")]
13403    pub order: ::core::option::Option<u32>,
13404    #[prost(uint64, optional, tag="4")]
13405    pub page: ::core::option::Option<u64>,
13406    #[prost(uint64, optional, tag="5")]
13407    pub pfn: ::core::option::Option<u64>,
13408}
13409#[derive(Clone, PartialEq, ::prost::Message)]
13410pub struct MmPageAllocExtfragFtraceEvent {
13411    #[prost(int32, optional, tag="1")]
13412    pub alloc_migratetype: ::core::option::Option<i32>,
13413    #[prost(int32, optional, tag="2")]
13414    pub alloc_order: ::core::option::Option<i32>,
13415    #[prost(int32, optional, tag="3")]
13416    pub fallback_migratetype: ::core::option::Option<i32>,
13417    #[prost(int32, optional, tag="4")]
13418    pub fallback_order: ::core::option::Option<i32>,
13419    #[prost(uint64, optional, tag="5")]
13420    pub page: ::core::option::Option<u64>,
13421    #[prost(int32, optional, tag="6")]
13422    pub change_ownership: ::core::option::Option<i32>,
13423    #[prost(uint64, optional, tag="7")]
13424    pub pfn: ::core::option::Option<u64>,
13425}
13426#[derive(Clone, PartialEq, ::prost::Message)]
13427pub struct MmPageAllocZoneLockedFtraceEvent {
13428    #[prost(int32, optional, tag="1")]
13429    pub migratetype: ::core::option::Option<i32>,
13430    #[prost(uint32, optional, tag="2")]
13431    pub order: ::core::option::Option<u32>,
13432    #[prost(uint64, optional, tag="3")]
13433    pub page: ::core::option::Option<u64>,
13434    #[prost(uint64, optional, tag="4")]
13435    pub pfn: ::core::option::Option<u64>,
13436}
13437#[derive(Clone, PartialEq, ::prost::Message)]
13438pub struct MmPageFreeFtraceEvent {
13439    #[prost(uint32, optional, tag="1")]
13440    pub order: ::core::option::Option<u32>,
13441    #[prost(uint64, optional, tag="2")]
13442    pub page: ::core::option::Option<u64>,
13443    #[prost(uint64, optional, tag="3")]
13444    pub pfn: ::core::option::Option<u64>,
13445}
13446#[derive(Clone, PartialEq, ::prost::Message)]
13447pub struct MmPageFreeBatchedFtraceEvent {
13448    #[prost(int32, optional, tag="1")]
13449    pub cold: ::core::option::Option<i32>,
13450    #[prost(uint64, optional, tag="2")]
13451    pub page: ::core::option::Option<u64>,
13452    #[prost(uint64, optional, tag="3")]
13453    pub pfn: ::core::option::Option<u64>,
13454}
13455#[derive(Clone, PartialEq, ::prost::Message)]
13456pub struct MmPagePcpuDrainFtraceEvent {
13457    #[prost(int32, optional, tag="1")]
13458    pub migratetype: ::core::option::Option<i32>,
13459    #[prost(uint32, optional, tag="2")]
13460    pub order: ::core::option::Option<u32>,
13461    #[prost(uint64, optional, tag="3")]
13462    pub page: ::core::option::Option<u64>,
13463    #[prost(uint64, optional, tag="4")]
13464    pub pfn: ::core::option::Option<u64>,
13465}
13466#[derive(Clone, PartialEq, ::prost::Message)]
13467pub struct RssStatFtraceEvent {
13468    #[prost(int32, optional, tag="1")]
13469    pub member: ::core::option::Option<i32>,
13470    #[prost(int64, optional, tag="2")]
13471    pub size: ::core::option::Option<i64>,
13472    #[prost(uint32, optional, tag="3")]
13473    pub curr: ::core::option::Option<u32>,
13474    #[prost(uint32, optional, tag="4")]
13475    pub mm_id: ::core::option::Option<u32>,
13476}
13477#[derive(Clone, PartialEq, ::prost::Message)]
13478pub struct IonHeapShrinkFtraceEvent {
13479    #[prost(string, optional, tag="1")]
13480    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13481    #[prost(uint64, optional, tag="2")]
13482    pub len: ::core::option::Option<u64>,
13483    #[prost(int64, optional, tag="3")]
13484    pub total_allocated: ::core::option::Option<i64>,
13485}
13486#[derive(Clone, PartialEq, ::prost::Message)]
13487pub struct IonHeapGrowFtraceEvent {
13488    #[prost(string, optional, tag="1")]
13489    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13490    #[prost(uint64, optional, tag="2")]
13491    pub len: ::core::option::Option<u64>,
13492    #[prost(int64, optional, tag="3")]
13493    pub total_allocated: ::core::option::Option<i64>,
13494}
13495#[derive(Clone, PartialEq, ::prost::Message)]
13496pub struct IonBufferCreateFtraceEvent {
13497    #[prost(uint64, optional, tag="1")]
13498    pub addr: ::core::option::Option<u64>,
13499    #[prost(uint64, optional, tag="2")]
13500    pub len: ::core::option::Option<u64>,
13501}
13502#[derive(Clone, PartialEq, ::prost::Message)]
13503pub struct IonBufferDestroyFtraceEvent {
13504    #[prost(uint64, optional, tag="1")]
13505    pub addr: ::core::option::Option<u64>,
13506    #[prost(uint64, optional, tag="2")]
13507    pub len: ::core::option::Option<u64>,
13508}
13509#[derive(Clone, PartialEq, ::prost::Message)]
13510pub struct MmAllocContigMigrateRangeInfoFtraceEvent {
13511    #[prost(uint64, optional, tag="1")]
13512    pub start: ::core::option::Option<u64>,
13513    #[prost(uint64, optional, tag="2")]
13514    pub end: ::core::option::Option<u64>,
13515    #[prost(uint64, optional, tag="3")]
13516    pub nr_migrated: ::core::option::Option<u64>,
13517    #[prost(uint64, optional, tag="4")]
13518    pub nr_reclaimed: ::core::option::Option<u64>,
13519    #[prost(uint64, optional, tag="5")]
13520    pub nr_mapped: ::core::option::Option<u64>,
13521    #[prost(int32, optional, tag="6")]
13522    pub migratetype: ::core::option::Option<i32>,
13523}
13524#[derive(Clone, PartialEq, ::prost::Message)]
13525pub struct DmabufRssStatFtraceEvent {
13526    #[prost(uint64, optional, tag="1")]
13527    pub rss: ::core::option::Option<u64>,
13528    #[prost(int64, optional, tag="2")]
13529    pub rss_delta: ::core::option::Option<i64>,
13530    #[prost(uint64, optional, tag="3")]
13531    pub i_ino: ::core::option::Option<u64>,
13532}
13533// End of protos/perfetto/trace/ftrace/kmem.proto
13534
13535// Begin of protos/perfetto/trace/ftrace/kvm.proto
13536
13537#[derive(Clone, PartialEq, ::prost::Message)]
13538pub struct KvmAccessFaultFtraceEvent {
13539    #[prost(uint64, optional, tag="1")]
13540    pub ipa: ::core::option::Option<u64>,
13541}
13542#[derive(Clone, PartialEq, ::prost::Message)]
13543pub struct KvmAckIrqFtraceEvent {
13544    #[prost(uint32, optional, tag="1")]
13545    pub irqchip: ::core::option::Option<u32>,
13546    #[prost(uint32, optional, tag="2")]
13547    pub pin: ::core::option::Option<u32>,
13548}
13549#[derive(Clone, PartialEq, ::prost::Message)]
13550pub struct KvmAgeHvaFtraceEvent {
13551    #[prost(uint64, optional, tag="1")]
13552    pub end: ::core::option::Option<u64>,
13553    #[prost(uint64, optional, tag="2")]
13554    pub start: ::core::option::Option<u64>,
13555}
13556#[derive(Clone, PartialEq, ::prost::Message)]
13557pub struct KvmAgePageFtraceEvent {
13558    #[prost(uint64, optional, tag="1")]
13559    pub gfn: ::core::option::Option<u64>,
13560    #[prost(uint64, optional, tag="2")]
13561    pub hva: ::core::option::Option<u64>,
13562    #[prost(uint32, optional, tag="3")]
13563    pub level: ::core::option::Option<u32>,
13564    #[prost(uint32, optional, tag="4")]
13565    pub referenced: ::core::option::Option<u32>,
13566}
13567#[derive(Clone, PartialEq, ::prost::Message)]
13568pub struct KvmArmClearDebugFtraceEvent {
13569    #[prost(uint32, optional, tag="1")]
13570    pub guest_debug: ::core::option::Option<u32>,
13571}
13572#[derive(Clone, PartialEq, ::prost::Message)]
13573pub struct KvmArmSetDreg32FtraceEvent {
13574    #[prost(string, optional, tag="1")]
13575    pub name: ::core::option::Option<::prost::alloc::string::String>,
13576    #[prost(uint32, optional, tag="2")]
13577    pub value: ::core::option::Option<u32>,
13578}
13579#[derive(Clone, PartialEq, ::prost::Message)]
13580pub struct KvmArmSetRegsetFtraceEvent {
13581    #[prost(int32, optional, tag="1")]
13582    pub len: ::core::option::Option<i32>,
13583    #[prost(string, optional, tag="2")]
13584    pub name: ::core::option::Option<::prost::alloc::string::String>,
13585}
13586#[derive(Clone, PartialEq, ::prost::Message)]
13587pub struct KvmArmSetupDebugFtraceEvent {
13588    #[prost(uint32, optional, tag="1")]
13589    pub guest_debug: ::core::option::Option<u32>,
13590    #[prost(uint64, optional, tag="2")]
13591    pub vcpu: ::core::option::Option<u64>,
13592}
13593#[derive(Clone, PartialEq, ::prost::Message)]
13594pub struct KvmEntryFtraceEvent {
13595    #[prost(uint64, optional, tag="1")]
13596    pub vcpu_pc: ::core::option::Option<u64>,
13597}
13598#[derive(Clone, PartialEq, ::prost::Message)]
13599pub struct KvmExitFtraceEvent {
13600    #[prost(uint32, optional, tag="1")]
13601    pub esr_ec: ::core::option::Option<u32>,
13602    #[prost(int32, optional, tag="2")]
13603    pub ret: ::core::option::Option<i32>,
13604    #[prost(uint64, optional, tag="3")]
13605    pub vcpu_pc: ::core::option::Option<u64>,
13606}
13607#[derive(Clone, PartialEq, ::prost::Message)]
13608pub struct KvmFpuFtraceEvent {
13609    #[prost(uint32, optional, tag="1")]
13610    pub load: ::core::option::Option<u32>,
13611}
13612#[derive(Clone, PartialEq, ::prost::Message)]
13613pub struct KvmGetTimerMapFtraceEvent {
13614    #[prost(int32, optional, tag="1")]
13615    pub direct_ptimer: ::core::option::Option<i32>,
13616    #[prost(int32, optional, tag="2")]
13617    pub direct_vtimer: ::core::option::Option<i32>,
13618    #[prost(int32, optional, tag="3")]
13619    pub emul_ptimer: ::core::option::Option<i32>,
13620    #[prost(uint64, optional, tag="4")]
13621    pub vcpu_id: ::core::option::Option<u64>,
13622}
13623#[derive(Clone, PartialEq, ::prost::Message)]
13624pub struct KvmGuestFaultFtraceEvent {
13625    #[prost(uint64, optional, tag="1")]
13626    pub hsr: ::core::option::Option<u64>,
13627    #[prost(uint64, optional, tag="2")]
13628    pub hxfar: ::core::option::Option<u64>,
13629    #[prost(uint64, optional, tag="3")]
13630    pub ipa: ::core::option::Option<u64>,
13631    #[prost(uint64, optional, tag="4")]
13632    pub vcpu_pc: ::core::option::Option<u64>,
13633}
13634#[derive(Clone, PartialEq, ::prost::Message)]
13635pub struct KvmHandleSysRegFtraceEvent {
13636    #[prost(uint64, optional, tag="1")]
13637    pub hsr: ::core::option::Option<u64>,
13638}
13639#[derive(Clone, PartialEq, ::prost::Message)]
13640pub struct KvmHvcArm64FtraceEvent {
13641    #[prost(uint64, optional, tag="1")]
13642    pub imm: ::core::option::Option<u64>,
13643    #[prost(uint64, optional, tag="2")]
13644    pub r0: ::core::option::Option<u64>,
13645    #[prost(uint64, optional, tag="3")]
13646    pub vcpu_pc: ::core::option::Option<u64>,
13647}
13648#[derive(Clone, PartialEq, ::prost::Message)]
13649pub struct KvmIrqLineFtraceEvent {
13650    #[prost(int32, optional, tag="1")]
13651    pub irq_num: ::core::option::Option<i32>,
13652    #[prost(int32, optional, tag="2")]
13653    pub level: ::core::option::Option<i32>,
13654    #[prost(uint32, optional, tag="3")]
13655    pub r#type: ::core::option::Option<u32>,
13656    #[prost(int32, optional, tag="4")]
13657    pub vcpu_idx: ::core::option::Option<i32>,
13658}
13659#[derive(Clone, PartialEq, ::prost::Message)]
13660pub struct KvmMmioFtraceEvent {
13661    #[prost(uint64, optional, tag="1")]
13662    pub gpa: ::core::option::Option<u64>,
13663    #[prost(uint32, optional, tag="2")]
13664    pub len: ::core::option::Option<u32>,
13665    #[prost(uint32, optional, tag="3")]
13666    pub r#type: ::core::option::Option<u32>,
13667    #[prost(uint64, optional, tag="4")]
13668    pub val: ::core::option::Option<u64>,
13669}
13670#[derive(Clone, PartialEq, ::prost::Message)]
13671pub struct KvmMmioEmulateFtraceEvent {
13672    #[prost(uint64, optional, tag="1")]
13673    pub cpsr: ::core::option::Option<u64>,
13674    #[prost(uint64, optional, tag="2")]
13675    pub instr: ::core::option::Option<u64>,
13676    #[prost(uint64, optional, tag="3")]
13677    pub vcpu_pc: ::core::option::Option<u64>,
13678}
13679#[derive(Clone, PartialEq, ::prost::Message)]
13680pub struct KvmSetGuestDebugFtraceEvent {
13681    #[prost(uint32, optional, tag="1")]
13682    pub guest_debug: ::core::option::Option<u32>,
13683    #[prost(uint64, optional, tag="2")]
13684    pub vcpu: ::core::option::Option<u64>,
13685}
13686#[derive(Clone, PartialEq, ::prost::Message)]
13687pub struct KvmSetIrqFtraceEvent {
13688    #[prost(uint32, optional, tag="1")]
13689    pub gsi: ::core::option::Option<u32>,
13690    #[prost(int32, optional, tag="2")]
13691    pub irq_source_id: ::core::option::Option<i32>,
13692    #[prost(int32, optional, tag="3")]
13693    pub level: ::core::option::Option<i32>,
13694}
13695#[derive(Clone, PartialEq, ::prost::Message)]
13696pub struct KvmSetSpteHvaFtraceEvent {
13697    #[prost(uint64, optional, tag="1")]
13698    pub hva: ::core::option::Option<u64>,
13699}
13700#[derive(Clone, PartialEq, ::prost::Message)]
13701pub struct KvmSetWayFlushFtraceEvent {
13702    #[prost(uint32, optional, tag="1")]
13703    pub cache: ::core::option::Option<u32>,
13704    #[prost(uint64, optional, tag="2")]
13705    pub vcpu_pc: ::core::option::Option<u64>,
13706}
13707#[derive(Clone, PartialEq, ::prost::Message)]
13708pub struct KvmSysAccessFtraceEvent {
13709    #[prost(uint32, optional, tag="1")]
13710    pub c_rm: ::core::option::Option<u32>,
13711    #[prost(uint32, optional, tag="2")]
13712    pub c_rn: ::core::option::Option<u32>,
13713    #[prost(uint32, optional, tag="3")]
13714    pub op0: ::core::option::Option<u32>,
13715    #[prost(uint32, optional, tag="4")]
13716    pub op1: ::core::option::Option<u32>,
13717    #[prost(uint32, optional, tag="5")]
13718    pub op2: ::core::option::Option<u32>,
13719    #[prost(uint32, optional, tag="6")]
13720    pub is_write: ::core::option::Option<u32>,
13721    #[prost(string, optional, tag="7")]
13722    pub name: ::core::option::Option<::prost::alloc::string::String>,
13723    #[prost(uint64, optional, tag="8")]
13724    pub vcpu_pc: ::core::option::Option<u64>,
13725}
13726#[derive(Clone, PartialEq, ::prost::Message)]
13727pub struct KvmTestAgeHvaFtraceEvent {
13728    #[prost(uint64, optional, tag="1")]
13729    pub hva: ::core::option::Option<u64>,
13730}
13731#[derive(Clone, PartialEq, ::prost::Message)]
13732pub struct KvmTimerEmulateFtraceEvent {
13733    #[prost(uint32, optional, tag="1")]
13734    pub should_fire: ::core::option::Option<u32>,
13735    #[prost(int32, optional, tag="2")]
13736    pub timer_idx: ::core::option::Option<i32>,
13737}
13738#[derive(Clone, PartialEq, ::prost::Message)]
13739pub struct KvmTimerHrtimerExpireFtraceEvent {
13740    #[prost(int32, optional, tag="1")]
13741    pub timer_idx: ::core::option::Option<i32>,
13742}
13743#[derive(Clone, PartialEq, ::prost::Message)]
13744pub struct KvmTimerRestoreStateFtraceEvent {
13745    #[prost(uint64, optional, tag="1")]
13746    pub ctl: ::core::option::Option<u64>,
13747    #[prost(uint64, optional, tag="2")]
13748    pub cval: ::core::option::Option<u64>,
13749    #[prost(int32, optional, tag="3")]
13750    pub timer_idx: ::core::option::Option<i32>,
13751}
13752#[derive(Clone, PartialEq, ::prost::Message)]
13753pub struct KvmTimerSaveStateFtraceEvent {
13754    #[prost(uint64, optional, tag="1")]
13755    pub ctl: ::core::option::Option<u64>,
13756    #[prost(uint64, optional, tag="2")]
13757    pub cval: ::core::option::Option<u64>,
13758    #[prost(int32, optional, tag="3")]
13759    pub timer_idx: ::core::option::Option<i32>,
13760}
13761#[derive(Clone, PartialEq, ::prost::Message)]
13762pub struct KvmTimerUpdateIrqFtraceEvent {
13763    #[prost(uint32, optional, tag="1")]
13764    pub irq: ::core::option::Option<u32>,
13765    #[prost(int32, optional, tag="2")]
13766    pub level: ::core::option::Option<i32>,
13767    #[prost(uint64, optional, tag="3")]
13768    pub vcpu_id: ::core::option::Option<u64>,
13769}
13770#[derive(Clone, PartialEq, ::prost::Message)]
13771pub struct KvmToggleCacheFtraceEvent {
13772    #[prost(uint32, optional, tag="1")]
13773    pub now: ::core::option::Option<u32>,
13774    #[prost(uint64, optional, tag="2")]
13775    pub vcpu_pc: ::core::option::Option<u64>,
13776    #[prost(uint32, optional, tag="3")]
13777    pub was: ::core::option::Option<u32>,
13778}
13779#[derive(Clone, PartialEq, ::prost::Message)]
13780pub struct KvmUnmapHvaRangeFtraceEvent {
13781    #[prost(uint64, optional, tag="1")]
13782    pub end: ::core::option::Option<u64>,
13783    #[prost(uint64, optional, tag="2")]
13784    pub start: ::core::option::Option<u64>,
13785}
13786#[derive(Clone, PartialEq, ::prost::Message)]
13787pub struct KvmUserspaceExitFtraceEvent {
13788    #[prost(uint32, optional, tag="1")]
13789    pub reason: ::core::option::Option<u32>,
13790}
13791#[derive(Clone, PartialEq, ::prost::Message)]
13792pub struct KvmVcpuWakeupFtraceEvent {
13793    #[prost(uint64, optional, tag="1")]
13794    pub ns: ::core::option::Option<u64>,
13795    #[prost(uint32, optional, tag="2")]
13796    pub valid: ::core::option::Option<u32>,
13797    #[prost(uint32, optional, tag="3")]
13798    pub waited: ::core::option::Option<u32>,
13799}
13800#[derive(Clone, PartialEq, ::prost::Message)]
13801pub struct KvmWfxArm64FtraceEvent {
13802    #[prost(uint32, optional, tag="1")]
13803    pub is_wfe: ::core::option::Option<u32>,
13804    #[prost(uint64, optional, tag="2")]
13805    pub vcpu_pc: ::core::option::Option<u64>,
13806}
13807#[derive(Clone, PartialEq, ::prost::Message)]
13808pub struct TrapRegFtraceEvent {
13809    #[prost(string, optional, tag="1")]
13810    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
13811    #[prost(uint32, optional, tag="2")]
13812    pub is_write: ::core::option::Option<u32>,
13813    #[prost(int32, optional, tag="3")]
13814    pub reg: ::core::option::Option<i32>,
13815    #[prost(uint64, optional, tag="4")]
13816    pub write_value: ::core::option::Option<u64>,
13817}
13818#[derive(Clone, PartialEq, ::prost::Message)]
13819pub struct VgicUpdateIrqPendingFtraceEvent {
13820    #[prost(uint32, optional, tag="1")]
13821    pub irq: ::core::option::Option<u32>,
13822    #[prost(uint32, optional, tag="2")]
13823    pub level: ::core::option::Option<u32>,
13824    #[prost(uint64, optional, tag="3")]
13825    pub vcpu_id: ::core::option::Option<u64>,
13826}
13827// End of protos/perfetto/trace/ftrace/kvm.proto
13828
13829// Begin of protos/perfetto/trace/ftrace/lowmemorykiller.proto
13830
13831#[derive(Clone, PartialEq, ::prost::Message)]
13832pub struct LowmemoryKillFtraceEvent {
13833    #[prost(string, optional, tag="1")]
13834    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13835    #[prost(int32, optional, tag="2")]
13836    pub pid: ::core::option::Option<i32>,
13837    #[prost(int64, optional, tag="3")]
13838    pub pagecache_size: ::core::option::Option<i64>,
13839    #[prost(int64, optional, tag="4")]
13840    pub pagecache_limit: ::core::option::Option<i64>,
13841    #[prost(int64, optional, tag="5")]
13842    pub free: ::core::option::Option<i64>,
13843}
13844// End of protos/perfetto/trace/ftrace/lowmemorykiller.proto
13845
13846// Begin of protos/perfetto/trace/ftrace/lwis.proto
13847
13848#[derive(Clone, PartialEq, ::prost::Message)]
13849pub struct LwisTracingMarkWriteFtraceEvent {
13850    #[prost(string, optional, tag="1")]
13851    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
13852    #[prost(uint32, optional, tag="2")]
13853    pub r#type: ::core::option::Option<u32>,
13854    #[prost(int32, optional, tag="3")]
13855    pub pid: ::core::option::Option<i32>,
13856    #[prost(string, optional, tag="4")]
13857    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
13858    #[prost(int64, optional, tag="5")]
13859    pub value: ::core::option::Option<i64>,
13860}
13861// End of protos/perfetto/trace/ftrace/lwis.proto
13862
13863// Begin of protos/perfetto/trace/ftrace/mali.proto
13864
13865#[derive(Clone, PartialEq, ::prost::Message)]
13866pub struct MaliTracingMarkWriteFtraceEvent {
13867    #[prost(string, optional, tag="1")]
13868    pub name: ::core::option::Option<::prost::alloc::string::String>,
13869    #[prost(int32, optional, tag="2")]
13870    pub pid: ::core::option::Option<i32>,
13871    #[prost(uint32, optional, tag="3")]
13872    pub r#type: ::core::option::Option<u32>,
13873    #[prost(int32, optional, tag="4")]
13874    pub value: ::core::option::Option<i32>,
13875}
13876#[derive(Clone, PartialEq, ::prost::Message)]
13877pub struct MaliMaliKcpucqssetFtraceEvent {
13878    #[prost(uint32, optional, tag="1")]
13879    pub id: ::core::option::Option<u32>,
13880    #[prost(uint64, optional, tag="2")]
13881    pub info_val1: ::core::option::Option<u64>,
13882    #[prost(uint64, optional, tag="3")]
13883    pub info_val2: ::core::option::Option<u64>,
13884    #[prost(uint32, optional, tag="4")]
13885    pub kctx_id: ::core::option::Option<u32>,
13886    #[prost(int32, optional, tag="5")]
13887    pub kctx_tgid: ::core::option::Option<i32>,
13888}
13889#[derive(Clone, PartialEq, ::prost::Message)]
13890pub struct MaliMaliKcpucqswaitstartFtraceEvent {
13891    #[prost(uint32, optional, tag="1")]
13892    pub id: ::core::option::Option<u32>,
13893    #[prost(uint64, optional, tag="2")]
13894    pub info_val1: ::core::option::Option<u64>,
13895    #[prost(uint64, optional, tag="3")]
13896    pub info_val2: ::core::option::Option<u64>,
13897    #[prost(uint32, optional, tag="4")]
13898    pub kctx_id: ::core::option::Option<u32>,
13899    #[prost(int32, optional, tag="5")]
13900    pub kctx_tgid: ::core::option::Option<i32>,
13901}
13902#[derive(Clone, PartialEq, ::prost::Message)]
13903pub struct MaliMaliKcpucqswaitendFtraceEvent {
13904    #[prost(uint32, optional, tag="1")]
13905    pub id: ::core::option::Option<u32>,
13906    #[prost(uint64, optional, tag="2")]
13907    pub info_val1: ::core::option::Option<u64>,
13908    #[prost(uint64, optional, tag="3")]
13909    pub info_val2: ::core::option::Option<u64>,
13910    #[prost(uint32, optional, tag="4")]
13911    pub kctx_id: ::core::option::Option<u32>,
13912    #[prost(int32, optional, tag="5")]
13913    pub kctx_tgid: ::core::option::Option<i32>,
13914}
13915#[derive(Clone, PartialEq, ::prost::Message)]
13916pub struct MaliMaliKcpufencesignalFtraceEvent {
13917    #[prost(uint64, optional, tag="1")]
13918    pub info_val1: ::core::option::Option<u64>,
13919    #[prost(uint64, optional, tag="2")]
13920    pub info_val2: ::core::option::Option<u64>,
13921    #[prost(int32, optional, tag="3")]
13922    pub kctx_tgid: ::core::option::Option<i32>,
13923    #[prost(uint32, optional, tag="4")]
13924    pub kctx_id: ::core::option::Option<u32>,
13925    #[prost(uint32, optional, tag="5")]
13926    pub id: ::core::option::Option<u32>,
13927}
13928#[derive(Clone, PartialEq, ::prost::Message)]
13929pub struct MaliMaliKcpufencewaitstartFtraceEvent {
13930    #[prost(uint64, optional, tag="1")]
13931    pub info_val1: ::core::option::Option<u64>,
13932    #[prost(uint64, optional, tag="2")]
13933    pub info_val2: ::core::option::Option<u64>,
13934    #[prost(int32, optional, tag="3")]
13935    pub kctx_tgid: ::core::option::Option<i32>,
13936    #[prost(uint32, optional, tag="4")]
13937    pub kctx_id: ::core::option::Option<u32>,
13938    #[prost(uint32, optional, tag="5")]
13939    pub id: ::core::option::Option<u32>,
13940}
13941#[derive(Clone, PartialEq, ::prost::Message)]
13942pub struct MaliMaliKcpufencewaitendFtraceEvent {
13943    #[prost(uint64, optional, tag="1")]
13944    pub info_val1: ::core::option::Option<u64>,
13945    #[prost(uint64, optional, tag="2")]
13946    pub info_val2: ::core::option::Option<u64>,
13947    #[prost(int32, optional, tag="3")]
13948    pub kctx_tgid: ::core::option::Option<i32>,
13949    #[prost(uint32, optional, tag="4")]
13950    pub kctx_id: ::core::option::Option<u32>,
13951    #[prost(uint32, optional, tag="5")]
13952    pub id: ::core::option::Option<u32>,
13953}
13954#[derive(Clone, PartialEq, ::prost::Message)]
13955pub struct MaliMaliCsfinterruptstartFtraceEvent {
13956    #[prost(int32, optional, tag="1")]
13957    pub kctx_tgid: ::core::option::Option<i32>,
13958    #[prost(uint32, optional, tag="2")]
13959    pub kctx_id: ::core::option::Option<u32>,
13960    #[prost(uint64, optional, tag="3")]
13961    pub info_val: ::core::option::Option<u64>,
13962}
13963#[derive(Clone, PartialEq, ::prost::Message)]
13964pub struct MaliMaliCsfinterruptendFtraceEvent {
13965    #[prost(int32, optional, tag="1")]
13966    pub kctx_tgid: ::core::option::Option<i32>,
13967    #[prost(uint32, optional, tag="2")]
13968    pub kctx_id: ::core::option::Option<u32>,
13969    #[prost(uint64, optional, tag="3")]
13970    pub info_val: ::core::option::Option<u64>,
13971}
13972#[derive(Clone, PartialEq, ::prost::Message)]
13973pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
13974    #[prost(int32, optional, tag="1")]
13975    pub kctx_tgid: ::core::option::Option<i32>,
13976    #[prost(uint32, optional, tag="2")]
13977    pub kctx_id: ::core::option::Option<u32>,
13978    #[prost(uint64, optional, tag="3")]
13979    pub info_val: ::core::option::Option<u64>,
13980}
13981#[derive(Clone, PartialEq, ::prost::Message)]
13982pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
13983    #[prost(int32, optional, tag="1")]
13984    pub kctx_tgid: ::core::option::Option<i32>,
13985    #[prost(uint32, optional, tag="2")]
13986    pub kctx_id: ::core::option::Option<u32>,
13987    #[prost(uint64, optional, tag="3")]
13988    pub info_val: ::core::option::Option<u64>,
13989}
13990#[derive(Clone, PartialEq, ::prost::Message)]
13991pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
13992    #[prost(int32, optional, tag="1")]
13993    pub kctx_tgid: ::core::option::Option<i32>,
13994    #[prost(uint32, optional, tag="2")]
13995    pub kctx_id: ::core::option::Option<u32>,
13996    #[prost(uint64, optional, tag="3")]
13997    pub info_val: ::core::option::Option<u64>,
13998}
13999#[derive(Clone, PartialEq, ::prost::Message)]
14000pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
14001    #[prost(int32, optional, tag="1")]
14002    pub kctx_tgid: ::core::option::Option<i32>,
14003    #[prost(uint32, optional, tag="2")]
14004    pub kctx_id: ::core::option::Option<u32>,
14005    #[prost(uint64, optional, tag="3")]
14006    pub info_val: ::core::option::Option<u64>,
14007}
14008#[derive(Clone, PartialEq, ::prost::Message)]
14009pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
14010    #[prost(int32, optional, tag="1")]
14011    pub kctx_tgid: ::core::option::Option<i32>,
14012    #[prost(uint32, optional, tag="2")]
14013    pub kctx_id: ::core::option::Option<u32>,
14014    #[prost(uint64, optional, tag="3")]
14015    pub info_val: ::core::option::Option<u64>,
14016}
14017#[derive(Clone, PartialEq, ::prost::Message)]
14018pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
14019    #[prost(int32, optional, tag="1")]
14020    pub kctx_tgid: ::core::option::Option<i32>,
14021    #[prost(uint32, optional, tag="2")]
14022    pub kctx_id: ::core::option::Option<u32>,
14023    #[prost(uint64, optional, tag="3")]
14024    pub info_val: ::core::option::Option<u64>,
14025}
14026#[derive(Clone, PartialEq, ::prost::Message)]
14027pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
14028    #[prost(int32, optional, tag="1")]
14029    pub kctx_tgid: ::core::option::Option<i32>,
14030    #[prost(uint32, optional, tag="2")]
14031    pub kctx_id: ::core::option::Option<u32>,
14032    #[prost(uint64, optional, tag="3")]
14033    pub info_val: ::core::option::Option<u64>,
14034}
14035#[derive(Clone, PartialEq, ::prost::Message)]
14036pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
14037    #[prost(int32, optional, tag="1")]
14038    pub kctx_tgid: ::core::option::Option<i32>,
14039    #[prost(uint32, optional, tag="2")]
14040    pub kctx_id: ::core::option::Option<u32>,
14041    #[prost(uint64, optional, tag="3")]
14042    pub info_val: ::core::option::Option<u64>,
14043}
14044#[derive(Clone, PartialEq, ::prost::Message)]
14045pub struct MaliMaliPmmcuinsleepFtraceEvent {
14046    #[prost(int32, optional, tag="1")]
14047    pub kctx_tgid: ::core::option::Option<i32>,
14048    #[prost(uint32, optional, tag="2")]
14049    pub kctx_id: ::core::option::Option<u32>,
14050    #[prost(uint64, optional, tag="3")]
14051    pub info_val: ::core::option::Option<u64>,
14052}
14053#[derive(Clone, PartialEq, ::prost::Message)]
14054pub struct MaliMaliPmmcuoffFtraceEvent {
14055    #[prost(int32, optional, tag="1")]
14056    pub kctx_tgid: ::core::option::Option<i32>,
14057    #[prost(uint32, optional, tag="2")]
14058    pub kctx_id: ::core::option::Option<u32>,
14059    #[prost(uint64, optional, tag="3")]
14060    pub info_val: ::core::option::Option<u64>,
14061}
14062#[derive(Clone, PartialEq, ::prost::Message)]
14063pub struct MaliMaliPmmcuonFtraceEvent {
14064    #[prost(int32, optional, tag="1")]
14065    pub kctx_tgid: ::core::option::Option<i32>,
14066    #[prost(uint32, optional, tag="2")]
14067    pub kctx_id: ::core::option::Option<u32>,
14068    #[prost(uint64, optional, tag="3")]
14069    pub info_val: ::core::option::Option<u64>,
14070}
14071#[derive(Clone, PartialEq, ::prost::Message)]
14072pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
14073    #[prost(int32, optional, tag="1")]
14074    pub kctx_tgid: ::core::option::Option<i32>,
14075    #[prost(uint32, optional, tag="2")]
14076    pub kctx_id: ::core::option::Option<u32>,
14077    #[prost(uint64, optional, tag="3")]
14078    pub info_val: ::core::option::Option<u64>,
14079}
14080#[derive(Clone, PartialEq, ::prost::Message)]
14081pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
14082    #[prost(int32, optional, tag="1")]
14083    pub kctx_tgid: ::core::option::Option<i32>,
14084    #[prost(uint32, optional, tag="2")]
14085    pub kctx_id: ::core::option::Option<u32>,
14086    #[prost(uint64, optional, tag="3")]
14087    pub info_val: ::core::option::Option<u64>,
14088}
14089#[derive(Clone, PartialEq, ::prost::Message)]
14090pub struct MaliMaliPmmcuonhaltFtraceEvent {
14091    #[prost(int32, optional, tag="1")]
14092    pub kctx_tgid: ::core::option::Option<i32>,
14093    #[prost(uint32, optional, tag="2")]
14094    pub kctx_id: ::core::option::Option<u32>,
14095    #[prost(uint64, optional, tag="3")]
14096    pub info_val: ::core::option::Option<u64>,
14097}
14098#[derive(Clone, PartialEq, ::prost::Message)]
14099pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
14100    #[prost(int32, optional, tag="1")]
14101    pub kctx_tgid: ::core::option::Option<i32>,
14102    #[prost(uint32, optional, tag="2")]
14103    pub kctx_id: ::core::option::Option<u32>,
14104    #[prost(uint64, optional, tag="3")]
14105    pub info_val: ::core::option::Option<u64>,
14106}
14107#[derive(Clone, PartialEq, ::prost::Message)]
14108pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
14109    #[prost(int32, optional, tag="1")]
14110    pub kctx_tgid: ::core::option::Option<i32>,
14111    #[prost(uint32, optional, tag="2")]
14112    pub kctx_id: ::core::option::Option<u32>,
14113    #[prost(uint64, optional, tag="3")]
14114    pub info_val: ::core::option::Option<u64>,
14115}
14116#[derive(Clone, PartialEq, ::prost::Message)]
14117pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
14118    #[prost(int32, optional, tag="1")]
14119    pub kctx_tgid: ::core::option::Option<i32>,
14120    #[prost(uint32, optional, tag="2")]
14121    pub kctx_id: ::core::option::Option<u32>,
14122    #[prost(uint64, optional, tag="3")]
14123    pub info_val: ::core::option::Option<u64>,
14124}
14125#[derive(Clone, PartialEq, ::prost::Message)]
14126pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
14127    #[prost(int32, optional, tag="1")]
14128    pub kctx_tgid: ::core::option::Option<i32>,
14129    #[prost(uint32, optional, tag="2")]
14130    pub kctx_id: ::core::option::Option<u32>,
14131    #[prost(uint64, optional, tag="3")]
14132    pub info_val: ::core::option::Option<u64>,
14133}
14134#[derive(Clone, PartialEq, ::prost::Message)]
14135pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
14136    #[prost(int32, optional, tag="1")]
14137    pub kctx_tgid: ::core::option::Option<i32>,
14138    #[prost(uint32, optional, tag="2")]
14139    pub kctx_id: ::core::option::Option<u32>,
14140    #[prost(uint64, optional, tag="3")]
14141    pub info_val: ::core::option::Option<u64>,
14142}
14143#[derive(Clone, PartialEq, ::prost::Message)]
14144pub struct MaliMaliPmmcupendoffFtraceEvent {
14145    #[prost(int32, optional, tag="1")]
14146    pub kctx_tgid: ::core::option::Option<i32>,
14147    #[prost(uint32, optional, tag="2")]
14148    pub kctx_id: ::core::option::Option<u32>,
14149    #[prost(uint64, optional, tag="3")]
14150    pub info_val: ::core::option::Option<u64>,
14151}
14152#[derive(Clone, PartialEq, ::prost::Message)]
14153pub struct MaliMaliPmmcupendonreloadFtraceEvent {
14154    #[prost(int32, optional, tag="1")]
14155    pub kctx_tgid: ::core::option::Option<i32>,
14156    #[prost(uint32, optional, tag="2")]
14157    pub kctx_id: ::core::option::Option<u32>,
14158    #[prost(uint64, optional, tag="3")]
14159    pub info_val: ::core::option::Option<u64>,
14160}
14161#[derive(Clone, PartialEq, ::prost::Message)]
14162pub struct MaliMaliPmmcupowerdownFtraceEvent {
14163    #[prost(int32, optional, tag="1")]
14164    pub kctx_tgid: ::core::option::Option<i32>,
14165    #[prost(uint32, optional, tag="2")]
14166    pub kctx_id: ::core::option::Option<u32>,
14167    #[prost(uint64, optional, tag="3")]
14168    pub info_val: ::core::option::Option<u64>,
14169}
14170#[derive(Clone, PartialEq, ::prost::Message)]
14171pub struct MaliMaliPmmcuresetwaitFtraceEvent {
14172    #[prost(int32, optional, tag="1")]
14173    pub kctx_tgid: ::core::option::Option<i32>,
14174    #[prost(uint32, optional, tag="2")]
14175    pub kctx_id: ::core::option::Option<u32>,
14176    #[prost(uint64, optional, tag="3")]
14177    pub info_val: ::core::option::Option<u64>,
14178}
14179#[derive(Clone, PartialEq, ::prost::Message)]
14180pub struct MaliGpuPowerStateFtraceEvent {
14181    #[prost(uint64, optional, tag="1")]
14182    pub change_ns: ::core::option::Option<u64>,
14183    #[prost(int32, optional, tag="2")]
14184    pub from_state: ::core::option::Option<i32>,
14185    #[prost(int32, optional, tag="3")]
14186    pub to_state: ::core::option::Option<i32>,
14187}
14188// End of protos/perfetto/trace/ftrace/mali.proto
14189
14190// Begin of protos/perfetto/trace/ftrace/mdss.proto
14191
14192#[derive(Clone, PartialEq, ::prost::Message)]
14193pub struct MdpCmdKickoffFtraceEvent {
14194    #[prost(uint32, optional, tag="1")]
14195    pub ctl_num: ::core::option::Option<u32>,
14196    #[prost(int32, optional, tag="2")]
14197    pub kickoff_cnt: ::core::option::Option<i32>,
14198}
14199#[derive(Clone, PartialEq, ::prost::Message)]
14200pub struct MdpCommitFtraceEvent {
14201    #[prost(uint32, optional, tag="1")]
14202    pub num: ::core::option::Option<u32>,
14203    #[prost(uint32, optional, tag="2")]
14204    pub play_cnt: ::core::option::Option<u32>,
14205    #[prost(uint32, optional, tag="3")]
14206    pub clk_rate: ::core::option::Option<u32>,
14207    #[prost(uint64, optional, tag="4")]
14208    pub bandwidth: ::core::option::Option<u64>,
14209}
14210#[derive(Clone, PartialEq, ::prost::Message)]
14211pub struct MdpPerfSetOtFtraceEvent {
14212    #[prost(uint32, optional, tag="1")]
14213    pub pnum: ::core::option::Option<u32>,
14214    #[prost(uint32, optional, tag="2")]
14215    pub xin_id: ::core::option::Option<u32>,
14216    #[prost(uint32, optional, tag="3")]
14217    pub rd_lim: ::core::option::Option<u32>,
14218    #[prost(uint32, optional, tag="4")]
14219    pub is_vbif_rt: ::core::option::Option<u32>,
14220}
14221#[derive(Clone, PartialEq, ::prost::Message)]
14222pub struct MdpSsppChangeFtraceEvent {
14223    #[prost(uint32, optional, tag="1")]
14224    pub num: ::core::option::Option<u32>,
14225    #[prost(uint32, optional, tag="2")]
14226    pub play_cnt: ::core::option::Option<u32>,
14227    #[prost(uint32, optional, tag="3")]
14228    pub mixer: ::core::option::Option<u32>,
14229    #[prost(uint32, optional, tag="4")]
14230    pub stage: ::core::option::Option<u32>,
14231    #[prost(uint32, optional, tag="5")]
14232    pub flags: ::core::option::Option<u32>,
14233    #[prost(uint32, optional, tag="6")]
14234    pub format: ::core::option::Option<u32>,
14235    #[prost(uint32, optional, tag="7")]
14236    pub img_w: ::core::option::Option<u32>,
14237    #[prost(uint32, optional, tag="8")]
14238    pub img_h: ::core::option::Option<u32>,
14239    #[prost(uint32, optional, tag="9")]
14240    pub src_x: ::core::option::Option<u32>,
14241    #[prost(uint32, optional, tag="10")]
14242    pub src_y: ::core::option::Option<u32>,
14243    #[prost(uint32, optional, tag="11")]
14244    pub src_w: ::core::option::Option<u32>,
14245    #[prost(uint32, optional, tag="12")]
14246    pub src_h: ::core::option::Option<u32>,
14247    #[prost(uint32, optional, tag="13")]
14248    pub dst_x: ::core::option::Option<u32>,
14249    #[prost(uint32, optional, tag="14")]
14250    pub dst_y: ::core::option::Option<u32>,
14251    #[prost(uint32, optional, tag="15")]
14252    pub dst_w: ::core::option::Option<u32>,
14253    #[prost(uint32, optional, tag="16")]
14254    pub dst_h: ::core::option::Option<u32>,
14255}
14256#[derive(Clone, PartialEq, ::prost::Message)]
14257pub struct TracingMarkWriteFtraceEvent {
14258    #[prost(int32, optional, tag="1")]
14259    pub pid: ::core::option::Option<i32>,
14260    #[prost(string, optional, tag="2")]
14261    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14262    #[prost(uint32, optional, tag="3")]
14263    pub trace_begin: ::core::option::Option<u32>,
14264}
14265#[derive(Clone, PartialEq, ::prost::Message)]
14266pub struct MdpCmdPingpongDoneFtraceEvent {
14267    #[prost(uint32, optional, tag="1")]
14268    pub ctl_num: ::core::option::Option<u32>,
14269    #[prost(uint32, optional, tag="2")]
14270    pub intf_num: ::core::option::Option<u32>,
14271    #[prost(uint32, optional, tag="3")]
14272    pub pp_num: ::core::option::Option<u32>,
14273    #[prost(int32, optional, tag="4")]
14274    pub koff_cnt: ::core::option::Option<i32>,
14275}
14276#[derive(Clone, PartialEq, ::prost::Message)]
14277pub struct MdpCompareBwFtraceEvent {
14278    #[prost(uint64, optional, tag="1")]
14279    pub new_ab: ::core::option::Option<u64>,
14280    #[prost(uint64, optional, tag="2")]
14281    pub new_ib: ::core::option::Option<u64>,
14282    #[prost(uint64, optional, tag="3")]
14283    pub new_wb: ::core::option::Option<u64>,
14284    #[prost(uint64, optional, tag="4")]
14285    pub old_ab: ::core::option::Option<u64>,
14286    #[prost(uint64, optional, tag="5")]
14287    pub old_ib: ::core::option::Option<u64>,
14288    #[prost(uint64, optional, tag="6")]
14289    pub old_wb: ::core::option::Option<u64>,
14290    #[prost(uint32, optional, tag="7")]
14291    pub params_changed: ::core::option::Option<u32>,
14292    #[prost(uint32, optional, tag="8")]
14293    pub update_bw: ::core::option::Option<u32>,
14294}
14295#[derive(Clone, PartialEq, ::prost::Message)]
14296pub struct MdpPerfSetPanicLutsFtraceEvent {
14297    #[prost(uint32, optional, tag="1")]
14298    pub pnum: ::core::option::Option<u32>,
14299    #[prost(uint32, optional, tag="2")]
14300    pub fmt: ::core::option::Option<u32>,
14301    #[prost(uint32, optional, tag="3")]
14302    pub mode: ::core::option::Option<u32>,
14303    #[prost(uint32, optional, tag="4")]
14304    pub panic_lut: ::core::option::Option<u32>,
14305    #[prost(uint32, optional, tag="5")]
14306    pub robust_lut: ::core::option::Option<u32>,
14307}
14308#[derive(Clone, PartialEq, ::prost::Message)]
14309pub struct MdpSsppSetFtraceEvent {
14310    #[prost(uint32, optional, tag="1")]
14311    pub num: ::core::option::Option<u32>,
14312    #[prost(uint32, optional, tag="2")]
14313    pub play_cnt: ::core::option::Option<u32>,
14314    #[prost(uint32, optional, tag="3")]
14315    pub mixer: ::core::option::Option<u32>,
14316    #[prost(uint32, optional, tag="4")]
14317    pub stage: ::core::option::Option<u32>,
14318    #[prost(uint32, optional, tag="5")]
14319    pub flags: ::core::option::Option<u32>,
14320    #[prost(uint32, optional, tag="6")]
14321    pub format: ::core::option::Option<u32>,
14322    #[prost(uint32, optional, tag="7")]
14323    pub img_w: ::core::option::Option<u32>,
14324    #[prost(uint32, optional, tag="8")]
14325    pub img_h: ::core::option::Option<u32>,
14326    #[prost(uint32, optional, tag="9")]
14327    pub src_x: ::core::option::Option<u32>,
14328    #[prost(uint32, optional, tag="10")]
14329    pub src_y: ::core::option::Option<u32>,
14330    #[prost(uint32, optional, tag="11")]
14331    pub src_w: ::core::option::Option<u32>,
14332    #[prost(uint32, optional, tag="12")]
14333    pub src_h: ::core::option::Option<u32>,
14334    #[prost(uint32, optional, tag="13")]
14335    pub dst_x: ::core::option::Option<u32>,
14336    #[prost(uint32, optional, tag="14")]
14337    pub dst_y: ::core::option::Option<u32>,
14338    #[prost(uint32, optional, tag="15")]
14339    pub dst_w: ::core::option::Option<u32>,
14340    #[prost(uint32, optional, tag="16")]
14341    pub dst_h: ::core::option::Option<u32>,
14342}
14343#[derive(Clone, PartialEq, ::prost::Message)]
14344pub struct MdpCmdReadptrDoneFtraceEvent {
14345    #[prost(uint32, optional, tag="1")]
14346    pub ctl_num: ::core::option::Option<u32>,
14347    #[prost(int32, optional, tag="2")]
14348    pub koff_cnt: ::core::option::Option<i32>,
14349}
14350#[derive(Clone, PartialEq, ::prost::Message)]
14351pub struct MdpMisrCrcFtraceEvent {
14352    #[prost(uint32, optional, tag="1")]
14353    pub block_id: ::core::option::Option<u32>,
14354    #[prost(uint32, optional, tag="2")]
14355    pub vsync_cnt: ::core::option::Option<u32>,
14356    #[prost(uint32, optional, tag="3")]
14357    pub crc: ::core::option::Option<u32>,
14358}
14359#[derive(Clone, PartialEq, ::prost::Message)]
14360pub struct MdpPerfSetQosLutsFtraceEvent {
14361    #[prost(uint32, optional, tag="1")]
14362    pub pnum: ::core::option::Option<u32>,
14363    #[prost(uint32, optional, tag="2")]
14364    pub fmt: ::core::option::Option<u32>,
14365    #[prost(uint32, optional, tag="3")]
14366    pub intf: ::core::option::Option<u32>,
14367    #[prost(uint32, optional, tag="4")]
14368    pub rot: ::core::option::Option<u32>,
14369    #[prost(uint32, optional, tag="5")]
14370    pub fl: ::core::option::Option<u32>,
14371    #[prost(uint32, optional, tag="6")]
14372    pub lut: ::core::option::Option<u32>,
14373    #[prost(uint32, optional, tag="7")]
14374    pub linear: ::core::option::Option<u32>,
14375}
14376#[derive(Clone, PartialEq, ::prost::Message)]
14377pub struct MdpTraceCounterFtraceEvent {
14378    #[prost(int32, optional, tag="1")]
14379    pub pid: ::core::option::Option<i32>,
14380    #[prost(string, optional, tag="2")]
14381    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
14382    #[prost(int32, optional, tag="3")]
14383    pub value: ::core::option::Option<i32>,
14384}
14385#[derive(Clone, PartialEq, ::prost::Message)]
14386pub struct MdpCmdReleaseBwFtraceEvent {
14387    #[prost(uint32, optional, tag="1")]
14388    pub ctl_num: ::core::option::Option<u32>,
14389}
14390#[derive(Clone, PartialEq, ::prost::Message)]
14391pub struct MdpMixerUpdateFtraceEvent {
14392    #[prost(uint32, optional, tag="1")]
14393    pub mixer_num: ::core::option::Option<u32>,
14394}
14395#[derive(Clone, PartialEq, ::prost::Message)]
14396pub struct MdpPerfSetWmLevelsFtraceEvent {
14397    #[prost(uint32, optional, tag="1")]
14398    pub pnum: ::core::option::Option<u32>,
14399    #[prost(uint32, optional, tag="2")]
14400    pub use_space: ::core::option::Option<u32>,
14401    #[prost(uint32, optional, tag="3")]
14402    pub priority_bytes: ::core::option::Option<u32>,
14403    #[prost(uint32, optional, tag="4")]
14404    pub wm0: ::core::option::Option<u32>,
14405    #[prost(uint32, optional, tag="5")]
14406    pub wm1: ::core::option::Option<u32>,
14407    #[prost(uint32, optional, tag="6")]
14408    pub wm2: ::core::option::Option<u32>,
14409    #[prost(uint32, optional, tag="7")]
14410    pub mb_cnt: ::core::option::Option<u32>,
14411    #[prost(uint32, optional, tag="8")]
14412    pub mb_size: ::core::option::Option<u32>,
14413}
14414#[derive(Clone, PartialEq, ::prost::Message)]
14415pub struct MdpVideoUnderrunDoneFtraceEvent {
14416    #[prost(uint32, optional, tag="1")]
14417    pub ctl_num: ::core::option::Option<u32>,
14418    #[prost(uint32, optional, tag="2")]
14419    pub underrun_cnt: ::core::option::Option<u32>,
14420}
14421#[derive(Clone, PartialEq, ::prost::Message)]
14422pub struct MdpCmdWaitPingpongFtraceEvent {
14423    #[prost(uint32, optional, tag="1")]
14424    pub ctl_num: ::core::option::Option<u32>,
14425    #[prost(int32, optional, tag="2")]
14426    pub kickoff_cnt: ::core::option::Option<i32>,
14427}
14428#[derive(Clone, PartialEq, ::prost::Message)]
14429pub struct MdpPerfPrefillCalcFtraceEvent {
14430    #[prost(uint32, optional, tag="1")]
14431    pub pnum: ::core::option::Option<u32>,
14432    #[prost(uint32, optional, tag="2")]
14433    pub latency_buf: ::core::option::Option<u32>,
14434    #[prost(uint32, optional, tag="3")]
14435    pub ot: ::core::option::Option<u32>,
14436    #[prost(uint32, optional, tag="4")]
14437    pub y_buf: ::core::option::Option<u32>,
14438    #[prost(uint32, optional, tag="5")]
14439    pub y_scaler: ::core::option::Option<u32>,
14440    #[prost(uint32, optional, tag="6")]
14441    pub pp_lines: ::core::option::Option<u32>,
14442    #[prost(uint32, optional, tag="7")]
14443    pub pp_bytes: ::core::option::Option<u32>,
14444    #[prost(uint32, optional, tag="8")]
14445    pub post_sc: ::core::option::Option<u32>,
14446    #[prost(uint32, optional, tag="9")]
14447    pub fbc_bytes: ::core::option::Option<u32>,
14448    #[prost(uint32, optional, tag="10")]
14449    pub prefill_bytes: ::core::option::Option<u32>,
14450}
14451#[derive(Clone, PartialEq, ::prost::Message)]
14452pub struct MdpPerfUpdateBusFtraceEvent {
14453    #[prost(int32, optional, tag="1")]
14454    pub client: ::core::option::Option<i32>,
14455    #[prost(uint64, optional, tag="2")]
14456    pub ab_quota: ::core::option::Option<u64>,
14457    #[prost(uint64, optional, tag="3")]
14458    pub ib_quota: ::core::option::Option<u64>,
14459}
14460#[derive(Clone, PartialEq, ::prost::Message)]
14461pub struct RotatorBwAoAsContextFtraceEvent {
14462    #[prost(uint32, optional, tag="1")]
14463    pub state: ::core::option::Option<u32>,
14464}
14465// End of protos/perfetto/trace/ftrace/mdss.proto
14466
14467// Begin of protos/perfetto/trace/ftrace/mm_event.proto
14468
14469#[derive(Clone, PartialEq, ::prost::Message)]
14470pub struct MmEventRecordFtraceEvent {
14471    #[prost(uint32, optional, tag="1")]
14472    pub avg_lat: ::core::option::Option<u32>,
14473    #[prost(uint32, optional, tag="2")]
14474    pub count: ::core::option::Option<u32>,
14475    #[prost(uint32, optional, tag="3")]
14476    pub max_lat: ::core::option::Option<u32>,
14477    #[prost(uint32, optional, tag="4")]
14478    pub r#type: ::core::option::Option<u32>,
14479}
14480// End of protos/perfetto/trace/ftrace/mm_event.proto
14481
14482// Begin of protos/perfetto/trace/ftrace/net.proto
14483
14484#[derive(Clone, PartialEq, ::prost::Message)]
14485pub struct NetifReceiveSkbFtraceEvent {
14486    #[prost(uint32, optional, tag="1")]
14487    pub len: ::core::option::Option<u32>,
14488    #[prost(string, optional, tag="2")]
14489    pub name: ::core::option::Option<::prost::alloc::string::String>,
14490    #[prost(uint64, optional, tag="3")]
14491    pub skbaddr: ::core::option::Option<u64>,
14492}
14493#[derive(Clone, PartialEq, ::prost::Message)]
14494pub struct NetDevXmitFtraceEvent {
14495    #[prost(uint32, optional, tag="1")]
14496    pub len: ::core::option::Option<u32>,
14497    #[prost(string, optional, tag="2")]
14498    pub name: ::core::option::Option<::prost::alloc::string::String>,
14499    #[prost(int32, optional, tag="3")]
14500    pub rc: ::core::option::Option<i32>,
14501    #[prost(uint64, optional, tag="4")]
14502    pub skbaddr: ::core::option::Option<u64>,
14503}
14504#[derive(Clone, PartialEq, ::prost::Message)]
14505pub struct NapiGroReceiveEntryFtraceEvent {
14506    #[prost(uint32, optional, tag="1")]
14507    pub data_len: ::core::option::Option<u32>,
14508    #[prost(uint32, optional, tag="2")]
14509    pub gso_size: ::core::option::Option<u32>,
14510    #[prost(uint32, optional, tag="3")]
14511    pub gso_type: ::core::option::Option<u32>,
14512    #[prost(uint32, optional, tag="4")]
14513    pub hash: ::core::option::Option<u32>,
14514    #[prost(uint32, optional, tag="5")]
14515    pub ip_summed: ::core::option::Option<u32>,
14516    #[prost(uint32, optional, tag="6")]
14517    pub l4_hash: ::core::option::Option<u32>,
14518    #[prost(uint32, optional, tag="7")]
14519    pub len: ::core::option::Option<u32>,
14520    #[prost(int32, optional, tag="8")]
14521    pub mac_header: ::core::option::Option<i32>,
14522    #[prost(uint32, optional, tag="9")]
14523    pub mac_header_valid: ::core::option::Option<u32>,
14524    #[prost(string, optional, tag="10")]
14525    pub name: ::core::option::Option<::prost::alloc::string::String>,
14526    #[prost(uint32, optional, tag="11")]
14527    pub napi_id: ::core::option::Option<u32>,
14528    #[prost(uint32, optional, tag="12")]
14529    pub nr_frags: ::core::option::Option<u32>,
14530    #[prost(uint32, optional, tag="13")]
14531    pub protocol: ::core::option::Option<u32>,
14532    #[prost(uint32, optional, tag="14")]
14533    pub queue_mapping: ::core::option::Option<u32>,
14534    #[prost(uint64, optional, tag="15")]
14535    pub skbaddr: ::core::option::Option<u64>,
14536    #[prost(uint32, optional, tag="16")]
14537    pub truesize: ::core::option::Option<u32>,
14538    #[prost(uint32, optional, tag="17")]
14539    pub vlan_proto: ::core::option::Option<u32>,
14540    #[prost(uint32, optional, tag="18")]
14541    pub vlan_tagged: ::core::option::Option<u32>,
14542    #[prost(uint32, optional, tag="19")]
14543    pub vlan_tci: ::core::option::Option<u32>,
14544}
14545#[derive(Clone, PartialEq, ::prost::Message)]
14546pub struct NapiGroReceiveExitFtraceEvent {
14547    #[prost(int32, optional, tag="1")]
14548    pub ret: ::core::option::Option<i32>,
14549}
14550// End of protos/perfetto/trace/ftrace/net.proto
14551
14552// Begin of protos/perfetto/trace/ftrace/oom.proto
14553
14554#[derive(Clone, PartialEq, ::prost::Message)]
14555pub struct OomScoreAdjUpdateFtraceEvent {
14556    #[prost(string, optional, tag="1")]
14557    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14558    #[prost(int32, optional, tag="2")]
14559    pub oom_score_adj: ::core::option::Option<i32>,
14560    #[prost(int32, optional, tag="3")]
14561    pub pid: ::core::option::Option<i32>,
14562}
14563#[derive(Clone, PartialEq, ::prost::Message)]
14564pub struct MarkVictimFtraceEvent {
14565    #[prost(int32, optional, tag="1")]
14566    pub pid: ::core::option::Option<i32>,
14567}
14568// End of protos/perfetto/trace/ftrace/oom.proto
14569
14570// Begin of protos/perfetto/trace/ftrace/panel.proto
14571
14572#[derive(Clone, PartialEq, ::prost::Message)]
14573pub struct DsiCmdFifoStatusFtraceEvent {
14574    #[prost(uint32, optional, tag="1")]
14575    pub header: ::core::option::Option<u32>,
14576    #[prost(uint32, optional, tag="2")]
14577    pub payload: ::core::option::Option<u32>,
14578}
14579#[derive(Clone, PartialEq, ::prost::Message)]
14580pub struct DsiRxFtraceEvent {
14581    #[prost(uint32, optional, tag="1")]
14582    pub cmd: ::core::option::Option<u32>,
14583    #[prost(uint32, optional, tag="2")]
14584    pub rx_buf: ::core::option::Option<u32>,
14585}
14586#[derive(Clone, PartialEq, ::prost::Message)]
14587pub struct DsiTxFtraceEvent {
14588    #[prost(uint32, optional, tag="1")]
14589    pub last: ::core::option::Option<u32>,
14590    #[prost(uint32, optional, tag="2")]
14591    pub tx_buf: ::core::option::Option<u32>,
14592    #[prost(uint32, optional, tag="3")]
14593    pub r#type: ::core::option::Option<u32>,
14594}
14595#[derive(Clone, PartialEq, ::prost::Message)]
14596pub struct PanelWriteGenericFtraceEvent {
14597    #[prost(int32, optional, tag="1")]
14598    pub pid: ::core::option::Option<i32>,
14599    #[prost(string, optional, tag="2")]
14600    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14601    #[prost(uint32, optional, tag="3")]
14602    pub trace_begin: ::core::option::Option<u32>,
14603    #[prost(string, optional, tag="4")]
14604    pub name: ::core::option::Option<::prost::alloc::string::String>,
14605    #[prost(uint32, optional, tag="5")]
14606    pub r#type: ::core::option::Option<u32>,
14607    #[prost(int32, optional, tag="6")]
14608    pub value: ::core::option::Option<i32>,
14609}
14610// End of protos/perfetto/trace/ftrace/panel.proto
14611
14612// Begin of protos/perfetto/trace/ftrace/perf_trace_counters.proto
14613
14614#[derive(Clone, PartialEq, ::prost::Message)]
14615pub struct SchedSwitchWithCtrsFtraceEvent {
14616    #[prost(int32, optional, tag="1")]
14617    pub old_pid: ::core::option::Option<i32>,
14618    #[prost(int32, optional, tag="2")]
14619    pub new_pid: ::core::option::Option<i32>,
14620    #[prost(uint64, optional, tag="3")]
14621    pub cctr: ::core::option::Option<u64>,
14622    #[prost(uint64, optional, tag="4")]
14623    pub ctr0: ::core::option::Option<u64>,
14624    #[prost(uint64, optional, tag="5")]
14625    pub ctr1: ::core::option::Option<u64>,
14626    #[prost(uint64, optional, tag="6")]
14627    pub ctr2: ::core::option::Option<u64>,
14628    #[prost(uint64, optional, tag="7")]
14629    pub ctr3: ::core::option::Option<u64>,
14630    #[prost(uint32, optional, tag="8")]
14631    pub lctr0: ::core::option::Option<u32>,
14632    #[prost(uint32, optional, tag="9")]
14633    pub lctr1: ::core::option::Option<u32>,
14634    #[prost(uint64, optional, tag="10")]
14635    pub ctr4: ::core::option::Option<u64>,
14636    #[prost(uint64, optional, tag="11")]
14637    pub ctr5: ::core::option::Option<u64>,
14638    #[prost(string, optional, tag="12")]
14639    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
14640    #[prost(int32, optional, tag="13")]
14641    pub prev_pid: ::core::option::Option<i32>,
14642    #[prost(uint32, optional, tag="14")]
14643    pub cyc: ::core::option::Option<u32>,
14644    #[prost(uint32, optional, tag="15")]
14645    pub inst: ::core::option::Option<u32>,
14646    #[prost(uint32, optional, tag="16")]
14647    pub stallbm: ::core::option::Option<u32>,
14648    #[prost(uint32, optional, tag="17")]
14649    pub l3dm: ::core::option::Option<u32>,
14650    #[prost(int32, optional, tag="18")]
14651    pub next_pid: ::core::option::Option<i32>,
14652    #[prost(string, optional, tag="19")]
14653    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
14654    #[prost(int64, optional, tag="20")]
14655    pub prev_state: ::core::option::Option<i64>,
14656    #[prost(uint64, optional, tag="21")]
14657    pub amu0: ::core::option::Option<u64>,
14658    #[prost(uint64, optional, tag="22")]
14659    pub amu1: ::core::option::Option<u64>,
14660    #[prost(uint64, optional, tag="23")]
14661    pub amu2: ::core::option::Option<u64>,
14662}
14663// End of protos/perfetto/trace/ftrace/perf_trace_counters.proto
14664
14665// Begin of protos/perfetto/trace/ftrace/pixel_mm.proto
14666
14667#[derive(Clone, PartialEq, ::prost::Message)]
14668pub struct PixelMmKswapdWakeFtraceEvent {
14669    #[prost(int32, optional, tag="1")]
14670    pub whatever: ::core::option::Option<i32>,
14671}
14672#[derive(Clone, PartialEq, ::prost::Message)]
14673pub struct PixelMmKswapdDoneFtraceEvent {
14674    #[prost(uint64, optional, tag="1")]
14675    pub delta_nr_scanned: ::core::option::Option<u64>,
14676    #[prost(uint64, optional, tag="2")]
14677    pub delta_nr_reclaimed: ::core::option::Option<u64>,
14678    #[prost(uint64, optional, tag="3")]
14679    pub delta_nr_allocated: ::core::option::Option<u64>,
14680    #[prost(uint64, optional, tag="4")]
14681    pub duration_ns: ::core::option::Option<u64>,
14682}
14683// End of protos/perfetto/trace/ftrace/pixel_mm.proto
14684
14685// Begin of protos/perfetto/trace/ftrace/power.proto
14686
14687#[derive(Clone, PartialEq, ::prost::Message)]
14688pub struct CpuFrequencyFtraceEvent {
14689    #[prost(uint32, optional, tag="1")]
14690    pub state: ::core::option::Option<u32>,
14691    #[prost(uint32, optional, tag="2")]
14692    pub cpu_id: ::core::option::Option<u32>,
14693}
14694#[derive(Clone, PartialEq, ::prost::Message)]
14695pub struct CpuFrequencyLimitsFtraceEvent {
14696    #[prost(uint32, optional, tag="1")]
14697    pub min_freq: ::core::option::Option<u32>,
14698    #[prost(uint32, optional, tag="2")]
14699    pub max_freq: ::core::option::Option<u32>,
14700    #[prost(uint32, optional, tag="3")]
14701    pub cpu_id: ::core::option::Option<u32>,
14702}
14703#[derive(Clone, PartialEq, ::prost::Message)]
14704pub struct CpuIdleFtraceEvent {
14705    #[prost(uint32, optional, tag="1")]
14706    pub state: ::core::option::Option<u32>,
14707    #[prost(uint32, optional, tag="2")]
14708    pub cpu_id: ::core::option::Option<u32>,
14709}
14710#[derive(Clone, PartialEq, ::prost::Message)]
14711pub struct ClockEnableFtraceEvent {
14712    #[prost(string, optional, tag="1")]
14713    pub name: ::core::option::Option<::prost::alloc::string::String>,
14714    #[prost(uint64, optional, tag="2")]
14715    pub state: ::core::option::Option<u64>,
14716    #[prost(uint64, optional, tag="3")]
14717    pub cpu_id: ::core::option::Option<u64>,
14718}
14719#[derive(Clone, PartialEq, ::prost::Message)]
14720pub struct ClockDisableFtraceEvent {
14721    #[prost(string, optional, tag="1")]
14722    pub name: ::core::option::Option<::prost::alloc::string::String>,
14723    #[prost(uint64, optional, tag="2")]
14724    pub state: ::core::option::Option<u64>,
14725    #[prost(uint64, optional, tag="3")]
14726    pub cpu_id: ::core::option::Option<u64>,
14727}
14728#[derive(Clone, PartialEq, ::prost::Message)]
14729pub struct ClockSetRateFtraceEvent {
14730    #[prost(string, optional, tag="1")]
14731    pub name: ::core::option::Option<::prost::alloc::string::String>,
14732    #[prost(uint64, optional, tag="2")]
14733    pub state: ::core::option::Option<u64>,
14734    #[prost(uint64, optional, tag="3")]
14735    pub cpu_id: ::core::option::Option<u64>,
14736}
14737#[derive(Clone, PartialEq, ::prost::Message)]
14738pub struct SuspendResumeFtraceEvent {
14739    #[prost(string, optional, tag="1")]
14740    pub action: ::core::option::Option<::prost::alloc::string::String>,
14741    #[prost(int32, optional, tag="2")]
14742    pub val: ::core::option::Option<i32>,
14743    #[prost(uint32, optional, tag="3")]
14744    pub start: ::core::option::Option<u32>,
14745}
14746#[derive(Clone, PartialEq, ::prost::Message)]
14747pub struct GpuFrequencyFtraceEvent {
14748    #[prost(uint32, optional, tag="1")]
14749    pub gpu_id: ::core::option::Option<u32>,
14750    #[prost(uint32, optional, tag="2")]
14751    pub state: ::core::option::Option<u32>,
14752}
14753#[derive(Clone, PartialEq, ::prost::Message)]
14754pub struct WakeupSourceActivateFtraceEvent {
14755    #[prost(string, optional, tag="1")]
14756    pub name: ::core::option::Option<::prost::alloc::string::String>,
14757    #[prost(uint64, optional, tag="2")]
14758    pub state: ::core::option::Option<u64>,
14759}
14760#[derive(Clone, PartialEq, ::prost::Message)]
14761pub struct WakeupSourceDeactivateFtraceEvent {
14762    #[prost(string, optional, tag="1")]
14763    pub name: ::core::option::Option<::prost::alloc::string::String>,
14764    #[prost(uint64, optional, tag="2")]
14765    pub state: ::core::option::Option<u64>,
14766}
14767#[derive(Clone, PartialEq, ::prost::Message)]
14768pub struct GpuWorkPeriodFtraceEvent {
14769    #[prost(uint32, optional, tag="1")]
14770    pub gpu_id: ::core::option::Option<u32>,
14771    #[prost(uint32, optional, tag="2")]
14772    pub uid: ::core::option::Option<u32>,
14773    #[prost(uint64, optional, tag="3")]
14774    pub start_time_ns: ::core::option::Option<u64>,
14775    #[prost(uint64, optional, tag="4")]
14776    pub end_time_ns: ::core::option::Option<u64>,
14777    #[prost(uint64, optional, tag="5")]
14778    pub total_active_duration_ns: ::core::option::Option<u64>,
14779}
14780#[derive(Clone, PartialEq, ::prost::Message)]
14781pub struct DevicePmCallbackStartFtraceEvent {
14782    #[prost(string, optional, tag="1")]
14783    pub device: ::core::option::Option<::prost::alloc::string::String>,
14784    #[prost(string, optional, tag="2")]
14785    pub driver: ::core::option::Option<::prost::alloc::string::String>,
14786    #[prost(string, optional, tag="3")]
14787    pub parent: ::core::option::Option<::prost::alloc::string::String>,
14788    #[prost(string, optional, tag="4")]
14789    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
14790    #[prost(int32, optional, tag="5")]
14791    pub event: ::core::option::Option<i32>,
14792}
14793#[derive(Clone, PartialEq, ::prost::Message)]
14794pub struct DevicePmCallbackEndFtraceEvent {
14795    #[prost(string, optional, tag="1")]
14796    pub device: ::core::option::Option<::prost::alloc::string::String>,
14797    #[prost(string, optional, tag="2")]
14798    pub driver: ::core::option::Option<::prost::alloc::string::String>,
14799    #[prost(int32, optional, tag="3")]
14800    pub error: ::core::option::Option<i32>,
14801}
14802// End of protos/perfetto/trace/ftrace/power.proto
14803
14804// Begin of protos/perfetto/trace/ftrace/printk.proto
14805
14806#[derive(Clone, PartialEq, ::prost::Message)]
14807pub struct ConsoleFtraceEvent {
14808    #[prost(string, optional, tag="1")]
14809    pub msg: ::core::option::Option<::prost::alloc::string::String>,
14810}
14811// End of protos/perfetto/trace/ftrace/printk.proto
14812
14813// Begin of protos/perfetto/trace/ftrace/raw_syscalls.proto
14814
14815#[derive(Clone, PartialEq, ::prost::Message)]
14816pub struct SysEnterFtraceEvent {
14817    #[prost(int64, optional, tag="1")]
14818    pub id: ::core::option::Option<i64>,
14819    #[prost(uint64, repeated, packed="false", tag="2")]
14820    pub args: ::prost::alloc::vec::Vec<u64>,
14821}
14822#[derive(Clone, PartialEq, ::prost::Message)]
14823pub struct SysExitFtraceEvent {
14824    #[prost(int64, optional, tag="1")]
14825    pub id: ::core::option::Option<i64>,
14826    #[prost(int64, optional, tag="2")]
14827    pub ret: ::core::option::Option<i64>,
14828}
14829// End of protos/perfetto/trace/ftrace/raw_syscalls.proto
14830
14831// Begin of protos/perfetto/trace/ftrace/regulator.proto
14832
14833#[derive(Clone, PartialEq, ::prost::Message)]
14834pub struct RegulatorDisableFtraceEvent {
14835    #[prost(string, optional, tag="1")]
14836    pub name: ::core::option::Option<::prost::alloc::string::String>,
14837}
14838#[derive(Clone, PartialEq, ::prost::Message)]
14839pub struct RegulatorDisableCompleteFtraceEvent {
14840    #[prost(string, optional, tag="1")]
14841    pub name: ::core::option::Option<::prost::alloc::string::String>,
14842}
14843#[derive(Clone, PartialEq, ::prost::Message)]
14844pub struct RegulatorEnableFtraceEvent {
14845    #[prost(string, optional, tag="1")]
14846    pub name: ::core::option::Option<::prost::alloc::string::String>,
14847}
14848#[derive(Clone, PartialEq, ::prost::Message)]
14849pub struct RegulatorEnableCompleteFtraceEvent {
14850    #[prost(string, optional, tag="1")]
14851    pub name: ::core::option::Option<::prost::alloc::string::String>,
14852}
14853#[derive(Clone, PartialEq, ::prost::Message)]
14854pub struct RegulatorEnableDelayFtraceEvent {
14855    #[prost(string, optional, tag="1")]
14856    pub name: ::core::option::Option<::prost::alloc::string::String>,
14857}
14858#[derive(Clone, PartialEq, ::prost::Message)]
14859pub struct RegulatorSetVoltageFtraceEvent {
14860    #[prost(string, optional, tag="1")]
14861    pub name: ::core::option::Option<::prost::alloc::string::String>,
14862    #[prost(int32, optional, tag="2")]
14863    pub min: ::core::option::Option<i32>,
14864    #[prost(int32, optional, tag="3")]
14865    pub max: ::core::option::Option<i32>,
14866}
14867#[derive(Clone, PartialEq, ::prost::Message)]
14868pub struct RegulatorSetVoltageCompleteFtraceEvent {
14869    #[prost(string, optional, tag="1")]
14870    pub name: ::core::option::Option<::prost::alloc::string::String>,
14871    #[prost(uint32, optional, tag="2")]
14872    pub val: ::core::option::Option<u32>,
14873}
14874// End of protos/perfetto/trace/ftrace/regulator.proto
14875
14876// Begin of protos/perfetto/trace/ftrace/rpm.proto
14877
14878#[derive(Clone, PartialEq, ::prost::Message)]
14879pub struct RpmStatusFtraceEvent {
14880    #[prost(string, optional, tag="1")]
14881    pub name: ::core::option::Option<::prost::alloc::string::String>,
14882    #[prost(int32, optional, tag="2")]
14883    pub status: ::core::option::Option<i32>,
14884}
14885// End of protos/perfetto/trace/ftrace/rpm.proto
14886
14887// Begin of protos/perfetto/trace/ftrace/samsung.proto
14888
14889#[derive(Clone, PartialEq, ::prost::Message)]
14890pub struct SamsungTracingMarkWriteFtraceEvent {
14891    #[prost(int32, optional, tag="1")]
14892    pub pid: ::core::option::Option<i32>,
14893    #[prost(string, optional, tag="2")]
14894    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14895    #[prost(uint32, optional, tag="3")]
14896    pub trace_begin: ::core::option::Option<u32>,
14897    #[prost(uint32, optional, tag="4")]
14898    pub trace_type: ::core::option::Option<u32>,
14899    #[prost(int32, optional, tag="5")]
14900    pub value: ::core::option::Option<i32>,
14901}
14902// End of protos/perfetto/trace/ftrace/samsung.proto
14903
14904// Begin of protos/perfetto/trace/ftrace/sched.proto
14905
14906#[derive(Clone, PartialEq, ::prost::Message)]
14907pub struct SchedSwitchFtraceEvent {
14908    #[prost(string, optional, tag="1")]
14909    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
14910    #[prost(int32, optional, tag="2")]
14911    pub prev_pid: ::core::option::Option<i32>,
14912    #[prost(int32, optional, tag="3")]
14913    pub prev_prio: ::core::option::Option<i32>,
14914    #[prost(int64, optional, tag="4")]
14915    pub prev_state: ::core::option::Option<i64>,
14916    #[prost(string, optional, tag="5")]
14917    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
14918    #[prost(int32, optional, tag="6")]
14919    pub next_pid: ::core::option::Option<i32>,
14920    #[prost(int32, optional, tag="7")]
14921    pub next_prio: ::core::option::Option<i32>,
14922}
14923#[derive(Clone, PartialEq, ::prost::Message)]
14924pub struct SchedWakeupFtraceEvent {
14925    #[prost(string, optional, tag="1")]
14926    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14927    #[prost(int32, optional, tag="2")]
14928    pub pid: ::core::option::Option<i32>,
14929    #[prost(int32, optional, tag="3")]
14930    pub prio: ::core::option::Option<i32>,
14931    #[prost(int32, optional, tag="4")]
14932    pub success: ::core::option::Option<i32>,
14933    #[prost(int32, optional, tag="5")]
14934    pub target_cpu: ::core::option::Option<i32>,
14935}
14936#[derive(Clone, PartialEq, ::prost::Message)]
14937pub struct SchedBlockedReasonFtraceEvent {
14938    #[prost(int32, optional, tag="1")]
14939    pub pid: ::core::option::Option<i32>,
14940    #[prost(uint64, optional, tag="2")]
14941    pub caller: ::core::option::Option<u64>,
14942    #[prost(uint32, optional, tag="3")]
14943    pub io_wait: ::core::option::Option<u32>,
14944}
14945#[derive(Clone, PartialEq, ::prost::Message)]
14946pub struct SchedCpuHotplugFtraceEvent {
14947    #[prost(int32, optional, tag="1")]
14948    pub affected_cpu: ::core::option::Option<i32>,
14949    #[prost(int32, optional, tag="2")]
14950    pub error: ::core::option::Option<i32>,
14951    #[prost(int32, optional, tag="3")]
14952    pub status: ::core::option::Option<i32>,
14953}
14954#[derive(Clone, PartialEq, ::prost::Message)]
14955pub struct SchedWakingFtraceEvent {
14956    #[prost(string, optional, tag="1")]
14957    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14958    #[prost(int32, optional, tag="2")]
14959    pub pid: ::core::option::Option<i32>,
14960    #[prost(int32, optional, tag="3")]
14961    pub prio: ::core::option::Option<i32>,
14962    #[prost(int32, optional, tag="4")]
14963    pub success: ::core::option::Option<i32>,
14964    #[prost(int32, optional, tag="5")]
14965    pub target_cpu: ::core::option::Option<i32>,
14966}
14967#[derive(Clone, PartialEq, ::prost::Message)]
14968pub struct SchedWakeupNewFtraceEvent {
14969    #[prost(string, optional, tag="1")]
14970    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14971    #[prost(int32, optional, tag="2")]
14972    pub pid: ::core::option::Option<i32>,
14973    #[prost(int32, optional, tag="3")]
14974    pub prio: ::core::option::Option<i32>,
14975    #[prost(int32, optional, tag="4")]
14976    pub success: ::core::option::Option<i32>,
14977    #[prost(int32, optional, tag="5")]
14978    pub target_cpu: ::core::option::Option<i32>,
14979}
14980#[derive(Clone, PartialEq, ::prost::Message)]
14981pub struct SchedProcessExecFtraceEvent {
14982    #[prost(string, optional, tag="1")]
14983    pub filename: ::core::option::Option<::prost::alloc::string::String>,
14984    #[prost(int32, optional, tag="2")]
14985    pub pid: ::core::option::Option<i32>,
14986    #[prost(int32, optional, tag="3")]
14987    pub old_pid: ::core::option::Option<i32>,
14988}
14989#[derive(Clone, PartialEq, ::prost::Message)]
14990pub struct SchedProcessExitFtraceEvent {
14991    #[prost(string, optional, tag="1")]
14992    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14993    #[prost(int32, optional, tag="2")]
14994    pub pid: ::core::option::Option<i32>,
14995    #[prost(int32, optional, tag="3")]
14996    pub tgid: ::core::option::Option<i32>,
14997    #[prost(int32, optional, tag="4")]
14998    pub prio: ::core::option::Option<i32>,
14999}
15000#[derive(Clone, PartialEq, ::prost::Message)]
15001pub struct SchedProcessForkFtraceEvent {
15002    #[prost(string, optional, tag="1")]
15003    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
15004    #[prost(int32, optional, tag="2")]
15005    pub parent_pid: ::core::option::Option<i32>,
15006    #[prost(string, optional, tag="3")]
15007    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
15008    #[prost(int32, optional, tag="4")]
15009    pub child_pid: ::core::option::Option<i32>,
15010}
15011#[derive(Clone, PartialEq, ::prost::Message)]
15012pub struct SchedProcessFreeFtraceEvent {
15013    #[prost(string, optional, tag="1")]
15014    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15015    #[prost(int32, optional, tag="2")]
15016    pub pid: ::core::option::Option<i32>,
15017    #[prost(int32, optional, tag="3")]
15018    pub prio: ::core::option::Option<i32>,
15019}
15020#[derive(Clone, PartialEq, ::prost::Message)]
15021pub struct SchedProcessHangFtraceEvent {
15022    #[prost(string, optional, tag="1")]
15023    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15024    #[prost(int32, optional, tag="2")]
15025    pub pid: ::core::option::Option<i32>,
15026}
15027#[derive(Clone, PartialEq, ::prost::Message)]
15028pub struct SchedProcessWaitFtraceEvent {
15029    #[prost(string, optional, tag="1")]
15030    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15031    #[prost(int32, optional, tag="2")]
15032    pub pid: ::core::option::Option<i32>,
15033    #[prost(int32, optional, tag="3")]
15034    pub prio: ::core::option::Option<i32>,
15035}
15036#[derive(Clone, PartialEq, ::prost::Message)]
15037pub struct SchedPiSetprioFtraceEvent {
15038    #[prost(string, optional, tag="1")]
15039    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15040    #[prost(int32, optional, tag="2")]
15041    pub newprio: ::core::option::Option<i32>,
15042    #[prost(int32, optional, tag="3")]
15043    pub oldprio: ::core::option::Option<i32>,
15044    #[prost(int32, optional, tag="4")]
15045    pub pid: ::core::option::Option<i32>,
15046}
15047#[derive(Clone, PartialEq, ::prost::Message)]
15048pub struct SchedCpuUtilCfsFtraceEvent {
15049    #[prost(int32, optional, tag="1")]
15050    pub active: ::core::option::Option<i32>,
15051    #[prost(uint64, optional, tag="2")]
15052    pub capacity: ::core::option::Option<u64>,
15053    #[prost(uint64, optional, tag="3")]
15054    pub capacity_orig: ::core::option::Option<u64>,
15055    #[prost(uint32, optional, tag="4")]
15056    pub cpu: ::core::option::Option<u32>,
15057    #[prost(uint64, optional, tag="5")]
15058    pub cpu_importance: ::core::option::Option<u64>,
15059    #[prost(uint64, optional, tag="6")]
15060    pub cpu_util: ::core::option::Option<u64>,
15061    #[prost(uint32, optional, tag="7")]
15062    pub exit_lat: ::core::option::Option<u32>,
15063    #[prost(uint64, optional, tag="8")]
15064    pub group_capacity: ::core::option::Option<u64>,
15065    #[prost(uint32, optional, tag="9")]
15066    pub grp_overutilized: ::core::option::Option<u32>,
15067    #[prost(uint32, optional, tag="10")]
15068    pub idle_cpu: ::core::option::Option<u32>,
15069    #[prost(uint32, optional, tag="11")]
15070    pub nr_running: ::core::option::Option<u32>,
15071    #[prost(int64, optional, tag="12")]
15072    pub spare_cap: ::core::option::Option<i64>,
15073    #[prost(uint32, optional, tag="13")]
15074    pub task_fits: ::core::option::Option<u32>,
15075    #[prost(uint64, optional, tag="14")]
15076    pub wake_group_util: ::core::option::Option<u64>,
15077    #[prost(uint64, optional, tag="15")]
15078    pub wake_util: ::core::option::Option<u64>,
15079}
15080#[derive(Clone, PartialEq, ::prost::Message)]
15081pub struct SchedMigrateTaskFtraceEvent {
15082    #[prost(string, optional, tag="1")]
15083    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15084    #[prost(int32, optional, tag="2")]
15085    pub pid: ::core::option::Option<i32>,
15086    #[prost(int32, optional, tag="3")]
15087    pub prio: ::core::option::Option<i32>,
15088    #[prost(int32, optional, tag="4")]
15089    pub orig_cpu: ::core::option::Option<i32>,
15090    #[prost(int32, optional, tag="5")]
15091    pub dest_cpu: ::core::option::Option<i32>,
15092    #[prost(int32, optional, tag="6")]
15093    pub running: ::core::option::Option<i32>,
15094    #[prost(uint32, optional, tag="7")]
15095    pub load: ::core::option::Option<u32>,
15096}
15097#[derive(Clone, PartialEq, ::prost::Message)]
15098pub struct SchedWakeupTaskAttrFtraceEvent {
15099    #[prost(int32, optional, tag="1")]
15100    pub pid: ::core::option::Option<i32>,
15101    #[prost(uint64, optional, tag="2")]
15102    pub cpu_affinity: ::core::option::Option<u64>,
15103    #[prost(uint64, optional, tag="3")]
15104    pub task_util: ::core::option::Option<u64>,
15105    #[prost(uint64, optional, tag="4")]
15106    pub uclamp_min: ::core::option::Option<u64>,
15107    #[prost(uint64, optional, tag="5")]
15108    pub vruntime: ::core::option::Option<u64>,
15109}
15110// End of protos/perfetto/trace/ftrace/sched.proto
15111
15112// Begin of protos/perfetto/trace/ftrace/scm.proto
15113
15114#[derive(Clone, PartialEq, ::prost::Message)]
15115pub struct ScmCallStartFtraceEvent {
15116    #[prost(uint32, optional, tag="1")]
15117    pub arginfo: ::core::option::Option<u32>,
15118    #[prost(uint64, optional, tag="2")]
15119    pub x0: ::core::option::Option<u64>,
15120    #[prost(uint64, optional, tag="3")]
15121    pub x5: ::core::option::Option<u64>,
15122}
15123#[derive(Clone, PartialEq, ::prost::Message)]
15124pub struct ScmCallEndFtraceEvent {
15125}
15126// End of protos/perfetto/trace/ftrace/scm.proto
15127
15128// Begin of protos/perfetto/trace/ftrace/scsi.proto
15129
15130#[derive(Clone, PartialEq, ::prost::Message)]
15131pub struct ScsiDispatchCmdErrorFtraceEvent {
15132    #[prost(uint32, optional, tag="1")]
15133    pub host_no: ::core::option::Option<u32>,
15134    #[prost(uint32, optional, tag="2")]
15135    pub channel: ::core::option::Option<u32>,
15136    #[prost(uint32, optional, tag="3")]
15137    pub id: ::core::option::Option<u32>,
15138    #[prost(uint32, optional, tag="4")]
15139    pub lun: ::core::option::Option<u32>,
15140    #[prost(int32, optional, tag="5")]
15141    pub rtn: ::core::option::Option<i32>,
15142    #[prost(uint32, optional, tag="6")]
15143    pub opcode: ::core::option::Option<u32>,
15144    #[prost(uint32, optional, tag="7")]
15145    pub cmd_len: ::core::option::Option<u32>,
15146    #[prost(uint32, optional, tag="8")]
15147    pub data_sglen: ::core::option::Option<u32>,
15148    #[prost(uint32, optional, tag="9")]
15149    pub prot_sglen: ::core::option::Option<u32>,
15150    #[prost(uint32, optional, tag="10")]
15151    pub prot_op: ::core::option::Option<u32>,
15152    #[prost(string, optional, tag="11")]
15153    pub cmnd: ::core::option::Option<::prost::alloc::string::String>,
15154    #[prost(int32, optional, tag="12")]
15155    pub driver_tag: ::core::option::Option<i32>,
15156    #[prost(int32, optional, tag="13")]
15157    pub scheduler_tag: ::core::option::Option<i32>,
15158}
15159#[derive(Clone, PartialEq, ::prost::Message)]
15160pub struct ScsiDispatchCmdTimeoutFtraceEvent {
15161    #[prost(uint32, optional, tag="1")]
15162    pub host_no: ::core::option::Option<u32>,
15163    #[prost(uint32, optional, tag="2")]
15164    pub channel: ::core::option::Option<u32>,
15165    #[prost(uint32, optional, tag="3")]
15166    pub id: ::core::option::Option<u32>,
15167    #[prost(uint32, optional, tag="4")]
15168    pub lun: ::core::option::Option<u32>,
15169    #[prost(int32, optional, tag="5")]
15170    pub result: ::core::option::Option<i32>,
15171    #[prost(uint32, optional, tag="6")]
15172    pub opcode: ::core::option::Option<u32>,
15173    #[prost(uint32, optional, tag="7")]
15174    pub cmd_len: ::core::option::Option<u32>,
15175    #[prost(uint32, optional, tag="8")]
15176    pub data_sglen: ::core::option::Option<u32>,
15177    #[prost(uint32, optional, tag="9")]
15178    pub prot_sglen: ::core::option::Option<u32>,
15179    #[prost(uint32, optional, tag="10")]
15180    pub prot_op: ::core::option::Option<u32>,
15181    #[prost(string, optional, tag="11")]
15182    pub cmnd: ::core::option::Option<::prost::alloc::string::String>,
15183    #[prost(int32, optional, tag="12")]
15184    pub driver_tag: ::core::option::Option<i32>,
15185    #[prost(int32, optional, tag="13")]
15186    pub scheduler_tag: ::core::option::Option<i32>,
15187    #[prost(uint32, optional, tag="14")]
15188    pub sense_key: ::core::option::Option<u32>,
15189    #[prost(uint32, optional, tag="15")]
15190    pub asc: ::core::option::Option<u32>,
15191    #[prost(uint32, optional, tag="16")]
15192    pub ascq: ::core::option::Option<u32>,
15193}
15194#[derive(Clone, PartialEq, ::prost::Message)]
15195pub struct ScsiEhWakeupFtraceEvent {
15196    #[prost(uint32, optional, tag="1")]
15197    pub host_no: ::core::option::Option<u32>,
15198}
15199// End of protos/perfetto/trace/ftrace/scsi.proto
15200
15201// Begin of protos/perfetto/trace/ftrace/sde.proto
15202
15203#[derive(Clone, PartialEq, ::prost::Message)]
15204pub struct SdeTracingMarkWriteFtraceEvent {
15205    #[prost(int32, optional, tag="1")]
15206    pub pid: ::core::option::Option<i32>,
15207    #[prost(string, optional, tag="2")]
15208    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15209    #[prost(uint32, optional, tag="3")]
15210    pub trace_type: ::core::option::Option<u32>,
15211    #[prost(int32, optional, tag="4")]
15212    pub value: ::core::option::Option<i32>,
15213    #[prost(uint32, optional, tag="5")]
15214    pub trace_begin: ::core::option::Option<u32>,
15215}
15216#[derive(Clone, PartialEq, ::prost::Message)]
15217pub struct SdeSdeEvtlogFtraceEvent {
15218    #[prost(string, optional, tag="1")]
15219    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
15220    #[prost(int32, optional, tag="2")]
15221    pub pid: ::core::option::Option<i32>,
15222    #[prost(uint32, optional, tag="3")]
15223    pub tag_id: ::core::option::Option<u32>,
15224}
15225#[derive(Clone, PartialEq, ::prost::Message)]
15226pub struct SdeSdePerfCalcCrtcFtraceEvent {
15227    #[prost(uint64, optional, tag="1")]
15228    pub bw_ctl_ebi: ::core::option::Option<u64>,
15229    #[prost(uint64, optional, tag="2")]
15230    pub bw_ctl_llcc: ::core::option::Option<u64>,
15231    #[prost(uint64, optional, tag="3")]
15232    pub bw_ctl_mnoc: ::core::option::Option<u64>,
15233    #[prost(uint32, optional, tag="4")]
15234    pub core_clk_rate: ::core::option::Option<u32>,
15235    #[prost(uint32, optional, tag="5")]
15236    pub crtc: ::core::option::Option<u32>,
15237    #[prost(uint64, optional, tag="6")]
15238    pub ib_ebi: ::core::option::Option<u64>,
15239    #[prost(uint64, optional, tag="7")]
15240    pub ib_llcc: ::core::option::Option<u64>,
15241    #[prost(uint64, optional, tag="8")]
15242    pub ib_mnoc: ::core::option::Option<u64>,
15243}
15244#[derive(Clone, PartialEq, ::prost::Message)]
15245pub struct SdeSdePerfCrtcUpdateFtraceEvent {
15246    #[prost(uint64, optional, tag="1")]
15247    pub bw_ctl_ebi: ::core::option::Option<u64>,
15248    #[prost(uint64, optional, tag="2")]
15249    pub bw_ctl_llcc: ::core::option::Option<u64>,
15250    #[prost(uint64, optional, tag="3")]
15251    pub bw_ctl_mnoc: ::core::option::Option<u64>,
15252    #[prost(uint32, optional, tag="4")]
15253    pub core_clk_rate: ::core::option::Option<u32>,
15254    #[prost(uint32, optional, tag="5")]
15255    pub crtc: ::core::option::Option<u32>,
15256    #[prost(int32, optional, tag="6")]
15257    pub params: ::core::option::Option<i32>,
15258    #[prost(uint64, optional, tag="7")]
15259    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
15260    #[prost(uint64, optional, tag="8")]
15261    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
15262    #[prost(uint64, optional, tag="9")]
15263    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
15264    #[prost(uint32, optional, tag="10")]
15265    pub stop_req: ::core::option::Option<u32>,
15266    #[prost(uint32, optional, tag="11")]
15267    pub update_bus: ::core::option::Option<u32>,
15268    #[prost(uint32, optional, tag="12")]
15269    pub update_clk: ::core::option::Option<u32>,
15270}
15271#[derive(Clone, PartialEq, ::prost::Message)]
15272pub struct SdeSdePerfSetQosLutsFtraceEvent {
15273    #[prost(uint32, optional, tag="1")]
15274    pub fl: ::core::option::Option<u32>,
15275    #[prost(uint32, optional, tag="2")]
15276    pub fmt: ::core::option::Option<u32>,
15277    #[prost(uint64, optional, tag="3")]
15278    pub lut: ::core::option::Option<u64>,
15279    #[prost(uint32, optional, tag="4")]
15280    pub lut_usage: ::core::option::Option<u32>,
15281    #[prost(uint32, optional, tag="5")]
15282    pub pnum: ::core::option::Option<u32>,
15283    #[prost(uint32, optional, tag="6")]
15284    pub rt: ::core::option::Option<u32>,
15285}
15286#[derive(Clone, PartialEq, ::prost::Message)]
15287pub struct SdeSdePerfUpdateBusFtraceEvent {
15288    #[prost(uint64, optional, tag="1")]
15289    pub ab_quota: ::core::option::Option<u64>,
15290    #[prost(uint32, optional, tag="2")]
15291    pub bus_id: ::core::option::Option<u32>,
15292    #[prost(int32, optional, tag="3")]
15293    pub client: ::core::option::Option<i32>,
15294    #[prost(uint64, optional, tag="4")]
15295    pub ib_quota: ::core::option::Option<u64>,
15296}
15297// End of protos/perfetto/trace/ftrace/sde.proto
15298
15299// Begin of protos/perfetto/trace/ftrace/signal.proto
15300
15301#[derive(Clone, PartialEq, ::prost::Message)]
15302pub struct SignalDeliverFtraceEvent {
15303    #[prost(int32, optional, tag="1")]
15304    pub code: ::core::option::Option<i32>,
15305    #[prost(uint64, optional, tag="2")]
15306    pub sa_flags: ::core::option::Option<u64>,
15307    #[prost(int32, optional, tag="3")]
15308    pub sig: ::core::option::Option<i32>,
15309}
15310#[derive(Clone, PartialEq, ::prost::Message)]
15311pub struct SignalGenerateFtraceEvent {
15312    #[prost(int32, optional, tag="1")]
15313    pub code: ::core::option::Option<i32>,
15314    #[prost(string, optional, tag="2")]
15315    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15316    #[prost(int32, optional, tag="3")]
15317    pub group: ::core::option::Option<i32>,
15318    #[prost(int32, optional, tag="4")]
15319    pub pid: ::core::option::Option<i32>,
15320    #[prost(int32, optional, tag="5")]
15321    pub result: ::core::option::Option<i32>,
15322    #[prost(int32, optional, tag="6")]
15323    pub sig: ::core::option::Option<i32>,
15324}
15325// End of protos/perfetto/trace/ftrace/signal.proto
15326
15327// Begin of protos/perfetto/trace/ftrace/skb.proto
15328
15329#[derive(Clone, PartialEq, ::prost::Message)]
15330pub struct KfreeSkbFtraceEvent {
15331    #[prost(uint64, optional, tag="1")]
15332    pub location: ::core::option::Option<u64>,
15333    #[prost(uint32, optional, tag="2")]
15334    pub protocol: ::core::option::Option<u32>,
15335    #[prost(uint64, optional, tag="3")]
15336    pub skbaddr: ::core::option::Option<u64>,
15337}
15338// End of protos/perfetto/trace/ftrace/skb.proto
15339
15340// Begin of protos/perfetto/trace/ftrace/sock.proto
15341
15342#[derive(Clone, PartialEq, ::prost::Message)]
15343pub struct InetSockSetStateFtraceEvent {
15344    #[prost(uint32, optional, tag="1")]
15345    pub daddr: ::core::option::Option<u32>,
15346    #[prost(uint32, optional, tag="2")]
15347    pub dport: ::core::option::Option<u32>,
15348    #[prost(uint32, optional, tag="3")]
15349    pub family: ::core::option::Option<u32>,
15350    #[prost(int32, optional, tag="4")]
15351    pub newstate: ::core::option::Option<i32>,
15352    #[prost(int32, optional, tag="5")]
15353    pub oldstate: ::core::option::Option<i32>,
15354    #[prost(uint32, optional, tag="6")]
15355    pub protocol: ::core::option::Option<u32>,
15356    #[prost(uint32, optional, tag="7")]
15357    pub saddr: ::core::option::Option<u32>,
15358    #[prost(uint64, optional, tag="8")]
15359    pub skaddr: ::core::option::Option<u64>,
15360    #[prost(uint32, optional, tag="9")]
15361    pub sport: ::core::option::Option<u32>,
15362}
15363// End of protos/perfetto/trace/ftrace/sock.proto
15364
15365// Begin of protos/perfetto/trace/ftrace/sync.proto
15366
15367#[derive(Clone, PartialEq, ::prost::Message)]
15368pub struct SyncPtFtraceEvent {
15369    #[prost(string, optional, tag="1")]
15370    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
15371    #[prost(string, optional, tag="2")]
15372    pub value: ::core::option::Option<::prost::alloc::string::String>,
15373}
15374#[derive(Clone, PartialEq, ::prost::Message)]
15375pub struct SyncTimelineFtraceEvent {
15376    #[prost(string, optional, tag="1")]
15377    pub name: ::core::option::Option<::prost::alloc::string::String>,
15378    #[prost(string, optional, tag="2")]
15379    pub value: ::core::option::Option<::prost::alloc::string::String>,
15380}
15381#[derive(Clone, PartialEq, ::prost::Message)]
15382pub struct SyncWaitFtraceEvent {
15383    #[prost(string, optional, tag="1")]
15384    pub name: ::core::option::Option<::prost::alloc::string::String>,
15385    #[prost(int32, optional, tag="2")]
15386    pub status: ::core::option::Option<i32>,
15387    #[prost(uint32, optional, tag="3")]
15388    pub begin: ::core::option::Option<u32>,
15389}
15390// End of protos/perfetto/trace/ftrace/sync.proto
15391
15392// Begin of protos/perfetto/trace/ftrace/synthetic.proto
15393
15394#[derive(Clone, PartialEq, ::prost::Message)]
15395pub struct RssStatThrottledFtraceEvent {
15396    #[prost(uint32, optional, tag="1")]
15397    pub curr: ::core::option::Option<u32>,
15398    #[prost(int32, optional, tag="2")]
15399    pub member: ::core::option::Option<i32>,
15400    #[prost(uint32, optional, tag="3")]
15401    pub mm_id: ::core::option::Option<u32>,
15402    #[prost(int64, optional, tag="4")]
15403    pub size: ::core::option::Option<i64>,
15404}
15405#[derive(Clone, PartialEq, ::prost::Message)]
15406pub struct SuspendResumeMinimalFtraceEvent {
15407    #[prost(uint32, optional, tag="1")]
15408    pub start: ::core::option::Option<u32>,
15409}
15410// End of protos/perfetto/trace/ftrace/synthetic.proto
15411
15412// Begin of protos/perfetto/trace/ftrace/systrace.proto
15413
15414#[derive(Clone, PartialEq, ::prost::Message)]
15415pub struct ZeroFtraceEvent {
15416    #[prost(int32, optional, tag="1")]
15417    pub flag: ::core::option::Option<i32>,
15418    #[prost(string, optional, tag="2")]
15419    pub name: ::core::option::Option<::prost::alloc::string::String>,
15420    #[prost(int32, optional, tag="3")]
15421    pub pid: ::core::option::Option<i32>,
15422    #[prost(int64, optional, tag="4")]
15423    pub value: ::core::option::Option<i64>,
15424}
15425// End of protos/perfetto/trace/ftrace/systrace.proto
15426
15427// Begin of protos/perfetto/trace/ftrace/task.proto
15428
15429#[derive(Clone, PartialEq, ::prost::Message)]
15430pub struct TaskNewtaskFtraceEvent {
15431    #[prost(int32, optional, tag="1")]
15432    pub pid: ::core::option::Option<i32>,
15433    #[prost(string, optional, tag="2")]
15434    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15435    #[prost(uint64, optional, tag="3")]
15436    pub clone_flags: ::core::option::Option<u64>,
15437    #[prost(int32, optional, tag="4")]
15438    pub oom_score_adj: ::core::option::Option<i32>,
15439}
15440#[derive(Clone, PartialEq, ::prost::Message)]
15441pub struct TaskRenameFtraceEvent {
15442    #[prost(int32, optional, tag="1")]
15443    pub pid: ::core::option::Option<i32>,
15444    #[prost(string, optional, tag="2")]
15445    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
15446    #[prost(string, optional, tag="3")]
15447    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
15448    #[prost(int32, optional, tag="4")]
15449    pub oom_score_adj: ::core::option::Option<i32>,
15450}
15451// End of protos/perfetto/trace/ftrace/task.proto
15452
15453// Begin of protos/perfetto/trace/ftrace/tcp.proto
15454
15455#[derive(Clone, PartialEq, ::prost::Message)]
15456pub struct TcpRetransmitSkbFtraceEvent {
15457    #[prost(uint32, optional, tag="1")]
15458    pub daddr: ::core::option::Option<u32>,
15459    #[prost(uint32, optional, tag="2")]
15460    pub dport: ::core::option::Option<u32>,
15461    #[prost(uint32, optional, tag="3")]
15462    pub saddr: ::core::option::Option<u32>,
15463    #[prost(uint64, optional, tag="4")]
15464    pub skaddr: ::core::option::Option<u64>,
15465    #[prost(uint64, optional, tag="5")]
15466    pub skbaddr: ::core::option::Option<u64>,
15467    #[prost(uint32, optional, tag="6")]
15468    pub sport: ::core::option::Option<u32>,
15469    #[prost(int32, optional, tag="7")]
15470    pub state: ::core::option::Option<i32>,
15471}
15472// End of protos/perfetto/trace/ftrace/tcp.proto
15473
15474// Begin of protos/perfetto/trace/ftrace/thermal.proto
15475
15476#[derive(Clone, PartialEq, ::prost::Message)]
15477pub struct ThermalTemperatureFtraceEvent {
15478    #[prost(int32, optional, tag="1")]
15479    pub id: ::core::option::Option<i32>,
15480    #[prost(int32, optional, tag="2")]
15481    pub temp: ::core::option::Option<i32>,
15482    #[prost(int32, optional, tag="3")]
15483    pub temp_prev: ::core::option::Option<i32>,
15484    #[prost(string, optional, tag="4")]
15485    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
15486}
15487#[derive(Clone, PartialEq, ::prost::Message)]
15488pub struct CdevUpdateFtraceEvent {
15489    #[prost(uint64, optional, tag="1")]
15490    pub target: ::core::option::Option<u64>,
15491    #[prost(string, optional, tag="2")]
15492    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
15493}
15494// End of protos/perfetto/trace/ftrace/thermal.proto
15495
15496// Begin of protos/perfetto/trace/ftrace/thermal_exynos.proto
15497
15498#[derive(Clone, PartialEq, ::prost::Message)]
15499pub struct ThermalExynosAcpmBulkFtraceEvent {
15500    #[prost(uint32, optional, tag="1")]
15501    pub tz_id: ::core::option::Option<u32>,
15502    #[prost(uint32, optional, tag="2")]
15503    pub current_temp: ::core::option::Option<u32>,
15504    #[prost(uint32, optional, tag="3")]
15505    pub ctrl_temp: ::core::option::Option<u32>,
15506    #[prost(uint32, optional, tag="4")]
15507    pub cdev_state: ::core::option::Option<u32>,
15508    #[prost(int32, optional, tag="5")]
15509    pub pid_et_p: ::core::option::Option<i32>,
15510    #[prost(int32, optional, tag="6")]
15511    pub pid_power_range: ::core::option::Option<i32>,
15512    #[prost(int32, optional, tag="7")]
15513    pub pid_p: ::core::option::Option<i32>,
15514    #[prost(int32, optional, tag="8")]
15515    pub pid_i: ::core::option::Option<i32>,
15516    #[prost(int32, optional, tag="9")]
15517    pub k_p: ::core::option::Option<i32>,
15518    #[prost(int32, optional, tag="10")]
15519    pub k_i: ::core::option::Option<i32>,
15520    #[prost(uint64, optional, tag="11")]
15521    pub timestamp: ::core::option::Option<u64>,
15522}
15523#[derive(Clone, PartialEq, ::prost::Message)]
15524pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
15525    #[prost(int32, optional, tag="1")]
15526    pub tz_id: ::core::option::Option<i32>,
15527    #[prost(uint32, optional, tag="2")]
15528    pub current_temp: ::core::option::Option<u32>,
15529    #[prost(uint32, optional, tag="3")]
15530    pub ctrl_temp: ::core::option::Option<u32>,
15531    #[prost(uint32, optional, tag="4")]
15532    pub cdev_state: ::core::option::Option<u32>,
15533    #[prost(int32, optional, tag="5")]
15534    pub pid_et_p: ::core::option::Option<i32>,
15535    #[prost(int32, optional, tag="6")]
15536    pub k_p: ::core::option::Option<i32>,
15537    #[prost(int32, optional, tag="7")]
15538    pub k_i: ::core::option::Option<i32>,
15539}
15540// End of protos/perfetto/trace/ftrace/thermal_exynos.proto
15541
15542// Begin of protos/perfetto/trace/ftrace/timer.proto
15543
15544#[derive(Clone, PartialEq, ::prost::Message)]
15545pub struct HrtimerStartFtraceEvent {
15546    #[prost(uint64, optional, tag="1")]
15547    pub hrtimer: ::core::option::Option<u64>,
15548    #[prost(uint64, optional, tag="2")]
15549    pub function: ::core::option::Option<u64>,
15550    #[prost(int64, optional, tag="3")]
15551    pub expires: ::core::option::Option<i64>,
15552    #[prost(int64, optional, tag="4")]
15553    pub softexpires: ::core::option::Option<i64>,
15554    #[prost(uint32, optional, tag="5")]
15555    pub mode: ::core::option::Option<u32>,
15556}
15557#[derive(Clone, PartialEq, ::prost::Message)]
15558pub struct HrtimerCancelFtraceEvent {
15559    #[prost(uint64, optional, tag="1")]
15560    pub hrtimer: ::core::option::Option<u64>,
15561}
15562#[derive(Clone, PartialEq, ::prost::Message)]
15563pub struct HrtimerExpireEntryFtraceEvent {
15564    #[prost(uint64, optional, tag="1")]
15565    pub hrtimer: ::core::option::Option<u64>,
15566    #[prost(int64, optional, tag="2")]
15567    pub now: ::core::option::Option<i64>,
15568    #[prost(uint64, optional, tag="3")]
15569    pub function: ::core::option::Option<u64>,
15570}
15571#[derive(Clone, PartialEq, ::prost::Message)]
15572pub struct HrtimerExpireExitFtraceEvent {
15573    #[prost(uint64, optional, tag="1")]
15574    pub hrtimer: ::core::option::Option<u64>,
15575}
15576#[derive(Clone, PartialEq, ::prost::Message)]
15577pub struct TimerStartFtraceEvent {
15578    #[prost(uint64, optional, tag="1")]
15579    pub timer: ::core::option::Option<u64>,
15580    #[prost(uint64, optional, tag="2")]
15581    pub function: ::core::option::Option<u64>,
15582    #[prost(uint64, optional, tag="3")]
15583    pub expires: ::core::option::Option<u64>,
15584    #[prost(uint64, optional, tag="4")]
15585    pub now: ::core::option::Option<u64>,
15586    #[prost(uint32, optional, tag="5")]
15587    pub deferrable: ::core::option::Option<u32>,
15588    #[prost(uint32, optional, tag="6")]
15589    pub flags: ::core::option::Option<u32>,
15590    #[prost(uint64, optional, tag="7")]
15591    pub bucket_expiry: ::core::option::Option<u64>,
15592}
15593#[derive(Clone, PartialEq, ::prost::Message)]
15594pub struct TimerCancelFtraceEvent {
15595    #[prost(uint64, optional, tag="1")]
15596    pub timer: ::core::option::Option<u64>,
15597}
15598#[derive(Clone, PartialEq, ::prost::Message)]
15599pub struct TimerExpireEntryFtraceEvent {
15600    #[prost(uint64, optional, tag="1")]
15601    pub timer: ::core::option::Option<u64>,
15602    #[prost(uint64, optional, tag="2")]
15603    pub now: ::core::option::Option<u64>,
15604    #[prost(uint64, optional, tag="3")]
15605    pub function: ::core::option::Option<u64>,
15606    #[prost(uint64, optional, tag="4")]
15607    pub baseclk: ::core::option::Option<u64>,
15608}
15609#[derive(Clone, PartialEq, ::prost::Message)]
15610pub struct TimerExpireExitFtraceEvent {
15611    #[prost(uint64, optional, tag="1")]
15612    pub timer: ::core::option::Option<u64>,
15613}
15614// End of protos/perfetto/trace/ftrace/timer.proto
15615
15616// Begin of protos/perfetto/trace/ftrace/trusty.proto
15617
15618#[derive(Clone, PartialEq, ::prost::Message)]
15619pub struct TrustySmcFtraceEvent {
15620    #[prost(uint64, optional, tag="1")]
15621    pub r0: ::core::option::Option<u64>,
15622    #[prost(uint64, optional, tag="2")]
15623    pub r1: ::core::option::Option<u64>,
15624    #[prost(uint64, optional, tag="3")]
15625    pub r2: ::core::option::Option<u64>,
15626    #[prost(uint64, optional, tag="4")]
15627    pub r3: ::core::option::Option<u64>,
15628}
15629#[derive(Clone, PartialEq, ::prost::Message)]
15630pub struct TrustySmcDoneFtraceEvent {
15631    #[prost(uint64, optional, tag="1")]
15632    pub ret: ::core::option::Option<u64>,
15633}
15634#[derive(Clone, PartialEq, ::prost::Message)]
15635pub struct TrustyStdCall32FtraceEvent {
15636    #[prost(uint64, optional, tag="1")]
15637    pub r0: ::core::option::Option<u64>,
15638    #[prost(uint64, optional, tag="2")]
15639    pub r1: ::core::option::Option<u64>,
15640    #[prost(uint64, optional, tag="3")]
15641    pub r2: ::core::option::Option<u64>,
15642    #[prost(uint64, optional, tag="4")]
15643    pub r3: ::core::option::Option<u64>,
15644}
15645#[derive(Clone, PartialEq, ::prost::Message)]
15646pub struct TrustyStdCall32DoneFtraceEvent {
15647    #[prost(int64, optional, tag="1")]
15648    pub ret: ::core::option::Option<i64>,
15649}
15650#[derive(Clone, PartialEq, ::prost::Message)]
15651pub struct TrustyShareMemoryFtraceEvent {
15652    #[prost(uint64, optional, tag="1")]
15653    pub len: ::core::option::Option<u64>,
15654    #[prost(uint32, optional, tag="2")]
15655    pub lend: ::core::option::Option<u32>,
15656    #[prost(uint32, optional, tag="3")]
15657    pub nents: ::core::option::Option<u32>,
15658}
15659#[derive(Clone, PartialEq, ::prost::Message)]
15660pub struct TrustyShareMemoryDoneFtraceEvent {
15661    #[prost(uint64, optional, tag="1")]
15662    pub handle: ::core::option::Option<u64>,
15663    #[prost(uint64, optional, tag="2")]
15664    pub len: ::core::option::Option<u64>,
15665    #[prost(uint32, optional, tag="3")]
15666    pub lend: ::core::option::Option<u32>,
15667    #[prost(uint32, optional, tag="4")]
15668    pub nents: ::core::option::Option<u32>,
15669    #[prost(int32, optional, tag="5")]
15670    pub ret: ::core::option::Option<i32>,
15671}
15672#[derive(Clone, PartialEq, ::prost::Message)]
15673pub struct TrustyReclaimMemoryFtraceEvent {
15674    #[prost(uint64, optional, tag="1")]
15675    pub id: ::core::option::Option<u64>,
15676}
15677#[derive(Clone, PartialEq, ::prost::Message)]
15678pub struct TrustyReclaimMemoryDoneFtraceEvent {
15679    #[prost(uint64, optional, tag="1")]
15680    pub id: ::core::option::Option<u64>,
15681    #[prost(int32, optional, tag="2")]
15682    pub ret: ::core::option::Option<i32>,
15683}
15684#[derive(Clone, PartialEq, ::prost::Message)]
15685pub struct TrustyIrqFtraceEvent {
15686    #[prost(int32, optional, tag="1")]
15687    pub irq: ::core::option::Option<i32>,
15688}
15689#[derive(Clone, PartialEq, ::prost::Message)]
15690pub struct TrustyIpcHandleEventFtraceEvent {
15691    #[prost(uint32, optional, tag="1")]
15692    pub chan: ::core::option::Option<u32>,
15693    #[prost(uint32, optional, tag="2")]
15694    pub event_id: ::core::option::Option<u32>,
15695    #[prost(string, optional, tag="3")]
15696    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15697}
15698#[derive(Clone, PartialEq, ::prost::Message)]
15699pub struct TrustyIpcConnectFtraceEvent {
15700    #[prost(uint32, optional, tag="1")]
15701    pub chan: ::core::option::Option<u32>,
15702    #[prost(string, optional, tag="2")]
15703    pub port: ::core::option::Option<::prost::alloc::string::String>,
15704    #[prost(int32, optional, tag="3")]
15705    pub state: ::core::option::Option<i32>,
15706}
15707#[derive(Clone, PartialEq, ::prost::Message)]
15708pub struct TrustyIpcConnectEndFtraceEvent {
15709    #[prost(uint32, optional, tag="1")]
15710    pub chan: ::core::option::Option<u32>,
15711    #[prost(int32, optional, tag="2")]
15712    pub err: ::core::option::Option<i32>,
15713    #[prost(int32, optional, tag="3")]
15714    pub state: ::core::option::Option<i32>,
15715}
15716#[derive(Clone, PartialEq, ::prost::Message)]
15717pub struct TrustyIpcWriteFtraceEvent {
15718    #[prost(uint64, optional, tag="1")]
15719    pub buf_id: ::core::option::Option<u64>,
15720    #[prost(uint32, optional, tag="2")]
15721    pub chan: ::core::option::Option<u32>,
15722    #[prost(int32, optional, tag="3")]
15723    pub kind_shm: ::core::option::Option<i32>,
15724    #[prost(int32, optional, tag="4")]
15725    pub len_or_err: ::core::option::Option<i32>,
15726    #[prost(uint64, optional, tag="5")]
15727    pub shm_cnt: ::core::option::Option<u64>,
15728    #[prost(string, optional, tag="6")]
15729    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15730}
15731#[derive(Clone, PartialEq, ::prost::Message)]
15732pub struct TrustyIpcPollFtraceEvent {
15733    #[prost(uint32, optional, tag="1")]
15734    pub chan: ::core::option::Option<u32>,
15735    #[prost(uint32, optional, tag="2")]
15736    pub poll_mask: ::core::option::Option<u32>,
15737    #[prost(string, optional, tag="3")]
15738    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15739}
15740#[derive(Clone, PartialEq, ::prost::Message)]
15741pub struct TrustyIpcReadFtraceEvent {
15742    #[prost(uint32, optional, tag="1")]
15743    pub chan: ::core::option::Option<u32>,
15744    #[prost(string, optional, tag="2")]
15745    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15746}
15747#[derive(Clone, PartialEq, ::prost::Message)]
15748pub struct TrustyIpcReadEndFtraceEvent {
15749    #[prost(uint64, optional, tag="1")]
15750    pub buf_id: ::core::option::Option<u64>,
15751    #[prost(uint32, optional, tag="2")]
15752    pub chan: ::core::option::Option<u32>,
15753    #[prost(int32, optional, tag="3")]
15754    pub len_or_err: ::core::option::Option<i32>,
15755    #[prost(uint64, optional, tag="4")]
15756    pub shm_cnt: ::core::option::Option<u64>,
15757    #[prost(string, optional, tag="5")]
15758    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15759}
15760#[derive(Clone, PartialEq, ::prost::Message)]
15761pub struct TrustyIpcRxFtraceEvent {
15762    #[prost(uint64, optional, tag="1")]
15763    pub buf_id: ::core::option::Option<u64>,
15764    #[prost(uint32, optional, tag="2")]
15765    pub chan: ::core::option::Option<u32>,
15766    #[prost(string, optional, tag="3")]
15767    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15768}
15769#[derive(Clone, PartialEq, ::prost::Message)]
15770pub struct TrustyEnqueueNopFtraceEvent {
15771    #[prost(uint32, optional, tag="1")]
15772    pub arg1: ::core::option::Option<u32>,
15773    #[prost(uint32, optional, tag="2")]
15774    pub arg2: ::core::option::Option<u32>,
15775    #[prost(uint32, optional, tag="3")]
15776    pub arg3: ::core::option::Option<u32>,
15777}
15778// End of protos/perfetto/trace/ftrace/trusty.proto
15779
15780// Begin of protos/perfetto/trace/ftrace/ufs.proto
15781
15782#[derive(Clone, PartialEq, ::prost::Message)]
15783pub struct UfshcdCommandFtraceEvent {
15784    #[prost(string, optional, tag="1")]
15785    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
15786    #[prost(uint32, optional, tag="2")]
15787    pub doorbell: ::core::option::Option<u32>,
15788    #[prost(uint32, optional, tag="3")]
15789    pub intr: ::core::option::Option<u32>,
15790    #[prost(uint64, optional, tag="4")]
15791    pub lba: ::core::option::Option<u64>,
15792    #[prost(uint32, optional, tag="5")]
15793    pub opcode: ::core::option::Option<u32>,
15794    #[prost(string, optional, tag="6")]
15795    pub str: ::core::option::Option<::prost::alloc::string::String>,
15796    #[prost(uint32, optional, tag="7")]
15797    pub tag: ::core::option::Option<u32>,
15798    #[prost(int32, optional, tag="8")]
15799    pub transfer_len: ::core::option::Option<i32>,
15800    #[prost(uint32, optional, tag="9")]
15801    pub group_id: ::core::option::Option<u32>,
15802    #[prost(uint32, optional, tag="10")]
15803    pub str_t: ::core::option::Option<u32>,
15804}
15805#[derive(Clone, PartialEq, ::prost::Message)]
15806pub struct UfshcdClkGatingFtraceEvent {
15807    #[prost(string, optional, tag="1")]
15808    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
15809    #[prost(int32, optional, tag="2")]
15810    pub state: ::core::option::Option<i32>,
15811}
15812// End of protos/perfetto/trace/ftrace/ufs.proto
15813
15814// Begin of protos/perfetto/trace/ftrace/v4l2.proto
15815
15816#[derive(Clone, PartialEq, ::prost::Message)]
15817pub struct V4l2QbufFtraceEvent {
15818    #[prost(uint32, optional, tag="1")]
15819    pub bytesused: ::core::option::Option<u32>,
15820    #[prost(uint32, optional, tag="2")]
15821    pub field: ::core::option::Option<u32>,
15822    #[prost(uint32, optional, tag="3")]
15823    pub flags: ::core::option::Option<u32>,
15824    #[prost(uint32, optional, tag="4")]
15825    pub index: ::core::option::Option<u32>,
15826    #[prost(int32, optional, tag="5")]
15827    pub minor: ::core::option::Option<i32>,
15828    #[prost(uint32, optional, tag="6")]
15829    pub sequence: ::core::option::Option<u32>,
15830    #[prost(uint32, optional, tag="7")]
15831    pub timecode_flags: ::core::option::Option<u32>,
15832    #[prost(uint32, optional, tag="8")]
15833    pub timecode_frames: ::core::option::Option<u32>,
15834    #[prost(uint32, optional, tag="9")]
15835    pub timecode_hours: ::core::option::Option<u32>,
15836    #[prost(uint32, optional, tag="10")]
15837    pub timecode_minutes: ::core::option::Option<u32>,
15838    #[prost(uint32, optional, tag="11")]
15839    pub timecode_seconds: ::core::option::Option<u32>,
15840    #[prost(uint32, optional, tag="12")]
15841    pub timecode_type: ::core::option::Option<u32>,
15842    #[prost(uint32, optional, tag="13")]
15843    pub timecode_userbits0: ::core::option::Option<u32>,
15844    #[prost(uint32, optional, tag="14")]
15845    pub timecode_userbits1: ::core::option::Option<u32>,
15846    #[prost(uint32, optional, tag="15")]
15847    pub timecode_userbits2: ::core::option::Option<u32>,
15848    #[prost(uint32, optional, tag="16")]
15849    pub timecode_userbits3: ::core::option::Option<u32>,
15850    #[prost(int64, optional, tag="17")]
15851    pub timestamp: ::core::option::Option<i64>,
15852    #[prost(uint32, optional, tag="18")]
15853    pub r#type: ::core::option::Option<u32>,
15854}
15855#[derive(Clone, PartialEq, ::prost::Message)]
15856pub struct V4l2DqbufFtraceEvent {
15857    #[prost(uint32, optional, tag="1")]
15858    pub bytesused: ::core::option::Option<u32>,
15859    #[prost(uint32, optional, tag="2")]
15860    pub field: ::core::option::Option<u32>,
15861    #[prost(uint32, optional, tag="3")]
15862    pub flags: ::core::option::Option<u32>,
15863    #[prost(uint32, optional, tag="4")]
15864    pub index: ::core::option::Option<u32>,
15865    #[prost(int32, optional, tag="5")]
15866    pub minor: ::core::option::Option<i32>,
15867    #[prost(uint32, optional, tag="6")]
15868    pub sequence: ::core::option::Option<u32>,
15869    #[prost(uint32, optional, tag="7")]
15870    pub timecode_flags: ::core::option::Option<u32>,
15871    #[prost(uint32, optional, tag="8")]
15872    pub timecode_frames: ::core::option::Option<u32>,
15873    #[prost(uint32, optional, tag="9")]
15874    pub timecode_hours: ::core::option::Option<u32>,
15875    #[prost(uint32, optional, tag="10")]
15876    pub timecode_minutes: ::core::option::Option<u32>,
15877    #[prost(uint32, optional, tag="11")]
15878    pub timecode_seconds: ::core::option::Option<u32>,
15879    #[prost(uint32, optional, tag="12")]
15880    pub timecode_type: ::core::option::Option<u32>,
15881    #[prost(uint32, optional, tag="13")]
15882    pub timecode_userbits0: ::core::option::Option<u32>,
15883    #[prost(uint32, optional, tag="14")]
15884    pub timecode_userbits1: ::core::option::Option<u32>,
15885    #[prost(uint32, optional, tag="15")]
15886    pub timecode_userbits2: ::core::option::Option<u32>,
15887    #[prost(uint32, optional, tag="16")]
15888    pub timecode_userbits3: ::core::option::Option<u32>,
15889    #[prost(int64, optional, tag="17")]
15890    pub timestamp: ::core::option::Option<i64>,
15891    #[prost(uint32, optional, tag="18")]
15892    pub r#type: ::core::option::Option<u32>,
15893}
15894#[derive(Clone, PartialEq, ::prost::Message)]
15895pub struct Vb2V4l2BufQueueFtraceEvent {
15896    #[prost(uint32, optional, tag="1")]
15897    pub field: ::core::option::Option<u32>,
15898    #[prost(uint32, optional, tag="2")]
15899    pub flags: ::core::option::Option<u32>,
15900    #[prost(int32, optional, tag="3")]
15901    pub minor: ::core::option::Option<i32>,
15902    #[prost(uint32, optional, tag="4")]
15903    pub sequence: ::core::option::Option<u32>,
15904    #[prost(uint32, optional, tag="5")]
15905    pub timecode_flags: ::core::option::Option<u32>,
15906    #[prost(uint32, optional, tag="6")]
15907    pub timecode_frames: ::core::option::Option<u32>,
15908    #[prost(uint32, optional, tag="7")]
15909    pub timecode_hours: ::core::option::Option<u32>,
15910    #[prost(uint32, optional, tag="8")]
15911    pub timecode_minutes: ::core::option::Option<u32>,
15912    #[prost(uint32, optional, tag="9")]
15913    pub timecode_seconds: ::core::option::Option<u32>,
15914    #[prost(uint32, optional, tag="10")]
15915    pub timecode_type: ::core::option::Option<u32>,
15916    #[prost(uint32, optional, tag="11")]
15917    pub timecode_userbits0: ::core::option::Option<u32>,
15918    #[prost(uint32, optional, tag="12")]
15919    pub timecode_userbits1: ::core::option::Option<u32>,
15920    #[prost(uint32, optional, tag="13")]
15921    pub timecode_userbits2: ::core::option::Option<u32>,
15922    #[prost(uint32, optional, tag="14")]
15923    pub timecode_userbits3: ::core::option::Option<u32>,
15924    #[prost(int64, optional, tag="15")]
15925    pub timestamp: ::core::option::Option<i64>,
15926}
15927#[derive(Clone, PartialEq, ::prost::Message)]
15928pub struct Vb2V4l2BufDoneFtraceEvent {
15929    #[prost(uint32, optional, tag="1")]
15930    pub field: ::core::option::Option<u32>,
15931    #[prost(uint32, optional, tag="2")]
15932    pub flags: ::core::option::Option<u32>,
15933    #[prost(int32, optional, tag="3")]
15934    pub minor: ::core::option::Option<i32>,
15935    #[prost(uint32, optional, tag="4")]
15936    pub sequence: ::core::option::Option<u32>,
15937    #[prost(uint32, optional, tag="5")]
15938    pub timecode_flags: ::core::option::Option<u32>,
15939    #[prost(uint32, optional, tag="6")]
15940    pub timecode_frames: ::core::option::Option<u32>,
15941    #[prost(uint32, optional, tag="7")]
15942    pub timecode_hours: ::core::option::Option<u32>,
15943    #[prost(uint32, optional, tag="8")]
15944    pub timecode_minutes: ::core::option::Option<u32>,
15945    #[prost(uint32, optional, tag="9")]
15946    pub timecode_seconds: ::core::option::Option<u32>,
15947    #[prost(uint32, optional, tag="10")]
15948    pub timecode_type: ::core::option::Option<u32>,
15949    #[prost(uint32, optional, tag="11")]
15950    pub timecode_userbits0: ::core::option::Option<u32>,
15951    #[prost(uint32, optional, tag="12")]
15952    pub timecode_userbits1: ::core::option::Option<u32>,
15953    #[prost(uint32, optional, tag="13")]
15954    pub timecode_userbits2: ::core::option::Option<u32>,
15955    #[prost(uint32, optional, tag="14")]
15956    pub timecode_userbits3: ::core::option::Option<u32>,
15957    #[prost(int64, optional, tag="15")]
15958    pub timestamp: ::core::option::Option<i64>,
15959}
15960#[derive(Clone, PartialEq, ::prost::Message)]
15961pub struct Vb2V4l2QbufFtraceEvent {
15962    #[prost(uint32, optional, tag="1")]
15963    pub field: ::core::option::Option<u32>,
15964    #[prost(uint32, optional, tag="2")]
15965    pub flags: ::core::option::Option<u32>,
15966    #[prost(int32, optional, tag="3")]
15967    pub minor: ::core::option::Option<i32>,
15968    #[prost(uint32, optional, tag="4")]
15969    pub sequence: ::core::option::Option<u32>,
15970    #[prost(uint32, optional, tag="5")]
15971    pub timecode_flags: ::core::option::Option<u32>,
15972    #[prost(uint32, optional, tag="6")]
15973    pub timecode_frames: ::core::option::Option<u32>,
15974    #[prost(uint32, optional, tag="7")]
15975    pub timecode_hours: ::core::option::Option<u32>,
15976    #[prost(uint32, optional, tag="8")]
15977    pub timecode_minutes: ::core::option::Option<u32>,
15978    #[prost(uint32, optional, tag="9")]
15979    pub timecode_seconds: ::core::option::Option<u32>,
15980    #[prost(uint32, optional, tag="10")]
15981    pub timecode_type: ::core::option::Option<u32>,
15982    #[prost(uint32, optional, tag="11")]
15983    pub timecode_userbits0: ::core::option::Option<u32>,
15984    #[prost(uint32, optional, tag="12")]
15985    pub timecode_userbits1: ::core::option::Option<u32>,
15986    #[prost(uint32, optional, tag="13")]
15987    pub timecode_userbits2: ::core::option::Option<u32>,
15988    #[prost(uint32, optional, tag="14")]
15989    pub timecode_userbits3: ::core::option::Option<u32>,
15990    #[prost(int64, optional, tag="15")]
15991    pub timestamp: ::core::option::Option<i64>,
15992}
15993#[derive(Clone, PartialEq, ::prost::Message)]
15994pub struct Vb2V4l2DqbufFtraceEvent {
15995    #[prost(uint32, optional, tag="1")]
15996    pub field: ::core::option::Option<u32>,
15997    #[prost(uint32, optional, tag="2")]
15998    pub flags: ::core::option::Option<u32>,
15999    #[prost(int32, optional, tag="3")]
16000    pub minor: ::core::option::Option<i32>,
16001    #[prost(uint32, optional, tag="4")]
16002    pub sequence: ::core::option::Option<u32>,
16003    #[prost(uint32, optional, tag="5")]
16004    pub timecode_flags: ::core::option::Option<u32>,
16005    #[prost(uint32, optional, tag="6")]
16006    pub timecode_frames: ::core::option::Option<u32>,
16007    #[prost(uint32, optional, tag="7")]
16008    pub timecode_hours: ::core::option::Option<u32>,
16009    #[prost(uint32, optional, tag="8")]
16010    pub timecode_minutes: ::core::option::Option<u32>,
16011    #[prost(uint32, optional, tag="9")]
16012    pub timecode_seconds: ::core::option::Option<u32>,
16013    #[prost(uint32, optional, tag="10")]
16014    pub timecode_type: ::core::option::Option<u32>,
16015    #[prost(uint32, optional, tag="11")]
16016    pub timecode_userbits0: ::core::option::Option<u32>,
16017    #[prost(uint32, optional, tag="12")]
16018    pub timecode_userbits1: ::core::option::Option<u32>,
16019    #[prost(uint32, optional, tag="13")]
16020    pub timecode_userbits2: ::core::option::Option<u32>,
16021    #[prost(uint32, optional, tag="14")]
16022    pub timecode_userbits3: ::core::option::Option<u32>,
16023    #[prost(int64, optional, tag="15")]
16024    pub timestamp: ::core::option::Option<i64>,
16025}
16026// End of protos/perfetto/trace/ftrace/v4l2.proto
16027
16028// Begin of protos/perfetto/trace/ftrace/virtio_gpu.proto
16029
16030#[derive(Clone, PartialEq, ::prost::Message)]
16031pub struct VirtioGpuCmdQueueFtraceEvent {
16032    #[prost(uint32, optional, tag="1")]
16033    pub ctx_id: ::core::option::Option<u32>,
16034    #[prost(int32, optional, tag="2")]
16035    pub dev: ::core::option::Option<i32>,
16036    #[prost(uint64, optional, tag="3")]
16037    pub fence_id: ::core::option::Option<u64>,
16038    #[prost(uint32, optional, tag="4")]
16039    pub flags: ::core::option::Option<u32>,
16040    #[prost(string, optional, tag="5")]
16041    pub name: ::core::option::Option<::prost::alloc::string::String>,
16042    #[prost(uint32, optional, tag="6")]
16043    pub num_free: ::core::option::Option<u32>,
16044    #[prost(uint32, optional, tag="7")]
16045    pub seqno: ::core::option::Option<u32>,
16046    #[prost(uint32, optional, tag="8")]
16047    pub r#type: ::core::option::Option<u32>,
16048    #[prost(uint32, optional, tag="9")]
16049    pub vq: ::core::option::Option<u32>,
16050}
16051#[derive(Clone, PartialEq, ::prost::Message)]
16052pub struct VirtioGpuCmdResponseFtraceEvent {
16053    #[prost(uint32, optional, tag="1")]
16054    pub ctx_id: ::core::option::Option<u32>,
16055    #[prost(int32, optional, tag="2")]
16056    pub dev: ::core::option::Option<i32>,
16057    #[prost(uint64, optional, tag="3")]
16058    pub fence_id: ::core::option::Option<u64>,
16059    #[prost(uint32, optional, tag="4")]
16060    pub flags: ::core::option::Option<u32>,
16061    #[prost(string, optional, tag="5")]
16062    pub name: ::core::option::Option<::prost::alloc::string::String>,
16063    #[prost(uint32, optional, tag="6")]
16064    pub num_free: ::core::option::Option<u32>,
16065    #[prost(uint32, optional, tag="7")]
16066    pub seqno: ::core::option::Option<u32>,
16067    #[prost(uint32, optional, tag="8")]
16068    pub r#type: ::core::option::Option<u32>,
16069    #[prost(uint32, optional, tag="9")]
16070    pub vq: ::core::option::Option<u32>,
16071}
16072// End of protos/perfetto/trace/ftrace/virtio_gpu.proto
16073
16074// Begin of protos/perfetto/trace/ftrace/virtio_video.proto
16075
16076#[derive(Clone, PartialEq, ::prost::Message)]
16077pub struct VirtioVideoCmdFtraceEvent {
16078    #[prost(uint32, optional, tag="1")]
16079    pub stream_id: ::core::option::Option<u32>,
16080    #[prost(uint32, optional, tag="2")]
16081    pub r#type: ::core::option::Option<u32>,
16082}
16083#[derive(Clone, PartialEq, ::prost::Message)]
16084pub struct VirtioVideoCmdDoneFtraceEvent {
16085    #[prost(uint32, optional, tag="1")]
16086    pub stream_id: ::core::option::Option<u32>,
16087    #[prost(uint32, optional, tag="2")]
16088    pub r#type: ::core::option::Option<u32>,
16089}
16090#[derive(Clone, PartialEq, ::prost::Message)]
16091pub struct VirtioVideoResourceQueueFtraceEvent {
16092    #[prost(uint32, optional, tag="1")]
16093    pub data_size0: ::core::option::Option<u32>,
16094    #[prost(uint32, optional, tag="2")]
16095    pub data_size1: ::core::option::Option<u32>,
16096    #[prost(uint32, optional, tag="3")]
16097    pub data_size2: ::core::option::Option<u32>,
16098    #[prost(uint32, optional, tag="4")]
16099    pub data_size3: ::core::option::Option<u32>,
16100    #[prost(uint32, optional, tag="5")]
16101    pub queue_type: ::core::option::Option<u32>,
16102    #[prost(int32, optional, tag="6")]
16103    pub resource_id: ::core::option::Option<i32>,
16104    #[prost(int32, optional, tag="7")]
16105    pub stream_id: ::core::option::Option<i32>,
16106    #[prost(uint64, optional, tag="8")]
16107    pub timestamp: ::core::option::Option<u64>,
16108}
16109#[derive(Clone, PartialEq, ::prost::Message)]
16110pub struct VirtioVideoResourceQueueDoneFtraceEvent {
16111    #[prost(uint32, optional, tag="1")]
16112    pub data_size0: ::core::option::Option<u32>,
16113    #[prost(uint32, optional, tag="2")]
16114    pub data_size1: ::core::option::Option<u32>,
16115    #[prost(uint32, optional, tag="3")]
16116    pub data_size2: ::core::option::Option<u32>,
16117    #[prost(uint32, optional, tag="4")]
16118    pub data_size3: ::core::option::Option<u32>,
16119    #[prost(uint32, optional, tag="5")]
16120    pub queue_type: ::core::option::Option<u32>,
16121    #[prost(int32, optional, tag="6")]
16122    pub resource_id: ::core::option::Option<i32>,
16123    #[prost(int32, optional, tag="7")]
16124    pub stream_id: ::core::option::Option<i32>,
16125    #[prost(uint64, optional, tag="8")]
16126    pub timestamp: ::core::option::Option<u64>,
16127}
16128// End of protos/perfetto/trace/ftrace/virtio_video.proto
16129
16130// Begin of protos/perfetto/trace/ftrace/vmscan.proto
16131
16132#[derive(Clone, PartialEq, ::prost::Message)]
16133pub struct MmVmscanDirectReclaimBeginFtraceEvent {
16134    #[prost(int32, optional, tag="1")]
16135    pub order: ::core::option::Option<i32>,
16136    #[prost(int32, optional, tag="2")]
16137    pub may_writepage: ::core::option::Option<i32>,
16138    #[prost(uint32, optional, tag="3")]
16139    pub gfp_flags: ::core::option::Option<u32>,
16140}
16141#[derive(Clone, PartialEq, ::prost::Message)]
16142pub struct MmVmscanDirectReclaimEndFtraceEvent {
16143    #[prost(uint64, optional, tag="1")]
16144    pub nr_reclaimed: ::core::option::Option<u64>,
16145}
16146#[derive(Clone, PartialEq, ::prost::Message)]
16147pub struct MmVmscanKswapdWakeFtraceEvent {
16148    #[prost(int32, optional, tag="1")]
16149    pub nid: ::core::option::Option<i32>,
16150    #[prost(int32, optional, tag="2")]
16151    pub order: ::core::option::Option<i32>,
16152    #[prost(int32, optional, tag="3")]
16153    pub zid: ::core::option::Option<i32>,
16154}
16155#[derive(Clone, PartialEq, ::prost::Message)]
16156pub struct MmVmscanKswapdSleepFtraceEvent {
16157    #[prost(int32, optional, tag="1")]
16158    pub nid: ::core::option::Option<i32>,
16159}
16160#[derive(Clone, PartialEq, ::prost::Message)]
16161pub struct MmShrinkSlabStartFtraceEvent {
16162    #[prost(uint64, optional, tag="1")]
16163    pub cache_items: ::core::option::Option<u64>,
16164    #[prost(uint64, optional, tag="2")]
16165    pub delta: ::core::option::Option<u64>,
16166    #[prost(uint32, optional, tag="3")]
16167    pub gfp_flags: ::core::option::Option<u32>,
16168    #[prost(uint64, optional, tag="4")]
16169    pub lru_pgs: ::core::option::Option<u64>,
16170    #[prost(int64, optional, tag="5")]
16171    pub nr_objects_to_shrink: ::core::option::Option<i64>,
16172    #[prost(uint64, optional, tag="6")]
16173    pub pgs_scanned: ::core::option::Option<u64>,
16174    #[prost(uint64, optional, tag="7")]
16175    pub shr: ::core::option::Option<u64>,
16176    #[prost(uint64, optional, tag="8")]
16177    pub shrink: ::core::option::Option<u64>,
16178    #[prost(uint64, optional, tag="9")]
16179    pub total_scan: ::core::option::Option<u64>,
16180    #[prost(int32, optional, tag="10")]
16181    pub nid: ::core::option::Option<i32>,
16182    #[prost(int32, optional, tag="11")]
16183    pub priority: ::core::option::Option<i32>,
16184}
16185#[derive(Clone, PartialEq, ::prost::Message)]
16186pub struct MmShrinkSlabEndFtraceEvent {
16187    #[prost(int64, optional, tag="1")]
16188    pub new_scan: ::core::option::Option<i64>,
16189    #[prost(int32, optional, tag="2")]
16190    pub retval: ::core::option::Option<i32>,
16191    #[prost(uint64, optional, tag="3")]
16192    pub shr: ::core::option::Option<u64>,
16193    #[prost(uint64, optional, tag="4")]
16194    pub shrink: ::core::option::Option<u64>,
16195    #[prost(int64, optional, tag="5")]
16196    pub total_scan: ::core::option::Option<i64>,
16197    #[prost(int64, optional, tag="6")]
16198    pub unused_scan: ::core::option::Option<i64>,
16199    #[prost(int32, optional, tag="7")]
16200    pub nid: ::core::option::Option<i32>,
16201}
16202// End of protos/perfetto/trace/ftrace/vmscan.proto
16203
16204// Begin of protos/perfetto/trace/ftrace/workqueue.proto
16205
16206#[derive(Clone, PartialEq, ::prost::Message)]
16207pub struct WorkqueueActivateWorkFtraceEvent {
16208    #[prost(uint64, optional, tag="1")]
16209    pub work: ::core::option::Option<u64>,
16210    #[prost(uint64, optional, tag="2")]
16211    pub function: ::core::option::Option<u64>,
16212}
16213#[derive(Clone, PartialEq, ::prost::Message)]
16214pub struct WorkqueueExecuteEndFtraceEvent {
16215    #[prost(uint64, optional, tag="1")]
16216    pub work: ::core::option::Option<u64>,
16217    #[prost(uint64, optional, tag="2")]
16218    pub function: ::core::option::Option<u64>,
16219}
16220#[derive(Clone, PartialEq, ::prost::Message)]
16221pub struct WorkqueueExecuteStartFtraceEvent {
16222    #[prost(uint64, optional, tag="1")]
16223    pub work: ::core::option::Option<u64>,
16224    #[prost(uint64, optional, tag="2")]
16225    pub function: ::core::option::Option<u64>,
16226}
16227#[derive(Clone, PartialEq, ::prost::Message)]
16228pub struct WorkqueueQueueWorkFtraceEvent {
16229    #[prost(uint64, optional, tag="1")]
16230    pub work: ::core::option::Option<u64>,
16231    #[prost(uint64, optional, tag="2")]
16232    pub function: ::core::option::Option<u64>,
16233    #[prost(int32, optional, tag="4")]
16234    pub req_cpu: ::core::option::Option<i32>,
16235    #[prost(int32, optional, tag="5")]
16236    pub cpu: ::core::option::Option<i32>,
16237    #[prost(string, optional, tag="6")]
16238    pub workqueue: ::core::option::Option<::prost::alloc::string::String>,
16239}
16240// End of protos/perfetto/trace/ftrace/workqueue.proto
16241
16242// Begin of protos/perfetto/trace/ftrace/ftrace_event.proto
16243
16244#[derive(Clone, PartialEq, ::prost::Message)]
16245pub struct FtraceEvent {
16246    /// Timestamp in nanoseconds using .../tracing/trace_clock.
16247    #[prost(uint64, optional, tag="1")]
16248    pub timestamp: ::core::option::Option<u64>,
16249    /// Kernel pid (do not confuse with userspace pid aka tgid).
16250    #[prost(uint32, optional, tag="2")]
16251    pub pid: ::core::option::Option<u32>,
16252    /// Not populated in actual traces. Wire format might change.
16253    /// Placeholder declaration so that the ftrace parsing code accepts the
16254    /// existence of this common field. If this becomes needed for all events:
16255    /// consider merging with common_preempt_count to avoid extra proto tags.
16256    #[prost(uint32, optional, tag="5")]
16257    pub common_flags: ::core::option::Option<u32>,
16258    #[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")]
16259    pub event: ::core::option::Option<ftrace_event::Event>,
16260}
16261/// Nested message and enum types in `FtraceEvent`.
16262pub mod ftrace_event {
16263    #[derive(Clone, PartialEq, ::prost::Oneof)]
16264    pub enum Event {
16265        #[prost(message, tag="3")]
16266        Print(super::PrintFtraceEvent),
16267        #[prost(message, tag="4")]
16268        SchedSwitch(super::SchedSwitchFtraceEvent),
16269        /// removed field with id 5;
16270        /// removed field with id 6;
16271        /// removed field with id 7;
16272        /// removed field with id 8;
16273        /// removed field with id 9;
16274        /// removed field with id 10;
16275        #[prost(message, tag="11")]
16276        CpuFrequency(super::CpuFrequencyFtraceEvent),
16277        #[prost(message, tag="12")]
16278        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
16279        #[prost(message, tag="13")]
16280        CpuIdle(super::CpuIdleFtraceEvent),
16281        #[prost(message, tag="14")]
16282        ClockEnable(super::ClockEnableFtraceEvent),
16283        #[prost(message, tag="15")]
16284        ClockDisable(super::ClockDisableFtraceEvent),
16285        #[prost(message, tag="16")]
16286        ClockSetRate(super::ClockSetRateFtraceEvent),
16287        #[prost(message, tag="17")]
16288        SchedWakeup(super::SchedWakeupFtraceEvent),
16289        #[prost(message, tag="18")]
16290        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
16291        #[prost(message, tag="19")]
16292        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
16293        #[prost(message, tag="20")]
16294        SchedWaking(super::SchedWakingFtraceEvent),
16295        #[prost(message, tag="21")]
16296        IpiEntry(super::IpiEntryFtraceEvent),
16297        #[prost(message, tag="22")]
16298        IpiExit(super::IpiExitFtraceEvent),
16299        #[prost(message, tag="23")]
16300        IpiRaise(super::IpiRaiseFtraceEvent),
16301        #[prost(message, tag="24")]
16302        SoftirqEntry(super::SoftirqEntryFtraceEvent),
16303        #[prost(message, tag="25")]
16304        SoftirqExit(super::SoftirqExitFtraceEvent),
16305        #[prost(message, tag="26")]
16306        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
16307        #[prost(message, tag="27")]
16308        I2cRead(super::I2cReadFtraceEvent),
16309        #[prost(message, tag="28")]
16310        I2cWrite(super::I2cWriteFtraceEvent),
16311        #[prost(message, tag="29")]
16312        I2cResult(super::I2cResultFtraceEvent),
16313        #[prost(message, tag="30")]
16314        I2cReply(super::I2cReplyFtraceEvent),
16315        #[prost(message, tag="31")]
16316        SmbusRead(super::SmbusReadFtraceEvent),
16317        #[prost(message, tag="32")]
16318        SmbusWrite(super::SmbusWriteFtraceEvent),
16319        #[prost(message, tag="33")]
16320        SmbusResult(super::SmbusResultFtraceEvent),
16321        #[prost(message, tag="34")]
16322        SmbusReply(super::SmbusReplyFtraceEvent),
16323        #[prost(message, tag="35")]
16324        LowmemoryKill(super::LowmemoryKillFtraceEvent),
16325        #[prost(message, tag="36")]
16326        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
16327        #[prost(message, tag="37")]
16328        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
16329        #[prost(message, tag="38")]
16330        SyncPt(super::SyncPtFtraceEvent),
16331        #[prost(message, tag="39")]
16332        SyncTimeline(super::SyncTimelineFtraceEvent),
16333        #[prost(message, tag="40")]
16334        SyncWait(super::SyncWaitFtraceEvent),
16335        #[prost(message, tag="41")]
16336        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
16337        #[prost(message, tag="42")]
16338        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
16339        #[prost(message, tag="43")]
16340        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
16341        #[prost(message, tag="44")]
16342        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
16343        #[prost(message, tag="45")]
16344        BlockRqIssue(super::BlockRqIssueFtraceEvent),
16345        #[prost(message, tag="46")]
16346        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
16347        #[prost(message, tag="47")]
16348        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
16349        #[prost(message, tag="48")]
16350        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
16351        #[prost(message, tag="49")]
16352        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
16353        #[prost(message, tag="50")]
16354        BinderTransaction(super::BinderTransactionFtraceEvent),
16355        #[prost(message, tag="51")]
16356        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
16357        #[prost(message, tag="52")]
16358        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
16359        #[prost(message, tag="53")]
16360        BinderLock(super::BinderLockFtraceEvent),
16361        #[prost(message, tag="54")]
16362        BinderLocked(super::BinderLockedFtraceEvent),
16363        #[prost(message, tag="55")]
16364        BinderUnlock(super::BinderUnlockFtraceEvent),
16365        #[prost(message, tag="56")]
16366        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
16367        #[prost(message, tag="57")]
16368        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
16369        #[prost(message, tag="58")]
16370        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
16371        #[prost(message, tag="59")]
16372        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
16373        #[prost(message, tag="60")]
16374        RegulatorDisable(super::RegulatorDisableFtraceEvent),
16375        #[prost(message, tag="61")]
16376        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
16377        #[prost(message, tag="62")]
16378        RegulatorEnable(super::RegulatorEnableFtraceEvent),
16379        #[prost(message, tag="63")]
16380        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
16381        #[prost(message, tag="64")]
16382        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
16383        #[prost(message, tag="65")]
16384        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
16385        #[prost(message, tag="66")]
16386        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
16387        #[prost(message, tag="67")]
16388        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
16389        #[prost(message, tag="68")]
16390        CgroupMkdir(super::CgroupMkdirFtraceEvent),
16391        #[prost(message, tag="69")]
16392        CgroupRemount(super::CgroupRemountFtraceEvent),
16393        #[prost(message, tag="70")]
16394        CgroupRmdir(super::CgroupRmdirFtraceEvent),
16395        #[prost(message, tag="71")]
16396        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
16397        #[prost(message, tag="72")]
16398        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
16399        #[prost(message, tag="73")]
16400        CgroupRelease(super::CgroupReleaseFtraceEvent),
16401        #[prost(message, tag="74")]
16402        CgroupRename(super::CgroupRenameFtraceEvent),
16403        #[prost(message, tag="75")]
16404        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
16405        #[prost(message, tag="76")]
16406        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
16407        #[prost(message, tag="77")]
16408        MdpCommit(super::MdpCommitFtraceEvent),
16409        #[prost(message, tag="78")]
16410        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
16411        #[prost(message, tag="79")]
16412        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
16413        #[prost(message, tag="80")]
16414        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
16415        #[prost(message, tag="81")]
16416        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
16417        #[prost(message, tag="82")]
16418        MdpCompareBw(super::MdpCompareBwFtraceEvent),
16419        #[prost(message, tag="83")]
16420        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
16421        #[prost(message, tag="84")]
16422        MdpSsppSet(super::MdpSsppSetFtraceEvent),
16423        #[prost(message, tag="85")]
16424        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
16425        #[prost(message, tag="86")]
16426        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
16427        #[prost(message, tag="87")]
16428        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
16429        #[prost(message, tag="88")]
16430        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
16431        #[prost(message, tag="89")]
16432        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
16433        #[prost(message, tag="90")]
16434        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
16435        #[prost(message, tag="91")]
16436        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
16437        #[prost(message, tag="92")]
16438        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
16439        #[prost(message, tag="93")]
16440        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
16441        #[prost(message, tag="94")]
16442        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
16443        #[prost(message, tag="95")]
16444        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
16445        #[prost(message, tag="96")]
16446        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
16447        #[prost(message, tag="97")]
16448        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
16449        #[prost(message, tag="98")]
16450        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
16451        #[prost(message, tag="99")]
16452        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
16453        #[prost(message, tag="100")]
16454        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
16455        #[prost(message, tag="101")]
16456        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
16457        #[prost(message, tag="102")]
16458        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
16459        #[prost(message, tag="103")]
16460        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
16461        #[prost(message, tag="104")]
16462        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
16463        #[prost(message, tag="105")]
16464        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
16465        #[prost(message, tag="106")]
16466        MmCompactionIsolateMigratepages(super::MmCompactionIsolateMigratepagesFtraceEvent),
16467        #[prost(message, tag="107")]
16468        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
16469        #[prost(message, tag="108")]
16470        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
16471        #[prost(message, tag="109")]
16472        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
16473        #[prost(message, tag="110")]
16474        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
16475        #[prost(message, tag="111")]
16476        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
16477        #[prost(message, tag="112")]
16478        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
16479        #[prost(message, tag="113")]
16480        SuspendResume(super::SuspendResumeFtraceEvent),
16481        #[prost(message, tag="114")]
16482        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
16483        #[prost(message, tag="115")]
16484        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
16485        #[prost(message, tag="116")]
16486        BlockBioBounce(super::BlockBioBounceFtraceEvent),
16487        #[prost(message, tag="117")]
16488        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
16489        #[prost(message, tag="118")]
16490        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
16491        #[prost(message, tag="119")]
16492        BlockBioQueue(super::BlockBioQueueFtraceEvent),
16493        #[prost(message, tag="120")]
16494        BlockBioRemap(super::BlockBioRemapFtraceEvent),
16495        #[prost(message, tag="121")]
16496        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
16497        #[prost(message, tag="122")]
16498        BlockGetrq(super::BlockGetrqFtraceEvent),
16499        #[prost(message, tag="123")]
16500        BlockPlug(super::BlockPlugFtraceEvent),
16501        #[prost(message, tag="124")]
16502        BlockRqAbort(super::BlockRqAbortFtraceEvent),
16503        #[prost(message, tag="125")]
16504        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
16505        #[prost(message, tag="126")]
16506        BlockRqInsert(super::BlockRqInsertFtraceEvent),
16507        /// removed field with id 127;
16508        #[prost(message, tag="128")]
16509        BlockRqRemap(super::BlockRqRemapFtraceEvent),
16510        #[prost(message, tag="129")]
16511        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
16512        #[prost(message, tag="130")]
16513        BlockSleeprq(super::BlockSleeprqFtraceEvent),
16514        #[prost(message, tag="131")]
16515        BlockSplit(super::BlockSplitFtraceEvent),
16516        #[prost(message, tag="132")]
16517        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
16518        #[prost(message, tag="133")]
16519        BlockUnplug(super::BlockUnplugFtraceEvent),
16520        #[prost(message, tag="134")]
16521        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
16522        #[prost(message, tag="135")]
16523        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
16524        #[prost(message, tag="136")]
16525        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
16526        #[prost(message, tag="137")]
16527        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
16528        #[prost(message, tag="138")]
16529        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
16530        #[prost(message, tag="139")]
16531        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
16532        #[prost(message, tag="140")]
16533        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
16534        #[prost(message, tag="141")]
16535        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
16536        #[prost(message, tag="142")]
16537        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
16538        #[prost(message, tag="143")]
16539        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
16540        #[prost(message, tag="144")]
16541        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
16542        #[prost(message, tag="145")]
16543        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
16544        #[prost(message, tag="146")]
16545        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
16546        #[prost(message, tag="147")]
16547        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
16548        #[prost(message, tag="148")]
16549        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
16550        #[prost(message, tag="149")]
16551        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
16552        #[prost(message, tag="150")]
16553        Ext4EsFindDelayedExtentRangeEnter(super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent),
16554        #[prost(message, tag="151")]
16555        Ext4EsFindDelayedExtentRangeExit(super::Ext4EsFindDelayedExtentRangeExitFtraceEvent),
16556        #[prost(message, tag="152")]
16557        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
16558        #[prost(message, tag="153")]
16559        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
16560        #[prost(message, tag="154")]
16561        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
16562        #[prost(message, tag="155")]
16563        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
16564        #[prost(message, tag="156")]
16565        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
16566        #[prost(message, tag="157")]
16567        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
16568        #[prost(message, tag="158")]
16569        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
16570        #[prost(message, tag="159")]
16571        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
16572        #[prost(message, tag="160")]
16573        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
16574        #[prost(message, tag="161")]
16575        Ext4ExtConvertToInitializedEnter(super::Ext4ExtConvertToInitializedEnterFtraceEvent),
16576        #[prost(message, tag="162")]
16577        Ext4ExtConvertToInitializedFastpath(super::Ext4ExtConvertToInitializedFastpathFtraceEvent),
16578        #[prost(message, tag="163")]
16579        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
16580        #[prost(message, tag="164")]
16581        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
16582        #[prost(message, tag="165")]
16583        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
16584        #[prost(message, tag="166")]
16585        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
16586        #[prost(message, tag="167")]
16587        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
16588        #[prost(message, tag="168")]
16589        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
16590        #[prost(message, tag="169")]
16591        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
16592        #[prost(message, tag="170")]
16593        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
16594        #[prost(message, tag="171")]
16595        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
16596        #[prost(message, tag="172")]
16597        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
16598        #[prost(message, tag="173")]
16599        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
16600        #[prost(message, tag="174")]
16601        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
16602        #[prost(message, tag="175")]
16603        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
16604        #[prost(message, tag="176")]
16605        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
16606        #[prost(message, tag="177")]
16607        Ext4Forget(super::Ext4ForgetFtraceEvent),
16608        #[prost(message, tag="178")]
16609        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
16610        #[prost(message, tag="179")]
16611        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
16612        #[prost(message, tag="180")]
16613        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
16614        #[prost(message, tag="181")]
16615        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
16616        #[prost(message, tag="182")]
16617        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
16618        #[prost(message, tag="183")]
16619        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
16620        #[prost(message, tag="184")]
16621        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
16622        #[prost(message, tag="185")]
16623        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
16624        #[prost(message, tag="186")]
16625        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
16626        #[prost(message, tag="187")]
16627        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
16628        #[prost(message, tag="188")]
16629        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
16630        #[prost(message, tag="189")]
16631        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
16632        #[prost(message, tag="190")]
16633        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
16634        #[prost(message, tag="191")]
16635        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
16636        #[prost(message, tag="192")]
16637        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
16638        #[prost(message, tag="193")]
16639        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
16640        #[prost(message, tag="194")]
16641        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
16642        #[prost(message, tag="195")]
16643        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
16644        #[prost(message, tag="196")]
16645        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
16646        #[prost(message, tag="197")]
16647        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
16648        #[prost(message, tag="198")]
16649        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
16650        #[prost(message, tag="199")]
16651        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
16652        #[prost(message, tag="200")]
16653        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
16654        #[prost(message, tag="201")]
16655        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
16656        #[prost(message, tag="202")]
16657        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
16658        #[prost(message, tag="203")]
16659        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
16660        #[prost(message, tag="204")]
16661        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
16662        #[prost(message, tag="205")]
16663        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
16664        #[prost(message, tag="206")]
16665        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
16666        #[prost(message, tag="207")]
16667        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
16668        #[prost(message, tag="208")]
16669        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
16670        #[prost(message, tag="209")]
16671        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
16672        #[prost(message, tag="210")]
16673        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
16674        #[prost(message, tag="211")]
16675        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
16676        #[prost(message, tag="212")]
16677        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
16678        #[prost(message, tag="213")]
16679        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
16680        #[prost(message, tag="214")]
16681        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
16682        #[prost(message, tag="215")]
16683        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
16684        #[prost(message, tag="216")]
16685        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
16686        #[prost(message, tag="217")]
16687        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
16688        #[prost(message, tag="218")]
16689        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
16690        #[prost(message, tag="219")]
16691        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
16692        /// removed field with id 220;
16693        /// removed field with id 221;
16694        /// removed field with id 222;
16695        /// removed field with id 223;
16696        /// removed field with id 224;
16697        /// removed field with id 225;
16698        /// removed field with id 226;
16699        /// removed field with id 227;
16700        /// removed field with id 228;
16701        /// removed field with id 229;
16702        #[prost(message, tag="230")]
16703        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
16704        #[prost(message, tag="231")]
16705        Ext4Writepage(super::Ext4WritepageFtraceEvent),
16706        #[prost(message, tag="232")]
16707        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
16708        #[prost(message, tag="233")]
16709        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
16710        #[prost(message, tag="234")]
16711        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
16712        #[prost(message, tag="235")]
16713        TaskNewtask(super::TaskNewtaskFtraceEvent),
16714        #[prost(message, tag="236")]
16715        TaskRename(super::TaskRenameFtraceEvent),
16716        #[prost(message, tag="237")]
16717        SchedProcessExec(super::SchedProcessExecFtraceEvent),
16718        #[prost(message, tag="238")]
16719        SchedProcessExit(super::SchedProcessExitFtraceEvent),
16720        #[prost(message, tag="239")]
16721        SchedProcessFork(super::SchedProcessForkFtraceEvent),
16722        #[prost(message, tag="240")]
16723        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
16724        #[prost(message, tag="241")]
16725        SchedProcessHang(super::SchedProcessHangFtraceEvent),
16726        #[prost(message, tag="242")]
16727        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
16728        #[prost(message, tag="243")]
16729        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
16730        #[prost(message, tag="244")]
16731        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
16732        #[prost(message, tag="245")]
16733        F2fsFallocate(super::F2fsFallocateFtraceEvent),
16734        #[prost(message, tag="246")]
16735        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
16736        #[prost(message, tag="247")]
16737        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
16738        #[prost(message, tag="248")]
16739        F2fsIget(super::F2fsIgetFtraceEvent),
16740        #[prost(message, tag="249")]
16741        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
16742        #[prost(message, tag="250")]
16743        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
16744        #[prost(message, tag="251")]
16745        F2fsReadpage(super::F2fsReadpageFtraceEvent),
16746        #[prost(message, tag="252")]
16747        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
16748        #[prost(message, tag="253")]
16749        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
16750        #[prost(message, tag="254")]
16751        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
16752        #[prost(message, tag="255")]
16753        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
16754        #[prost(message, tag="256")]
16755        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
16756        #[prost(message, tag="257")]
16757        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
16758        #[prost(message, tag="258")]
16759        F2fsTruncate(super::F2fsTruncateFtraceEvent),
16760        #[prost(message, tag="259")]
16761        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
16762        #[prost(message, tag="260")]
16763        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
16764        #[prost(message, tag="261")]
16765        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
16766        #[prost(message, tag="262")]
16767        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
16768        #[prost(message, tag="263")]
16769        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
16770        #[prost(message, tag="264")]
16771        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
16772        #[prost(message, tag="265")]
16773        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
16774        #[prost(message, tag="266")]
16775        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
16776        #[prost(message, tag="267")]
16777        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
16778        #[prost(message, tag="268")]
16779        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
16780        #[prost(message, tag="269")]
16781        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
16782        #[prost(message, tag="270")]
16783        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
16784        #[prost(message, tag="271")]
16785        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
16786        #[prost(message, tag="272")]
16787        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
16788        #[prost(message, tag="273")]
16789        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
16790        #[prost(message, tag="274")]
16791        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
16792        #[prost(message, tag="275")]
16793        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
16794        #[prost(message, tag="276")]
16795        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
16796        #[prost(message, tag="277")]
16797        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
16798        #[prost(message, tag="278")]
16799        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
16800        #[prost(message, tag="279")]
16801        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
16802        #[prost(message, tag="280")]
16803        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
16804        #[prost(message, tag="281")]
16805        IommuMapRange(super::IommuMapRangeFtraceEvent),
16806        #[prost(message, tag="282")]
16807        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
16808        #[prost(message, tag="283")]
16809        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
16810        #[prost(message, tag="284")]
16811        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
16812        #[prost(message, tag="285")]
16813        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
16814        #[prost(message, tag="286")]
16815        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
16816        #[prost(message, tag="287")]
16817        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
16818        #[prost(message, tag="288")]
16819        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
16820        #[prost(message, tag="289")]
16821        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
16822        #[prost(message, tag="290")]
16823        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
16824        #[prost(message, tag="291")]
16825        IonPrefetching(super::IonPrefetchingFtraceEvent),
16826        #[prost(message, tag="292")]
16827        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
16828        #[prost(message, tag="293")]
16829        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
16830        #[prost(message, tag="294")]
16831        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
16832        #[prost(message, tag="295")]
16833        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
16834        #[prost(message, tag="296")]
16835        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
16836        #[prost(message, tag="297")]
16837        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
16838        #[prost(message, tag="298")]
16839        Kfree(super::KfreeFtraceEvent),
16840        #[prost(message, tag="299")]
16841        Kmalloc(super::KmallocFtraceEvent),
16842        #[prost(message, tag="300")]
16843        KmallocNode(super::KmallocNodeFtraceEvent),
16844        #[prost(message, tag="301")]
16845        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
16846        #[prost(message, tag="302")]
16847        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
16848        #[prost(message, tag="303")]
16849        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
16850        #[prost(message, tag="304")]
16851        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
16852        #[prost(message, tag="305")]
16853        MigratePagesStart(super::MigratePagesStartFtraceEvent),
16854        #[prost(message, tag="306")]
16855        MigrateRetry(super::MigrateRetryFtraceEvent),
16856        #[prost(message, tag="307")]
16857        MmPageAlloc(super::MmPageAllocFtraceEvent),
16858        #[prost(message, tag="308")]
16859        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
16860        #[prost(message, tag="309")]
16861        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
16862        #[prost(message, tag="310")]
16863        MmPageFree(super::MmPageFreeFtraceEvent),
16864        #[prost(message, tag="311")]
16865        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
16866        #[prost(message, tag="312")]
16867        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
16868        #[prost(message, tag="313")]
16869        RssStat(super::RssStatFtraceEvent),
16870        #[prost(message, tag="314")]
16871        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
16872        #[prost(message, tag="315")]
16873        IonHeapGrow(super::IonHeapGrowFtraceEvent),
16874        #[prost(message, tag="316")]
16875        FenceInit(super::FenceInitFtraceEvent),
16876        #[prost(message, tag="317")]
16877        FenceDestroy(super::FenceDestroyFtraceEvent),
16878        #[prost(message, tag="318")]
16879        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
16880        #[prost(message, tag="319")]
16881        FenceSignaled(super::FenceSignaledFtraceEvent),
16882        #[prost(message, tag="320")]
16883        ClkEnable(super::ClkEnableFtraceEvent),
16884        #[prost(message, tag="321")]
16885        ClkDisable(super::ClkDisableFtraceEvent),
16886        #[prost(message, tag="322")]
16887        ClkSetRate(super::ClkSetRateFtraceEvent),
16888        #[prost(message, tag="323")]
16889        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
16890        #[prost(message, tag="324")]
16891        SignalDeliver(super::SignalDeliverFtraceEvent),
16892        #[prost(message, tag="325")]
16893        SignalGenerate(super::SignalGenerateFtraceEvent),
16894        #[prost(message, tag="326")]
16895        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
16896        #[prost(message, tag="327")]
16897        Generic(super::GenericFtraceEvent),
16898        #[prost(message, tag="328")]
16899        MmEventRecord(super::MmEventRecordFtraceEvent),
16900        #[prost(message, tag="329")]
16901        SysEnter(super::SysEnterFtraceEvent),
16902        #[prost(message, tag="330")]
16903        SysExit(super::SysExitFtraceEvent),
16904        #[prost(message, tag="331")]
16905        Zero(super::ZeroFtraceEvent),
16906        #[prost(message, tag="332")]
16907        GpuFrequency(super::GpuFrequencyFtraceEvent),
16908        #[prost(message, tag="333")]
16909        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
16910        #[prost(message, tag="334")]
16911        MarkVictim(super::MarkVictimFtraceEvent),
16912        #[prost(message, tag="335")]
16913        IonStat(super::IonStatFtraceEvent),
16914        #[prost(message, tag="336")]
16915        IonBufferCreate(super::IonBufferCreateFtraceEvent),
16916        #[prost(message, tag="337")]
16917        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
16918        #[prost(message, tag="338")]
16919        ScmCallStart(super::ScmCallStartFtraceEvent),
16920        #[prost(message, tag="339")]
16921        ScmCallEnd(super::ScmCallEndFtraceEvent),
16922        #[prost(message, tag="340")]
16923        GpuMemTotal(super::GpuMemTotalFtraceEvent),
16924        #[prost(message, tag="341")]
16925        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
16926        #[prost(message, tag="342")]
16927        CdevUpdate(super::CdevUpdateFtraceEvent),
16928        #[prost(message, tag="343")]
16929        CpuhpExit(super::CpuhpExitFtraceEvent),
16930        #[prost(message, tag="344")]
16931        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
16932        #[prost(message, tag="345")]
16933        CpuhpEnter(super::CpuhpEnterFtraceEvent),
16934        #[prost(message, tag="346")]
16935        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
16936        #[prost(message, tag="347")]
16937        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
16938        #[prost(message, tag="348")]
16939        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
16940        #[prost(message, tag="349")]
16941        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
16942        #[prost(message, tag="350")]
16943        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
16944        #[prost(message, tag="351")]
16945        DmaHeapStat(super::DmaHeapStatFtraceEvent),
16946        #[prost(message, tag="352")]
16947        CpuhpPause(super::CpuhpPauseFtraceEvent),
16948        #[prost(message, tag="353")]
16949        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
16950        #[prost(message, tag="354")]
16951        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
16952        #[prost(message, tag="355")]
16953        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
16954        #[prost(message, tag="356")]
16955        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
16956        #[prost(message, tag="357")]
16957        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
16958        #[prost(message, tag="358")]
16959        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
16960        #[prost(message, tag="359")]
16961        RssStatThrottled(super::RssStatThrottledFtraceEvent),
16962        #[prost(message, tag="360")]
16963        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
16964        #[prost(message, tag="361")]
16965        NetDevXmit(super::NetDevXmitFtraceEvent),
16966        #[prost(message, tag="362")]
16967        InetSockSetState(super::InetSockSetStateFtraceEvent),
16968        #[prost(message, tag="363")]
16969        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
16970        #[prost(message, tag="364")]
16971        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
16972        #[prost(message, tag="365")]
16973        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
16974        #[prost(message, tag="366")]
16975        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
16976        #[prost(message, tag="367")]
16977        KfreeSkb(super::KfreeSkbFtraceEvent),
16978        #[prost(message, tag="368")]
16979        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
16980        #[prost(message, tag="369")]
16981        KvmAckIrq(super::KvmAckIrqFtraceEvent),
16982        #[prost(message, tag="370")]
16983        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
16984        #[prost(message, tag="371")]
16985        KvmAgePage(super::KvmAgePageFtraceEvent),
16986        #[prost(message, tag="372")]
16987        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
16988        #[prost(message, tag="373")]
16989        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
16990        #[prost(message, tag="374")]
16991        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
16992        #[prost(message, tag="375")]
16993        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
16994        #[prost(message, tag="376")]
16995        KvmEntry(super::KvmEntryFtraceEvent),
16996        #[prost(message, tag="377")]
16997        KvmExit(super::KvmExitFtraceEvent),
16998        #[prost(message, tag="378")]
16999        KvmFpu(super::KvmFpuFtraceEvent),
17000        #[prost(message, tag="379")]
17001        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
17002        #[prost(message, tag="380")]
17003        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
17004        #[prost(message, tag="381")]
17005        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
17006        #[prost(message, tag="382")]
17007        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
17008        #[prost(message, tag="383")]
17009        KvmIrqLine(super::KvmIrqLineFtraceEvent),
17010        #[prost(message, tag="384")]
17011        KvmMmio(super::KvmMmioFtraceEvent),
17012        #[prost(message, tag="385")]
17013        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
17014        #[prost(message, tag="386")]
17015        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
17016        #[prost(message, tag="387")]
17017        KvmSetIrq(super::KvmSetIrqFtraceEvent),
17018        #[prost(message, tag="388")]
17019        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
17020        #[prost(message, tag="389")]
17021        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
17022        #[prost(message, tag="390")]
17023        KvmSysAccess(super::KvmSysAccessFtraceEvent),
17024        #[prost(message, tag="391")]
17025        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
17026        #[prost(message, tag="392")]
17027        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
17028        #[prost(message, tag="393")]
17029        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
17030        #[prost(message, tag="394")]
17031        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
17032        #[prost(message, tag="395")]
17033        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
17034        #[prost(message, tag="396")]
17035        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
17036        #[prost(message, tag="397")]
17037        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
17038        #[prost(message, tag="398")]
17039        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
17040        #[prost(message, tag="399")]
17041        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
17042        #[prost(message, tag="400")]
17043        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
17044        #[prost(message, tag="401")]
17045        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
17046        #[prost(message, tag="402")]
17047        TrapReg(super::TrapRegFtraceEvent),
17048        #[prost(message, tag="403")]
17049        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
17050        #[prost(message, tag="404")]
17051        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
17052        #[prost(message, tag="405")]
17053        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
17054        #[prost(message, tag="406")]
17055        UfshcdCommand(super::UfshcdCommandFtraceEvent),
17056        #[prost(message, tag="407")]
17057        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
17058        #[prost(message, tag="408")]
17059        Console(super::ConsoleFtraceEvent),
17060        #[prost(message, tag="409")]
17061        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
17062        #[prost(message, tag="410")]
17063        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
17064        #[prost(message, tag="411")]
17065        DrmSchedJob(super::DrmSchedJobFtraceEvent),
17066        #[prost(message, tag="412")]
17067        DrmRunJob(super::DrmRunJobFtraceEvent),
17068        #[prost(message, tag="413")]
17069        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
17070        #[prost(message, tag="414")]
17071        DmaFenceInit(super::DmaFenceInitFtraceEvent),
17072        #[prost(message, tag="415")]
17073        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
17074        #[prost(message, tag="416")]
17075        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
17076        #[prost(message, tag="417")]
17077        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
17078        #[prost(message, tag="418")]
17079        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
17080        #[prost(message, tag="419")]
17081        F2fsIostat(super::F2fsIostatFtraceEvent),
17082        #[prost(message, tag="420")]
17083        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
17084        #[prost(message, tag="421")]
17085        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
17086        #[prost(message, tag="422")]
17087        V4l2Qbuf(super::V4l2QbufFtraceEvent),
17088        #[prost(message, tag="423")]
17089        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
17090        #[prost(message, tag="424")]
17091        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
17092        #[prost(message, tag="425")]
17093        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
17094        #[prost(message, tag="426")]
17095        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
17096        #[prost(message, tag="427")]
17097        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
17098        #[prost(message, tag="428")]
17099        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
17100        #[prost(message, tag="429")]
17101        DsiRx(super::DsiRxFtraceEvent),
17102        #[prost(message, tag="430")]
17103        DsiTx(super::DsiTxFtraceEvent),
17104        #[prost(message, tag="431")]
17105        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
17106        #[prost(message, tag="432")]
17107        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
17108        #[prost(message, tag="433")]
17109        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
17110        #[prost(message, tag="434")]
17111        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
17112        #[prost(message, tag="435")]
17113        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
17114        #[prost(message, tag="436")]
17115        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
17116        #[prost(message, tag="437")]
17117        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
17118        #[prost(message, tag="438")]
17119        FuncgraphExit(super::FuncgraphExitFtraceEvent),
17120        #[prost(message, tag="439")]
17121        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
17122        #[prost(message, tag="440")]
17123        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
17124        #[prost(message, tag="441")]
17125        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
17126        #[prost(message, tag="442")]
17127        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
17128        #[prost(message, tag="443")]
17129        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
17130        #[prost(message, tag="444")]
17131        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
17132        #[prost(message, tag="445")]
17133        TrustySmc(super::TrustySmcFtraceEvent),
17134        #[prost(message, tag="446")]
17135        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
17136        #[prost(message, tag="447")]
17137        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
17138        #[prost(message, tag="448")]
17139        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
17140        #[prost(message, tag="449")]
17141        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
17142        #[prost(message, tag="450")]
17143        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
17144        #[prost(message, tag="451")]
17145        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
17146        #[prost(message, tag="452")]
17147        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
17148        #[prost(message, tag="453")]
17149        TrustyIrq(super::TrustyIrqFtraceEvent),
17150        #[prost(message, tag="454")]
17151        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
17152        #[prost(message, tag="455")]
17153        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
17154        #[prost(message, tag="456")]
17155        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
17156        #[prost(message, tag="457")]
17157        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
17158        #[prost(message, tag="458")]
17159        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
17160        /// removed field with id 459;
17161        #[prost(message, tag="460")]
17162        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
17163        #[prost(message, tag="461")]
17164        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
17165        #[prost(message, tag="462")]
17166        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
17167        /// removed field with id 463;
17168        #[prost(message, tag="464")]
17169        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
17170        #[prost(message, tag="465")]
17171        CmaAllocStart(super::CmaAllocStartFtraceEvent),
17172        #[prost(message, tag="466")]
17173        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
17174        #[prost(message, tag="467")]
17175        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
17176        #[prost(message, tag="468")]
17177        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
17178        #[prost(message, tag="469")]
17179        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
17180        #[prost(message, tag="470")]
17181        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
17182        #[prost(message, tag="471")]
17183        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
17184        #[prost(message, tag="472")]
17185        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
17186        #[prost(message, tag="473")]
17187        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
17188        #[prost(message, tag="474")]
17189        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
17190        #[prost(message, tag="475")]
17191        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
17192        #[prost(message, tag="476")]
17193        HypEnter(super::HypEnterFtraceEvent),
17194        #[prost(message, tag="477")]
17195        HypExit(super::HypExitFtraceEvent),
17196        #[prost(message, tag="478")]
17197        HostHcall(super::HostHcallFtraceEvent),
17198        #[prost(message, tag="479")]
17199        HostSmc(super::HostSmcFtraceEvent),
17200        #[prost(message, tag="480")]
17201        HostMemAbort(super::HostMemAbortFtraceEvent),
17202        #[prost(message, tag="481")]
17203        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
17204        #[prost(message, tag="482")]
17205        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
17206        #[prost(message, tag="483")]
17207        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
17208        #[prost(message, tag="484")]
17209        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
17210        #[prost(message, tag="485")]
17211        BinderCommand(super::BinderCommandFtraceEvent),
17212        #[prost(message, tag="486")]
17213        BinderReturn(super::BinderReturnFtraceEvent),
17214        #[prost(message, tag="487")]
17215        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
17216        #[prost(message, tag="488")]
17217        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
17218        #[prost(message, tag="489")]
17219        RpmStatus(super::RpmStatusFtraceEvent),
17220        #[prost(message, tag="490")]
17221        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
17222        #[prost(message, tag="491")]
17223        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
17224        #[prost(message, tag="492")]
17225        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
17226        #[prost(message, tag="493")]
17227        DpuDsiRx(super::DpuDsiRxFtraceEvent),
17228        #[prost(message, tag="494")]
17229        DpuDsiTx(super::DpuDsiTxFtraceEvent),
17230        #[prost(message, tag="495")]
17231        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
17232        #[prost(message, tag="496")]
17233        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
17234        #[prost(message, tag="497")]
17235        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
17236        #[prost(message, tag="498")]
17237        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
17238        #[prost(message, tag="499")]
17239        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
17240        #[prost(message, tag="500")]
17241        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
17242        #[prost(message, tag="501")]
17243        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
17244        #[prost(message, tag="502")]
17245        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
17246        #[prost(message, tag="503")]
17247        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
17248        #[prost(message, tag="504")]
17249        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
17250        #[prost(message, tag="505")]
17251        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
17252        #[prost(message, tag="506")]
17253        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
17254        #[prost(message, tag="507")]
17255        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
17256        #[prost(message, tag="508")]
17257        DcvshFreq(super::DcvshFreqFtraceEvent),
17258        #[prost(message, tag="509")]
17259        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
17260        #[prost(message, tag="510")]
17261        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent),
17262        #[prost(message, tag="511")]
17263        MaliMaliPmMcuHctlCoresNotifyPend(super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent),
17264        #[prost(message, tag="512")]
17265        MaliMaliPmMcuHctlCoreInactivePend(super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent),
17266        #[prost(message, tag="513")]
17267        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
17268        #[prost(message, tag="514")]
17269        MaliMaliPmMcuHctlShadersCoreOffPend(super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent),
17270        #[prost(message, tag="515")]
17271        MaliMaliPmMcuHctlShadersPendOff(super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent),
17272        #[prost(message, tag="516")]
17273        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
17274        #[prost(message, tag="517")]
17275        MaliMaliPmMcuHctlShadersReadyOff(super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent),
17276        #[prost(message, tag="518")]
17277        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
17278        #[prost(message, tag="519")]
17279        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
17280        #[prost(message, tag="520")]
17281        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
17282        #[prost(message, tag="521")]
17283        MaliMaliPmMcuOnCoreAttrUpdatePend(super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent),
17284        #[prost(message, tag="522")]
17285        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
17286        #[prost(message, tag="523")]
17287        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
17288        #[prost(message, tag="524")]
17289        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
17290        #[prost(message, tag="525")]
17291        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
17292        #[prost(message, tag="526")]
17293        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
17294        #[prost(message, tag="527")]
17295        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
17296        #[prost(message, tag="528")]
17297        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
17298        #[prost(message, tag="529")]
17299        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
17300        #[prost(message, tag="530")]
17301        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
17302        #[prost(message, tag="531")]
17303        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
17304        #[prost(message, tag="532")]
17305        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
17306        #[prost(message, tag="533")]
17307        BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
17308        #[prost(message, tag="534")]
17309        KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
17310        #[prost(message, tag="535")]
17311        KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
17312        #[prost(message, tag="536")]
17313        KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
17314        #[prost(message, tag="537")]
17315        KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
17316        #[prost(message, tag="538")]
17317        PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
17318        #[prost(message, tag="539")]
17319        PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
17320        #[prost(message, tag="540")]
17321        SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
17322        #[prost(message, tag="541")]
17323        DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
17324        #[prost(message, tag="542")]
17325        KprobeEvent(super::KprobeEvent),
17326        #[prost(message, tag="543")]
17327        ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
17328        #[prost(message, tag="544")]
17329        DoSysOpen(super::DoSysOpenFtraceEvent),
17330        #[prost(message, tag="545")]
17331        OpenExec(super::OpenExecFtraceEvent),
17332        #[prost(message, tag="546")]
17333        BlockIoStart(super::BlockIoStartFtraceEvent),
17334        #[prost(message, tag="547")]
17335        BlockIoDone(super::BlockIoDoneFtraceEvent),
17336        #[prost(message, tag="548")]
17337        MaliGpuPowerState(super::MaliGpuPowerStateFtraceEvent),
17338        #[prost(message, tag="549")]
17339        DpuDispDpuUnderrun(super::DpuDispDpuUnderrunFtraceEvent),
17340        #[prost(message, tag="550")]
17341        DpuDispVblankIrqEnable(super::DpuDispVblankIrqEnableFtraceEvent),
17342        #[prost(message, tag="551")]
17343        HrtimerStart(super::HrtimerStartFtraceEvent),
17344        #[prost(message, tag="552")]
17345        HrtimerCancel(super::HrtimerCancelFtraceEvent),
17346        #[prost(message, tag="553")]
17347        HrtimerExpireEntry(super::HrtimerExpireEntryFtraceEvent),
17348        #[prost(message, tag="554")]
17349        HrtimerExpireExit(super::HrtimerExpireExitFtraceEvent),
17350        #[prost(message, tag="555")]
17351        TimerStart(super::TimerStartFtraceEvent),
17352        #[prost(message, tag="556")]
17353        TimerCancel(super::TimerCancelFtraceEvent),
17354        #[prost(message, tag="557")]
17355        TimerExpireEntry(super::TimerExpireEntryFtraceEvent),
17356        #[prost(message, tag="558")]
17357        TimerExpireExit(super::TimerExpireExitFtraceEvent),
17358        #[prost(message, tag="559")]
17359        LocalTimerEntry(super::LocalTimerEntryFtraceEvent),
17360        #[prost(message, tag="560")]
17361        LocalTimerExit(super::LocalTimerExitFtraceEvent),
17362        #[prost(message, tag="561")]
17363        Dwc3AllocRequest(super::Dwc3AllocRequestFtraceEvent),
17364        #[prost(message, tag="562")]
17365        Dwc3CompleteTrb(super::Dwc3CompleteTrbFtraceEvent),
17366        #[prost(message, tag="563")]
17367        Dwc3CtrlReq(super::Dwc3CtrlReqFtraceEvent),
17368        #[prost(message, tag="564")]
17369        Dwc3EpDequeue(super::Dwc3EpDequeueFtraceEvent),
17370        #[prost(message, tag="565")]
17371        Dwc3EpQueue(super::Dwc3EpQueueFtraceEvent),
17372        #[prost(message, tag="566")]
17373        Dwc3Event(super::Dwc3EventFtraceEvent),
17374        #[prost(message, tag="567")]
17375        Dwc3FreeRequest(super::Dwc3FreeRequestFtraceEvent),
17376        #[prost(message, tag="568")]
17377        Dwc3GadgetEpCmd(super::Dwc3GadgetEpCmdFtraceEvent),
17378        #[prost(message, tag="569")]
17379        Dwc3GadgetEpDisable(super::Dwc3GadgetEpDisableFtraceEvent),
17380        #[prost(message, tag="570")]
17381        Dwc3GadgetEpEnable(super::Dwc3GadgetEpEnableFtraceEvent),
17382        #[prost(message, tag="571")]
17383        Dwc3GadgetGenericCmd(super::Dwc3GadgetGenericCmdFtraceEvent),
17384        #[prost(message, tag="572")]
17385        Dwc3GadgetGiveback(super::Dwc3GadgetGivebackFtraceEvent),
17386        #[prost(message, tag="573")]
17387        Dwc3PrepareTrb(super::Dwc3PrepareTrbFtraceEvent),
17388        #[prost(message, tag="574")]
17389        Dwc3Readl(super::Dwc3ReadlFtraceEvent),
17390        #[prost(message, tag="575")]
17391        Dwc3Writel(super::Dwc3WritelFtraceEvent),
17392        #[prost(message, tag="576")]
17393        CmaAllocFinish(super::CmaAllocFinishFtraceEvent),
17394        #[prost(message, tag="577")]
17395        MmAllocContigMigrateRangeInfo(super::MmAllocContigMigrateRangeInfoFtraceEvent),
17396        #[prost(message, tag="578")]
17397        HostFfaCall(super::HostFfaCallFtraceEvent),
17398        #[prost(message, tag="579")]
17399        DmabufRssStat(super::DmabufRssStatFtraceEvent),
17400        #[prost(message, tag="580")]
17401        IommuIdmap(super::IommuIdmapFtraceEvent),
17402        #[prost(message, tag="581")]
17403        PsciMemProtect(super::PsciMemProtectFtraceEvent),
17404        #[prost(message, tag="582")]
17405        HypervisorHostHcall(super::HypervisorHostHcallFtraceEvent),
17406        #[prost(message, tag="583")]
17407        HypervisorHostSmc(super::HypervisorHostSmcFtraceEvent),
17408        #[prost(message, tag="584")]
17409        HypervisorHypExit(super::HypervisorHypExitFtraceEvent),
17410        #[prost(message, tag="585")]
17411        HypervisorIommuIdmap(super::HypervisorIommuIdmapFtraceEvent),
17412        #[prost(message, tag="586")]
17413        HypervisorPsciMemProtect(super::HypervisorPsciMemProtectFtraceEvent),
17414        #[prost(message, tag="587")]
17415        HypervisorHostMemAbort(super::HypervisorHostMemAbortFtraceEvent),
17416        #[prost(message, tag="588")]
17417        HypervisorHypEnter(super::HypervisorHypEnterFtraceEvent),
17418        #[prost(message, tag="589")]
17419        HypervisorIommuIdmapComplete(super::HypervisorIommuIdmapCompleteFtraceEvent),
17420        #[prost(message, tag="590")]
17421        HypervisorVcpuIllegalTrap(super::HypervisorVcpuIllegalTrapFtraceEvent),
17422        #[prost(message, tag="591")]
17423        DrmSchedJobAddDep(super::DrmSchedJobAddDepFtraceEvent),
17424        #[prost(message, tag="592")]
17425        DrmSchedJobDone(super::DrmSchedJobDoneFtraceEvent),
17426        #[prost(message, tag="593")]
17427        DrmSchedJobQueue(super::DrmSchedJobQueueFtraceEvent),
17428        #[prost(message, tag="594")]
17429        DrmSchedJobRun(super::DrmSchedJobRunFtraceEvent),
17430        #[prost(message, tag="595")]
17431        DrmSchedJobUnschedulable(super::DrmSchedJobUnschedulableFtraceEvent),
17432        #[prost(message, tag="596")]
17433        FwtpPerfettoCounter(super::FwtpPerfettoCounterFtraceEvent),
17434        #[prost(message, tag="597")]
17435        ScsiDispatchCmdError(super::ScsiDispatchCmdErrorFtraceEvent),
17436        #[prost(message, tag="598")]
17437        ScsiDispatchCmdTimeout(super::ScsiDispatchCmdTimeoutFtraceEvent),
17438        #[prost(message, tag="599")]
17439        ScsiEhWakeup(super::ScsiEhWakeupFtraceEvent),
17440    }
17441}
17442// End of protos/perfetto/trace/ftrace/ftrace_event.proto
17443
17444// Begin of protos/perfetto/trace/ftrace/ftrace_stats.proto
17445
17446/// Per-CPU kernel buffer stats for the ftrace data source gathered from
17447/// /sys/kernel/tracing/per_cpu/cpuX/stats.
17448#[derive(Clone, PartialEq, ::prost::Message)]
17449pub struct FtraceCpuStats {
17450    /// CPU index.
17451    #[prost(uint64, optional, tag="1")]
17452    pub cpu: ::core::option::Option<u64>,
17453    /// Number of entries currently in the kernel buffer.
17454    #[prost(uint64, optional, tag="2")]
17455    pub entries: ::core::option::Option<u64>,
17456    /// Number of events lost in kernel buffers due to overwriting of old events
17457    /// before userspace had a chance to drain them. Valid if the buffer is in
17458    /// "overwrite" mode, otherwise see |dropped_events|.
17459    #[prost(uint64, optional, tag="3")]
17460    pub overrun: ::core::option::Option<u64>,
17461    /// This should always be zero. If not the buffer size is way too small or
17462    /// something went wrong with the tracer. Quoting the kernel: "number of
17463    /// commits failing due to the buffer wrapping around while there are
17464    /// uncommitted events, such as during an interrupt storm".
17465    #[prost(uint64, optional, tag="4")]
17466    pub commit_overrun: ::core::option::Option<u64>,
17467    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
17468    /// The field should be named "bytes", but is misnamed for historical reasons.
17469    /// This value has known inaccuracies before Linux v6.6:
17470    /// <https://github.com/torvalds/linux/commit/45d99ea>
17471    #[prost(uint64, optional, tag="5")]
17472    pub bytes_read: ::core::option::Option<u64>,
17473    /// The timestamp for the oldest event still in the ring buffer.
17474    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
17475    #[prost(double, optional, tag="6")]
17476    pub oldest_event_ts: ::core::option::Option<f64>,
17477    /// The current timestamp.
17478    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
17479    #[prost(double, optional, tag="7")]
17480    pub now_ts: ::core::option::Option<f64>,
17481    /// If the kernel buffer has overwrite mode disabled, this will show the number
17482    /// of new events that were lost because the buffer was full. This is similar
17483    /// to |overrun| but only for the overwrite=false case.
17484    #[prost(uint64, optional, tag="8")]
17485    pub dropped_events: ::core::option::Option<u64>,
17486    /// The number of events read (consumed) from the buffer by userspace.
17487    #[prost(uint64, optional, tag="9")]
17488    pub read_events: ::core::option::Option<u64>,
17489}
17490/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
17491#[derive(Clone, PartialEq, ::prost::Message)]
17492pub struct FtraceKprobeStats {
17493    /// Cumulative number of kprobe events generated for this function
17494    #[prost(int64, optional, tag="1")]
17495    pub hits: ::core::option::Option<i64>,
17496    /// Cumulative number of kprobe events that could not be generated for this
17497    /// function and were missed.  This happens when too much nesting
17498    /// happens between a kprobe and its kretprobe, overflowing the
17499    /// maxactives buffer.
17500    #[prost(int64, optional, tag="2")]
17501    pub misses: ::core::option::Option<i64>,
17502}
17503/// Errors and kernel buffer stats for the ftrace data source.
17504#[derive(Clone, PartialEq, ::prost::Message)]
17505pub struct FtraceStats {
17506    /// A pair of FtraceStats is written on every trace flush:
17507    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
17508    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
17509    ///                   before this packet was written. For simple traces this
17510    ///                   will be once at the end of the trace.
17511    #[prost(enumeration="ftrace_stats::Phase", optional, tag="1")]
17512    pub phase: ::core::option::Option<i32>,
17513    /// Per-CPU stats (one entry for each CPU).
17514    #[prost(message, repeated, tag="2")]
17515    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
17516    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
17517    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
17518    /// trace or not. It can be used to debug kptr_restrict or security-related
17519    /// errors.
17520    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
17521    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
17522    #[prost(uint32, optional, tag="3")]
17523    pub kernel_symbols_parsed: ::core::option::Option<u32>,
17524    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
17525    #[prost(uint32, optional, tag="4")]
17526    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
17527    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
17528    /// one or more atrace categories not available on the device.
17529    #[prost(string, optional, tag="5")]
17530    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
17531    /// Error message due to exclusivity violation of a single-tenant feature.
17532    #[prost(string, optional, tag="13")]
17533    pub exclusive_feature_error: ::core::option::Option<::prost::alloc::string::String>,
17534    /// Ftrace events requested by the config but not present on device.
17535    #[prost(string, repeated, tag="6")]
17536    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17537    /// Ftrace events requested by the config and present on device, but which we
17538    /// failed to enable due to permissions, or due to a conflicting option
17539    /// (currently FtraceConfig.disable_generic_events).
17540    #[prost(string, repeated, tag="7")]
17541    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17542    /// The data source was configured to preserve existing events in the ftrace
17543    /// buffer before the start of the trace.
17544    #[prost(bool, optional, tag="8")]
17545    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
17546    /// Unique errors encountered during reading and parsing of the raw ftrace
17547    /// data. Ring buffer ABI related errors will also be recorded in the
17548    /// affected FtraceEventBundles with a timestamp.
17549    /// Any traces with entries in this field should be investigated, as they
17550    /// indicate a bug in perfetto or the kernel.
17551    #[prost(enumeration="FtraceParseStatus", repeated, packed="false", tag="9")]
17552    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
17553    /// Kprobe profile stats for functions hits and misses
17554    #[prost(message, optional, tag="10")]
17555    pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
17556    /// Per-cpu buffer size as returned by buffer_size_kb in pages (rounded up).
17557    /// Added in: perfetto v52.
17558    #[prost(uint32, optional, tag="11")]
17559    pub cpu_buffer_size_pages: ::core::option::Option<u32>,
17560    /// Per-cpu buffer size as cached by our implementation (ftrace muxer), based
17561    /// on the value we're writing into the tracefs control file. Might not be
17562    /// exactly equal to |cpu_buffer_size_pages| due to the kernel allocating extra
17563    /// scratch pages (and/or other factors). Added in: perfetto v52.
17564    #[prost(uint32, optional, tag="12")]
17565    pub cached_cpu_buffer_size_pages: ::core::option::Option<u32>,
17566}
17567/// Nested message and enum types in `FtraceStats`.
17568pub mod ftrace_stats {
17569    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17570    #[repr(i32)]
17571    pub enum Phase {
17572        Unspecified = 0,
17573        StartOfTrace = 1,
17574        EndOfTrace = 2,
17575    }
17576    impl Phase {
17577        /// String value of the enum field names used in the ProtoBuf definition.
17578        ///
17579        /// The values are not transformed in any way and thus are considered stable
17580        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17581        pub fn as_str_name(&self) -> &'static str {
17582            match self {
17583                Phase::Unspecified => "UNSPECIFIED",
17584                Phase::StartOfTrace => "START_OF_TRACE",
17585                Phase::EndOfTrace => "END_OF_TRACE",
17586            }
17587        }
17588    }
17589}
17590// End of protos/perfetto/trace/ftrace/ftrace_stats.proto
17591
17592// Begin of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
17593
17594/// The result of tracing one or more ftrace data pages from a single per-cpu
17595/// kernel ring buffer. If collating multiple pages' worth of events, all of
17596/// them come from contiguous pages, with no kernel data loss in between.
17597#[derive(Clone, PartialEq, ::prost::Message)]
17598pub struct FtraceEventBundle {
17599    #[prost(uint32, optional, tag="1")]
17600    pub cpu: ::core::option::Option<u32>,
17601    #[prost(message, repeated, tag="2")]
17602    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
17603    /// Set to true if there was data loss between the last time we've read from
17604    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
17605    /// in this bundle.
17606    #[prost(bool, optional, tag="3")]
17607    pub lost_events: ::core::option::Option<bool>,
17608    #[prost(message, optional, tag="4")]
17609    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
17610    /// Perfetto will by default try to use the boottime ("boot") clock for ftrace
17611    /// timestamps as that counts during suspend, is available to userspace, and
17612    /// is coherent across cpus.
17613    ///
17614    /// If this field is set, it means that a different clock was used during
17615    /// recording. Either because the boot clock is unavailable (e.g. old kernels
17616    /// before 3.x), or the trace config has set an incompatible option
17617    /// (use_monotonic_raw_clock / preserve_ftrace_buffer). In that case,
17618    /// trace_processor will do best-effort clock alignment using timestamp pairs
17619    /// from |ftrace_timestamp| and |boot_timestamp| fields. This field is omitted
17620    /// when the ftrace clock is "boot", as that is the default assumption.
17621    ///
17622    /// Some clocks (local/global) are technically per-cpu, but we make a
17623    /// simplifying assumption that they are global, as their inter-cpu skew
17624    /// should be reasonably bounded on modern systems.
17625    ///
17626    /// Added in: perfetto v19. Android T (13).
17627    #[prost(enumeration="FtraceClock", optional, tag="5")]
17628    pub ftrace_clock: ::core::option::Option<i32>,
17629    /// The timestamp according to the ftrace clock, taken at the same instant as
17630    /// |boot_timestamp|. Note: timestamping is done at buffer read time, so it
17631    /// will be in the future relative to the data covered by this bundle.
17632    /// Implementation note: Populated by reading the 'now ts:' field in
17633    /// tracefs/per_cpu/cpu0/stat.
17634    ///
17635    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
17636    #[prost(int64, optional, tag="6")]
17637    pub ftrace_timestamp: ::core::option::Option<i64>,
17638    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
17639    /// |ftrace_timestamp|.
17640    ///
17641    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
17642    #[prost(int64, optional, tag="7")]
17643    pub boot_timestamp: ::core::option::Option<i64>,
17644    #[prost(message, repeated, tag="8")]
17645    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
17646    /// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
17647    /// primary difference is that this field tracked the last timestamp read from
17648    /// the per-cpu buffer, while the newer field tracks events that get
17649    /// serialised into the trace.
17650    /// Added in: perfetto v44.
17651    #[prost(uint64, optional, tag="9")]
17652    pub last_read_event_timestamp: ::core::option::Option<u64>,
17653    /// The timestamp (using ftrace clock) of the last event written into this
17654    /// data source on this cpu. In other words: the last event in the previous
17655    /// bundle.
17656    /// Lets the trace processing find an initial timestamp after which ftrace
17657    /// data is known to be valid across all cpus. Of particular importance when
17658    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
17659    /// oldest bundles can skew the first valid timestamp per cpu significantly.
17660    /// Added in: perfetto v47.
17661    #[prost(uint64, optional, tag="10")]
17662    pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
17663    #[prost(message, repeated, tag="11")]
17664    pub generic_event_descriptors: ::prost::alloc::vec::Vec<ftrace_event_bundle::GenericEventDescriptor>,
17665    /// Written only on android builds if the config sets |debug_ftrace_abi|.
17666    /// Contains the raw ring buffer tracing page that the implementation could
17667    /// not parse.
17668    /// Addded in: perfetto v50.
17669    #[prost(bytes="vec", optional, tag="512")]
17670    pub broken_abi_trace_page: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
17671}
17672/// Nested message and enum types in `FtraceEventBundle`.
17673pub mod ftrace_event_bundle {
17674    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
17675    /// a subset of events & their fields is recorded.
17676    /// All fields (except comms) are stored in a structure-of-arrays form, one
17677    /// entry in each repeated field per event.
17678    #[derive(Clone, PartialEq, ::prost::Message)]
17679    pub struct CompactSched {
17680        /// Interned table of unique strings for this bundle.
17681        #[prost(string, repeated, tag="5")]
17682        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17683        /// Delta-encoded timestamps across all sched_switch events within this
17684        /// bundle. The first is absolute, each next one is relative to its
17685        /// predecessor.
17686        #[prost(uint64, repeated, tag="1")]
17687        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
17688        #[prost(int64, repeated, tag="2")]
17689        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
17690        #[prost(int32, repeated, tag="3")]
17691        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
17692        #[prost(int32, repeated, tag="4")]
17693        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
17694        /// One per event, index into |intern_table| corresponding to the
17695        /// next_comm field of the event.
17696        #[prost(uint32, repeated, tag="6")]
17697        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
17698        /// Delta-encoded timestamps across all sched_waking events within this
17699        /// bundle. The first is absolute, each next one is relative to its
17700        /// predecessor.
17701        #[prost(uint64, repeated, tag="7")]
17702        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
17703        #[prost(int32, repeated, tag="8")]
17704        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
17705        #[prost(int32, repeated, tag="9")]
17706        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
17707        #[prost(int32, repeated, tag="10")]
17708        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
17709        /// One per event, index into |intern_table| corresponding to the
17710        /// comm field of the event.
17711        #[prost(uint32, repeated, tag="11")]
17712        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
17713        #[prost(uint32, repeated, tag="12")]
17714        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
17715    }
17716    /// Errors encountered during parsing of the raw ftrace data. In case of ring
17717    /// buffer layout errors, the parser skips the rest of the offending kernel
17718    /// buffer page and continues from the next page.
17719    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
17720    /// seen within the duration of the trace (even if the affected bundles get
17721    /// overwritten in ring buffer mode).
17722    #[derive(Clone, PartialEq, ::prost::Message)]
17723    pub struct FtraceError {
17724        /// Timestamp of the data that we're unable to parse, in the ftrace clock
17725        /// domain. Currently, we use the base timestamp of the tracing page
17726        /// containing the bad record rather than the time of the record itself.
17727        #[prost(uint64, optional, tag="1")]
17728        pub timestamp: ::core::option::Option<u64>,
17729        #[prost(enumeration="super::FtraceParseStatus", optional, tag="2")]
17730        pub status: ::core::option::Option<i32>,
17731    }
17732    /// Describes the serialised |FtraceEvent| protos for events not known at
17733    /// compile time, when using the |denser_generic_event_encoding| option.
17734    /// Addded in: perfetto v50.
17735    #[derive(Clone, PartialEq, ::prost::Message)]
17736    pub struct GenericEventDescriptor {
17737        /// submessage id within FtraceEvent described by |event_descriptor|.
17738        #[prost(int32, optional, tag="1")]
17739        pub field_id: ::core::option::Option<i32>,
17740        /// optional: the event's group, e.g. "sched" for "sched/sched_switch".
17741        /// The event name itself is in |event_descriptor.name|.
17742        #[prost(string, optional, tag="3")]
17743        pub group_name: ::core::option::Option<::prost::alloc::string::String>,
17744        /// serialised DescriptorProto.
17745        #[prost(bytes="vec", optional, tag="2")]
17746        pub event_descriptor: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
17747    }
17748}
17749// End of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
17750
17751// Begin of protos/perfetto/trace/generic_kernel/generic_power.proto
17752
17753/// GenericKernelCpuFrequencyEvent is the standard proto to capture CPU
17754/// frequency change events in a generic kernel implementation.
17755#[derive(Clone, PartialEq, ::prost::Message)]
17756pub struct GenericKernelCpuFrequencyEvent {
17757    /// CPU in which the event occurred.
17758    #[prost(int32, optional, tag="1")]
17759    pub cpu: ::core::option::Option<i32>,
17760    /// Frequency (Hz) of the CPU.
17761    #[prost(int64, optional, tag="2")]
17762    pub freq_hz: ::core::option::Option<i64>,
17763}
17764// End of protos/perfetto/trace/generic_kernel/generic_power.proto
17765
17766// Begin of protos/perfetto/trace/generic_kernel/generic_task.proto
17767
17768/// GenericKernelTaskStateEvent is the standard proto to capture thread state
17769/// change events in a generic kernel implementation. This is mainly for the
17770/// case where scheduler events are not directly supported in the kernel's
17771/// tracing mechanism.
17772///
17773/// By capturing these task state events Perfetto is able to infer higher-level
17774/// events such as context switches and task waking events, providing as much
17775/// parity as possible with established tracing frameworks such as
17776/// Linux's ftrace.
17777#[derive(Clone, PartialEq, ::prost::Message)]
17778pub struct GenericKernelTaskStateEvent {
17779    /// CPU in which the event occurred.
17780    /// This field is only relevant with the TASK_STATE_RUNNING state. There is
17781    /// no specific meaning to the cpu field in a non-running state event.
17782    #[prost(int32, optional, tag="1")]
17783    pub cpu: ::core::option::Option<i32>,
17784    /// Command name for the thread.
17785    #[prost(string, optional, tag="2")]
17786    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17787    /// Thread id.
17788    #[prost(int64, optional, tag="3")]
17789    pub tid: ::core::option::Option<i64>,
17790    /// New state of the thread.
17791    #[prost(enumeration="generic_kernel_task_state_event::TaskStateEnum", optional, tag="4")]
17792    pub state: ::core::option::Option<i32>,
17793    /// Priority of the thread.
17794    /// This value is OS agnostic and should only be interpreted based on the
17795    /// kernel who emitted the message.
17796    #[prost(int32, optional, tag="5")]
17797    pub prio: ::core::option::Option<i32>,
17798}
17799/// Nested message and enum types in `GenericKernelTaskStateEvent`.
17800pub mod generic_kernel_task_state_event {
17801    /// TaskStateEnum represents the valid states of a thread.
17802    /// These states are a generic representation of the actual thread state and
17803    /// don't necessarily map one-to-one to the states the actual OS kernel
17804    /// tracks internally.
17805    ///
17806    /// Note: Consecutive TASK_STATE_RUNNING states for the same TID is considered
17807    /// an error resulting in potential data loss.
17808    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17809    #[repr(i32)]
17810    pub enum TaskStateEnum {
17811        TaskStateUnknown = 0,
17812        TaskStateCreated = 1,
17813        TaskStateRunnable = 2,
17814        TaskStateRunning = 3,
17815        TaskStateInterruptibleSleep = 4,
17816        TaskStateUninterruptibleSleep = 5,
17817        TaskStateStopped = 6,
17818        TaskStateDead = 7,
17819        TaskStateDestroyed = 8,
17820    }
17821    impl TaskStateEnum {
17822        /// String value of the enum field names used in the ProtoBuf definition.
17823        ///
17824        /// The values are not transformed in any way and thus are considered stable
17825        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17826        pub fn as_str_name(&self) -> &'static str {
17827            match self {
17828                TaskStateEnum::TaskStateUnknown => "TASK_STATE_UNKNOWN",
17829                TaskStateEnum::TaskStateCreated => "TASK_STATE_CREATED",
17830                TaskStateEnum::TaskStateRunnable => "TASK_STATE_RUNNABLE",
17831                TaskStateEnum::TaskStateRunning => "TASK_STATE_RUNNING",
17832                TaskStateEnum::TaskStateInterruptibleSleep => "TASK_STATE_INTERRUPTIBLE_SLEEP",
17833                TaskStateEnum::TaskStateUninterruptibleSleep => "TASK_STATE_UNINTERRUPTIBLE_SLEEP",
17834                TaskStateEnum::TaskStateStopped => "TASK_STATE_STOPPED",
17835                TaskStateEnum::TaskStateDead => "TASK_STATE_DEAD",
17836                TaskStateEnum::TaskStateDestroyed => "TASK_STATE_DESTROYED",
17837            }
17838        }
17839    }
17840}
17841/// GenericKernelTaskRenameEvent is the standard proto to capture the renaming
17842/// of a thread.
17843#[derive(Clone, PartialEq, ::prost::Message)]
17844pub struct GenericKernelTaskRenameEvent {
17845    /// Thread id.
17846    #[prost(int64, optional, tag="1")]
17847    pub tid: ::core::option::Option<i64>,
17848    /// New command name for the thread.
17849    #[prost(string, optional, tag="2")]
17850    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17851}
17852/// Metadata about the processes and threads in the trace.
17853/// The main goal of this proto is to provide a generic kernel
17854/// implementation a mechanism to outline its process structure.
17855#[derive(Clone, PartialEq, ::prost::Message)]
17856pub struct GenericKernelProcessTree {
17857    /// List of processes and threads in the kernel. These lists are incremental
17858    /// and not exhaustive. A process and its threads might show up separately in
17859    /// different ProcessTree messages. A thread might not show up at all, if
17860    /// no sched switch activity was detected, for instance:
17861    /// #0 { processes: [{pid: 10, ...}], threads: [{tid: 11, pid: 10}] }
17862    /// #1 { threads: [{tid: 12, pid: 10}] }
17863    /// #2 { processes: [{pid: 20, ...}], threads: [{tid: 13, pid: 10}] }
17864    #[prost(message, repeated, tag="1")]
17865    pub processes: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Process>,
17866    #[prost(message, repeated, tag="2")]
17867    pub threads: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Thread>,
17868}
17869/// Nested message and enum types in `GenericKernelProcessTree`.
17870pub mod generic_kernel_process_tree {
17871    /// Representation of a thread.
17872    #[derive(Clone, PartialEq, ::prost::Message)]
17873    pub struct Thread {
17874        /// Thread id.
17875        #[prost(int64, optional, tag="1")]
17876        pub tid: ::core::option::Option<i64>,
17877        /// Id of the parent process.
17878        #[prost(int64, optional, tag="2")]
17879        pub pid: ::core::option::Option<i64>,
17880        /// The command name of the thread.
17881        #[prost(string, optional, tag="3")]
17882        pub comm: ::core::option::Option<::prost::alloc::string::String>,
17883        /// True if thread is the main thread.
17884        #[prost(bool, optional, tag="4")]
17885        pub is_main_thread: ::core::option::Option<bool>,
17886    }
17887    /// Representation of a process.
17888    #[derive(Clone, PartialEq, ::prost::Message)]
17889    pub struct Process {
17890        /// Process id.
17891        #[prost(int64, optional, tag="1")]
17892        pub pid: ::core::option::Option<i64>,
17893        /// Parent process id.
17894        #[prost(int64, optional, tag="2")]
17895        pub ppid: ::core::option::Option<i64>,
17896        /// The command line of the process.
17897        /// If the cmdline has spaces in it, then we use the characters from
17898        /// position 0 to the first instance of the space char (' ') as the name
17899        /// of the process. If no spaces are present, then the entire cmdline is
17900        /// used as the name.
17901        #[prost(string, optional, tag="3")]
17902        pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
17903    }
17904}
17905// End of protos/perfetto/trace/generic_kernel/generic_task.proto
17906
17907// Begin of protos/perfetto/trace/gpu/gpu_counter_event.proto
17908
17909#[derive(Clone, PartialEq, ::prost::Message)]
17910pub struct GpuCounterEvent {
17911    /// The first trace packet of each session should include counter_spec.
17912    #[prost(message, optional, tag="1")]
17913    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
17914    #[prost(message, repeated, tag="2")]
17915    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
17916    /// optional. Identifier for GPU in a multi-gpu device.
17917    #[prost(int32, optional, tag="3")]
17918    pub gpu_id: ::core::option::Option<i32>,
17919}
17920/// Nested message and enum types in `GpuCounterEvent`.
17921pub mod gpu_counter_event {
17922    #[derive(Clone, PartialEq, ::prost::Message)]
17923    pub struct GpuCounter {
17924        /// required. Identifier for counter.
17925        #[prost(uint32, optional, tag="1")]
17926        pub counter_id: ::core::option::Option<u32>,
17927        /// required. Value of the counter.
17928        #[prost(oneof="gpu_counter::Value", tags="2, 3")]
17929        pub value: ::core::option::Option<gpu_counter::Value>,
17930    }
17931    /// Nested message and enum types in `GpuCounter`.
17932    pub mod gpu_counter {
17933        /// required. Value of the counter.
17934        #[derive(Clone, PartialEq, ::prost::Oneof)]
17935        pub enum Value {
17936            #[prost(int64, tag="2")]
17937            IntValue(i64),
17938            #[prost(double, tag="3")]
17939            DoubleValue(f64),
17940        }
17941    }
17942}
17943// End of protos/perfetto/trace/gpu/gpu_counter_event.proto
17944
17945// Begin of protos/perfetto/trace/gpu/gpu_log.proto
17946
17947/// Message for logging events GPU data producer.
17948#[derive(Clone, PartialEq, ::prost::Message)]
17949pub struct GpuLog {
17950    #[prost(enumeration="gpu_log::Severity", optional, tag="1")]
17951    pub severity: ::core::option::Option<i32>,
17952    #[prost(string, optional, tag="2")]
17953    pub tag: ::core::option::Option<::prost::alloc::string::String>,
17954    #[prost(string, optional, tag="3")]
17955    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
17956}
17957/// Nested message and enum types in `GpuLog`.
17958pub mod gpu_log {
17959    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17960    #[repr(i32)]
17961    pub enum Severity {
17962        LogSeverityUnspecified = 0,
17963        LogSeverityVerbose = 1,
17964        LogSeverityDebug = 2,
17965        LogSeverityInfo = 3,
17966        LogSeverityWarning = 4,
17967        LogSeverityError = 5,
17968    }
17969    impl Severity {
17970        /// String value of the enum field names used in the ProtoBuf definition.
17971        ///
17972        /// The values are not transformed in any way and thus are considered stable
17973        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17974        pub fn as_str_name(&self) -> &'static str {
17975            match self {
17976                Severity::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
17977                Severity::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
17978                Severity::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
17979                Severity::LogSeverityInfo => "LOG_SEVERITY_INFO",
17980                Severity::LogSeverityWarning => "LOG_SEVERITY_WARNING",
17981                Severity::LogSeverityError => "LOG_SEVERITY_ERROR",
17982            }
17983        }
17984    }
17985}
17986// End of protos/perfetto/trace/gpu/gpu_log.proto
17987
17988// Begin of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
17989
17990/// next id: 15
17991#[derive(Clone, PartialEq, ::prost::Message)]
17992pub struct GpuRenderStageEvent {
17993    /// required. Unique ID for the event.
17994    #[prost(uint64, optional, tag="1")]
17995    pub event_id: ::core::option::Option<u64>,
17996    /// optional. Duration of the event in nanoseconds. If unset, this is a
17997    /// single time point event.
17998    #[prost(uint64, optional, tag="2")]
17999    pub duration: ::core::option::Option<u64>,
18000    /// required. ID to a hardware queue description in the specifications.
18001    /// InternedGpuRenderStageSpecification
18002    #[prost(uint64, optional, tag="13")]
18003    pub hw_queue_iid: ::core::option::Option<u64>,
18004    /// required. ID to a render stage description in the specifications.
18005    /// InternedGpuRenderStageSpecification
18006    #[prost(uint64, optional, tag="14")]
18007    pub stage_iid: ::core::option::Option<u64>,
18008    /// optional. Identifier for GPU in a multi-gpu device.
18009    #[prost(int32, optional, tag="11")]
18010    pub gpu_id: ::core::option::Option<i32>,
18011    /// required. Graphics context for the event.
18012    /// For OpenGL, this is the GL context.
18013    /// For Vulkan, this is the VkDevice.
18014    #[prost(uint64, optional, tag="5")]
18015    pub context: ::core::option::Option<u64>,
18016    /// optional. The render target for this event.
18017    /// For OpenGL, this is the GL frame buffer handle.
18018    /// For Vulkan, this is the VkFrameBuffer handle.
18019    #[prost(uint64, optional, tag="8")]
18020    pub render_target_handle: ::core::option::Option<u64>,
18021    /// optional. Submission ID generated by the UMD.
18022    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
18023    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
18024    /// to a single API submission should share the same ID.
18025    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
18026    #[prost(uint32, optional, tag="10")]
18027    pub submission_id: ::core::option::Option<u32>,
18028    #[prost(message, repeated, tag="6")]
18029    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
18030    // VULKAN SPECIFICS
18031
18032    /// optional. The Vulkan render pass handle.
18033    #[prost(uint64, optional, tag="9")]
18034    pub render_pass_handle: ::core::option::Option<u64>,
18035    /// optional. An ID for the render pass instance. This is used to correlate
18036    /// different events on different queues produced by the same Vulkan render
18037    /// pass instance.
18038    #[prost(uint64, optional, tag="16")]
18039    pub render_pass_instance_id: ::core::option::Option<u64>,
18040    /// optional. A bit mask representing which render subpasses contributed to
18041    /// this render stage event.  Subpass index 0 is represented by setting the
18042    /// LSB of the mask.  Additional mask can be added for subpass index greater
18043    /// than 63.
18044    #[prost(uint64, repeated, packed="false", tag="15")]
18045    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
18046    /// optional. The Vulkan command buffer handle.
18047    #[prost(uint64, optional, tag="12")]
18048    pub command_buffer_handle: ::core::option::Option<u64>,
18049    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
18050    /// InternedGpuRenderStageSpecification instead.
18051    #[deprecated]
18052    #[prost(message, optional, tag="7")]
18053    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
18054    /// Deprecated. Use hw_queue_iid instead;
18055    #[deprecated]
18056    #[prost(int32, optional, tag="3")]
18057    pub hw_queue_id: ::core::option::Option<i32>,
18058    /// Deprecated. Use stage_iid instead;
18059    #[deprecated]
18060    #[prost(int32, optional, tag="4")]
18061    pub stage_id: ::core::option::Option<i32>,
18062}
18063/// Nested message and enum types in `GpuRenderStageEvent`.
18064pub mod gpu_render_stage_event {
18065    /// optional. Additional data for the user. This may include attributes for
18066    /// the event like resource ids, shaders, etc.
18067    #[derive(Clone, PartialEq, ::prost::Message)]
18068    pub struct ExtraData {
18069        #[prost(string, optional, tag="1")]
18070        pub name: ::core::option::Option<::prost::alloc::string::String>,
18071        #[prost(string, optional, tag="2")]
18072        pub value: ::core::option::Option<::prost::alloc::string::String>,
18073    }
18074    // DEPRECATED
18075
18076    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
18077    /// The first trace packet of each session should include a Specifications
18078    /// to enumerate *all* IDs that will be used. The timestamp of this packet
18079    /// must be earlier than all other packets. Only one packet with Specifications
18080    /// is expected.
18081    #[derive(Clone, PartialEq, ::prost::Message)]
18082    pub struct Specifications {
18083        #[prost(message, optional, tag="1")]
18084        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
18085        /// Labels to categorize the hw Queue this event goes on.
18086        #[prost(message, repeated, tag="2")]
18087        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
18088        /// Labels to categorize render stage(binning, render, compute etc).
18089        #[prost(message, repeated, tag="3")]
18090        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
18091    }
18092    /// Nested message and enum types in `Specifications`.
18093    pub mod specifications {
18094        #[derive(Clone, PartialEq, ::prost::Message)]
18095        pub struct ContextSpec {
18096            #[prost(uint64, optional, tag="1")]
18097            pub context: ::core::option::Option<u64>,
18098            #[prost(int32, optional, tag="2")]
18099            pub pid: ::core::option::Option<i32>,
18100        }
18101        #[derive(Clone, PartialEq, ::prost::Message)]
18102        pub struct Description {
18103            #[prost(string, optional, tag="1")]
18104            pub name: ::core::option::Option<::prost::alloc::string::String>,
18105            #[prost(string, optional, tag="2")]
18106            pub description: ::core::option::Option<::prost::alloc::string::String>,
18107        }
18108    }
18109}
18110// Interned data.
18111
18112/// The iid is the numeric value of either the GL Context or the VkDevice
18113/// handle.
18114#[derive(Clone, PartialEq, ::prost::Message)]
18115pub struct InternedGraphicsContext {
18116    #[prost(uint64, optional, tag="1")]
18117    pub iid: ::core::option::Option<u64>,
18118    #[prost(int32, optional, tag="2")]
18119    pub pid: ::core::option::Option<i32>,
18120    #[prost(enumeration="interned_graphics_context::Api", optional, tag="3")]
18121    pub api: ::core::option::Option<i32>,
18122}
18123/// Nested message and enum types in `InternedGraphicsContext`.
18124pub mod interned_graphics_context {
18125    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18126    #[repr(i32)]
18127    pub enum Api {
18128        Undefined = 0,
18129        OpenGl = 1,
18130        Vulkan = 2,
18131        OpenCl = 3,
18132    }
18133    impl Api {
18134        /// String value of the enum field names used in the ProtoBuf definition.
18135        ///
18136        /// The values are not transformed in any way and thus are considered stable
18137        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18138        pub fn as_str_name(&self) -> &'static str {
18139            match self {
18140                Api::Undefined => "UNDEFINED",
18141                Api::OpenGl => "OPEN_GL",
18142                Api::Vulkan => "VULKAN",
18143                Api::OpenCl => "OPEN_CL",
18144            }
18145        }
18146    }
18147}
18148#[derive(Clone, PartialEq, ::prost::Message)]
18149pub struct InternedGpuRenderStageSpecification {
18150    #[prost(uint64, optional, tag="1")]
18151    pub iid: ::core::option::Option<u64>,
18152    #[prost(string, optional, tag="2")]
18153    pub name: ::core::option::Option<::prost::alloc::string::String>,
18154    #[prost(string, optional, tag="3")]
18155    pub description: ::core::option::Option<::prost::alloc::string::String>,
18156    #[prost(enumeration="interned_gpu_render_stage_specification::RenderStageCategory", optional, tag="4")]
18157    pub category: ::core::option::Option<i32>,
18158}
18159/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
18160pub mod interned_gpu_render_stage_specification {
18161    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18162    #[repr(i32)]
18163    pub enum RenderStageCategory {
18164        Other = 0,
18165        Graphics = 1,
18166        Compute = 2,
18167    }
18168    impl RenderStageCategory {
18169        /// String value of the enum field names used in the ProtoBuf definition.
18170        ///
18171        /// The values are not transformed in any way and thus are considered stable
18172        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18173        pub fn as_str_name(&self) -> &'static str {
18174            match self {
18175                RenderStageCategory::Other => "OTHER",
18176                RenderStageCategory::Graphics => "GRAPHICS",
18177                RenderStageCategory::Compute => "COMPUTE",
18178            }
18179        }
18180    }
18181}
18182// End of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
18183
18184// Begin of protos/perfetto/trace/gpu/vulkan_api_event.proto
18185
18186/// Message for recording the Vulkan call.
18187#[derive(Clone, PartialEq, ::prost::Message)]
18188pub struct VulkanApiEvent {
18189    #[prost(oneof="vulkan_api_event::Event", tags="1, 2")]
18190    pub event: ::core::option::Option<vulkan_api_event::Event>,
18191}
18192/// Nested message and enum types in `VulkanApiEvent`.
18193pub mod vulkan_api_event {
18194    /// For recording vkSetDebugUtilsObjectNameEXT and
18195    /// vkDebugMarkerSetObjectNameEXT
18196    #[derive(Clone, PartialEq, ::prost::Message)]
18197    pub struct VkDebugUtilsObjectName {
18198        #[prost(uint32, optional, tag="1")]
18199        pub pid: ::core::option::Option<u32>,
18200        #[prost(uint64, optional, tag="2")]
18201        pub vk_device: ::core::option::Option<u64>,
18202        /// VkObjectType.  Value must match
18203        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
18204        #[prost(int32, optional, tag="3")]
18205        pub object_type: ::core::option::Option<i32>,
18206        #[prost(uint64, optional, tag="4")]
18207        pub object: ::core::option::Option<u64>,
18208        #[prost(string, optional, tag="5")]
18209        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
18210    }
18211    /// For recording vkQueueSubmit call.
18212    #[derive(Clone, PartialEq, ::prost::Message)]
18213    pub struct VkQueueSubmit {
18214        #[prost(uint64, optional, tag="1")]
18215        pub duration_ns: ::core::option::Option<u64>,
18216        #[prost(uint32, optional, tag="2")]
18217        pub pid: ::core::option::Option<u32>,
18218        #[prost(uint32, optional, tag="3")]
18219        pub tid: ::core::option::Option<u32>,
18220        #[prost(uint64, optional, tag="4")]
18221        pub vk_queue: ::core::option::Option<u64>,
18222        #[prost(uint64, repeated, packed="false", tag="5")]
18223        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
18224        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
18225        /// submission_id must match GpuRenderStageEvent.submission_id if the
18226        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
18227        #[prost(uint32, optional, tag="6")]
18228        pub submission_id: ::core::option::Option<u32>,
18229    }
18230    #[derive(Clone, PartialEq, ::prost::Oneof)]
18231    pub enum Event {
18232        #[prost(message, tag="1")]
18233        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
18234        #[prost(message, tag="2")]
18235        VkQueueSubmit(VkQueueSubmit),
18236    }
18237}
18238// End of protos/perfetto/trace/gpu/vulkan_api_event.proto
18239
18240// Begin of protos/perfetto/trace/gpu/vulkan_memory_event.proto
18241
18242/// All the information that cannot be sent within a VulkanMemoryEvent message,
18243/// are sent as annotations to the main memory event. One example is the
18244/// properties of the object that consumes the allocated memory, for example, a
18245/// buffer or an image.
18246/// key_iid and string_iid are both interned strings. Original string value is
18247/// stored in vulkan_memory_keys from
18248/// protos/perfetto/trace/interned_data/interned_data.proto.
18249#[derive(Clone, PartialEq, ::prost::Message)]
18250pub struct VulkanMemoryEventAnnotation {
18251    #[prost(uint64, optional, tag="1")]
18252    pub key_iid: ::core::option::Option<u64>,
18253    #[prost(oneof="vulkan_memory_event_annotation::Value", tags="2, 3, 4")]
18254    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
18255}
18256/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
18257pub mod vulkan_memory_event_annotation {
18258    #[derive(Clone, PartialEq, ::prost::Oneof)]
18259    pub enum Value {
18260        #[prost(int64, tag="2")]
18261        IntValue(i64),
18262        #[prost(double, tag="3")]
18263        DoubleValue(f64),
18264        #[prost(uint64, tag="4")]
18265        StringIid(u64),
18266    }
18267}
18268/// Each VulkanMemoryEvent encompasses information regarding one single function
18269/// call that results in reserving, binding or freeing host or GPU memory. There
18270/// is a special message type, ANNOTATIONS, which is used to communicate
18271/// information that are not directly related to a memory event, nonetheless are
18272/// essential to understand the memory usage. An example is the size and memory
18273/// types of the memory heaps.
18274///
18275/// Next reserved id: 10 (up to 15).
18276/// Next id: 21.
18277#[derive(Clone, PartialEq, ::prost::Message)]
18278pub struct VulkanMemoryEvent {
18279    #[prost(enumeration="vulkan_memory_event::Source", optional, tag="1")]
18280    pub source: ::core::option::Option<i32>,
18281    #[prost(enumeration="vulkan_memory_event::Operation", optional, tag="2")]
18282    pub operation: ::core::option::Option<i32>,
18283    #[prost(int64, optional, tag="3")]
18284    pub timestamp: ::core::option::Option<i64>,
18285    #[prost(uint32, optional, tag="4")]
18286    pub pid: ::core::option::Option<u32>,
18287    #[prost(fixed64, optional, tag="5")]
18288    pub memory_address: ::core::option::Option<u64>,
18289    #[prost(uint64, optional, tag="6")]
18290    pub memory_size: ::core::option::Option<u64>,
18291    /// Interned string. Original string value is stored in function_names from
18292    /// protos/perfetto/trace/interned_data/interned_data.proto.
18293    #[prost(uint64, optional, tag="7")]
18294    pub caller_iid: ::core::option::Option<u64>,
18295    #[prost(enumeration="vulkan_memory_event::AllocationScope", optional, tag="8")]
18296    pub allocation_scope: ::core::option::Option<i32>,
18297    /// Extra related information, e.g., create configs, etc.
18298    #[prost(message, repeated, tag="9")]
18299    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
18300    /// Field IDs used for device memory (low sampling rate)
18301    #[prost(fixed64, optional, tag="16")]
18302    pub device: ::core::option::Option<u64>,
18303    #[prost(fixed64, optional, tag="17")]
18304    pub device_memory: ::core::option::Option<u64>,
18305    #[prost(uint32, optional, tag="18")]
18306    pub memory_type: ::core::option::Option<u32>,
18307    #[prost(uint32, optional, tag="19")]
18308    pub heap: ::core::option::Option<u32>,
18309    #[prost(fixed64, optional, tag="20")]
18310    pub object_handle: ::core::option::Option<u64>,
18311}
18312/// Nested message and enum types in `VulkanMemoryEvent`.
18313pub mod vulkan_memory_event {
18314    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18315    #[repr(i32)]
18316    pub enum Source {
18317        Unspecified = 0,
18318        Driver = 1,
18319        Device = 2,
18320        DeviceMemory = 3,
18321        Buffer = 4,
18322        Image = 5,
18323    }
18324    impl Source {
18325        /// String value of the enum field names used in the ProtoBuf definition.
18326        ///
18327        /// The values are not transformed in any way and thus are considered stable
18328        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18329        pub fn as_str_name(&self) -> &'static str {
18330            match self {
18331                Source::Unspecified => "SOURCE_UNSPECIFIED",
18332                Source::Driver => "SOURCE_DRIVER",
18333                Source::Device => "SOURCE_DEVICE",
18334                Source::DeviceMemory => "SOURCE_DEVICE_MEMORY",
18335                Source::Buffer => "SOURCE_BUFFER",
18336                Source::Image => "SOURCE_IMAGE",
18337            }
18338        }
18339    }
18340    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18341    #[repr(i32)]
18342    pub enum Operation {
18343        OpUnspecified = 0,
18344        /// alloc, create
18345        OpCreate = 1,
18346        /// free, destroy(non-bound)
18347        OpDestroy = 2,
18348        /// bind buffer and image
18349        OpBind = 3,
18350        /// destroy (bound)
18351        OpDestroyBound = 4,
18352        /// only annotations
18353        OpAnnotations = 5,
18354    }
18355    impl Operation {
18356        /// String value of the enum field names used in the ProtoBuf definition.
18357        ///
18358        /// The values are not transformed in any way and thus are considered stable
18359        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18360        pub fn as_str_name(&self) -> &'static str {
18361            match self {
18362                Operation::OpUnspecified => "OP_UNSPECIFIED",
18363                Operation::OpCreate => "OP_CREATE",
18364                Operation::OpDestroy => "OP_DESTROY",
18365                Operation::OpBind => "OP_BIND",
18366                Operation::OpDestroyBound => "OP_DESTROY_BOUND",
18367                Operation::OpAnnotations => "OP_ANNOTATIONS",
18368            }
18369        }
18370    }
18371    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18372    #[repr(i32)]
18373    pub enum AllocationScope {
18374        ScopeUnspecified = 0,
18375        ScopeCommand = 1,
18376        ScopeObject = 2,
18377        ScopeCache = 3,
18378        ScopeDevice = 4,
18379        ScopeInstance = 5,
18380    }
18381    impl AllocationScope {
18382        /// String value of the enum field names used in the ProtoBuf definition.
18383        ///
18384        /// The values are not transformed in any way and thus are considered stable
18385        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18386        pub fn as_str_name(&self) -> &'static str {
18387            match self {
18388                AllocationScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
18389                AllocationScope::ScopeCommand => "SCOPE_COMMAND",
18390                AllocationScope::ScopeObject => "SCOPE_OBJECT",
18391                AllocationScope::ScopeCache => "SCOPE_CACHE",
18392                AllocationScope::ScopeDevice => "SCOPE_DEVICE",
18393                AllocationScope::ScopeInstance => "SCOPE_INSTANCE",
18394            }
18395        }
18396    }
18397}
18398// End of protos/perfetto/trace/gpu/vulkan_memory_event.proto
18399
18400// Begin of protos/perfetto/trace/profiling/profile_common.proto
18401
18402/// The interning fields in this file can refer to 2 different intern tables,
18403/// depending on the message they are used in. If the interned fields are present
18404/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
18405/// should be used. If the intered fields are present in the
18406/// StreamingProfilePacket proto, then the intern tables included in all of the
18407/// previous InternedData message with same sequence ID should be used.
18408/// TODO(fmayer): Move to the intern tables to a common location.
18409#[derive(Clone, PartialEq, ::prost::Message)]
18410pub struct InternedString {
18411    /// Interning key. Starts from 1, 0 is the same as "not set".
18412    #[prost(uint64, optional, tag="1")]
18413    pub iid: ::core::option::Option<u64>,
18414    /// The actual string.
18415    #[prost(bytes="vec", optional, tag="2")]
18416    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18417}
18418/// Source line info.
18419#[derive(Clone, PartialEq, ::prost::Message)]
18420pub struct Line {
18421    #[prost(string, optional, tag="1")]
18422    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
18423    #[prost(string, optional, tag="2")]
18424    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
18425    #[prost(uint32, optional, tag="3")]
18426    pub line_number: ::core::option::Option<u32>,
18427}
18428/// Symbols for a given address in a module.
18429#[derive(Clone, PartialEq, ::prost::Message)]
18430pub struct AddressSymbols {
18431    #[prost(uint64, optional, tag="1")]
18432    pub address: ::core::option::Option<u64>,
18433    /// Source lines that correspond to this address.
18434    ///
18435    /// These are repeated because when inlining happens, multiple functions'
18436    /// frames can be at a single address. Imagine function Foo calling the
18437    /// std::vector<int> constructor, which gets inlined at 0xf00. We then get
18438    /// both Foo and the std::vector<int> constructor when we symbolize the
18439    /// address.
18440    #[prost(message, repeated, tag="2")]
18441    pub lines: ::prost::alloc::vec::Vec<Line>,
18442}
18443/// Symbols for addresses seen in a module.
18444/// Used in re-symbolisation of complete traces.
18445#[derive(Clone, PartialEq, ::prost::Message)]
18446pub struct ModuleSymbols {
18447    /// Fully qualified path to the mapping.
18448    /// E.g. /system/lib64/libc.so.
18449    #[prost(string, optional, tag="1")]
18450    pub path: ::core::option::Option<::prost::alloc::string::String>,
18451    /// .note.gnu.build-id on Linux (not hex encoded).
18452    /// uuid on MacOS.
18453    /// Module GUID on Windows.
18454    #[prost(string, optional, tag="2")]
18455    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
18456    #[prost(message, repeated, tag="3")]
18457    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
18458}
18459#[derive(Clone, PartialEq, ::prost::Message)]
18460pub struct Mapping {
18461    /// Interning key.
18462    /// Starts from 1, 0 is the same as "not set".
18463    #[prost(uint64, optional, tag="1")]
18464    pub iid: ::core::option::Option<u64>,
18465    /// Interning key.
18466    /// Starts from 1, 0 is the same as "not set".
18467    #[prost(uint64, optional, tag="2")]
18468    pub build_id: ::core::option::Option<u64>,
18469    // The linker may create multiple memory mappings for the same shared
18470    // library.
18471    // This is so that the ELF header is mapped as read only, while the
18472    // executable memory is mapped as executable only.
18473    // The details of this depend on the linker, a possible mapping of an ELF
18474    // file is this:
18475    //          +----------------------+
18476    // ELF     |xxxxxxxxxyyyyyyyyyyyyy|
18477    //          +---------+------------+
18478    //          |         |
18479    //          | read    | executable
18480    //          v mapping v mapping
18481    //          +----------------------+
18482    // Memory  |xxxxxxxxx|yyyyyyyyyyyy|
18483    //          +------------------+---+
18484    //          ^         ^        ^
18485    //          +         +        +
18486    //        start     exact    relpc
18487    //        offset   offset    0x1800
18488    //        0x0000   0x1000
18489    //
18490    // exact_offset is the offset into the library file of this mapping.
18491    // start_offset is the offset into the library file of the first mapping
18492    // for that library. For native libraries (.so files) this should be 0.
18493
18494    /// This is not set on Android 10.
18495    #[prost(uint64, optional, tag="8")]
18496    pub exact_offset: ::core::option::Option<u64>,
18497    #[prost(uint64, optional, tag="3")]
18498    pub start_offset: ::core::option::Option<u64>,
18499    #[prost(uint64, optional, tag="4")]
18500    pub start: ::core::option::Option<u64>,
18501    #[prost(uint64, optional, tag="5")]
18502    pub end: ::core::option::Option<u64>,
18503    /// Libunwindstack-specific concept, not to be confused with bionic linker's
18504    /// notion of load_bias. Needed to correct relative pc addresses (as produced
18505    /// by libunwindstack) when doing offline resymbolisation.
18506    ///
18507    /// For an executable ELF PT_LOAD segment, this is:
18508    ///    p_vaddr - p_offset
18509    ///
18510    /// Where p_offset means that the code is at that offset into the ELF file on
18511    /// disk. While p_vaddr is the offset at which the code gets *mapped*, relative
18512    /// to where the linker loads the ELF into the address space. For most ELFs,
18513    /// the two values are identical and therefore load_bias is zero.
18514    #[prost(uint64, optional, tag="6")]
18515    pub load_bias: ::core::option::Option<u64>,
18516    /// E.g. ["system", "lib64", "libc.so"]
18517    /// id of string.
18518    #[prost(uint64, repeated, packed="false", tag="7")]
18519    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
18520}
18521#[derive(Clone, PartialEq, ::prost::Message)]
18522pub struct Frame {
18523    /// Interning key. Starts from 1, 0 is the same as "not set".
18524    #[prost(uint64, optional, tag="1")]
18525    pub iid: ::core::option::Option<u64>,
18526    /// E.g. "fopen"
18527    /// id of string.
18528    #[prost(uint64, optional, tag="2")]
18529    pub function_name_id: ::core::option::Option<u64>,
18530    /// The mapping in which this frame's instruction pointer resides.
18531    /// iid of Mapping.iid.
18532    ///
18533    /// If set (non-zero), rel_pc MUST also be set. If mapping_id is 0 (not set),
18534    /// this frame has no associated memory mapping (e.g., symbolized frames
18535    /// without address information).
18536    ///
18537    /// Starts from 1, 0 is the same as "not set".
18538    #[prost(uint64, optional, tag="3")]
18539    pub mapping_id: ::core::option::Option<u64>,
18540    /// Instruction pointer relative to the start of the mapping.
18541    /// MUST be set if mapping_id is set (non-zero). Ignored if mapping_id is 0.
18542    #[prost(uint64, optional, tag="4")]
18543    pub rel_pc: ::core::option::Option<u64>,
18544    /// Source file path for this frame.
18545    /// This is typically set during online symbolization when symbol information
18546    /// is available at trace collection time. If not set, source file paths may be
18547    /// added later via offline symbolization (see ModuleSymbols).
18548    ///
18549    /// Starts from 1, 0 is the same as "not set".
18550    ///
18551    /// iid of InternedData.source_paths.
18552    #[prost(uint64, optional, tag="5")]
18553    pub source_path_iid: ::core::option::Option<u64>,
18554    /// Line number in the source file for this frame.
18555    /// This is typically set during online symbolization when symbol information
18556    /// is available at trace collection time. If not set, line numbers may be
18557    /// added later via offline symbolization (see ModuleSymbols).
18558    #[prost(uint32, optional, tag="6")]
18559    pub line_number: ::core::option::Option<u32>,
18560}
18561#[derive(Clone, PartialEq, ::prost::Message)]
18562pub struct Callstack {
18563    /// Interning key. Starts from 1, 0 is the same as "not set".
18564    #[prost(uint64, optional, tag="1")]
18565    pub iid: ::core::option::Option<u64>,
18566    /// Frames of this callstack. Bottom frame first.
18567    #[prost(uint64, repeated, packed="false", tag="2")]
18568    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
18569}
18570// End of protos/perfetto/trace/profiling/profile_common.proto
18571
18572// Begin of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
18573
18574#[derive(Clone, PartialEq, ::prost::Message)]
18575pub struct HistogramName {
18576    #[prost(uint64, optional, tag="1")]
18577    pub iid: ::core::option::Option<u64>,
18578    #[prost(string, optional, tag="2")]
18579    pub name: ::core::option::Option<::prost::alloc::string::String>,
18580}
18581/// An individual histogram sample logged via Chrome's UMA metrics system.
18582#[derive(Clone, PartialEq, ::prost::Message)]
18583pub struct ChromeHistogramSample {
18584    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
18585    /// both must be present.
18586    #[prost(uint64, optional, tag="1")]
18587    pub name_hash: ::core::option::Option<u64>,
18588    #[prost(string, optional, tag="2")]
18589    pub name: ::core::option::Option<::prost::alloc::string::String>,
18590    #[prost(int64, optional, tag="3")]
18591    pub sample: ::core::option::Option<i64>,
18592    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
18593    #[prost(uint64, optional, tag="4")]
18594    pub name_iid: ::core::option::Option<u64>,
18595}
18596// End of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
18597
18598// Begin of protos/perfetto/trace/track_event/debug_annotation.proto
18599
18600/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
18601/// macros. Users of the Perfetto SDK should prefer to use the
18602/// perfetto::TracedValue API to fill these protos, rather than filling them
18603/// manually.
18604///
18605/// Debug annotations are intended for debug use and are not considered a stable
18606/// API of the trace contents. Trace-based metrics that use debug annotation
18607/// values are prone to breakage, so please rely on typed TrackEvent fields for
18608/// these instead.
18609///
18610/// DebugAnnotations support nested arrays and dictionaries. Each entry is
18611/// encoded as a single DebugAnnotation message. Only dictionary entries
18612/// set the "name" field. The TrackEvent message forms an implicit root
18613/// dictionary.
18614///
18615/// Example TrackEvent with nested annotations:
18616///    track_event {
18617///      debug_annotations {
18618///        name: "foo"
18619///        dict_entries {
18620///          name: "a"
18621///          bool_value: true
18622///        }
18623///        dict_entries {
18624///          name: "b"
18625///          int_value: 123
18626///        }
18627///      }
18628///      debug_annotations {
18629///        name: "bar"
18630///        array_values {
18631///          string_value: "hello"
18632///        }
18633///        array_values {
18634///          string_value: "world"
18635///        }
18636///      }
18637///    }
18638///
18639/// Next ID: 18.
18640/// Reserved ID: 15
18641#[derive(Clone, PartialEq, ::prost::Message)]
18642pub struct DebugAnnotation {
18643    #[prost(bytes="vec", optional, tag="14")]
18644    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18645    #[prost(message, repeated, tag="11")]
18646    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
18647    #[prost(message, repeated, tag="12")]
18648    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
18649    /// Name fields are set only for dictionary entries.
18650    #[prost(oneof="debug_annotation::NameField", tags="1, 10")]
18651    pub name_field: ::core::option::Option<debug_annotation::NameField>,
18652    #[prost(oneof="debug_annotation::Value", tags="2, 3, 4, 5, 7, 8, 9, 6, 17")]
18653    pub value: ::core::option::Option<debug_annotation::Value>,
18654    /// Used to embed arbitrary proto messages (which are also typically used to
18655    /// represent typed TrackEvent arguments). |proto_type_name| or
18656    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
18657    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
18658    /// proto messages. See |TracedValue::WriteProto| for more details.
18659    #[prost(oneof="debug_annotation::ProtoTypeDescriptor", tags="16, 13")]
18660    pub proto_type_descriptor: ::core::option::Option<debug_annotation::ProtoTypeDescriptor>,
18661}
18662/// Nested message and enum types in `DebugAnnotation`.
18663pub mod debug_annotation {
18664    /// Deprecated legacy way to use nested values. Only kept for
18665    /// backwards-compatibility in TraceProcessor. May be removed in the future -
18666    /// code filling protos should use |dict_entries| and |array_values| instead.
18667    #[derive(Clone, PartialEq, ::prost::Message)]
18668    pub struct NestedValue {
18669        #[prost(enumeration="nested_value::NestedType", optional, tag="1")]
18670        pub nested_type: ::core::option::Option<i32>,
18671        #[prost(string, repeated, tag="2")]
18672        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18673        #[prost(message, repeated, tag="3")]
18674        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
18675        #[prost(message, repeated, tag="4")]
18676        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
18677        #[prost(int64, optional, tag="5")]
18678        pub int_value: ::core::option::Option<i64>,
18679        #[prost(double, optional, tag="6")]
18680        pub double_value: ::core::option::Option<f64>,
18681        #[prost(bool, optional, tag="7")]
18682        pub bool_value: ::core::option::Option<bool>,
18683        #[prost(string, optional, tag="8")]
18684        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
18685    }
18686    /// Nested message and enum types in `NestedValue`.
18687    pub mod nested_value {
18688        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18689        #[repr(i32)]
18690        pub enum NestedType {
18691            /// leaf value.
18692            Unspecified = 0,
18693            Dict = 1,
18694            Array = 2,
18695        }
18696        impl NestedType {
18697            /// String value of the enum field names used in the ProtoBuf definition.
18698            ///
18699            /// The values are not transformed in any way and thus are considered stable
18700            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18701            pub fn as_str_name(&self) -> &'static str {
18702                match self {
18703                    NestedType::Unspecified => "UNSPECIFIED",
18704                    NestedType::Dict => "DICT",
18705                    NestedType::Array => "ARRAY",
18706                }
18707            }
18708        }
18709    }
18710    /// Name fields are set only for dictionary entries.
18711    #[derive(Clone, PartialEq, ::prost::Oneof)]
18712    pub enum NameField {
18713        /// interned DebugAnnotationName.
18714        #[prost(uint64, tag="1")]
18715        NameIid(u64),
18716        /// non-interned variant.
18717        #[prost(string, tag="10")]
18718        Name(::prost::alloc::string::String),
18719    }
18720    #[derive(Clone, PartialEq, ::prost::Oneof)]
18721    pub enum Value {
18722        #[prost(bool, tag="2")]
18723        BoolValue(bool),
18724        #[prost(uint64, tag="3")]
18725        UintValue(u64),
18726        #[prost(int64, tag="4")]
18727        IntValue(i64),
18728        #[prost(double, tag="5")]
18729        DoubleValue(f64),
18730        /// Pointers are stored in a separate type as the JSON output treats them
18731        /// differently from other uint64 values.
18732        #[prost(uint64, tag="7")]
18733        PointerValue(u64),
18734        /// Deprecated. Use dict_entries / array_values instead.
18735        #[prost(message, tag="8")]
18736        NestedValue(NestedValue),
18737        /// Legacy instrumentation may not support conversion of nested data to
18738        /// NestedValue yet.
18739        #[prost(string, tag="9")]
18740        LegacyJsonValue(::prost::alloc::string::String),
18741        /// interned and non-interned variants of strings.
18742        #[prost(string, tag="6")]
18743        StringValue(::prost::alloc::string::String),
18744        /// Corresponds to |debug_annotation_string_values| field in InternedData.
18745        #[prost(uint64, tag="17")]
18746        StringValueIid(u64),
18747    }
18748    /// Used to embed arbitrary proto messages (which are also typically used to
18749    /// represent typed TrackEvent arguments). |proto_type_name| or
18750    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
18751    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
18752    /// proto messages. See |TracedValue::WriteProto| for more details.
18753    #[derive(Clone, PartialEq, ::prost::Oneof)]
18754    pub enum ProtoTypeDescriptor {
18755        #[prost(string, tag="16")]
18756        ProtoTypeName(::prost::alloc::string::String),
18757        /// interned DebugAnnotationValueTypeName.
18758        #[prost(uint64, tag="13")]
18759        ProtoTypeNameIid(u64),
18760    }
18761}
18762// --------------------
18763// Interned data types:
18764// --------------------
18765
18766#[derive(Clone, PartialEq, ::prost::Message)]
18767pub struct DebugAnnotationName {
18768    #[prost(uint64, optional, tag="1")]
18769    pub iid: ::core::option::Option<u64>,
18770    #[prost(string, optional, tag="2")]
18771    pub name: ::core::option::Option<::prost::alloc::string::String>,
18772}
18773/// See the |proto_type_descriptor| comment.
18774#[derive(Clone, PartialEq, ::prost::Message)]
18775pub struct DebugAnnotationValueTypeName {
18776    #[prost(uint64, optional, tag="1")]
18777    pub iid: ::core::option::Option<u64>,
18778    #[prost(string, optional, tag="2")]
18779    pub name: ::core::option::Option<::prost::alloc::string::String>,
18780}
18781// End of protos/perfetto/trace/track_event/debug_annotation.proto
18782
18783// Begin of protos/perfetto/trace/track_event/log_message.proto
18784
18785#[derive(Clone, PartialEq, ::prost::Message)]
18786pub struct LogMessage {
18787    /// interned SourceLocation.
18788    #[prost(uint64, optional, tag="1")]
18789    pub source_location_iid: ::core::option::Option<u64>,
18790    /// interned LogMessageBody.
18791    #[prost(uint64, optional, tag="2")]
18792    pub body_iid: ::core::option::Option<u64>,
18793    #[prost(enumeration="log_message::Priority", optional, tag="3")]
18794    pub prio: ::core::option::Option<i32>,
18795}
18796/// Nested message and enum types in `LogMessage`.
18797pub mod log_message {
18798    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18799    #[repr(i32)]
18800    pub enum Priority {
18801        PrioUnspecified = 0,
18802        PrioUnused = 1,
18803        PrioVerbose = 2,
18804        PrioDebug = 3,
18805        PrioInfo = 4,
18806        PrioWarn = 5,
18807        PrioError = 6,
18808        PrioFatal = 7,
18809    }
18810    impl Priority {
18811        /// String value of the enum field names used in the ProtoBuf definition.
18812        ///
18813        /// The values are not transformed in any way and thus are considered stable
18814        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18815        pub fn as_str_name(&self) -> &'static str {
18816            match self {
18817                Priority::PrioUnspecified => "PRIO_UNSPECIFIED",
18818                Priority::PrioUnused => "PRIO_UNUSED",
18819                Priority::PrioVerbose => "PRIO_VERBOSE",
18820                Priority::PrioDebug => "PRIO_DEBUG",
18821                Priority::PrioInfo => "PRIO_INFO",
18822                Priority::PrioWarn => "PRIO_WARN",
18823                Priority::PrioError => "PRIO_ERROR",
18824                Priority::PrioFatal => "PRIO_FATAL",
18825            }
18826        }
18827    }
18828}
18829// --------------------
18830// Interned data types:
18831// --------------------
18832
18833#[derive(Clone, PartialEq, ::prost::Message)]
18834pub struct LogMessageBody {
18835    #[prost(uint64, optional, tag="1")]
18836    pub iid: ::core::option::Option<u64>,
18837    #[prost(string, optional, tag="2")]
18838    pub body: ::core::option::Option<::prost::alloc::string::String>,
18839}
18840// End of protos/perfetto/trace/track_event/log_message.proto
18841
18842// Begin of protos/perfetto/trace/track_event/source_location.proto
18843
18844// --------------------
18845// Interned data types:
18846// --------------------
18847
18848/// A source location, represented as a native symbol.
18849/// This is similar to `message Frame` from
18850/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
18851/// source code locations (for example in track event args), not stack frames.
18852#[derive(Clone, PartialEq, ::prost::Message)]
18853pub struct UnsymbolizedSourceLocation {
18854    #[prost(uint64, optional, tag="1")]
18855    pub iid: ::core::option::Option<u64>,
18856    #[prost(uint64, optional, tag="2")]
18857    pub mapping_id: ::core::option::Option<u64>,
18858    #[prost(uint64, optional, tag="3")]
18859    pub rel_pc: ::core::option::Option<u64>,
18860}
18861#[derive(Clone, PartialEq, ::prost::Message)]
18862pub struct SourceLocation {
18863    #[prost(uint64, optional, tag="1")]
18864    pub iid: ::core::option::Option<u64>,
18865    #[prost(string, optional, tag="2")]
18866    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
18867    #[prost(string, optional, tag="3")]
18868    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
18869    #[prost(uint32, optional, tag="4")]
18870    pub line_number: ::core::option::Option<u32>,
18871}
18872// End of protos/perfetto/trace/track_event/source_location.proto
18873
18874// Begin of protos/perfetto/trace/track_event/chrome_active_processes.proto
18875
18876/// A list of processes connected to the tracing service.
18877#[derive(Clone, PartialEq, ::prost::Message)]
18878pub struct ChromeActiveProcesses {
18879    #[prost(int32, repeated, packed="false", tag="1")]
18880    pub pid: ::prost::alloc::vec::Vec<i32>,
18881}
18882// Begin of protos/perfetto/trace/track_event/chrome_application_state_info.proto
18883
18884/// Trace event arguments for application state changes.
18885#[derive(Clone, PartialEq, ::prost::Message)]
18886pub struct ChromeApplicationStateInfo {
18887    #[prost(enumeration="chrome_application_state_info::ChromeApplicationState", optional, tag="1")]
18888    pub application_state: ::core::option::Option<i32>,
18889}
18890/// Nested message and enum types in `ChromeApplicationStateInfo`.
18891pub mod chrome_application_state_info {
18892    /// Enum definition taken from:
18893    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
18894    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18895    #[repr(i32)]
18896    pub enum ChromeApplicationState {
18897        ApplicationStateUnknown = 0,
18898        ApplicationStateHasRunningActivities = 1,
18899        ApplicationStateHasPausedActivities = 2,
18900        ApplicationStateHasStoppedActivities = 3,
18901        ApplicationStateHasDestroyedActivities = 4,
18902    }
18903    impl ChromeApplicationState {
18904        /// String value of the enum field names used in the ProtoBuf definition.
18905        ///
18906        /// The values are not transformed in any way and thus are considered stable
18907        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18908        pub fn as_str_name(&self) -> &'static str {
18909            match self {
18910                ChromeApplicationState::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
18911                ChromeApplicationState::ApplicationStateHasRunningActivities => "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES",
18912                ChromeApplicationState::ApplicationStateHasPausedActivities => "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES",
18913                ChromeApplicationState::ApplicationStateHasStoppedActivities => "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES",
18914                ChromeApplicationState::ApplicationStateHasDestroyedActivities => "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES",
18915            }
18916        }
18917    }
18918}
18919/// Next id: 18
18920#[derive(Clone, PartialEq, ::prost::Message)]
18921pub struct ChromeCompositorSchedulerState {
18922    #[prost(message, optional, tag="1")]
18923    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
18924    #[prost(bool, optional, tag="2")]
18925    pub observing_begin_frame_source: ::core::option::Option<bool>,
18926    #[prost(bool, optional, tag="3")]
18927    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
18928    #[prost(bool, optional, tag="4")]
18929    pub pending_begin_frame_task: ::core::option::Option<bool>,
18930    #[prost(bool, optional, tag="5")]
18931    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
18932    #[prost(enumeration="ChromeCompositorSchedulerAction", optional, tag="7")]
18933    pub inside_action: ::core::option::Option<i32>,
18934    #[prost(enumeration="chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode", optional, tag="8")]
18935    pub deadline_mode: ::core::option::Option<i32>,
18936    #[prost(int64, optional, tag="9")]
18937    pub deadline_us: ::core::option::Option<i64>,
18938    #[prost(int64, optional, tag="10")]
18939    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
18940    #[prost(int64, optional, tag="11")]
18941    pub now_us: ::core::option::Option<i64>,
18942    #[prost(int64, optional, tag="12")]
18943    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
18944    #[prost(int64, optional, tag="13")]
18945    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
18946    #[prost(message, optional, tag="14")]
18947    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
18948    #[prost(message, optional, tag="15")]
18949    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
18950    #[prost(message, optional, tag="16")]
18951    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
18952    #[prost(message, optional, tag="17")]
18953    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
18954}
18955/// Nested message and enum types in `ChromeCompositorSchedulerState`.
18956pub mod chrome_compositor_scheduler_state {
18957    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18958    #[repr(i32)]
18959    pub enum BeginImplFrameDeadlineMode {
18960        DeadlineModeUnspecified = 0,
18961        DeadlineModeNone = 1,
18962        DeadlineModeImmediate = 2,
18963        DeadlineModeRegular = 3,
18964        DeadlineModeLate = 4,
18965        DeadlineModeBlocked = 5,
18966    }
18967    impl BeginImplFrameDeadlineMode {
18968        /// String value of the enum field names used in the ProtoBuf definition.
18969        ///
18970        /// The values are not transformed in any way and thus are considered stable
18971        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18972        pub fn as_str_name(&self) -> &'static str {
18973            match self {
18974                BeginImplFrameDeadlineMode::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
18975                BeginImplFrameDeadlineMode::DeadlineModeNone => "DEADLINE_MODE_NONE",
18976                BeginImplFrameDeadlineMode::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
18977                BeginImplFrameDeadlineMode::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
18978                BeginImplFrameDeadlineMode::DeadlineModeLate => "DEADLINE_MODE_LATE",
18979                BeginImplFrameDeadlineMode::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
18980            }
18981        }
18982    }
18983}
18984/// Describes the current values stored in the Chrome Compositor state machine.
18985/// Next id: 3
18986#[derive(Clone, PartialEq, ::prost::Message)]
18987pub struct ChromeCompositorStateMachine {
18988    #[prost(message, optional, tag="1")]
18989    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
18990    #[prost(message, optional, tag="2")]
18991    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
18992}
18993/// Nested message and enum types in `ChromeCompositorStateMachine`.
18994pub mod chrome_compositor_state_machine {
18995    /// Next id: 6
18996    #[derive(Clone, PartialEq, ::prost::Message)]
18997    pub struct MajorState {
18998        #[prost(enumeration="super::ChromeCompositorSchedulerAction", optional, tag="1")]
18999        pub next_action: ::core::option::Option<i32>,
19000        #[prost(enumeration="major_state::BeginImplFrameState", optional, tag="2")]
19001        pub begin_impl_frame_state: ::core::option::Option<i32>,
19002        #[prost(enumeration="major_state::BeginMainFrameState", optional, tag="3")]
19003        pub begin_main_frame_state: ::core::option::Option<i32>,
19004        #[prost(enumeration="major_state::LayerTreeFrameSinkState", optional, tag="4")]
19005        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
19006        #[prost(enumeration="major_state::ForcedRedrawOnTimeoutState", optional, tag="5")]
19007        pub forced_redraw_state: ::core::option::Option<i32>,
19008    }
19009    /// Nested message and enum types in `MajorState`.
19010    pub mod major_state {
19011        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19012        #[repr(i32)]
19013        pub enum BeginImplFrameState {
19014            BeginImplFrameUnspecified = 0,
19015            BeginImplFrameIdle = 1,
19016            BeginImplFrameInsideBeginFrame = 2,
19017            BeginImplFrameInsideDeadline = 3,
19018        }
19019        impl BeginImplFrameState {
19020            /// String value of the enum field names used in the ProtoBuf definition.
19021            ///
19022            /// The values are not transformed in any way and thus are considered stable
19023            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19024            pub fn as_str_name(&self) -> &'static str {
19025                match self {
19026                    BeginImplFrameState::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
19027                    BeginImplFrameState::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
19028                    BeginImplFrameState::BeginImplFrameInsideBeginFrame => "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME",
19029                    BeginImplFrameState::BeginImplFrameInsideDeadline => "BEGIN_IMPL_FRAME_INSIDE_DEADLINE",
19030                }
19031            }
19032        }
19033        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19034        #[repr(i32)]
19035        pub enum BeginMainFrameState {
19036            BeginMainFrameUnspecified = 0,
19037            BeginMainFrameIdle = 1,
19038            BeginMainFrameSent = 2,
19039            BeginMainFrameReadyToCommit = 3,
19040        }
19041        impl BeginMainFrameState {
19042            /// String value of the enum field names used in the ProtoBuf definition.
19043            ///
19044            /// The values are not transformed in any way and thus are considered stable
19045            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19046            pub fn as_str_name(&self) -> &'static str {
19047                match self {
19048                    BeginMainFrameState::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
19049                    BeginMainFrameState::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
19050                    BeginMainFrameState::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
19051                    BeginMainFrameState::BeginMainFrameReadyToCommit => "BEGIN_MAIN_FRAME_READY_TO_COMMIT",
19052                }
19053            }
19054        }
19055        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19056        #[repr(i32)]
19057        pub enum LayerTreeFrameSinkState {
19058            LayerTreeFrameUnspecified = 0,
19059            LayerTreeFrameNone = 1,
19060            LayerTreeFrameActive = 2,
19061            LayerTreeFrameCreating = 3,
19062            LayerTreeFrameWaitingForFirstCommit = 4,
19063            LayerTreeFrameWaitingForFirstActivation = 5,
19064        }
19065        impl LayerTreeFrameSinkState {
19066            /// String value of the enum field names used in the ProtoBuf definition.
19067            ///
19068            /// The values are not transformed in any way and thus are considered stable
19069            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19070            pub fn as_str_name(&self) -> &'static str {
19071                match self {
19072                    LayerTreeFrameSinkState::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
19073                    LayerTreeFrameSinkState::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
19074                    LayerTreeFrameSinkState::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
19075                    LayerTreeFrameSinkState::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
19076                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstCommit => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT",
19077                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstActivation => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION",
19078                }
19079            }
19080        }
19081        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19082        #[repr(i32)]
19083        pub enum ForcedRedrawOnTimeoutState {
19084            ForcedRedrawUnspecified = 0,
19085            ForcedRedrawIdle = 1,
19086            ForcedRedrawWaitingForCommit = 2,
19087            ForcedRedrawWaitingForActivation = 3,
19088            ForcedRedrawWaitingForDraw = 4,
19089        }
19090        impl ForcedRedrawOnTimeoutState {
19091            /// String value of the enum field names used in the ProtoBuf definition.
19092            ///
19093            /// The values are not transformed in any way and thus are considered stable
19094            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19095            pub fn as_str_name(&self) -> &'static str {
19096                match self {
19097                    ForcedRedrawOnTimeoutState::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
19098                    ForcedRedrawOnTimeoutState::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
19099                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForCommit => "FORCED_REDRAW_WAITING_FOR_COMMIT",
19100                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForActivation => "FORCED_REDRAW_WAITING_FOR_ACTIVATION",
19101                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
19102                }
19103            }
19104        }
19105    }
19106    /// Next id: 47
19107    #[derive(Clone, PartialEq, ::prost::Message)]
19108    pub struct MinorState {
19109        #[prost(int32, optional, tag="1")]
19110        pub commit_count: ::core::option::Option<i32>,
19111        #[prost(int32, optional, tag="2")]
19112        pub current_frame_number: ::core::option::Option<i32>,
19113        #[prost(int32, optional, tag="3")]
19114        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
19115        #[prost(int32, optional, tag="4")]
19116        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
19117        #[prost(int32, optional, tag="5")]
19118        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
19119        #[prost(bool, optional, tag="6")]
19120        pub did_draw: ::core::option::Option<bool>,
19121        #[prost(bool, optional, tag="7")]
19122        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
19123        #[prost(bool, optional, tag="8")]
19124        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
19125        #[prost(bool, optional, tag="9")]
19126        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
19127        #[prost(bool, optional, tag="10")]
19128        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
19129        #[prost(bool, optional, tag="11")]
19130        pub did_commit_during_frame: ::core::option::Option<bool>,
19131        #[prost(bool, optional, tag="12")]
19132        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
19133        #[prost(bool, optional, tag="13")]
19134        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
19135        #[prost(bool, optional, tag="14")]
19136        pub did_prepare_tiles: ::core::option::Option<bool>,
19137        #[prost(int32, optional, tag="15")]
19138        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
19139        #[prost(int32, optional, tag="16")]
19140        pub pending_submit_frames: ::core::option::Option<i32>,
19141        #[prost(int32, optional, tag="17")]
19142        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<i32>,
19143        #[prost(bool, optional, tag="18")]
19144        pub needs_redraw: ::core::option::Option<bool>,
19145        #[prost(bool, optional, tag="19")]
19146        pub needs_prepare_tiles: ::core::option::Option<bool>,
19147        #[prost(bool, optional, tag="20")]
19148        pub needs_begin_main_frame: ::core::option::Option<bool>,
19149        #[prost(bool, optional, tag="21")]
19150        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
19151        #[prost(bool, optional, tag="22")]
19152        pub visible: ::core::option::Option<bool>,
19153        #[prost(bool, optional, tag="23")]
19154        pub begin_frame_source_paused: ::core::option::Option<bool>,
19155        #[prost(bool, optional, tag="24")]
19156        pub can_draw: ::core::option::Option<bool>,
19157        #[prost(bool, optional, tag="25")]
19158        pub resourceless_draw: ::core::option::Option<bool>,
19159        #[prost(bool, optional, tag="26")]
19160        pub has_pending_tree: ::core::option::Option<bool>,
19161        #[prost(bool, optional, tag="27")]
19162        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
19163        #[prost(bool, optional, tag="28")]
19164        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
19165        #[prost(bool, optional, tag="29")]
19166        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
19167        #[prost(bool, optional, tag="30")]
19168        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<bool>,
19169        #[prost(enumeration="minor_state::TreePriority", optional, tag="31")]
19170        pub tree_priority: ::core::option::Option<i32>,
19171        #[prost(enumeration="minor_state::ScrollHandlerState", optional, tag="32")]
19172        pub scroll_handler_state: ::core::option::Option<i32>,
19173        #[prost(bool, optional, tag="33")]
19174        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
19175        #[prost(bool, optional, tag="34")]
19176        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
19177        #[prost(bool, optional, tag="36")]
19178        pub video_needs_begin_frames: ::core::option::Option<bool>,
19179        #[prost(bool, optional, tag="37")]
19180        pub defer_begin_main_frame: ::core::option::Option<bool>,
19181        #[prost(bool, optional, tag="38")]
19182        pub last_commit_had_no_updates: ::core::option::Option<bool>,
19183        #[prost(bool, optional, tag="39")]
19184        pub did_draw_in_last_frame: ::core::option::Option<bool>,
19185        #[prost(bool, optional, tag="40")]
19186        pub did_submit_in_last_frame: ::core::option::Option<bool>,
19187        #[prost(bool, optional, tag="41")]
19188        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
19189        #[prost(bool, optional, tag="42")]
19190        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
19191        #[prost(bool, optional, tag="43")]
19192        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
19193        #[prost(bool, optional, tag="44")]
19194        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
19195        #[prost(bool, optional, tag="45")]
19196        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
19197        #[prost(bool, optional, tag="46")]
19198        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
19199    }
19200    /// Nested message and enum types in `MinorState`.
19201    pub mod minor_state {
19202        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19203        #[repr(i32)]
19204        pub enum TreePriority {
19205            Unspecified = 0,
19206            SamePriorityForBothTrees = 1,
19207            SmoothnessTakesPriority = 2,
19208            NewContentTakesPriority = 3,
19209        }
19210        impl TreePriority {
19211            /// String value of the enum field names used in the ProtoBuf definition.
19212            ///
19213            /// The values are not transformed in any way and thus are considered stable
19214            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19215            pub fn as_str_name(&self) -> &'static str {
19216                match self {
19217                    TreePriority::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
19218                    TreePriority::SamePriorityForBothTrees => "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES",
19219                    TreePriority::SmoothnessTakesPriority => "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY",
19220                    TreePriority::NewContentTakesPriority => "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY",
19221                }
19222            }
19223        }
19224        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19225        #[repr(i32)]
19226        pub enum ScrollHandlerState {
19227            ScrollHandlerUnspecified = 0,
19228            ScrollAffectsScrollHandler = 1,
19229            ScrollDoesNotAffectScrollHandler = 2,
19230        }
19231        impl ScrollHandlerState {
19232            /// String value of the enum field names used in the ProtoBuf definition.
19233            ///
19234            /// The values are not transformed in any way and thus are considered stable
19235            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19236            pub fn as_str_name(&self) -> &'static str {
19237                match self {
19238                    ScrollHandlerState::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
19239                    ScrollHandlerState::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
19240                    ScrollHandlerState::ScrollDoesNotAffectScrollHandler => "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER",
19241                }
19242            }
19243        }
19244    }
19245}
19246/// Next id: 13
19247#[derive(Clone, PartialEq, ::prost::Message)]
19248pub struct BeginFrameArgs {
19249    #[prost(enumeration="begin_frame_args::BeginFrameArgsType", optional, tag="1")]
19250    pub r#type: ::core::option::Option<i32>,
19251    #[prost(uint64, optional, tag="2")]
19252    pub source_id: ::core::option::Option<u64>,
19253    #[prost(uint64, optional, tag="3")]
19254    pub sequence_number: ::core::option::Option<u64>,
19255    #[prost(int64, optional, tag="4")]
19256    pub frame_time_us: ::core::option::Option<i64>,
19257    #[prost(int64, optional, tag="5")]
19258    pub deadline_us: ::core::option::Option<i64>,
19259    #[prost(int64, optional, tag="6")]
19260    pub interval_delta_us: ::core::option::Option<i64>,
19261    #[prost(bool, optional, tag="7")]
19262    pub on_critical_path: ::core::option::Option<bool>,
19263    #[prost(bool, optional, tag="8")]
19264    pub animate_only: ::core::option::Option<bool>,
19265    #[prost(int64, optional, tag="12")]
19266    pub frames_throttled_since_last: ::core::option::Option<i64>,
19267    #[prost(oneof="begin_frame_args::CreatedFrom", tags="9, 10")]
19268    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
19269}
19270/// Nested message and enum types in `BeginFrameArgs`.
19271pub mod begin_frame_args {
19272    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
19273    /// drop this in the proto representation, and instead make the JSON format
19274    /// "subtype" field become the type field.
19275    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19276    #[repr(i32)]
19277    pub enum BeginFrameArgsType {
19278        Unspecified = 0,
19279        Invalid = 1,
19280        Normal = 2,
19281        Missed = 3,
19282    }
19283    impl BeginFrameArgsType {
19284        /// String value of the enum field names used in the ProtoBuf definition.
19285        ///
19286        /// The values are not transformed in any way and thus are considered stable
19287        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19288        pub fn as_str_name(&self) -> &'static str {
19289            match self {
19290                BeginFrameArgsType::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
19291                BeginFrameArgsType::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
19292                BeginFrameArgsType::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
19293                BeginFrameArgsType::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
19294            }
19295        }
19296    }
19297    #[derive(Clone, PartialEq, ::prost::Oneof)]
19298    pub enum CreatedFrom {
19299        /// The interned SourceLocation.
19300        #[prost(uint64, tag="9")]
19301        SourceLocationIid(u64),
19302        /// The SourceLocation that this args was created from.
19303        /// TODO(nuskos): Eventually we will support interning inside of
19304        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
19305        /// since we can emit it as part of the InternedData message. When we can
19306        /// remove this |source_location|.
19307        #[prost(message, tag="10")]
19308        SourceLocation(super::SourceLocation),
19309    }
19310}
19311/// Next id: 7
19312#[derive(Clone, PartialEq, ::prost::Message)]
19313pub struct BeginImplFrameArgs {
19314    #[prost(int64, optional, tag="1")]
19315    pub updated_at_us: ::core::option::Option<i64>,
19316    #[prost(int64, optional, tag="2")]
19317    pub finished_at_us: ::core::option::Option<i64>,
19318    #[prost(enumeration="begin_impl_frame_args::State", optional, tag="3")]
19319    pub state: ::core::option::Option<i32>,
19320    #[prost(message, optional, tag="6")]
19321    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
19322    #[prost(oneof="begin_impl_frame_args::Args", tags="4, 5")]
19323    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
19324}
19325/// Nested message and enum types in `BeginImplFrameArgs`.
19326pub mod begin_impl_frame_args {
19327    #[derive(Clone, PartialEq, ::prost::Message)]
19328    pub struct TimestampsInUs {
19329        #[prost(int64, optional, tag="1")]
19330        pub interval_delta: ::core::option::Option<i64>,
19331        #[prost(int64, optional, tag="2")]
19332        pub now_to_deadline_delta: ::core::option::Option<i64>,
19333        #[prost(int64, optional, tag="3")]
19334        pub frame_time_to_now_delta: ::core::option::Option<i64>,
19335        #[prost(int64, optional, tag="4")]
19336        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
19337        #[prost(int64, optional, tag="5")]
19338        pub now: ::core::option::Option<i64>,
19339        #[prost(int64, optional, tag="6")]
19340        pub frame_time: ::core::option::Option<i64>,
19341        #[prost(int64, optional, tag="7")]
19342        pub deadline: ::core::option::Option<i64>,
19343    }
19344    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19345    #[repr(i32)]
19346    pub enum State {
19347        BeginFrameFinished = 0,
19348        BeginFrameUsing = 1,
19349    }
19350    impl State {
19351        /// String value of the enum field names used in the ProtoBuf definition.
19352        ///
19353        /// The values are not transformed in any way and thus are considered stable
19354        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19355        pub fn as_str_name(&self) -> &'static str {
19356            match self {
19357                State::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
19358                State::BeginFrameUsing => "BEGIN_FRAME_USING",
19359            }
19360        }
19361    }
19362    #[derive(Clone, PartialEq, ::prost::Oneof)]
19363    pub enum Args {
19364        /// Only set if |state| is BEGIN_FRAME_FINISHED.
19365        #[prost(message, tag="4")]
19366        CurrentArgs(super::BeginFrameArgs),
19367        /// Only set if |state| is BEGIN_FRAME_USING.
19368        #[prost(message, tag="5")]
19369        LastArgs(super::BeginFrameArgs),
19370    }
19371}
19372#[derive(Clone, PartialEq, ::prost::Message)]
19373pub struct BeginFrameObserverState {
19374    #[prost(int64, optional, tag="1")]
19375    pub dropped_begin_frame_args: ::core::option::Option<i64>,
19376    #[prost(message, optional, tag="2")]
19377    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
19378}
19379#[derive(Clone, PartialEq, ::prost::Message)]
19380pub struct BeginFrameSourceState {
19381    #[prost(uint32, optional, tag="1")]
19382    pub source_id: ::core::option::Option<u32>,
19383    #[prost(bool, optional, tag="2")]
19384    pub paused: ::core::option::Option<bool>,
19385    #[prost(uint32, optional, tag="3")]
19386    pub num_observers: ::core::option::Option<u32>,
19387    #[prost(message, optional, tag="4")]
19388    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
19389}
19390#[derive(Clone, PartialEq, ::prost::Message)]
19391pub struct CompositorTimingHistory {
19392    #[prost(int64, optional, tag="1")]
19393    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
19394    #[prost(int64, optional, tag="2")]
19395    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<i64>,
19396    #[prost(int64, optional, tag="3")]
19397    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<i64>,
19398    #[prost(int64, optional, tag="4")]
19399    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
19400    #[prost(int64, optional, tag="5")]
19401    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
19402    #[prost(int64, optional, tag="6")]
19403    pub activate_estimate_delta_us: ::core::option::Option<i64>,
19404    #[prost(int64, optional, tag="7")]
19405    pub draw_estimate_delta_us: ::core::option::Option<i64>,
19406}
19407// End of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
19408
19409// Begin of protos/perfetto/trace/track_event/chrome_content_settings_event_info.proto
19410
19411/// Details about ContentSettings trace events.
19412#[derive(Clone, PartialEq, ::prost::Message)]
19413pub struct ChromeContentSettingsEventInfo {
19414    /// The number of user defined hostname patterns for content settings at
19415    /// browser start. Similar to UMA histogram
19416    /// 'ContentSettings.NumberOfExceptions'.
19417    #[prost(uint32, optional, tag="1")]
19418    pub number_of_exceptions: ::core::option::Option<u32>,
19419}
19420// Begin of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
19421
19422/// DEPRECATED. Only kept for backwards compatibility. Use |ChromeFrameReporter2|
19423/// in
19424/// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
19425/// instead.
19426#[derive(Clone, PartialEq, ::prost::Message)]
19427pub struct ChromeFrameReporter {
19428    #[prost(enumeration="chrome_frame_reporter::State", optional, tag="1")]
19429    pub state: ::core::option::Option<i32>,
19430    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
19431    #[prost(enumeration="chrome_frame_reporter::FrameDropReason", optional, tag="2")]
19432    pub reason: ::core::option::Option<i32>,
19433    #[prost(uint64, optional, tag="3")]
19434    pub frame_source: ::core::option::Option<u64>,
19435    #[prost(uint64, optional, tag="4")]
19436    pub frame_sequence: ::core::option::Option<u64>,
19437    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
19438    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
19439    /// smoothness.
19440    #[prost(bool, optional, tag="5")]
19441    pub affects_smoothness: ::core::option::Option<bool>,
19442    /// The type of active scroll.
19443    #[prost(enumeration="chrome_frame_reporter::ScrollState", optional, tag="6")]
19444    pub scroll_state: ::core::option::Option<i32>,
19445    /// If any main thread animation is active during this frame.
19446    #[prost(bool, optional, tag="7")]
19447    pub has_main_animation: ::core::option::Option<bool>,
19448    /// If any compositor thread animation is active during this frame.
19449    #[prost(bool, optional, tag="8")]
19450    pub has_compositor_animation: ::core::option::Option<bool>,
19451    /// If any touch-driven UX (not scroll) is active during this frame.
19452    #[prost(bool, optional, tag="9")]
19453    pub has_smooth_input_main: ::core::option::Option<bool>,
19454    /// Whether the frame contained any missing content (i.e. whether there was
19455    /// checkerboarding in the frame).  If has_missing_content,
19456    /// checkerboarded_needs_raster and checkerboarded_needs_record all have
19457    /// values, has_missing_content should equal checkerboarded_needs_raster ||
19458    /// checkerboarded_needs_record.
19459    #[prost(bool, optional, tag="10")]
19460    pub has_missing_content: ::core::option::Option<bool>,
19461    /// The id of layer_tree_host that the frame has been produced for.
19462    #[prost(uint64, optional, tag="11")]
19463    pub layer_tree_host_id: ::core::option::Option<u64>,
19464    /// If total latency of PipelineReporter exceeds a certain limit.
19465    #[prost(bool, optional, tag="12")]
19466    pub has_high_latency: ::core::option::Option<bool>,
19467    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
19468    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
19469    /// (i.e. dropped frames when there are no partial compositor updates).
19470    #[prost(enumeration="chrome_frame_reporter::FrameType", optional, tag="13")]
19471    pub frame_type: ::core::option::Option<i32>,
19472    /// The breakdown stage of PipelineReporter that is most likely accountable for
19473    /// high latency.
19474    #[prost(string, repeated, tag="14")]
19475    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19476    /// Whether the frame contained any content that is not fully rastered.
19477    #[prost(bool, optional, tag="15")]
19478    pub checkerboarded_needs_raster: ::core::option::Option<bool>,
19479    /// Whether the frame contained any content that is not fully recorded.
19480    #[prost(bool, optional, tag="16")]
19481    pub checkerboarded_needs_record: ::core::option::Option<bool>,
19482    /// viz::BeginFrameArgs.trace_id of the frame (before surface aggregation). See
19483    /// also ChromeTrackEvent.EventLatency.surface_frame_trace_id.
19484    #[prost(int64, optional, tag="17")]
19485    pub surface_frame_trace_id: ::core::option::Option<i64>,
19486    /// gfx::PresentationFeedback.display_trace_id of the frame (after surface
19487    /// aggregation). See also ChromeTrackEvent.EventLatency.display_trace_id.
19488    #[prost(int64, optional, tag="18")]
19489    pub display_trace_id: ::core::option::Option<i64>,
19490}
19491/// Nested message and enum types in `ChromeFrameReporter`.
19492pub mod chrome_frame_reporter {
19493    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19494    #[repr(i32)]
19495    pub enum State {
19496        /// The frame did not have any updates to present.
19497        NoUpdateDesired = 0,
19498        /// The frame presented all the desired updates (i.e. any updates requested
19499        /// from both the compositor thread and main-threads were handled).
19500        PresentedAll = 1,
19501        /// The frame was presented with some updates, but also missed some updates
19502        /// (e.g. missed updates from the main-thread, but included updates from the
19503        /// compositor thread).
19504        PresentedPartial = 2,
19505        /// The frame was dropped, i.e. some updates were desired for the frame, but
19506        /// was not presented.
19507        Dropped = 3,
19508    }
19509    impl State {
19510        /// String value of the enum field names used in the ProtoBuf definition.
19511        ///
19512        /// The values are not transformed in any way and thus are considered stable
19513        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19514        pub fn as_str_name(&self) -> &'static str {
19515            match self {
19516                State::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
19517                State::PresentedAll => "STATE_PRESENTED_ALL",
19518                State::PresentedPartial => "STATE_PRESENTED_PARTIAL",
19519                State::Dropped => "STATE_DROPPED",
19520            }
19521        }
19522    }
19523    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19524    #[repr(i32)]
19525    pub enum FrameDropReason {
19526        ReasonUnspecified = 0,
19527        /// Frame was dropped by the display-compositor.
19528        /// The display-compositor may drop a frame some times (e.g. the frame missed
19529        /// the deadline, or was blocked on surface-sync, etc.)
19530        ReasonDisplayCompositor = 1,
19531        /// Frame was dropped because of the main-thread.
19532        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
19533        /// is running expensive javascript, or doing a lot of layout updates, etc.
19534        ReasonMainThread = 2,
19535        /// Frame was dropped by the client compositor.
19536        /// The client compositor can drop some frames too (e.g. attempting to
19537        /// recover latency, missing the deadline, etc.).
19538        ReasonClientCompositor = 3,
19539    }
19540    impl FrameDropReason {
19541        /// String value of the enum field names used in the ProtoBuf definition.
19542        ///
19543        /// The values are not transformed in any way and thus are considered stable
19544        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19545        pub fn as_str_name(&self) -> &'static str {
19546            match self {
19547                FrameDropReason::ReasonUnspecified => "REASON_UNSPECIFIED",
19548                FrameDropReason::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
19549                FrameDropReason::ReasonMainThread => "REASON_MAIN_THREAD",
19550                FrameDropReason::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
19551            }
19552        }
19553    }
19554    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19555    #[repr(i32)]
19556    pub enum ScrollState {
19557        ScrollNone = 0,
19558        ScrollMainThread = 1,
19559        ScrollCompositorThread = 2,
19560        ScrollRaster = 3,
19561        /// Used when it can't be determined whether a scroll is in progress or not.
19562        ScrollUnknown = 4,
19563    }
19564    impl ScrollState {
19565        /// String value of the enum field names used in the ProtoBuf definition.
19566        ///
19567        /// The values are not transformed in any way and thus are considered stable
19568        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19569        pub fn as_str_name(&self) -> &'static str {
19570            match self {
19571                ScrollState::ScrollNone => "SCROLL_NONE",
19572                ScrollState::ScrollMainThread => "SCROLL_MAIN_THREAD",
19573                ScrollState::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
19574                ScrollState::ScrollRaster => "SCROLL_RASTER",
19575                ScrollState::ScrollUnknown => "SCROLL_UNKNOWN",
19576            }
19577        }
19578    }
19579    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19580    #[repr(i32)]
19581    pub enum FrameType {
19582        Forked = 0,
19583        Backfill = 1,
19584    }
19585    impl FrameType {
19586        /// String value of the enum field names used in the ProtoBuf definition.
19587        ///
19588        /// The values are not transformed in any way and thus are considered stable
19589        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19590        pub fn as_str_name(&self) -> &'static str {
19591            match self {
19592                FrameType::Forked => "FORKED",
19593                FrameType::Backfill => "BACKFILL",
19594            }
19595        }
19596    }
19597}
19598// End of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
19599
19600// Begin of protos/perfetto/trace/track_event/chrome_keyed_service.proto
19601
19602/// Details about one of Chrome's keyed services associated with the event.
19603#[derive(Clone, PartialEq, ::prost::Message)]
19604pub struct ChromeKeyedService {
19605    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
19606    /// Chrome, these are static strings known at compile time).
19607    #[prost(string, optional, tag="1")]
19608    pub name: ::core::option::Option<::prost::alloc::string::String>,
19609}
19610// End of protos/perfetto/trace/track_event/chrome_keyed_service.proto
19611
19612// Begin of protos/perfetto/trace/track_event/chrome_latency_info.proto
19613
19614#[derive(Clone, PartialEq, ::prost::Message)]
19615pub struct ChromeLatencyInfo {
19616    #[prost(int64, optional, tag="1")]
19617    pub trace_id: ::core::option::Option<i64>,
19618    #[prost(enumeration="chrome_latency_info::Step", optional, tag="2")]
19619    pub step: ::core::option::Option<i32>,
19620    #[prost(int32, optional, tag="3")]
19621    pub frame_tree_node_id: ::core::option::Option<i32>,
19622    #[prost(message, repeated, tag="4")]
19623    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
19624    #[prost(bool, optional, tag="5")]
19625    pub is_coalesced: ::core::option::Option<bool>,
19626    #[prost(int64, optional, tag="6")]
19627    pub gesture_scroll_id: ::core::option::Option<i64>,
19628    #[prost(int64, optional, tag="7")]
19629    pub touch_id: ::core::option::Option<i64>,
19630    /// The type of input corresponding to this `ChromeLatencyInfo`.
19631    #[prost(enumeration="chrome_latency_info::InputType", optional, tag="8")]
19632    pub input_type: ::core::option::Option<i32>,
19633}
19634/// Nested message and enum types in `ChromeLatencyInfo`.
19635pub mod chrome_latency_info {
19636    #[derive(Clone, PartialEq, ::prost::Message)]
19637    pub struct ComponentInfo {
19638        #[prost(enumeration="LatencyComponentType", optional, tag="1")]
19639        pub component_type: ::core::option::Option<i32>,
19640        /// Microsecond timestamp in CLOCK_MONOTONIC domain
19641        #[prost(uint64, optional, tag="2")]
19642        pub time_us: ::core::option::Option<u64>,
19643    }
19644    /// NEXT ID: 12
19645    /// All step are optional but the enum is ordered (not by number) below in the
19646    /// order we expect them to appear if they are emitted in trace in a blocking
19647    /// fashion.
19648    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19649    #[repr(i32)]
19650    pub enum Step {
19651        Unspecified = 0,
19652        /// Emitted on the browser main thread.
19653        SendInputEventUi = 3,
19654        /// Happens on the renderer's compositor.
19655        HandleInputEventImpl = 5,
19656        DidHandleInputAndOverscroll = 8,
19657        /// Occurs on the Renderer's main thread.
19658        HandleInputEventMain = 4,
19659        MainThreadScrollUpdate = 2,
19660        HandleInputEventMainCommit = 1,
19661        /// Could be emitted on both the renderer's main OR compositor.
19662        HandledInputEventMainOrImpl = 9,
19663        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
19664        /// renderer's compositor and this will be emitted.
19665        HandledInputEventImpl = 10,
19666        /// Renderer's compositor.
19667        SwapBuffers = 6,
19668        /// Happens on the VizCompositor in the GPU process.
19669        DrawAndSwap = 7,
19670        /// Happens on the GPU main thread after the swap has completed.
19671        ///
19672        /// See above for NEXT ID, enum steps are not ordered by tag number.
19673        FinishedSwapBuffers = 11,
19674    }
19675    impl Step {
19676        /// String value of the enum field names used in the ProtoBuf definition.
19677        ///
19678        /// The values are not transformed in any way and thus are considered stable
19679        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19680        pub fn as_str_name(&self) -> &'static str {
19681            match self {
19682                Step::Unspecified => "STEP_UNSPECIFIED",
19683                Step::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
19684                Step::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
19685                Step::DidHandleInputAndOverscroll => "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL",
19686                Step::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
19687                Step::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
19688                Step::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
19689                Step::HandledInputEventMainOrImpl => "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL",
19690                Step::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
19691                Step::SwapBuffers => "STEP_SWAP_BUFFERS",
19692                Step::DrawAndSwap => "STEP_DRAW_AND_SWAP",
19693                Step::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
19694            }
19695        }
19696    }
19697    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
19698    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
19699    /// practices.
19700    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19701    #[repr(i32)]
19702    pub enum LatencyComponentType {
19703        ComponentUnspecified = 0,
19704        ComponentInputEventLatencyBeginRwh = 1,
19705        ComponentInputEventLatencyScrollUpdateOriginal = 2,
19706        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
19707        ComponentInputEventLatencyOriginal = 4,
19708        ComponentInputEventLatencyUi = 5,
19709        ComponentInputEventLatencyRendererMain = 6,
19710        ComponentInputEventLatencyRenderingScheduledMain = 7,
19711        ComponentInputEventLatencyRenderingScheduledImpl = 8,
19712        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
19713        ComponentInputEventLatencyAckRwh = 10,
19714        ComponentInputEventLatencyRendererSwap = 11,
19715        ComponentDisplayCompositorReceivedFrame = 12,
19716        ComponentInputEventGpuSwapBuffer = 13,
19717        ComponentInputEventLatencyFrameSwap = 14,
19718    }
19719    impl LatencyComponentType {
19720        /// String value of the enum field names used in the ProtoBuf definition.
19721        ///
19722        /// The values are not transformed in any way and thus are considered stable
19723        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19724        pub fn as_str_name(&self) -> &'static str {
19725            match self {
19726                LatencyComponentType::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
19727                LatencyComponentType::ComponentInputEventLatencyBeginRwh => "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH",
19728                LatencyComponentType::ComponentInputEventLatencyScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL",
19729                LatencyComponentType::ComponentInputEventLatencyFirstScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL",
19730                LatencyComponentType::ComponentInputEventLatencyOriginal => "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL",
19731                LatencyComponentType::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
19732                LatencyComponentType::ComponentInputEventLatencyRendererMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN",
19733                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN",
19734                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledImpl => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL",
19735                LatencyComponentType::ComponentInputEventLatencyScrollUpdateLastEvent => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT",
19736                LatencyComponentType::ComponentInputEventLatencyAckRwh => "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH",
19737                LatencyComponentType::ComponentInputEventLatencyRendererSwap => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP",
19738                LatencyComponentType::ComponentDisplayCompositorReceivedFrame => "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME",
19739                LatencyComponentType::ComponentInputEventGpuSwapBuffer => "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER",
19740                LatencyComponentType::ComponentInputEventLatencyFrameSwap => "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP",
19741            }
19742        }
19743    }
19744    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19745    #[repr(i32)]
19746    pub enum InputType {
19747        UnspecifiedOrOther = 0,
19748        TouchMoved = 1,
19749        GestureScrollBegin = 2,
19750        GestureScrollUpdate = 3,
19751        GestureScrollEnd = 4,
19752        GestureTap = 5,
19753        GestureTapCancel = 6,
19754    }
19755    impl InputType {
19756        /// String value of the enum field names used in the ProtoBuf definition.
19757        ///
19758        /// The values are not transformed in any way and thus are considered stable
19759        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19760        pub fn as_str_name(&self) -> &'static str {
19761            match self {
19762                InputType::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
19763                InputType::TouchMoved => "TOUCH_MOVED",
19764                InputType::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
19765                InputType::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
19766                InputType::GestureScrollEnd => "GESTURE_SCROLL_END",
19767                InputType::GestureTap => "GESTURE_TAP",
19768                InputType::GestureTapCancel => "GESTURE_TAP_CANCEL",
19769            }
19770        }
19771    }
19772}
19773// End of protos/perfetto/trace/track_event/chrome_latency_info.proto
19774
19775// Begin of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
19776
19777/// Details about a legacy Chrome IPC message that is either sent by the event.
19778/// TODO(eseckler): Also use this message on the receiving side?
19779#[derive(Clone, PartialEq, ::prost::Message)]
19780pub struct ChromeLegacyIpc {
19781    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
19782    /// enum, e.g. FrameMsgStart,
19783    #[prost(enumeration="chrome_legacy_ipc::MessageClass", optional, tag="1")]
19784    pub message_class: ::core::option::Option<i32>,
19785    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
19786    /// IPC_MESSAGE_START macros.
19787    #[prost(uint32, optional, tag="2")]
19788    pub message_line: ::core::option::Option<u32>,
19789}
19790/// Nested message and enum types in `ChromeLegacyIpc`.
19791pub mod chrome_legacy_ipc {
19792    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19793    #[repr(i32)]
19794    pub enum MessageClass {
19795        ClassUnspecified = 0,
19796        ClassAutomation = 1,
19797        ClassFrame = 2,
19798        ClassPage = 3,
19799        ClassView = 4,
19800        ClassWidget = 5,
19801        ClassInput = 6,
19802        ClassTest = 7,
19803        ClassWorker = 8,
19804        ClassNacl = 9,
19805        ClassGpuChannel = 10,
19806        ClassMedia = 11,
19807        ClassPpapi = 12,
19808        ClassChrome = 13,
19809        ClassDrag = 14,
19810        ClassPrint = 15,
19811        ClassExtension = 16,
19812        ClassTextInputClient = 17,
19813        ClassBlinkTest = 18,
19814        ClassAccessibility = 19,
19815        ClassPrerender = 20,
19816        ClassChromoting = 21,
19817        ClassBrowserPlugin = 22,
19818        ClassAndroidWebView = 23,
19819        ClassNaclHost = 24,
19820        ClassEncryptedMedia = 25,
19821        ClassCast = 26,
19822        ClassGinJavaBridge = 27,
19823        ClassChromeUtilityPrinting = 28,
19824        ClassOzoneGpu = 29,
19825        ClassWebTest = 30,
19826        ClassNetworkHints = 31,
19827        ClassExtensionsGuestView = 32,
19828        ClassGuestView = 33,
19829        ClassMediaPlayerDelegate = 34,
19830        ClassExtensionWorker = 35,
19831        ClassSubresourceFilter = 36,
19832        ClassUnfreezableFrame = 37,
19833    }
19834    impl MessageClass {
19835        /// String value of the enum field names used in the ProtoBuf definition.
19836        ///
19837        /// The values are not transformed in any way and thus are considered stable
19838        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19839        pub fn as_str_name(&self) -> &'static str {
19840            match self {
19841                MessageClass::ClassUnspecified => "CLASS_UNSPECIFIED",
19842                MessageClass::ClassAutomation => "CLASS_AUTOMATION",
19843                MessageClass::ClassFrame => "CLASS_FRAME",
19844                MessageClass::ClassPage => "CLASS_PAGE",
19845                MessageClass::ClassView => "CLASS_VIEW",
19846                MessageClass::ClassWidget => "CLASS_WIDGET",
19847                MessageClass::ClassInput => "CLASS_INPUT",
19848                MessageClass::ClassTest => "CLASS_TEST",
19849                MessageClass::ClassWorker => "CLASS_WORKER",
19850                MessageClass::ClassNacl => "CLASS_NACL",
19851                MessageClass::ClassGpuChannel => "CLASS_GPU_CHANNEL",
19852                MessageClass::ClassMedia => "CLASS_MEDIA",
19853                MessageClass::ClassPpapi => "CLASS_PPAPI",
19854                MessageClass::ClassChrome => "CLASS_CHROME",
19855                MessageClass::ClassDrag => "CLASS_DRAG",
19856                MessageClass::ClassPrint => "CLASS_PRINT",
19857                MessageClass::ClassExtension => "CLASS_EXTENSION",
19858                MessageClass::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
19859                MessageClass::ClassBlinkTest => "CLASS_BLINK_TEST",
19860                MessageClass::ClassAccessibility => "CLASS_ACCESSIBILITY",
19861                MessageClass::ClassPrerender => "CLASS_PRERENDER",
19862                MessageClass::ClassChromoting => "CLASS_CHROMOTING",
19863                MessageClass::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
19864                MessageClass::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
19865                MessageClass::ClassNaclHost => "CLASS_NACL_HOST",
19866                MessageClass::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
19867                MessageClass::ClassCast => "CLASS_CAST",
19868                MessageClass::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
19869                MessageClass::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
19870                MessageClass::ClassOzoneGpu => "CLASS_OZONE_GPU",
19871                MessageClass::ClassWebTest => "CLASS_WEB_TEST",
19872                MessageClass::ClassNetworkHints => "CLASS_NETWORK_HINTS",
19873                MessageClass::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
19874                MessageClass::ClassGuestView => "CLASS_GUEST_VIEW",
19875                MessageClass::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
19876                MessageClass::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
19877                MessageClass::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
19878                MessageClass::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
19879            }
19880        }
19881    }
19882}
19883// End of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
19884
19885// Begin of protos/perfetto/trace/track_event/chrome_message_pump.proto
19886
19887/// Details about Chrome message pump events
19888#[derive(Clone, PartialEq, ::prost::Message)]
19889pub struct ChromeMessagePump {
19890    /// True if there are sent messages in the queue.
19891    #[prost(bool, optional, tag="1")]
19892    pub sent_messages_in_queue: ::core::option::Option<bool>,
19893    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
19894    /// invoke.
19895    #[prost(uint64, optional, tag="2")]
19896    pub io_handler_location_iid: ::core::option::Option<u64>,
19897}
19898// End of protos/perfetto/trace/track_event/chrome_message_pump.proto
19899
19900// Begin of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
19901
19902/// Contains information to identify mojo handling events. The trace events in
19903/// mojo are common for all mojo interfaces and this information is used to
19904/// identify who is the caller or callee.
19905#[derive(Clone, PartialEq, ::prost::Message)]
19906pub struct ChromeMojoEventInfo {
19907    /// Contains the interface name or the file name of the creator of a mojo
19908    /// handle watcher, recorded when an event if notified to the watcher. The code
19909    /// that runs within the track event belongs to the interface.
19910    #[prost(string, optional, tag="1")]
19911    pub watcher_notify_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
19912    /// The hash of the IPC message that is being handled.
19913    #[prost(uint32, optional, tag="2")]
19914    pub ipc_hash: ::core::option::Option<u32>,
19915    /// A static string representing the mojo interface name of the message that is
19916    /// being handled.
19917    #[prost(string, optional, tag="3")]
19918    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
19919    /// Refers to an interned UnsymbolizedSourceLocation.
19920    /// The UnsymbolizedSourceLocation contains the interface method that's being
19921    /// handled, represented as a native symbol.
19922    /// The native symbol can be symbolized after the trace is recorded.
19923    /// Not using a symbolized source location for official Chromium builds to
19924    /// reduce binary size - emitting file/function names as strings into the
19925    /// trace requires storing them in the binary, which causes a significant
19926    /// binary size bloat for Chromium.
19927    #[prost(uint64, optional, tag="4")]
19928    pub mojo_interface_method_iid: ::core::option::Option<u64>,
19929    /// Indicate whether this is a message or reply.
19930    #[prost(bool, optional, tag="5")]
19931    pub is_reply: ::core::option::Option<bool>,
19932    /// The payload size of the message being sent through mojo messages.
19933    #[prost(uint64, optional, tag="6")]
19934    pub payload_size: ::core::option::Option<u64>,
19935    /// Represents the size of the message. Includes all headers and user payload.
19936    #[prost(uint64, optional, tag="7")]
19937    pub data_num_bytes: ::core::option::Option<u64>,
19938}
19939#[derive(Clone, PartialEq, ::prost::Message)]
19940pub struct ChromeRendererSchedulerState {
19941    #[prost(enumeration="ChromeRailMode", optional, tag="1")]
19942    pub rail_mode: ::core::option::Option<i32>,
19943    #[prost(bool, optional, tag="2")]
19944    pub is_backgrounded: ::core::option::Option<bool>,
19945    #[prost(bool, optional, tag="3")]
19946    pub is_hidden: ::core::option::Option<bool>,
19947}
19948// End of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
19949
19950// Begin of protos/perfetto/trace/track_event/chrome_user_event.proto
19951
19952/// Details about a UI interaction initiated by the user, such as opening or
19953/// closing a tab or a context menu.
19954#[derive(Clone, PartialEq, ::prost::Message)]
19955pub struct ChromeUserEvent {
19956    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
19957    /// Chrome, these are usually static strings known at compile time, or
19958    /// concatenations of multiple such static strings).
19959    #[prost(string, optional, tag="1")]
19960    pub action: ::core::option::Option<::prost::alloc::string::String>,
19961    /// MD5 hash of the action string.
19962    #[prost(uint64, optional, tag="2")]
19963    pub action_hash: ::core::option::Option<u64>,
19964}
19965// End of protos/perfetto/trace/track_event/chrome_user_event.proto
19966
19967// Begin of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
19968
19969/// Details about HWNDMessageHandler trace events.
19970#[derive(Clone, PartialEq, ::prost::Message)]
19971pub struct ChromeWindowHandleEventInfo {
19972    #[prost(uint32, optional, tag="1")]
19973    pub dpi: ::core::option::Option<u32>,
19974    #[prost(uint32, optional, tag="2")]
19975    pub message_id: ::core::option::Option<u32>,
19976    #[prost(fixed64, optional, tag="3")]
19977    pub hwnd_ptr: ::core::option::Option<u64>,
19978}
19979// End of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
19980
19981// Begin of protos/perfetto/trace/track_event/screenshot.proto
19982
19983#[derive(Clone, PartialEq, ::prost::Message)]
19984pub struct Screenshot {
19985    #[prost(bytes="vec", optional, tag="1")]
19986    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19987}
19988// End of protos/perfetto/trace/track_event/screenshot.proto
19989
19990// Begin of protos/perfetto/trace/track_event/task_execution.proto
19991
19992/// TrackEvent arguments describing the execution of a task.
19993#[derive(Clone, PartialEq, ::prost::Message)]
19994pub struct TaskExecution {
19995    /// Source location that the task was posted from.
19996    /// interned SourceLocation.
19997    #[prost(uint64, optional, tag="1")]
19998    pub posted_from_iid: ::core::option::Option<u64>,
19999}
20000// Begin of protos/perfetto/trace/track_event/track_event.proto
20001
20002// NOTE: Full TrackEvent support in the client lib and chrome is WIP, thus these
20003// protos are still subject to change. Don't depend on them staying as they are.
20004
20005/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
20006/// which describe activity on a track, such as a thread or asynchronous event
20007/// track. The track is specified using separate TrackDescriptor messages and
20008/// referred to via the track's UUID.
20009///
20010/// A simple TrackEvent packet specifies a timestamp, category, name and type:
20011/// ```protobuf
20012///    trace_packet {
20013///      timestamp: 1000
20014///      track_event {
20015///        categories: \["my_cat"\]
20016///        name: "my_event"
20017///        type: TYPE_INSTANT
20018///       }
20019///     }
20020/// ```
20021///
20022/// To associate an event with a custom track (e.g. a thread), the track is
20023/// defined in a separate packet and referred to from the TrackEvent by its UUID:
20024/// ```protobuf
20025///    trace_packet {
20026///      track_descriptor {
20027///        track_uuid: 1234
20028///        name: "my_track"
20029///
20030///        // Optionally, associate the track with a thread.
20031///        thread_descriptor {
20032///          pid: 10
20033///          tid: 10
20034///          ..
20035///        }
20036///      }
20037///    }
20038/// ```
20039///
20040/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
20041///
20042/// ```protobuf
20043///    trace_packet {
20044///      timestamp: 1200
20045///      track_event {
20046///        track_uuid: 1234
20047///        categories: \["my_cat"\]
20048///        name: "my_slice"
20049///        type: TYPE_SLICE_BEGIN
20050///      }
20051///    }
20052///    trace_packet {
20053///      timestamp: 1400
20054///      track_event {
20055///        track_uuid: 1234
20056///        type: TYPE_SLICE_END
20057///      }
20058///    }
20059/// ```
20060/// TrackEvents also support optimizations to reduce data repetition and encoded
20061/// data size, e.g. through data interning (names, categories, ...) and delta
20062/// encoding of timestamps/counters. For details, see the InternedData message.
20063/// Further, default values for attributes of events on the same sequence (e.g.
20064/// their default track association) can be emitted as part of a
20065/// TrackEventDefaults message.
20066///
20067/// Next reserved id: 13 (up to 15). Next id: 57.
20068#[derive(Clone, PartialEq, ::prost::Message)]
20069pub struct TrackEvent {
20070    /// Names of categories of the event. In the client library, categories are a
20071    /// way to turn groups of individual events on or off.
20072    /// interned EventCategoryName.
20073    #[prost(uint64, repeated, packed="false", tag="3")]
20074    pub category_iids: ::prost::alloc::vec::Vec<u64>,
20075    /// non-interned variant.
20076    #[prost(string, repeated, tag="22")]
20077    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20078    #[prost(enumeration="track_event::Type", optional, tag="9")]
20079    pub r#type: ::core::option::Option<i32>,
20080    /// Identifies the track of the event. The default value may be overridden
20081    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
20082    /// sequence (in most cases sequence = one thread). If no value is specified
20083    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
20084    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
20085    #[prost(uint64, optional, tag="11")]
20086    pub track_uuid: ::core::option::Option<u64>,
20087    /// To encode counter values more efficiently, we support attaching additional
20088    /// counter values to a TrackEvent of any type. All values will share the same
20089    /// timestamp specified in the TracePacket. The value at
20090    /// extra_counter_values\[N\] is for the counter track referenced by
20091    /// extra_counter_track_uuids\[N\].
20092    ///
20093    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
20094    /// should always be equal or more uuids than values. It is valid to set more
20095    /// uuids (e.g. via defaults) than values. If uuids are specified in
20096    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
20097    /// default uuid list.
20098    ///
20099    /// For example, this allows snapshotting the thread time clock at each
20100    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
20101    #[prost(uint64, repeated, packed="false", tag="31")]
20102    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20103    #[prost(int64, repeated, packed="false", tag="12")]
20104    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
20105    /// Counter snapshots using floating point instead of integer values.
20106    #[prost(uint64, repeated, packed="false", tag="45")]
20107    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20108    #[prost(double, repeated, packed="false", tag="46")]
20109    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
20110    /// IDs of flows originating, passing through, or ending at this event.
20111    /// Flow IDs are global within a trace.
20112    ///
20113    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
20114    /// an input event may be handled on one thread but cause another event on
20115    /// a different thread - a flow between the two events can associate them.
20116    ///
20117    /// The direction of the flows between events is inferred from the events'
20118    /// timestamps. The earliest event with the same flow ID becomes the source
20119    /// of the flow. Any events thereafter are intermediate steps of the flow,
20120    /// until the flow terminates at the last event with the flow ID.
20121    ///
20122    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
20123    /// that the same ID can later be reused for another flow.
20124    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
20125    #[deprecated]
20126    #[prost(uint64, repeated, packed="false", tag="36")]
20127    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
20128    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
20129    /// consumption.
20130    #[prost(fixed64, repeated, packed="false", tag="47")]
20131    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
20132    /// List of flow ids which should terminate on this event, otherwise same as
20133    /// |flow_ids|.
20134    /// Any one flow ID should be either listed as part of |flow_ids| OR
20135    /// |terminating_flow_ids|, not both.
20136    /// DEPRECATED. Only kept for backwards compatibility.  Use
20137    /// |terminating_flow_ids|.
20138    #[deprecated]
20139    #[prost(uint64, repeated, packed="false", tag="42")]
20140    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
20141    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
20142    /// "terminating_flow_ids" to reduce memory consumption.
20143    #[prost(fixed64, repeated, packed="false", tag="48")]
20144    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
20145    /// Debug annotations associated with this event. These are arbitrary key-value
20146    /// pairs that can be used to attach additional information to the event.
20147    /// See DebugAnnotation message for details on supported value types.
20148    ///
20149    /// For example, debug annotations can be used to attach a URL or resource
20150    /// identifier to a network request event. Arrays, dictionaries and full
20151    /// nested structures (e.g. arrays of dictionaries of dictionaries)
20152    /// are supported.
20153    #[prost(message, repeated, tag="4")]
20154    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
20155    // ---------------------------------------------------------------------------
20156    // TrackEvent arguments:
20157    // ---------------------------------------------------------------------------
20158    //
20159    // NOTE: The fields below this point are NOT part of the stable public API.
20160    // They are primarily intended for internal use by Chrome and Android. These
20161    // fields may change or be removed without notice. For custom/synthetic
20162    // traces, prefer using the fields above (name, categories, type, flows,
20163    // correlation_id, callstack, etc.) along with custom debug_annotations.
20164
20165    /// Typed event arguments:
20166    #[prost(message, optional, tag="5")]
20167    pub task_execution: ::core::option::Option<TaskExecution>,
20168    #[prost(message, optional, tag="21")]
20169    pub log_message: ::core::option::Option<LogMessage>,
20170    #[prost(message, optional, tag="24")]
20171    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
20172    #[prost(message, optional, tag="25")]
20173    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
20174    #[prost(message, optional, tag="26")]
20175    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
20176    #[prost(message, optional, tag="27")]
20177    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
20178    #[prost(message, optional, tag="28")]
20179    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
20180    #[prost(message, optional, tag="29")]
20181    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
20182    /// DEPRECATED. Only kept for backwards compatibility. Use the
20183    /// |ChromeTrackEvent.frame_reporter| extension in
20184    /// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
20185    /// instead.
20186    #[deprecated]
20187    #[prost(message, optional, tag="32")]
20188    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
20189    #[prost(message, optional, tag="39")]
20190    pub chrome_application_state_info: ::core::option::Option<ChromeApplicationStateInfo>,
20191    #[prost(message, optional, tag="40")]
20192    pub chrome_renderer_scheduler_state: ::core::option::Option<ChromeRendererSchedulerState>,
20193    #[prost(message, optional, tag="41")]
20194    pub chrome_window_handle_event_info: ::core::option::Option<ChromeWindowHandleEventInfo>,
20195    #[prost(message, optional, tag="43")]
20196    pub chrome_content_settings_event_info: ::core::option::Option<ChromeContentSettingsEventInfo>,
20197    #[prost(message, optional, tag="49")]
20198    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
20199    #[prost(message, optional, tag="50")]
20200    pub screenshot: ::core::option::Option<Screenshot>,
20201    #[prost(message, optional, tag="35")]
20202    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
20203    #[prost(message, optional, tag="38")]
20204    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
20205    #[prost(message, optional, tag="6")]
20206    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
20207    /// Optional name of the event for its display in trace viewer. May be left
20208    /// unspecified for events with typed arguments.
20209    ///
20210    /// Note that metrics should not rely on event names, as they are prone to
20211    /// changing. Instead, they should use typed arguments to identify the events
20212    /// they are interested in.
20213    #[prost(oneof="track_event::NameField", tags="10, 23")]
20214    pub name_field: ::core::option::Option<track_event::NameField>,
20215    /// A new value for a counter track. |track_uuid| should refer to a track with
20216    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
20217    /// efficient encoding of counter values that are sampled at the beginning/end
20218    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
20219    /// Counter values can optionally be encoded in as delta values (positive or
20220    /// negative) on each packet sequence (see CounterIncrementalBase).
20221    #[prost(oneof="track_event::CounterValueField", tags="30, 44")]
20222    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
20223    /// An opaque identifier to correlate this slice with other slices that are
20224    /// considered part of the same logical operation, even if they are not
20225    /// causally connected. Examples uses of a correlation id might be the number
20226    /// of frame going through various stages of rendering in a GPU, the id for an
20227    /// RPC request going through a distributed system, or the id of a network
20228    /// request going through various stages of processing by the kernel.
20229    ///
20230    /// NOTE: if the events *are* causually connected, you probably want to use
20231    /// flows instead of OR in addition to correlation ids.
20232    ///
20233    /// UIs can use this identifier to visually link these slices, for instance,
20234    /// by assigning them a consistent color or highlighting the entire correlated
20235    /// set when one slice is hovered.
20236    ///
20237    /// Only one field within this 'oneof' should be set to define the correlation.
20238    #[prost(oneof="track_event::CorrelationIdField", tags="52, 53, 54")]
20239    pub correlation_id_field: ::core::option::Option<track_event::CorrelationIdField>,
20240    /// Callstack associated with this event. This captures the program stack at
20241    /// the time the event occurred, useful for understanding what code path led
20242    /// to the event.
20243    ///
20244    /// Two variants are supported:
20245    /// - callstack: Inline callstack data (simpler when trace size is not a
20246    ///    concern or callstacks are unique)
20247    /// - callstack_iid: Reference to an interned Callstack in InternedData
20248    ///    (efficient for repeated callstacks)
20249    ///
20250    /// Only one of these fields should be set.
20251    #[prost(oneof="track_event::CallstackField", tags="55, 56")]
20252    pub callstack_field: ::core::option::Option<track_event::CallstackField>,
20253    /// This field is used only if the source location represents the function that
20254    /// executes during this event.
20255    #[prost(oneof="track_event::SourceLocationField", tags="33, 34")]
20256    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
20257    // ---------------------------------------------------------------------------
20258    // Deprecated / legacy event fields, which will be removed in the future:
20259    // ---------------------------------------------------------------------------
20260
20261    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
20262    /// TracePacket instead.
20263    ///
20264    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
20265    #[prost(oneof="track_event::Timestamp", tags="1, 16")]
20266    pub timestamp: ::core::option::Option<track_event::Timestamp>,
20267    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20268    /// encode thread time instead.
20269    ///
20270    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
20271    /// microseconds.
20272    #[prost(oneof="track_event::ThreadTime", tags="2, 17")]
20273    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
20274    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20275    /// encode thread instruction count instead.
20276    ///
20277    /// Value of the instruction counter for the current thread.
20278    #[prost(oneof="track_event::ThreadInstructionCount", tags="8, 20")]
20279    pub thread_instruction_count: ::core::option::Option<track_event::ThreadInstructionCount>,
20280}
20281/// Nested message and enum types in `TrackEvent`.
20282pub mod track_event {
20283    /// Inline callstack for TrackEvents when interning is not needed.
20284    /// This is a simplified version of the profiling Callstack/Frame messages,
20285    /// designed for cases where trace size is not critical or callstacks are
20286    /// unique.
20287    ///
20288    /// Use this for simple callstacks with function names and source locations.
20289    /// For binary/library information (mappings, build IDs, relative PCs), use
20290    /// interned callstacks via callstack_iid instead.
20291    #[derive(Clone, PartialEq, ::prost::Message)]
20292    pub struct Callstack {
20293        /// Frames of this callstack, ordered from bottom (outermost) to top
20294        /// (innermost). For example, if main() calls foo() which calls bar(), the
20295        /// frames would be: [main, foo, bar]
20296        #[prost(message, repeated, tag="1")]
20297        pub frames: ::prost::alloc::vec::Vec<callstack::Frame>,
20298    }
20299    /// Nested message and enum types in `Callstack`.
20300    pub mod callstack {
20301        /// Frame within an inline callstack.
20302        #[derive(Clone, PartialEq, ::prost::Message)]
20303        pub struct Frame {
20304            /// Function name, e.g., "malloc" or "std::vector<int>::push_back"
20305            #[prost(string, optional, tag="1")]
20306            pub function_name: ::core::option::Option<::prost::alloc::string::String>,
20307            /// Optional: Source file path, e.g., "/src/foo.cc"
20308            #[prost(string, optional, tag="2")]
20309            pub source_file: ::core::option::Option<::prost::alloc::string::String>,
20310            /// Optional: Line number in the source file
20311            #[prost(uint32, optional, tag="3")]
20312            pub line_number: ::core::option::Option<u32>,
20313        }
20314    }
20315    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
20316    /// event attributes are initially simply proxied for conversion to a JSON
20317    /// trace. We intend to gradually transition these attributes to similar native
20318    /// features in TrackEvent (e.g. async + flow events), or deprecate them
20319    /// without replacement where transition is unsuitable.
20320    ///
20321    /// Next reserved id: 16 (up to 16).
20322    /// Next id: 20.
20323    #[derive(Clone, PartialEq, ::prost::Message)]
20324    pub struct LegacyEvent {
20325        /// Deprecated, use TrackEvent::name(_iid) instead.
20326        /// interned EventName.
20327        #[prost(uint64, optional, tag="1")]
20328        pub name_iid: ::core::option::Option<u64>,
20329        #[prost(int32, optional, tag="2")]
20330        pub phase: ::core::option::Option<i32>,
20331        #[prost(int64, optional, tag="3")]
20332        pub duration_us: ::core::option::Option<i64>,
20333        #[prost(int64, optional, tag="4")]
20334        pub thread_duration_us: ::core::option::Option<i64>,
20335        /// Elapsed retired instruction count during the event.
20336        #[prost(int64, optional, tag="15")]
20337        pub thread_instruction_delta: ::core::option::Option<i64>,
20338        /// Additional optional scope for |id|.
20339        #[prost(string, optional, tag="7")]
20340        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
20341        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
20342        #[prost(bool, optional, tag="9")]
20343        pub use_async_tts: ::core::option::Option<bool>,
20344        /// Idenfifies a flow. Flow events with the same bind_id are connected.
20345        #[prost(uint64, optional, tag="8")]
20346        pub bind_id: ::core::option::Option<u64>,
20347        /// Use the enclosing slice as binding point for a flow end event instead of
20348        /// the next slice. Flow start/step events always bind to the enclosing
20349        /// slice.
20350        #[prost(bool, optional, tag="12")]
20351        pub bind_to_enclosing: ::core::option::Option<bool>,
20352        #[prost(enumeration="legacy_event::FlowDirection", optional, tag="13")]
20353        pub flow_direction: ::core::option::Option<i32>,
20354        #[prost(enumeration="legacy_event::InstantEventScope", optional, tag="14")]
20355        pub instant_event_scope: ::core::option::Option<i32>,
20356        /// Override the pid/tid if the writer needs to emit events on behalf of
20357        /// another process/thread. This should be the exception. Normally, the
20358        /// pid+tid from ThreadDescriptor is used.
20359        #[prost(int32, optional, tag="18")]
20360        pub pid_override: ::core::option::Option<i32>,
20361        #[prost(int32, optional, tag="19")]
20362        pub tid_override: ::core::option::Option<i32>,
20363        #[prost(oneof="legacy_event::Id", tags="6, 10, 11")]
20364        pub id: ::core::option::Option<legacy_event::Id>,
20365    }
20366    /// Nested message and enum types in `LegacyEvent`.
20367    pub mod legacy_event {
20368        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20369        #[repr(i32)]
20370        pub enum FlowDirection {
20371            FlowUnspecified = 0,
20372            FlowIn = 1,
20373            FlowOut = 2,
20374            FlowInout = 3,
20375        }
20376        impl FlowDirection {
20377            /// String value of the enum field names used in the ProtoBuf definition.
20378            ///
20379            /// The values are not transformed in any way and thus are considered stable
20380            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20381            pub fn as_str_name(&self) -> &'static str {
20382                match self {
20383                    FlowDirection::FlowUnspecified => "FLOW_UNSPECIFIED",
20384                    FlowDirection::FlowIn => "FLOW_IN",
20385                    FlowDirection::FlowOut => "FLOW_OUT",
20386                    FlowDirection::FlowInout => "FLOW_INOUT",
20387                }
20388            }
20389        }
20390        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20391        #[repr(i32)]
20392        pub enum InstantEventScope {
20393            ScopeUnspecified = 0,
20394            ScopeGlobal = 1,
20395            ScopeProcess = 2,
20396            ScopeThread = 3,
20397        }
20398        impl InstantEventScope {
20399            /// String value of the enum field names used in the ProtoBuf definition.
20400            ///
20401            /// The values are not transformed in any way and thus are considered stable
20402            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20403            pub fn as_str_name(&self) -> &'static str {
20404                match self {
20405                    InstantEventScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
20406                    InstantEventScope::ScopeGlobal => "SCOPE_GLOBAL",
20407                    InstantEventScope::ScopeProcess => "SCOPE_PROCESS",
20408                    InstantEventScope::ScopeThread => "SCOPE_THREAD",
20409                }
20410            }
20411        }
20412        #[derive(Clone, PartialEq, ::prost::Oneof)]
20413        pub enum Id {
20414            #[prost(uint64, tag="6")]
20415            UnscopedId(u64),
20416            #[prost(uint64, tag="10")]
20417            LocalId(u64),
20418            #[prost(uint64, tag="11")]
20419            GlobalId(u64),
20420        }
20421    }
20422    // TODO(eseckler): Support using binary symbols for category/event names.
20423
20424    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
20425    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20426    #[repr(i32)]
20427    pub enum Type {
20428        Unspecified = 0,
20429        /// Slice events are events that have a begin and end timestamp, i.e. a
20430        /// duration. They can be nested similar to a callstack: If, on the same
20431        /// track, event B begins after event A, but before A ends, B is a child
20432        /// event of A and will be drawn as a nested event underneath A in the UI.
20433        /// Note that child events should always end before their parents (e.g. B
20434        /// before A).
20435        ///
20436        /// Each slice event is formed by a pair of BEGIN + END events. The END event
20437        /// does not need to repeat any TrackEvent fields it has in common with its
20438        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
20439        /// END pair will be merged during trace import.
20440        ///
20441        /// Note that we deliberately chose not to support COMPLETE events (which
20442        /// would specify a duration directly) since clients would need to delay
20443        /// writing them until the slice is completed, which can result in reordered
20444        /// events in the trace and loss of unfinished events at the end of a trace.
20445        SliceBegin = 1,
20446        SliceEnd = 2,
20447        /// Instant events are nestable events without duration. They can be children
20448        /// of slice events on the same track.
20449        Instant = 3,
20450        /// Event that provides a value for a counter track. |track_uuid| should
20451        /// refer to a counter track and |counter_value| set to the new value. Note
20452        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
20453        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
20454        Counter = 4,
20455    }
20456    impl Type {
20457        /// String value of the enum field names used in the ProtoBuf definition.
20458        ///
20459        /// The values are not transformed in any way and thus are considered stable
20460        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20461        pub fn as_str_name(&self) -> &'static str {
20462            match self {
20463                Type::Unspecified => "TYPE_UNSPECIFIED",
20464                Type::SliceBegin => "TYPE_SLICE_BEGIN",
20465                Type::SliceEnd => "TYPE_SLICE_END",
20466                Type::Instant => "TYPE_INSTANT",
20467                Type::Counter => "TYPE_COUNTER",
20468            }
20469        }
20470    }
20471    /// Optional name of the event for its display in trace viewer. May be left
20472    /// unspecified for events with typed arguments.
20473    ///
20474    /// Note that metrics should not rely on event names, as they are prone to
20475    /// changing. Instead, they should use typed arguments to identify the events
20476    /// they are interested in.
20477    #[derive(Clone, PartialEq, ::prost::Oneof)]
20478    pub enum NameField {
20479        /// interned EventName.
20480        #[prost(uint64, tag="10")]
20481        NameIid(u64),
20482        /// non-interned variant.
20483        #[prost(string, tag="23")]
20484        Name(::prost::alloc::string::String),
20485    }
20486    /// A new value for a counter track. |track_uuid| should refer to a track with
20487    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
20488    /// efficient encoding of counter values that are sampled at the beginning/end
20489    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
20490    /// Counter values can optionally be encoded in as delta values (positive or
20491    /// negative) on each packet sequence (see CounterIncrementalBase).
20492    #[derive(Clone, PartialEq, ::prost::Oneof)]
20493    pub enum CounterValueField {
20494        #[prost(int64, tag="30")]
20495        CounterValue(i64),
20496        #[prost(double, tag="44")]
20497        DoubleCounterValue(f64),
20498    }
20499    /// An opaque identifier to correlate this slice with other slices that are
20500    /// considered part of the same logical operation, even if they are not
20501    /// causally connected. Examples uses of a correlation id might be the number
20502    /// of frame going through various stages of rendering in a GPU, the id for an
20503    /// RPC request going through a distributed system, or the id of a network
20504    /// request going through various stages of processing by the kernel.
20505    ///
20506    /// NOTE: if the events *are* causually connected, you probably want to use
20507    /// flows instead of OR in addition to correlation ids.
20508    ///
20509    /// UIs can use this identifier to visually link these slices, for instance,
20510    /// by assigning them a consistent color or highlighting the entire correlated
20511    /// set when one slice is hovered.
20512    ///
20513    /// Only one field within this 'oneof' should be set to define the correlation.
20514    #[derive(Clone, PartialEq, ::prost::Oneof)]
20515    pub enum CorrelationIdField {
20516        /// A 64-bit unsigned integer used as the correlation ID.
20517        ///
20518        /// Best for performance and compact traces if the identifier is naturally
20519        /// numerical or can be easily mapped to one by the trace producer.
20520        #[prost(uint64, tag="52")]
20521        CorrelationId(u64),
20522        /// A string value used as the correlation ID.
20523        ///
20524        /// Offers maximum flexibility for human-readable or complex identifiers
20525        /// (e.g., GUIDs). Note: Using many unique, long strings may increase trace
20526        /// size. For frequently repeated string identifiers, consider
20527        /// 'correlation_id_string_iid'.
20528        #[prost(string, tag="53")]
20529        CorrelationIdStr(::prost::alloc::string::String),
20530        /// An interned string identifier (an IID) for correlation.
20531        ///
20532        /// This 64-bit ID refers to a string defined in the 'correlation_id_str'
20533        /// field within the packet sequence's InternedData. This approach combines
20534        /// the descriptiveness and uniqueness of strings with the efficiency of
20535        /// integer IDs for storage and comparison, especially for identifiers that
20536        /// repeat across many events.
20537        #[prost(uint64, tag="54")]
20538        CorrelationIdStrIid(u64),
20539    }
20540    /// Callstack associated with this event. This captures the program stack at
20541    /// the time the event occurred, useful for understanding what code path led
20542    /// to the event.
20543    ///
20544    /// Two variants are supported:
20545    /// - callstack: Inline callstack data (simpler when trace size is not a
20546    ///    concern or callstacks are unique)
20547    /// - callstack_iid: Reference to an interned Callstack in InternedData
20548    ///    (efficient for repeated callstacks)
20549    ///
20550    /// Only one of these fields should be set.
20551    #[derive(Clone, PartialEq, ::prost::Oneof)]
20552    pub enum CallstackField {
20553        /// Inline callstack data. Use this for simplicity when interning is not
20554        /// needed (e.g., for unique callstacks or when trace size is not critical).
20555        #[prost(message, tag="55")]
20556        Callstack(Callstack),
20557        /// Reference to interned Callstack (see InternedData.callstacks).
20558        /// This is the efficient option when callstacks are repeated.
20559        ///
20560        /// Note: iids *always* start from 1. A value of 0 is considered "not set".
20561        #[prost(uint64, tag="56")]
20562        CallstackIid(u64),
20563    }
20564    /// This field is used only if the source location represents the function that
20565    /// executes during this event.
20566    #[derive(Clone, PartialEq, ::prost::Oneof)]
20567    pub enum SourceLocationField {
20568        /// Non-interned field.
20569        #[prost(message, tag="33")]
20570        SourceLocation(super::SourceLocation),
20571        /// Interned field.
20572        #[prost(uint64, tag="34")]
20573        SourceLocationIid(u64),
20574    }
20575    // ---------------------------------------------------------------------------
20576    // Deprecated / legacy event fields, which will be removed in the future:
20577    // ---------------------------------------------------------------------------
20578
20579    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
20580    /// TracePacket instead.
20581    ///
20582    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
20583    #[derive(Clone, PartialEq, ::prost::Oneof)]
20584    pub enum Timestamp {
20585        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
20586        /// calculate the absolute timestamp value, sum up all delta values of the
20587        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
20588        /// the |reference_timestamp| in ThreadDescriptor. This value should always
20589        /// be positive.
20590        #[prost(int64, tag="1")]
20591        TimestampDeltaUs(i64),
20592        /// Absolute value (e.g. a manually specified timestamp in the macro).
20593        /// This is a one-off value that does not affect delta timestamp computation
20594        /// in subsequent TrackEvents.
20595        #[prost(int64, tag="16")]
20596        TimestampAbsoluteUs(i64),
20597    }
20598    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20599    /// encode thread time instead.
20600    ///
20601    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
20602    /// microseconds.
20603    #[derive(Clone, PartialEq, ::prost::Oneof)]
20604    pub enum ThreadTime {
20605        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
20606        /// calculate the absolute timestamp value, sum up all delta values of the
20607        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
20608        /// the |reference_timestamp| in ThreadDescriptor. This value should always
20609        /// be positive.
20610        #[prost(int64, tag="2")]
20611        ThreadTimeDeltaUs(i64),
20612        /// This is a one-off absolute value that does not affect delta timestamp
20613        /// computation in subsequent TrackEvents.
20614        #[prost(int64, tag="17")]
20615        ThreadTimeAbsoluteUs(i64),
20616    }
20617    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20618    /// encode thread instruction count instead.
20619    ///
20620    /// Value of the instruction counter for the current thread.
20621    #[derive(Clone, PartialEq, ::prost::Oneof)]
20622    pub enum ThreadInstructionCount {
20623        /// Same encoding as |thread_time| field above.
20624        #[prost(int64, tag="8")]
20625        ThreadInstructionCountDelta(i64),
20626        #[prost(int64, tag="20")]
20627        ThreadInstructionCountAbsolute(i64),
20628    }
20629}
20630/// Default values for fields of all TrackEvents on the same packet sequence.
20631/// Should be emitted as part of TracePacketDefaults whenever incremental state
20632/// is cleared. It's defined here because field IDs should match those of the
20633/// corresponding fields in TrackEvent.
20634#[derive(Clone, PartialEq, ::prost::Message)]
20635pub struct TrackEventDefaults {
20636    #[prost(uint64, optional, tag="11")]
20637    pub track_uuid: ::core::option::Option<u64>,
20638    #[prost(uint64, repeated, packed="false", tag="31")]
20639    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20640    #[prost(uint64, repeated, packed="false", tag="45")]
20641    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20642}
20643// --------------------
20644// Interned data types:
20645// --------------------
20646
20647#[derive(Clone, PartialEq, ::prost::Message)]
20648pub struct EventCategory {
20649    #[prost(uint64, optional, tag="1")]
20650    pub iid: ::core::option::Option<u64>,
20651    #[prost(string, optional, tag="2")]
20652    pub name: ::core::option::Option<::prost::alloc::string::String>,
20653}
20654#[derive(Clone, PartialEq, ::prost::Message)]
20655pub struct EventName {
20656    #[prost(uint64, optional, tag="1")]
20657    pub iid: ::core::option::Option<u64>,
20658    #[prost(string, optional, tag="2")]
20659    pub name: ::core::option::Option<::prost::alloc::string::String>,
20660}
20661// End of protos/perfetto/trace/track_event/track_event.proto
20662
20663// Begin of protos/perfetto/trace/interned_data/interned_data.proto
20664
20665// ------------------------------ DATA INTERNING: ------------------------------
20666// Interning indexes are built up gradually by adding the entries contained in
20667// each TracePacket of the same packet sequence (packets emitted by the same
20668// producer and TraceWriter, see |trusted_packet_sequence_id|). Thus, packets
20669// can only refer to interned data from other packets in the same sequence.
20670//
20671// The writer will emit new entries when it encounters new internable values
20672// that aren't yet in the index. Data in current and subsequent TracePackets can
20673// then refer to the entry by its position (interning ID, abbreviated "iid") in
20674// its index. An interning ID with value 0 is considered invalid (not set).
20675//
20676// Because of the incremental build-up, the interning index will miss data when
20677// TracePackets are lost, e.g. because a chunk was overridden in the central
20678// ring buffer. To avoid invalidation of the whole trace in such a case, the
20679// index is periodically reset (see SEQ_INCREMENTAL_STATE_CLEARED).
20680// When packet loss occurs, the reader will only lose interning data up to the
20681// next reset.
20682// -----------------------------------------------------------------------------
20683
20684/// Message that contains new entries for the interning indices of a packet
20685/// sequence.
20686///
20687/// The writer will usually emit new entries in the same TracePacket that first
20688/// refers to them (since the last reset of interning state). They may also be
20689/// emitted proactively in advance of referring to them in later packets.
20690///
20691/// Next reserved id: 8 (up to 15).
20692/// Next id: 44.
20693///
20694/// TODO(eseckler): Replace iid fields inside interned messages with
20695/// map<iid, message> type fields in InternedData.
20696#[derive(Clone, PartialEq, ::prost::Message)]
20697pub struct InternedData {
20698    /// Each field's message type needs to specify an |iid| field, which is the ID
20699    /// of the entry in the field's interning index. Each field constructs its own
20700    /// index, thus interning IDs are scoped to the tracing session and field
20701    /// (usually as a counter for efficient var-int encoding), and optionally to
20702    /// the incremental state generation of the packet sequence.
20703    #[prost(message, repeated, tag="1")]
20704    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
20705    #[prost(message, repeated, tag="2")]
20706    pub event_names: ::prost::alloc::vec::Vec<EventName>,
20707    #[prost(message, repeated, tag="3")]
20708    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
20709    #[prost(message, repeated, tag="27")]
20710    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<DebugAnnotationValueTypeName>,
20711    #[prost(message, repeated, tag="4")]
20712    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
20713    #[prost(message, repeated, tag="28")]
20714    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<UnsymbolizedSourceLocation>,
20715    #[prost(message, repeated, tag="20")]
20716    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
20717    #[prost(message, repeated, tag="25")]
20718    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
20719    // Note: field IDs up to 15 should be used for frequent data only.
20720
20721    /// Build IDs of exectuable files.
20722    #[prost(message, repeated, tag="16")]
20723    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
20724    /// Paths to executable files.
20725    #[prost(message, repeated, tag="17")]
20726    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
20727    /// Paths to source files.
20728    #[prost(message, repeated, tag="18")]
20729    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
20730    /// Names of functions used in frames below.
20731    #[prost(message, repeated, tag="5")]
20732    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
20733    /// Executable files mapped into processes.
20734    #[prost(message, repeated, tag="19")]
20735    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
20736    /// Frames of callstacks of a program.
20737    #[prost(message, repeated, tag="6")]
20738    pub frames: ::prost::alloc::vec::Vec<Frame>,
20739    /// A callstack of a program.
20740    #[prost(message, repeated, tag="7")]
20741    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
20742    /// Additional Vulkan information sent in a VulkanMemoryEvent message
20743    #[prost(message, repeated, tag="22")]
20744    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
20745    /// Graphics context of a render stage event.  This represent the GL
20746    /// context for an OpenGl app or the VkDevice for a Vulkan app.
20747    #[prost(message, repeated, tag="23")]
20748    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
20749    /// Description of a GPU hardware queue or render stage.
20750    #[prost(message, repeated, tag="24")]
20751    pub gpu_specifications: ::prost::alloc::vec::Vec<InternedGpuRenderStageSpecification>,
20752    /// This is set when FtraceConfig.symbolize_ksyms = true.
20753    /// The id of each symbol the number that will be reported in ftrace events
20754    /// like sched_block_reason.caller and is obtained from a monotonic counter.
20755    /// The same symbol can have different indexes in different bundles.
20756    /// This is is NOT the real address. This is to avoid disclosing KASLR through
20757    /// traces.
20758    #[prost(message, repeated, tag="26")]
20759    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
20760    /// Interned string values in the DebugAnnotation proto.
20761    #[prost(message, repeated, tag="29")]
20762    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
20763    /// Interned packet context for android.network_packets.
20764    #[prost(message, repeated, tag="30")]
20765    pub packet_context: ::prost::alloc::vec::Vec<NetworkPacketContext>,
20766    /// Interned name of a js function. We only intern js functions as there is a
20767    /// lot of duplication for them, but less so for other strings in the V8 data
20768    /// source.
20769    #[prost(message, repeated, tag="31")]
20770    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
20771    /// Js functions can be emitted multiple times for various compilation tiers,
20772    /// so it makes sense to deduplicate all this.
20773    #[prost(message, repeated, tag="32")]
20774    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
20775    /// Interned JS script (there is one associated with each JS function)
20776    #[prost(message, repeated, tag="33")]
20777    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
20778    /// Interned Wasm script (there is one associated with each Wasm function)
20779    #[prost(message, repeated, tag="34")]
20780    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
20781    /// Every V8 event is associated with an isolate, intern the isolate to remove
20782    /// duplication.
20783    #[prost(message, repeated, tag="35")]
20784    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
20785    /// Interned protolog strings args.
20786    #[prost(message, repeated, tag="36")]
20787    pub protolog_string_args: ::prost::alloc::vec::Vec<InternedString>,
20788    /// Interned protolog stacktraces.
20789    #[prost(message, repeated, tag="37")]
20790    pub protolog_stacktrace: ::prost::alloc::vec::Vec<InternedString>,
20791    /// viewcapture
20792    #[prost(message, repeated, tag="38")]
20793    pub viewcapture_package_name: ::prost::alloc::vec::Vec<InternedString>,
20794    #[prost(message, repeated, tag="39")]
20795    pub viewcapture_window_name: ::prost::alloc::vec::Vec<InternedString>,
20796    #[prost(message, repeated, tag="40")]
20797    pub viewcapture_view_id: ::prost::alloc::vec::Vec<InternedString>,
20798    #[prost(message, repeated, tag="41")]
20799    pub viewcapture_class_name: ::prost::alloc::vec::Vec<InternedString>,
20800    /// Interned context for android.app_wakelocks.
20801    #[prost(message, repeated, tag="42")]
20802    pub app_wakelock_info: ::prost::alloc::vec::Vec<AppWakelockInfo>,
20803    /// Interned correlation ids in track_event.
20804    #[prost(message, repeated, tag="43")]
20805    pub correlation_id_str: ::prost::alloc::vec::Vec<InternedString>,
20806}
20807// End of protos/perfetto/trace/interned_data/interned_data.proto
20808
20809// Begin of protos/perfetto/trace/memory_graph.proto
20810
20811// Message definitions for app-reported memory breakdowns. At the moment, this
20812// is a Chrome-only tracing feature, historically known as 'memory-infra'. See
20813// <https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/> .
20814// This is unrelated to the native or java heap profilers (those protos live
20815// in //protos/perfetto/trace/profiling/).
20816
20817#[derive(Clone, PartialEq, ::prost::Message)]
20818pub struct MemoryTrackerSnapshot {
20819    /// Unique ID that represents the global memory dump.
20820    #[prost(uint64, optional, tag="1")]
20821    pub global_dump_id: ::core::option::Option<u64>,
20822    #[prost(enumeration="memory_tracker_snapshot::LevelOfDetail", optional, tag="2")]
20823    pub level_of_detail: ::core::option::Option<i32>,
20824    #[prost(message, repeated, tag="3")]
20825    pub process_memory_dumps: ::prost::alloc::vec::Vec<memory_tracker_snapshot::ProcessSnapshot>,
20826}
20827/// Nested message and enum types in `MemoryTrackerSnapshot`.
20828pub mod memory_tracker_snapshot {
20829    /// Memory snapshot of a process. The snapshot contains memory data that is
20830    /// from 2 different sources, namely system stats and instrumentation stats.
20831    /// The system memory usage stats come from the OS based on standard API
20832    /// available in the platform to query memory usage. The instrumentation stats
20833    /// are added by instrumenting specific piece of code which tracks memory
20834    /// allocations and deallocations made by a small sub-system within the
20835    /// application.
20836    /// The system stats of the global memory snapshot are recorded as part of
20837    /// ProcessStats and SmapsPacket fields in trace packet with the same
20838    /// timestamp.
20839    #[derive(Clone, PartialEq, ::prost::Message)]
20840    pub struct ProcessSnapshot {
20841        /// Process ID of the process
20842        #[prost(int32, optional, tag="1")]
20843        pub pid: ::core::option::Option<i32>,
20844        #[prost(message, repeated, tag="2")]
20845        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
20846        #[prost(message, repeated, tag="3")]
20847        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
20848    }
20849    /// Nested message and enum types in `ProcessSnapshot`.
20850    pub mod process_snapshot {
20851        // Memory dumps are represented as a graph of memory nodes which contain
20852        // statistics. To avoid double counting the same memory across different
20853        // nodes, edges are used to mark nodes that account for the same memory. See
20854        // this doc for examples of the usage:
20855        // <https://docs.google.com/document/d/1WGQRJ1sjJrfVkNcgPVY6frm64UqPc94tsxUOXImZUZI>
20856
20857        /// A single node in the memory graph.
20858        #[derive(Clone, PartialEq, ::prost::Message)]
20859        pub struct MemoryNode {
20860            /// Unique ID of the node across all processes involved in the global
20861            /// memory dump. The ID is only unique within this particular global dump
20862            /// identified by GlobalMemoryDumpPacket.global_dump_id.
20863            #[prost(uint64, optional, tag="1")]
20864            pub id: ::core::option::Option<u64>,
20865            /// Absolute name is a unique name for the memory node within the process
20866            /// with ProcessMemoryDump.pid. The name can contain multiple parts
20867            /// separated by '/', which traces the edges of the node from the root
20868            /// node.
20869            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
20870            /// node "buffer1" in a graph structure of:
20871            ///    root -> partition_allocator -> array_buffers -> buffer1.
20872            #[prost(string, optional, tag="2")]
20873            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
20874            /// A weak node means that the instrumentation that added the current node
20875            /// is unsure about the existence of the actual memory. Unless a "strong"
20876            /// (non-weak is default) node that has an edge to the current node exists
20877            /// in the current global dump, the current node will be discarded.
20878            #[prost(bool, optional, tag="3")]
20879            pub weak: ::core::option::Option<bool>,
20880            /// Size of the node in bytes, used to compute the effective size of the
20881            /// nodes without double counting.
20882            #[prost(uint64, optional, tag="4")]
20883            pub size_bytes: ::core::option::Option<u64>,
20884            #[prost(message, repeated, tag="5")]
20885            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
20886        }
20887        /// Nested message and enum types in `MemoryNode`.
20888        pub mod memory_node {
20889            /// Entries in the memory node that contain statistics and additional
20890            /// debuggable information about the memory. The size of the node is
20891            /// tracked separately in the |size_bytes| field.
20892            #[derive(Clone, PartialEq, ::prost::Message)]
20893            pub struct MemoryNodeEntry {
20894                #[prost(string, optional, tag="1")]
20895                pub name: ::core::option::Option<::prost::alloc::string::String>,
20896                #[prost(enumeration="memory_node_entry::Units", optional, tag="2")]
20897                pub units: ::core::option::Option<i32>,
20898                /// Contains either one of uint64 or string value.
20899                #[prost(uint64, optional, tag="3")]
20900                pub value_uint64: ::core::option::Option<u64>,
20901                #[prost(string, optional, tag="4")]
20902                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
20903            }
20904            /// Nested message and enum types in `MemoryNodeEntry`.
20905            pub mod memory_node_entry {
20906                #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20907                #[repr(i32)]
20908                pub enum Units {
20909                    Unspecified = 0,
20910                    Bytes = 1,
20911                    Count = 2,
20912                }
20913                impl Units {
20914                    /// String value of the enum field names used in the ProtoBuf definition.
20915                    ///
20916                    /// The values are not transformed in any way and thus are considered stable
20917                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20918                    pub fn as_str_name(&self) -> &'static str {
20919                        match self {
20920                            Units::Unspecified => "UNSPECIFIED",
20921                            Units::Bytes => "BYTES",
20922                            Units::Count => "COUNT",
20923                        }
20924                    }
20925                }
20926            }
20927        }
20928        /// A directed edge that connects any 2 nodes in the graph above. These are
20929        /// in addition to the inherent edges added due to the tree structure of the
20930        /// node's absolute names.
20931        /// Node with id |source_id| owns the node with id |target_id|, and has the
20932        /// effect of attributing the memory usage of target to source. |importance|
20933        /// is optional and relevant only for the cases of co-ownership, where it
20934        /// acts as a z-index: the owner with the highest importance will be
20935        /// attributed target's memory.
20936        #[derive(Clone, PartialEq, ::prost::Message)]
20937        pub struct MemoryEdge {
20938            #[prost(uint64, optional, tag="1")]
20939            pub source_id: ::core::option::Option<u64>,
20940            #[prost(uint64, optional, tag="2")]
20941            pub target_id: ::core::option::Option<u64>,
20942            #[prost(uint32, optional, tag="3")]
20943            pub importance: ::core::option::Option<u32>,
20944            #[prost(bool, optional, tag="4")]
20945            pub overridable: ::core::option::Option<bool>,
20946        }
20947    }
20948    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20949    #[repr(i32)]
20950    pub enum LevelOfDetail {
20951        DetailFull = 0,
20952        DetailLight = 1,
20953        DetailBackground = 2,
20954    }
20955    impl LevelOfDetail {
20956        /// String value of the enum field names used in the ProtoBuf definition.
20957        ///
20958        /// The values are not transformed in any way and thus are considered stable
20959        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20960        pub fn as_str_name(&self) -> &'static str {
20961            match self {
20962                LevelOfDetail::DetailFull => "DETAIL_FULL",
20963                LevelOfDetail::DetailLight => "DETAIL_LIGHT",
20964                LevelOfDetail::DetailBackground => "DETAIL_BACKGROUND",
20965            }
20966        }
20967    }
20968}
20969// End of protos/perfetto/trace/memory_graph.proto
20970
20971// Begin of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
20972
20973/// Used to trace the execution of perfetto itself.
20974#[derive(Clone, PartialEq, ::prost::Message)]
20975pub struct PerfettoMetatrace {
20976    /// Only when using |event_id|.
20977    #[prost(uint64, optional, tag="3")]
20978    pub event_duration_ns: ::core::option::Option<u64>,
20979    /// Only when using |counter_id|.
20980    #[prost(int32, optional, tag="4")]
20981    pub counter_value: ::core::option::Option<i32>,
20982    /// ID of the thread that emitted the event.
20983    #[prost(uint32, optional, tag="5")]
20984    pub thread_id: ::core::option::Option<u32>,
20985    /// If true the meta-tracing ring buffer had overruns and hence some data is
20986    /// missing from this point.
20987    #[prost(bool, optional, tag="6")]
20988    pub has_overruns: ::core::option::Option<bool>,
20989    /// Args for the event.
20990    #[prost(message, repeated, tag="7")]
20991    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
20992    #[prost(message, repeated, tag="10")]
20993    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
20994    /// See base/metatrace_events.h for definitions.
20995    #[prost(oneof="perfetto_metatrace::RecordType", tags="1, 2, 8, 11, 9")]
20996    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
20997}
20998/// Nested message and enum types in `PerfettoMetatrace`.
20999pub mod perfetto_metatrace {
21000    #[derive(Clone, PartialEq, ::prost::Message)]
21001    pub struct Arg {
21002        #[prost(oneof="arg::KeyOrInternedKey", tags="1, 3")]
21003        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
21004        #[prost(oneof="arg::ValueOrInternedValue", tags="2, 4")]
21005        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
21006    }
21007    /// Nested message and enum types in `Arg`.
21008    pub mod arg {
21009        #[derive(Clone, PartialEq, ::prost::Oneof)]
21010        pub enum KeyOrInternedKey {
21011            #[prost(string, tag="1")]
21012            Key(::prost::alloc::string::String),
21013            #[prost(uint64, tag="3")]
21014            KeyIid(u64),
21015        }
21016        #[derive(Clone, PartialEq, ::prost::Oneof)]
21017        pub enum ValueOrInternedValue {
21018            #[prost(string, tag="2")]
21019            Value(::prost::alloc::string::String),
21020            #[prost(uint64, tag="4")]
21021            ValueIid(u64),
21022        }
21023    }
21024    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
21025    /// |value_iid| above.
21026    #[derive(Clone, PartialEq, ::prost::Message)]
21027    pub struct InternedString {
21028        #[prost(uint64, optional, tag="1")]
21029        pub iid: ::core::option::Option<u64>,
21030        #[prost(string, optional, tag="2")]
21031        pub value: ::core::option::Option<::prost::alloc::string::String>,
21032    }
21033    /// See base/metatrace_events.h for definitions.
21034    #[derive(Clone, PartialEq, ::prost::Oneof)]
21035    pub enum RecordType {
21036        #[prost(uint32, tag="1")]
21037        EventId(u32),
21038        #[prost(uint32, tag="2")]
21039        CounterId(u32),
21040        /// For trace processor metatracing.
21041        #[prost(string, tag="8")]
21042        EventName(::prost::alloc::string::String),
21043        #[prost(uint64, tag="11")]
21044        EventNameIid(u64),
21045        #[prost(string, tag="9")]
21046        CounterName(::prost::alloc::string::String),
21047    }
21048}
21049// End of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
21050
21051// Begin of protos/perfetto/trace/perfetto/tracing_service_event.proto
21052
21053/// Events emitted by the tracing service.
21054/// Next id: 12.
21055#[derive(Clone, PartialEq, ::prost::Message)]
21056pub struct TracingServiceEvent {
21057    /// When each of the following booleans are set to true, they report the
21058    /// point in time (through TracePacket's timestamp) where the condition
21059    /// they describe happened.
21060    /// The order of the booleans below matches the timestamp ordering
21061    /// they would generally be expected to have.
21062    #[prost(oneof="tracing_service_event::EventType", tags="2, 1, 9, 3, 4, 5, 6, 7, 8, 10, 11")]
21063    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
21064}
21065/// Nested message and enum types in `TracingServiceEvent`.
21066pub mod tracing_service_event {
21067    #[derive(Clone, PartialEq, ::prost::Message)]
21068    pub struct DataSources {
21069        #[prost(message, repeated, tag="1")]
21070        pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
21071    }
21072    /// Nested message and enum types in `DataSources`.
21073    pub mod data_sources {
21074        #[derive(Clone, PartialEq, ::prost::Message)]
21075        pub struct DataSource {
21076            #[prost(string, optional, tag="1")]
21077            pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
21078            #[prost(string, optional, tag="2")]
21079            pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
21080        }
21081    }
21082    /// When each of the following booleans are set to true, they report the
21083    /// point in time (through TracePacket's timestamp) where the condition
21084    /// they describe happened.
21085    /// The order of the booleans below matches the timestamp ordering
21086    /// they would generally be expected to have.
21087    #[derive(Clone, PartialEq, ::prost::Oneof)]
21088    pub enum EventType {
21089        /// Emitted when we start tracing and specifically, this will be before any
21090        /// producer is notified about the existence of this trace. This is always
21091        /// emitted before the all_data_sources_started event. This event is also
21092        /// guaranteed to be seen (byte-offset wise) before any data packets from
21093        /// producers.
21094        #[prost(bool, tag="2")]
21095        TracingStarted(bool),
21096        /// Emitted after all data sources saw the start event and ACKed it.
21097        /// This identifies the point in time when it's safe to assume that all data
21098        /// sources have been recording events.
21099        #[prost(bool, tag="1")]
21100        AllDataSourcesStarted(bool),
21101        /// Emitted when a flush is started.
21102        #[prost(bool, tag="9")]
21103        FlushStarted(bool),
21104        /// Emitted when all data sources have been flushed successfully or with an
21105        /// error (including timeouts). This can generally happen many times over the
21106        /// course of the trace.
21107        #[prost(bool, tag="3")]
21108        AllDataSourcesFlushed(bool),
21109        /// Emitted when reading back the central tracing buffers has been completed.
21110        /// If |write_into_file| is specified, this can happen many times over the
21111        /// course of the trace.
21112        #[prost(bool, tag="4")]
21113        ReadTracingBuffersCompleted(bool),
21114        /// Emitted after tracing has been disabled and specifically, this will be
21115        /// after all packets from producers have been included in the central
21116        /// tracing buffer.
21117        #[prost(bool, tag="5")]
21118        TracingDisabled(bool),
21119        /// Emitted if perfetto --save-for-bugreport was invoked while the current
21120        /// tracing session was running and it had the highest bugreport_score. In
21121        /// this case the original consumer will see a nearly empty trace, because
21122        /// the contents are routed onto the bugreport file. This event flags the
21123        /// situation explicitly. Traces that contain this marker should be discarded
21124        /// by test infrastructures / pipelines.
21125        /// Deprecated since Android U, where --save-for-bugreport uses
21126        /// non-destructive cloning.
21127        #[prost(bool, tag="6")]
21128        SeizedForBugreport(bool),
21129        /// Emitted when not all data sources in all producers reply to a start
21130        /// request after some time.
21131        #[prost(message, tag="7")]
21132        SlowStartingDataSources(DataSources),
21133        /// Emitted when the last flush request has failed. Lists data sources that
21134        /// did not reply on time.
21135        #[prost(message, tag="8")]
21136        LastFlushSlowDataSources(DataSources),
21137        /// If this was a cloned tracing session, emitted when the tracing serice
21138        /// started the clone operation.
21139        #[prost(bool, tag="10")]
21140        CloneStarted(bool),
21141        /// If this was a cloned tracing session, emitted when the tracing service
21142        /// finished the clone operation (for a specific buffer).
21143        #[prost(uint32, tag="11")]
21144        BufferCloned(u32),
21145    }
21146}
21147// End of protos/perfetto/trace/perfetto/tracing_service_event.proto
21148
21149// Begin of protos/perfetto/common/android_energy_consumer_descriptor.proto
21150
21151/// Energy consumer based on aidl class:
21152/// android.hardware.power.stats.EnergyConsumer.
21153#[derive(Clone, PartialEq, ::prost::Message)]
21154pub struct AndroidEnergyConsumer {
21155    /// Unique ID of this energy consumer.  Matches the ID in a
21156    /// AndroidEnergyEstimationBreakdown.
21157    #[prost(int32, optional, tag="1")]
21158    pub energy_consumer_id: ::core::option::Option<i32>,
21159    /// For a group of energy consumers of the same logical type, sorting by
21160    /// ordinal gives their physical order. Ordinals must be consecutive integers
21161    /// starting from 0.
21162    #[prost(int32, optional, tag="2")]
21163    pub ordinal: ::core::option::Option<i32>,
21164    /// Type of this energy consumer.
21165    #[prost(string, optional, tag="3")]
21166    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
21167    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
21168    /// framework.
21169    #[prost(string, optional, tag="4")]
21170    pub name: ::core::option::Option<::prost::alloc::string::String>,
21171}
21172#[derive(Clone, PartialEq, ::prost::Message)]
21173pub struct AndroidEnergyConsumerDescriptor {
21174    #[prost(message, repeated, tag="1")]
21175    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
21176}
21177// End of protos/perfetto/common/android_energy_consumer_descriptor.proto
21178
21179// Begin of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
21180
21181/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
21182/// This proto represents the aidl class:
21183/// android.hardware.power.stats.EnergyConsumerResult.
21184#[derive(Clone, PartialEq, ::prost::Message)]
21185pub struct AndroidEnergyEstimationBreakdown {
21186    /// The first trace packet of each session should include a energy consumer
21187    /// descriptor.
21188    #[prost(message, optional, tag="1")]
21189    pub energy_consumer_descriptor: ::core::option::Option<AndroidEnergyConsumerDescriptor>,
21190    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
21191    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
21192    /// should be sent at the beginning of a trace.
21193    #[prost(int32, optional, tag="2")]
21194    pub energy_consumer_id: ::core::option::Option<i32>,
21195    /// Total accumulated energy since boot in microwatt-seconds (uWs)
21196    #[prost(int64, optional, tag="3")]
21197    pub energy_uws: ::core::option::Option<i64>,
21198    /// Optional attributed energy per Android ID / Linux UID for this
21199    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
21200    /// to total accumulated energy.
21201    #[prost(message, repeated, tag="4")]
21202    pub per_uid_breakdown: ::prost::alloc::vec::Vec<android_energy_estimation_breakdown::EnergyUidBreakdown>,
21203}
21204/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
21205pub mod android_energy_estimation_breakdown {
21206    #[derive(Clone, PartialEq, ::prost::Message)]
21207    pub struct EnergyUidBreakdown {
21208        /// Android ID/Linux UID, the accumulated energy is attributed to.
21209        #[prost(int32, optional, tag="1")]
21210        pub uid: ::core::option::Option<i32>,
21211        /// Accumulated energy since boot in microwatt-seconds (uWs).
21212        #[prost(int64, optional, tag="2")]
21213        pub energy_uws: ::core::option::Option<i64>,
21214    }
21215}
21216// End of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
21217
21218// Begin of protos/perfetto/trace/power/android_entity_state_residency.proto
21219
21220#[derive(Clone, PartialEq, ::prost::Message)]
21221pub struct EntityStateResidency {
21222    /// This is only emitted at the beginning of the trace.
21223    #[prost(message, repeated, tag="1")]
21224    pub power_entity_state: ::prost::alloc::vec::Vec<entity_state_residency::PowerEntityState>,
21225    #[prost(message, repeated, tag="2")]
21226    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
21227}
21228/// Nested message and enum types in `EntityStateResidency`.
21229pub mod entity_state_residency {
21230    #[derive(Clone, PartialEq, ::prost::Message)]
21231    pub struct PowerEntityState {
21232        /// Index corresponding to the entity
21233        #[prost(int32, optional, tag="1")]
21234        pub entity_index: ::core::option::Option<i32>,
21235        /// Index corresponding to the state
21236        #[prost(int32, optional, tag="2")]
21237        pub state_index: ::core::option::Option<i32>,
21238        /// Name of the entity. This is device-specific, determined by the PowerStats
21239        /// HAL, and cannot be configured by the user. An example would be
21240        /// "Bluetooth".
21241        #[prost(string, optional, tag="3")]
21242        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
21243        /// Name of the state. This is device-specific, determined by the PowerStats
21244        /// HAL, and cannot be configured by the user. An example would be
21245        /// "Active".
21246        #[prost(string, optional, tag="4")]
21247        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
21248    }
21249    #[derive(Clone, PartialEq, ::prost::Message)]
21250    pub struct StateResidency {
21251        /// Index corresponding to PowerEntityState.entity_index
21252        #[prost(int32, optional, tag="1")]
21253        pub entity_index: ::core::option::Option<i32>,
21254        /// Index corresponding to PowerEntityState.state_index
21255        #[prost(int32, optional, tag="2")]
21256        pub state_index: ::core::option::Option<i32>,
21257        /// Time since boot that this entity has been in this state
21258        #[prost(uint64, optional, tag="3")]
21259        pub total_time_in_state_ms: ::core::option::Option<u64>,
21260        /// Total number of times since boot that the entity has entered this state
21261        #[prost(uint64, optional, tag="4")]
21262        pub total_state_entry_count: ::core::option::Option<u64>,
21263        /// Timestamp of the last time the entity entered this state
21264        #[prost(uint64, optional, tag="5")]
21265        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
21266    }
21267}
21268// End of protos/perfetto/trace/power/android_entity_state_residency.proto
21269
21270// Begin of protos/perfetto/trace/power/battery_counters.proto
21271
21272#[derive(Clone, PartialEq, ::prost::Message)]
21273pub struct BatteryCounters {
21274    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
21275    #[prost(int64, optional, tag="1")]
21276    pub charge_counter_uah: ::core::option::Option<i64>,
21277    /// Remaining battery capacity percentage of total capacity
21278    #[prost(float, optional, tag="2")]
21279    pub capacity_percent: ::core::option::Option<f32>,
21280    /// Instantaneous battery current in microamperes(µA).
21281    /// Negative values indicate current being drained from the battery and
21282    /// positive values indicate current feeding the battery from a charge source
21283    /// (USB).
21284    ///
21285    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
21286    #[prost(int64, optional, tag="3")]
21287    pub current_ua: ::core::option::Option<i64>,
21288    /// Instantaneous battery current in microamperes(µA).
21289    #[prost(int64, optional, tag="4")]
21290    pub current_avg_ua: ::core::option::Option<i64>,
21291    /// Battery name, emitted only on multiple batteries.
21292    #[prost(string, optional, tag="5")]
21293    pub name: ::core::option::Option<::prost::alloc::string::String>,
21294    /// Battery capacity in microwatt-hours(µWh).
21295    #[prost(int64, optional, tag="6")]
21296    pub energy_counter_uwh: ::core::option::Option<i64>,
21297    /// Battery voltage in microvolts(µV).
21298    #[prost(int64, optional, tag="7")]
21299    pub voltage_uv: ::core::option::Option<i64>,
21300}
21301// End of protos/perfetto/trace/power/battery_counters.proto
21302
21303// Begin of protos/perfetto/trace/power/power_rails.proto
21304
21305#[derive(Clone, PartialEq, ::prost::Message)]
21306pub struct PowerRails {
21307    /// This is only emitted at the beginning of the trace.
21308    #[prost(message, repeated, tag="1")]
21309    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
21310    #[prost(message, repeated, tag="2")]
21311    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
21312    /// A unique session id that can be used to match energy data to sets of
21313    /// descriptors. The indices used by rail descriptors and energy data packets
21314    /// are meant to be unique to a given session uuid. When multiple data sources
21315    /// are running in parallel, each data source should use a unique id.
21316    #[prost(uint64, optional, tag="3")]
21317    pub session_uuid: ::core::option::Option<u64>,
21318}
21319/// Nested message and enum types in `PowerRails`.
21320pub mod power_rails {
21321    #[derive(Clone, PartialEq, ::prost::Message)]
21322    pub struct RailDescriptor {
21323        /// Index corresponding to the rail
21324        #[prost(uint32, optional, tag="1")]
21325        pub index: ::core::option::Option<u32>,
21326        /// Name of the rail
21327        #[prost(string, optional, tag="2")]
21328        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
21329        /// Name of the subsystem to which this rail belongs
21330        #[prost(string, optional, tag="3")]
21331        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
21332        /// Hardware sampling rate (Hz).
21333        #[prost(uint32, optional, tag="4")]
21334        pub sampling_rate: ::core::option::Option<u32>,
21335    }
21336    #[derive(Clone, PartialEq, ::prost::Message)]
21337    pub struct EnergyData {
21338        /// Index corresponding to RailDescriptor.index
21339        #[prost(uint32, optional, tag="1")]
21340        pub index: ::core::option::Option<u32>,
21341        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
21342        #[prost(uint64, optional, tag="2")]
21343        pub timestamp_ms: ::core::option::Option<u64>,
21344        /// Accumulated energy since device boot in microwatt-seconds (uWs).
21345        #[prost(uint64, optional, tag="3")]
21346        pub energy: ::core::option::Option<u64>,
21347    }
21348}
21349// End of protos/perfetto/trace/power/power_rails.proto
21350
21351// Begin of protos/perfetto/trace/profiling/deobfuscation.proto
21352
21353#[derive(Clone, PartialEq, ::prost::Message)]
21354pub struct ObfuscatedMember {
21355    /// This is the obfuscated field name relative to the class containing the
21356    /// ObfuscatedMember.
21357    #[prost(string, optional, tag="1")]
21358    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21359    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
21360    /// field name including its class. Otherwise, this is this the unqualified
21361    /// deobfuscated field name relative to the class containing this
21362    /// ObfuscatedMember.
21363    #[prost(string, optional, tag="2")]
21364    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21365}
21366#[derive(Clone, PartialEq, ::prost::Message)]
21367pub struct ObfuscatedClass {
21368    #[prost(string, optional, tag="1")]
21369    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21370    #[prost(string, optional, tag="2")]
21371    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21372    /// fields.
21373    #[prost(message, repeated, tag="3")]
21374    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
21375    #[prost(message, repeated, tag="4")]
21376    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
21377}
21378#[derive(Clone, PartialEq, ::prost::Message)]
21379pub struct DeobfuscationMapping {
21380    #[prost(string, optional, tag="1")]
21381    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
21382    #[prost(int64, optional, tag="2")]
21383    pub version_code: ::core::option::Option<i64>,
21384    #[prost(message, repeated, tag="3")]
21385    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
21386}
21387// Begin of protos/perfetto/trace/profiling/heap_graph.proto
21388
21389#[derive(Clone, PartialEq, ::prost::Message)]
21390pub struct HeapGraphRoot {
21391    /// Objects retained by this root.
21392    #[prost(uint64, repeated, tag="1")]
21393    pub object_ids: ::prost::alloc::vec::Vec<u64>,
21394    #[prost(enumeration="heap_graph_root::Type", optional, tag="2")]
21395    pub root_type: ::core::option::Option<i32>,
21396}
21397/// Nested message and enum types in `HeapGraphRoot`.
21398pub mod heap_graph_root {
21399    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21400    #[repr(i32)]
21401    pub enum Type {
21402        RootUnknown = 0,
21403        RootJniGlobal = 1,
21404        RootJniLocal = 2,
21405        RootJavaFrame = 3,
21406        RootNativeStack = 4,
21407        RootStickyClass = 5,
21408        RootThreadBlock = 6,
21409        RootMonitorUsed = 7,
21410        RootThreadObject = 8,
21411        RootInternedString = 9,
21412        RootFinalizing = 10,
21413        RootDebugger = 11,
21414        RootReferenceCleanup = 12,
21415        RootVmInternal = 13,
21416        RootJniMonitor = 14,
21417    }
21418    impl Type {
21419        /// String value of the enum field names used in the ProtoBuf definition.
21420        ///
21421        /// The values are not transformed in any way and thus are considered stable
21422        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21423        pub fn as_str_name(&self) -> &'static str {
21424            match self {
21425                Type::RootUnknown => "ROOT_UNKNOWN",
21426                Type::RootJniGlobal => "ROOT_JNI_GLOBAL",
21427                Type::RootJniLocal => "ROOT_JNI_LOCAL",
21428                Type::RootJavaFrame => "ROOT_JAVA_FRAME",
21429                Type::RootNativeStack => "ROOT_NATIVE_STACK",
21430                Type::RootStickyClass => "ROOT_STICKY_CLASS",
21431                Type::RootThreadBlock => "ROOT_THREAD_BLOCK",
21432                Type::RootMonitorUsed => "ROOT_MONITOR_USED",
21433                Type::RootThreadObject => "ROOT_THREAD_OBJECT",
21434                Type::RootInternedString => "ROOT_INTERNED_STRING",
21435                Type::RootFinalizing => "ROOT_FINALIZING",
21436                Type::RootDebugger => "ROOT_DEBUGGER",
21437                Type::RootReferenceCleanup => "ROOT_REFERENCE_CLEANUP",
21438                Type::RootVmInternal => "ROOT_VM_INTERNAL",
21439                Type::RootJniMonitor => "ROOT_JNI_MONITOR",
21440            }
21441        }
21442    }
21443}
21444#[derive(Clone, PartialEq, ::prost::Message)]
21445pub struct HeapGraphType {
21446    /// TODO(fmayer): Consider removing this and using the index in the repeaed
21447    /// field to save space.
21448    #[prost(uint64, optional, tag="1")]
21449    pub id: ::core::option::Option<u64>,
21450    #[prost(uint64, optional, tag="2")]
21451    pub location_id: ::core::option::Option<u64>,
21452    #[prost(string, optional, tag="3")]
21453    pub class_name: ::core::option::Option<::prost::alloc::string::String>,
21454    /// Size of objects of this type.
21455    #[prost(uint64, optional, tag="4")]
21456    pub object_size: ::core::option::Option<u64>,
21457    #[prost(uint64, optional, tag="5")]
21458    pub superclass_id: ::core::option::Option<u64>,
21459    /// Indices for InternedData.field_names for the names of the fields of
21460    /// instances of this class. This does NOT include the fields from
21461    /// superclasses. The consumer of this data needs to walk all super
21462    /// classes to get a full lists of fields. Objects always write the
21463    /// fields in order of most specific class to the furthest up superclass.
21464    #[prost(uint64, repeated, tag="6")]
21465    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
21466    #[prost(enumeration="heap_graph_type::Kind", optional, tag="7")]
21467    pub kind: ::core::option::Option<i32>,
21468    #[prost(uint64, optional, tag="8")]
21469    pub classloader_id: ::core::option::Option<u64>,
21470}
21471/// Nested message and enum types in `HeapGraphType`.
21472pub mod heap_graph_type {
21473    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21474    #[repr(i32)]
21475    pub enum Kind {
21476        Unknown = 0,
21477        Normal = 1,
21478        Noreferences = 2,
21479        String = 3,
21480        Array = 4,
21481        Class = 5,
21482        Classloader = 6,
21483        Dexcache = 7,
21484        SoftReference = 8,
21485        WeakReference = 9,
21486        FinalizerReference = 10,
21487        PhantomReference = 11,
21488    }
21489    impl Kind {
21490        /// String value of the enum field names used in the ProtoBuf definition.
21491        ///
21492        /// The values are not transformed in any way and thus are considered stable
21493        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21494        pub fn as_str_name(&self) -> &'static str {
21495            match self {
21496                Kind::Unknown => "KIND_UNKNOWN",
21497                Kind::Normal => "KIND_NORMAL",
21498                Kind::Noreferences => "KIND_NOREFERENCES",
21499                Kind::String => "KIND_STRING",
21500                Kind::Array => "KIND_ARRAY",
21501                Kind::Class => "KIND_CLASS",
21502                Kind::Classloader => "KIND_CLASSLOADER",
21503                Kind::Dexcache => "KIND_DEXCACHE",
21504                Kind::SoftReference => "KIND_SOFT_REFERENCE",
21505                Kind::WeakReference => "KIND_WEAK_REFERENCE",
21506                Kind::FinalizerReference => "KIND_FINALIZER_REFERENCE",
21507                Kind::PhantomReference => "KIND_PHANTOM_REFERENCE",
21508            }
21509        }
21510    }
21511}
21512#[derive(Clone, PartialEq, ::prost::Message)]
21513pub struct HeapGraphObject {
21514    /// Index for InternedData.types for the name of the type of this object.
21515    #[prost(uint64, optional, tag="2")]
21516    pub type_id: ::core::option::Option<u64>,
21517    /// Bytes occupied by this objects.
21518    #[prost(uint64, optional, tag="3")]
21519    pub self_size: ::core::option::Option<u64>,
21520    /// Add this to all non-zero values in reference_object_id. This is used to
21521    /// get more compact varint encoding.
21522    ///
21523    /// The name is confusing, but this has always been used as a base for
21524    /// reference_object_id. The field should be named reference_object_id_base.
21525    #[prost(uint64, optional, tag="6")]
21526    pub reference_field_id_base: ::core::option::Option<u64>,
21527    /// Indices for InternedData.field_names for the name of the field referring
21528    /// to the object. For Android S+ and for instances of normal classes (e.g.
21529    /// not instances of java.lang.Class or arrays), this is instead set in the
21530    /// corresponding HeapGraphType, and this is left empty.
21531    #[prost(uint64, repeated, tag="4")]
21532    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
21533    /// Ids of the Object that is referred to.
21534    #[prost(uint64, repeated, tag="5")]
21535    pub reference_object_id: ::prost::alloc::vec::Vec<u64>,
21536    /// If this object is an instance of `libcore.util.NativeAllocationRegistry`,
21537    /// the value of the `size` field.
21538    ///
21539    /// N.B. This is not the native size of this object.
21540    #[prost(int64, optional, tag="8")]
21541    pub native_allocation_registry_size_field: ::core::option::Option<i64>,
21542    /// To reduce the space required we only emit the heap type if it has changed
21543    /// from the previous object we recorded.
21544    #[prost(enumeration="heap_graph_object::HeapType", optional, tag="9")]
21545    pub heap_type_delta: ::core::option::Option<i32>,
21546    /// Ids of the Objects referred by this object, not via fields, but via
21547    /// internal runtime structures.
21548    #[prost(uint64, repeated, tag="10")]
21549    pub runtime_internal_object_id: ::prost::alloc::vec::Vec<u64>,
21550    #[prost(oneof="heap_graph_object::Identifier", tags="1, 7")]
21551    pub identifier: ::core::option::Option<heap_graph_object::Identifier>,
21552}
21553/// Nested message and enum types in `HeapGraphObject`.
21554pub mod heap_graph_object {
21555    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21556    #[repr(i32)]
21557    pub enum HeapType {
21558        Unknown = 0,
21559        App = 1,
21560        Zygote = 2,
21561        BootImage = 3,
21562    }
21563    impl HeapType {
21564        /// String value of the enum field names used in the ProtoBuf definition.
21565        ///
21566        /// The values are not transformed in any way and thus are considered stable
21567        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21568        pub fn as_str_name(&self) -> &'static str {
21569            match self {
21570                HeapType::Unknown => "HEAP_TYPE_UNKNOWN",
21571                HeapType::App => "HEAP_TYPE_APP",
21572                HeapType::Zygote => "HEAP_TYPE_ZYGOTE",
21573                HeapType::BootImage => "HEAP_TYPE_BOOT_IMAGE",
21574            }
21575        }
21576    }
21577    #[derive(Clone, PartialEq, ::prost::Oneof)]
21578    pub enum Identifier {
21579        #[prost(uint64, tag="1")]
21580        Id(u64),
21581        #[prost(uint64, tag="7")]
21582        IdDelta(u64),
21583    }
21584}
21585#[derive(Clone, PartialEq, ::prost::Message)]
21586pub struct HeapGraph {
21587    #[prost(int32, optional, tag="1")]
21588    pub pid: ::core::option::Option<i32>,
21589    /// This contains all objects at the time this dump was taken. Some of these
21590    /// will be live, some of those unreachable (garbage). To find the live
21591    /// objects, the client needs to build the transitive closure of objects
21592    /// reachable from |roots|.
21593    /// All objects not contained within that transitive closure are garbage that
21594    /// has not yet been collected.
21595    #[prost(message, repeated, tag="2")]
21596    pub objects: ::prost::alloc::vec::Vec<HeapGraphObject>,
21597    /// Roots at the time this dump was taken.
21598    /// All live objects are reachable from the roots. All other objects are
21599    /// garbage.
21600    #[prost(message, repeated, tag="7")]
21601    pub roots: ::prost::alloc::vec::Vec<HeapGraphRoot>,
21602    /// Types used in HeapGraphObjects.
21603    #[prost(message, repeated, tag="9")]
21604    pub types: ::prost::alloc::vec::Vec<HeapGraphType>,
21605    /// Field names for references in managed heap graph.
21606    #[prost(message, repeated, tag="4")]
21607    pub field_names: ::prost::alloc::vec::Vec<InternedString>,
21608    /// Paths of files used in managed heap graph.
21609    #[prost(message, repeated, tag="8")]
21610    pub location_names: ::prost::alloc::vec::Vec<InternedString>,
21611    #[prost(bool, optional, tag="5")]
21612    pub continued: ::core::option::Option<bool>,
21613    #[prost(uint64, optional, tag="6")]
21614    pub index: ::core::option::Option<u64>,
21615}
21616// End of protos/perfetto/trace/profiling/heap_graph.proto
21617
21618// Begin of protos/perfetto/trace/profiling/profile_packet.proto
21619
21620// This file contains a mixture of messages emitted by various sampling
21621// profilers:
21622//
21623// Memory allocator profiling
21624// ----------------
21625// ProfilePacket:
21626//    The packet emitted by heapprofd, which started off as a native heap
21627//    (malloc/free) profiler, but now supports custom allocators as well. Each
21628//    packet contains a preaggregated state of the heap at snapshot time, which
21629//    report the total allocated/free bytes per callstack (plus other info such
21630//    as the number of samples).
21631// StreamingAllocation/StreamingFree:
21632//    Emitted by heapprofd when configured in streaming mode (i.e. when
21633//    stream_allocations = true). This is only for local testing, and doesn't
21634//    report callstacks (only address time and size of each alloc/free). It can
21635//    lead to enormous traces, as it contains the stream of each alloc/free call.
21636//
21637// Callstack sampling
21638// ------------------
21639// StreamingProfilePacket:
21640//    The packet emitted by the chromium in-process sampling profiler, which is
21641//    based on periodically sending a signal to itself, and unwinding the stack
21642//    in the signal handler. Each packet contains a series of individual stack
21643//    samples for a Chromium thread.
21644//
21645// Callstack and performance counter sampling
21646// ---------------------
21647// PerfSample:
21648//    The packet emitted by traced_perf sampling performance profiler based on
21649//    the perf_event_open syscall. Each packet represents an individual sample
21650//    of a performance counter (which might be a timer), and optionally a
21651//    callstack of the process that was scheduled at the time of the sample.
21652//
21653
21654/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
21655/// involve more than one ProfilePacket if the snapshot is big (when |continued|
21656/// is true). The cardinality and grouping is as follows:
21657/// A ProfilePacket contains:
21658///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
21659///     one heap per process (the main malloc/free heap), but there can be more if
21660///     the process is using the heapprofd API to profile custom allocators.
21661///   - Globally interned strings, mappings and frames (to allow de-duplicating
21662///     frames/mapping in common between different processes).
21663/// A ProcessHeapSamples contains:
21664///   - The process and heap identifier.
21665///   - A number of HeapSample, one for each callsite that had some alloc/frees.
21666///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
21667/// A HeapSample contains statistics about callsites:
21668///   - Total number of bytes allocated and freed from that callsite.
21669///   - Total number of alloc/free calls sampled.
21670///   - Stats at the local maximum when dump_at_max = true.
21671/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
21672#[derive(Clone, PartialEq, ::prost::Message)]
21673pub struct ProfilePacket {
21674    /// The following interning tables are only used in Android version Q.
21675    /// In newer versions, these tables are in InternedData
21676    /// (see protos/perfetto/trace/interned_data) and are shared across
21677    /// multiple ProfilePackets.
21678    /// For backwards compatibility, consumers need to first look up interned
21679    /// data in the tables within the ProfilePacket, and then, if they are empty,
21680    /// look up in the InternedData instead.
21681    #[prost(message, repeated, tag="1")]
21682    pub strings: ::prost::alloc::vec::Vec<InternedString>,
21683    #[prost(message, repeated, tag="4")]
21684    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
21685    #[prost(message, repeated, tag="2")]
21686    pub frames: ::prost::alloc::vec::Vec<Frame>,
21687    #[prost(message, repeated, tag="3")]
21688    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
21689    #[prost(message, repeated, tag="5")]
21690    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
21691    /// If this is true, the next ProfilePacket in this package_sequence_id is a
21692    /// continuation of this one.
21693    /// To get all samples for a process, accummulate its
21694    /// ProcessHeapSamples.samples until you see continued=false.
21695    #[prost(bool, optional, tag="6")]
21696    pub continued: ::core::option::Option<bool>,
21697    /// Index of this ProfilePacket on its package_sequence_id. Can be used
21698    /// to detect dropped data.
21699    /// Verify these are consecutive.
21700    #[prost(uint64, optional, tag="7")]
21701    pub index: ::core::option::Option<u64>,
21702}
21703/// Nested message and enum types in `ProfilePacket`.
21704pub mod profile_packet {
21705    /// Next ID: 9
21706    #[derive(Clone, PartialEq, ::prost::Message)]
21707    pub struct HeapSample {
21708        #[prost(uint64, optional, tag="1")]
21709        pub callstack_id: ::core::option::Option<u64>,
21710        /// bytes allocated at this callstack.
21711        #[prost(uint64, optional, tag="2")]
21712        pub self_allocated: ::core::option::Option<u64>,
21713        /// bytes allocated at this callstack that have been freed.
21714        #[prost(uint64, optional, tag="3")]
21715        pub self_freed: ::core::option::Option<u64>,
21716        /// Bytes allocated by this callstack but not freed at the time the malloc
21717        /// heap usage of this process was maximal. This is only set if dump_at_max
21718        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
21719        /// self_idle will not be set.
21720        #[prost(uint64, optional, tag="8")]
21721        pub self_max: ::core::option::Option<u64>,
21722        /// Number of allocations that were sampled at this callstack but not freed
21723        /// at the time the malloc heap usage of this process was maximal. This is
21724        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
21725        /// self_allocated, self_freed and self_idle will not be set.
21726        #[prost(uint64, optional, tag="9")]
21727        pub self_max_count: ::core::option::Option<u64>,
21728        /// timestamp \[opt\]
21729        #[prost(uint64, optional, tag="4")]
21730        pub timestamp: ::core::option::Option<u64>,
21731        /// Number of allocations that were sampled at this callstack.
21732        #[prost(uint64, optional, tag="5")]
21733        pub alloc_count: ::core::option::Option<u64>,
21734        /// Number of allocations that were sampled at this callstack that have been
21735        /// freed.
21736        #[prost(uint64, optional, tag="6")]
21737        pub free_count: ::core::option::Option<u64>,
21738    }
21739    #[derive(Clone, PartialEq, ::prost::Message)]
21740    pub struct Histogram {
21741        #[prost(message, repeated, tag="1")]
21742        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
21743    }
21744    /// Nested message and enum types in `Histogram`.
21745    pub mod histogram {
21746        #[derive(Clone, PartialEq, ::prost::Message)]
21747        pub struct Bucket {
21748            /// This bucket counts values from the previous bucket's (or -infinity if
21749            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
21750            /// (exclusive).
21751            #[prost(uint64, optional, tag="1")]
21752            pub upper_limit: ::core::option::Option<u64>,
21753            /// This is the highest bucket. This is set instead of the upper_limit. Any
21754            /// values larger or equal to the previous bucket's upper_limit are counted
21755            /// in this bucket.
21756            #[prost(bool, optional, tag="2")]
21757            pub max_bucket: ::core::option::Option<bool>,
21758            /// Number of values that fall into this range.
21759            #[prost(uint64, optional, tag="3")]
21760            pub count: ::core::option::Option<u64>,
21761        }
21762    }
21763    #[derive(Clone, PartialEq, ::prost::Message)]
21764    pub struct ProcessStats {
21765        #[prost(uint64, optional, tag="1")]
21766        pub unwinding_errors: ::core::option::Option<u64>,
21767        #[prost(uint64, optional, tag="2")]
21768        pub heap_samples: ::core::option::Option<u64>,
21769        #[prost(uint64, optional, tag="3")]
21770        pub map_reparses: ::core::option::Option<u64>,
21771        #[prost(message, optional, tag="4")]
21772        pub unwinding_time_us: ::core::option::Option<Histogram>,
21773        #[prost(uint64, optional, tag="5")]
21774        pub total_unwinding_time_us: ::core::option::Option<u64>,
21775        #[prost(uint64, optional, tag="6")]
21776        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
21777    }
21778    #[derive(Clone, PartialEq, ::prost::Message)]
21779    pub struct ProcessHeapSamples {
21780        #[prost(uint64, optional, tag="1")]
21781        pub pid: ::core::option::Option<u64>,
21782        /// This process was profiled from startup.
21783        /// If false, this process was already running when profiling started.
21784        #[prost(bool, optional, tag="3")]
21785        pub from_startup: ::core::option::Option<bool>,
21786        /// This process was not profiled because a concurrent session was active.
21787        /// If this is true, samples will be empty.
21788        #[prost(bool, optional, tag="4")]
21789        pub rejected_concurrent: ::core::option::Option<bool>,
21790        /// This process disconnected while it was profiled.
21791        /// If false, the process outlived the profiling session.
21792        #[prost(bool, optional, tag="6")]
21793        pub disconnected: ::core::option::Option<bool>,
21794        /// If disconnected, this disconnect was caused by the client overrunning
21795        /// the buffer.
21796        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
21797        /// on new S builds.
21798        #[prost(bool, optional, tag="7")]
21799        pub buffer_overran: ::core::option::Option<bool>,
21800        #[prost(enumeration="process_heap_samples::ClientError", optional, tag="14")]
21801        pub client_error: ::core::option::Option<i32>,
21802        /// If disconnected, this disconnected was caused by the shared memory
21803        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
21804        /// MEMORY CORRUPTION.
21805        #[prost(bool, optional, tag="8")]
21806        pub buffer_corrupted: ::core::option::Option<bool>,
21807        /// If disconnected, this disconnect was caused by heapprofd exceeding
21808        /// guardrails during this profiling session.
21809        #[prost(bool, optional, tag="10")]
21810        pub hit_guardrail: ::core::option::Option<bool>,
21811        #[prost(string, optional, tag="11")]
21812        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
21813        #[prost(uint64, optional, tag="12")]
21814        pub sampling_interval_bytes: ::core::option::Option<u64>,
21815        #[prost(uint64, optional, tag="13")]
21816        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
21817        /// Timestamp of the state of the target process that this dump represents.
21818        /// This can be different to the timestamp of the TracePackets for various
21819        /// reasons:
21820        /// * If disconnected is set above, this is the timestamp of last state
21821        ///    heapprofd had of the process before it disconnected.
21822        /// * Otherwise, if the rate of events produced by the process is high,
21823        ///    heapprofd might be behind.
21824        ///
21825        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
21826        ///                to have a type enum that we can reuse here.
21827        #[prost(uint64, optional, tag="9")]
21828        pub timestamp: ::core::option::Option<u64>,
21829        /// Metadata about heapprofd.
21830        #[prost(message, optional, tag="5")]
21831        pub stats: ::core::option::Option<ProcessStats>,
21832        #[prost(message, repeated, tag="2")]
21833        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
21834    }
21835    /// Nested message and enum types in `ProcessHeapSamples`.
21836    pub mod process_heap_samples {
21837        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21838        #[repr(i32)]
21839        pub enum ClientError {
21840            None = 0,
21841            HitTimeout = 1,
21842            InvalidStackBounds = 2,
21843        }
21844        impl ClientError {
21845            /// String value of the enum field names used in the ProtoBuf definition.
21846            ///
21847            /// The values are not transformed in any way and thus are considered stable
21848            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21849            pub fn as_str_name(&self) -> &'static str {
21850                match self {
21851                    ClientError::None => "CLIENT_ERROR_NONE",
21852                    ClientError::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
21853                    ClientError::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
21854                }
21855            }
21856        }
21857    }
21858}
21859/// Packet emitted by heapprofd when stream_allocations = true. Only for local
21860/// testing. Doesn't report the callsite.
21861#[derive(Clone, PartialEq, ::prost::Message)]
21862pub struct StreamingAllocation {
21863    /// TODO(fmayer): Add callstack.
21864    #[prost(uint64, repeated, packed="false", tag="1")]
21865    pub address: ::prost::alloc::vec::Vec<u64>,
21866    #[prost(uint64, repeated, packed="false", tag="2")]
21867    pub size: ::prost::alloc::vec::Vec<u64>,
21868    #[prost(uint64, repeated, packed="false", tag="3")]
21869    pub sample_size: ::prost::alloc::vec::Vec<u64>,
21870    #[prost(uint64, repeated, packed="false", tag="4")]
21871    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
21872    #[prost(uint32, repeated, packed="false", tag="5")]
21873    pub heap_id: ::prost::alloc::vec::Vec<u32>,
21874    #[prost(uint64, repeated, packed="false", tag="6")]
21875    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
21876}
21877/// Packet emitted by heapprofd when stream_allocations = true. Only for local
21878/// testing. Doesn't report the callsite.
21879#[derive(Clone, PartialEq, ::prost::Message)]
21880pub struct StreamingFree {
21881    /// TODO(fmayer): Add callstack.
21882    #[prost(uint64, repeated, packed="false", tag="1")]
21883    pub address: ::prost::alloc::vec::Vec<u64>,
21884    #[prost(uint32, repeated, packed="false", tag="2")]
21885    pub heap_id: ::prost::alloc::vec::Vec<u32>,
21886    #[prost(uint64, repeated, packed="false", tag="3")]
21887    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
21888}
21889/// Packet emitted by the chromium in-process signal-based callstack sampler.
21890/// Represents a series of individual stack samples (sampled at discrete points
21891/// in time), rather than aggregated over an interval.
21892#[derive(Clone, PartialEq, ::prost::Message)]
21893pub struct StreamingProfilePacket {
21894    /// Index into InternedData.callstacks
21895    #[prost(uint64, repeated, packed="false", tag="1")]
21896    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
21897    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
21898    /// this with ClockSnapshot-based delta encoding instead.
21899    #[prost(int64, repeated, packed="false", tag="2")]
21900    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
21901    #[prost(int32, optional, tag="3")]
21902    pub process_priority: ::core::option::Option<i32>,
21903}
21904/// Namespace for the contained enums.
21905#[derive(Clone, PartialEq, ::prost::Message)]
21906pub struct Profiling {
21907}
21908/// Nested message and enum types in `Profiling`.
21909pub mod profiling {
21910    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21911    #[repr(i32)]
21912    pub enum CpuMode {
21913        ModeUnknown = 0,
21914        ModeKernel = 1,
21915        ModeUser = 2,
21916        /// The following values aren't expected, but included for completeness:
21917        ModeHypervisor = 3,
21918        ModeGuestKernel = 4,
21919        ModeGuestUser = 5,
21920    }
21921    impl CpuMode {
21922        /// String value of the enum field names used in the ProtoBuf definition.
21923        ///
21924        /// The values are not transformed in any way and thus are considered stable
21925        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21926        pub fn as_str_name(&self) -> &'static str {
21927            match self {
21928                CpuMode::ModeUnknown => "MODE_UNKNOWN",
21929                CpuMode::ModeKernel => "MODE_KERNEL",
21930                CpuMode::ModeUser => "MODE_USER",
21931                CpuMode::ModeHypervisor => "MODE_HYPERVISOR",
21932                CpuMode::ModeGuestKernel => "MODE_GUEST_KERNEL",
21933                CpuMode::ModeGuestUser => "MODE_GUEST_USER",
21934            }
21935        }
21936    }
21937    /// Enumeration of libunwindstack's error codes.
21938    /// NB: the integral representations of the two enums are different.
21939    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21940    #[repr(i32)]
21941    pub enum StackUnwindError {
21942        UnwindErrorUnknown = 0,
21943        UnwindErrorNone = 1,
21944        UnwindErrorMemoryInvalid = 2,
21945        UnwindErrorUnwindInfo = 3,
21946        UnwindErrorUnsupported = 4,
21947        UnwindErrorInvalidMap = 5,
21948        UnwindErrorMaxFramesExceeded = 6,
21949        UnwindErrorRepeatedFrame = 7,
21950        UnwindErrorInvalidElf = 8,
21951        UnwindErrorSystemCall = 9,
21952        UnwindErrorThreadTimeout = 10,
21953        UnwindErrorThreadDoesNotExist = 11,
21954        UnwindErrorBadArch = 12,
21955        UnwindErrorMapsParse = 13,
21956        UnwindErrorInvalidParameter = 14,
21957        UnwindErrorPtraceCall = 15,
21958    }
21959    impl StackUnwindError {
21960        /// String value of the enum field names used in the ProtoBuf definition.
21961        ///
21962        /// The values are not transformed in any way and thus are considered stable
21963        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21964        pub fn as_str_name(&self) -> &'static str {
21965            match self {
21966                StackUnwindError::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
21967                StackUnwindError::UnwindErrorNone => "UNWIND_ERROR_NONE",
21968                StackUnwindError::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
21969                StackUnwindError::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
21970                StackUnwindError::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
21971                StackUnwindError::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
21972                StackUnwindError::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
21973                StackUnwindError::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
21974                StackUnwindError::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
21975                StackUnwindError::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
21976                StackUnwindError::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
21977                StackUnwindError::UnwindErrorThreadDoesNotExist => "UNWIND_ERROR_THREAD_DOES_NOT_EXIST",
21978                StackUnwindError::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
21979                StackUnwindError::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
21980                StackUnwindError::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
21981                StackUnwindError::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
21982            }
21983        }
21984    }
21985}
21986/// Packet emitted by the traced_perf sampling performance profiler, which
21987/// gathers data via the perf_event_open syscall. Each packet contains an
21988/// individual sample with a counter value, and optionally a
21989/// callstack.
21990///
21991/// Timestamps are within the root packet. The config can specify the clock, or
21992/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
21993/// timeframe, the default was CLOCK_BOOTTIME.
21994///
21995/// There are several distinct views of this message:
21996/// * indication of kernel buffer data loss (kernel_records_lost set)
21997/// * indication of skipped samples (sample_skipped_reason set)
21998/// * notable event in the sampling implementation (producer_event set)
21999/// * normal sample (timebase_count set, typically also callstack_iid)
22000#[derive(Clone, PartialEq, ::prost::Message)]
22001pub struct PerfSample {
22002    #[prost(uint32, optional, tag="1")]
22003    pub cpu: ::core::option::Option<u32>,
22004    #[prost(uint32, optional, tag="2")]
22005    pub pid: ::core::option::Option<u32>,
22006    #[prost(uint32, optional, tag="3")]
22007    pub tid: ::core::option::Option<u32>,
22008    /// Execution state that the process was sampled at.
22009    #[prost(enumeration="profiling::CpuMode", optional, tag="5")]
22010    pub cpu_mode: ::core::option::Option<i32>,
22011    /// Value of the timebase counter (since the event was configured, no deltas).
22012    #[prost(uint64, optional, tag="6")]
22013    pub timebase_count: ::core::option::Option<u64>,
22014    /// Value of the followers counter (since the event was configured, no deltas).
22015    #[prost(uint64, repeated, packed="false", tag="7")]
22016    pub follower_counts: ::prost::alloc::vec::Vec<u64>,
22017    /// Unwound callstack. Might be partial, in which case a synthetic "error"
22018    /// frame is appended, and |unwind_error| is set accordingly.
22019    #[prost(uint64, optional, tag="4")]
22020    pub callstack_iid: ::core::option::Option<u64>,
22021    /// If set, indicates that this message is not a sample, but rather an
22022    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
22023    /// loss occurs when the kernel has insufficient ring buffer capacity to write
22024    /// a record (which gets discarded). A record in this context is an individual
22025    /// ring buffer entry, and counts more than just sample records.
22026    ///
22027    /// The |timestamp| of the packet corresponds to the time that the producer
22028    /// wrote the packet for trace-sorting purposes alone, and should not be
22029    /// interpreted relative to the sample timestamps. This field is sufficient to
22030    /// detect that *some* kernel data loss happened within the trace, but not the
22031    /// specific time bounds of that loss (which would require tracking precedessor
22032    /// & successor timestamps, which is not deemed necessary at the moment).
22033    #[prost(uint64, optional, tag="17")]
22034    pub kernel_records_lost: ::core::option::Option<u64>,
22035    #[prost(message, optional, tag="19")]
22036    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
22037    /// If set, stack unwinding was incomplete due to an error.
22038    /// Unset values should be treated as UNWIND_ERROR_NONE.
22039    #[prost(oneof="perf_sample::OptionalUnwindError", tags="16")]
22040    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
22041    #[prost(oneof="perf_sample::OptionalSampleSkippedReason", tags="18")]
22042    pub optional_sample_skipped_reason: ::core::option::Option<perf_sample::OptionalSampleSkippedReason>,
22043}
22044/// Nested message and enum types in `PerfSample`.
22045pub mod perf_sample {
22046    /// A notable event within the sampling implementation.
22047    #[derive(Clone, PartialEq, ::prost::Message)]
22048    pub struct ProducerEvent {
22049        #[prost(oneof="producer_event::OptionalSourceStopReason", tags="1")]
22050        pub optional_source_stop_reason: ::core::option::Option<producer_event::OptionalSourceStopReason>,
22051    }
22052    /// Nested message and enum types in `ProducerEvent`.
22053    pub mod producer_event {
22054        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22055        #[repr(i32)]
22056        pub enum DataSourceStopReason {
22057            ProfilerStopUnknown = 0,
22058            ProfilerStopGuardrail = 1,
22059        }
22060        impl DataSourceStopReason {
22061            /// String value of the enum field names used in the ProtoBuf definition.
22062            ///
22063            /// The values are not transformed in any way and thus are considered stable
22064            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22065            pub fn as_str_name(&self) -> &'static str {
22066                match self {
22067                    DataSourceStopReason::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
22068                    DataSourceStopReason::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
22069                }
22070            }
22071        }
22072        #[derive(Clone, PartialEq, ::prost::Oneof)]
22073        pub enum OptionalSourceStopReason {
22074            #[prost(enumeration="DataSourceStopReason", tag="1")]
22075            SourceStopReason(i32),
22076        }
22077    }
22078    /// If set, indicates that the profiler encountered a sample that was relevant,
22079    /// but was skipped.
22080    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22081    #[repr(i32)]
22082    pub enum SampleSkipReason {
22083        ProfilerSkipUnknown = 0,
22084        ProfilerSkipReadStage = 1,
22085        ProfilerSkipUnwindStage = 2,
22086        ProfilerSkipUnwindEnqueue = 3,
22087        ProfilerSkipNotInScope = 4,
22088    }
22089    impl SampleSkipReason {
22090        /// String value of the enum field names used in the ProtoBuf definition.
22091        ///
22092        /// The values are not transformed in any way and thus are considered stable
22093        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22094        pub fn as_str_name(&self) -> &'static str {
22095            match self {
22096                SampleSkipReason::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
22097                SampleSkipReason::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
22098                SampleSkipReason::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
22099                SampleSkipReason::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
22100                SampleSkipReason::ProfilerSkipNotInScope => "PROFILER_SKIP_NOT_IN_SCOPE",
22101            }
22102        }
22103    }
22104    /// If set, stack unwinding was incomplete due to an error.
22105    /// Unset values should be treated as UNWIND_ERROR_NONE.
22106    #[derive(Clone, PartialEq, ::prost::Oneof)]
22107    pub enum OptionalUnwindError {
22108        #[prost(enumeration="super::profiling::StackUnwindError", tag="16")]
22109        UnwindError(i32),
22110    }
22111    #[derive(Clone, PartialEq, ::prost::Oneof)]
22112    pub enum OptionalSampleSkippedReason {
22113        #[prost(enumeration="SampleSkipReason", tag="18")]
22114        SampleSkippedReason(i32),
22115    }
22116}
22117/// Submessage for TracePacketDefaults.
22118#[derive(Clone, PartialEq, ::prost::Message)]
22119pub struct PerfSampleDefaults {
22120    /// The sampling timebase. Might not be identical to the data source config if
22121    /// the implementation decided to default/override some parameters.
22122    #[prost(message, optional, tag="1")]
22123    pub timebase: ::core::option::Option<perf_events::Timebase>,
22124    /// Description of followers event
22125    #[prost(message, repeated, tag="4")]
22126    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
22127    /// If the config requested process sharding, report back the count and which
22128    /// of those bins was selected. Never changes for the duration of a trace.
22129    #[prost(uint32, optional, tag="2")]
22130    pub process_shard_count: ::core::option::Option<u32>,
22131    #[prost(uint32, optional, tag="3")]
22132    pub chosen_process_shard: ::core::option::Option<u32>,
22133}
22134// End of protos/perfetto/trace/profiling/profile_packet.proto
22135
22136// Begin of protos/perfetto/trace/profiling/smaps.proto
22137
22138#[derive(Clone, PartialEq, ::prost::Message)]
22139pub struct SmapsEntry {
22140    #[prost(string, optional, tag="1")]
22141    pub path: ::core::option::Option<::prost::alloc::string::String>,
22142    #[prost(uint64, optional, tag="2")]
22143    pub size_kb: ::core::option::Option<u64>,
22144    #[prost(uint64, optional, tag="3")]
22145    pub private_dirty_kb: ::core::option::Option<u64>,
22146    #[prost(uint64, optional, tag="4")]
22147    pub swap_kb: ::core::option::Option<u64>,
22148    /// for field upload (instead of path).
22149    #[prost(string, optional, tag="5")]
22150    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
22151    /// TODO(crbug.com/1098746): Consider encoding this as incremental values.
22152    #[prost(uint64, optional, tag="6")]
22153    pub start_address: ::core::option::Option<u64>,
22154    #[prost(uint64, optional, tag="7")]
22155    pub module_timestamp: ::core::option::Option<u64>,
22156    #[prost(string, optional, tag="8")]
22157    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
22158    #[prost(string, optional, tag="9")]
22159    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
22160    #[prost(uint32, optional, tag="10")]
22161    pub protection_flags: ::core::option::Option<u32>,
22162    #[prost(uint64, optional, tag="11")]
22163    pub private_clean_resident_kb: ::core::option::Option<u64>,
22164    #[prost(uint64, optional, tag="12")]
22165    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
22166    #[prost(uint64, optional, tag="13")]
22167    pub shared_clean_resident_kb: ::core::option::Option<u64>,
22168    #[prost(uint64, optional, tag="14")]
22169    pub locked_kb: ::core::option::Option<u64>,
22170    #[prost(uint64, optional, tag="15")]
22171    pub proportional_resident_kb: ::core::option::Option<u64>,
22172}
22173#[derive(Clone, PartialEq, ::prost::Message)]
22174pub struct SmapsPacket {
22175    #[prost(uint32, optional, tag="1")]
22176    pub pid: ::core::option::Option<u32>,
22177    #[prost(message, repeated, tag="2")]
22178    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
22179}
22180// End of protos/perfetto/trace/profiling/smaps.proto
22181
22182// Begin of protos/perfetto/trace/ps/process_stats.proto
22183
22184/// Per-process periodically sampled stats. These samples are wrapped in a
22185/// dedicated message (as opposite to be fields in process_tree.proto) because
22186/// they are dumped at a different rate than cmdline and thread list.
22187/// Note: not all of these stats will be present in every ProcessStats message
22188/// and sometimes processes may be missing. This is because counters are
22189/// cached to reduce emission of counters which do not change.
22190#[derive(Clone, PartialEq, ::prost::Message)]
22191pub struct ProcessStats {
22192    #[prost(message, repeated, tag="1")]
22193    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
22194    /// The time at which we finish collecting this batch of samples;
22195    /// the top-level packet timestamp is the time at which
22196    /// we begin collection.
22197    #[prost(uint64, optional, tag="2")]
22198    pub collection_end_timestamp: ::core::option::Option<u64>,
22199}
22200/// Nested message and enum types in `ProcessStats`.
22201pub mod process_stats {
22202    /// Per-thread periodically sampled stats.
22203    /// Note: not all of these stats will be present in every message. See the note
22204    /// for ProcessStats.
22205    #[derive(Clone, PartialEq, ::prost::Message)]
22206    pub struct Thread {
22207        #[prost(int32, optional, tag="1")]
22208        pub tid: ::core::option::Option<i32>,
22209    }
22210    #[derive(Clone, PartialEq, ::prost::Message)]
22211    pub struct FdInfo {
22212        #[prost(uint64, optional, tag="1")]
22213        pub fd: ::core::option::Option<u64>,
22214        #[prost(string, optional, tag="2")]
22215        pub path: ::core::option::Option<::prost::alloc::string::String>,
22216    }
22217    #[derive(Clone, PartialEq, ::prost::Message)]
22218    pub struct Process {
22219        #[prost(int32, optional, tag="1")]
22220        pub pid: ::core::option::Option<i32>,
22221        #[prost(message, repeated, tag="11")]
22222        pub threads: ::prost::alloc::vec::Vec<Thread>,
22223        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
22224        #[prost(uint64, optional, tag="2")]
22225        pub vm_size_kb: ::core::option::Option<u64>,
22226        #[prost(uint64, optional, tag="3")]
22227        pub vm_rss_kb: ::core::option::Option<u64>,
22228        #[prost(uint64, optional, tag="4")]
22229        pub rss_anon_kb: ::core::option::Option<u64>,
22230        #[prost(uint64, optional, tag="5")]
22231        pub rss_file_kb: ::core::option::Option<u64>,
22232        #[prost(uint64, optional, tag="6")]
22233        pub rss_shmem_kb: ::core::option::Option<u64>,
22234        #[prost(uint64, optional, tag="7")]
22235        pub vm_swap_kb: ::core::option::Option<u64>,
22236        #[prost(uint64, optional, tag="8")]
22237        pub vm_locked_kb: ::core::option::Option<u64>,
22238        /// When adding a new field remember to update kProcMemCounterSize in
22239        /// the trace processor.
22240        #[prost(uint64, optional, tag="9")]
22241        pub vm_hwm_kb: ::core::option::Option<u64>,
22242        #[prost(int64, optional, tag="10")]
22243        pub oom_score_adj: ::core::option::Option<i64>,
22244        /// The peak resident set size is resettable in newer Posix kernels.
22245        /// This field specifies if reset is supported and if the writer had reset
22246        /// the peaks after each process stats recording.
22247        #[prost(bool, optional, tag="12")]
22248        pub is_peak_rss_resettable: ::core::option::Option<bool>,
22249        /// Private, shared and swap footprint of the process as measured by
22250        /// Chrome. To know more about these metrics refer to:
22251        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
22252        #[prost(uint32, optional, tag="13")]
22253        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
22254        #[prost(uint32, optional, tag="14")]
22255        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
22256        #[prost(message, repeated, tag="15")]
22257        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
22258        /// These fields are set only when scan_smaps_rollup=true
22259        #[prost(uint64, optional, tag="16")]
22260        pub smr_rss_kb: ::core::option::Option<u64>,
22261        #[prost(uint64, optional, tag="17")]
22262        pub smr_pss_kb: ::core::option::Option<u64>,
22263        #[prost(uint64, optional, tag="18")]
22264        pub smr_pss_anon_kb: ::core::option::Option<u64>,
22265        #[prost(uint64, optional, tag="19")]
22266        pub smr_pss_file_kb: ::core::option::Option<u64>,
22267        #[prost(uint64, optional, tag="20")]
22268        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
22269        #[prost(uint64, optional, tag="23")]
22270        pub smr_swap_pss_kb: ::core::option::Option<u64>,
22271        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
22272        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
22273        /// Resolution of "clock ticks", usually 10ms.
22274        #[prost(uint64, optional, tag="21")]
22275        pub runtime_user_mode: ::core::option::Option<u64>,
22276        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
22277        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
22278        /// Resolution of "clock ticks", usually 10ms.
22279        #[prost(uint64, optional, tag="22")]
22280        pub runtime_kernel_mode: ::core::option::Option<u64>,
22281        /// The total size of all dmabufs referenced by a process via FDs or VMAs.
22282        #[prost(uint64, optional, tag="24")]
22283        pub dmabuf_rss_kb: ::core::option::Option<u64>,
22284    }
22285}
22286// End of protos/perfetto/trace/ps/process_stats.proto
22287
22288// Begin of protos/perfetto/trace/ps/process_tree.proto
22289
22290/// Metadata about the processes and threads in the trace.
22291/// Note: this proto was designed to be filled in by traced_probes and should
22292/// only be populated with accurate information coming from the system. Other
22293/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
22294/// in TrackDescriptor.
22295#[derive(Clone, PartialEq, ::prost::Message)]
22296pub struct ProcessTree {
22297    /// List of processes and threads in the client. These lists are incremental
22298    /// and not exhaustive. A process and its threads might show up separately in
22299    /// different ProcessTree messages. A thread might event not show up at all, if
22300    /// no sched_switch activity was detected, for instance:
22301    /// #0 { processes: [{pid: 10, ...}], threads: [{pid: 11, tgid: 10}] }
22302    /// #1 { threads: [{pid: 12, tgid: 10}] }
22303    /// #2 { processes: [{pid: 20, ...}], threads: [{pid: 13, tgid: 10}] }
22304    #[prost(message, repeated, tag="1")]
22305    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
22306    #[prost(message, repeated, tag="2")]
22307    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
22308    /// The time at which we finish collecting this process tree;
22309    /// the top-level packet timestamp is the time at which
22310    /// we begin collection.
22311    #[prost(uint64, optional, tag="3")]
22312    pub collection_end_timestamp: ::core::option::Option<u64>,
22313}
22314/// Nested message and enum types in `ProcessTree`.
22315pub mod process_tree {
22316    /// Representation of a thread.
22317    #[derive(Clone, PartialEq, ::prost::Message)]
22318    pub struct Thread {
22319        /// The thread ID (as per gettid()) in the root PID namespace.
22320        #[prost(int32, optional, tag="1")]
22321        pub tid: ::core::option::Option<i32>,
22322        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
22323        #[prost(int32, optional, tag="3")]
22324        pub tgid: ::core::option::Option<i32>,
22325        /// The name of the thread.
22326        #[prost(string, optional, tag="2")]
22327        pub name: ::core::option::Option<::prost::alloc::string::String>,
22328        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
22329        /// from the NSpid entry of /proc/<tid>/status, with the first element (root-
22330        /// level thread ID) omitted.
22331        #[prost(int32, repeated, packed="false", tag="4")]
22332        pub nstid: ::prost::alloc::vec::Vec<i32>,
22333    }
22334    /// Representation of a process.
22335    #[derive(Clone, PartialEq, ::prost::Message)]
22336    pub struct Process {
22337        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
22338        /// PID namespace.
22339        #[prost(int32, optional, tag="1")]
22340        pub pid: ::core::option::Option<i32>,
22341        /// The parent process ID, as per getppid().
22342        #[prost(int32, optional, tag="2")]
22343        pub ppid: ::core::option::Option<i32>,
22344        /// The command line for the process, as per /proc/pid/cmdline, broken up on
22345        /// NUL bytes.
22346        /// If it is a kernel thread or a zombie, there will only be one cmdline
22347        /// field and it will contain /proc/pid/comm.
22348        #[prost(string, repeated, tag="3")]
22349        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22350        /// If true, the |cmdline| field was filled with the main thread's "comm"
22351        /// field instead.
22352        /// Introduced in: perfetto v50.
22353        #[prost(bool, optional, tag="9")]
22354        pub cmdline_is_comm: ::core::option::Option<bool>,
22355        /// The uid for the process, as per /proc/pid/status.
22356        #[prost(int32, optional, tag="5")]
22357        pub uid: ::core::option::Option<i32>,
22358        /// The non-root-level process IDs if the process runs in a PID namespace.
22359        /// Read from the NSpid entry of /proc/<pid>/status, with the first element
22360        /// (root-level process ID) omitted.
22361        #[prost(int32, repeated, packed="false", tag="6")]
22362        pub nspid: ::prost::alloc::vec::Vec<i32>,
22363        /// Timestamp of when the process was created, in nanoseconds
22364        /// from boot. Parsed from starttime in /proc/pid/stat.
22365        /// Recorded if record_process_age config option is set.
22366        /// Resolution of "clock ticks", usually 10ms.
22367        #[prost(uint64, optional, tag="7")]
22368        pub process_start_from_boot: ::core::option::Option<u64>,
22369        /// If true, the process is a kernel thread.
22370        /// Set only on linux v6.4+. For traces from older devices, it is possible to
22371        /// infer most kthreads by checking that they're a descendant of kthreadd
22372        /// (pid=2), or are the idle process (pid=0).
22373        /// Introduced in: perfetto v50.
22374        #[prost(bool, optional, tag="8")]
22375        pub is_kthread: ::core::option::Option<bool>,
22376    }
22377}
22378// End of protos/perfetto/trace/ps/process_tree.proto
22379
22380// Begin of protos/perfetto/trace/remote_clock_sync.proto
22381
22382/// Records the parameters for aligning clock readings between machines.
22383#[derive(Clone, PartialEq, ::prost::Message)]
22384pub struct RemoteClockSync {
22385    #[prost(message, repeated, tag="1")]
22386    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
22387}
22388/// Nested message and enum types in `RemoteClockSync`.
22389pub mod remote_clock_sync {
22390    /// Synchronized clock snapshots taken on both sides of the relay port (the
22391    /// tracing service and the relay service). A round of clock synchronization
22392    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
22393    /// snapshot -> client snapshot -> host snapshot.
22394    #[derive(Clone, PartialEq, ::prost::Message)]
22395    pub struct SyncedClocks {
22396        #[prost(message, optional, tag="2")]
22397        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
22398        #[prost(message, optional, tag="3")]
22399        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
22400    }
22401}
22402// End of protos/perfetto/trace/remote_clock_sync.proto
22403
22404// Begin of protos/perfetto/trace/statsd/statsd_atom.proto
22405
22406/// Deliberate empty message. See comment on StatsdAtom#atom below.
22407#[derive(Clone, PartialEq, ::prost::Message)]
22408pub struct Atom {
22409}
22410/// One or more statsd atoms. This must continue to match:
22411/// perfetto/protos/third_party/statsd/shell_data.proto
22412/// So that we can efficiently add data from statsd directly to the
22413/// trace.
22414#[derive(Clone, PartialEq, ::prost::Message)]
22415pub struct StatsdAtom {
22416    /// Atom should be filled with an Atom proto from:
22417    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
22418    /// We don't reference Atom directly here since we don't want to import
22419    /// Atom.proto and all its transitive dependencies into Perfetto.
22420    /// atom and timestamp_nanos have the same cardinality
22421    #[prost(message, repeated, tag="1")]
22422    pub atom: ::prost::alloc::vec::Vec<Atom>,
22423    #[prost(int64, repeated, packed="false", tag="2")]
22424    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
22425}
22426// End of protos/perfetto/trace/statsd/statsd_atom.proto
22427
22428// Begin of protos/perfetto/trace/sys_stats/sys_stats.proto
22429
22430/// Various Linux system stat counters from /proc.
22431/// The fields in this message can be reported at different rates and with
22432/// different granularity. See sys_stats_config.proto.
22433#[derive(Clone, PartialEq, ::prost::Message)]
22434pub struct SysStats {
22435    #[prost(message, repeated, tag="1")]
22436    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
22437    #[prost(message, repeated, tag="2")]
22438    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
22439    /// One entry per cpu.
22440    #[prost(message, repeated, tag="3")]
22441    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
22442    /// Num processes forked since boot.
22443    /// Populated only if FORK_COUNT in config.stat_counters.
22444    #[prost(uint64, optional, tag="4")]
22445    pub num_forks: ::core::option::Option<u64>,
22446    // Number of interrupts, broken by IRQ number.
22447    // Populated only if IRQ_COUNTS in config.stat_counters.
22448
22449    /// Total num of irqs serviced since boot.
22450    #[prost(uint64, optional, tag="5")]
22451    pub num_irq_total: ::core::option::Option<u64>,
22452    #[prost(message, repeated, tag="6")]
22453    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
22454    // Number of softirqs, broken by softirq number.
22455    // Populated only if SOFTIRQ_COUNTS in config.stat_counters.
22456
22457    /// Total num of softirqs since boot.
22458    #[prost(uint64, optional, tag="7")]
22459    pub num_softirq_total: ::core::option::Option<u64>,
22460    /// Per-softirq count.
22461    #[prost(message, repeated, tag="8")]
22462    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
22463    /// The time at which we finish collecting this set of samples;
22464    /// the top-level packet timestamp is the time at which
22465    /// we begin collection.
22466    #[prost(uint64, optional, tag="9")]
22467    pub collection_end_timestamp: ::core::option::Option<u64>,
22468    /// One entry per device.
22469    #[prost(message, repeated, tag="10")]
22470    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
22471    /// Cpu current frequency from
22472    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
22473    /// One entry per cpu. Report 0 for offline cpu
22474    #[prost(uint32, repeated, packed="false", tag="11")]
22475    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
22476    /// One entry per each node's zones.
22477    #[prost(message, repeated, tag="12")]
22478    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
22479    /// One entry per disk device.
22480    #[prost(message, repeated, tag="13")]
22481    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
22482    /// One entry per PsiResource type.
22483    #[prost(message, repeated, tag="14")]
22484    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
22485    #[prost(message, repeated, tag="15")]
22486    pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
22487    #[prost(message, repeated, tag="16")]
22488    pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
22489    /// Read GPU frequency info on Intel/AMD devices.
22490    #[prost(uint64, repeated, packed="false", tag="17")]
22491    pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
22492}
22493/// Nested message and enum types in `SysStats`.
22494pub mod sys_stats {
22495    /// Counters from /proc/meminfo. Values are in KB.
22496    #[derive(Clone, PartialEq, ::prost::Message)]
22497    pub struct MeminfoValue {
22498        #[prost(enumeration="super::MeminfoCounters", optional, tag="1")]
22499        pub key: ::core::option::Option<i32>,
22500        #[prost(uint64, optional, tag="2")]
22501        pub value: ::core::option::Option<u64>,
22502    }
22503    /// Counter from /proc/vmstat. Units are often pages, not KB.
22504    #[derive(Clone, PartialEq, ::prost::Message)]
22505    pub struct VmstatValue {
22506        #[prost(enumeration="super::VmstatCounters", optional, tag="1")]
22507        pub key: ::core::option::Option<i32>,
22508        #[prost(uint64, optional, tag="2")]
22509        pub value: ::core::option::Option<u64>,
22510    }
22511    /// Times in each mode, since boot. Unit: nanoseconds.
22512    #[derive(Clone, PartialEq, ::prost::Message)]
22513    pub struct CpuTimes {
22514        #[prost(uint32, optional, tag="1")]
22515        pub cpu_id: ::core::option::Option<u32>,
22516        /// Time spent in user mode.
22517        #[prost(uint64, optional, tag="2")]
22518        pub user_ns: ::core::option::Option<u64>,
22519        /// Time spent in user mode (low prio).
22520        #[prost(uint64, optional, tag="3")]
22521        pub user_nice_ns: ::core::option::Option<u64>,
22522        /// Time spent in system mode.
22523        #[prost(uint64, optional, tag="4")]
22524        pub system_mode_ns: ::core::option::Option<u64>,
22525        /// Time spent in the idle task.
22526        #[prost(uint64, optional, tag="5")]
22527        pub idle_ns: ::core::option::Option<u64>,
22528        /// Time spent waiting for I/O.
22529        #[prost(uint64, optional, tag="6")]
22530        pub io_wait_ns: ::core::option::Option<u64>,
22531        /// Time spent servicing interrupts.
22532        #[prost(uint64, optional, tag="7")]
22533        pub irq_ns: ::core::option::Option<u64>,
22534        /// Time spent servicing softirqs.
22535        #[prost(uint64, optional, tag="8")]
22536        pub softirq_ns: ::core::option::Option<u64>,
22537        /// Time spent executing something else on host than this guest.
22538        #[prost(uint64, optional, tag="9")]
22539        pub steal_ns: ::core::option::Option<u64>,
22540    }
22541    #[derive(Clone, PartialEq, ::prost::Message)]
22542    pub struct InterruptCount {
22543        #[prost(int32, optional, tag="1")]
22544        pub irq: ::core::option::Option<i32>,
22545        #[prost(uint64, optional, tag="2")]
22546        pub count: ::core::option::Option<u64>,
22547    }
22548    /// Frequencies for /sys/class/devfreq/ entries in kHz.
22549    #[derive(Clone, PartialEq, ::prost::Message)]
22550    pub struct DevfreqValue {
22551        #[prost(string, optional, tag="1")]
22552        pub key: ::core::option::Option<::prost::alloc::string::String>,
22553        #[prost(uint64, optional, tag="2")]
22554        pub value: ::core::option::Option<u64>,
22555    }
22556    #[derive(Clone, PartialEq, ::prost::Message)]
22557    pub struct BuddyInfo {
22558        #[prost(string, optional, tag="1")]
22559        pub node: ::core::option::Option<::prost::alloc::string::String>,
22560        #[prost(string, optional, tag="2")]
22561        pub zone: ::core::option::Option<::prost::alloc::string::String>,
22562        #[prost(uint32, repeated, packed="false", tag="3")]
22563        pub order_pages: ::prost::alloc::vec::Vec<u32>,
22564    }
22565    /// Counters from /proc/diskstats.
22566    #[derive(Clone, PartialEq, ::prost::Message)]
22567    pub struct DiskStat {
22568        #[prost(string, optional, tag="1")]
22569        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
22570        #[prost(uint64, optional, tag="2")]
22571        pub read_sectors: ::core::option::Option<u64>,
22572        #[prost(uint64, optional, tag="3")]
22573        pub read_time_ms: ::core::option::Option<u64>,
22574        #[prost(uint64, optional, tag="4")]
22575        pub write_sectors: ::core::option::Option<u64>,
22576        #[prost(uint64, optional, tag="5")]
22577        pub write_time_ms: ::core::option::Option<u64>,
22578        #[prost(uint64, optional, tag="6")]
22579        pub discard_sectors: ::core::option::Option<u64>,
22580        #[prost(uint64, optional, tag="7")]
22581        pub discard_time_ms: ::core::option::Option<u64>,
22582        #[prost(uint64, optional, tag="8")]
22583        pub flush_count: ::core::option::Option<u64>,
22584        #[prost(uint64, optional, tag="9")]
22585        pub flush_time_ms: ::core::option::Option<u64>,
22586    }
22587    /// Reading from /proc/pressure/*.
22588    #[derive(Clone, PartialEq, ::prost::Message)]
22589    pub struct PsiSample {
22590        #[prost(enumeration="psi_sample::PsiResource", optional, tag="1")]
22591        pub resource: ::core::option::Option<i32>,
22592        /// Total absolute stall time (in nanos) for a given resource.
22593        /// While PSI readings are in micros, we store in nanos for consistency with
22594        /// most other time-based counters.
22595        #[prost(uint64, optional, tag="2")]
22596        pub total_ns: ::core::option::Option<u64>,
22597    }
22598    /// Nested message and enum types in `PsiSample`.
22599    pub mod psi_sample {
22600        /// Type of resource that may have exhibited pressure stalls.
22601        ///     * _SOME indicates some resource tasks stalled.
22602        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
22603        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22604        #[repr(i32)]
22605        pub enum PsiResource {
22606            Unspecified = 0,
22607            CpuSome = 1,
22608            CpuFull = 2,
22609            IoSome = 3,
22610            IoFull = 4,
22611            MemorySome = 5,
22612            MemoryFull = 6,
22613        }
22614        impl PsiResource {
22615            /// String value of the enum field names used in the ProtoBuf definition.
22616            ///
22617            /// The values are not transformed in any way and thus are considered stable
22618            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22619            pub fn as_str_name(&self) -> &'static str {
22620                match self {
22621                    PsiResource::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
22622                    PsiResource::CpuSome => "PSI_RESOURCE_CPU_SOME",
22623                    PsiResource::CpuFull => "PSI_RESOURCE_CPU_FULL",
22624                    PsiResource::IoSome => "PSI_RESOURCE_IO_SOME",
22625                    PsiResource::IoFull => "PSI_RESOURCE_IO_FULL",
22626                    PsiResource::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
22627                    PsiResource::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
22628                }
22629            }
22630        }
22631    }
22632    /// Reading from /sys/class/thermal/*.
22633    #[derive(Clone, PartialEq, ::prost::Message)]
22634    pub struct ThermalZone {
22635        #[prost(string, optional, tag="1")]
22636        pub name: ::core::option::Option<::prost::alloc::string::String>,
22637        #[prost(uint64, optional, tag="2")]
22638        pub temp: ::core::option::Option<u64>,
22639        #[prost(string, optional, tag="3")]
22640        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
22641    }
22642    /// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
22643    #[derive(Clone, PartialEq, ::prost::Message)]
22644    pub struct CpuIdleStateEntry {
22645        /// Name of the idle state, e.g. C1-C10
22646        #[prost(string, optional, tag="1")]
22647        pub state: ::core::option::Option<::prost::alloc::string::String>,
22648        #[prost(uint64, optional, tag="2")]
22649        pub duration_us: ::core::option::Option<u64>,
22650    }
22651    #[derive(Clone, PartialEq, ::prost::Message)]
22652    pub struct CpuIdleState {
22653        #[prost(uint32, optional, tag="1")]
22654        pub cpu_id: ::core::option::Option<u32>,
22655        #[prost(message, repeated, tag="2")]
22656        pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
22657    }
22658}
22659// End of protos/perfetto/trace/sys_stats/sys_stats.proto
22660
22661// Begin of protos/perfetto/trace/system_info/cpu_info.proto
22662
22663/// Information about CPUs from procfs and sysfs.
22664#[derive(Clone, PartialEq, ::prost::Message)]
22665pub struct CpuInfo {
22666    /// Describes available CPUs, one entry per CPU.
22667    #[prost(message, repeated, tag="1")]
22668    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
22669}
22670/// Nested message and enum types in `CpuInfo`.
22671pub mod cpu_info {
22672    #[derive(Clone, PartialEq, ::prost::Message)]
22673    pub struct ArmCpuIdentifier {
22674        /// Implementer code
22675        #[prost(uint32, optional, tag="1")]
22676        pub implementer: ::core::option::Option<u32>,
22677        /// Architecture code
22678        #[prost(uint32, optional, tag="2")]
22679        pub architecture: ::core::option::Option<u32>,
22680        /// CPU variant
22681        #[prost(uint32, optional, tag="3")]
22682        pub variant: ::core::option::Option<u32>,
22683        /// CPU part
22684        #[prost(uint32, optional, tag="4")]
22685        pub part: ::core::option::Option<u32>,
22686        /// CPU revision
22687        #[prost(uint32, optional, tag="5")]
22688        pub revision: ::core::option::Option<u32>,
22689    }
22690    /// Information about a single CPU.
22691    #[derive(Clone, PartialEq, ::prost::Message)]
22692    pub struct Cpu {
22693        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
22694        /// Example: "AArch64 Processor rev 12 (aarch64)"
22695        #[prost(string, optional, tag="1")]
22696        pub processor: ::core::option::Option<::prost::alloc::string::String>,
22697        /// Frequencies from
22698        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
22699        /// where X is the index of this CPU.
22700        #[prost(uint32, repeated, packed="false", tag="2")]
22701        pub frequencies: ::prost::alloc::vec::Vec<u32>,
22702        /// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
22703        /// the index of this CPU.
22704        #[prost(uint32, optional, tag="3")]
22705        pub capacity: ::core::option::Option<u32>,
22706        /// Features is a bitmap containing a bit set for each feature defined in
22707        /// kCpuInfoFlags (cpu_info_flags_allowlist.h) for the corresponding array
22708        /// index.
22709        #[prost(uint64, optional, tag="5")]
22710        pub features: ::core::option::Option<u64>,
22711        /// Code to identify the CPU
22712        #[prost(oneof="cpu::Identifier", tags="4")]
22713        pub identifier: ::core::option::Option<cpu::Identifier>,
22714    }
22715    /// Nested message and enum types in `Cpu`.
22716    pub mod cpu {
22717        /// Code to identify the CPU
22718        #[derive(Clone, PartialEq, ::prost::Oneof)]
22719        pub enum Identifier {
22720            #[prost(message, tag="4")]
22721            ArmIdentifier(super::ArmCpuIdentifier),
22722        }
22723    }
22724}
22725// End of protos/perfetto/trace/system_info/cpu_info.proto
22726
22727// Begin of protos/perfetto/trace/test_event.proto
22728
22729/// Event used by testing code.
22730#[derive(Clone, PartialEq, ::prost::Message)]
22731pub struct TestEvent {
22732    /// Arbitrary string used in tests.
22733    #[prost(string, optional, tag="1")]
22734    pub str: ::core::option::Option<::prost::alloc::string::String>,
22735    /// The current value of the random number sequence used in tests.
22736    #[prost(uint32, optional, tag="2")]
22737    pub seq_value: ::core::option::Option<u32>,
22738    /// Monotonically increased on each packet.
22739    #[prost(uint64, optional, tag="3")]
22740    pub counter: ::core::option::Option<u64>,
22741    /// No more packets should follow (from the current sequence).
22742    #[prost(bool, optional, tag="4")]
22743    pub is_last: ::core::option::Option<bool>,
22744    #[prost(message, optional, tag="5")]
22745    pub payload: ::core::option::Option<test_event::TestPayload>,
22746}
22747/// Nested message and enum types in `TestEvent`.
22748pub mod test_event {
22749    #[derive(Clone, PartialEq, ::prost::Message)]
22750    pub struct TestPayload {
22751        #[prost(string, repeated, tag="1")]
22752        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22753        #[prost(message, repeated, tag="2")]
22754        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
22755        #[prost(string, optional, tag="4")]
22756        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
22757        #[prost(int32, optional, tag="5")]
22758        pub single_int: ::core::option::Option<i32>,
22759        #[prost(int32, repeated, packed="false", tag="6")]
22760        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
22761        /// When 0 this is the bottom-most nested message.
22762        #[prost(uint32, optional, tag="3")]
22763        pub remaining_nesting_depth: ::core::option::Option<u32>,
22764        #[prost(message, repeated, tag="7")]
22765        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
22766    }
22767}
22768// End of protos/perfetto/trace/test_event.proto
22769
22770// Begin of protos/perfetto/trace/trace_packet_defaults.proto
22771
22772/// Default values for TracePacket fields that hold for a particular TraceWriter
22773/// packet sequence. This message contains a subset of the TracePacket fields
22774/// with matching IDs. When provided, these fields define the default values
22775/// that should be applied, at import time, to all TracePacket(s) with the same
22776/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
22777///
22778/// Should be reemitted whenever incremental state is cleared on the sequence.
22779#[derive(Clone, PartialEq, ::prost::Message)]
22780pub struct TracePacketDefaults {
22781    #[prost(uint32, optional, tag="58")]
22782    pub timestamp_clock_id: ::core::option::Option<u32>,
22783    /// Default values for TrackEvents (e.g. default track).
22784    #[prost(message, optional, tag="11")]
22785    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
22786    /// Defaults for perf profiler packets (PerfSample).
22787    #[prost(message, optional, tag="12")]
22788    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
22789    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
22790    /// V8RegexpCode)
22791    #[prost(message, optional, tag="99")]
22792    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
22793}
22794// Begin of protos/perfetto/trace/trace_uuid.proto
22795
22796/// A random unique ID that identifies the trace.
22797/// This message has been introduced in v32. Prior to that, the UUID was
22798/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
22799/// This has been moved to a standalone packet to deal with new use-cases for
22800/// go/gapless-aot, where the same tracing session can be serialized several
22801/// times, in which case the UUID is changed on each snapshot and does not match
22802/// the one in the TraceConfig.
22803#[derive(Clone, PartialEq, ::prost::Message)]
22804pub struct TraceUuid {
22805    #[prost(int64, optional, tag="1")]
22806    pub msb: ::core::option::Option<i64>,
22807    #[prost(int64, optional, tag="2")]
22808    pub lsb: ::core::option::Option<i64>,
22809}
22810// End of protos/perfetto/trace/trace_uuid.proto
22811
22812// Begin of protos/perfetto/trace/track_event/process_descriptor.proto
22813
22814/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
22815/// usually by the process's main thread.
22816///
22817/// Next id: 9.
22818#[derive(Clone, PartialEq, ::prost::Message)]
22819pub struct ProcessDescriptor {
22820    #[prost(int32, optional, tag="1")]
22821    pub pid: ::core::option::Option<i32>,
22822    #[prost(string, repeated, tag="2")]
22823    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22824    #[prost(string, optional, tag="6")]
22825    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
22826    #[prost(int32, optional, tag="5")]
22827    pub process_priority: ::core::option::Option<i32>,
22828    /// Process start time in nanoseconds.
22829    /// The timestamp refers to the trace clock by default. Other clock IDs
22830    /// provided in TracePacket are not supported.
22831    #[prost(int64, optional, tag="7")]
22832    pub start_timestamp_ns: ::core::option::Option<i64>,
22833    #[prost(enumeration="process_descriptor::ChromeProcessType", optional, tag="4")]
22834    pub chrome_process_type: ::core::option::Option<i32>,
22835    /// To support old UI. New UI should determine default sorting by process_type.
22836    #[prost(int32, optional, tag="3")]
22837    pub legacy_sort_index: ::core::option::Option<i32>,
22838    /// Labels can be used to further describe properties of the work performed by
22839    /// the process. For example, these can be used by Chrome renderer process to
22840    /// provide titles of frames being rendered.
22841    #[prost(string, repeated, tag="8")]
22842    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22843}
22844/// Nested message and enum types in `ProcessDescriptor`.
22845pub mod process_descriptor {
22846    // ---------------------------------------------------------------------------
22847    // Deprecated / legacy fields, which will be removed in the future:
22848    // ---------------------------------------------------------------------------
22849
22850    /// See chromium's content::ProcessType.
22851    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22852    #[repr(i32)]
22853    pub enum ChromeProcessType {
22854        ProcessUnspecified = 0,
22855        ProcessBrowser = 1,
22856        ProcessRenderer = 2,
22857        ProcessUtility = 3,
22858        ProcessZygote = 4,
22859        ProcessSandboxHelper = 5,
22860        ProcessGpu = 6,
22861        ProcessPpapiPlugin = 7,
22862        ProcessPpapiBroker = 8,
22863    }
22864    impl ChromeProcessType {
22865        /// String value of the enum field names used in the ProtoBuf definition.
22866        ///
22867        /// The values are not transformed in any way and thus are considered stable
22868        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22869        pub fn as_str_name(&self) -> &'static str {
22870            match self {
22871                ChromeProcessType::ProcessUnspecified => "PROCESS_UNSPECIFIED",
22872                ChromeProcessType::ProcessBrowser => "PROCESS_BROWSER",
22873                ChromeProcessType::ProcessRenderer => "PROCESS_RENDERER",
22874                ChromeProcessType::ProcessUtility => "PROCESS_UTILITY",
22875                ChromeProcessType::ProcessZygote => "PROCESS_ZYGOTE",
22876                ChromeProcessType::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
22877                ChromeProcessType::ProcessGpu => "PROCESS_GPU",
22878                ChromeProcessType::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
22879                ChromeProcessType::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
22880            }
22881        }
22882    }
22883}
22884// End of protos/perfetto/trace/track_event/process_descriptor.proto
22885
22886// Begin of protos/perfetto/trace/track_event/range_of_interest.proto
22887
22888/// This message specifies the "range of interest" for track events. With the
22889/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
22890/// Trace Processor drops track events outside of this range.
22891#[derive(Clone, PartialEq, ::prost::Message)]
22892pub struct TrackEventRangeOfInterest {
22893    #[prost(int64, optional, tag="1")]
22894    pub start_us: ::core::option::Option<i64>,
22895}
22896// Begin of protos/perfetto/trace/track_event/thread_descriptor.proto
22897
22898/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
22899/// usually by the thread's trace writer.
22900///
22901/// Next id: 9.
22902#[derive(Clone, PartialEq, ::prost::Message)]
22903pub struct ThreadDescriptor {
22904    #[prost(int32, optional, tag="1")]
22905    pub pid: ::core::option::Option<i32>,
22906    #[prost(int32, optional, tag="2")]
22907    pub tid: ::core::option::Option<i32>,
22908    #[prost(string, optional, tag="5")]
22909    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
22910    #[prost(enumeration="thread_descriptor::ChromeThreadType", optional, tag="4")]
22911    pub chrome_thread_type: ::core::option::Option<i32>,
22912    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
22913    /// and timestamp_clock_id fields instead.
22914    #[prost(int64, optional, tag="6")]
22915    pub reference_timestamp_us: ::core::option::Option<i64>,
22916    /// Absolute reference values. Clock values in subsequent TrackEvents can be
22917    /// encoded accumulatively and relative to these. This reduces their var-int
22918    /// encoding size.
22919    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
22920    #[prost(int64, optional, tag="7")]
22921    pub reference_thread_time_us: ::core::option::Option<i64>,
22922    #[prost(int64, optional, tag="8")]
22923    pub reference_thread_instruction_count: ::core::option::Option<i64>,
22924    /// To support old UI. New UI should determine default sorting by thread_type.
22925    #[prost(int32, optional, tag="3")]
22926    pub legacy_sort_index: ::core::option::Option<i32>,
22927}
22928/// Nested message and enum types in `ThreadDescriptor`.
22929pub mod thread_descriptor {
22930    // ---------------------------------------------------------------------------
22931    // Deprecated / legacy fields, which will be removed in the future:
22932    // ---------------------------------------------------------------------------
22933
22934    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22935    #[repr(i32)]
22936    pub enum ChromeThreadType {
22937        ChromeThreadUnspecified = 0,
22938        ChromeThreadMain = 1,
22939        ChromeThreadIo = 2,
22940        /// Scheduler:
22941        ChromeThreadPoolBgWorker = 3,
22942        ChromeThreadPoolFgWorker = 4,
22943        ChromeThreadPoolFbBlocking = 5,
22944        ChromeThreadPoolBgBlocking = 6,
22945        ChromeThreadPoolService = 7,
22946        /// Compositor:
22947        ChromeThreadCompositor = 8,
22948        ChromeThreadVizCompositor = 9,
22949        ChromeThreadCompositorWorker = 10,
22950        /// Renderer:
22951        ChromeThreadServiceWorker = 11,
22952        /// Tracing related threads:
22953        ChromeThreadMemoryInfra = 50,
22954        ChromeThreadSamplingProfiler = 51,
22955    }
22956    impl ChromeThreadType {
22957        /// String value of the enum field names used in the ProtoBuf definition.
22958        ///
22959        /// The values are not transformed in any way and thus are considered stable
22960        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22961        pub fn as_str_name(&self) -> &'static str {
22962            match self {
22963                ChromeThreadType::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
22964                ChromeThreadType::ChromeThreadMain => "CHROME_THREAD_MAIN",
22965                ChromeThreadType::ChromeThreadIo => "CHROME_THREAD_IO",
22966                ChromeThreadType::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
22967                ChromeThreadType::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
22968                ChromeThreadType::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
22969                ChromeThreadType::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
22970                ChromeThreadType::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
22971                ChromeThreadType::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
22972                ChromeThreadType::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
22973                ChromeThreadType::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
22974                ChromeThreadType::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
22975                ChromeThreadType::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
22976                ChromeThreadType::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
22977            }
22978        }
22979    }
22980}
22981// End of protos/perfetto/trace/track_event/thread_descriptor.proto
22982
22983// Begin of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
22984
22985/// Describes the attributes for a Chrome process. Must be paired with a
22986/// ProcessDescriptor in the same TrackDescriptor.
22987///
22988/// Next id: 6.
22989#[derive(Clone, PartialEq, ::prost::Message)]
22990pub struct ChromeProcessDescriptor {
22991    /// This is a chrome_enums::ProcessType from
22992    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
22993    /// be imported here because of a dependency loop.
22994    #[prost(int32, optional, tag="1")]
22995    pub process_type: ::core::option::Option<i32>,
22996    #[prost(int32, optional, tag="2")]
22997    pub process_priority: ::core::option::Option<i32>,
22998    /// To support old UI. New UI should determine default sorting by process_type.
22999    #[prost(int32, optional, tag="3")]
23000    pub legacy_sort_index: ::core::option::Option<i32>,
23001    /// Name of the hosting app for WebView. Used to match renderer processes to
23002    /// their hosting apps.
23003    #[prost(string, optional, tag="4")]
23004    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
23005    /// The ID to link crashes to trace.
23006    /// Notes:
23007    /// * The ID is per process. So, each trace may contain many IDs, and you need
23008    ///    to look for the ID from crashed process to find the crash report.
23009    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
23010    ///    get an uploaded trace, since uploads could have failed.
23011    /// * On the other hand, if there was a crash during the session and trace was
23012    ///    uploaded, it is very likely to find a crash report with the trace ID.
23013    /// * This is not crash ID or trace ID. It is just a random 64-bit number
23014    ///    recorded in both traces and crashes. It is possible to have collisions,
23015    ///    though very rare.
23016    #[prost(uint64, optional, tag="5")]
23017    pub crash_trace_id: ::core::option::Option<u64>,
23018}
23019// End of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
23020
23021// Begin of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
23022
23023/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
23024/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
23025/// in the same TrackDescriptor.
23026///
23027/// Next id: 3.
23028#[derive(Clone, PartialEq, ::prost::Message)]
23029pub struct ChromeThreadDescriptor {
23030    /// This is a chrome_enums::ThreadType from
23031    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
23032    /// be imported here because of a dependency loop.
23033    #[prost(int32, optional, tag="1")]
23034    pub thread_type: ::core::option::Option<i32>,
23035    /// To support old UI. New UI should determine default sorting by thread_type.
23036    #[prost(int32, optional, tag="2")]
23037    pub legacy_sort_index: ::core::option::Option<i32>,
23038    /// Indicates whether the thread's tid specified in the thread descriptor is
23039    /// namespaced by Chromium's sandbox. Only set on Linux, and from Chrome M140.
23040    #[prost(bool, optional, tag="3")]
23041    pub is_sandboxed_tid: ::core::option::Option<bool>,
23042}
23043// End of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
23044
23045// Begin of protos/perfetto/trace/track_event/counter_descriptor.proto
23046
23047/// Defines properties of a counter track, e.g. for built-in counters (thread
23048/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
23049/// a specific app component).
23050///
23051/// Counter tracks only support TYPE_COUNTER track events, which specify new
23052/// values for the counter. For counters that require per-slice values, counter
23053/// values can instead be provided in a more efficient encoding via TrackEvent's
23054/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
23055/// slice-type events cannot be emitted onto a counter track.
23056///
23057/// Values for counters that are only emitted on a single packet sequence can
23058/// optionally be delta-encoded, see |is_incremental|.
23059///
23060/// Next id: 7.
23061#[derive(Clone, PartialEq, ::prost::Message)]
23062pub struct CounterDescriptor {
23063    /// For built-in counters (e.g. thread time). Custom user-specified counters
23064    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
23065    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
23066    #[prost(enumeration="counter_descriptor::BuiltinCounterType", optional, tag="1")]
23067    pub r#type: ::core::option::Option<i32>,
23068    /// Names of categories of the counter (usually for user-specified counters).
23069    /// In the client library, categories are a way to turn groups of individual
23070    /// counters (or events) on or off.
23071    #[prost(string, repeated, tag="2")]
23072    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23073    /// Type of the counter's values. Built-in counters imply a value for this
23074    /// field.
23075    #[prost(enumeration="counter_descriptor::Unit", optional, tag="3")]
23076    pub unit: ::core::option::Option<i32>,
23077    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
23078    /// name can be used instead.
23079    #[prost(string, optional, tag="6")]
23080    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
23081    /// Multiplication factor of this counter's values, e.g. to supply
23082    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
23083    #[prost(int64, optional, tag="4")]
23084    pub unit_multiplier: ::core::option::Option<i64>,
23085    /// Whether values for this counter are provided as delta values. Only
23086    /// supported for counters that are emitted on a single packet-sequence (e.g.
23087    /// thread time). Counter values in subsequent packets on the current packet
23088    /// sequence will be interpreted as delta values from the sequence's most
23089    /// recent value for the counter. When incremental state is cleared, the
23090    /// counter value is considered to be reset to 0. Thus, the first value after
23091    /// incremental state is cleared is effectively an absolute value.
23092    #[prost(bool, optional, tag="5")]
23093    pub is_incremental: ::core::option::Option<bool>,
23094    // TODO(eseckler): Support arguments describing the counter (?).
23095    // repeated DebugAnnotation debug_annotations;
23096
23097    /// When visualizing multiple counter tracks, it is often useful to have them
23098    /// share the same Y-axis range. This allows for easy comparison of their
23099    /// values.
23100    ///
23101    /// All counter tracks with the same |y_axis_share_key| and the same parent
23102    /// track (e.g. grouped under the same process track) will share their y-axis
23103    /// range in the UI.
23104    #[prost(string, optional, tag="7")]
23105    pub y_axis_share_key: ::core::option::Option<::prost::alloc::string::String>,
23106}
23107/// Nested message and enum types in `CounterDescriptor`.
23108pub mod counter_descriptor {
23109    /// Built-in counters, usually with special meaning in the client library,
23110    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
23111    /// track name from the enum value if none is provided in TrackDescriptor.
23112    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23113    #[repr(i32)]
23114    pub enum BuiltinCounterType {
23115        CounterUnspecified = 0,
23116        // Thread-scoped counters. The thread's track should be specified via
23117        // |parent_uuid| in the TrackDescriptor for such a counter.
23118
23119        /// implies UNIT_TIME_NS.
23120        CounterThreadTimeNs = 1,
23121        /// implies UNIT_COUNT.
23122        CounterThreadInstructionCount = 2,
23123    }
23124    impl BuiltinCounterType {
23125        /// String value of the enum field names used in the ProtoBuf definition.
23126        ///
23127        /// The values are not transformed in any way and thus are considered stable
23128        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23129        pub fn as_str_name(&self) -> &'static str {
23130            match self {
23131                BuiltinCounterType::CounterUnspecified => "COUNTER_UNSPECIFIED",
23132                BuiltinCounterType::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
23133                BuiltinCounterType::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
23134            }
23135        }
23136    }
23137    /// Type of the values for the counters - to supply lower granularity units,
23138    /// see also |unit_multiplier|.
23139    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23140    #[repr(i32)]
23141    pub enum Unit {
23142        Unspecified = 0,
23143        TimeNs = 1,
23144        Count = 2,
23145        /// TODO(eseckler): Support more units as necessary.
23146        SizeBytes = 3,
23147    }
23148    impl Unit {
23149        /// String value of the enum field names used in the ProtoBuf definition.
23150        ///
23151        /// The values are not transformed in any way and thus are considered stable
23152        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23153        pub fn as_str_name(&self) -> &'static str {
23154            match self {
23155                Unit::Unspecified => "UNIT_UNSPECIFIED",
23156                Unit::TimeNs => "UNIT_TIME_NS",
23157                Unit::Count => "UNIT_COUNT",
23158                Unit::SizeBytes => "UNIT_SIZE_BYTES",
23159            }
23160        }
23161    }
23162}
23163// End of protos/perfetto/trace/track_event/counter_descriptor.proto
23164
23165// Begin of protos/perfetto/trace/track_event/track_descriptor.proto
23166
23167/// Defines a track for TrackEvents. Slices and instant events on the same track
23168/// will be nested based on their timestamps, see TrackEvent::Type.
23169///
23170/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
23171/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
23172/// when the ring buffer wraps, it should be reemitted whenever incremental state
23173/// is cleared.
23174///
23175/// As a fallback, TrackEvents emitted without an explicit track association will
23176/// be associated with an implicit trace-global track (uuid = 0), see also
23177/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
23178/// TrackDescriptor for this implicit track.
23179///
23180/// Next id: 18.
23181#[derive(Clone, PartialEq, ::prost::Message)]
23182pub struct TrackDescriptor {
23183    /// Unique ID that identifies this track. This ID is global to the whole trace.
23184    /// Producers should ensure that it is unlikely to clash with IDs emitted by
23185    /// other producers. A value of 0 denotes the implicit trace-global track.
23186    ///
23187    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
23188    /// event id + id_scope, pid, and/or tid to compute this ID.
23189    #[prost(uint64, optional, tag="1")]
23190    pub uuid: ::core::option::Option<u64>,
23191    /// A parent track reference can be used to describe relationships between
23192    /// tracks. For example, to define an asynchronous track which is scoped to a
23193    /// specific process, specify the uuid for that process's process track here.
23194    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
23195    /// thread, specify the uuid for that thread's thread track here. In general,
23196    /// setting a parent will *nest* that track under the parent in the UI and in
23197    /// the trace processor data model (with the important exception noted below).
23198    ///
23199    /// If not specified, the track will be a root track, i.e. not nested under any
23200    /// other track.
23201    ///
23202    /// Note: if the `thread` or `process` fields are set, this value will be
23203    /// *ignored* as priority is given to those fields.
23204    ///
23205    /// Note: if the parent is set to a track with `thread` or `process` fields
23206    /// set, the track will *not* be nested under the parent in the UI and in the
23207    /// trace processor data model. Instead, the track will inherit the parent's
23208    /// thread/process association and will appear as a *sibling* of the parent.
23209    /// This semantic exists for back-compat reasons as the UI used to work this
23210    /// way for years and changing this leads to a lot of traces subtly breaking.
23211    /// If you want to force nesting, create *another* intermediate track to act as
23212    /// the parent.
23213    #[prost(uint64, optional, tag="5")]
23214    pub parent_uuid: ::core::option::Option<u64>,
23215    /// A human-readable description of the track providing more context about its
23216    /// data. In the UI, this is shown in a popup when the track's help button is
23217    /// clicked.
23218    #[prost(string, optional, tag="14")]
23219    pub description: ::core::option::Option<::prost::alloc::string::String>,
23220    /// Associate the track with a process, making it the process-global track.
23221    /// There should only be one such track per process (usually for instant
23222    /// events; trace processor uses this fact to detect pid reuse). If you need
23223    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
23224    ///
23225    /// Trace processor will merge events on a process track with slice-type events
23226    /// from other sources (e.g. ftrace) for the same process into a single
23227    /// timeline view.
23228    #[prost(message, optional, tag="3")]
23229    pub process: ::core::option::Option<ProcessDescriptor>,
23230    #[prost(message, optional, tag="6")]
23231    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
23232    /// Associate the track with a thread, indicating that the track's events
23233    /// describe synchronous code execution on the thread. There should only be one
23234    /// such track per thread (trace processor uses this fact to detect tid reuse).
23235    ///
23236    /// Trace processor will merge events on a thread track with slice-type events
23237    /// from other sources (e.g. ftrace) for the same thread into a single timeline
23238    /// view.
23239    #[prost(message, optional, tag="4")]
23240    pub thread: ::core::option::Option<ThreadDescriptor>,
23241    #[prost(message, optional, tag="7")]
23242    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
23243    /// Descriptor for a counter track. If set, the track will only support
23244    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
23245    /// |extra_counter_values|).
23246    #[prost(message, optional, tag="8")]
23247    pub counter: ::core::option::Option<CounterDescriptor>,
23248    /// If true, forces Trace Processor to use separate tracks for track events
23249    /// and system events for the same thread.
23250    ///
23251    /// Track events timestamps in Chrome have microsecond resolution, while
23252    /// system events use nanoseconds. It results in broken event nesting when
23253    /// track events and system events share a track.
23254    #[prost(bool, optional, tag="9")]
23255    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
23256    #[prost(enumeration="track_descriptor::ChildTracksOrdering", optional, tag="11")]
23257    pub child_ordering: ::core::option::Option<i32>,
23258    /// An opaque value which allows specifying how two sibling tracks should be
23259    /// ordered relative to each other: tracks with lower ranks will appear before
23260    /// tracks with higher ranks. An unspecified rank will be treated as a rank of
23261    /// 0.
23262    ///
23263    /// Note: this option is only relevant for tracks where the parent has
23264    /// `child_ordering` set to `EXPLICIT`. It is ignored otherwise.
23265    ///
23266    /// Note: for tracks where the parent has `thread` or `process` are set, this
23267    /// option is *ignored* (even if the parent's `child_ordering` is `EXPLICIT``).
23268    /// See `parent_uuid` for details.
23269    #[prost(int32, optional, tag="12")]
23270    pub sibling_order_rank: ::core::option::Option<i32>,
23271    #[prost(enumeration="track_descriptor::SiblingMergeBehavior", optional, tag="15")]
23272    pub sibling_merge_behavior: ::core::option::Option<i32>,
23273    /// Name of the track.
23274    ///
23275    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
23276    /// emitted before any `TrackEvent`s on the same track.
23277    ///
23278    /// Note: any name specified here will be *ignored* for the root thread scoped
23279    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
23280    /// case, the name of the track is shared by many different data sources and so
23281    /// is centrally controlled by trace processor.
23282    ///
23283    /// It's strongly recommended to only emit the name for a track uuid *once*. If
23284    /// a descriptor *has* to be emitted multiple times (e.g. between different
23285    /// processes), it's recommended to ensure that the name is consistent across
23286    /// all TrackDescriptors with the same `uuid`.
23287    ///
23288    /// If the the above recommendation is not followed and the same uuid is
23289    /// emitted with different names, it is implementation defined how the final
23290    /// name will be chosen and may change at any time.
23291    ///
23292    /// The current implementation of trace processor chooses the name in the
23293    /// following way, depending on the value of the `sibling_merge_behavior`
23294    /// field:
23295    ///
23296    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
23297    ///    * The *last* non-null name in the whole trace according to trace order
23298    ///      will be used.
23299    ///    * If no non-null name is present in the whole trace, the trace processor
23300    ///      may fall back to other sources to provide a name for the track (e.g.
23301    ///      the first event name for slice tracks, the counter name for counter
23302    ///      tracks). This is implementation defined and may change at any time.
23303    ///
23304    /// 2. If `sibling_merge_behavior` is set to any other value:
23305    ///    * The first non-null name before the first event on the track *or on any
23306    ///      descendant tracks* is processed will be used. For example, consider
23307    ///      the following sequence of events:
23308    ///        ts=100: TrackDescriptor(uuid=A)
23309    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
23310    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
23311    ///        ts=400: TrackEvent(track_uuid=B)
23312    ///      In this case, the name for track A will be "Track A" because the
23313    ///      descriptor with the name was emitted before the first event on a
23314    ///      descendant track (B).
23315    ///    * If no non-null name is present before the event is processed, the trace
23316    ///      processor may fall back to other sources to provide a name for the
23317    ///      track (e.g. the first event name for slice tracks, the counter name for
23318    ///      counter tracks). This is implementation defined and may change at any
23319    ///      time.
23320    ///    * Note on processing order: In the standard trace processor pipeline,
23321    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
23322    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
23323    ///      track, all its descriptors in the trace are processed before its
23324    ///      events. Consequently, the "first non-null name before the first event"
23325    ///      will be the name from the first `TrackDescriptor` for that track in the
23326    ///      trace file that has a non-null name. However, in a streaming parsing
23327    ///      scenario, the timestamp order of descriptors and events is significant,
23328    ///      and a descriptor arriving after an event has been processed will not be
23329    ///      used to name the track.
23330    #[prost(oneof="track_descriptor::StaticOrDynamicName", tags="2, 10, 13")]
23331    pub static_or_dynamic_name: ::core::option::Option<track_descriptor::StaticOrDynamicName>,
23332    /// An opaque value which allows specifying which tracks should be merged
23333    /// together.
23334    ///
23335    /// Only meaningful when `sibling_merge_behavior` is set to
23336    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
23337    #[prost(oneof="track_descriptor::SiblingMergeKeyField", tags="16, 17")]
23338    pub sibling_merge_key_field: ::core::option::Option<track_descriptor::SiblingMergeKeyField>,
23339}
23340/// Nested message and enum types in `TrackDescriptor`.
23341pub mod track_descriptor {
23342    /// Specifies how the UI should display child tracks of this track (i.e. tracks
23343    /// where `parent_uuid` is specified to this track `uuid`). Note that this
23344    /// value is simply a *hint* to the UI: the UI is not guarnateed to respect
23345    /// this if it has a good reason not to do so.
23346    ///
23347    /// Note: for tracks where `thread` or `process` are set, this option is
23348    /// *ignored*. See `parent_uuid` for details.
23349    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23350    #[repr(i32)]
23351    pub enum ChildTracksOrdering {
23352        /// The default ordering, with no bearing on how the UI will visualise the
23353        /// tracks.
23354        Unknown = 0,
23355        /// Order tracks by `name` or `static_name` depending on which one has been
23356        /// specified.
23357        Lexicographic = 1,
23358        /// Order tracks by the first `ts` event in a track.
23359        Chronological = 2,
23360        /// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
23361        /// the lower values will be shown before tracks with higher values. Tracks
23362        /// with no value will be treated as having 0 rank.
23363        Explicit = 3,
23364    }
23365    impl ChildTracksOrdering {
23366        /// String value of the enum field names used in the ProtoBuf definition.
23367        ///
23368        /// The values are not transformed in any way and thus are considered stable
23369        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23370        pub fn as_str_name(&self) -> &'static str {
23371            match self {
23372                ChildTracksOrdering::Unknown => "UNKNOWN",
23373                ChildTracksOrdering::Lexicographic => "LEXICOGRAPHIC",
23374                ChildTracksOrdering::Chronological => "CHRONOLOGICAL",
23375                ChildTracksOrdering::Explicit => "EXPLICIT",
23376            }
23377        }
23378    }
23379    /// Specifies how the analysis tools should "merge" different sibling
23380    /// TrackEvent tracks.
23381    ///
23382    /// For two or more tracks to be merged, they must be "eligible" siblings.
23383    /// Eligibility is determined by the following rules:
23384    /// 1. All tracks must have the same parent.
23385    /// 2. All tracks must have the same `sibling_merge_behavior`. The only
23386    ///     exception is `SIBLING_MERGE_BEHAVIOR_UNSPECIFIED` which is treated as
23387    ///     `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
23388    /// 3. Depending on the behavior, the corresponding key must match (e.g. `name`
23389    ///     for `BY_TRACK_NAME`, `sibling_merge_key` for `BY_SIBLING_MERGE_KEY`).
23390    ///
23391    /// Specifically:
23392    ///    - in the UI, all tracks which are merged together will be
23393    ///      displayed as a single "visual" track.
23394    ///    - in the trace processor, all tracks which are merged together will be
23395    ///      "multiplexed" into n "analysis" tracks where n is the maximum number
23396    ///      of tracks which have an active event at the same time.
23397    ///
23398    /// When tracks are merged togther, the properties for the merged track will be
23399    /// chosen from the source tracks based on the following rules:
23400    ///    - for `sibling_order_rank`: the rank of the merged track will be the
23401    ///      smallest rank among the source tracks.
23402    ///    - for all other properties: the property taken is unspecified and can
23403    ///      be any value provided by one of the source tracks. This can lead to
23404    ///      non-deterministic behavior.
23405    ///       - examples of other properties include `name`, `child_ordering` etc.
23406    ///       - because of this, it's strongly recommended to ensure that all source
23407    ///         tracks have the same value for these properties.
23408    ///       - the trace processor will also emit an error stat if it detects
23409    ///         that the properties are not the same across all source tracks.
23410    ///
23411    /// Note: merging is done *recursively* so entire trees of tracks can be merged
23412    /// together. To make this clearer, consider an example track hierarchy (in
23413    /// the diagrams: "smk" refers to "sibling_merge_key", the first word on a
23414    /// track line, like "Updater", is its 'name' property):
23415    ///
23416    ///    Initial track hierarchy:
23417    ///      SystemActivity
23418    ///      ├── AuthService (smk: "auth_main_cluster")
23419    ///      │   └── LoginOp (smk: "login_v1")
23420    ///      ├── AuthService (smk: "auth_main_cluster")
23421    ///      │   └── LoginOp (smk: "login_v1")
23422    ///      ├── AuthService (smk: "auth_backup_cluster")
23423    ///      │   └── GuestOp (smk: "guest_v1")
23424    ///      └── UserProfileService (smk: "profile_cluster")
23425    ///          └── GetProfileOp (smk: "getprofile_v1")
23426    ///
23427    /// Merging outcomes:
23428    ///
23429    /// Scenario 1: Merging by `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`
23430    ///    - The first two "AuthService" tracks merge because they share
23431    ///      `smk: "auth_main_cluster"`. Their names are consistent ("AuthService"),
23432    ///      aligning with recommendations. The merged track is named "AuthService".
23433    ///    - The third "AuthService" track (with `smk: "auth_backup_cluster"`)
23434    ///      remains separate, as its `sibling_merge_key` is different.
23435    ///    - "UserProfileService" also remains separate.
23436    ///    - Within the merged "AuthService" (from "auth_main_cluster"):
23437    ///      "LoginOp" get merged as they have the same sibling merge key.
23438    ///
23439    ///    Resulting UI (when merging by SIBLING_MERGE_KEY):
23440    ///      SystemActivity
23441    ///      ├── AuthService (merged by smk: "auth_main_cluster")
23442    ///      │   ├── LoginOp (merged by smk: "login_v1")
23443    ///      ├── AuthService (smk: "auth_backup_cluster")
23444    ///      │   └── GuestOp (smk: "guest_v1")
23445    ///      └── UserProfileService (smk: "profile_cluster")
23446    ///          └── GetProfileOp (smk: "getprofile_v1")
23447    ///
23448    /// Scenario 2: Merging by `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`
23449    ///    - All three tracks named "AuthService" merge because they share the same
23450    ///      name. The merged track is named "AuthService". The `sibling_merge_key`
23451    ///      for this merged track would be taken from one of the source tracks
23452    ///      (e.g., "auth_main_cluster" or "auth_backup_cluster"), which could be
23453    ///      relevant if its children had key-based merge behaviors.
23454    ///    - "UserProfileService" remains separate due to its different name.
23455    ///    - Within the single merged "AuthService" track:
23456    ///      "LoginOp", "GuestOp" become siblings. "LoginOp" tracks gets merged as
23457    ///      they have the same name.
23458    ///
23459    ///    Resulting UI (when merging by SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME):
23460    ///      SystemActivity
23461    ///      ├── AuthService (merged from 3 "AuthService" tracks)
23462    ///      │   ├── LoginOp (smk: "login_v1")
23463    ///      │   └── GuestOp (smk: "guest_v1")
23464    ///      └── UserProfileService (smk: "profile_cluster")
23465    ///          └── GetProfileOp (smk: "getprofile_v1")
23466    ///
23467    /// Note: for tracks where `thread` or `process` are set, this option is
23468    /// *ignored*. See `parent_uuid` for details.
23469    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23470    #[repr(i32)]
23471    pub enum SiblingMergeBehavior {
23472        /// When unspecified or not set, defaults to
23473        /// `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
23474        Unspecified = 0,
23475        /// Merge this track with eligible siblings which have the same `name`.
23476        ///
23477        /// This is the default behavior.option.
23478        ///
23479        /// Fun fact: this is the default beahavior for legacy reasons as the UI has
23480        /// worked this way for years and inherited this behavior from
23481        /// chrome://tracing which has worked this way for even longer
23482        ByTrackName = 1,
23483        /// Never merge this track with any siblings. Useful if if this track has a
23484        /// specific meaning and you want to see separately from any others.
23485        None = 2,
23486        /// Merge this track with eligible siblings which have the same
23487        /// `sibling_merge_key`.
23488        BySiblingMergeKey = 3,
23489    }
23490    impl SiblingMergeBehavior {
23491        /// String value of the enum field names used in the ProtoBuf definition.
23492        ///
23493        /// The values are not transformed in any way and thus are considered stable
23494        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23495        pub fn as_str_name(&self) -> &'static str {
23496            match self {
23497                SiblingMergeBehavior::Unspecified => "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED",
23498                SiblingMergeBehavior::ByTrackName => "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME",
23499                SiblingMergeBehavior::None => "SIBLING_MERGE_BEHAVIOR_NONE",
23500                SiblingMergeBehavior::BySiblingMergeKey => "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY",
23501            }
23502        }
23503    }
23504    /// Name of the track.
23505    ///
23506    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
23507    /// emitted before any `TrackEvent`s on the same track.
23508    ///
23509    /// Note: any name specified here will be *ignored* for the root thread scoped
23510    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
23511    /// case, the name of the track is shared by many different data sources and so
23512    /// is centrally controlled by trace processor.
23513    ///
23514    /// It's strongly recommended to only emit the name for a track uuid *once*. If
23515    /// a descriptor *has* to be emitted multiple times (e.g. between different
23516    /// processes), it's recommended to ensure that the name is consistent across
23517    /// all TrackDescriptors with the same `uuid`.
23518    ///
23519    /// If the the above recommendation is not followed and the same uuid is
23520    /// emitted with different names, it is implementation defined how the final
23521    /// name will be chosen and may change at any time.
23522    ///
23523    /// The current implementation of trace processor chooses the name in the
23524    /// following way, depending on the value of the `sibling_merge_behavior`
23525    /// field:
23526    ///
23527    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
23528    ///    * The *last* non-null name in the whole trace according to trace order
23529    ///      will be used.
23530    ///    * If no non-null name is present in the whole trace, the trace processor
23531    ///      may fall back to other sources to provide a name for the track (e.g.
23532    ///      the first event name for slice tracks, the counter name for counter
23533    ///      tracks). This is implementation defined and may change at any time.
23534    ///
23535    /// 2. If `sibling_merge_behavior` is set to any other value:
23536    ///    * The first non-null name before the first event on the track *or on any
23537    ///      descendant tracks* is processed will be used. For example, consider
23538    ///      the following sequence of events:
23539    ///        ts=100: TrackDescriptor(uuid=A)
23540    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
23541    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
23542    ///        ts=400: TrackEvent(track_uuid=B)
23543    ///      In this case, the name for track A will be "Track A" because the
23544    ///      descriptor with the name was emitted before the first event on a
23545    ///      descendant track (B).
23546    ///    * If no non-null name is present before the event is processed, the trace
23547    ///      processor may fall back to other sources to provide a name for the
23548    ///      track (e.g. the first event name for slice tracks, the counter name for
23549    ///      counter tracks). This is implementation defined and may change at any
23550    ///      time.
23551    ///    * Note on processing order: In the standard trace processor pipeline,
23552    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
23553    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
23554    ///      track, all its descriptors in the trace are processed before its
23555    ///      events. Consequently, the "first non-null name before the first event"
23556    ///      will be the name from the first `TrackDescriptor` for that track in the
23557    ///      trace file that has a non-null name. However, in a streaming parsing
23558    ///      scenario, the timestamp order of descriptors and events is significant,
23559    ///      and a descriptor arriving after an event has been processed will not be
23560    ///      used to name the track.
23561    #[derive(Clone, PartialEq, ::prost::Oneof)]
23562    pub enum StaticOrDynamicName {
23563        #[prost(string, tag="2")]
23564        Name(::prost::alloc::string::String),
23565        /// This field is only set by the SDK when perfetto::StaticString is
23566        /// provided.
23567        #[prost(string, tag="10")]
23568        StaticName(::prost::alloc::string::String),
23569        /// Equivalent to name, used just to mark that the data is coming from
23570        /// android.os.Trace.
23571        #[prost(string, tag="13")]
23572        AtraceName(::prost::alloc::string::String),
23573    }
23574    /// An opaque value which allows specifying which tracks should be merged
23575    /// together.
23576    ///
23577    /// Only meaningful when `sibling_merge_behavior` is set to
23578    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
23579    #[derive(Clone, PartialEq, ::prost::Oneof)]
23580    pub enum SiblingMergeKeyField {
23581        #[prost(string, tag="16")]
23582        SiblingMergeKey(::prost::alloc::string::String),
23583        #[prost(uint64, tag="17")]
23584        SiblingMergeKeyInt(u64),
23585    }
23586}
23587// End of protos/perfetto/trace/track_event/track_descriptor.proto
23588
23589// Begin of protos/perfetto/trace/translation/translation_table.proto
23590
23591/// Translation rules for the trace processor.
23592/// See the comments for each rule type for specific meaning.
23593#[derive(Clone, PartialEq, ::prost::Message)]
23594pub struct TranslationTable {
23595    #[prost(oneof="translation_table::Table", tags="1, 2, 3, 4, 5, 6")]
23596    pub table: ::core::option::Option<translation_table::Table>,
23597}
23598/// Nested message and enum types in `TranslationTable`.
23599pub mod translation_table {
23600    #[derive(Clone, PartialEq, ::prost::Oneof)]
23601    pub enum Table {
23602        #[prost(message, tag="1")]
23603        ChromeHistogram(super::ChromeHistorgramTranslationTable),
23604        #[prost(message, tag="2")]
23605        ChromeUserEvent(super::ChromeUserEventTranslationTable),
23606        #[prost(message, tag="3")]
23607        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
23608        #[prost(message, tag="4")]
23609        SliceName(super::SliceNameTranslationTable),
23610        #[prost(message, tag="5")]
23611        ProcessTrackName(super::ProcessTrackNameTranslationTable),
23612        #[prost(message, tag="6")]
23613        ChromeStudy(super::ChromeStudyTranslationTable),
23614    }
23615}
23616/// Chrome histogram sample hash -> name translation rules.
23617#[derive(Clone, PartialEq, ::prost::Message)]
23618pub struct ChromeHistorgramTranslationTable {
23619    #[prost(map="uint64, string", tag="1")]
23620    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
23621}
23622/// Chrome user event action hash -> name translation rules.
23623#[derive(Clone, PartialEq, ::prost::Message)]
23624pub struct ChromeUserEventTranslationTable {
23625    #[prost(map="uint64, string", tag="1")]
23626    pub action_hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
23627}
23628/// Chrome performance mark translation rules.
23629#[derive(Clone, PartialEq, ::prost::Message)]
23630pub struct ChromePerformanceMarkTranslationTable {
23631    #[prost(map="uint32, string", tag="1")]
23632    pub site_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
23633    #[prost(map="uint32, string", tag="2")]
23634    pub mark_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
23635}
23636/// Raw -> deobfuscated slice name translation rules.
23637#[derive(Clone, PartialEq, ::prost::Message)]
23638pub struct SliceNameTranslationTable {
23639    #[prost(map="string, string", tag="1")]
23640    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
23641}
23642/// Raw -> deobfuscated process track name translation rules.
23643#[derive(Clone, PartialEq, ::prost::Message)]
23644pub struct ProcessTrackNameTranslationTable {
23645    #[prost(map="string, string", tag="1")]
23646    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
23647}
23648/// Chrome study hash -> name translation rules.
23649#[derive(Clone, PartialEq, ::prost::Message)]
23650pub struct ChromeStudyTranslationTable {
23651    #[prost(map="uint64, string", tag="1")]
23652    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
23653}
23654// End of protos/perfetto/trace/translation/translation_table.proto
23655
23656// Begin of protos/perfetto/trace/trigger.proto
23657
23658/// When a TracingSession receives a trigger it records the boot time nanoseconds
23659/// in the TracePacket's timestamp field as well as the name of the producer that
23660/// triggered it. We emit this data so filtering can be done on triggers received
23661/// in the trace.
23662#[derive(Clone, PartialEq, ::prost::Message)]
23663pub struct Trigger {
23664    /// Name of the trigger which was received.
23665    #[prost(string, optional, tag="1")]
23666    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
23667    /// The actual producer that activated |trigger|.
23668    #[prost(string, optional, tag="2")]
23669    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
23670    /// The verified UID of the producer.
23671    #[prost(int32, optional, tag="3")]
23672    pub trusted_producer_uid: ::core::option::Option<i32>,
23673    /// The value of stop_delay_ms from the configuration.
23674    #[prost(uint64, optional, tag="4")]
23675    pub stop_delay_ms: ::core::option::Option<u64>,
23676}
23677// End of protos/perfetto/trace/trigger.proto
23678
23679// Begin of protos/perfetto/trace/ui_state.proto
23680
23681/// Common state for UIs visualizing Perfetto traces.
23682/// This message can be appended as a TracePacket by UIs to save the
23683/// visible state (e.g. scroll position/zoom state) for future opening
23684/// of the trace.
23685/// Design doc: go/trace-ui-state.
23686#[derive(Clone, PartialEq, ::prost::Message)]
23687pub struct UiState {
23688    /// The start and end bounds of the viewport of the UI in nanoseconds.
23689    ///
23690    /// This is the absolute time associated to slices and other events in
23691    /// trace processor tables (i.e. the |ts| column of most tables)
23692    #[prost(int64, optional, tag="1")]
23693    pub timeline_start_ts: ::core::option::Option<i64>,
23694    #[prost(int64, optional, tag="2")]
23695    pub timeline_end_ts: ::core::option::Option<i64>,
23696    #[prost(message, optional, tag="3")]
23697    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
23698}
23699/// Nested message and enum types in `UiState`.
23700pub mod ui_state {
23701    /// Indicates that the given process should be highlighted by the UI.
23702    #[derive(Clone, PartialEq, ::prost::Message)]
23703    pub struct HighlightProcess {
23704        #[prost(oneof="highlight_process::Selector", tags="1, 2")]
23705        pub selector: ::core::option::Option<highlight_process::Selector>,
23706    }
23707    /// Nested message and enum types in `HighlightProcess`.
23708    pub mod highlight_process {
23709        #[derive(Clone, PartialEq, ::prost::Oneof)]
23710        pub enum Selector {
23711            /// The pid of the process to highlight. This is useful for UIs to focus
23712            /// on tracks of a particular process in the trace.
23713            ///
23714            /// If more than one process in a trace has the same pid, it is UI
23715            /// implementation specific how the process to be focused will be
23716            /// chosen.
23717            #[prost(uint32, tag="1")]
23718            Pid(u32),
23719            /// The command line of the process to highlight; for most Android apps,
23720            /// this is the package name of the app. This is useful for UIs to focus
23721            /// on a particular app in the trace.
23722            ///
23723            /// If more than one process hasthe same cmdline, it is UI implementation
23724            /// specific how the process to be focused will be chosen.
23725            #[prost(string, tag="2")]
23726            Cmdline(::prost::alloc::string::String),
23727        }
23728    }
23729}
23730// Begin of protos/perfetto/trace/trace_packet.proto
23731
23732/// TracePacket is the root object of a Perfetto trace.
23733/// A Perfetto trace is a linear sequence of TracePacket(s).
23734///
23735/// The tracing service guarantees that all TracePacket(s) written by a given
23736/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
23737/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
23738/// to the Consumer (or written into the trace file).
23739/// TracePacket(s) written by different TraceWriter(s), hence even different
23740/// data sources, can be seen in arbitrary order.
23741/// The consumer can re-establish a total order, if interested, using the packet
23742/// timestamps, after having synchronized the different clocks onto a global
23743/// clock.
23744///
23745/// The tracing service is agnostic of the content of TracePacket, with the
23746/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
23747/// the service itself.
23748///
23749/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
23750///
23751/// Next reserved id: 14 (up to 15).
23752/// Next id: 124.
23753#[derive(Clone, PartialEq, ::prost::Message)]
23754pub struct TracePacket {
23755    /// The timestamp of the TracePacket.
23756    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
23757    /// Android). It can be overridden using a different timestamp_clock_id.
23758    /// The clock domain definition in ClockSnapshot can also override:
23759    /// - The unit (default: 1ns).
23760    /// - The absolute vs delta encoding (default: absolute timestamp).
23761    #[prost(uint64, optional, tag="8")]
23762    pub timestamp: ::core::option::Option<u64>,
23763    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
23764    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
23765    /// producer-defined clock id.
23766    /// If unspecified and if no default per-sequence value has been provided via
23767    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
23768    #[prost(uint32, optional, tag="58")]
23769    pub timestamp_clock_id: ::core::option::Option<u32>,
23770    /// Trusted process id of the producer which generated this packet, written by
23771    /// the service.
23772    #[prost(int32, optional, tag="79")]
23773    pub trusted_pid: ::core::option::Option<i32>,
23774    /// Incrementally emitted interned data, valid only on the packet's sequence
23775    /// (packets with the same |trusted_packet_sequence_id|). The writer will
23776    /// usually emit new interned data in the same TracePacket that first refers to
23777    /// it (since the last reset of interning state). It may also be emitted
23778    /// proactively in advance of referring to them in later packets.
23779    #[prost(message, optional, tag="12")]
23780    pub interned_data: ::core::option::Option<InternedData>,
23781    #[prost(uint32, optional, tag="13")]
23782    pub sequence_flags: ::core::option::Option<u32>,
23783    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
23784    #[prost(bool, optional, tag="41")]
23785    pub incremental_state_cleared: ::core::option::Option<bool>,
23786    /// Default values for fields of later TracePackets emitted on this packet's
23787    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
23788    /// It must be reemitted when incremental state is cleared (see
23789    /// |incremental_state_cleared|).
23790    /// Requires that any future packet emitted on the same sequence specifies
23791    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
23792    /// TracePacketDefaults always override the global defaults for any future
23793    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
23794    #[prost(message, optional, tag="59")]
23795    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
23796    /// Flag set by the service if, for the current packet sequence (see
23797    /// |trusted_packet_sequence_id|), either:
23798    /// * this is the first packet, or
23799    /// * one or multiple packets were dropped since the last packet that the
23800    ///    consumer read from the sequence. This can happen if chunks in the trace
23801    ///    buffer are overridden before the consumer could read them when the trace
23802    ///    is configured in ring buffer mode.
23803    ///
23804    /// When packet loss occurs, incrementally emitted data (including interned
23805    /// data) on the sequence should be considered invalid up until the next packet
23806    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
23807    #[prost(bool, optional, tag="42")]
23808    pub previous_packet_dropped: ::core::option::Option<bool>,
23809    /// Flag set by a producer (starting from SDK v29) if, for the current packet
23810    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
23811    ///
23812    /// This flag can be used for distinguishing the two situations when
23813    /// processing the trace:
23814    /// 1. There are no prior events for the sequence because of data loss, e.g.
23815    ///     due to ring buffer wrapping.
23816    /// 2. There are no prior events for the sequence because it didn't start
23817    ///     before this packet (= there's definitely no preceding data loss).
23818    ///
23819    /// Given that older SDK versions do not support this flag, this flag not
23820    /// being present for a particular sequence does not necessarily imply data
23821    /// loss.
23822    #[prost(bool, optional, tag="87")]
23823    pub first_packet_on_sequence: ::core::option::Option<bool>,
23824    /// The machine ID for identifying trace packets in a multi-machine tracing
23825    /// session. Is emitted by the tracing service for producers running on a
23826    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
23827    #[prost(uint32, optional, tag="98")]
23828    pub machine_id: ::core::option::Option<u32>,
23829    #[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")]
23830    pub data: ::core::option::Option<trace_packet::Data>,
23831    /// Trusted user id of the producer which generated this packet. Keep in sync
23832    /// with TrustedPacket.trusted_uid.
23833    ///
23834    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
23835    /// instead.
23836    #[prost(oneof="trace_packet::OptionalTrustedUid", tags="3")]
23837    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
23838    /// Service-assigned identifier of the packet sequence this packet belongs to.
23839    /// Uniquely identifies a producer + writer pair within the tracing session. A
23840    /// value of zero denotes an invalid ID. Keep in sync with
23841    /// TrustedPacket.trusted_packet_sequence_id.
23842    #[prost(oneof="trace_packet::OptionalTrustedPacketSequenceId", tags="10")]
23843    pub optional_trusted_packet_sequence_id: ::core::option::Option<trace_packet::OptionalTrustedPacketSequenceId>,
23844}
23845/// Nested message and enum types in `TracePacket`.
23846pub mod trace_packet {
23847    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23848    #[repr(i32)]
23849    pub enum SequenceFlags {
23850        SeqUnspecified = 0,
23851        /// Set by the writer to indicate that it will re-emit any incremental data
23852        /// for the packet's sequence before referring to it again. This includes
23853        /// interned data as well as periodically emitted data like
23854        /// Process/ThreadDescriptors. This flag only affects the current packet
23855        /// sequence (see |trusted_packet_sequence_id|).
23856        ///
23857        /// When set, this TracePacket and subsequent TracePackets on the same
23858        /// sequence will not refer to any incremental data emitted before this
23859        /// TracePacket. For example, previously emitted interned data will be
23860        /// re-emitted if it is referred to again.
23861        ///
23862        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
23863        /// to skip packets in the sequence until the next one with this flag set, to
23864        /// ensure intact incremental data.
23865        SeqIncrementalStateCleared = 1,
23866        /// This packet requires incremental state, such as TracePacketDefaults or
23867        /// InternedData, to be parsed correctly. The trace reader should skip this
23868        /// packet if incremental state is not valid on this sequence, i.e. if no
23869        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
23870        /// current |trusted_packet_sequence_id|.
23871        SeqNeedsIncrementalState = 2,
23872    }
23873    impl SequenceFlags {
23874        /// String value of the enum field names used in the ProtoBuf definition.
23875        ///
23876        /// The values are not transformed in any way and thus are considered stable
23877        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23878        pub fn as_str_name(&self) -> &'static str {
23879            match self {
23880                SequenceFlags::SeqUnspecified => "SEQ_UNSPECIFIED",
23881                SequenceFlags::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
23882                SequenceFlags::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
23883            }
23884        }
23885    }
23886    #[derive(Clone, PartialEq, ::prost::Oneof)]
23887    pub enum Data {
23888        #[prost(message, tag="2")]
23889        ProcessTree(super::ProcessTree),
23890        #[prost(message, tag="9")]
23891        ProcessStats(super::ProcessStats),
23892        #[prost(message, tag="4")]
23893        InodeFileMap(super::InodeFileMap),
23894        #[prost(message, tag="5")]
23895        ChromeEvents(super::ChromeEventBundle),
23896        #[prost(message, tag="6")]
23897        ClockSnapshot(super::ClockSnapshot),
23898        #[prost(message, tag="7")]
23899        SysStats(super::SysStats),
23900        #[prost(message, tag="11")]
23901        TrackEvent(super::TrackEvent),
23902        // IDs up to 15 are reserved. They take only one byte to encode their
23903        // preamble so should be used for frequent events.
23904
23905        #[prost(message, tag="89")]
23906        TraceUuid(super::TraceUuid),
23907        #[prost(message, tag="33")]
23908        TraceConfig(super::TraceConfig),
23909        #[prost(message, tag="34")]
23910        FtraceStats(super::FtraceStats),
23911        #[prost(message, tag="35")]
23912        TraceStats(super::TraceStats),
23913        #[prost(message, tag="37")]
23914        ProfilePacket(super::ProfilePacket),
23915        #[prost(message, tag="74")]
23916        StreamingAllocation(super::StreamingAllocation),
23917        #[prost(message, tag="75")]
23918        StreamingFree(super::StreamingFree),
23919        #[prost(message, tag="38")]
23920        Battery(super::BatteryCounters),
23921        #[prost(message, tag="40")]
23922        PowerRails(super::PowerRails),
23923        #[prost(message, tag="39")]
23924        AndroidLog(super::AndroidLogPacket),
23925        #[prost(message, tag="45")]
23926        SystemInfo(super::SystemInfo),
23927        #[prost(message, tag="46")]
23928        Trigger(super::Trigger),
23929        #[prost(message, tag="109")]
23930        ChromeTrigger(super::ChromeTrigger),
23931        #[prost(message, tag="47")]
23932        PackagesList(super::PackagesList),
23933        #[prost(message, tag="48")]
23934        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
23935        #[prost(message, tag="49")]
23936        PerfettoMetatrace(super::PerfettoMetatrace),
23937        #[prost(message, tag="51")]
23938        ChromeMetadata(super::ChromeMetadataPacket),
23939        #[prost(message, tag="52")]
23940        GpuCounterEvent(super::GpuCounterEvent),
23941        #[prost(message, tag="53")]
23942        GpuRenderStageEvent(super::GpuRenderStageEvent),
23943        #[prost(message, tag="54")]
23944        StreamingProfilePacket(super::StreamingProfilePacket),
23945        #[prost(message, tag="56")]
23946        HeapGraph(super::HeapGraph),
23947        #[prost(message, tag="57")]
23948        GraphicsFrameEvent(super::GraphicsFrameEvent),
23949        #[prost(message, tag="62")]
23950        VulkanMemoryEvent(super::VulkanMemoryEvent),
23951        #[prost(message, tag="63")]
23952        GpuLog(super::GpuLog),
23953        #[prost(message, tag="65")]
23954        VulkanApiEvent(super::VulkanApiEvent),
23955        #[prost(message, tag="66")]
23956        PerfSample(super::PerfSample),
23957        #[prost(message, tag="67")]
23958        CpuInfo(super::CpuInfo),
23959        #[prost(message, tag="68")]
23960        SmapsPacket(super::SmapsPacket),
23961        #[prost(message, tag="69")]
23962        ServiceEvent(super::TracingServiceEvent),
23963        #[prost(message, tag="70")]
23964        InitialDisplayState(super::InitialDisplayState),
23965        #[prost(message, tag="71")]
23966        GpuMemTotalEvent(super::GpuMemTotalEvent),
23967        #[prost(message, tag="73")]
23968        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
23969        #[prost(message, tag="76")]
23970        FrameTimelineEvent(super::FrameTimelineEvent),
23971        #[prost(message, tag="77")]
23972        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
23973        #[prost(message, tag="78")]
23974        UiState(super::UiState),
23975        #[prost(message, tag="80")]
23976        AndroidCameraFrameEvent(super::AndroidCameraFrameEvent),
23977        #[prost(message, tag="81")]
23978        AndroidCameraSessionStats(super::AndroidCameraSessionStats),
23979        #[prost(message, tag="82")]
23980        TranslationTable(super::TranslationTable),
23981        #[prost(message, tag="83")]
23982        AndroidGameInterventionList(super::AndroidGameInterventionList),
23983        #[prost(message, tag="84")]
23984        StatsdAtom(super::StatsdAtom),
23985        #[prost(message, tag="86")]
23986        AndroidSystemProperty(super::AndroidSystemProperty),
23987        #[prost(message, tag="91")]
23988        EntityStateResidency(super::EntityStateResidency),
23989        /// Only used in profile packets.
23990        #[prost(message, tag="61")]
23991        ModuleSymbols(super::ModuleSymbols),
23992        #[prost(message, tag="64")]
23993        DeobfuscationMapping(super::DeobfuscationMapping),
23994        /// Only used by TrackEvent.
23995        #[prost(message, tag="60")]
23996        TrackDescriptor(super::TrackDescriptor),
23997        /// Deprecated, use TrackDescriptor instead.
23998        #[prost(message, tag="43")]
23999        ProcessDescriptor(super::ProcessDescriptor),
24000        /// Deprecated, use TrackDescriptor instead.
24001        #[prost(message, tag="44")]
24002        ThreadDescriptor(super::ThreadDescriptor),
24003        /// Events from the Linux kernel ftrace infrastructure.
24004        #[prost(message, tag="1")]
24005        FtraceEvents(super::FtraceEventBundle),
24006        /// This field is emitted at periodic intervals (~10s) and
24007        /// contains always the binary representation of the UUID
24008        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
24009        /// efficiently partition long traces without having to fully parse them.
24010        #[prost(bytes, tag="36")]
24011        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
24012        /// Zero or more proto encoded trace packets compressed using deflate.
24013        /// Each compressed_packets TracePacket (including the two field ids and
24014        /// sizes) should be less than 512KB.
24015        #[prost(bytes, tag="50")]
24016        CompressedPackets(::prost::alloc::vec::Vec<u8>),
24017        /// Data sources can extend the trace proto with custom extension protos (see
24018        /// docs/design-docs/extensions.md). When they do that, the descriptor of
24019        /// their extension proto descriptor is serialized in this packet. This
24020        /// allows trace_processor to deserialize extended messages using reflection
24021        /// even if the extension proto is not checked in the Perfetto repo.
24022        #[prost(message, tag="72")]
24023        ExtensionDescriptor(super::ExtensionDescriptor),
24024        /// Represents a single packet sent or received by the network.
24025        #[prost(message, tag="88")]
24026        NetworkPacket(super::NetworkPacketEvent),
24027        /// Represents one or more packets sent or received by the network.
24028        #[prost(message, tag="92")]
24029        NetworkPacketBundle(super::NetworkPacketBundle),
24030        /// The "range of interest" for track events. See the message definition
24031        /// comments for more details.
24032        #[prost(message, tag="90")]
24033        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
24034        /// Winscope traces
24035        #[prost(message, tag="93")]
24036        SurfaceflingerLayersSnapshot(super::LayersSnapshotProto),
24037        #[prost(message, tag="94")]
24038        SurfaceflingerTransactions(super::TransactionTraceEntry),
24039        #[prost(message, tag="96")]
24040        ShellTransition(super::ShellTransition),
24041        #[prost(message, tag="97")]
24042        ShellHandlerMappings(super::ShellHandlerMappings),
24043        #[prost(message, tag="104")]
24044        ProtologMessage(super::ProtoLogMessage),
24045        #[prost(message, tag="105")]
24046        ProtologViewerConfig(super::ProtoLogViewerConfig),
24047        #[prost(message, tag="112")]
24048        WinscopeExtensions(super::WinscopeExtensions),
24049        /// Events from the Windows etw infrastructure.
24050        #[prost(message, tag="95")]
24051        EtwEvents(super::EtwTraceEventBundle),
24052        #[prost(message, tag="99")]
24053        V8JsCode(super::V8JsCode),
24054        #[prost(message, tag="100")]
24055        V8InternalCode(super::V8InternalCode),
24056        #[prost(message, tag="101")]
24057        V8WasmCode(super::V8WasmCode),
24058        #[prost(message, tag="102")]
24059        V8RegExpCode(super::V8RegExpCode),
24060        #[prost(message, tag="103")]
24061        V8CodeMove(super::V8CodeMove),
24062        /// Clock synchronization with remote machines.
24063        #[prost(message, tag="107")]
24064        RemoteClockSync(super::RemoteClockSync),
24065        #[prost(message, tag="110")]
24066        PixelModemEvents(super::PixelModemEvents),
24067        #[prost(message, tag="111")]
24068        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
24069        #[prost(message, tag="113")]
24070        CloneSnapshotTrigger(super::Trigger),
24071        #[prost(message, tag="114")]
24072        BluetoothTraceEvent(super::BluetoothTraceEvent),
24073        #[prost(message, tag="115")]
24074        KernelWakelockData(super::KernelWakelockData),
24075        #[prost(message, tag="116")]
24076        AppWakelockBundle(super::AppWakelockBundle),
24077        /// Generic events for a standard kernel implementation
24078        #[prost(message, tag="117")]
24079        GenericKernelTaskStateEvent(super::GenericKernelTaskStateEvent),
24080        #[prost(message, tag="118")]
24081        GenericKernelCpuFreqEvent(super::GenericKernelCpuFrequencyEvent),
24082        #[prost(message, tag="120")]
24083        GenericKernelTaskRenameEvent(super::GenericKernelTaskRenameEvent),
24084        #[prost(message, tag="122")]
24085        GenericKernelProcessTree(super::GenericKernelProcessTree),
24086        #[prost(message, tag="119")]
24087        CpuPerUidData(super::CpuPerUidData),
24088        #[prost(message, tag="121")]
24089        EvdevEvent(super::EvdevEvent),
24090        #[prost(message, tag="123")]
24091        UserList(super::AndroidUserList),
24092        /// This field is only used for testing.
24093        /// In previous versions of this proto this field had the id 268435455
24094        /// This caused many problems:
24095        /// - protozero decoder does not handle field ids larger than 999.
24096        /// - old versions of protoc produce Java bindings with syntax errors when
24097        ///    the field id is large enough.
24098        #[prost(message, tag="900")]
24099        ForTesting(super::TestEvent),
24100    }
24101    /// Trusted user id of the producer which generated this packet. Keep in sync
24102    /// with TrustedPacket.trusted_uid.
24103    ///
24104    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
24105    /// instead.
24106    #[derive(Clone, PartialEq, ::prost::Oneof)]
24107    pub enum OptionalTrustedUid {
24108        #[prost(int32, tag="3")]
24109        TrustedUid(i32),
24110    }
24111    /// Service-assigned identifier of the packet sequence this packet belongs to.
24112    /// Uniquely identifies a producer + writer pair within the tracing session. A
24113    /// value of zero denotes an invalid ID. Keep in sync with
24114    /// TrustedPacket.trusted_packet_sequence_id.
24115    #[derive(Clone, PartialEq, ::prost::Oneof)]
24116    pub enum OptionalTrustedPacketSequenceId {
24117        #[prost(uint32, tag="10")]
24118        TrustedPacketSequenceId(u32),
24119    }
24120}
24121// End of protos/perfetto/trace/trace_packet.proto
24122
24123// Begin of protos/perfetto/trace/trace.proto
24124
24125#[derive(Clone, PartialEq, ::prost::Message)]
24126pub struct Trace {
24127    #[prost(message, repeated, tag="1")]
24128    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
24129}
24130// End of protos/perfetto/common/tracing_service_state.proto
24131
24132// Begin of protos/perfetto/common/builtin_clock.proto
24133
24134#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24135#[repr(i32)]
24136pub enum BuiltinClock {
24137    Unknown = 0,
24138    Realtime = 1,
24139    RealtimeCoarse = 2,
24140    Monotonic = 3,
24141    MonotonicCoarse = 4,
24142    MonotonicRaw = 5,
24143    Boottime = 6,
24144    Tsc = 9,
24145    Perf = 10,
24146    MaxId = 63,
24147}
24148impl BuiltinClock {
24149    /// String value of the enum field names used in the ProtoBuf definition.
24150    ///
24151    /// The values are not transformed in any way and thus are considered stable
24152    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24153    pub fn as_str_name(&self) -> &'static str {
24154        match self {
24155            BuiltinClock::Unknown => "BUILTIN_CLOCK_UNKNOWN",
24156            BuiltinClock::Realtime => "BUILTIN_CLOCK_REALTIME",
24157            BuiltinClock::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
24158            BuiltinClock::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
24159            BuiltinClock::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
24160            BuiltinClock::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
24161            BuiltinClock::Boottime => "BUILTIN_CLOCK_BOOTTIME",
24162            BuiltinClock::Tsc => "BUILTIN_CLOCK_TSC",
24163            BuiltinClock::Perf => "BUILTIN_CLOCK_PERF",
24164            BuiltinClock::MaxId => "BUILTIN_CLOCK_MAX_ID",
24165        }
24166    }
24167}
24168// End of protos/perfetto/config/android/android_input_event_config.proto
24169
24170// Begin of protos/perfetto/common/android_log_constants.proto
24171
24172/// Values from NDK's android/log.h.
24173#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24174#[repr(i32)]
24175pub enum AndroidLogId {
24176    /// MAIN.
24177    LidDefault = 0,
24178    LidRadio = 1,
24179    LidEvents = 2,
24180    LidSystem = 3,
24181    LidCrash = 4,
24182    LidStats = 5,
24183    LidSecurity = 6,
24184    LidKernel = 7,
24185}
24186impl AndroidLogId {
24187    /// String value of the enum field names used in the ProtoBuf definition.
24188    ///
24189    /// The values are not transformed in any way and thus are considered stable
24190    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24191    pub fn as_str_name(&self) -> &'static str {
24192        match self {
24193            AndroidLogId::LidDefault => "LID_DEFAULT",
24194            AndroidLogId::LidRadio => "LID_RADIO",
24195            AndroidLogId::LidEvents => "LID_EVENTS",
24196            AndroidLogId::LidSystem => "LID_SYSTEM",
24197            AndroidLogId::LidCrash => "LID_CRASH",
24198            AndroidLogId::LidStats => "LID_STATS",
24199            AndroidLogId::LidSecurity => "LID_SECURITY",
24200            AndroidLogId::LidKernel => "LID_KERNEL",
24201        }
24202    }
24203}
24204#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24205#[repr(i32)]
24206pub enum AndroidLogPriority {
24207    PrioUnspecified = 0,
24208    /// _DEFAULT, but should never be seen in logs.
24209    PrioUnused = 1,
24210    PrioVerbose = 2,
24211    PrioDebug = 3,
24212    PrioInfo = 4,
24213    PrioWarn = 5,
24214    PrioError = 6,
24215    PrioFatal = 7,
24216}
24217impl AndroidLogPriority {
24218    /// String value of the enum field names used in the ProtoBuf definition.
24219    ///
24220    /// The values are not transformed in any way and thus are considered stable
24221    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24222    pub fn as_str_name(&self) -> &'static str {
24223        match self {
24224            AndroidLogPriority::PrioUnspecified => "PRIO_UNSPECIFIED",
24225            AndroidLogPriority::PrioUnused => "PRIO_UNUSED",
24226            AndroidLogPriority::PrioVerbose => "PRIO_VERBOSE",
24227            AndroidLogPriority::PrioDebug => "PRIO_DEBUG",
24228            AndroidLogPriority::PrioInfo => "PRIO_INFO",
24229            AndroidLogPriority::PrioWarn => "PRIO_WARN",
24230            AndroidLogPriority::PrioError => "PRIO_ERROR",
24231            AndroidLogPriority::PrioFatal => "PRIO_FATAL",
24232        }
24233    }
24234}
24235// End of protos/perfetto/config/android/pixel_modem_config.proto
24236
24237// Begin of protos/perfetto/common/protolog_common.proto
24238
24239#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24240#[repr(i32)]
24241pub enum ProtoLogLevel {
24242    ProtologLevelUndefined = 0,
24243    ProtologLevelDebug = 1,
24244    ProtologLevelVerbose = 2,
24245    ProtologLevelInfo = 3,
24246    ProtologLevelWarn = 4,
24247    ProtologLevelError = 5,
24248    ProtologLevelWtf = 6,
24249}
24250impl ProtoLogLevel {
24251    /// String value of the enum field names used in the ProtoBuf definition.
24252    ///
24253    /// The values are not transformed in any way and thus are considered stable
24254    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24255    pub fn as_str_name(&self) -> &'static str {
24256        match self {
24257            ProtoLogLevel::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
24258            ProtoLogLevel::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
24259            ProtoLogLevel::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
24260            ProtoLogLevel::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
24261            ProtoLogLevel::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
24262            ProtoLogLevel::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
24263            ProtoLogLevel::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
24264        }
24265    }
24266}
24267// End of protos/perfetto/config/profiling/perf_event_config.proto
24268
24269// Begin of protos/perfetto/config/statsd/atom_ids.proto
24270
24271/// This enum is obtained by post-processing
24272/// AOSP/frameworks/proto_logging/stats/atoms.proto through
24273/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
24274/// enum value for each proto field defined in the upstream atoms.proto.
24275#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24276#[repr(i32)]
24277pub enum AtomId {
24278    AtomUnspecified = 0,
24279    AtomBleScanStateChanged = 2,
24280    AtomProcessStateChanged = 3,
24281    AtomBleScanResultReceived = 4,
24282    AtomSensorStateChanged = 5,
24283    AtomGpsScanStateChanged = 6,
24284    AtomSyncStateChanged = 7,
24285    AtomScheduledJobStateChanged = 8,
24286    AtomScreenBrightnessChanged = 9,
24287    AtomWakelockStateChanged = 10,
24288    AtomLongPartialWakelockStateChanged = 11,
24289    AtomMobileRadioPowerStateChanged = 12,
24290    AtomWifiRadioPowerStateChanged = 13,
24291    AtomActivityManagerSleepStateChanged = 14,
24292    AtomMemoryFactorStateChanged = 15,
24293    AtomExcessiveCpuUsageReported = 16,
24294    AtomCachedKillReported = 17,
24295    AtomProcessMemoryStatReported = 18,
24296    AtomLauncherEvent = 19,
24297    AtomBatterySaverModeStateChanged = 20,
24298    AtomDeviceIdleModeStateChanged = 21,
24299    AtomDeviceIdlingModeStateChanged = 22,
24300    AtomAudioStateChanged = 23,
24301    AtomMediaCodecStateChanged = 24,
24302    AtomCameraStateChanged = 25,
24303    AtomFlashlightStateChanged = 26,
24304    AtomUidProcessStateChanged = 27,
24305    AtomProcessLifeCycleStateChanged = 28,
24306    AtomScreenStateChanged = 29,
24307    AtomBatteryLevelChanged = 30,
24308    AtomChargingStateChanged = 31,
24309    AtomPluggedStateChanged = 32,
24310    AtomInteractiveStateChanged = 33,
24311    AtomTouchEventReported = 34,
24312    AtomWakeupAlarmOccurred = 35,
24313    AtomKernelWakeupReported = 36,
24314    AtomWifiLockStateChanged = 37,
24315    AtomWifiSignalStrengthChanged = 38,
24316    AtomWifiScanStateChanged = 39,
24317    AtomPhoneSignalStrengthChanged = 40,
24318    AtomSettingChanged = 41,
24319    AtomActivityForegroundStateChanged = 42,
24320    AtomIsolatedUidChanged = 43,
24321    AtomPacketWakeupOccurred = 44,
24322    AtomWallClockTimeShifted = 45,
24323    AtomAnomalyDetected = 46,
24324    AtomAppBreadcrumbReported = 47,
24325    AtomAppStartOccurred = 48,
24326    AtomAppStartCanceled = 49,
24327    AtomAppStartFullyDrawn = 50,
24328    AtomLmkKillOccurred = 51,
24329    AtomPictureInPictureStateChanged = 52,
24330    AtomWifiMulticastLockStateChanged = 53,
24331    AtomAppStartMemoryStateCaptured = 55,
24332    AtomShutdownSequenceReported = 56,
24333    AtomBootSequenceReported = 57,
24334    AtomOverlayStateChanged = 59,
24335    AtomForegroundServiceStateChanged = 60,
24336    AtomCallStateChanged = 61,
24337    AtomKeyguardStateChanged = 62,
24338    AtomKeyguardBouncerStateChanged = 63,
24339    AtomKeyguardBouncerPasswordEntered = 64,
24340    AtomAppDied = 65,
24341    AtomResourceConfigurationChanged = 66,
24342    AtomBluetoothEnabledStateChanged = 67,
24343    AtomBluetoothConnectionStateChanged = 68,
24344    AtomGpsSignalQualityChanged = 69,
24345    AtomUsbConnectorStateChanged = 70,
24346    AtomSpeakerImpedanceReported = 71,
24347    AtomHardwareFailed = 72,
24348    AtomPhysicalDropDetected = 73,
24349    AtomChargeCyclesReported = 74,
24350    AtomMobileConnectionStateChanged = 75,
24351    AtomMobileRadioTechnologyChanged = 76,
24352    AtomUsbDeviceAttached = 77,
24353    AtomAppCrashOccurred = 78,
24354    AtomAnrOccurred = 79,
24355    AtomWtfOccurred = 80,
24356    AtomLowMemReported = 81,
24357    AtomGenericAtom = 82,
24358    AtomVibratorStateChanged = 84,
24359    AtomDeferredJobStatsReported = 85,
24360    AtomThermalThrottling = 86,
24361    AtomBiometricAcquired = 87,
24362    AtomBiometricAuthenticated = 88,
24363    AtomBiometricErrorOccurred = 89,
24364    AtomUiEventReported = 90,
24365    AtomBatteryHealthSnapshot = 91,
24366    AtomSlowIo = 92,
24367    AtomBatteryCausedShutdown = 93,
24368    AtomPhoneServiceStateChanged = 94,
24369    AtomPhoneStateChanged = 95,
24370    AtomUserRestrictionChanged = 96,
24371    AtomSettingsUiChanged = 97,
24372    AtomConnectivityStateChanged = 98,
24373    AtomServiceStateChanged = 99,
24374    AtomServiceLaunchReported = 100,
24375    AtomFlagFlipUpdateOccurred = 101,
24376    AtomBinaryPushStateChanged = 102,
24377    AtomDevicePolicyEvent = 103,
24378    AtomDocsUiFileOpCanceled = 104,
24379    AtomDocsUiFileOpCopyMoveModeReported = 105,
24380    AtomDocsUiFileOpFailure = 106,
24381    AtomDocsUiProviderFileOp = 107,
24382    AtomDocsUiInvalidScopedAccessRequest = 108,
24383    AtomDocsUiLaunchReported = 109,
24384    AtomDocsUiRootVisited = 110,
24385    AtomDocsUiStartupMs = 111,
24386    AtomDocsUiUserActionReported = 112,
24387    AtomWifiEnabledStateChanged = 113,
24388    AtomWifiRunningStateChanged = 114,
24389    AtomAppCompacted = 115,
24390    AtomNetworkDnsEventReported = 116,
24391    AtomDocsUiPickerLaunchedFromReported = 117,
24392    AtomDocsUiPickResultReported = 118,
24393    AtomDocsUiSearchModeReported = 119,
24394    AtomDocsUiSearchTypeReported = 120,
24395    AtomDataStallEvent = 121,
24396    AtomRescuePartyResetReported = 122,
24397    AtomSignedConfigReported = 123,
24398    AtomGnssNiEventReported = 124,
24399    AtomBluetoothLinkLayerConnectionEvent = 125,
24400    AtomBluetoothAclConnectionStateChanged = 126,
24401    AtomBluetoothScoConnectionStateChanged = 127,
24402    AtomAppDowngraded = 128,
24403    AtomAppOptimizedAfterDowngraded = 129,
24404    AtomLowStorageStateChanged = 130,
24405    AtomGnssNfwNotificationReported = 131,
24406    AtomGnssConfigurationReported = 132,
24407    AtomUsbPortOverheatEventReported = 133,
24408    AtomNfcErrorOccurred = 134,
24409    AtomNfcStateChanged = 135,
24410    AtomNfcBeamOccurred = 136,
24411    AtomNfcCardemulationOccurred = 137,
24412    AtomNfcTagOccurred = 138,
24413    AtomNfcHceTransactionOccurred = 139,
24414    AtomSeStateChanged = 140,
24415    AtomSeOmapiReported = 141,
24416    AtomBroadcastDispatchLatencyReported = 142,
24417    AtomAttentionManagerServiceResultReported = 143,
24418    AtomAdbConnectionChanged = 144,
24419    AtomSpeechDspStatReported = 145,
24420    AtomUsbContaminantReported = 146,
24421    AtomWatchdogRollbackOccurred = 147,
24422    AtomBiometricSystemHealthIssueDetected = 148,
24423    AtomBubbleUiChanged = 149,
24424    AtomScheduledJobConstraintChanged = 150,
24425    AtomBluetoothActiveDeviceChanged = 151,
24426    AtomBluetoothA2dpPlaybackStateChanged = 152,
24427    AtomBluetoothA2dpCodecConfigChanged = 153,
24428    AtomBluetoothA2dpCodecCapabilityChanged = 154,
24429    AtomBluetoothA2dpAudioUnderrunReported = 155,
24430    AtomBluetoothA2dpAudioOverrunReported = 156,
24431    AtomBluetoothDeviceRssiReported = 157,
24432    AtomBluetoothDeviceFailedContactCounterReported = 158,
24433    AtomBluetoothDeviceTxPowerLevelReported = 159,
24434    AtomBluetoothHciTimeoutReported = 160,
24435    AtomBluetoothQualityReportReported = 161,
24436    AtomBluetoothDeviceInfoReported = 162,
24437    AtomBluetoothRemoteVersionInfoReported = 163,
24438    AtomBluetoothSdpAttributeReported = 164,
24439    AtomBluetoothBondStateChanged = 165,
24440    AtomBluetoothClassicPairingEventReported = 166,
24441    AtomBluetoothSmpPairingEventReported = 167,
24442    AtomScreenTimeoutExtensionReported = 168,
24443    AtomProcessStartTime = 169,
24444    AtomPermissionGrantRequestResultReported = 170,
24445    AtomBluetoothSocketConnectionStateChanged = 171,
24446    AtomDeviceIdentifierAccessDenied = 172,
24447    AtomBubbleDeveloperErrorReported = 173,
24448    AtomAssistGestureStageReported = 174,
24449    AtomAssistGestureFeedbackReported = 175,
24450    AtomAssistGestureProgressReported = 176,
24451    AtomTouchGestureClassified = 177,
24452    AtomHiddenApiUsed = 178,
24453    AtomStyleUiChanged = 179,
24454    AtomPrivacyIndicatorsInteracted = 180,
24455    AtomAppInstallOnExternalStorageReported = 181,
24456    AtomNetworkStackReported = 182,
24457    AtomAppMovedStorageReported = 183,
24458    AtomBiometricEnrolled = 184,
24459    AtomSystemServerWatchdogOccurred = 185,
24460    AtomTombStoneOccurred = 186,
24461    AtomBluetoothClassOfDeviceReported = 187,
24462    AtomIntelligenceEventReported = 188,
24463    AtomThermalThrottlingSeverityStateChanged = 189,
24464    AtomRoleRequestResultReported = 190,
24465    AtomMediametricsAudiopolicyReported = 191,
24466    AtomMediametricsAudiorecordReported = 192,
24467    AtomMediametricsAudiothreadReported = 193,
24468    AtomMediametricsAudiotrackReported = 194,
24469    AtomMediametricsCodecReported = 195,
24470    AtomMediametricsDrmWidevineReported = 196,
24471    AtomMediametricsExtractorReported = 197,
24472    AtomMediametricsMediadrmReported = 198,
24473    AtomMediametricsNuplayerReported = 199,
24474    AtomMediametricsRecorderReported = 200,
24475    AtomMediametricsDrmmanagerReported = 201,
24476    AtomCarPowerStateChanged = 203,
24477    AtomGarageModeInfo = 204,
24478    AtomTestAtomReported = 205,
24479    AtomContentCaptureCallerMismatchReported = 206,
24480    AtomContentCaptureServiceEvents = 207,
24481    AtomContentCaptureSessionEvents = 208,
24482    AtomContentCaptureFlushed = 209,
24483    AtomLocationManagerApiUsageReported = 210,
24484    AtomReviewPermissionsFragmentResultReported = 211,
24485    AtomRuntimePermissionsUpgradeResult = 212,
24486    AtomGrantPermissionsActivityButtonActions = 213,
24487    AtomLocationAccessCheckNotificationAction = 214,
24488    AtomAppPermissionFragmentActionReported = 215,
24489    AtomAppPermissionFragmentViewed = 216,
24490    AtomAppPermissionsFragmentViewed = 217,
24491    AtomPermissionAppsFragmentViewed = 218,
24492    AtomTextSelectionEvent = 219,
24493    AtomTextLinkifyEvent = 220,
24494    AtomConversationActionsEvent = 221,
24495    AtomLanguageDetectionEvent = 222,
24496    AtomExclusionRectStateChanged = 223,
24497    AtomBackGestureReportedReported = 224,
24498    AtomUpdateEngineUpdateAttemptReported = 225,
24499    AtomUpdateEngineSuccessfulUpdateReported = 226,
24500    AtomCameraActionEvent = 227,
24501    AtomAppCompatibilityChangeReported = 228,
24502    AtomPerfettoUploaded = 229,
24503    AtomVmsClientConnectionStateChanged = 230,
24504    AtomMediaProviderScanOccurred = 233,
24505    AtomMediaContentDeleted = 234,
24506    AtomMediaProviderPermissionRequested = 235,
24507    AtomMediaProviderSchemaChanged = 236,
24508    AtomMediaProviderIdleMaintenanceFinished = 237,
24509    AtomRebootEscrowRecoveryReported = 238,
24510    AtomBootTimeEventDurationReported = 239,
24511    AtomBootTimeEventElapsedTimeReported = 240,
24512    AtomBootTimeEventUtcTimeReported = 241,
24513    AtomBootTimeEventErrorCodeReported = 242,
24514    AtomUserspaceRebootReported = 243,
24515    AtomNotificationReported = 244,
24516    AtomNotificationPanelReported = 245,
24517    AtomNotificationChannelModified = 246,
24518    AtomIntegrityCheckResultReported = 247,
24519    AtomIntegrityRulesPushed = 248,
24520    AtomCbMessageReported = 249,
24521    AtomCbMessageError = 250,
24522    AtomWifiHealthStatReported = 251,
24523    AtomWifiFailureStatReported = 252,
24524    AtomWifiConnectionResultReported = 253,
24525    AtomAppFreezeChanged = 254,
24526    AtomSnapshotMergeReported = 255,
24527    AtomForegroundServiceAppOpSessionEnded = 256,
24528    AtomDisplayJankReported = 257,
24529    AtomAppStandbyBucketChanged = 258,
24530    AtomSharesheetStarted = 259,
24531    AtomRankingSelected = 260,
24532    AtomTvsettingsUiInteracted = 261,
24533    AtomLauncherSnapshot = 262,
24534    AtomPackageInstallerV2Reported = 263,
24535    AtomUserLifecycleJourneyReported = 264,
24536    AtomUserLifecycleEventOccurred = 265,
24537    AtomAccessibilityShortcutReported = 266,
24538    AtomAccessibilityServiceReported = 267,
24539    AtomDocsUiDragAndDropReported = 268,
24540    AtomAppUsageEventOccurred = 269,
24541    AtomAutoRevokeNotificationClicked = 270,
24542    AtomAutoRevokeFragmentAppViewed = 271,
24543    AtomAutoRevokedAppInteraction = 272,
24544    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
24545    AtomEvsUsageStatsReported = 274,
24546    AtomAudioPowerUsageDataReported = 275,
24547    AtomTvTunerStateChanged = 276,
24548    AtomMediaoutputOpSwitchReported = 277,
24549    AtomCbMessageFiltered = 278,
24550    AtomTvTunerDvrStatus = 279,
24551    AtomTvCasSessionOpenStatus = 280,
24552    AtomAssistantInvocationReported = 281,
24553    AtomDisplayWakeReported = 282,
24554    AtomCarUserHalModifyUserRequestReported = 283,
24555    AtomCarUserHalModifyUserResponseReported = 284,
24556    AtomCarUserHalPostSwitchResponseReported = 285,
24557    AtomCarUserHalInitialUserInfoRequestReported = 286,
24558    AtomCarUserHalInitialUserInfoResponseReported = 287,
24559    AtomCarUserHalUserAssociationRequestReported = 288,
24560    AtomCarUserHalSetUserAssociationResponseReported = 289,
24561    AtomNetworkIpProvisioningReported = 290,
24562    AtomNetworkDhcpRenewReported = 291,
24563    AtomNetworkValidationReported = 292,
24564    AtomNetworkStackQuirkReported = 293,
24565    AtomMediametricsAudiorecorddeviceusageReported = 294,
24566    AtomMediametricsAudiothreaddeviceusageReported = 295,
24567    AtomMediametricsAudiotrackdeviceusageReported = 296,
24568    AtomMediametricsAudiodeviceconnectionReported = 297,
24569    AtomBlobCommitted = 298,
24570    AtomBlobLeased = 299,
24571    AtomBlobOpened = 300,
24572    AtomContactsProviderStatusReported = 301,
24573    AtomKeystoreKeyEventReported = 302,
24574    AtomNetworkTetheringReported = 303,
24575    AtomImeTouchReported = 304,
24576    AtomUiInteractionFrameInfoReported = 305,
24577    AtomUiActionLatencyReported = 306,
24578    AtomWifiDisconnectReported = 307,
24579    AtomWifiConnectionStateChanged = 308,
24580    AtomHdmiCecActiveSourceChanged = 309,
24581    AtomHdmiCecMessageReported = 310,
24582    AtomAirplaneMode = 311,
24583    AtomModemRestart = 312,
24584    AtomCarrierIdMismatchReported = 313,
24585    AtomCarrierIdTableUpdated = 314,
24586    AtomDataStallRecoveryReported = 315,
24587    AtomMediametricsMediaparserReported = 316,
24588    AtomTlsHandshakeReported = 317,
24589    AtomTextClassifierApiUsageReported = 318,
24590    AtomCarWatchdogKillStatsReported = 319,
24591    AtomMediametricsPlaybackReported = 320,
24592    AtomMediaNetworkInfoChanged = 321,
24593    AtomMediaPlaybackStateChanged = 322,
24594    AtomMediaPlaybackErrorReported = 323,
24595    AtomMediaPlaybackTrackChanged = 324,
24596    AtomWifiScanReported = 325,
24597    AtomWifiPnoScanReported = 326,
24598    AtomTifTuneChanged = 327,
24599    AtomAutoRotateReported = 328,
24600    AtomPerfettoTrigger = 329,
24601    AtomTranscodingData = 330,
24602    AtomImsServiceEntitlementUpdated = 331,
24603    AtomDeviceRotated = 333,
24604    AtomSimSpecificSettingsRestored = 334,
24605    AtomTextClassifierDownloadReported = 335,
24606    AtomPinStorageEvent = 336,
24607    AtomFaceDownReported = 337,
24608    AtomBluetoothHalCrashReasonReported = 338,
24609    AtomRebootEscrowPreparationReported = 339,
24610    AtomRebootEscrowLskfCaptureReported = 340,
24611    AtomRebootEscrowRebootReported = 341,
24612    AtomBinderLatencyReported = 342,
24613    AtomMediametricsAaudiostreamReported = 343,
24614    AtomMediaTranscodingSessionEnded = 344,
24615    AtomMagnificationUsageReported = 345,
24616    AtomMagnificationModeWithImeOnReported = 346,
24617    AtomAppSearchCallStatsReported = 347,
24618    AtomAppSearchPutDocumentStatsReported = 348,
24619    AtomDeviceControlChanged = 349,
24620    AtomDeviceStateChanged = 350,
24621    AtomInputdeviceRegistered = 351,
24622    AtomSmartspaceCardReported = 352,
24623    AtomAuthPromptAuthenticateInvoked = 353,
24624    AtomAuthManagerCanAuthenticateInvoked = 354,
24625    AtomAuthEnrollActionInvoked = 355,
24626    AtomAuthDeprecatedApiUsed = 356,
24627    AtomUnattendedRebootOccurred = 357,
24628    AtomLongRebootBlockingReported = 358,
24629    AtomLocationTimeZoneProviderStateChanged = 359,
24630    AtomFdtrackEventOccurred = 364,
24631    AtomTimeoutAutoExtendedReported = 365,
24632    AtomAlarmBatchDelivered = 367,
24633    AtomAlarmScheduled = 368,
24634    AtomCarWatchdogIoOveruseStatsReported = 369,
24635    AtomUserLevelHibernationStateChanged = 370,
24636    AtomAppSearchInitializeStatsReported = 371,
24637    AtomAppSearchQueryStatsReported = 372,
24638    AtomAppProcessDied = 373,
24639    AtomNetworkIpReachabilityMonitorReported = 374,
24640    AtomSlowInputEventReported = 375,
24641    AtomAnrOccurredProcessingStarted = 376,
24642    AtomAppSearchRemoveStatsReported = 377,
24643    AtomMediaCodecReported = 378,
24644    AtomPermissionUsageFragmentInteraction = 379,
24645    AtomPermissionDetailsInteraction = 380,
24646    AtomPrivacySensorToggleInteraction = 381,
24647    AtomPrivacyToggleDialogInteraction = 382,
24648    AtomAppSearchOptimizeStatsReported = 383,
24649    AtomNonA11yToolServiceWarningReport = 384,
24650    AtomAppCompatStateChanged = 386,
24651    AtomSizeCompatRestartButtonEventReported = 387,
24652    AtomSplitscreenUiChanged = 388,
24653    AtomNetworkDnsHandshakeReported = 389,
24654    AtomBluetoothCodePathCounter = 390,
24655    AtomBluetoothLeBatchScanReportDelay = 392,
24656    AtomAccessibilityFloatingMenuUiChanged = 393,
24657    AtomNeuralnetworksCompilationCompleted = 394,
24658    AtomNeuralnetworksExecutionCompleted = 395,
24659    AtomNeuralnetworksCompilationFailed = 396,
24660    AtomNeuralnetworksExecutionFailed = 397,
24661    AtomContextHubBooted = 398,
24662    AtomContextHubRestarted = 399,
24663    AtomContextHubLoadedNanoappSnapshotReported = 400,
24664    AtomChreCodeDownloadTransacted = 401,
24665    AtomUwbSessionInited = 402,
24666    AtomUwbSessionClosed = 403,
24667    AtomUwbFirstRangingReceived = 404,
24668    AtomUwbRangingMeasurementReceived = 405,
24669    AtomTextClassifierDownloadWorkScheduled = 406,
24670    AtomTextClassifierDownloadWorkCompleted = 407,
24671    AtomClipboardCleared = 408,
24672    AtomVmCreationRequested = 409,
24673    AtomNearbyDeviceScanStateChanged = 410,
24674    AtomApplicationLocalesChanged = 412,
24675    AtomMediametricsAudiotrackstatusReported = 413,
24676    AtomFoldStateDurationReported = 414,
24677    AtomLocationTimeZoneProviderControllerStateChanged = 415,
24678    AtomDisplayHbmStateChanged = 416,
24679    AtomDisplayHbmBrightnessChanged = 417,
24680    AtomPersistentUriPermissionsFlushed = 418,
24681    AtomEarlyBootCompOsArtifactsCheckReported = 419,
24682    AtomVbmetaDigestReported = 420,
24683    AtomApexInfoGathered = 421,
24684    AtomPvmInfoGathered = 422,
24685    AtomWearSettingsUiInteracted = 423,
24686    AtomTracingServiceReportEvent = 424,
24687    AtomMediametricsAudiorecordstatusReported = 425,
24688    AtomLauncherLatency = 426,
24689    AtomDropboxEntryDropped = 427,
24690    AtomWifiP2pConnectionReported = 428,
24691    AtomGameStateChanged = 429,
24692    AtomHotwordDetectorCreateRequested = 430,
24693    AtomHotwordDetectionServiceInitResultReported = 431,
24694    AtomHotwordDetectionServiceRestarted = 432,
24695    AtomHotwordDetectorKeyphraseTriggered = 433,
24696    AtomHotwordDetectorEvents = 434,
24697    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
24698    AtomContactsIndexerUpdateStatsReported = 440,
24699    AtomAppBackgroundRestrictionsInfo = 441,
24700    AtomMmsSmsProviderGetThreadIdFailed = 442,
24701    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
24702    AtomPermissionReminderNotificationInteracted = 444,
24703    AtomRecentPermissionDecisionsInteracted = 445,
24704    AtomGnssPsdsDownloadReported = 446,
24705    AtomLeAudioConnectionSessionReported = 447,
24706    AtomLeAudioBroadcastSessionReported = 448,
24707    AtomDreamUiEventReported = 449,
24708    AtomTaskManagerEventReported = 450,
24709    AtomCdmAssociationAction = 451,
24710    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
24711    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
24712    AtomAccessibilityTextReadingOptionsChanged = 454,
24713    AtomWifiSetupFailureCrashReported = 455,
24714    AtomUwbDeviceErrorReported = 456,
24715    AtomIsolatedCompilationScheduled = 457,
24716    AtomIsolatedCompilationEnded = 458,
24717    AtomOnsOpportunisticEsimProvisioningComplete = 459,
24718    AtomSystemServerPreWatchdogOccurred = 460,
24719    AtomTelephonyAnomalyDetected = 461,
24720    AtomLetterboxPositionChanged = 462,
24721    AtomRemoteKeyProvisioningAttempt = 463,
24722    AtomRemoteKeyProvisioningNetworkInfo = 464,
24723    AtomRemoteKeyProvisioningTiming = 465,
24724    AtomMediaoutputOpInteractionReport = 466,
24725    AtomSyncExemptionOccurred = 468,
24726    AtomAutofillPresentationEventReported = 469,
24727    AtomDockStateChanged = 470,
24728    AtomSafetySourceStateCollected = 471,
24729    AtomSafetyCenterSystemEventReported = 472,
24730    AtomSafetyCenterInteractionReported = 473,
24731    AtomSettingsProviderSettingChanged = 474,
24732    AtomBroadcastDeliveryEventReported = 475,
24733    AtomServiceRequestEventReported = 476,
24734    AtomProviderAcquisitionEventReported = 477,
24735    AtomBluetoothDeviceNameReported = 478,
24736    AtomCbConfigUpdated = 479,
24737    AtomCbModuleErrorReported = 480,
24738    AtomCbServiceFeatureChanged = 481,
24739    AtomCbReceiverFeatureChanged = 482,
24740    AtomPrivacySignalNotificationInteraction = 484,
24741    AtomPrivacySignalIssueCardInteraction = 485,
24742    AtomPrivacySignalsJobFailure = 486,
24743    AtomVibrationReported = 487,
24744    AtomUwbRangingStart = 489,
24745    AtomAppCompactedV2 = 491,
24746    AtomDisplayBrightnessChanged = 494,
24747    AtomActivityActionBlocked = 495,
24748    AtomNetworkDnsServerSupportReported = 504,
24749    AtomVmBooted = 505,
24750    AtomVmExited = 506,
24751    AtomAmbientBrightnessStatsReported = 507,
24752    AtomMediametricsSpatializercapabilitiesReported = 508,
24753    AtomMediametricsSpatializerdeviceenabledReported = 509,
24754    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
24755    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
24756    AtomHearingAidInfoReported = 513,
24757    AtomDeviceWideJobConstraintChanged = 514,
24758    AtomAmbientModeChanged = 515,
24759    AtomAnrLatencyReported = 516,
24760    AtomResourceApiInfo = 517,
24761    AtomSystemDefaultNetworkChanged = 518,
24762    AtomIwlanSetupDataCallResultReported = 519,
24763    AtomIwlanPdnDisconnectedReasonReported = 520,
24764    AtomAirplaneModeSessionReported = 521,
24765    AtomVmCpuStatusReported = 522,
24766    AtomVmMemStatusReported = 523,
24767    AtomPackageInstallationSessionReported = 524,
24768    AtomDefaultNetworkRematchInfo = 525,
24769    AtomNetworkSelectionPerformance = 526,
24770    AtomNetworkNsdReported = 527,
24771    AtomBluetoothDisconnectionReasonReported = 529,
24772    AtomBluetoothLocalVersionsReported = 530,
24773    AtomBluetoothRemoteSupportedFeaturesReported = 531,
24774    AtomBluetoothLocalSupportedFeaturesReported = 532,
24775    AtomBluetoothGattAppInfo = 533,
24776    AtomBrightnessConfigurationUpdated = 534,
24777    AtomWearMediaOutputSwitcherLaunched = 538,
24778    AtomWearMediaOutputSwitcherFinished = 539,
24779    AtomWearMediaOutputSwitcherConnectionReported = 540,
24780    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
24781    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
24782    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
24783    AtomPackageManagerSnapshotReported = 544,
24784    AtomPackageManagerAppsFilterCacheBuildReported = 545,
24785    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
24786    AtomLauncherImpressionEvent = 547,
24787    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
24788    AtomWsWatchFaceEdited = 551,
24789    AtomWsWatchFaceFavoriteActionReported = 552,
24790    AtomWsWatchFaceSetActionReported = 553,
24791    AtomPackageUninstallationReported = 554,
24792    AtomGameModeChanged = 555,
24793    AtomGameModeConfigurationChanged = 556,
24794    AtomBedtimeModeStateChanged = 557,
24795    AtomNetworkSliceSessionEnded = 558,
24796    AtomNetworkSliceDailyDataUsageReported = 559,
24797    AtomNfcTagTypeOccurred = 560,
24798    AtomNfcAidConflictOccurred = 561,
24799    AtomNfcReaderConflictOccurred = 562,
24800    AtomWsTileListChanged = 563,
24801    AtomGetTypeAccessedWithoutPermission = 564,
24802    AtomMobileBundledAppInfoGathered = 566,
24803    AtomWsWatchFaceComplicationSetChanged = 567,
24804    AtomMediaDrmCreated = 568,
24805    AtomMediaDrmErrored = 569,
24806    AtomMediaDrmSessionOpened = 570,
24807    AtomMediaDrmSessionClosed = 571,
24808    AtomUserSelectedResolution = 572,
24809    AtomUnsafeIntentEventReported = 573,
24810    AtomPerformanceHintSessionReported = 574,
24811    AtomMediametricsMidiDeviceCloseReported = 576,
24812    AtomBiometricTouchReported = 577,
24813    AtomHotwordAudioEgressEventReported = 578,
24814    AtomLocationEnabledStateChanged = 580,
24815    AtomImeRequestFinished = 581,
24816    AtomUsbComplianceWarningsReported = 582,
24817    AtomAppSupportedLocalesChanged = 583,
24818    AtomMediaProviderVolumeRecoveryReported = 586,
24819    AtomBiometricPropertiesCollected = 587,
24820    AtomKernelWakeupAttributed = 588,
24821    AtomScreenStateChangedV2 = 589,
24822    AtomWsBackupActionReported = 590,
24823    AtomWsRestoreActionReported = 591,
24824    AtomDeviceLogAccessEventReported = 592,
24825    AtomMediaSessionUpdated = 594,
24826    AtomWearOobeStateChanged = 595,
24827    AtomWsNotificationUpdated = 596,
24828    AtomNetworkValidationFailureStatsDailyReported = 601,
24829    AtomWsComplicationTapped = 602,
24830    AtomWsNotificationBlocking = 780,
24831    AtomWsNotificationBridgemodeUpdated = 822,
24832    AtomWsNotificationDismissalActioned = 823,
24833    AtomWsNotificationActioned = 824,
24834    AtomWsNotificationLatency = 880,
24835    AtomWifiBytesTransfer = 10000,
24836    AtomWifiBytesTransferByFgBg = 10001,
24837    AtomMobileBytesTransfer = 10002,
24838    AtomMobileBytesTransferByFgBg = 10003,
24839    AtomBluetoothBytesTransfer = 10006,
24840    AtomKernelWakelock = 10004,
24841    AtomSubsystemSleepState = 10005,
24842    AtomCpuTimePerUid = 10009,
24843    AtomCpuTimePerUidFreq = 10010,
24844    AtomWifiActivityInfo = 10011,
24845    AtomModemActivityInfo = 10012,
24846    AtomBluetoothActivityInfo = 10007,
24847    AtomProcessMemoryState = 10013,
24848    AtomSystemElapsedRealtime = 10014,
24849    AtomSystemUptime = 10015,
24850    AtomCpuActiveTime = 10016,
24851    AtomCpuClusterTime = 10017,
24852    AtomDiskSpace = 10018,
24853    AtomRemainingBatteryCapacity = 10019,
24854    AtomFullBatteryCapacity = 10020,
24855    AtomTemperature = 10021,
24856    AtomBinderCalls = 10022,
24857    AtomBinderCallsExceptions = 10023,
24858    AtomLooperStats = 10024,
24859    AtomDiskStats = 10025,
24860    AtomDirectoryUsage = 10026,
24861    AtomAppSize = 10027,
24862    AtomCategorySize = 10028,
24863    AtomProcStats = 10029,
24864    AtomBatteryVoltage = 10030,
24865    AtomNumFingerprintsEnrolled = 10031,
24866    AtomDiskIo = 10032,
24867    AtomPowerProfile = 10033,
24868    AtomProcStatsPkgProc = 10034,
24869    AtomProcessCpuTime = 10035,
24870    AtomCpuTimePerThreadFreq = 10037,
24871    AtomOnDevicePowerMeasurement = 10038,
24872    AtomDeviceCalculatedPowerUse = 10039,
24873    AtomProcessMemoryHighWaterMark = 10042,
24874    AtomBatteryLevel = 10043,
24875    AtomBuildInformation = 10044,
24876    AtomBatteryCycleCount = 10045,
24877    AtomDebugElapsedClock = 10046,
24878    AtomDebugFailingElapsedClock = 10047,
24879    AtomNumFacesEnrolled = 10048,
24880    AtomRoleHolder = 10049,
24881    AtomDangerousPermissionState = 10050,
24882    AtomTrainInfo = 10051,
24883    AtomTimeZoneDataInfo = 10052,
24884    AtomExternalStorageInfo = 10053,
24885    AtomGpuStatsGlobalInfo = 10054,
24886    AtomGpuStatsAppInfo = 10055,
24887    AtomSystemIonHeapSize = 10056,
24888    AtomAppsOnExternalStorageInfo = 10057,
24889    AtomFaceSettings = 10058,
24890    AtomCoolingDevice = 10059,
24891    AtomAppOps = 10060,
24892    AtomProcessSystemIonHeapSize = 10061,
24893    AtomSurfaceflingerStatsGlobalInfo = 10062,
24894    AtomSurfaceflingerStatsLayerInfo = 10063,
24895    AtomProcessMemorySnapshot = 10064,
24896    AtomVmsClientStats = 10065,
24897    AtomNotificationRemoteViews = 10066,
24898    AtomDangerousPermissionStateSampled = 10067,
24899    AtomGraphicsStats = 10068,
24900    AtomRuntimeAppOpAccess = 10069,
24901    AtomIonHeapSize = 10070,
24902    AtomPackageNotificationPreferences = 10071,
24903    AtomPackageNotificationChannelPreferences = 10072,
24904    AtomPackageNotificationChannelGroupPreferences = 10073,
24905    AtomGnssStats = 10074,
24906    AtomAttributedAppOps = 10075,
24907    AtomVoiceCallSession = 10076,
24908    AtomVoiceCallRatUsage = 10077,
24909    AtomSimSlotState = 10078,
24910    AtomSupportedRadioAccessFamily = 10079,
24911    AtomSettingSnapshot = 10080,
24912    AtomBlobInfo = 10081,
24913    AtomDataUsageBytesTransfer = 10082,
24914    AtomBytesTransferByTagAndMetered = 10083,
24915    AtomDndModeRule = 10084,
24916    AtomGeneralExternalStorageAccessStats = 10085,
24917    AtomIncomingSms = 10086,
24918    AtomOutgoingSms = 10087,
24919    AtomCarrierIdTableVersion = 10088,
24920    AtomDataCallSession = 10089,
24921    AtomCellularServiceState = 10090,
24922    AtomCellularDataServiceSwitch = 10091,
24923    AtomSystemMemory = 10092,
24924    AtomImsRegistrationTermination = 10093,
24925    AtomImsRegistrationStats = 10094,
24926    AtomCpuTimePerClusterFreq = 10095,
24927    AtomCpuCyclesPerUidCluster = 10096,
24928    AtomDeviceRotatedData = 10097,
24929    AtomCpuCyclesPerThreadGroupCluster = 10098,
24930    AtomMediaDrmActivityInfo = 10099,
24931    AtomOemManagedBytesTransfer = 10100,
24932    AtomGnssPowerStats = 10101,
24933    AtomTimeZoneDetectorState = 10102,
24934    AtomKeystore2StorageStats = 10103,
24935    AtomRkpPoolStats = 10104,
24936    AtomProcessDmabufMemory = 10105,
24937    AtomPendingAlarmInfo = 10106,
24938    AtomUserLevelHibernatedApps = 10107,
24939    AtomLauncherLayoutSnapshot = 10108,
24940    AtomGlobalHibernatedApps = 10109,
24941    AtomInputEventLatencySketch = 10110,
24942    AtomBatteryUsageStatsBeforeReset = 10111,
24943    AtomBatteryUsageStatsSinceReset = 10112,
24944    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
24945    AtomInstalledIncrementalPackage = 10114,
24946    AtomTelephonyNetworkRequests = 10115,
24947    AtomAppSearchStorageInfo = 10116,
24948    AtomVmstat = 10117,
24949    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
24950    AtomKeystore2KeyCreationWithAuthInfo = 10119,
24951    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
24952    AtomKeystore2AtomWithOverflow = 10121,
24953    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
24954    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
24955    AtomRkpErrorStats = 10124,
24956    AtomKeystore2CrashStats = 10125,
24957    AtomVendorApexInfo = 10126,
24958    AtomAccessibilityShortcutStats = 10127,
24959    AtomAccessibilityFloatingMenuStats = 10128,
24960    AtomDataUsageBytesTransferV2 = 10129,
24961    AtomMediaCapabilities = 10130,
24962    AtomCarWatchdogSystemIoUsageSummary = 10131,
24963    AtomCarWatchdogUidIoUsageSummary = 10132,
24964    AtomImsRegistrationFeatureTagStats = 10133,
24965    AtomRcsClientProvisioningStats = 10134,
24966    AtomRcsAcsProvisioningStats = 10135,
24967    AtomSipDelegateStats = 10136,
24968    AtomSipTransportFeatureTagStats = 10137,
24969    AtomSipMessageResponse = 10138,
24970    AtomSipTransportSession = 10139,
24971    AtomImsDedicatedBearerListenerEvent = 10140,
24972    AtomImsDedicatedBearerEvent = 10141,
24973    AtomImsRegistrationServiceDescStats = 10142,
24974    AtomUceEventStats = 10143,
24975    AtomPresenceNotifyEvent = 10144,
24976    AtomGbaEvent = 10145,
24977    AtomPerSimStatus = 10146,
24978    AtomGpuWorkPerUid = 10147,
24979    AtomPersistentUriPermissionsAmountPerPackage = 10148,
24980    AtomSignedPartitionInfo = 10149,
24981    AtomPinnedFileSizesPerPackage = 10150,
24982    AtomPendingIntentsPerPackage = 10151,
24983    AtomUserInfo = 10152,
24984    AtomTelephonyNetworkRequestsV2 = 10153,
24985    AtomDeviceTelephonyProperties = 10154,
24986    AtomRemoteKeyProvisioningErrorCounts = 10155,
24987    AtomSafetyState = 10156,
24988    AtomIncomingMms = 10157,
24989    AtomOutgoingMms = 10158,
24990    AtomMultiUserInfo = 10160,
24991    AtomNetworkBpfMapInfo = 10161,
24992    AtomOutgoingShortCodeSms = 10162,
24993    AtomConnectivityStateSample = 10163,
24994    AtomNetworkSelectionRematchReasonsInfo = 10164,
24995    AtomGameModeInfo = 10165,
24996    AtomGameModeConfiguration = 10166,
24997    AtomGameModeListener = 10167,
24998    AtomNetworkSliceRequestCount = 10168,
24999    AtomWsTileSnapshot = 10169,
25000    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
25001    AtomProcessState = 10171,
25002    AtomProcessAssociation = 10172,
25003    AtomAdpfSystemComponentInfo = 10173,
25004    AtomNotificationMemoryUse = 10174,
25005    AtomHdrCapabilities = 10175,
25006    AtomWsFavouriteWatchFaceListSnapshot = 10176,
25007    AtomAccessibilityCheckResultReported = 910,
25008    AtomAdaptiveAuthUnlockAfterLockReported = 820,
25009    AtomThermalStatusCalled = 772,
25010    AtomThermalHeadroomCalled = 773,
25011    AtomThermalHeadroomThresholdsCalled = 774,
25012    AtomAdpfHintSessionTidCleanup = 839,
25013    AtomThermalHeadroomThresholds = 10201,
25014    AtomAdpfSessionSnapshot = 10218,
25015    AtomJsscriptengineLatencyReported = 483,
25016    AtomAdServicesApiCalled = 435,
25017    AtomAdServicesMesurementReportsUploaded = 436,
25018    AtomMobileDataDownloadFileGroupStatusReported = 490,
25019    AtomMobileDataDownloadDownloadResultReported = 502,
25020    AtomAdServicesSettingsUsageReported = 493,
25021    AtomBackgroundFetchProcessReported = 496,
25022    AtomUpdateCustomAudienceProcessReported = 497,
25023    AtomRunAdBiddingProcessReported = 498,
25024    AtomRunAdScoringProcessReported = 499,
25025    AtomRunAdSelectionProcessReported = 500,
25026    AtomRunAdBiddingPerCaProcessReported = 501,
25027    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
25028    AtomAdServicesMeasurementRegistrations = 512,
25029    AtomAdServicesGetTopicsReported = 535,
25030    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
25031    AtomAdServicesEpochComputationClassifierReported = 537,
25032    AtomAdServicesBackCompatGetTopicsReported = 598,
25033    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
25034    AtomAdServicesMeasurementDebugKeys = 640,
25035    AtomAdServicesErrorReported = 662,
25036    AtomAdServicesBackgroundJobsExecutionReported = 663,
25037    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
25038    AtomAdServicesMeasurementAttribution = 674,
25039    AtomAdServicesMeasurementJobs = 675,
25040    AtomAdServicesMeasurementWipeout = 676,
25041    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
25042    AtomAdServicesEnrollmentDataStored = 697,
25043    AtomAdServicesEnrollmentFileDownloaded = 698,
25044    AtomAdServicesEnrollmentMatched = 699,
25045    AtomAdServicesConsentMigrated = 702,
25046    AtomAdServicesEnrollmentFailed = 714,
25047    AtomAdServicesMeasurementClickVerification = 756,
25048    AtomAdServicesEncryptionKeyFetched = 765,
25049    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
25050    AtomDestinationRegisteredBeacons = 767,
25051    AtomReportInteractionApiCalled = 768,
25052    AtomInteractionReportingTableCleared = 769,
25053    AtomAppManifestConfigHelperCalled = 788,
25054    AtomAdFilteringProcessJoinCaReported = 793,
25055    AtomAdFilteringProcessAdSelectionReported = 794,
25056    AtomAdCounterHistogramUpdaterReported = 795,
25057    AtomSignatureVerification = 807,
25058    AtomKAnonImmediateSignJoinStatusReported = 808,
25059    AtomKAnonBackgroundJobStatusReported = 809,
25060    AtomKAnonInitializeStatusReported = 810,
25061    AtomKAnonSignStatusReported = 811,
25062    AtomKAnonJoinStatusReported = 812,
25063    AtomKAnonKeyAttestationStatusReported = 813,
25064    AtomGetAdSelectionDataApiCalled = 814,
25065    AtomGetAdSelectionDataBuyerInputGenerated = 815,
25066    AtomBackgroundJobSchedulingReported = 834,
25067    AtomTopicsEncryptionEpochComputationReported = 840,
25068    AtomTopicsEncryptionGetTopicsReported = 841,
25069    AtomAdservicesShellCommandCalled = 842,
25070    AtomUpdateSignalsApiCalled = 843,
25071    AtomEncodingJobRun = 844,
25072    AtomEncodingJsFetch = 845,
25073    AtomEncodingJsExecution = 846,
25074    AtomPersistAdSelectionResultCalled = 847,
25075    AtomServerAuctionKeyFetchCalled = 848,
25076    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
25077    AtomAdServicesMeasurementProcessOdpRegistration = 864,
25078    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
25079    AtomSelectAdsFromOutcomesApiCalled = 876,
25080    AtomReportImpressionApiCalled = 877,
25081    AtomAdServicesEnrollmentTransactionStats = 885,
25082    AtomAdServicesCobaltLoggerEventReported = 902,
25083    AtomAdServicesCobaltPeriodicJobEventReported = 903,
25084    AtomUpdateSignalsProcessReported = 905,
25085    AtomTopicsScheduleEpochJobSettingReported = 930,
25086    AtomAiWallpapersButtonPressed = 706,
25087    AtomAiWallpapersTemplateSelected = 707,
25088    AtomAiWallpapersTermSelected = 708,
25089    AtomAiWallpapersWallpaperSet = 709,
25090    AtomAiWallpapersSessionSummary = 710,
25091    AtomApexInstallationRequested = 732,
25092    AtomApexInstallationStaged = 733,
25093    AtomApexInstallationEnded = 734,
25094    AtomAppSearchSetSchemaStatsReported = 385,
25095    AtomAppSearchSchemaMigrationStatsReported = 579,
25096    AtomAppSearchUsageSearchIntentStatsReported = 825,
25097    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
25098    AtomAppSearchAppsIndexerStatsReported = 909,
25099    AtomArtDatumReported = 332,
25100    AtomArtDeviceDatumReported = 550,
25101    AtomArtDatumDeltaReported = 565,
25102    AtomArtDex2oatReported = 929,
25103    AtomArtDeviceStatus = 10205,
25104    AtomBackgroundDexoptJobEnded = 467,
25105    AtomPrerebootDexoptJobEnded = 883,
25106    AtomOdrefreshReported = 366,
25107    AtomOdsignReported = 548,
25108    AtomAutofillUiEventReported = 603,
25109    AtomAutofillFillRequestReported = 604,
25110    AtomAutofillFillResponseReported = 605,
25111    AtomAutofillSaveEventReported = 606,
25112    AtomAutofillSessionCommitted = 607,
25113    AtomAutofillFieldClassificationEventReported = 659,
25114    AtomCarRecentsEventReported = 770,
25115    AtomCarCalmModeEventReported = 797,
25116    AtomCarWakeupFromSuspendReported = 852,
25117    AtomPluginInitialized = 655,
25118    AtomBluetoothHashedDeviceNameReported = 613,
25119    AtomBluetoothL2capCocClientConnection = 614,
25120    AtomBluetoothL2capCocServerConnection = 615,
25121    AtomBluetoothLeSessionConnected = 656,
25122    AtomRestrictedBluetoothDeviceNameReported = 666,
25123    AtomBluetoothProfileConnectionAttempted = 696,
25124    AtomBluetoothContentProfileErrorReported = 781,
25125    AtomBluetoothRfcommConnectionAttempted = 782,
25126    AtomRemoteDeviceInformationWithMetricId = 862,
25127    AtomLeAppScanStateChanged = 870,
25128    AtomLeRadioScanStopped = 871,
25129    AtomLeScanResultReceived = 872,
25130    AtomLeScanAbused = 873,
25131    AtomLeAdvStateChanged = 874,
25132    AtomLeAdvErrorReported = 875,
25133    AtomA2dpSessionReported = 904,
25134    AtomBluetoothCrossLayerEventReported = 916,
25135    AtomBroadcastAudioSessionReported = 927,
25136    AtomBroadcastAudioSyncReported = 928,
25137    AtomBluetoothRfcommConnectionReportedAtClose = 982,
25138    AtomBluetoothLeConnection = 988,
25139    AtomBroadcastSent = 922,
25140    AtomCameraFeatureCombinationQueryEvent = 900,
25141    AtomCertificateTransparencyLogListStateChanged = 934,
25142    AtomCertificateTransparencyLogListUpdateFailed = 972,
25143    AtomDailyKeepaliveInfoReported = 650,
25144    AtomNetworkRequestStateChanged = 779,
25145    AtomTetheringActiveSessionsReported = 925,
25146    AtomNetworkStatsRecorderFileOperated = 783,
25147    AtomCoreNetworkingTerribleErrorOccurred = 979,
25148    AtomApfSessionInfoReported = 777,
25149    AtomIpClientRaInfoReported = 778,
25150    AtomVpnConnectionStateChanged = 850,
25151    AtomVpnConnectionReported = 851,
25152    AtomCpuPolicy = 10199,
25153    AtomCredentialManagerApiCalled = 585,
25154    AtomCredentialManagerInitPhaseReported = 651,
25155    AtomCredentialManagerCandidatePhaseReported = 652,
25156    AtomCredentialManagerFinalPhaseReported = 653,
25157    AtomCredentialManagerTotalReported = 667,
25158    AtomCredentialManagerFinalnouidReported = 668,
25159    AtomCredentialManagerGetReported = 669,
25160    AtomCredentialManagerAuthClickReported = 670,
25161    AtomCredentialManagerApiv2Called = 671,
25162    AtomCronetEngineCreated = 703,
25163    AtomCronetTrafficReported = 704,
25164    AtomCronetEngineBuilderInitialized = 762,
25165    AtomCronetHttpFlagsInitialized = 763,
25166    AtomCronetInitialized = 764,
25167    AtomDesktopModeUiChanged = 818,
25168    AtomDesktopModeSessionTaskUpdate = 819,
25169    AtomDesktopModeTaskSizeUpdated = 935,
25170    AtomDeviceLockCheckInRequestReported = 726,
25171    AtomDeviceLockProvisioningCompleteReported = 727,
25172    AtomDeviceLockKioskAppRequestReported = 728,
25173    AtomDeviceLockCheckInRetryReported = 789,
25174    AtomDeviceLockProvisionFailureReported = 790,
25175    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
25176    AtomDevicePolicyManagementMode = 10216,
25177    AtomDevicePolicyState = 10217,
25178    AtomDisplayModeDirectorVoteChanged = 792,
25179    AtomExternalDisplayStateChanged = 806,
25180    AtomDndStateChanged = 657,
25181    AtomDreamSettingChanged = 705,
25182    AtomDreamSettingSnapshot = 10192,
25183    AtomExpressEventReported = 528,
25184    AtomExpressHistogramSampleReported = 593,
25185    AtomExpressUidEventReported = 644,
25186    AtomExpressUidHistogramSampleReported = 658,
25187    AtomFederatedComputeApiCalled = 712,
25188    AtomFederatedComputeTrainingEventReported = 771,
25189    AtomExampleIteratorNextLatencyReported = 838,
25190    AtomFullScreenIntentLaunched = 631,
25191    AtomBalAllowed = 632,
25192    AtomInTaskActivityStarted = 685,
25193    AtomDeviceOrientationChanged = 906,
25194    AtomCachedAppsHighWatermark = 10189,
25195    AtomStylusPredictionMetricsReported = 718,
25196    AtomUserRiskEventReported = 725,
25197    AtomMediaProjectionStateChanged = 729,
25198    AtomMediaProjectionTargetChanged = 730,
25199    AtomExcessiveBinderProxyCountReported = 853,
25200    AtomProxyBytesTransferByFgBg = 10200,
25201    AtomMobileBytesTransferByProcState = 10204,
25202    AtomBiometricFrrNotification = 817,
25203    AtomSensitiveContentMediaProjectionSession = 830,
25204    AtomSensitiveNotificationAppProtectionSession = 831,
25205    AtomSensitiveNotificationAppProtectionApplied = 832,
25206    AtomSensitiveNotificationRedaction = 833,
25207    AtomSensitiveContentAppProtection = 835,
25208    AtomAppRestrictionStateChanged = 866,
25209    AtomBatteryUsageStatsPerUid = 10209,
25210    AtomPostgcMemorySnapshot = 924,
25211    AtomPowerSaveTempAllowlistChanged = 926,
25212    AtomAppOpAccessTracked = 931,
25213    AtomContentOrFileUriEventReported = 933,
25214    AtomApplicationGrammaticalInflectionChanged = 584,
25215    AtomSystemGrammaticalInflectionChanged = 816,
25216    AtomBatteryHealth = 10220,
25217    AtomHdmiEarcStatusReported = 701,
25218    AtomHdmiSoundbarModeStatusReported = 724,
25219    AtomHealthConnectApiCalled = 616,
25220    AtomHealthConnectUsageStats = 617,
25221    AtomHealthConnectStorageStats = 618,
25222    AtomHealthConnectApiInvoked = 643,
25223    AtomExerciseRouteApiCalled = 654,
25224    AtomHealthConnectExportInvoked = 907,
25225    AtomHealthConnectImportInvoked = 918,
25226    AtomHealthConnectExportImportStatsReported = 919,
25227    AtomHealthConnectUiImpression = 623,
25228    AtomHealthConnectUiInteraction = 624,
25229    AtomHealthConnectAppOpenedReported = 625,
25230    AtomHotwordEgressSizeAtomReported = 761,
25231    AtomIkeSessionTerminated = 678,
25232    AtomIkeLivenessCheckSessionValidated = 760,
25233    AtomNegotiatedSecurityAssociation = 821,
25234    AtomKeyboardConfigured = 682,
25235    AtomKeyboardSystemsEventReported = 683,
25236    AtomInputdeviceUsageReported = 686,
25237    AtomInputEventLatencyReported = 932,
25238    AtomTouchpadUsage = 10191,
25239    AtomKernelOomKillOccurred = 754,
25240    AtomEmergencyStateChanged = 633,
25241    AtomChreSignificantMotionStateChanged = 868,
25242    AtomPopulationDensityProviderLoadingReported = 1002,
25243    AtomDensityBasedCoarseLocationsUsageReported = 1003,
25244    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
25245    AtomMediaCodecReclaimRequestCompleted = 600,
25246    AtomMediaCodecStarted = 641,
25247    AtomMediaCodecStopped = 642,
25248    AtomMediaCodecRendered = 684,
25249    AtomMediaEditingEndedReported = 798,
25250    AtomMteState = 10181,
25251    AtomMicroxrDeviceBootCompleteReported = 901,
25252    AtomNfcObserveModeStateChanged = 855,
25253    AtomNfcFieldChanged = 856,
25254    AtomNfcPollingLoopNotificationReported = 857,
25255    AtomNfcProprietaryCapabilitiesReported = 858,
25256    AtomOndevicepersonalizationApiCalled = 711,
25257    AtomComponentStateChangedReported = 863,
25258    AtomPdfLoadReported = 859,
25259    AtomPdfApiUsageReported = 860,
25260    AtomPdfSearchReported = 861,
25261    AtomPressureStallInformation = 10229,
25262    AtomPermissionRationaleDialogViewed = 645,
25263    AtomPermissionRationaleDialogActionReported = 646,
25264    AtomAppDataSharingUpdatesNotificationInteraction = 647,
25265    AtomAppDataSharingUpdatesFragmentViewed = 648,
25266    AtomAppDataSharingUpdatesFragmentActionReported = 649,
25267    AtomEnhancedConfirmationDialogResultReported = 827,
25268    AtomEnhancedConfirmationRestrictionCleared = 828,
25269    AtomPhotopickerSessionInfoReported = 886,
25270    AtomPhotopickerApiInfoReported = 887,
25271    AtomPhotopickerUiEventLogged = 888,
25272    AtomPhotopickerMediaItemStatusReported = 889,
25273    AtomPhotopickerPreviewInfoLogged = 890,
25274    AtomPhotopickerMenuInteractionLogged = 891,
25275    AtomPhotopickerBannerInteractionLogged = 892,
25276    AtomPhotopickerMediaLibraryInfoLogged = 893,
25277    AtomPhotopickerPageInfoLogged = 894,
25278    AtomPhotopickerMediaGridSyncInfoReported = 895,
25279    AtomPhotopickerAlbumSyncInfoReported = 896,
25280    AtomPhotopickerSearchInfoReported = 897,
25281    AtomSearchDataExtractionDetailsReported = 898,
25282    AtomEmbeddedPhotopickerInfoReported = 899,
25283    AtomAtom9999 = 9999,
25284    AtomAtom99999 = 99999,
25285    AtomScreenOffReported = 776,
25286    AtomScreenTimeoutOverrideReported = 836,
25287    AtomScreenInteractiveSessionReported = 837,
25288    AtomScreenDimReported = 867,
25289    AtomMediaProviderDatabaseRollbackReported = 784,
25290    AtomBackupSetupStatusReported = 785,
25291    AtomRangingSessionConfigured = 993,
25292    AtomRangingSessionStarted = 994,
25293    AtomRangingSessionClosed = 995,
25294    AtomRangingTechnologyStarted = 996,
25295    AtomRangingTechnologyStopped = 997,
25296    AtomRkpdPoolStats = 664,
25297    AtomRkpdClientOperation = 665,
25298    AtomSandboxApiCalled = 488,
25299    AtomSandboxActivityEventOccurred = 735,
25300    AtomSdkSandboxRestrictedAccessInSession = 796,
25301    AtomSandboxSdkStorage = 10159,
25302    AtomSelinuxAuditLog = 799,
25303    AtomSettingsSpaReported = 622,
25304    AtomTestExtensionAtomReported = 660,
25305    AtomTestRestrictedAtomReported = 672,
25306    AtomStatsSocketLossReported = 752,
25307    AtomLockscreenShortcutSelected = 611,
25308    AtomLockscreenShortcutTriggered = 612,
25309    AtomLauncherImpressionEventV2 = 716,
25310    AtomDisplaySwitchLatencyTracked = 753,
25311    AtomNotificationListenerService = 829,
25312    AtomNavHandleTouchPoints = 869,
25313    AtomCommunalHubWidgetEventReported = 908,
25314    AtomCommunalHubSnapshot = 10226,
25315    AtomEmergencyNumberDialed = 637,
25316    AtomCallStats = 10221,
25317    AtomCallAudioRouteStats = 10222,
25318    AtomTelecomApiStats = 10223,
25319    AtomTelecomErrorStats = 10224,
25320    AtomCellularRadioPowerStateChanged = 713,
25321    AtomEmergencyNumbersInfo = 10180,
25322    AtomDataNetworkValidation = 10207,
25323    AtomDataRatStateChanged = 854,
25324    AtomConnectedChannelChanged = 882,
25325    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
25326    AtomQualifiedRatListChanged = 634,
25327    AtomQnsImsCallDropStats = 635,
25328    AtomQnsFallbackRestrictionChanged = 636,
25329    AtomQnsRatPreferenceMismatchInfo = 10177,
25330    AtomQnsHandoverTimeMillis = 10178,
25331    AtomQnsHandoverPingpong = 10179,
25332    AtomSatelliteController = 10182,
25333    AtomSatelliteSession = 10183,
25334    AtomSatelliteIncomingDatagram = 10184,
25335    AtomSatelliteOutgoingDatagram = 10185,
25336    AtomSatelliteProvision = 10186,
25337    AtomSatelliteSosMessageRecommender = 10187,
25338    AtomCarrierRoamingSatelliteSession = 10211,
25339    AtomCarrierRoamingSatelliteControllerStats = 10212,
25340    AtomControllerStatsPerPackage = 10213,
25341    AtomSatelliteEntitlement = 10214,
25342    AtomSatelliteConfigUpdater = 10215,
25343    AtomSatelliteAccessController = 10219,
25344    AtomCellularIdentifierDisclosed = 800,
25345    AtomThreadnetworkTelemetryDataReported = 738,
25346    AtomThreadnetworkTopoEntryRepeated = 739,
25347    AtomThreadnetworkDeviceInfoReported = 740,
25348    AtomBootIntegrityInfoReported = 775,
25349    AtomTvLowPowerStandbyPolicy = 679,
25350    AtomExternalTvInputEvent = 717,
25351    AtomTestUprobestatsAtomReported = 915,
25352    AtomUwbActivityInfo = 10188,
25353    AtomMediatorUpdated = 721,
25354    AtomSysproxyBluetoothBytesTransfer = 10196,
25355    AtomSysproxyConnectionUpdated = 786,
25356    AtomWearCompanionConnectionState = 921,
25357    AtomMediaActionReported = 608,
25358    AtomMediaControlsLaunched = 609,
25359    AtomMediaSessionStateChanged = 677,
25360    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
25361    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
25362    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
25363    AtomWearModeStateChanged = 715,
25364    AtomRendererInitialized = 736,
25365    AtomSchemaVersionReceived = 737,
25366    AtomLayoutInspected = 741,
25367    AtomLayoutExpressionInspected = 742,
25368    AtomLayoutAnimationsInspected = 743,
25369    AtomMaterialComponentsInspected = 744,
25370    AtomTileRequested = 745,
25371    AtomStateResponseReceived = 746,
25372    AtomTileResponseReceived = 747,
25373    AtomInflationFinished = 748,
25374    AtomInflationFailed = 749,
25375    AtomIgnoredInflationFailuresReported = 750,
25376    AtomDrawableRendered = 751,
25377    AtomWearTimeSyncRequested = 911,
25378    AtomWearTimeUpdateStarted = 912,
25379    AtomWearTimeSyncAttemptCompleted = 913,
25380    AtomWearTimeChanged = 914,
25381    AtomWearAdaptiveSuspendStatsReported = 619,
25382    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
25383    AtomWearPowerAnomalyServiceEventStatsReported = 621,
25384    AtomWsWearTimeSession = 610,
25385    AtomWsIncomingCallActionReported = 626,
25386    AtomWsCallDisconnectionReported = 627,
25387    AtomWsCallDurationReported = 628,
25388    AtomWsCallUserExperienceLatencyReported = 629,
25389    AtomWsCallInteractionReported = 630,
25390    AtomWsOnBodyStateChanged = 787,
25391    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
25392    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
25393    AtomWsComplicationsImpactedNotificationEventReported = 804,
25394    AtomWsRemoteEventUsageReported = 920,
25395    AtomWsBugreportRequested = 936,
25396    AtomWsBugreportTriggered = 937,
25397    AtomWsBugreportFinished = 938,
25398    AtomWsBugreportResultReceived = 939,
25399    AtomWsStandaloneModeSnapshot = 10197,
25400    AtomWsFavoriteWatchFaceSnapshot = 10206,
25401    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
25402    AtomWsWatchFaceCustomizationSnapshot = 10227,
25403    AtomWearPowerMenuOpened = 731,
25404    AtomWearAssistantOpened = 755,
25405    AtomFirstOverlayStateChanged = 917,
25406    AtomWifiAwareNdpReported = 638,
25407    AtomWifiAwareAttachReported = 639,
25408    AtomWifiSelfRecoveryTriggered = 661,
25409    AtomSoftApStarted = 680,
25410    AtomSoftApStopped = 681,
25411    AtomWifiLockReleased = 687,
25412    AtomWifiLockDeactivated = 688,
25413    AtomWifiConfigSaved = 689,
25414    AtomWifiAwareResourceUsingChanged = 690,
25415    AtomWifiAwareHalApiCalled = 691,
25416    AtomWifiLocalOnlyRequestReceived = 692,
25417    AtomWifiLocalOnlyRequestScanTriggered = 693,
25418    AtomWifiThreadTaskExecuted = 694,
25419    AtomWifiStateChanged = 700,
25420    AtomPnoScanStarted = 719,
25421    AtomPnoScanStopped = 720,
25422    AtomWifiIsUnusableReported = 722,
25423    AtomWifiApCapabilitiesReported = 723,
25424    AtomSoftApStateChanged = 805,
25425    AtomScorerPredictionResultReported = 884,
25426    AtomWifiAwareCapabilities = 10190,
25427    AtomWifiModuleInfo = 10193,
25428    AtomWifiSettingInfo = 10194,
25429    AtomWifiComplexSettingInfo = 10195,
25430    AtomWifiConfiguredNetworkInfo = 10198,
25431}
25432impl AtomId {
25433    /// String value of the enum field names used in the ProtoBuf definition.
25434    ///
25435    /// The values are not transformed in any way and thus are considered stable
25436    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25437    pub fn as_str_name(&self) -> &'static str {
25438        match self {
25439            AtomId::AtomUnspecified => "ATOM_UNSPECIFIED",
25440            AtomId::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
25441            AtomId::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
25442            AtomId::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
25443            AtomId::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
25444            AtomId::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
25445            AtomId::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
25446            AtomId::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
25447            AtomId::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
25448            AtomId::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
25449            AtomId::AtomLongPartialWakelockStateChanged => "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED",
25450            AtomId::AtomMobileRadioPowerStateChanged => "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED",
25451            AtomId::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
25452            AtomId::AtomActivityManagerSleepStateChanged => "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED",
25453            AtomId::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
25454            AtomId::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
25455            AtomId::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
25456            AtomId::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
25457            AtomId::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
25458            AtomId::AtomBatterySaverModeStateChanged => "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED",
25459            AtomId::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
25460            AtomId::AtomDeviceIdlingModeStateChanged => "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED",
25461            AtomId::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
25462            AtomId::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
25463            AtomId::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
25464            AtomId::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
25465            AtomId::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
25466            AtomId::AtomProcessLifeCycleStateChanged => "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED",
25467            AtomId::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
25468            AtomId::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
25469            AtomId::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
25470            AtomId::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
25471            AtomId::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
25472            AtomId::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
25473            AtomId::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
25474            AtomId::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
25475            AtomId::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
25476            AtomId::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
25477            AtomId::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
25478            AtomId::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
25479            AtomId::AtomSettingChanged => "ATOM_SETTING_CHANGED",
25480            AtomId::AtomActivityForegroundStateChanged => "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED",
25481            AtomId::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
25482            AtomId::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
25483            AtomId::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
25484            AtomId::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
25485            AtomId::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
25486            AtomId::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
25487            AtomId::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
25488            AtomId::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
25489            AtomId::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
25490            AtomId::AtomPictureInPictureStateChanged => "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED",
25491            AtomId::AtomWifiMulticastLockStateChanged => "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED",
25492            AtomId::AtomAppStartMemoryStateCaptured => "ATOM_APP_START_MEMORY_STATE_CAPTURED",
25493            AtomId::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
25494            AtomId::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
25495            AtomId::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
25496            AtomId::AtomForegroundServiceStateChanged => "ATOM_FOREGROUND_SERVICE_STATE_CHANGED",
25497            AtomId::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
25498            AtomId::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
25499            AtomId::AtomKeyguardBouncerStateChanged => "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED",
25500            AtomId::AtomKeyguardBouncerPasswordEntered => "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED",
25501            AtomId::AtomAppDied => "ATOM_APP_DIED",
25502            AtomId::AtomResourceConfigurationChanged => "ATOM_RESOURCE_CONFIGURATION_CHANGED",
25503            AtomId::AtomBluetoothEnabledStateChanged => "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED",
25504            AtomId::AtomBluetoothConnectionStateChanged => "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED",
25505            AtomId::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
25506            AtomId::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
25507            AtomId::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
25508            AtomId::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
25509            AtomId::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
25510            AtomId::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
25511            AtomId::AtomMobileConnectionStateChanged => "ATOM_MOBILE_CONNECTION_STATE_CHANGED",
25512            AtomId::AtomMobileRadioTechnologyChanged => "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED",
25513            AtomId::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
25514            AtomId::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
25515            AtomId::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
25516            AtomId::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
25517            AtomId::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
25518            AtomId::AtomGenericAtom => "ATOM_GENERIC_ATOM",
25519            AtomId::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
25520            AtomId::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
25521            AtomId::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
25522            AtomId::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
25523            AtomId::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
25524            AtomId::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
25525            AtomId::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
25526            AtomId::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
25527            AtomId::AtomSlowIo => "ATOM_SLOW_IO",
25528            AtomId::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
25529            AtomId::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
25530            AtomId::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
25531            AtomId::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
25532            AtomId::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
25533            AtomId::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
25534            AtomId::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
25535            AtomId::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
25536            AtomId::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
25537            AtomId::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
25538            AtomId::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
25539            AtomId::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
25540            AtomId::AtomDocsUiFileOpCopyMoveModeReported => "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED",
25541            AtomId::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
25542            AtomId::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
25543            AtomId::AtomDocsUiInvalidScopedAccessRequest => "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST",
25544            AtomId::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
25545            AtomId::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
25546            AtomId::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
25547            AtomId::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
25548            AtomId::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
25549            AtomId::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
25550            AtomId::AtomAppCompacted => "ATOM_APP_COMPACTED",
25551            AtomId::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
25552            AtomId::AtomDocsUiPickerLaunchedFromReported => "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED",
25553            AtomId::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
25554            AtomId::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
25555            AtomId::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
25556            AtomId::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
25557            AtomId::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
25558            AtomId::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
25559            AtomId::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
25560            AtomId::AtomBluetoothLinkLayerConnectionEvent => "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT",
25561            AtomId::AtomBluetoothAclConnectionStateChanged => "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED",
25562            AtomId::AtomBluetoothScoConnectionStateChanged => "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED",
25563            AtomId::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
25564            AtomId::AtomAppOptimizedAfterDowngraded => "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED",
25565            AtomId::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
25566            AtomId::AtomGnssNfwNotificationReported => "ATOM_GNSS_NFW_NOTIFICATION_REPORTED",
25567            AtomId::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
25568            AtomId::AtomUsbPortOverheatEventReported => "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED",
25569            AtomId::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
25570            AtomId::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
25571            AtomId::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
25572            AtomId::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
25573            AtomId::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
25574            AtomId::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
25575            AtomId::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
25576            AtomId::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
25577            AtomId::AtomBroadcastDispatchLatencyReported => "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED",
25578            AtomId::AtomAttentionManagerServiceResultReported => "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED",
25579            AtomId::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
25580            AtomId::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
25581            AtomId::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
25582            AtomId::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
25583            AtomId::AtomBiometricSystemHealthIssueDetected => "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED",
25584            AtomId::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
25585            AtomId::AtomScheduledJobConstraintChanged => "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED",
25586            AtomId::AtomBluetoothActiveDeviceChanged => "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED",
25587            AtomId::AtomBluetoothA2dpPlaybackStateChanged => "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED",
25588            AtomId::AtomBluetoothA2dpCodecConfigChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED",
25589            AtomId::AtomBluetoothA2dpCodecCapabilityChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED",
25590            AtomId::AtomBluetoothA2dpAudioUnderrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED",
25591            AtomId::AtomBluetoothA2dpAudioOverrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED",
25592            AtomId::AtomBluetoothDeviceRssiReported => "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED",
25593            AtomId::AtomBluetoothDeviceFailedContactCounterReported => "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED",
25594            AtomId::AtomBluetoothDeviceTxPowerLevelReported => "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED",
25595            AtomId::AtomBluetoothHciTimeoutReported => "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED",
25596            AtomId::AtomBluetoothQualityReportReported => "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED",
25597            AtomId::AtomBluetoothDeviceInfoReported => "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED",
25598            AtomId::AtomBluetoothRemoteVersionInfoReported => "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED",
25599            AtomId::AtomBluetoothSdpAttributeReported => "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED",
25600            AtomId::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
25601            AtomId::AtomBluetoothClassicPairingEventReported => "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED",
25602            AtomId::AtomBluetoothSmpPairingEventReported => "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED",
25603            AtomId::AtomScreenTimeoutExtensionReported => "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED",
25604            AtomId::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
25605            AtomId::AtomPermissionGrantRequestResultReported => "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED",
25606            AtomId::AtomBluetoothSocketConnectionStateChanged => "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED",
25607            AtomId::AtomDeviceIdentifierAccessDenied => "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED",
25608            AtomId::AtomBubbleDeveloperErrorReported => "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED",
25609            AtomId::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
25610            AtomId::AtomAssistGestureFeedbackReported => "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED",
25611            AtomId::AtomAssistGestureProgressReported => "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED",
25612            AtomId::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
25613            AtomId::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
25614            AtomId::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
25615            AtomId::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
25616            AtomId::AtomAppInstallOnExternalStorageReported => "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED",
25617            AtomId::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
25618            AtomId::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
25619            AtomId::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
25620            AtomId::AtomSystemServerWatchdogOccurred => "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED",
25621            AtomId::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
25622            AtomId::AtomBluetoothClassOfDeviceReported => "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED",
25623            AtomId::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
25624            AtomId::AtomThermalThrottlingSeverityStateChanged => "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED",
25625            AtomId::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
25626            AtomId::AtomMediametricsAudiopolicyReported => "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED",
25627            AtomId::AtomMediametricsAudiorecordReported => "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED",
25628            AtomId::AtomMediametricsAudiothreadReported => "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED",
25629            AtomId::AtomMediametricsAudiotrackReported => "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED",
25630            AtomId::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
25631            AtomId::AtomMediametricsDrmWidevineReported => "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED",
25632            AtomId::AtomMediametricsExtractorReported => "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED",
25633            AtomId::AtomMediametricsMediadrmReported => "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED",
25634            AtomId::AtomMediametricsNuplayerReported => "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED",
25635            AtomId::AtomMediametricsRecorderReported => "ATOM_MEDIAMETRICS_RECORDER_REPORTED",
25636            AtomId::AtomMediametricsDrmmanagerReported => "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED",
25637            AtomId::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
25638            AtomId::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
25639            AtomId::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
25640            AtomId::AtomContentCaptureCallerMismatchReported => "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED",
25641            AtomId::AtomContentCaptureServiceEvents => "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS",
25642            AtomId::AtomContentCaptureSessionEvents => "ATOM_CONTENT_CAPTURE_SESSION_EVENTS",
25643            AtomId::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
25644            AtomId::AtomLocationManagerApiUsageReported => "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED",
25645            AtomId::AtomReviewPermissionsFragmentResultReported => "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED",
25646            AtomId::AtomRuntimePermissionsUpgradeResult => "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT",
25647            AtomId::AtomGrantPermissionsActivityButtonActions => "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS",
25648            AtomId::AtomLocationAccessCheckNotificationAction => "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION",
25649            AtomId::AtomAppPermissionFragmentActionReported => "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED",
25650            AtomId::AtomAppPermissionFragmentViewed => "ATOM_APP_PERMISSION_FRAGMENT_VIEWED",
25651            AtomId::AtomAppPermissionsFragmentViewed => "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED",
25652            AtomId::AtomPermissionAppsFragmentViewed => "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED",
25653            AtomId::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
25654            AtomId::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
25655            AtomId::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
25656            AtomId::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
25657            AtomId::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
25658            AtomId::AtomBackGestureReportedReported => "ATOM_BACK_GESTURE_REPORTED_REPORTED",
25659            AtomId::AtomUpdateEngineUpdateAttemptReported => "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED",
25660            AtomId::AtomUpdateEngineSuccessfulUpdateReported => "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED",
25661            AtomId::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
25662            AtomId::AtomAppCompatibilityChangeReported => "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED",
25663            AtomId::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
25664            AtomId::AtomVmsClientConnectionStateChanged => "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED",
25665            AtomId::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
25666            AtomId::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
25667            AtomId::AtomMediaProviderPermissionRequested => "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED",
25668            AtomId::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
25669            AtomId::AtomMediaProviderIdleMaintenanceFinished => "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED",
25670            AtomId::AtomRebootEscrowRecoveryReported => "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED",
25671            AtomId::AtomBootTimeEventDurationReported => "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED",
25672            AtomId::AtomBootTimeEventElapsedTimeReported => "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED",
25673            AtomId::AtomBootTimeEventUtcTimeReported => "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED",
25674            AtomId::AtomBootTimeEventErrorCodeReported => "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED",
25675            AtomId::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
25676            AtomId::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
25677            AtomId::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
25678            AtomId::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
25679            AtomId::AtomIntegrityCheckResultReported => "ATOM_INTEGRITY_CHECK_RESULT_REPORTED",
25680            AtomId::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
25681            AtomId::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
25682            AtomId::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
25683            AtomId::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
25684            AtomId::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
25685            AtomId::AtomWifiConnectionResultReported => "ATOM_WIFI_CONNECTION_RESULT_REPORTED",
25686            AtomId::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
25687            AtomId::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
25688            AtomId::AtomForegroundServiceAppOpSessionEnded => "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED",
25689            AtomId::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
25690            AtomId::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
25691            AtomId::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
25692            AtomId::AtomRankingSelected => "ATOM_RANKING_SELECTED",
25693            AtomId::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
25694            AtomId::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
25695            AtomId::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
25696            AtomId::AtomUserLifecycleJourneyReported => "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED",
25697            AtomId::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
25698            AtomId::AtomAccessibilityShortcutReported => "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED",
25699            AtomId::AtomAccessibilityServiceReported => "ATOM_ACCESSIBILITY_SERVICE_REPORTED",
25700            AtomId::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
25701            AtomId::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
25702            AtomId::AtomAutoRevokeNotificationClicked => "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED",
25703            AtomId::AtomAutoRevokeFragmentAppViewed => "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED",
25704            AtomId::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
25705            AtomId::AtomAppPermissionGroupsFragmentAutoRevokeAction => "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION",
25706            AtomId::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
25707            AtomId::AtomAudioPowerUsageDataReported => "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED",
25708            AtomId::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
25709            AtomId::AtomMediaoutputOpSwitchReported => "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED",
25710            AtomId::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
25711            AtomId::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
25712            AtomId::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
25713            AtomId::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
25714            AtomId::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
25715            AtomId::AtomCarUserHalModifyUserRequestReported => "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED",
25716            AtomId::AtomCarUserHalModifyUserResponseReported => "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED",
25717            AtomId::AtomCarUserHalPostSwitchResponseReported => "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED",
25718            AtomId::AtomCarUserHalInitialUserInfoRequestReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED",
25719            AtomId::AtomCarUserHalInitialUserInfoResponseReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED",
25720            AtomId::AtomCarUserHalUserAssociationRequestReported => "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED",
25721            AtomId::AtomCarUserHalSetUserAssociationResponseReported => "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED",
25722            AtomId::AtomNetworkIpProvisioningReported => "ATOM_NETWORK_IP_PROVISIONING_REPORTED",
25723            AtomId::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
25724            AtomId::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
25725            AtomId::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
25726            AtomId::AtomMediametricsAudiorecorddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED",
25727            AtomId::AtomMediametricsAudiothreaddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED",
25728            AtomId::AtomMediametricsAudiotrackdeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED",
25729            AtomId::AtomMediametricsAudiodeviceconnectionReported => "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED",
25730            AtomId::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
25731            AtomId::AtomBlobLeased => "ATOM_BLOB_LEASED",
25732            AtomId::AtomBlobOpened => "ATOM_BLOB_OPENED",
25733            AtomId::AtomContactsProviderStatusReported => "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED",
25734            AtomId::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
25735            AtomId::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
25736            AtomId::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
25737            AtomId::AtomUiInteractionFrameInfoReported => "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED",
25738            AtomId::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
25739            AtomId::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
25740            AtomId::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
25741            AtomId::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
25742            AtomId::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
25743            AtomId::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
25744            AtomId::AtomModemRestart => "ATOM_MODEM_RESTART",
25745            AtomId::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
25746            AtomId::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
25747            AtomId::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
25748            AtomId::AtomMediametricsMediaparserReported => "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED",
25749            AtomId::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
25750            AtomId::AtomTextClassifierApiUsageReported => "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED",
25751            AtomId::AtomCarWatchdogKillStatsReported => "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED",
25752            AtomId::AtomMediametricsPlaybackReported => "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED",
25753            AtomId::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
25754            AtomId::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
25755            AtomId::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
25756            AtomId::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
25757            AtomId::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
25758            AtomId::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
25759            AtomId::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
25760            AtomId::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
25761            AtomId::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
25762            AtomId::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
25763            AtomId::AtomImsServiceEntitlementUpdated => "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED",
25764            AtomId::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
25765            AtomId::AtomSimSpecificSettingsRestored => "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED",
25766            AtomId::AtomTextClassifierDownloadReported => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED",
25767            AtomId::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
25768            AtomId::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
25769            AtomId::AtomBluetoothHalCrashReasonReported => "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED",
25770            AtomId::AtomRebootEscrowPreparationReported => "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED",
25771            AtomId::AtomRebootEscrowLskfCaptureReported => "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED",
25772            AtomId::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
25773            AtomId::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
25774            AtomId::AtomMediametricsAaudiostreamReported => "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED",
25775            AtomId::AtomMediaTranscodingSessionEnded => "ATOM_MEDIA_TRANSCODING_SESSION_ENDED",
25776            AtomId::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
25777            AtomId::AtomMagnificationModeWithImeOnReported => "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED",
25778            AtomId::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
25779            AtomId::AtomAppSearchPutDocumentStatsReported => "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED",
25780            AtomId::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
25781            AtomId::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
25782            AtomId::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
25783            AtomId::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
25784            AtomId::AtomAuthPromptAuthenticateInvoked => "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED",
25785            AtomId::AtomAuthManagerCanAuthenticateInvoked => "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED",
25786            AtomId::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
25787            AtomId::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
25788            AtomId::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
25789            AtomId::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
25790            AtomId::AtomLocationTimeZoneProviderStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED",
25791            AtomId::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
25792            AtomId::AtomTimeoutAutoExtendedReported => "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED",
25793            AtomId::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
25794            AtomId::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
25795            AtomId::AtomCarWatchdogIoOveruseStatsReported => "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED",
25796            AtomId::AtomUserLevelHibernationStateChanged => "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED",
25797            AtomId::AtomAppSearchInitializeStatsReported => "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED",
25798            AtomId::AtomAppSearchQueryStatsReported => "ATOM_APP_SEARCH_QUERY_STATS_REPORTED",
25799            AtomId::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
25800            AtomId::AtomNetworkIpReachabilityMonitorReported => "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED",
25801            AtomId::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
25802            AtomId::AtomAnrOccurredProcessingStarted => "ATOM_ANR_OCCURRED_PROCESSING_STARTED",
25803            AtomId::AtomAppSearchRemoveStatsReported => "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED",
25804            AtomId::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
25805            AtomId::AtomPermissionUsageFragmentInteraction => "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION",
25806            AtomId::AtomPermissionDetailsInteraction => "ATOM_PERMISSION_DETAILS_INTERACTION",
25807            AtomId::AtomPrivacySensorToggleInteraction => "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION",
25808            AtomId::AtomPrivacyToggleDialogInteraction => "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION",
25809            AtomId::AtomAppSearchOptimizeStatsReported => "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED",
25810            AtomId::AtomNonA11yToolServiceWarningReport => "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT",
25811            AtomId::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
25812            AtomId::AtomSizeCompatRestartButtonEventReported => "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED",
25813            AtomId::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
25814            AtomId::AtomNetworkDnsHandshakeReported => "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED",
25815            AtomId::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
25816            AtomId::AtomBluetoothLeBatchScanReportDelay => "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY",
25817            AtomId::AtomAccessibilityFloatingMenuUiChanged => "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED",
25818            AtomId::AtomNeuralnetworksCompilationCompleted => "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED",
25819            AtomId::AtomNeuralnetworksExecutionCompleted => "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED",
25820            AtomId::AtomNeuralnetworksCompilationFailed => "ATOM_NEURALNETWORKS_COMPILATION_FAILED",
25821            AtomId::AtomNeuralnetworksExecutionFailed => "ATOM_NEURALNETWORKS_EXECUTION_FAILED",
25822            AtomId::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
25823            AtomId::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
25824            AtomId::AtomContextHubLoadedNanoappSnapshotReported => "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED",
25825            AtomId::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
25826            AtomId::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
25827            AtomId::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
25828            AtomId::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
25829            AtomId::AtomUwbRangingMeasurementReceived => "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED",
25830            AtomId::AtomTextClassifierDownloadWorkScheduled => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED",
25831            AtomId::AtomTextClassifierDownloadWorkCompleted => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED",
25832            AtomId::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
25833            AtomId::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
25834            AtomId::AtomNearbyDeviceScanStateChanged => "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED",
25835            AtomId::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
25836            AtomId::AtomMediametricsAudiotrackstatusReported => "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED",
25837            AtomId::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
25838            AtomId::AtomLocationTimeZoneProviderControllerStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED",
25839            AtomId::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
25840            AtomId::AtomDisplayHbmBrightnessChanged => "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED",
25841            AtomId::AtomPersistentUriPermissionsFlushed => "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED",
25842            AtomId::AtomEarlyBootCompOsArtifactsCheckReported => "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED",
25843            AtomId::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
25844            AtomId::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
25845            AtomId::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
25846            AtomId::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
25847            AtomId::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
25848            AtomId::AtomMediametricsAudiorecordstatusReported => "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED",
25849            AtomId::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
25850            AtomId::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
25851            AtomId::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
25852            AtomId::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
25853            AtomId::AtomHotwordDetectorCreateRequested => "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED",
25854            AtomId::AtomHotwordDetectionServiceInitResultReported => "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED",
25855            AtomId::AtomHotwordDetectionServiceRestarted => "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED",
25856            AtomId::AtomHotwordDetectorKeyphraseTriggered => "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED",
25857            AtomId::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
25858            AtomId::AtomBootCompletedBroadcastCompletionLatencyReported => "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED",
25859            AtomId::AtomContactsIndexerUpdateStatsReported => "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED",
25860            AtomId::AtomAppBackgroundRestrictionsInfo => "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO",
25861            AtomId::AtomMmsSmsProviderGetThreadIdFailed => "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED",
25862            AtomId::AtomMmsSmsDatabaseHelperOnUpgradeFailed => "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED",
25863            AtomId::AtomPermissionReminderNotificationInteracted => "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED",
25864            AtomId::AtomRecentPermissionDecisionsInteracted => "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED",
25865            AtomId::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
25866            AtomId::AtomLeAudioConnectionSessionReported => "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED",
25867            AtomId::AtomLeAudioBroadcastSessionReported => "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED",
25868            AtomId::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
25869            AtomId::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
25870            AtomId::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
25871            AtomId::AtomMagnificationTripleTapAndHoldActivatedSessionReported => "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED",
25872            AtomId::AtomMagnificationFollowTypingFocusActivatedSessionReported => "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED",
25873            AtomId::AtomAccessibilityTextReadingOptionsChanged => "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED",
25874            AtomId::AtomWifiSetupFailureCrashReported => "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED",
25875            AtomId::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
25876            AtomId::AtomIsolatedCompilationScheduled => "ATOM_ISOLATED_COMPILATION_SCHEDULED",
25877            AtomId::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
25878            AtomId::AtomOnsOpportunisticEsimProvisioningComplete => "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE",
25879            AtomId::AtomSystemServerPreWatchdogOccurred => "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED",
25880            AtomId::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
25881            AtomId::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
25882            AtomId::AtomRemoteKeyProvisioningAttempt => "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT",
25883            AtomId::AtomRemoteKeyProvisioningNetworkInfo => "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO",
25884            AtomId::AtomRemoteKeyProvisioningTiming => "ATOM_REMOTE_KEY_PROVISIONING_TIMING",
25885            AtomId::AtomMediaoutputOpInteractionReport => "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT",
25886            AtomId::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
25887            AtomId::AtomAutofillPresentationEventReported => "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED",
25888            AtomId::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
25889            AtomId::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
25890            AtomId::AtomSafetyCenterSystemEventReported => "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED",
25891            AtomId::AtomSafetyCenterInteractionReported => "ATOM_SAFETY_CENTER_INTERACTION_REPORTED",
25892            AtomId::AtomSettingsProviderSettingChanged => "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED",
25893            AtomId::AtomBroadcastDeliveryEventReported => "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED",
25894            AtomId::AtomServiceRequestEventReported => "ATOM_SERVICE_REQUEST_EVENT_REPORTED",
25895            AtomId::AtomProviderAcquisitionEventReported => "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED",
25896            AtomId::AtomBluetoothDeviceNameReported => "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED",
25897            AtomId::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
25898            AtomId::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
25899            AtomId::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
25900            AtomId::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
25901            AtomId::AtomPrivacySignalNotificationInteraction => "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION",
25902            AtomId::AtomPrivacySignalIssueCardInteraction => "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION",
25903            AtomId::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
25904            AtomId::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
25905            AtomId::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
25906            AtomId::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
25907            AtomId::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
25908            AtomId::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
25909            AtomId::AtomNetworkDnsServerSupportReported => "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED",
25910            AtomId::AtomVmBooted => "ATOM_VM_BOOTED",
25911            AtomId::AtomVmExited => "ATOM_VM_EXITED",
25912            AtomId::AtomAmbientBrightnessStatsReported => "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED",
25913            AtomId::AtomMediametricsSpatializercapabilitiesReported => "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED",
25914            AtomId::AtomMediametricsSpatializerdeviceenabledReported => "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED",
25915            AtomId::AtomMediametricsHeadtrackerdeviceenabledReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED",
25916            AtomId::AtomMediametricsHeadtrackerdevicesupportedReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED",
25917            AtomId::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
25918            AtomId::AtomDeviceWideJobConstraintChanged => "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED",
25919            AtomId::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
25920            AtomId::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
25921            AtomId::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
25922            AtomId::AtomSystemDefaultNetworkChanged => "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED",
25923            AtomId::AtomIwlanSetupDataCallResultReported => "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED",
25924            AtomId::AtomIwlanPdnDisconnectedReasonReported => "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED",
25925            AtomId::AtomAirplaneModeSessionReported => "ATOM_AIRPLANE_MODE_SESSION_REPORTED",
25926            AtomId::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
25927            AtomId::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
25928            AtomId::AtomPackageInstallationSessionReported => "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED",
25929            AtomId::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
25930            AtomId::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
25931            AtomId::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
25932            AtomId::AtomBluetoothDisconnectionReasonReported => "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED",
25933            AtomId::AtomBluetoothLocalVersionsReported => "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED",
25934            AtomId::AtomBluetoothRemoteSupportedFeaturesReported => "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED",
25935            AtomId::AtomBluetoothLocalSupportedFeaturesReported => "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED",
25936            AtomId::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
25937            AtomId::AtomBrightnessConfigurationUpdated => "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED",
25938            AtomId::AtomWearMediaOutputSwitcherLaunched => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED",
25939            AtomId::AtomWearMediaOutputSwitcherFinished => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED",
25940            AtomId::AtomWearMediaOutputSwitcherConnectionReported => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED",
25941            AtomId::AtomWearMediaOutputSwitcherDeviceScanTriggered => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED",
25942            AtomId::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY",
25943            AtomId::AtomWearMediaOutputSwitcherConnectDeviceLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY",
25944            AtomId::AtomPackageManagerSnapshotReported => "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED",
25945            AtomId::AtomPackageManagerAppsFilterCacheBuildReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED",
25946            AtomId::AtomPackageManagerAppsFilterCacheUpdateReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED",
25947            AtomId::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
25948            AtomId::AtomWearMediaOutputSwitcherAllDevicesScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY",
25949            AtomId::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
25950            AtomId::AtomWsWatchFaceFavoriteActionReported => "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED",
25951            AtomId::AtomWsWatchFaceSetActionReported => "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED",
25952            AtomId::AtomPackageUninstallationReported => "ATOM_PACKAGE_UNINSTALLATION_REPORTED",
25953            AtomId::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
25954            AtomId::AtomGameModeConfigurationChanged => "ATOM_GAME_MODE_CONFIGURATION_CHANGED",
25955            AtomId::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
25956            AtomId::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
25957            AtomId::AtomNetworkSliceDailyDataUsageReported => "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED",
25958            AtomId::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
25959            AtomId::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
25960            AtomId::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
25961            AtomId::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
25962            AtomId::AtomGetTypeAccessedWithoutPermission => "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION",
25963            AtomId::AtomMobileBundledAppInfoGathered => "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED",
25964            AtomId::AtomWsWatchFaceComplicationSetChanged => "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED",
25965            AtomId::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
25966            AtomId::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
25967            AtomId::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
25968            AtomId::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
25969            AtomId::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
25970            AtomId::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
25971            AtomId::AtomPerformanceHintSessionReported => "ATOM_PERFORMANCE_HINT_SESSION_REPORTED",
25972            AtomId::AtomMediametricsMidiDeviceCloseReported => "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED",
25973            AtomId::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
25974            AtomId::AtomHotwordAudioEgressEventReported => "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED",
25975            AtomId::AtomLocationEnabledStateChanged => "ATOM_LOCATION_ENABLED_STATE_CHANGED",
25976            AtomId::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
25977            AtomId::AtomUsbComplianceWarningsReported => "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED",
25978            AtomId::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
25979            AtomId::AtomMediaProviderVolumeRecoveryReported => "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED",
25980            AtomId::AtomBiometricPropertiesCollected => "ATOM_BIOMETRIC_PROPERTIES_COLLECTED",
25981            AtomId::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
25982            AtomId::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
25983            AtomId::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
25984            AtomId::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
25985            AtomId::AtomDeviceLogAccessEventReported => "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED",
25986            AtomId::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
25987            AtomId::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
25988            AtomId::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
25989            AtomId::AtomNetworkValidationFailureStatsDailyReported => "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED",
25990            AtomId::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
25991            AtomId::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
25992            AtomId::AtomWsNotificationBridgemodeUpdated => "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED",
25993            AtomId::AtomWsNotificationDismissalActioned => "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED",
25994            AtomId::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
25995            AtomId::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
25996            AtomId::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
25997            AtomId::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
25998            AtomId::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
25999            AtomId::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
26000            AtomId::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
26001            AtomId::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
26002            AtomId::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
26003            AtomId::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
26004            AtomId::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
26005            AtomId::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
26006            AtomId::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
26007            AtomId::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
26008            AtomId::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
26009            AtomId::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
26010            AtomId::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
26011            AtomId::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
26012            AtomId::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
26013            AtomId::AtomDiskSpace => "ATOM_DISK_SPACE",
26014            AtomId::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
26015            AtomId::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
26016            AtomId::AtomTemperature => "ATOM_TEMPERATURE",
26017            AtomId::AtomBinderCalls => "ATOM_BINDER_CALLS",
26018            AtomId::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
26019            AtomId::AtomLooperStats => "ATOM_LOOPER_STATS",
26020            AtomId::AtomDiskStats => "ATOM_DISK_STATS",
26021            AtomId::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
26022            AtomId::AtomAppSize => "ATOM_APP_SIZE",
26023            AtomId::AtomCategorySize => "ATOM_CATEGORY_SIZE",
26024            AtomId::AtomProcStats => "ATOM_PROC_STATS",
26025            AtomId::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
26026            AtomId::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
26027            AtomId::AtomDiskIo => "ATOM_DISK_IO",
26028            AtomId::AtomPowerProfile => "ATOM_POWER_PROFILE",
26029            AtomId::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
26030            AtomId::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
26031            AtomId::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
26032            AtomId::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
26033            AtomId::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
26034            AtomId::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
26035            AtomId::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
26036            AtomId::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
26037            AtomId::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
26038            AtomId::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
26039            AtomId::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
26040            AtomId::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
26041            AtomId::AtomRoleHolder => "ATOM_ROLE_HOLDER",
26042            AtomId::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
26043            AtomId::AtomTrainInfo => "ATOM_TRAIN_INFO",
26044            AtomId::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
26045            AtomId::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
26046            AtomId::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
26047            AtomId::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
26048            AtomId::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
26049            AtomId::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
26050            AtomId::AtomFaceSettings => "ATOM_FACE_SETTINGS",
26051            AtomId::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
26052            AtomId::AtomAppOps => "ATOM_APP_OPS",
26053            AtomId::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
26054            AtomId::AtomSurfaceflingerStatsGlobalInfo => "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO",
26055            AtomId::AtomSurfaceflingerStatsLayerInfo => "ATOM_SURFACEFLINGER_STATS_LAYER_INFO",
26056            AtomId::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
26057            AtomId::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
26058            AtomId::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
26059            AtomId::AtomDangerousPermissionStateSampled => "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED",
26060            AtomId::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
26061            AtomId::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
26062            AtomId::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
26063            AtomId::AtomPackageNotificationPreferences => "ATOM_PACKAGE_NOTIFICATION_PREFERENCES",
26064            AtomId::AtomPackageNotificationChannelPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES",
26065            AtomId::AtomPackageNotificationChannelGroupPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES",
26066            AtomId::AtomGnssStats => "ATOM_GNSS_STATS",
26067            AtomId::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
26068            AtomId::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
26069            AtomId::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
26070            AtomId::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
26071            AtomId::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
26072            AtomId::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
26073            AtomId::AtomBlobInfo => "ATOM_BLOB_INFO",
26074            AtomId::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
26075            AtomId::AtomBytesTransferByTagAndMetered => "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED",
26076            AtomId::AtomDndModeRule => "ATOM_DND_MODE_RULE",
26077            AtomId::AtomGeneralExternalStorageAccessStats => "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS",
26078            AtomId::AtomIncomingSms => "ATOM_INCOMING_SMS",
26079            AtomId::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
26080            AtomId::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
26081            AtomId::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
26082            AtomId::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
26083            AtomId::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
26084            AtomId::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
26085            AtomId::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
26086            AtomId::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
26087            AtomId::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
26088            AtomId::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
26089            AtomId::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
26090            AtomId::AtomCpuCyclesPerThreadGroupCluster => "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER",
26091            AtomId::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
26092            AtomId::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
26093            AtomId::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
26094            AtomId::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
26095            AtomId::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
26096            AtomId::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
26097            AtomId::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
26098            AtomId::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
26099            AtomId::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
26100            AtomId::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
26101            AtomId::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
26102            AtomId::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
26103            AtomId::AtomBatteryUsageStatsBeforeReset => "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET",
26104            AtomId::AtomBatteryUsageStatsSinceReset => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET",
26105            AtomId::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL",
26106            AtomId::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
26107            AtomId::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
26108            AtomId::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
26109            AtomId::AtomVmstat => "ATOM_VMSTAT",
26110            AtomId::AtomKeystore2KeyCreationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO",
26111            AtomId::AtomKeystore2KeyCreationWithAuthInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO",
26112            AtomId::AtomKeystore2KeyCreationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO",
26113            AtomId::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
26114            AtomId::AtomKeystore2KeyOperationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO",
26115            AtomId::AtomKeystore2KeyOperationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO",
26116            AtomId::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
26117            AtomId::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
26118            AtomId::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
26119            AtomId::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
26120            AtomId::AtomAccessibilityFloatingMenuStats => "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS",
26121            AtomId::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
26122            AtomId::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
26123            AtomId::AtomCarWatchdogSystemIoUsageSummary => "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY",
26124            AtomId::AtomCarWatchdogUidIoUsageSummary => "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY",
26125            AtomId::AtomImsRegistrationFeatureTagStats => "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS",
26126            AtomId::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
26127            AtomId::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
26128            AtomId::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
26129            AtomId::AtomSipTransportFeatureTagStats => "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS",
26130            AtomId::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
26131            AtomId::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
26132            AtomId::AtomImsDedicatedBearerListenerEvent => "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT",
26133            AtomId::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
26134            AtomId::AtomImsRegistrationServiceDescStats => "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS",
26135            AtomId::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
26136            AtomId::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
26137            AtomId::AtomGbaEvent => "ATOM_GBA_EVENT",
26138            AtomId::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
26139            AtomId::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
26140            AtomId::AtomPersistentUriPermissionsAmountPerPackage => "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE",
26141            AtomId::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
26142            AtomId::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
26143            AtomId::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
26144            AtomId::AtomUserInfo => "ATOM_USER_INFO",
26145            AtomId::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
26146            AtomId::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
26147            AtomId::AtomRemoteKeyProvisioningErrorCounts => "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS",
26148            AtomId::AtomSafetyState => "ATOM_SAFETY_STATE",
26149            AtomId::AtomIncomingMms => "ATOM_INCOMING_MMS",
26150            AtomId::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
26151            AtomId::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
26152            AtomId::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
26153            AtomId::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
26154            AtomId::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
26155            AtomId::AtomNetworkSelectionRematchReasonsInfo => "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO",
26156            AtomId::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
26157            AtomId::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
26158            AtomId::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
26159            AtomId::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
26160            AtomId::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
26161            AtomId::AtomWsActiveWatchFaceComplicationSetSnapshot => "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT",
26162            AtomId::AtomProcessState => "ATOM_PROCESS_STATE",
26163            AtomId::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
26164            AtomId::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
26165            AtomId::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
26166            AtomId::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
26167            AtomId::AtomWsFavouriteWatchFaceListSnapshot => "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT",
26168            AtomId::AtomAccessibilityCheckResultReported => "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED",
26169            AtomId::AtomAdaptiveAuthUnlockAfterLockReported => "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED",
26170            AtomId::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
26171            AtomId::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
26172            AtomId::AtomThermalHeadroomThresholdsCalled => "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED",
26173            AtomId::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
26174            AtomId::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
26175            AtomId::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
26176            AtomId::AtomJsscriptengineLatencyReported => "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED",
26177            AtomId::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
26178            AtomId::AtomAdServicesMesurementReportsUploaded => "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED",
26179            AtomId::AtomMobileDataDownloadFileGroupStatusReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED",
26180            AtomId::AtomMobileDataDownloadDownloadResultReported => "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED",
26181            AtomId::AtomAdServicesSettingsUsageReported => "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED",
26182            AtomId::AtomBackgroundFetchProcessReported => "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED",
26183            AtomId::AtomUpdateCustomAudienceProcessReported => "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED",
26184            AtomId::AtomRunAdBiddingProcessReported => "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED",
26185            AtomId::AtomRunAdScoringProcessReported => "ATOM_RUN_AD_SCORING_PROCESS_REPORTED",
26186            AtomId::AtomRunAdSelectionProcessReported => "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED",
26187            AtomId::AtomRunAdBiddingPerCaProcessReported => "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED",
26188            AtomId::AtomMobileDataDownloadFileGroupStorageStatsReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED",
26189            AtomId::AtomAdServicesMeasurementRegistrations => "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS",
26190            AtomId::AtomAdServicesGetTopicsReported => "ATOM_AD_SERVICES_GET_TOPICS_REPORTED",
26191            AtomId::AtomAdServicesEpochComputationGetTopTopicsReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED",
26192            AtomId::AtomAdServicesEpochComputationClassifierReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
26193            AtomId::AtomAdServicesBackCompatGetTopicsReported => "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED",
26194            AtomId::AtomAdServicesBackCompatEpochComputationClassifierReported => "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
26195            AtomId::AtomAdServicesMeasurementDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS",
26196            AtomId::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
26197            AtomId::AtomAdServicesBackgroundJobsExecutionReported => "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED",
26198            AtomId::AtomAdServicesMeasurementDelayedSourceRegistration => "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION",
26199            AtomId::AtomAdServicesMeasurementAttribution => "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION",
26200            AtomId::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
26201            AtomId::AtomAdServicesMeasurementWipeout => "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT",
26202            AtomId::AtomAdServicesMeasurementAdIdMatchForDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS",
26203            AtomId::AtomAdServicesEnrollmentDataStored => "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED",
26204            AtomId::AtomAdServicesEnrollmentFileDownloaded => "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED",
26205            AtomId::AtomAdServicesEnrollmentMatched => "ATOM_AD_SERVICES_ENROLLMENT_MATCHED",
26206            AtomId::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
26207            AtomId::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
26208            AtomId::AtomAdServicesMeasurementClickVerification => "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION",
26209            AtomId::AtomAdServicesEncryptionKeyFetched => "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED",
26210            AtomId::AtomAdServicesEncryptionKeyDbTransactionEnded => "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED",
26211            AtomId::AtomDestinationRegisteredBeacons => "ATOM_DESTINATION_REGISTERED_BEACONS",
26212            AtomId::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
26213            AtomId::AtomInteractionReportingTableCleared => "ATOM_INTERACTION_REPORTING_TABLE_CLEARED",
26214            AtomId::AtomAppManifestConfigHelperCalled => "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED",
26215            AtomId::AtomAdFilteringProcessJoinCaReported => "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED",
26216            AtomId::AtomAdFilteringProcessAdSelectionReported => "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED",
26217            AtomId::AtomAdCounterHistogramUpdaterReported => "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED",
26218            AtomId::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
26219            AtomId::AtomKAnonImmediateSignJoinStatusReported => "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED",
26220            AtomId::AtomKAnonBackgroundJobStatusReported => "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED",
26221            AtomId::AtomKAnonInitializeStatusReported => "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED",
26222            AtomId::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
26223            AtomId::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
26224            AtomId::AtomKAnonKeyAttestationStatusReported => "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED",
26225            AtomId::AtomGetAdSelectionDataApiCalled => "ATOM_GET_AD_SELECTION_DATA_API_CALLED",
26226            AtomId::AtomGetAdSelectionDataBuyerInputGenerated => "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED",
26227            AtomId::AtomBackgroundJobSchedulingReported => "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED",
26228            AtomId::AtomTopicsEncryptionEpochComputationReported => "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED",
26229            AtomId::AtomTopicsEncryptionGetTopicsReported => "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED",
26230            AtomId::AtomAdservicesShellCommandCalled => "ATOM_ADSERVICES_SHELL_COMMAND_CALLED",
26231            AtomId::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
26232            AtomId::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
26233            AtomId::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
26234            AtomId::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
26235            AtomId::AtomPersistAdSelectionResultCalled => "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED",
26236            AtomId::AtomServerAuctionKeyFetchCalled => "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED",
26237            AtomId::AtomServerAuctionBackgroundKeyFetchEnabled => "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED",
26238            AtomId::AtomAdServicesMeasurementProcessOdpRegistration => "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION",
26239            AtomId::AtomAdServicesMeasurementNotifyRegistrationToOdp => "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP",
26240            AtomId::AtomSelectAdsFromOutcomesApiCalled => "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED",
26241            AtomId::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
26242            AtomId::AtomAdServicesEnrollmentTransactionStats => "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS",
26243            AtomId::AtomAdServicesCobaltLoggerEventReported => "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED",
26244            AtomId::AtomAdServicesCobaltPeriodicJobEventReported => "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED",
26245            AtomId::AtomUpdateSignalsProcessReported => "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED",
26246            AtomId::AtomTopicsScheduleEpochJobSettingReported => "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED",
26247            AtomId::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
26248            AtomId::AtomAiWallpapersTemplateSelected => "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED",
26249            AtomId::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
26250            AtomId::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
26251            AtomId::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
26252            AtomId::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
26253            AtomId::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
26254            AtomId::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
26255            AtomId::AtomAppSearchSetSchemaStatsReported => "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED",
26256            AtomId::AtomAppSearchSchemaMigrationStatsReported => "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED",
26257            AtomId::AtomAppSearchUsageSearchIntentStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED",
26258            AtomId::AtomAppSearchUsageSearchIntentRawQueryStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED",
26259            AtomId::AtomAppSearchAppsIndexerStatsReported => "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED",
26260            AtomId::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
26261            AtomId::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
26262            AtomId::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
26263            AtomId::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
26264            AtomId::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
26265            AtomId::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
26266            AtomId::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
26267            AtomId::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
26268            AtomId::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
26269            AtomId::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
26270            AtomId::AtomAutofillFillRequestReported => "ATOM_AUTOFILL_FILL_REQUEST_REPORTED",
26271            AtomId::AtomAutofillFillResponseReported => "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED",
26272            AtomId::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
26273            AtomId::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
26274            AtomId::AtomAutofillFieldClassificationEventReported => "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED",
26275            AtomId::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
26276            AtomId::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
26277            AtomId::AtomCarWakeupFromSuspendReported => "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED",
26278            AtomId::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
26279            AtomId::AtomBluetoothHashedDeviceNameReported => "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED",
26280            AtomId::AtomBluetoothL2capCocClientConnection => "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION",
26281            AtomId::AtomBluetoothL2capCocServerConnection => "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION",
26282            AtomId::AtomBluetoothLeSessionConnected => "ATOM_BLUETOOTH_LE_SESSION_CONNECTED",
26283            AtomId::AtomRestrictedBluetoothDeviceNameReported => "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED",
26284            AtomId::AtomBluetoothProfileConnectionAttempted => "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED",
26285            AtomId::AtomBluetoothContentProfileErrorReported => "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED",
26286            AtomId::AtomBluetoothRfcommConnectionAttempted => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED",
26287            AtomId::AtomRemoteDeviceInformationWithMetricId => "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID",
26288            AtomId::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
26289            AtomId::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
26290            AtomId::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
26291            AtomId::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
26292            AtomId::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
26293            AtomId::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
26294            AtomId::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
26295            AtomId::AtomBluetoothCrossLayerEventReported => "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED",
26296            AtomId::AtomBroadcastAudioSessionReported => "ATOM_BROADCAST_AUDIO_SESSION_REPORTED",
26297            AtomId::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
26298            AtomId::AtomBluetoothRfcommConnectionReportedAtClose => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE",
26299            AtomId::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
26300            AtomId::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
26301            AtomId::AtomCameraFeatureCombinationQueryEvent => "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT",
26302            AtomId::AtomCertificateTransparencyLogListStateChanged => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED",
26303            AtomId::AtomCertificateTransparencyLogListUpdateFailed => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED",
26304            AtomId::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
26305            AtomId::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
26306            AtomId::AtomTetheringActiveSessionsReported => "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED",
26307            AtomId::AtomNetworkStatsRecorderFileOperated => "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED",
26308            AtomId::AtomCoreNetworkingTerribleErrorOccurred => "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED",
26309            AtomId::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
26310            AtomId::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
26311            AtomId::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
26312            AtomId::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
26313            AtomId::AtomCpuPolicy => "ATOM_CPU_POLICY",
26314            AtomId::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
26315            AtomId::AtomCredentialManagerInitPhaseReported => "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED",
26316            AtomId::AtomCredentialManagerCandidatePhaseReported => "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED",
26317            AtomId::AtomCredentialManagerFinalPhaseReported => "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED",
26318            AtomId::AtomCredentialManagerTotalReported => "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED",
26319            AtomId::AtomCredentialManagerFinalnouidReported => "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED",
26320            AtomId::AtomCredentialManagerGetReported => "ATOM_CREDENTIAL_MANAGER_GET_REPORTED",
26321            AtomId::AtomCredentialManagerAuthClickReported => "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED",
26322            AtomId::AtomCredentialManagerApiv2Called => "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED",
26323            AtomId::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
26324            AtomId::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
26325            AtomId::AtomCronetEngineBuilderInitialized => "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED",
26326            AtomId::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
26327            AtomId::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
26328            AtomId::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
26329            AtomId::AtomDesktopModeSessionTaskUpdate => "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE",
26330            AtomId::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
26331            AtomId::AtomDeviceLockCheckInRequestReported => "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED",
26332            AtomId::AtomDeviceLockProvisioningCompleteReported => "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED",
26333            AtomId::AtomDeviceLockKioskAppRequestReported => "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED",
26334            AtomId::AtomDeviceLockCheckInRetryReported => "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED",
26335            AtomId::AtomDeviceLockProvisionFailureReported => "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED",
26336            AtomId::AtomDeviceLockLockUnlockDeviceFailureReported => "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED",
26337            AtomId::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
26338            AtomId::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
26339            AtomId::AtomDisplayModeDirectorVoteChanged => "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED",
26340            AtomId::AtomExternalDisplayStateChanged => "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED",
26341            AtomId::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
26342            AtomId::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
26343            AtomId::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
26344            AtomId::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
26345            AtomId::AtomExpressHistogramSampleReported => "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED",
26346            AtomId::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
26347            AtomId::AtomExpressUidHistogramSampleReported => "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED",
26348            AtomId::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
26349            AtomId::AtomFederatedComputeTrainingEventReported => "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED",
26350            AtomId::AtomExampleIteratorNextLatencyReported => "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED",
26351            AtomId::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
26352            AtomId::AtomBalAllowed => "ATOM_BAL_ALLOWED",
26353            AtomId::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
26354            AtomId::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
26355            AtomId::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
26356            AtomId::AtomStylusPredictionMetricsReported => "ATOM_STYLUS_PREDICTION_METRICS_REPORTED",
26357            AtomId::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
26358            AtomId::AtomMediaProjectionStateChanged => "ATOM_MEDIA_PROJECTION_STATE_CHANGED",
26359            AtomId::AtomMediaProjectionTargetChanged => "ATOM_MEDIA_PROJECTION_TARGET_CHANGED",
26360            AtomId::AtomExcessiveBinderProxyCountReported => "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED",
26361            AtomId::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
26362            AtomId::AtomMobileBytesTransferByProcState => "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE",
26363            AtomId::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
26364            AtomId::AtomSensitiveContentMediaProjectionSession => "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION",
26365            AtomId::AtomSensitiveNotificationAppProtectionSession => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION",
26366            AtomId::AtomSensitiveNotificationAppProtectionApplied => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED",
26367            AtomId::AtomSensitiveNotificationRedaction => "ATOM_SENSITIVE_NOTIFICATION_REDACTION",
26368            AtomId::AtomSensitiveContentAppProtection => "ATOM_SENSITIVE_CONTENT_APP_PROTECTION",
26369            AtomId::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
26370            AtomId::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
26371            AtomId::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
26372            AtomId::AtomPowerSaveTempAllowlistChanged => "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED",
26373            AtomId::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
26374            AtomId::AtomContentOrFileUriEventReported => "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED",
26375            AtomId::AtomApplicationGrammaticalInflectionChanged => "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED",
26376            AtomId::AtomSystemGrammaticalInflectionChanged => "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED",
26377            AtomId::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
26378            AtomId::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
26379            AtomId::AtomHdmiSoundbarModeStatusReported => "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED",
26380            AtomId::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
26381            AtomId::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
26382            AtomId::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
26383            AtomId::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
26384            AtomId::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
26385            AtomId::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
26386            AtomId::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
26387            AtomId::AtomHealthConnectExportImportStatsReported => "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED",
26388            AtomId::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
26389            AtomId::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
26390            AtomId::AtomHealthConnectAppOpenedReported => "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED",
26391            AtomId::AtomHotwordEgressSizeAtomReported => "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED",
26392            AtomId::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
26393            AtomId::AtomIkeLivenessCheckSessionValidated => "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED",
26394            AtomId::AtomNegotiatedSecurityAssociation => "ATOM_NEGOTIATED_SECURITY_ASSOCIATION",
26395            AtomId::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
26396            AtomId::AtomKeyboardSystemsEventReported => "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED",
26397            AtomId::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
26398            AtomId::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
26399            AtomId::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
26400            AtomId::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
26401            AtomId::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
26402            AtomId::AtomChreSignificantMotionStateChanged => "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED",
26403            AtomId::AtomPopulationDensityProviderLoadingReported => "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED",
26404            AtomId::AtomDensityBasedCoarseLocationsUsageReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED",
26405            AtomId::AtomDensityBasedCoarseLocationsProviderQueryReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED",
26406            AtomId::AtomMediaCodecReclaimRequestCompleted => "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED",
26407            AtomId::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
26408            AtomId::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
26409            AtomId::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
26410            AtomId::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
26411            AtomId::AtomMteState => "ATOM_MTE_STATE",
26412            AtomId::AtomMicroxrDeviceBootCompleteReported => "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED",
26413            AtomId::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
26414            AtomId::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
26415            AtomId::AtomNfcPollingLoopNotificationReported => "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED",
26416            AtomId::AtomNfcProprietaryCapabilitiesReported => "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED",
26417            AtomId::AtomOndevicepersonalizationApiCalled => "ATOM_ONDEVICEPERSONALIZATION_API_CALLED",
26418            AtomId::AtomComponentStateChangedReported => "ATOM_COMPONENT_STATE_CHANGED_REPORTED",
26419            AtomId::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
26420            AtomId::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
26421            AtomId::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
26422            AtomId::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
26423            AtomId::AtomPermissionRationaleDialogViewed => "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED",
26424            AtomId::AtomPermissionRationaleDialogActionReported => "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED",
26425            AtomId::AtomAppDataSharingUpdatesNotificationInteraction => "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION",
26426            AtomId::AtomAppDataSharingUpdatesFragmentViewed => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED",
26427            AtomId::AtomAppDataSharingUpdatesFragmentActionReported => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED",
26428            AtomId::AtomEnhancedConfirmationDialogResultReported => "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED",
26429            AtomId::AtomEnhancedConfirmationRestrictionCleared => "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED",
26430            AtomId::AtomPhotopickerSessionInfoReported => "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED",
26431            AtomId::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
26432            AtomId::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
26433            AtomId::AtomPhotopickerMediaItemStatusReported => "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED",
26434            AtomId::AtomPhotopickerPreviewInfoLogged => "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED",
26435            AtomId::AtomPhotopickerMenuInteractionLogged => "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED",
26436            AtomId::AtomPhotopickerBannerInteractionLogged => "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED",
26437            AtomId::AtomPhotopickerMediaLibraryInfoLogged => "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED",
26438            AtomId::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
26439            AtomId::AtomPhotopickerMediaGridSyncInfoReported => "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED",
26440            AtomId::AtomPhotopickerAlbumSyncInfoReported => "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED",
26441            AtomId::AtomPhotopickerSearchInfoReported => "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED",
26442            AtomId::AtomSearchDataExtractionDetailsReported => "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED",
26443            AtomId::AtomEmbeddedPhotopickerInfoReported => "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED",
26444            AtomId::AtomAtom9999 => "ATOM_ATOM_9999",
26445            AtomId::AtomAtom99999 => "ATOM_ATOM_99999",
26446            AtomId::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
26447            AtomId::AtomScreenTimeoutOverrideReported => "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED",
26448            AtomId::AtomScreenInteractiveSessionReported => "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED",
26449            AtomId::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
26450            AtomId::AtomMediaProviderDatabaseRollbackReported => "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED",
26451            AtomId::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
26452            AtomId::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
26453            AtomId::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
26454            AtomId::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
26455            AtomId::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
26456            AtomId::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
26457            AtomId::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
26458            AtomId::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
26459            AtomId::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
26460            AtomId::AtomSandboxActivityEventOccurred => "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED",
26461            AtomId::AtomSdkSandboxRestrictedAccessInSession => "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION",
26462            AtomId::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
26463            AtomId::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
26464            AtomId::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
26465            AtomId::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
26466            AtomId::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
26467            AtomId::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
26468            AtomId::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
26469            AtomId::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
26470            AtomId::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
26471            AtomId::AtomDisplaySwitchLatencyTracked => "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED",
26472            AtomId::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
26473            AtomId::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
26474            AtomId::AtomCommunalHubWidgetEventReported => "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED",
26475            AtomId::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
26476            AtomId::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
26477            AtomId::AtomCallStats => "ATOM_CALL_STATS",
26478            AtomId::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
26479            AtomId::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
26480            AtomId::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
26481            AtomId::AtomCellularRadioPowerStateChanged => "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED",
26482            AtomId::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
26483            AtomId::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
26484            AtomId::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
26485            AtomId::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
26486            AtomId::AtomIwlanUnderlyingNetworkValidationResultReported => "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED",
26487            AtomId::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
26488            AtomId::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
26489            AtomId::AtomQnsFallbackRestrictionChanged => "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED",
26490            AtomId::AtomQnsRatPreferenceMismatchInfo => "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO",
26491            AtomId::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
26492            AtomId::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
26493            AtomId::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
26494            AtomId::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
26495            AtomId::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
26496            AtomId::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
26497            AtomId::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
26498            AtomId::AtomSatelliteSosMessageRecommender => "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER",
26499            AtomId::AtomCarrierRoamingSatelliteSession => "ATOM_CARRIER_ROAMING_SATELLITE_SESSION",
26500            AtomId::AtomCarrierRoamingSatelliteControllerStats => "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS",
26501            AtomId::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
26502            AtomId::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
26503            AtomId::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
26504            AtomId::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
26505            AtomId::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
26506            AtomId::AtomThreadnetworkTelemetryDataReported => "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED",
26507            AtomId::AtomThreadnetworkTopoEntryRepeated => "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED",
26508            AtomId::AtomThreadnetworkDeviceInfoReported => "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED",
26509            AtomId::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
26510            AtomId::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
26511            AtomId::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
26512            AtomId::AtomTestUprobestatsAtomReported => "ATOM_TEST_UPROBESTATS_ATOM_REPORTED",
26513            AtomId::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
26514            AtomId::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
26515            AtomId::AtomSysproxyBluetoothBytesTransfer => "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER",
26516            AtomId::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
26517            AtomId::AtomWearCompanionConnectionState => "ATOM_WEAR_COMPANION_CONNECTION_STATE",
26518            AtomId::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
26519            AtomId::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
26520            AtomId::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
26521            AtomId::AtomWearMediaOutputSwitcherDeviceScanApiLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY",
26522            AtomId::AtomWearMediaOutputSwitcherSassDeviceUnavailable => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE",
26523            AtomId::AtomWearMediaOutputSwitcherFastpairApiTimeout => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT",
26524            AtomId::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
26525            AtomId::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
26526            AtomId::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
26527            AtomId::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
26528            AtomId::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
26529            AtomId::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
26530            AtomId::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
26531            AtomId::AtomTileRequested => "ATOM_TILE_REQUESTED",
26532            AtomId::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
26533            AtomId::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
26534            AtomId::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
26535            AtomId::AtomInflationFailed => "ATOM_INFLATION_FAILED",
26536            AtomId::AtomIgnoredInflationFailuresReported => "ATOM_IGNORED_INFLATION_FAILURES_REPORTED",
26537            AtomId::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
26538            AtomId::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
26539            AtomId::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
26540            AtomId::AtomWearTimeSyncAttemptCompleted => "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED",
26541            AtomId::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
26542            AtomId::AtomWearAdaptiveSuspendStatsReported => "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED",
26543            AtomId::AtomWearPowerAnomalyServiceOperationalStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED",
26544            AtomId::AtomWearPowerAnomalyServiceEventStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED",
26545            AtomId::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
26546            AtomId::AtomWsIncomingCallActionReported => "ATOM_WS_INCOMING_CALL_ACTION_REPORTED",
26547            AtomId::AtomWsCallDisconnectionReported => "ATOM_WS_CALL_DISCONNECTION_REPORTED",
26548            AtomId::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
26549            AtomId::AtomWsCallUserExperienceLatencyReported => "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED",
26550            AtomId::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
26551            AtomId::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
26552            AtomId::AtomWsWatchFaceRestrictedComplicationsImpacted => "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED",
26553            AtomId::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED",
26554            AtomId::AtomWsComplicationsImpactedNotificationEventReported => "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED",
26555            AtomId::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
26556            AtomId::AtomWsBugreportRequested => "ATOM_WS_BUGREPORT_REQUESTED",
26557            AtomId::AtomWsBugreportTriggered => "ATOM_WS_BUGREPORT_TRIGGERED",
26558            AtomId::AtomWsBugreportFinished => "ATOM_WS_BUGREPORT_FINISHED",
26559            AtomId::AtomWsBugreportResultReceived => "ATOM_WS_BUGREPORT_RESULT_RECEIVED",
26560            AtomId::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
26561            AtomId::AtomWsFavoriteWatchFaceSnapshot => "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT",
26562            AtomId::AtomWsPhotosWatchFaceFeatureSnapshot => "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT",
26563            AtomId::AtomWsWatchFaceCustomizationSnapshot => "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT",
26564            AtomId::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
26565            AtomId::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
26566            AtomId::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
26567            AtomId::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
26568            AtomId::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
26569            AtomId::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
26570            AtomId::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
26571            AtomId::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
26572            AtomId::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
26573            AtomId::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
26574            AtomId::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
26575            AtomId::AtomWifiAwareResourceUsingChanged => "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED",
26576            AtomId::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
26577            AtomId::AtomWifiLocalOnlyRequestReceived => "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED",
26578            AtomId::AtomWifiLocalOnlyRequestScanTriggered => "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED",
26579            AtomId::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
26580            AtomId::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
26581            AtomId::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
26582            AtomId::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
26583            AtomId::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
26584            AtomId::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
26585            AtomId::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
26586            AtomId::AtomScorerPredictionResultReported => "ATOM_SCORER_PREDICTION_RESULT_REPORTED",
26587            AtomId::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
26588            AtomId::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
26589            AtomId::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
26590            AtomId::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
26591            AtomId::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
26592        }
26593    }
26594}
26595// End of protos/perfetto/config/statsd/statsd_tracing_config.proto
26596
26597// Begin of protos/perfetto/common/sys_stats_counters.proto
26598
26599// When editing entries here remember also to update "sys_stats_counters.h" with
26600// the corresponding string definitions for the actual /proc files parser.
26601
26602/// Counter definitions for Linux's /proc/meminfo.
26603#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26604#[repr(i32)]
26605pub enum MeminfoCounters {
26606    MeminfoUnspecified = 0,
26607    MeminfoMemTotal = 1,
26608    MeminfoMemFree = 2,
26609    MeminfoMemAvailable = 3,
26610    MeminfoBuffers = 4,
26611    MeminfoCached = 5,
26612    MeminfoSwapCached = 6,
26613    MeminfoActive = 7,
26614    MeminfoInactive = 8,
26615    MeminfoActiveAnon = 9,
26616    MeminfoInactiveAnon = 10,
26617    MeminfoActiveFile = 11,
26618    MeminfoInactiveFile = 12,
26619    MeminfoUnevictable = 13,
26620    MeminfoMlocked = 14,
26621    MeminfoSwapTotal = 15,
26622    MeminfoSwapFree = 16,
26623    MeminfoDirty = 17,
26624    MeminfoWriteback = 18,
26625    MeminfoAnonPages = 19,
26626    MeminfoMapped = 20,
26627    MeminfoShmem = 21,
26628    MeminfoSlab = 22,
26629    MeminfoSlabReclaimable = 23,
26630    MeminfoSlabUnreclaimable = 24,
26631    MeminfoKernelStack = 25,
26632    MeminfoPageTables = 26,
26633    MeminfoCommitLimit = 27,
26634    MeminfoCommitedAs = 28,
26635    MeminfoVmallocTotal = 29,
26636    MeminfoVmallocUsed = 30,
26637    MeminfoVmallocChunk = 31,
26638    MeminfoCmaTotal = 32,
26639    MeminfoCmaFree = 33,
26640    MeminfoGpu = 34,
26641    MeminfoZram = 35,
26642    MeminfoMisc = 36,
26643    MeminfoIonHeap = 37,
26644    MeminfoIonHeapPool = 38,
26645}
26646impl MeminfoCounters {
26647    /// String value of the enum field names used in the ProtoBuf definition.
26648    ///
26649    /// The values are not transformed in any way and thus are considered stable
26650    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26651    pub fn as_str_name(&self) -> &'static str {
26652        match self {
26653            MeminfoCounters::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
26654            MeminfoCounters::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
26655            MeminfoCounters::MeminfoMemFree => "MEMINFO_MEM_FREE",
26656            MeminfoCounters::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
26657            MeminfoCounters::MeminfoBuffers => "MEMINFO_BUFFERS",
26658            MeminfoCounters::MeminfoCached => "MEMINFO_CACHED",
26659            MeminfoCounters::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
26660            MeminfoCounters::MeminfoActive => "MEMINFO_ACTIVE",
26661            MeminfoCounters::MeminfoInactive => "MEMINFO_INACTIVE",
26662            MeminfoCounters::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
26663            MeminfoCounters::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
26664            MeminfoCounters::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
26665            MeminfoCounters::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
26666            MeminfoCounters::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
26667            MeminfoCounters::MeminfoMlocked => "MEMINFO_MLOCKED",
26668            MeminfoCounters::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
26669            MeminfoCounters::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
26670            MeminfoCounters::MeminfoDirty => "MEMINFO_DIRTY",
26671            MeminfoCounters::MeminfoWriteback => "MEMINFO_WRITEBACK",
26672            MeminfoCounters::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
26673            MeminfoCounters::MeminfoMapped => "MEMINFO_MAPPED",
26674            MeminfoCounters::MeminfoShmem => "MEMINFO_SHMEM",
26675            MeminfoCounters::MeminfoSlab => "MEMINFO_SLAB",
26676            MeminfoCounters::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
26677            MeminfoCounters::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
26678            MeminfoCounters::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
26679            MeminfoCounters::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
26680            MeminfoCounters::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
26681            MeminfoCounters::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
26682            MeminfoCounters::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
26683            MeminfoCounters::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
26684            MeminfoCounters::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
26685            MeminfoCounters::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
26686            MeminfoCounters::MeminfoCmaFree => "MEMINFO_CMA_FREE",
26687            MeminfoCounters::MeminfoGpu => "MEMINFO_GPU",
26688            MeminfoCounters::MeminfoZram => "MEMINFO_ZRAM",
26689            MeminfoCounters::MeminfoMisc => "MEMINFO_MISC",
26690            MeminfoCounters::MeminfoIonHeap => "MEMINFO_ION_HEAP",
26691            MeminfoCounters::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
26692        }
26693    }
26694}
26695/// Counter definitions for Linux's /proc/vmstat.
26696#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26697#[repr(i32)]
26698pub enum VmstatCounters {
26699    VmstatUnspecified = 0,
26700    VmstatNrFreePages = 1,
26701    VmstatNrAllocBatch = 2,
26702    VmstatNrInactiveAnon = 3,
26703    VmstatNrActiveAnon = 4,
26704    VmstatNrInactiveFile = 5,
26705    VmstatNrActiveFile = 6,
26706    VmstatNrUnevictable = 7,
26707    VmstatNrMlock = 8,
26708    VmstatNrAnonPages = 9,
26709    VmstatNrMapped = 10,
26710    VmstatNrFilePages = 11,
26711    VmstatNrDirty = 12,
26712    VmstatNrWriteback = 13,
26713    VmstatNrSlabReclaimable = 14,
26714    VmstatNrSlabUnreclaimable = 15,
26715    VmstatNrPageTablePages = 16,
26716    VmstatNrKernelStack = 17,
26717    VmstatNrOverhead = 18,
26718    VmstatNrUnstable = 19,
26719    VmstatNrBounce = 20,
26720    VmstatNrVmscanWrite = 21,
26721    VmstatNrVmscanImmediateReclaim = 22,
26722    VmstatNrWritebackTemp = 23,
26723    VmstatNrIsolatedAnon = 24,
26724    VmstatNrIsolatedFile = 25,
26725    VmstatNrShmem = 26,
26726    VmstatNrDirtied = 27,
26727    VmstatNrWritten = 28,
26728    VmstatNrPagesScanned = 29,
26729    VmstatWorkingsetRefault = 30,
26730    VmstatWorkingsetActivate = 31,
26731    VmstatWorkingsetNodereclaim = 32,
26732    VmstatNrAnonTransparentHugepages = 33,
26733    VmstatNrFreeCma = 34,
26734    VmstatNrSwapcache = 35,
26735    VmstatNrDirtyThreshold = 36,
26736    VmstatNrDirtyBackgroundThreshold = 37,
26737    VmstatPgpgin = 38,
26738    VmstatPgpgout = 39,
26739    VmstatPgpgoutclean = 40,
26740    VmstatPswpin = 41,
26741    VmstatPswpout = 42,
26742    VmstatPgallocDma = 43,
26743    VmstatPgallocNormal = 44,
26744    VmstatPgallocMovable = 45,
26745    VmstatPgfree = 46,
26746    VmstatPgactivate = 47,
26747    VmstatPgdeactivate = 48,
26748    VmstatPgfault = 49,
26749    VmstatPgmajfault = 50,
26750    VmstatPgrefillDma = 51,
26751    VmstatPgrefillNormal = 52,
26752    VmstatPgrefillMovable = 53,
26753    VmstatPgstealKswapdDma = 54,
26754    VmstatPgstealKswapdNormal = 55,
26755    VmstatPgstealKswapdMovable = 56,
26756    VmstatPgstealDirectDma = 57,
26757    VmstatPgstealDirectNormal = 58,
26758    VmstatPgstealDirectMovable = 59,
26759    VmstatPgscanKswapdDma = 60,
26760    VmstatPgscanKswapdNormal = 61,
26761    VmstatPgscanKswapdMovable = 62,
26762    VmstatPgscanDirectDma = 63,
26763    VmstatPgscanDirectNormal = 64,
26764    VmstatPgscanDirectMovable = 65,
26765    VmstatPgscanDirectThrottle = 66,
26766    VmstatPginodesteal = 67,
26767    VmstatSlabsScanned = 68,
26768    VmstatKswapdInodesteal = 69,
26769    VmstatKswapdLowWmarkHitQuickly = 70,
26770    VmstatKswapdHighWmarkHitQuickly = 71,
26771    VmstatPageoutrun = 72,
26772    VmstatAllocstall = 73,
26773    VmstatPgrotated = 74,
26774    VmstatDropPagecache = 75,
26775    VmstatDropSlab = 76,
26776    VmstatPgmigrateSuccess = 77,
26777    VmstatPgmigrateFail = 78,
26778    VmstatCompactMigrateScanned = 79,
26779    VmstatCompactFreeScanned = 80,
26780    VmstatCompactIsolated = 81,
26781    VmstatCompactStall = 82,
26782    VmstatCompactFail = 83,
26783    VmstatCompactSuccess = 84,
26784    VmstatCompactDaemonWake = 85,
26785    VmstatUnevictablePgsCulled = 86,
26786    VmstatUnevictablePgsScanned = 87,
26787    VmstatUnevictablePgsRescued = 88,
26788    VmstatUnevictablePgsMlocked = 89,
26789    VmstatUnevictablePgsMunlocked = 90,
26790    VmstatUnevictablePgsCleared = 91,
26791    VmstatUnevictablePgsStranded = 92,
26792    VmstatNrZspages = 93,
26793    VmstatNrIonHeap = 94,
26794    VmstatNrGpuHeap = 95,
26795    VmstatAllocstallDma = 96,
26796    VmstatAllocstallMovable = 97,
26797    VmstatAllocstallNormal = 98,
26798    VmstatCompactDaemonFreeScanned = 99,
26799    VmstatCompactDaemonMigrateScanned = 100,
26800    VmstatNrFastrpc = 101,
26801    VmstatNrIndirectlyReclaimable = 102,
26802    VmstatNrIonHeapPool = 103,
26803    VmstatNrKernelMiscReclaimable = 104,
26804    VmstatNrShadowCallStackBytes = 105,
26805    VmstatNrShmemHugepages = 106,
26806    VmstatNrShmemPmdmapped = 107,
26807    VmstatNrUnreclaimablePages = 108,
26808    VmstatNrZoneActiveAnon = 109,
26809    VmstatNrZoneActiveFile = 110,
26810    VmstatNrZoneInactiveAnon = 111,
26811    VmstatNrZoneInactiveFile = 112,
26812    VmstatNrZoneUnevictable = 113,
26813    VmstatNrZoneWritePending = 114,
26814    VmstatOomKill = 115,
26815    VmstatPglazyfree = 116,
26816    VmstatPglazyfreed = 117,
26817    VmstatPgrefill = 118,
26818    VmstatPgscanDirect = 119,
26819    VmstatPgscanKswapd = 120,
26820    VmstatPgskipDma = 121,
26821    VmstatPgskipMovable = 122,
26822    VmstatPgskipNormal = 123,
26823    VmstatPgstealDirect = 124,
26824    VmstatPgstealKswapd = 125,
26825    VmstatSwapRa = 126,
26826    VmstatSwapRaHit = 127,
26827    VmstatWorkingsetRestore = 128,
26828    VmstatAllocstallDevice = 129,
26829    VmstatAllocstallDma32 = 130,
26830    VmstatBalloonDeflate = 131,
26831    VmstatBalloonInflate = 132,
26832    VmstatBalloonMigrate = 133,
26833    VmstatCmaAllocFail = 134,
26834    VmstatCmaAllocSuccess = 135,
26835    VmstatNrFileHugepages = 136,
26836    VmstatNrFilePmdmapped = 137,
26837    VmstatNrFollPinAcquired = 138,
26838    VmstatNrFollPinReleased = 139,
26839    VmstatNrSecPageTablePages = 140,
26840    VmstatNrShadowCallStack = 141,
26841    VmstatNrSwapcached = 142,
26842    VmstatNrThrottledWritten = 143,
26843    VmstatPgallocDevice = 144,
26844    VmstatPgallocDma32 = 145,
26845    VmstatPgdemoteDirect = 146,
26846    VmstatPgdemoteKswapd = 147,
26847    VmstatPgreuse = 148,
26848    VmstatPgscanAnon = 149,
26849    VmstatPgscanFile = 150,
26850    VmstatPgskipDevice = 151,
26851    VmstatPgskipDma32 = 152,
26852    VmstatPgstealAnon = 153,
26853    VmstatPgstealFile = 154,
26854    VmstatThpCollapseAlloc = 155,
26855    VmstatThpCollapseAllocFailed = 156,
26856    VmstatThpDeferredSplitPage = 157,
26857    VmstatThpFaultAlloc = 158,
26858    VmstatThpFaultFallback = 159,
26859    VmstatThpFaultFallbackCharge = 160,
26860    VmstatThpFileAlloc = 161,
26861    VmstatThpFileFallback = 162,
26862    VmstatThpFileFallbackCharge = 163,
26863    VmstatThpFileMapped = 164,
26864    VmstatThpMigrationFail = 165,
26865    VmstatThpMigrationSplit = 166,
26866    VmstatThpMigrationSuccess = 167,
26867    VmstatThpScanExceedNonePte = 168,
26868    VmstatThpScanExceedSharePte = 169,
26869    VmstatThpScanExceedSwapPte = 170,
26870    VmstatThpSplitPage = 171,
26871    VmstatThpSplitPageFailed = 172,
26872    VmstatThpSplitPmd = 173,
26873    VmstatThpSwpout = 174,
26874    VmstatThpSwpoutFallback = 175,
26875    VmstatThpZeroPageAlloc = 176,
26876    VmstatThpZeroPageAllocFailed = 177,
26877    VmstatVmaLockAbort = 178,
26878    VmstatVmaLockMiss = 179,
26879    VmstatVmaLockRetry = 180,
26880    VmstatVmaLockSuccess = 181,
26881    VmstatWorkingsetActivateAnon = 182,
26882    VmstatWorkingsetActivateFile = 183,
26883    VmstatWorkingsetNodes = 184,
26884    VmstatWorkingsetRefaultAnon = 185,
26885    VmstatWorkingsetRefaultFile = 186,
26886    VmstatWorkingsetRestoreAnon = 187,
26887    VmstatWorkingsetRestoreFile = 188,
26888}
26889impl VmstatCounters {
26890    /// String value of the enum field names used in the ProtoBuf definition.
26891    ///
26892    /// The values are not transformed in any way and thus are considered stable
26893    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26894    pub fn as_str_name(&self) -> &'static str {
26895        match self {
26896            VmstatCounters::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
26897            VmstatCounters::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
26898            VmstatCounters::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
26899            VmstatCounters::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
26900            VmstatCounters::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
26901            VmstatCounters::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
26902            VmstatCounters::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
26903            VmstatCounters::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
26904            VmstatCounters::VmstatNrMlock => "VMSTAT_NR_MLOCK",
26905            VmstatCounters::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
26906            VmstatCounters::VmstatNrMapped => "VMSTAT_NR_MAPPED",
26907            VmstatCounters::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
26908            VmstatCounters::VmstatNrDirty => "VMSTAT_NR_DIRTY",
26909            VmstatCounters::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
26910            VmstatCounters::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
26911            VmstatCounters::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
26912            VmstatCounters::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
26913            VmstatCounters::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
26914            VmstatCounters::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
26915            VmstatCounters::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
26916            VmstatCounters::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
26917            VmstatCounters::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
26918            VmstatCounters::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
26919            VmstatCounters::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
26920            VmstatCounters::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
26921            VmstatCounters::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
26922            VmstatCounters::VmstatNrShmem => "VMSTAT_NR_SHMEM",
26923            VmstatCounters::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
26924            VmstatCounters::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
26925            VmstatCounters::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
26926            VmstatCounters::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
26927            VmstatCounters::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
26928            VmstatCounters::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
26929            VmstatCounters::VmstatNrAnonTransparentHugepages => "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES",
26930            VmstatCounters::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
26931            VmstatCounters::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
26932            VmstatCounters::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
26933            VmstatCounters::VmstatNrDirtyBackgroundThreshold => "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD",
26934            VmstatCounters::VmstatPgpgin => "VMSTAT_PGPGIN",
26935            VmstatCounters::VmstatPgpgout => "VMSTAT_PGPGOUT",
26936            VmstatCounters::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
26937            VmstatCounters::VmstatPswpin => "VMSTAT_PSWPIN",
26938            VmstatCounters::VmstatPswpout => "VMSTAT_PSWPOUT",
26939            VmstatCounters::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
26940            VmstatCounters::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
26941            VmstatCounters::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
26942            VmstatCounters::VmstatPgfree => "VMSTAT_PGFREE",
26943            VmstatCounters::VmstatPgactivate => "VMSTAT_PGACTIVATE",
26944            VmstatCounters::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
26945            VmstatCounters::VmstatPgfault => "VMSTAT_PGFAULT",
26946            VmstatCounters::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
26947            VmstatCounters::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
26948            VmstatCounters::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
26949            VmstatCounters::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
26950            VmstatCounters::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
26951            VmstatCounters::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
26952            VmstatCounters::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
26953            VmstatCounters::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
26954            VmstatCounters::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
26955            VmstatCounters::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
26956            VmstatCounters::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
26957            VmstatCounters::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
26958            VmstatCounters::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
26959            VmstatCounters::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
26960            VmstatCounters::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
26961            VmstatCounters::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
26962            VmstatCounters::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
26963            VmstatCounters::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
26964            VmstatCounters::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
26965            VmstatCounters::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
26966            VmstatCounters::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
26967            VmstatCounters::VmstatKswapdHighWmarkHitQuickly => "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY",
26968            VmstatCounters::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
26969            VmstatCounters::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
26970            VmstatCounters::VmstatPgrotated => "VMSTAT_PGROTATED",
26971            VmstatCounters::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
26972            VmstatCounters::VmstatDropSlab => "VMSTAT_DROP_SLAB",
26973            VmstatCounters::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
26974            VmstatCounters::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
26975            VmstatCounters::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
26976            VmstatCounters::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
26977            VmstatCounters::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
26978            VmstatCounters::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
26979            VmstatCounters::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
26980            VmstatCounters::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
26981            VmstatCounters::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
26982            VmstatCounters::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
26983            VmstatCounters::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
26984            VmstatCounters::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
26985            VmstatCounters::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
26986            VmstatCounters::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
26987            VmstatCounters::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
26988            VmstatCounters::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
26989            VmstatCounters::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
26990            VmstatCounters::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
26991            VmstatCounters::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
26992            VmstatCounters::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
26993            VmstatCounters::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
26994            VmstatCounters::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
26995            VmstatCounters::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
26996            VmstatCounters::VmstatCompactDaemonMigrateScanned => "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED",
26997            VmstatCounters::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
26998            VmstatCounters::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
26999            VmstatCounters::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
27000            VmstatCounters::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
27001            VmstatCounters::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
27002            VmstatCounters::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
27003            VmstatCounters::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
27004            VmstatCounters::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
27005            VmstatCounters::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
27006            VmstatCounters::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
27007            VmstatCounters::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
27008            VmstatCounters::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
27009            VmstatCounters::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
27010            VmstatCounters::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
27011            VmstatCounters::VmstatOomKill => "VMSTAT_OOM_KILL",
27012            VmstatCounters::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
27013            VmstatCounters::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
27014            VmstatCounters::VmstatPgrefill => "VMSTAT_PGREFILL",
27015            VmstatCounters::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
27016            VmstatCounters::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
27017            VmstatCounters::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
27018            VmstatCounters::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
27019            VmstatCounters::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
27020            VmstatCounters::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
27021            VmstatCounters::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
27022            VmstatCounters::VmstatSwapRa => "VMSTAT_SWAP_RA",
27023            VmstatCounters::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
27024            VmstatCounters::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
27025            VmstatCounters::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
27026            VmstatCounters::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
27027            VmstatCounters::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
27028            VmstatCounters::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
27029            VmstatCounters::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
27030            VmstatCounters::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
27031            VmstatCounters::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
27032            VmstatCounters::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
27033            VmstatCounters::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
27034            VmstatCounters::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
27035            VmstatCounters::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
27036            VmstatCounters::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
27037            VmstatCounters::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
27038            VmstatCounters::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
27039            VmstatCounters::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
27040            VmstatCounters::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
27041            VmstatCounters::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
27042            VmstatCounters::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
27043            VmstatCounters::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
27044            VmstatCounters::VmstatPgreuse => "VMSTAT_PGREUSE",
27045            VmstatCounters::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
27046            VmstatCounters::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
27047            VmstatCounters::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
27048            VmstatCounters::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
27049            VmstatCounters::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
27050            VmstatCounters::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
27051            VmstatCounters::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
27052            VmstatCounters::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
27053            VmstatCounters::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
27054            VmstatCounters::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
27055            VmstatCounters::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
27056            VmstatCounters::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
27057            VmstatCounters::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
27058            VmstatCounters::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
27059            VmstatCounters::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
27060            VmstatCounters::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
27061            VmstatCounters::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
27062            VmstatCounters::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
27063            VmstatCounters::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
27064            VmstatCounters::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
27065            VmstatCounters::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
27066            VmstatCounters::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
27067            VmstatCounters::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
27068            VmstatCounters::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
27069            VmstatCounters::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
27070            VmstatCounters::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
27071            VmstatCounters::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
27072            VmstatCounters::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
27073            VmstatCounters::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
27074            VmstatCounters::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
27075            VmstatCounters::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
27076            VmstatCounters::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
27077            VmstatCounters::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
27078            VmstatCounters::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
27079            VmstatCounters::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
27080            VmstatCounters::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
27081            VmstatCounters::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
27082            VmstatCounters::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
27083            VmstatCounters::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
27084            VmstatCounters::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
27085        }
27086    }
27087}
27088// End of protos/perfetto/trace/android/app_wakelock_data.proto
27089
27090// Begin of protos/perfetto/trace/android/bluetooth_trace.proto
27091
27092/// Describes the packet type and direction. CMD and EVT are unidirectional, so
27093/// no need to differentiate the direction.
27094#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27095#[repr(i32)]
27096pub enum BluetoothTracePacketType {
27097    HciCmd = 1,
27098    HciEvt = 2,
27099    HciAclRx = 3,
27100    HciAclTx = 4,
27101    HciScoRx = 5,
27102    HciScoTx = 6,
27103    HciIsoRx = 7,
27104    HciIsoTx = 8,
27105}
27106impl BluetoothTracePacketType {
27107    /// String value of the enum field names used in the ProtoBuf definition.
27108    ///
27109    /// The values are not transformed in any way and thus are considered stable
27110    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27111    pub fn as_str_name(&self) -> &'static str {
27112        match self {
27113            BluetoothTracePacketType::HciCmd => "HCI_CMD",
27114            BluetoothTracePacketType::HciEvt => "HCI_EVT",
27115            BluetoothTracePacketType::HciAclRx => "HCI_ACL_RX",
27116            BluetoothTracePacketType::HciAclTx => "HCI_ACL_TX",
27117            BluetoothTracePacketType::HciScoRx => "HCI_SCO_RX",
27118            BluetoothTracePacketType::HciScoTx => "HCI_SCO_TX",
27119            BluetoothTracePacketType::HciIsoRx => "HCI_ISO_RX",
27120            BluetoothTracePacketType::HciIsoTx => "HCI_ISO_TX",
27121        }
27122    }
27123}
27124// End of protos/perfetto/trace/android/kernel_wakelock_data.proto
27125
27126// Begin of protos/perfetto/trace/android/network_trace.proto
27127
27128#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27129#[repr(i32)]
27130pub enum TrafficDirection {
27131    DirUnspecified = 0,
27132    DirIngress = 1,
27133    DirEgress = 2,
27134}
27135impl TrafficDirection {
27136    /// String value of the enum field names used in the ProtoBuf definition.
27137    ///
27138    /// The values are not transformed in any way and thus are considered stable
27139    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27140    pub fn as_str_name(&self) -> &'static str {
27141        match self {
27142            TrafficDirection::DirUnspecified => "DIR_UNSPECIFIED",
27143            TrafficDirection::DirIngress => "DIR_INGRESS",
27144            TrafficDirection::DirEgress => "DIR_EGRESS",
27145        }
27146    }
27147}
27148#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27149#[repr(i32)]
27150pub enum TrustedOverlay {
27151    Unset = 0,
27152    Disabled = 1,
27153    Enabled = 2,
27154}
27155impl TrustedOverlay {
27156    /// String value of the enum field names used in the ProtoBuf definition.
27157    ///
27158    /// The values are not transformed in any way and thus are considered stable
27159    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27160    pub fn as_str_name(&self) -> &'static str {
27161        match self {
27162            TrustedOverlay::Unset => "UNSET",
27163            TrustedOverlay::Disabled => "DISABLED",
27164            TrustedOverlay::Enabled => "ENABLED",
27165        }
27166    }
27167}
27168/// Must match definition in the IComposerClient HAL
27169#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27170#[repr(i32)]
27171pub enum HwcCompositionType {
27172    /// Invalid composition type
27173    HwcTypeUnspecified = 0,
27174    /// Layer was composited by the client into the client target buffer
27175    HwcTypeClient = 1,
27176    /// Layer was composited by the device through hardware overlays
27177    HwcTypeDevice = 2,
27178    /// Layer was composited by the device using a color
27179    HwcTypeSolidColor = 3,
27180    /// Similar to DEVICE, but the layer position may have been asynchronously set
27181    /// through setCursorPosition
27182    HwcTypeCursor = 4,
27183    /// Layer was composited by the device via a sideband stream
27184    HwcTypeSideband = 5,
27185    /// Layer was composited by hardware optimized for display decoration
27186    HwcTypeDisplayDecoration = 6,
27187}
27188impl HwcCompositionType {
27189    /// String value of the enum field names used in the ProtoBuf definition.
27190    ///
27191    /// The values are not transformed in any way and thus are considered stable
27192    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27193    pub fn as_str_name(&self) -> &'static str {
27194        match self {
27195            HwcCompositionType::HwcTypeUnspecified => "HWC_TYPE_UNSPECIFIED",
27196            HwcCompositionType::HwcTypeClient => "HWC_TYPE_CLIENT",
27197            HwcCompositionType::HwcTypeDevice => "HWC_TYPE_DEVICE",
27198            HwcCompositionType::HwcTypeSolidColor => "HWC_TYPE_SOLID_COLOR",
27199            HwcCompositionType::HwcTypeCursor => "HWC_TYPE_CURSOR",
27200            HwcCompositionType::HwcTypeSideband => "HWC_TYPE_SIDEBAND",
27201            HwcCompositionType::HwcTypeDisplayDecoration => "HWC_TYPE_DISPLAY_DECORATION",
27202        }
27203    }
27204}
27205#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27206#[repr(i32)]
27207pub enum FtraceParseStatus {
27208    FtraceStatusUnspecified = 0,
27209    /// Not written, used for convenience of implementation:
27210    FtraceStatusOk = 1,
27211    /// Issues with reading data out of the ftrace ring buffer:
27212    FtraceStatusUnexpectedReadError = 2,
27213    FtraceStatusPartialPageRead = 3,
27214    /// Ring buffer binary data not matching our understanding of the layout:
27215    FtraceStatusAbiInvalidPageHeader = 4,
27216    FtraceStatusAbiShortEventHeader = 5,
27217    FtraceStatusAbiNullPadding = 6,
27218    FtraceStatusAbiShortPaddingLength = 7,
27219    FtraceStatusAbiInvalidPaddingLength = 8,
27220    FtraceStatusAbiShortTimeExtend = 9,
27221    FtraceStatusAbiShortTimeStamp = 10,
27222    FtraceStatusAbiShortDataLength = 11,
27223    FtraceStatusAbiZeroDataLength = 12,
27224    FtraceStatusAbiInvalidDataLength = 13,
27225    FtraceStatusAbiShortEventId = 14,
27226    FtraceStatusAbiEndOverflow = 15,
27227    /// Issues with parsing the event payload:
27228    FtraceStatusShortCompactEvent = 16,
27229    FtraceStatusInvalidEvent = 17,
27230}
27231impl FtraceParseStatus {
27232    /// String value of the enum field names used in the ProtoBuf definition.
27233    ///
27234    /// The values are not transformed in any way and thus are considered stable
27235    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27236    pub fn as_str_name(&self) -> &'static str {
27237        match self {
27238            FtraceParseStatus::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
27239            FtraceParseStatus::FtraceStatusOk => "FTRACE_STATUS_OK",
27240            FtraceParseStatus::FtraceStatusUnexpectedReadError => "FTRACE_STATUS_UNEXPECTED_READ_ERROR",
27241            FtraceParseStatus::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
27242            FtraceParseStatus::FtraceStatusAbiInvalidPageHeader => "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER",
27243            FtraceParseStatus::FtraceStatusAbiShortEventHeader => "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER",
27244            FtraceParseStatus::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
27245            FtraceParseStatus::FtraceStatusAbiShortPaddingLength => "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH",
27246            FtraceParseStatus::FtraceStatusAbiInvalidPaddingLength => "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH",
27247            FtraceParseStatus::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
27248            FtraceParseStatus::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
27249            FtraceParseStatus::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
27250            FtraceParseStatus::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
27251            FtraceParseStatus::FtraceStatusAbiInvalidDataLength => "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH",
27252            FtraceParseStatus::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
27253            FtraceParseStatus::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
27254            FtraceParseStatus::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
27255            FtraceParseStatus::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
27256        }
27257    }
27258}
27259#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27260#[repr(i32)]
27261pub enum FtraceClock {
27262    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
27263    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
27264    Unspecified = 0,
27265    Unknown = 1,
27266    Global = 2,
27267    Local = 3,
27268    MonoRaw = 4,
27269}
27270impl FtraceClock {
27271    /// String value of the enum field names used in the ProtoBuf definition.
27272    ///
27273    /// The values are not transformed in any way and thus are considered stable
27274    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27275    pub fn as_str_name(&self) -> &'static str {
27276        match self {
27277            FtraceClock::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
27278            FtraceClock::Unknown => "FTRACE_CLOCK_UNKNOWN",
27279            FtraceClock::Global => "FTRACE_CLOCK_GLOBAL",
27280            FtraceClock::Local => "FTRACE_CLOCK_LOCAL",
27281            FtraceClock::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
27282        }
27283    }
27284}
27285// End of protos/perfetto/trace/track_event/chrome_application_state_info.proto
27286
27287// Begin of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
27288
27289// Describes Chrome's Compositor scheduler's current state and associated
27290// variables.
27291//
27292// These protos and enums were adapted from the corresponding original JSON
27293// trace event for the scheduler state. In contrast to the JSON, we use strongly
27294// typed enum values instead of strings for many fields, and
27295// microsecond-granularity timestamps.
27296//
27297// The original format was generated in JSON by the code at
27298// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?l=870&rcl=5e15eabc9c0eec8daf94fdf78e93f13b6e3b63dd>
27299//
27300// And is now generated as protozero:
27301// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?q=Scheduler::AsPro>
27302//
27303// All non-delta-timestamps are absolute CLOCK_MONOTONIC timestamps.
27304
27305#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27306#[repr(i32)]
27307pub enum ChromeCompositorSchedulerAction {
27308    CcSchedulerActionUnspecified = 0,
27309    CcSchedulerActionNone = 1,
27310    CcSchedulerActionSendBeginMainFrame = 2,
27311    CcSchedulerActionCommit = 3,
27312    CcSchedulerActionActivateSyncTree = 4,
27313    CcSchedulerActionDrawIfPossible = 5,
27314    CcSchedulerActionDrawForced = 6,
27315    CcSchedulerActionDrawAbort = 7,
27316    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
27317    CcSchedulerActionPrepareTiles = 9,
27318    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
27319    CcSchedulerActionPerformImplSideInvalidation = 11,
27320    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
27321    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
27322}
27323impl ChromeCompositorSchedulerAction {
27324    /// String value of the enum field names used in the ProtoBuf definition.
27325    ///
27326    /// The values are not transformed in any way and thus are considered stable
27327    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27328    pub fn as_str_name(&self) -> &'static str {
27329        match self {
27330            ChromeCompositorSchedulerAction::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
27331            ChromeCompositorSchedulerAction::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
27332            ChromeCompositorSchedulerAction::CcSchedulerActionSendBeginMainFrame => "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME",
27333            ChromeCompositorSchedulerAction::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
27334            ChromeCompositorSchedulerAction::CcSchedulerActionActivateSyncTree => "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE",
27335            ChromeCompositorSchedulerAction::CcSchedulerActionDrawIfPossible => "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE",
27336            ChromeCompositorSchedulerAction::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
27337            ChromeCompositorSchedulerAction::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
27338            ChromeCompositorSchedulerAction::CcSchedulerActionBeginLayerTreeFrameSinkCreation => "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION",
27339            ChromeCompositorSchedulerAction::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
27340            ChromeCompositorSchedulerAction::CcSchedulerActionInvalidateLayerTreeFrameSink => "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK",
27341            ChromeCompositorSchedulerAction::CcSchedulerActionPerformImplSideInvalidation => "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION",
27342            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL",
27343            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON",
27344        }
27345    }
27346}
27347// End of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
27348
27349// Begin of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
27350
27351// Describes the state of the RendererScheduler for a given Renderer Process.
27352
27353/// RAIL Mode is an indication of the kind of work that a Renderer is currently
27354/// performing which is in turn used to prioritise work accordingly.
27355/// A fuller description of these modes can be found <https://web.dev/rail/>
27356#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27357#[repr(i32)]
27358pub enum ChromeRailMode {
27359    RailModeNone = 0,
27360    RailModeResponse = 1,
27361    RailModeAnimation = 2,
27362    RailModeIdle = 3,
27363    RailModeLoad = 4,
27364}
27365impl ChromeRailMode {
27366    /// String value of the enum field names used in the ProtoBuf definition.
27367    ///
27368    /// The values are not transformed in any way and thus are considered stable
27369    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27370    pub fn as_str_name(&self) -> &'static str {
27371        match self {
27372            ChromeRailMode::RailModeNone => "RAIL_MODE_NONE",
27373            ChromeRailMode::RailModeResponse => "RAIL_MODE_RESPONSE",
27374            ChromeRailMode::RailModeAnimation => "RAIL_MODE_ANIMATION",
27375            ChromeRailMode::RailModeIdle => "RAIL_MODE_IDLE",
27376            ChromeRailMode::RailModeLoad => "RAIL_MODE_LOAD",
27377        }
27378    }
27379}