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 doesn't make a major difference for the Producer(s). The final
3209    /// logging buffers, in fact, are completely owned by the Service. We just ask
3210    /// the Producer to copy this number into the chunk headers it emits, so that
3211    /// the Service can quickly identify the buffer where to move the chunks into
3212    /// without expensive lookups on its fastpath.
3213    #[prost(uint32, optional, tag="2")]
3214    pub target_buffer: ::core::option::Option<u32>,
3215    /// Set by the service to indicate the duration of the trace.
3216    /// DO NOT SET in consumer as this will be overridden by the service.
3217    #[prost(uint32, optional, tag="3")]
3218    pub trace_duration_ms: ::core::option::Option<u32>,
3219    /// If true, |trace_duration_ms| should count also time in suspend. This
3220    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
3221    #[prost(bool, optional, tag="122")]
3222    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3223    /// Set by the service to indicate how long it waits after StopDataSource.
3224    /// DO NOT SET in consumer as this will be overridden by the service.
3225    #[prost(uint32, optional, tag="7")]
3226    pub stop_timeout_ms: ::core::option::Option<u32>,
3227    /// Set by the service to indicate whether this tracing session has extra
3228    /// guardrails.
3229    /// DO NOT SET in consumer as this will be overridden by the service.
3230    #[prost(bool, optional, tag="6")]
3231    pub enable_extra_guardrails: ::core::option::Option<bool>,
3232    /// Set by the service to indicate which user initiated this trace.
3233    /// DO NOT SET in consumer as this will be overridden by the service.
3234    #[prost(enumeration="data_source_config::SessionInitiator", optional, tag="8")]
3235    pub session_initiator: ::core::option::Option<i32>,
3236    /// Set by the service to indicate which tracing session the data source
3237    /// belongs to. The intended use case for this is checking if two data sources,
3238    /// one of which produces metadata for the other one, belong to the same trace
3239    /// session and hence should be linked together.
3240    /// This field was introduced in Aug 2018 after Android P.
3241    /// DO NOT SET in consumer as this will be overridden by the service.
3242    #[prost(uint64, optional, tag="4")]
3243    pub tracing_session_id: ::core::option::Option<u64>,
3244    /// How to behave when the producer runs out of space in the shared memory
3245    /// buffer. This is only honored by some data sources (in the SDK, the data
3246    /// sources registered with a configurable buffer exhausted policy).
3247    #[prost(enumeration="data_source_config::BufferExhaustedPolicy", optional, tag="9")]
3248    pub buffer_exhausted_policy: ::core::option::Option<i32>,
3249    #[prost(message, optional, tag="10")]
3250    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3251    // Keep the lower IDs (up to 99) for fields that are *not* specific to
3252    // data-sources and needs to be processed by the traced daemon.
3253
3254    // All data source config fields must be marked as \[lazy=true\]. This prevents
3255    // the proto-to-cpp generator from recursing into those when generating the
3256    // cpp classes and polluting tracing/core with data-source-specific classes.
3257    // Instead they are treated as opaque strings containing raw proto bytes.
3258
3259    /// Data source name: linux.ftrace
3260    #[prost(message, optional, tag="100")]
3261    pub ftrace_config: ::core::option::Option<FtraceConfig>,
3262    /// Data source name: linux.inode_file_map
3263    #[prost(message, optional, tag="102")]
3264    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
3265    /// Data source name: linux.process_stats
3266    #[prost(message, optional, tag="103")]
3267    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
3268    /// Data source name: linux.sys_stats
3269    #[prost(message, optional, tag="104")]
3270    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
3271    /// Data source name: android.heapprofd
3272    /// Introduced in Android 10.
3273    #[prost(message, optional, tag="105")]
3274    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
3275    /// Data source name: android.java_hprof
3276    /// Introduced in Android 11.
3277    #[prost(message, optional, tag="110")]
3278    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
3279    /// Data source name: android.power
3280    #[prost(message, optional, tag="106")]
3281    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
3282    /// Data source name: android.log
3283    #[prost(message, optional, tag="107")]
3284    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
3285    /// Data source name: gpu.counters
3286    #[prost(message, optional, tag="108")]
3287    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
3288    /// Data source name: android.game_interventions
3289    #[prost(message, optional, tag="116")]
3290    pub android_game_intervention_list_config: ::core::option::Option<AndroidGameInterventionListConfig>,
3291    /// Data source name: android.packages_list
3292    #[prost(message, optional, tag="109")]
3293    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
3294    /// Data source name: linux.perf
3295    #[prost(message, optional, tag="111")]
3296    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
3297    /// Data source name: vulkan.memory_tracker
3298    #[prost(message, optional, tag="112")]
3299    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
3300    /// Data source name: track_event
3301    #[prost(message, optional, tag="113")]
3302    pub track_event_config: ::core::option::Option<TrackEventConfig>,
3303    /// Data source name: android.polled_state
3304    #[prost(message, optional, tag="114")]
3305    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
3306    /// Data source name: android.system_property
3307    #[prost(message, optional, tag="118")]
3308    pub android_system_property_config: ::core::option::Option<AndroidSystemPropertyConfig>,
3309    /// Data source name: android.statsd
3310    #[prost(message, optional, tag="117")]
3311    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
3312    /// Data source name: linux.system_info
3313    #[prost(message, optional, tag="119")]
3314    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
3315    /// Data source name: linux.frozen_ftrace
3316    #[prost(message, optional, tag="136")]
3317    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
3318    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
3319    /// avoid proto serialization and de-serialization there because that would
3320    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
3321    /// C++ class for it so it can pass around plain C++ objets.
3322    #[prost(message, optional, tag="101")]
3323    pub chrome_config: ::core::option::Option<ChromeConfig>,
3324    /// Data source name: code.v8.dev
3325    #[prost(message, optional, tag="127")]
3326    pub v8_config: ::core::option::Option<V8Config>,
3327    /// If an interceptor is specified here, packets for this data source will be
3328    /// rerouted to the interceptor instead of the main trace buffer. This can be
3329    /// used, for example, to write trace data into ETW or for logging trace points
3330    /// to the console.
3331    ///
3332    /// Note that interceptors are only supported by data sources registered
3333    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
3334    /// traced_probes) may not support interception.
3335    #[prost(message, optional, tag="115")]
3336    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
3337    /// Data source name: android.network_packets.
3338    /// Introduced in Android 14 (U).
3339    #[prost(message, optional, tag="120")]
3340    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
3341    /// Data source name: android.surfaceflinger.layers
3342    #[prost(message, optional, tag="121")]
3343    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
3344    /// Data source name: android.surfaceflinger.transactions
3345    #[prost(message, optional, tag="123")]
3346    pub surfaceflinger_transactions_config: ::core::option::Option<SurfaceFlingerTransactionsConfig>,
3347    /// Data source name: android.sdk_sysprop_guard
3348    /// Introduced in Android 14 (U) QPR1.
3349    #[prost(message, optional, tag="124")]
3350    pub android_sdk_sysprop_guard_config: ::core::option::Option<AndroidSdkSyspropGuardConfig>,
3351    /// Data source name: windows.etw
3352    #[prost(message, optional, tag="125")]
3353    pub etw_config: ::core::option::Option<EtwConfig>,
3354    /// Data source name: android.protolog
3355    #[prost(message, optional, tag="126")]
3356    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
3357    /// Data source name: android.input.inputevent
3358    #[prost(message, optional, tag="128")]
3359    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
3360    /// Data source name: android.pixel.modem
3361    #[prost(message, optional, tag="129")]
3362    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
3363    /// Data source name: android.windowmanager
3364    #[prost(message, optional, tag="130")]
3365    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
3366    /// Data source name: org.chromium.system_metrics
3367    #[prost(message, optional, tag="131")]
3368    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
3369    /// Data source name: android.kernel_wakelocks
3370    #[prost(message, optional, tag="132")]
3371    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
3372    /// Data source name: gpu.renderstages
3373    #[prost(message, optional, tag="133")]
3374    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
3375    /// Data source name: org.chromium.histogram_samples
3376    #[prost(message, optional, tag="134")]
3377    pub chromium_histogram_samples: ::core::option::Option<ChromiumHistogramSamplesConfig>,
3378    /// Data source name: android.app_wakelocks
3379    #[prost(message, optional, tag="135")]
3380    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
3381    /// Data source name: android.cpu_per_uid
3382    #[prost(message, optional, tag="137")]
3383    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
3384    /// Data source name: android.user_list
3385    #[prost(message, optional, tag="138")]
3386    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
3387    /// This is a fallback mechanism to send a free-form text config to the
3388    /// producer. In theory this should never be needed. All the code that
3389    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
3390    /// the trace config proto and propagate unknown fields. However, if anything
3391    /// in the pipeline (client or backend) ends up breaking this forward compat
3392    /// plan, this field will become the escape hatch to allow future data sources
3393    /// to get some meaningful configuration.
3394    #[prost(string, optional, tag="1000")]
3395    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
3396    /// This field is only used for testing.
3397    #[prost(message, optional, tag="1001")]
3398    pub for_testing: ::core::option::Option<TestConfig>,
3399}
3400/// Nested message and enum types in `DataSourceConfig`.
3401pub mod data_source_config {
3402    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3403    #[repr(i32)]
3404    pub enum SessionInitiator {
3405        Unspecified = 0,
3406        /// This trace was initiated from a trusted system app has DUMP and
3407        /// USAGE_STATS permission. This system app is expected to not expose the
3408        /// trace to the user of the device.
3409        /// This is determined by checking the UID initiating the trace.
3410        TrustedSystem = 1,
3411    }
3412    impl SessionInitiator {
3413        /// String value of the enum field names used in the ProtoBuf definition.
3414        ///
3415        /// The values are not transformed in any way and thus are considered stable
3416        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3417        pub fn as_str_name(&self) -> &'static str {
3418            match self {
3419                SessionInitiator::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
3420                SessionInitiator::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
3421            }
3422        }
3423    }
3424    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3425    #[repr(i32)]
3426    pub enum BufferExhaustedPolicy {
3427        /// The data source will use its default buffer exhausted policy, specified
3428        /// by the code when the data source is registered.
3429        BufferExhaustedUnspecified = 0,
3430        /// The data source will drop packets when there's no space in the shared
3431        /// memory buffer.
3432        BufferExhaustedDrop = 1,
3433        /// The data source will wait when there's no space in the shared memory
3434        /// buffer. If there's still not space, after a few seconds, the whole
3435        /// producer process will be aborted.
3436        BufferExhaustedStallThenAbort = 2,
3437        /// The data source will wait when there's no space in the shared memory
3438        /// buffer.  If there's still not space, after a few seconds, the data source
3439        /// will drop packets.
3440        BufferExhaustedStallThenDrop = 3,
3441    }
3442    impl BufferExhaustedPolicy {
3443        /// String value of the enum field names used in the ProtoBuf definition.
3444        ///
3445        /// The values are not transformed in any way and thus are considered stable
3446        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3447        pub fn as_str_name(&self) -> &'static str {
3448            match self {
3449                BufferExhaustedPolicy::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
3450                BufferExhaustedPolicy::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
3451                BufferExhaustedPolicy::BufferExhaustedStallThenAbort => "BUFFER_EXHAUSTED_STALL_THEN_ABORT",
3452                BufferExhaustedPolicy::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
3453            }
3454        }
3455    }
3456}
3457// End of protos/perfetto/config/data_source_config.proto
3458
3459// Begin of protos/perfetto/config/trace_config.proto
3460
3461/// The overall config that is used when starting a new tracing session through
3462/// ProducerPort::StartTracing().
3463/// It contains the general config for the logging buffer(s) and the configs for
3464/// all the data source being enabled.
3465///
3466/// Next id: 44.
3467#[derive(Clone, PartialEq, ::prost::Message)]
3468pub struct TraceConfig {
3469    #[prost(message, repeated, tag="1")]
3470    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
3471    #[prost(message, repeated, tag="2")]
3472    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
3473    #[prost(message, optional, tag="20")]
3474    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
3475    /// If specified, the trace will be stopped |duration_ms| after starting.
3476    /// This does *not* count the time the system is suspended, so we will run
3477    /// for duration_ms of system activity, not wall time.
3478    ///
3479    /// However in case of traces with triggers, see
3480    /// TriggerConfig.trigger_timeout_ms instead.
3481    #[prost(uint32, optional, tag="3")]
3482    pub duration_ms: ::core::option::Option<u32>,
3483    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
3484    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
3485    /// Linux/Android, no-op on other platforms. This is used when dealing with
3486    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
3487    /// wall-time, making them more likely to hit device reboots (and hence loss).
3488    /// This option also changes consistently the semantic of
3489    /// TriggerConfig.stop_delay_ms.
3490    #[prost(bool, optional, tag="36")]
3491    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
3492    /// This is set when --dropbox is passed to the Perfetto command line client
3493    /// and enables guardrails that limit resource usage for traces requested
3494    /// by statsd.
3495    #[prost(bool, optional, tag="4")]
3496    pub enable_extra_guardrails: ::core::option::Option<bool>,
3497    /// Reject producers that are not running under the same UID as the tracing
3498    /// service.
3499    #[prost(enumeration="trace_config::LockdownModeOperation", optional, tag="5")]
3500    pub lockdown_mode: ::core::option::Option<i32>,
3501    #[prost(message, repeated, tag="6")]
3502    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
3503    /// Statsd-specific metadata.
3504    #[prost(message, optional, tag="7")]
3505    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
3506    /// When true && |output_path| is empty, the EnableTracing() request must
3507    /// provide a file descriptor. The service will then periodically read packets
3508    /// out of the trace buffer and store it into the passed file.
3509    /// If |output_path| is not empty no fd should be passed, the service
3510    /// will create a new file and write into that (see comment below).
3511    #[prost(bool, optional, tag="8")]
3512    pub write_into_file: ::core::option::Option<bool>,
3513    /// This must point to a non-existing file. If the file exists the service
3514    /// will NOT overwrite and will fail instead as a security precaution.
3515    /// On Android, when this is used with the system traced, the path must be
3516    /// within /data/misc/perfetto-traces/ or the trace will fail.
3517    /// This option has been introduced in Android R. Before R write_into_file
3518    /// can be used only with the "pass a file descriptor over IPC" mode.
3519    #[prost(string, optional, tag="29")]
3520    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
3521    /// Optional. If non-zero tunes the write period. A min value of 100ms is
3522    /// enforced (i.e. smaller values are ignored).
3523    #[prost(uint32, optional, tag="9")]
3524    pub file_write_period_ms: ::core::option::Option<u32>,
3525    /// Optional. When non zero the periodic write stops once at most X bytes
3526    /// have been written into the file. Tracing is disabled when this limit is
3527    /// reached, even if |duration_ms| has not been reached yet.
3528    #[prost(uint64, optional, tag="10")]
3529    pub max_file_size_bytes: ::core::option::Option<u64>,
3530    #[prost(message, optional, tag="11")]
3531    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
3532    /// When true, data sources are not started until an explicit call to
3533    /// StartTracing() on the consumer port. This is to support early
3534    /// initialization and fast trace triggering. This can be used only when the
3535    /// Consumer explicitly triggers the StartTracing() method.
3536    /// This should not be used in a remote trace config via statsd, doing so will
3537    /// result in a hung trace session.
3538    #[prost(bool, optional, tag="12")]
3539    pub deferred_start: ::core::option::Option<bool>,
3540    /// When set, it periodically issues a Flush() to all data source, forcing them
3541    /// to commit their data into the tracing service. This can be used for
3542    /// quasi-real-time streaming mode and to guarantee some partial ordering of
3543    /// events in the trace in windows of X ms.
3544    #[prost(uint32, optional, tag="13")]
3545    pub flush_period_ms: ::core::option::Option<u32>,
3546    /// Wait for this long for producers to acknowledge flush requests.
3547    /// Default 5s.
3548    #[prost(uint32, optional, tag="14")]
3549    pub flush_timeout_ms: ::core::option::Option<u32>,
3550    /// Wait for this long for producers to acknowledge stop requests.
3551    /// Default 5s.
3552    #[prost(uint32, optional, tag="23")]
3553    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
3554    /// Android-only. If set, sends an intent to the Traceur system app when the
3555    /// trace ends to notify it about the trace readiness.
3556    #[prost(bool, optional, tag="16")]
3557    pub notify_traceur: ::core::option::Option<bool>,
3558    /// This field was introduced in Android S.
3559    /// Android-only. If set to a value > 0, marks the trace session as a candidate
3560    /// for being attached to a bugreport. This field effectively acts as a z-index
3561    /// for bugreports. When Android's dumpstate runs perfetto
3562    /// --save-for-bugreport, traced will pick the tracing session with the highest
3563    /// score (score <= 0 is ignored) and:
3564    /// On Android S, T:  will steal its contents, save the trace into
3565    ///      a known path and stop prematurely.
3566    /// On Android U+: will create a read-only snapshot and save that into a known
3567    ///      path, without stoppin the original tracing session.
3568    /// When this field is set the tracing session becomes eligible to be cloned
3569    /// by other UIDs.
3570    #[prost(int32, optional, tag="30")]
3571    pub bugreport_score: ::core::option::Option<i32>,
3572    /// When set, defines name of the file that will be saved under
3573    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
3574    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
3575    /// starting from the highest `bugreport_score`.
3576    /// Introduced in v42 / Android V.
3577    #[prost(string, optional, tag="38")]
3578    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
3579    #[prost(message, optional, tag="17")]
3580    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
3581    /// When this is non-empty the perfetto command line tool will ignore the rest
3582    /// of this TraceConfig and instead connect to the perfetto service as a
3583    /// producer and send these triggers, potentially stopping or starting traces
3584    /// that were previous configured to use a TriggerConfig.
3585    #[prost(string, repeated, tag="18")]
3586    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3587    #[prost(message, optional, tag="21")]
3588    pub incremental_state_config: ::core::option::Option<trace_config::IncrementalStateConfig>,
3589    /// No longer needed as we unconditionally allow tracing on user builds.
3590    #[deprecated]
3591    #[prost(bool, optional, tag="19")]
3592    pub allow_user_build_tracing: ::core::option::Option<bool>,
3593    /// If set the tracing service will ensure there is at most one tracing session
3594    /// with this key.
3595    #[prost(string, optional, tag="22")]
3596    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
3597    #[prost(enumeration="trace_config::CompressionType", optional, tag="24")]
3598    pub compression_type: ::core::option::Option<i32>,
3599    #[prost(message, optional, tag="25")]
3600    pub incident_report_config: ::core::option::Option<trace_config::IncidentReportConfig>,
3601    /// Android-only. Not for general use. If specified, sets the logging to statsd
3602    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
3603    /// this to enabled (if not explicitly set in the config) when specifying
3604    /// --upload.
3605    #[prost(enumeration="trace_config::StatsdLogging", optional, tag="31")]
3606    pub statsd_logging: ::core::option::Option<i32>,
3607    /// An identifier clients can use to tie this trace to other logging.
3608    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
3609    /// Trace UUID. If this field is set, the tracing service will respect the
3610    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
3611    /// gap-less snapshotting is not used.
3612    #[deprecated]
3613    #[prost(int64, optional, tag="27")]
3614    pub trace_uuid_msb: ::core::option::Option<i64>,
3615    #[deprecated]
3616    #[prost(int64, optional, tag="28")]
3617    pub trace_uuid_lsb: ::core::option::Option<i64>,
3618    #[prost(message, optional, tag="33")]
3619    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
3620    #[prost(message, optional, tag="34")]
3621    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
3622    #[prost(message, optional, tag="35")]
3623    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
3624    #[prost(message, repeated, tag="39")]
3625    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
3626    /// Priority boost to be applied to the traced process, when the session is
3627    /// running.
3628    #[prost(message, optional, tag="40")]
3629    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
3630    /// When set to a value > 0, this tracing session will be started in
3631    /// "exclusive mode". This has the following semantics:
3632    /// - It can only be set by shell or root users.
3633    /// - A new exclusive session will only be started if its priority is strictly
3634    ///    higher than any other active tracing session.
3635    /// - If a new exclusive session is started, all other existing tracing
3636    ///    sessions (exclusive or not) are aborted.
3637    /// - While an exclusive session is active, any new non-exclusive session (or
3638    ///    any exclusive session with a lower or equal priority) will be rejected.
3639    ///
3640    /// Introduced in: perfetto v52.
3641    /// Supported on: Android 25Q3+.
3642    #[prost(uint32, optional, tag="41")]
3643    pub exclusive_prio: ::core::option::Option<u32>,
3644    /// If true && |write_into_file|, do NOT flush buffers when periodically write
3645    /// them into file.
3646    ///
3647    /// By default, if |write_into_file| is set, each time we periodically write
3648    /// buffers into file, we first issue a Flush() to all data source, forcing
3649    /// them to commit their data into the tracing service. This helps us to always
3650    /// write latest data to the file.
3651    ///
3652    /// Before this flag was introduced, the default behavior was NOT to flush
3653    /// buffers when periodically write them into file. If true this flag
3654    /// returns the old default behavior.
3655    ///
3656    /// Introduced in: perfetto v53.
3657    /// Supported on: Android 25Q4+.
3658    #[prost(bool, optional, tag="42")]
3659    pub no_flush_before_write_into_file: ::core::option::Option<bool>,
3660    /// When true, data sources in remote producers (machines connected via
3661    /// traced_relay) will be matched by default. When false (the default), data
3662    /// sources only match the host machine. In either case, an explicit
3663    /// |DataSource.machine_name_filter| takes priority.
3664    ///
3665    /// NB: perfetto versions before v54 do not have this option and match across
3666    /// machines by default. To be compatible across this version boundary, either
3667    /// set this field to true, or set an explicit machine_name_filter on all data
3668    /// sources.
3669    ///
3670    /// Introduced in: perfetto v54.
3671    #[prost(bool, optional, tag="43")]
3672    pub trace_all_machines: ::core::option::Option<bool>,
3673}
3674/// Nested message and enum types in `TraceConfig`.
3675pub mod trace_config {
3676    #[derive(Clone, PartialEq, ::prost::Message)]
3677    pub struct BufferConfig {
3678        #[prost(uint32, optional, tag="1")]
3679        pub size_kb: ::core::option::Option<u32>,
3680        #[prost(enumeration="buffer_config::FillPolicy", optional, tag="4")]
3681        pub fill_policy: ::core::option::Option<i32>,
3682        /// When true the buffer is moved (rather than copied) onto the cloned
3683        /// session, and an empty buffer of the same size is allocated in the source
3684        /// tracing session. This feature will likely get deprecated in the future.
3685        /// It been introduced mainly to support the surfaceflinger snapshot dump
3686        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
3687        /// that case we don't want to retain another in-memory copy of the buffer.
3688        #[prost(bool, optional, tag="5")]
3689        pub transfer_on_clone: ::core::option::Option<bool>,
3690        /// Used in conjunction with transfer_on_clone. When true the buffer is
3691        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
3692        /// that if the data source took too long to write the data in a previous
3693        /// clone-related flush, we don't end up with a mixture of leftovers from
3694        /// the previous write and new data.
3695        #[prost(bool, optional, tag="6")]
3696        pub clear_before_clone: ::core::option::Option<bool>,
3697    }
3698    /// Nested message and enum types in `BufferConfig`.
3699    pub mod buffer_config {
3700        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3701        #[repr(i32)]
3702        pub enum FillPolicy {
3703            Unspecified = 0,
3704            /// Default behavior. The buffer operates as a conventional ring buffer.
3705            /// If the writer is faster than the reader (or if the reader reads only
3706            /// after tracing is stopped) newly written packets will overwrite old
3707            /// packets.
3708            RingBuffer = 1,
3709            /// Behaves like RING_BUFFER as long as there is space in the buffer or
3710            /// the reader catches up with the writer. As soon as the writer hits
3711            /// an unread chunk, it stops accepting new data in the buffer.
3712            Discard = 2,
3713        }
3714        impl FillPolicy {
3715            /// String value of the enum field names used in the ProtoBuf definition.
3716            ///
3717            /// The values are not transformed in any way and thus are considered stable
3718            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3719            pub fn as_str_name(&self) -> &'static str {
3720                match self {
3721                    FillPolicy::Unspecified => "UNSPECIFIED",
3722                    FillPolicy::RingBuffer => "RING_BUFFER",
3723                    FillPolicy::Discard => "DISCARD",
3724                }
3725            }
3726        }
3727    }
3728    #[derive(Clone, PartialEq, ::prost::Message)]
3729    pub struct DataSource {
3730        /// Filters and data-source specific config. It contains also the unique name
3731        /// of the data source, the one passed in the  DataSourceDescriptor when they
3732        /// register on the service.
3733        #[prost(message, optional, tag="1")]
3734        pub config: ::core::option::Option<super::DataSourceConfig>,
3735        /// Optional. If multiple producers (~processes) expose the same data source
3736        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
3737        /// the data source is enabled only for producers whose names match any of
3738        /// the filters.
3739        /// |producer_name_filter| has to be an exact match, while
3740        /// |producer_name_regex_filter| is a regular expression.
3741        /// This allows to enable a data source only for specific processes.
3742        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
3743        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
3744        #[prost(string, repeated, tag="2")]
3745        pub producer_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3746        #[prost(string, repeated, tag="3")]
3747        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3748        /// Filter by machine names. The name of a machine is determined by the
3749        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
3750        /// variable is not set then the
3751        /// persist.traced_relay.machine_name system property is used. If the
3752        /// sysprop isn't set or not in an Android system, then the machine name by
3753        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
3754        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
3755        /// to the host machine, which is the machine running traced.
3756        #[prost(string, repeated, tag="4")]
3757        pub machine_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3758    }
3759    /// Config for disabling builtin data sources in the tracing service.
3760    #[derive(Clone, PartialEq, ::prost::Message)]
3761    pub struct BuiltinDataSource {
3762        /// Disable emitting clock timestamps into the trace.
3763        #[prost(bool, optional, tag="1")]
3764        pub disable_clock_snapshotting: ::core::option::Option<bool>,
3765        /// Disable echoing the original trace config in the trace.
3766        #[prost(bool, optional, tag="2")]
3767        pub disable_trace_config: ::core::option::Option<bool>,
3768        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
3769        #[prost(bool, optional, tag="3")]
3770        pub disable_system_info: ::core::option::Option<bool>,
3771        /// Disable emitting events for data-source state changes (e.g. the marker
3772        /// for all data sources having ACKed the start of the trace).
3773        #[prost(bool, optional, tag="4")]
3774        pub disable_service_events: ::core::option::Option<bool>,
3775        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
3776        /// also ClockSnapshot's primary_trace_clock. The configured value is written
3777        /// into the trace as part of the ClockSnapshots emitted by the service.
3778        /// Trace processor will attempt to translate packet/event timestamps from
3779        /// various data sources (and their chosen clock domains) to this domain
3780        /// during import. Added in Android R.
3781        #[prost(enumeration="super::BuiltinClock", optional, tag="5")]
3782        pub primary_trace_clock: ::core::option::Option<i32>,
3783        /// Time interval in between snapshotting of sync markers, clock snapshots,
3784        /// stats, and other periodic service-emitted events. Note that the service
3785        /// only keeps track of the first and the most recent snapshot until
3786        /// ReadBuffers() is called.
3787        #[prost(uint32, optional, tag="6")]
3788        pub snapshot_interval_ms: ::core::option::Option<u32>,
3789        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
3790        /// clock should be used for periodic snapshots of service-emitted events.
3791        /// This means, if a snapshot *should* have happened during suspend, it will
3792        /// happen immediately after the device resumes.
3793        ///
3794        /// Choosing a clock like this is done on best-effort basis; not all
3795        /// platforms (e.g. Windows) expose a clock which can be used for periodic
3796        /// tasks counting suspend. If such a clock is not available, the service
3797        /// falls back to the best-available alternative.
3798        ///
3799        /// Introduced in Android S.
3800        /// TODO(lalitm): deprecate this in T and make this the default if nothing
3801        /// crashes in S.
3802        #[prost(bool, optional, tag="7")]
3803        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
3804        /// Disables the reporting of per-trace-writer histograms in TraceStats.
3805        #[prost(bool, optional, tag="8")]
3806        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
3807    }
3808    #[derive(Clone, PartialEq, ::prost::Message)]
3809    pub struct ProducerConfig {
3810        /// Identifies the producer for which this config is for.
3811        #[prost(string, optional, tag="1")]
3812        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
3813        /// Specifies the preferred size of the shared memory buffer. If the size is
3814        /// larger than the max size, the max will be used. If it is smaller than
3815        /// the page size or doesn't fit pages evenly into it, it will fall back to
3816        /// the size specified by the producer or finally the default shared memory
3817        /// size.
3818        #[prost(uint32, optional, tag="2")]
3819        pub shm_size_kb: ::core::option::Option<u32>,
3820        /// Specifies the preferred size of each page in the shared memory buffer.
3821        /// Must be an integer multiple of 4K.
3822        #[prost(uint32, optional, tag="3")]
3823        pub page_size_kb: ::core::option::Option<u32>,
3824    }
3825    /// Contains statsd-specific metadata about an alert associated with the trace.
3826    #[derive(Clone, PartialEq, ::prost::Message)]
3827    pub struct StatsdMetadata {
3828        /// The identifier of the alert which triggered this trace.
3829        #[prost(int64, optional, tag="1")]
3830        pub triggering_alert_id: ::core::option::Option<i64>,
3831        /// The uid which registered the triggering configuration with statsd.
3832        #[prost(int32, optional, tag="2")]
3833        pub triggering_config_uid: ::core::option::Option<i32>,
3834        /// The identifier of the config which triggered the alert.
3835        #[prost(int64, optional, tag="3")]
3836        pub triggering_config_id: ::core::option::Option<i64>,
3837        /// The identifier of the subscription which triggered this trace.
3838        #[prost(int64, optional, tag="4")]
3839        pub triggering_subscription_id: ::core::option::Option<i64>,
3840    }
3841    /// Contains flags which override the default values of the guardrails inside
3842    /// Perfetto.
3843    #[derive(Clone, PartialEq, ::prost::Message)]
3844    pub struct GuardrailOverrides {
3845        /// Override the default limit (in bytes) for uploading data to server within
3846        /// a 24 hour period.
3847        /// On R-, this override only affected userdebug builds. Since S, it also
3848        /// affects user builds.
3849        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
3850        /// was removed from Perfetto.
3851        #[deprecated]
3852        #[prost(uint64, optional, tag="1")]
3853        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
3854        /// Overrides the guardrail for maximum trace buffer size.
3855        /// Available on U+
3856        #[prost(uint32, optional, tag="2")]
3857        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
3858    }
3859    /// Triggers allow producers to start or stop the tracing session when an event
3860    /// occurs.
3861    ///
3862    /// For example if we are tracing probabilistically, most traces will be
3863    /// uninteresting. Triggers allow us to keep only the interesting ones such as
3864    /// those traces during which the device temperature reached a certain
3865    /// threshold. In this case the producer can activate a trigger to keep
3866    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
3867    /// (START_TRACING) because it knows something is about to happen.
3868    #[derive(Clone, PartialEq, ::prost::Message)]
3869    pub struct TriggerConfig {
3870        #[prost(enumeration="trigger_config::TriggerMode", optional, tag="1")]
3871        pub trigger_mode: ::core::option::Option<i32>,
3872        /// This flag is really a workaround for b/274931668. This is needed only
3873        /// when deploying configs to different versions of the tracing service.
3874        /// When this is set to true this has the same effect of setting trigger_mode
3875        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
3876        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
3877        /// versions of Android and fall back to STOP_TRACING on older versions where
3878        /// CLONE_SNAPSHOT did not exist.
3879        /// When using this flag, trigger_mode must be set to STOP_TRACING.
3880        #[prost(bool, optional, tag="5")]
3881        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
3882        /// A list of triggers which are related to this configuration. If ANY
3883        /// trigger is seen then an action will be performed based on |trigger_mode|.
3884        #[prost(message, repeated, tag="2")]
3885        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
3886        /// Required and must be positive if a TriggerConfig is specified. This is
3887        /// how long this TraceConfig should wait for a trigger to arrive. After this
3888        /// period of time if no trigger is seen the TracingSession will be cleaned
3889        /// up.
3890        #[prost(uint32, optional, tag="3")]
3891        pub trigger_timeout_ms: ::core::option::Option<u32>,
3892    }
3893    /// Nested message and enum types in `TriggerConfig`.
3894    pub mod trigger_config {
3895        #[derive(Clone, PartialEq, ::prost::Message)]
3896        pub struct Trigger {
3897            /// The producer must specify this name to activate the trigger.
3898            #[prost(string, optional, tag="1")]
3899            pub name: ::core::option::Option<::prost::alloc::string::String>,
3900            /// An std::regex that will match the producer that can activate this
3901            /// trigger. This is optional. If unset any producers can activate this
3902            /// trigger.
3903            #[prost(string, optional, tag="2")]
3904            pub producer_name_regex: ::core::option::Option<::prost::alloc::string::String>,
3905            /// After a trigger is received either in START_TRACING or STOP_TRACING
3906            /// mode then the trace will end |stop_delay_ms| after triggering.
3907            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
3908            /// snapshot.
3909            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
3910            /// based on wall-clock, counting also time in suspend.
3911            #[prost(uint32, optional, tag="3")]
3912            pub stop_delay_ms: ::core::option::Option<u32>,
3913            /// Limits the number of traces this trigger can start/stop in a rolling
3914            /// 24 hour window. If this field is unset or zero, no limit is applied and
3915            /// activiation of this trigger *always* starts/stops the trace.
3916            #[prost(uint32, optional, tag="4")]
3917            pub max_per_24_h: ::core::option::Option<u32>,
3918            /// A value between 0 and 1 which encodes the probability of skipping a
3919            /// trigger with this name. This is useful for reducing the probability
3920            /// of high-frequency triggers from dominating trace finaization. If this
3921            /// field is unset or zero, the trigger will *never* be skipped. If this
3922            /// field is greater than or equal to 1, this trigger will *always* be
3923            /// skipped i.e. it will be as if this trigger was never included in the
3924            /// first place.
3925            /// This probability check is applied *before* any other limits. For
3926            /// example, if |max_per_24_h| is also set, first we will check if the
3927            /// probability bar is met and only then will we check the |max_per_24_h|
3928            /// limit.
3929            #[prost(double, optional, tag="5")]
3930            pub skip_probability: ::core::option::Option<f64>,
3931        }
3932        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3933        #[repr(i32)]
3934        pub enum TriggerMode {
3935            Unspecified = 0,
3936            /// When this mode is chosen, data sources are not started until one of the
3937            /// |triggers| are received. This supports early initialization and fast
3938            /// starting of the tracing system. On triggering, the session will then
3939            /// record for |stop_delay_ms|. However if no trigger is seen
3940            /// after |trigger_timeout_ms| the session will be stopped and no data will
3941            /// be returned.
3942            StartTracing = 1,
3943            /// When this mode is chosen, the session will be started via the normal
3944            /// EnableTracing() & StartTracing(). If no trigger is ever seen
3945            /// the session will be stopped after |trigger_timeout_ms| and no data will
3946            /// be returned. However if triggered the trace will stop after
3947            /// |stop_delay_ms| and any data in the buffer will be returned to the
3948            /// consumer.
3949            StopTracing = 2,
3950            /// When this mode is chosen, this causes a snapshot of the current tracing
3951            /// session to be created after |stop_delay_ms| while the current tracing
3952            /// session continues undisturbed (% an extra flush). This mode can be
3953            /// used only when the tracing session is handled by the "perfetto" cmdline
3954            /// client (which is true in 90% of cases). Part of the business logic
3955            /// necessary for this behavior, and ensuing file handling, lives in
3956            /// perfetto_cmd.cc . On other consumers, this causes only a notification
3957            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
3958            /// consumer is supposed to call CloneSession() itself after the event.
3959            /// Use use_clone_snapshot_if_available=true when targeting older versions
3960            /// of perfetto.
3961            CloneSnapshot = 4,
3962        }
3963        impl TriggerMode {
3964            /// String value of the enum field names used in the ProtoBuf definition.
3965            ///
3966            /// The values are not transformed in any way and thus are considered stable
3967            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3968            pub fn as_str_name(&self) -> &'static str {
3969                match self {
3970                    TriggerMode::Unspecified => "UNSPECIFIED",
3971                    TriggerMode::StartTracing => "START_TRACING",
3972                    TriggerMode::StopTracing => "STOP_TRACING",
3973                    TriggerMode::CloneSnapshot => "CLONE_SNAPSHOT",
3974                }
3975            }
3976        }
3977    }
3978    /// Configuration for trace contents that reference earlier trace data. For
3979    /// example, a data source might intern strings, and emit packets containing
3980    /// {interned id : string} pairs. Future packets from that data source can then
3981    /// use the interned ids instead of duplicating the raw string contents. The
3982    /// trace parser will then need to use that interning table to fully interpret
3983    /// the rest of the trace.
3984    #[derive(Clone, PartialEq, ::prost::Message)]
3985    pub struct IncrementalStateConfig {
3986        /// If nonzero, notify eligible data sources to clear their incremental state
3987        /// periodically, with the given period. The notification is sent only to
3988        /// data sources that have |handles_incremental_state_clear| set in their
3989        /// DataSourceDescriptor. The notification requests that the data source
3990        /// stops referring to past trace contents. This is particularly useful when
3991        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
3992        /// trace data.
3993        ///
3994        /// Warning: this time-based global clearing is likely to be removed in the
3995        /// future, to be replaced with a smarter way of sending the notifications
3996        /// only when necessary.
3997        #[prost(uint32, optional, tag="1")]
3998        pub clear_period_ms: ::core::option::Option<u32>,
3999    }
4000    /// Android-only. Not for general use. If set, saves the trace into an
4001    /// incident. This field is read by perfetto_cmd, rather than the tracing
4002    /// service. This field must be set when passing the --upload flag to
4003    /// perfetto_cmd.
4004    ///
4005    /// In this message, either:
4006    ///   * all of |destination_package|, |destination_class| and |privacy_level|
4007    ///     must be set.
4008    ///   * |skip_incidentd| must be explicitly set to true.
4009    #[derive(Clone, PartialEq, ::prost::Message)]
4010    pub struct IncidentReportConfig {
4011        #[prost(string, optional, tag="1")]
4012        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
4013        #[prost(string, optional, tag="2")]
4014        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
4015        /// Level of filtering in the requested incident. See |Destination| in
4016        /// frameworks/base/core/proto/android/privacy.proto.
4017        #[prost(int32, optional, tag="3")]
4018        pub privacy_level: ::core::option::Option<i32>,
4019        /// If true, then skips saving the trace to incidentd.
4020        ///
4021        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
4022        /// or when we explicitly don't want traces to go to incidentd even when they
4023        /// usually would (e.g. configs deployed using statsd but only used for
4024        /// inclusion in bugreports using |bugreport_score|).
4025        ///
4026        /// The motivation for having this flag, instead of just not setting
4027        /// |incident_report_config|, is prevent accidents where
4028        /// |incident_report_config| is omitted by mistake.
4029        #[prost(bool, optional, tag="5")]
4030        pub skip_incidentd: ::core::option::Option<bool>,
4031        /// If true, do not write the trace into dropbox (i.e. incident only).
4032        /// Otherwise, write to both dropbox and incident.
4033        /// TODO(lalitm): remove this field as we no longer use Dropbox.
4034        #[deprecated]
4035        #[prost(bool, optional, tag="4")]
4036        pub skip_dropbox: ::core::option::Option<bool>,
4037    }
4038    /// When set applies a post-filter to the trace contents using the filter
4039    /// provided. The filter is applied at ReadBuffers() time and works both in the
4040    /// case of IPC readback and write_into_file. This filter can be generated
4041    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
4042    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
4043    /// design.
4044    ///
4045    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
4046    /// Android T with a different field number. Updated in Android U with a new
4047    /// bytecode version which supports string filtering.
4048    ///
4049    /// =========================
4050    /// Filter bytecode.
4051    /// =========================
4052    #[derive(Clone, PartialEq, ::prost::Message)]
4053    pub struct TraceFilter {
4054        /// The bytecode as implemented in Android T.
4055        #[prost(bytes="vec", optional, tag="1")]
4056        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4057        /// The bytecode as implemented in Android U. Adds support for string
4058        /// filtering.
4059        #[prost(bytes="vec", optional, tag="2")]
4060        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4061        #[prost(message, optional, tag="3")]
4062        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
4063    }
4064    /// Nested message and enum types in `TraceFilter`.
4065    pub mod trace_filter {
4066        /// A rule specifies how strings should be filtered.
4067        #[derive(Clone, PartialEq, ::prost::Message)]
4068        pub struct StringFilterRule {
4069            /// The policy (i.e. algorithm) dictating how strings matching this rule
4070            /// should be handled.
4071            #[prost(enumeration="StringFilterPolicy", optional, tag="1")]
4072            pub policy: ::core::option::Option<i32>,
4073            /// The regex pattern used to match against each string.
4074            #[prost(string, optional, tag="2")]
4075            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
4076            /// The string which should appear after the tgid in atrace tracepoint
4077            /// strings.
4078            #[prost(string, optional, tag="3")]
4079            pub atrace_payload_starts_with: ::core::option::Option<::prost::alloc::string::String>,
4080        }
4081        /// A chain is a list of rules which string will be sequentially checked
4082        /// against.
4083        #[derive(Clone, PartialEq, ::prost::Message)]
4084        pub struct StringFilterChain {
4085            #[prost(message, repeated, tag="1")]
4086            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
4087        }
4088        // =========================
4089        // String filtering
4090        // =========================
4091
4092        // The principles and terminology of string filtering is heavily inspired by
4093        // iptables. A "rule" decide how strings should be filtered. Each rule
4094        // contains a "policy" which indicates the algorithm to use for filtering.
4095        // A "chain" is a list of rules which will be sequentially checked against
4096        // each string.
4097        //
4098        // The first rule which applies to the string terminates filtering for that
4099        // string. If no rules apply, the string is left unchanged.
4100
4101        /// A policy specifies which algorithm should be used for filtering the
4102        /// string.
4103        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4104        #[repr(i32)]
4105        pub enum StringFilterPolicy {
4106            SfpUnspecified = 0,
4107            /// Tries to match the string field against |regex_pattern|. If it
4108            /// matches, all matching groups are "redacted" (i.e. replaced with a
4109            /// constant string) and filtering is terminated (i.e. no further rules are
4110            /// checked). If it doesn't match, the string is left unchanged and the
4111            /// next rule in chain is considered.
4112            SfpMatchRedactGroups = 1,
4113            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
4114            /// checking the regex. Specifically, it tries to parse the string field as
4115            /// an atrace tracepoint and checks if the post-tgid field starts with
4116            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
4117            /// this check succeeds.
4118            SfpAtraceMatchRedactGroups = 2,
4119            /// Tries to match the string field against |regex_pattern|. If it
4120            /// matches, filtering is terminated (i.e. no further rules are checked).
4121            /// If it doesn't match, the string is left unchanged and the next rule in
4122            /// chain is considered.
4123            SfpMatchBreak = 3,
4124            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
4125            /// the regex. Specifically, it tries to parse the string field as an
4126            /// atrace tracepoint and checks if the post-tgid field starts with
4127            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
4128            /// this check succeeds.
4129            SfpAtraceMatchBreak = 4,
4130            /// Tries to repeatedly search (i.e. find substrings of) the string field
4131            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
4132            /// replaced with a constant string). Once there are no further matches,
4133            /// filtering is terminated (i.e. no further rules are checked).
4134            ///
4135            /// Note that this is policy is a "search" policy not a "match" policy
4136            /// unlike the above policies:
4137            ///   * Match policies require matching the full string i.e. there is an
4138            ///     implicit leading `^` and trailing `$`.
4139            ///   * Search policies perform repeated partial matching of the string
4140            ///     e.g.
4141            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
4142            ///       - Pattern: `foo=(\d+)`
4143            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
4144            ///     where P6O is the redaction string
4145            ///
4146            /// All of this is only performed after some pre-work where we try to parse
4147            /// the string field as an atrace tracepoint and check if the post-tgid
4148            /// field starts with |atrace_post_tgid_starts_with|.
4149            ///
4150            /// If there are no partial matches, the string is left unchanged and the
4151            /// next rule in chain is considered.
4152            SfpAtraceRepeatedSearchRedactGroups = 5,
4153        }
4154        impl StringFilterPolicy {
4155            /// String value of the enum field names used in the ProtoBuf definition.
4156            ///
4157            /// The values are not transformed in any way and thus are considered stable
4158            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4159            pub fn as_str_name(&self) -> &'static str {
4160                match self {
4161                    StringFilterPolicy::SfpUnspecified => "SFP_UNSPECIFIED",
4162                    StringFilterPolicy::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
4163                    StringFilterPolicy::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
4164                    StringFilterPolicy::SfpMatchBreak => "SFP_MATCH_BREAK",
4165                    StringFilterPolicy::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
4166                    StringFilterPolicy::SfpAtraceRepeatedSearchRedactGroups => "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS",
4167                }
4168            }
4169        }
4170    }
4171    /// Android-only. Not for general use. If set, reports the trace to the
4172    /// Android framework. This field is read by perfetto_cmd, rather than the
4173    /// tracing service. This field must be set when passing the --upload flag to
4174    /// perfetto_cmd.
4175    ///
4176    /// In this message, either:
4177    ///   * |reporter_service_package| and |reporter_service_class| must be set.
4178    ///   * |skip_reporting| must be explicitly set to true.
4179    #[derive(Clone, PartialEq, ::prost::Message)]
4180    pub struct AndroidReportConfig {
4181        #[prost(string, optional, tag="1")]
4182        pub reporter_service_package: ::core::option::Option<::prost::alloc::string::String>,
4183        #[prost(string, optional, tag="2")]
4184        pub reporter_service_class: ::core::option::Option<::prost::alloc::string::String>,
4185        /// If true, then skips reporting the trace to Android framework.
4186        ///
4187        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
4188        /// or when we explicitly don't want to report traces to the framework even
4189        /// when they usually would (e.g. configs deployed using statsd but only
4190        /// used for inclusion in bugreports using |bugreport_score|).
4191        ///
4192        /// The motivation for having this flag, instead of just not setting
4193        /// |framework_report_config|, is prevent accidents where
4194        /// |framework_report_config| is omitted by mistake.
4195        #[prost(bool, optional, tag="3")]
4196        pub skip_report: ::core::option::Option<bool>,
4197        /// If true, will direct the Android framework to read the data in trace
4198        /// file and pass it to the reporter class over a pipe instead of passing
4199        /// the file descriptor directly.
4200        ///
4201        /// This flag is needed because the Android test framework does not
4202        /// currently support priv-app helper apps (in terms of SELinux) and we
4203        /// really don't want to add an allow rule for untrusted_app to receive
4204        /// trace fds.
4205        ///
4206        /// Because of this, we instead will direct the framework to create a new
4207        /// pipe and pass this to the reporter process instead. As the pipe is
4208        /// created by the framework, we won't have any problems with SELinux
4209        /// (system_server is already allowed to pass pipe fds, even
4210        /// to untrusted apps).
4211        ///
4212        /// As the name suggests this option *MUST* only be used for testing.
4213        /// Note that the framework will reject (and drop) files which are too
4214        /// large both for simplicity and to be minimize the amount of data we
4215        /// pass to a non-priv app (note that the framework will still check
4216        /// manifest permissions even though SELinux permissions are worked around).
4217        #[prost(bool, optional, tag="4")]
4218        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
4219    }
4220    /// If set, delays the start of tracing by a random duration. The duration is
4221    /// chosen from a uniform distribution between the specified minimum and
4222    /// maximum.
4223    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
4224    /// not work if you communicate with traced directly over the consumer API.
4225    /// Introduced in Android T.
4226    #[derive(Clone, PartialEq, ::prost::Message)]
4227    pub struct CmdTraceStartDelay {
4228        #[prost(uint32, optional, tag="1")]
4229        pub min_delay_ms: ::core::option::Option<u32>,
4230        #[prost(uint32, optional, tag="2")]
4231        pub max_delay_ms: ::core::option::Option<u32>,
4232    }
4233    /// When non-empty, ensures that for a each semaphore named `name at most
4234    /// `max_other_session_count`` *other* sessions (whose value is taken of the
4235    /// minimum of all values specified by this config or any already-running
4236    /// session) can be be running.
4237    ///
4238    /// If a semaphore "acquisition" fails, EnableTracing will return an error
4239    /// and the tracing session will not be started (or elgible to start in
4240    /// the case of deferred sessions).
4241    ///
4242    /// This is easiest to explain with an example. Suppose the tracing service has
4243    /// the following active tracing sessions:
4244    ///    S1 = [{name=foo, max_other_session_count=2},
4245    ///          {name=bar, max_other_session_count=0}]
4246    ///    S2 = [{name=foo, max_other_session_count=1},
4247    ///          {name=baz, max_other_session_count=1}]
4248    ///
4249    /// Then, for a new session, the following would be the expected behaviour of
4250    /// EnableSession given the state of `session_semaphores`.
4251    ///    Q: session_semaphores = []
4252    ///    A: Allowed because it does not specify any semaphores. Will be allowed
4253    ///       no matter the state of any other tracing session.
4254    ///    Q: session_semaphores = [{name=baz, max_other_session_count=1}]
4255    ///    A: Allowed because both S2 and this config specify
4256    ///       max_other_session_count=1 for baz.
4257    ///    Q: session_semaphores = [{name=foo, max_other_session_count=3}]
4258    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
4259    ///       takes that slot.
4260    ///    Q: session_semaphores = [{name=bar, max_other_session_count=0}]
4261    ///    A: Denied because S1 takes the the slot specified by both S1 and
4262    ///       this config.
4263    ///
4264    /// Introduced in 24Q3 (Android V).
4265    #[derive(Clone, PartialEq, ::prost::Message)]
4266    pub struct SessionSemaphore {
4267        /// The name of the semaphore. Acts as a unique identifier across all
4268        /// tracing sessions (including the one being started).
4269        #[prost(string, optional, tag="1")]
4270        pub name: ::core::option::Option<::prost::alloc::string::String>,
4271        /// The maximum number of *other* sesssions which specify the same semaphore
4272        /// which can be active. The minimum of this value across all tracing
4273        /// sessions and the value specified by the config is used when deciding
4274        /// whether the tracing session can be started.
4275        #[prost(uint64, optional, tag="2")]
4276        pub max_other_session_count: ::core::option::Option<u64>,
4277    }
4278    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4279    #[repr(i32)]
4280    pub enum LockdownModeOperation {
4281        LockdownUnchanged = 0,
4282        LockdownClear = 1,
4283        LockdownSet = 2,
4284    }
4285    impl LockdownModeOperation {
4286        /// String value of the enum field names used in the ProtoBuf definition.
4287        ///
4288        /// The values are not transformed in any way and thus are considered stable
4289        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4290        pub fn as_str_name(&self) -> &'static str {
4291            match self {
4292                LockdownModeOperation::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
4293                LockdownModeOperation::LockdownClear => "LOCKDOWN_CLEAR",
4294                LockdownModeOperation::LockdownSet => "LOCKDOWN_SET",
4295            }
4296        }
4297    }
4298    /// Compress trace with the given method. Best effort.
4299    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4300    #[repr(i32)]
4301    pub enum CompressionType {
4302        Unspecified = 0,
4303        Deflate = 1,
4304    }
4305    impl CompressionType {
4306        /// String value of the enum field names used in the ProtoBuf definition.
4307        ///
4308        /// The values are not transformed in any way and thus are considered stable
4309        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4310        pub fn as_str_name(&self) -> &'static str {
4311            match self {
4312                CompressionType::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
4313                CompressionType::Deflate => "COMPRESSION_TYPE_DEFLATE",
4314            }
4315        }
4316    }
4317    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4318    #[repr(i32)]
4319    pub enum StatsdLogging {
4320        Unspecified = 0,
4321        Enabled = 1,
4322        Disabled = 2,
4323    }
4324    impl StatsdLogging {
4325        /// String value of the enum field names used in the ProtoBuf definition.
4326        ///
4327        /// The values are not transformed in any way and thus are considered stable
4328        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4329        pub fn as_str_name(&self) -> &'static str {
4330            match self {
4331                StatsdLogging::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
4332                StatsdLogging::Enabled => "STATSD_LOGGING_ENABLED",
4333                StatsdLogging::Disabled => "STATSD_LOGGING_DISABLED",
4334            }
4335        }
4336    }
4337}
4338// End of protos/perfetto/config/trace_config.proto
4339
4340// Begin of protos/perfetto/common/system_info.proto
4341
4342#[derive(Clone, PartialEq, ::prost::Message)]
4343pub struct Utsname {
4344    #[prost(string, optional, tag="1")]
4345    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
4346    #[prost(string, optional, tag="2")]
4347    pub version: ::core::option::Option<::prost::alloc::string::String>,
4348    #[prost(string, optional, tag="3")]
4349    pub release: ::core::option::Option<::prost::alloc::string::String>,
4350    #[prost(string, optional, tag="4")]
4351    pub machine: ::core::option::Option<::prost::alloc::string::String>,
4352}
4353/// Next id: 16
4354#[derive(Clone, PartialEq, ::prost::Message)]
4355pub struct SystemInfo {
4356    #[prost(message, optional, tag="1")]
4357    pub utsname: ::core::option::Option<Utsname>,
4358    #[prost(string, optional, tag="2")]
4359    pub android_build_fingerprint: ::core::option::Option<::prost::alloc::string::String>,
4360    /// The manufacturer of the product/hardware.
4361    /// Source : "ro.product.manufacturer"
4362    /// Introduced after Android W in Nov 2024 and is not supported on older
4363    /// versions.
4364    #[prost(string, optional, tag="14")]
4365    pub android_device_manufacturer: ::core::option::Option<::prost::alloc::string::String>,
4366    /// The SoC model from which trace is collected
4367    #[prost(string, optional, tag="9")]
4368    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4369    /// The guest SoC model from which trace is collected in case of VMs
4370    #[prost(string, optional, tag="13")]
4371    pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
4372    /// The hardware reversion from android device
4373    #[prost(string, optional, tag="10")]
4374    pub android_hardware_revision: ::core::option::Option<::prost::alloc::string::String>,
4375    /// The storage component from android_device. This field has been introduced
4376    /// after Android W in Aug 2024 and is not supported on older versions.
4377    #[prost(string, optional, tag="11")]
4378    pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
4379    /// The RAM component information from android device. This field has been
4380    /// introduced after Android W in Aug 2024 and is not supported on older
4381    /// versions.
4382    #[prost(string, optional, tag="12")]
4383    pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
4384    /// The serial console information from android device.
4385    #[prost(string, optional, tag="15")]
4386    pub android_serial_console: ::core::option::Option<::prost::alloc::string::String>,
4387    /// The version of traced (the same returned by `traced --version`).
4388    /// This is a human readable string with and its format varies depending on
4389    /// the build system and the repo (standalone vs AOSP).
4390    /// This is intended for human debugging only.
4391    #[prost(string, optional, tag="4")]
4392    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
4393    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
4394    /// Introduced in Android T.
4395    #[prost(uint64, optional, tag="5")]
4396    pub android_sdk_version: ::core::option::Option<u64>,
4397    /// Kernel page size - sysconf(_SC_PAGESIZE).
4398    #[prost(uint32, optional, tag="6")]
4399    pub page_size: ::core::option::Option<u32>,
4400    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
4401    /// Might be different to the number of online cpus.
4402    /// Introduced in perfetto v44.
4403    #[prost(uint32, optional, tag="8")]
4404    pub num_cpus: ::core::option::Option<u32>,
4405    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
4406    /// Introduced in v38 / Android V.
4407    #[prost(int32, optional, tag="7")]
4408    pub timezone_off_mins: ::core::option::Option<i32>,
4409    /// Ticks per second - sysconf(_SC_CLK_TCK).
4410    /// Not serialised as of perfetto v44.
4411    #[prost(int64, optional, tag="3")]
4412    pub hz: ::core::option::Option<i64>,
4413}
4414// End of protos/perfetto/common/system_info.proto
4415
4416// Begin of protos/perfetto/common/trace_stats.proto
4417
4418/// Statistics for the internals of the tracing service.
4419///
4420/// Next id: 19.
4421#[derive(Clone, PartialEq, ::prost::Message)]
4422pub struct TraceStats {
4423    /// Stats for the TraceBuffer(s) of the current trace session.
4424    #[prost(message, repeated, tag="1")]
4425    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
4426    /// The thresholds of each the `writer_stats` histogram buckets. This is
4427    /// emitted only once as all WriterStats share the same bucket layout.
4428    /// This field has the same cardinality of the
4429    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
4430    /// (The -1 is because the last overflow bucket is not reported in the _def).
4431    /// An array of values [10, 100, 1000] in the _def array means that there are
4432    /// four buckets (3 + the implicit overflow bucket):
4433    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
4434    #[prost(int64, repeated, packed="false", tag="17")]
4435    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
4436    #[prost(message, repeated, tag="18")]
4437    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
4438    /// Num. producers connected (whether they are involved in the current tracing
4439    /// session or not).
4440    #[prost(uint32, optional, tag="2")]
4441    pub producers_connected: ::core::option::Option<u32>,
4442    /// Num. producers ever seen for all trace sessions since startup (it's a good
4443    /// proxy for inferring num. producers crashed / killed).
4444    #[prost(uint64, optional, tag="3")]
4445    pub producers_seen: ::core::option::Option<u64>,
4446    /// Num. data sources registered for all trace sessions.
4447    #[prost(uint32, optional, tag="4")]
4448    pub data_sources_registered: ::core::option::Option<u32>,
4449    /// Num. data sources ever seen for all trace sessions since startup.
4450    #[prost(uint64, optional, tag="5")]
4451    pub data_sources_seen: ::core::option::Option<u64>,
4452    /// Num. concurrently active tracing sessions.
4453    #[prost(uint32, optional, tag="6")]
4454    pub tracing_sessions: ::core::option::Option<u32>,
4455    /// Num. buffers for all tracing session (not just the current one). This will
4456    /// be >= buffer_stats.size(), because the latter is only about the current
4457    /// session.
4458    #[prost(uint32, optional, tag="7")]
4459    pub total_buffers: ::core::option::Option<u32>,
4460    // The fields below have been introduced in Android Q.
4461
4462    /// Num. chunks that were discarded by the service before attempting to commit
4463    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
4464    #[prost(uint64, optional, tag="8")]
4465    pub chunks_discarded: ::core::option::Option<u64>,
4466    /// Num. patches that were discarded by the service before attempting to apply
4467    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
4468    #[prost(uint64, optional, tag="9")]
4469    pub patches_discarded: ::core::option::Option<u64>,
4470    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
4471    /// is a bug in the producer.
4472    #[prost(uint64, optional, tag="10")]
4473    pub invalid_packets: ::core::option::Option<u64>,
4474    #[prost(message, optional, tag="11")]
4475    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
4476    /// Count of Flush() requests (either from the Consumer, or self-induced
4477    /// periodic flushes). The final Flush() is also included in the count.
4478    #[prost(uint64, optional, tag="12")]
4479    pub flushes_requested: ::core::option::Option<u64>,
4480    /// The count of the Flush() requests that were completed successfully.
4481    /// In a well behaving trace this should always be == `flush_requests`.
4482    #[prost(uint64, optional, tag="13")]
4483    pub flushes_succeeded: ::core::option::Option<u64>,
4484    /// The count of the Flush() requests that failed (in most timed out).
4485    /// In a well behaving trace this should always be == 0.
4486    #[prost(uint64, optional, tag="14")]
4487    pub flushes_failed: ::core::option::Option<u64>,
4488    #[prost(enumeration="trace_stats::FinalFlushOutcome", optional, tag="15")]
4489    pub final_flush_outcome: ::core::option::Option<i32>,
4490}
4491/// Nested message and enum types in `TraceStats`.
4492pub mod trace_stats {
4493    /// From TraceBuffer::Stats.
4494    ///
4495    /// Next id: 21.
4496    #[derive(Clone, PartialEq, ::prost::Message)]
4497    pub struct BufferStats {
4498        /// Size of the circular buffer in bytes.
4499        #[prost(uint64, optional, tag="12")]
4500        pub buffer_size: ::core::option::Option<u64>,
4501        /// Num. bytes written into the circular buffer, including chunk headers.
4502        #[prost(uint64, optional, tag="1")]
4503        pub bytes_written: ::core::option::Option<u64>,
4504        /// Num. bytes overwritten before they have been read (i.e. loss of data).
4505        #[prost(uint64, optional, tag="13")]
4506        pub bytes_overwritten: ::core::option::Option<u64>,
4507        /// Total size of chunks that were fully read from the circular buffer by the
4508        /// consumer. This may not be equal to |bytes_written| either in the middle
4509        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
4510        /// size of the chunks read from the buffer, including chunk headers, which
4511        /// will be different from the total size of packets returned to the
4512        /// consumer.
4513        ///
4514        /// The current utilization of the trace buffer (mid-tracing) can be obtained
4515        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
4516        /// adding the difference of |padding_bytes_written| and
4517        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
4518        /// Note that this represents the total size of buffered data in the buffer,
4519        /// yet this data may be spread non-contiguously through the buffer and may
4520        /// be overridden before the utilization reaches 100%.
4521        #[prost(uint64, optional, tag="14")]
4522        pub bytes_read: ::core::option::Option<u64>,
4523        /// Num. bytes that were allocated as padding between chunks in the circular
4524        /// buffer.
4525        #[prost(uint64, optional, tag="15")]
4526        pub padding_bytes_written: ::core::option::Option<u64>,
4527        /// Num. of padding bytes that were removed from the circular buffer when
4528        /// they were overwritten.
4529        ///
4530        /// The difference between |padding_bytes_written| and
4531        /// |padding_bytes_cleared| denotes the total size of padding currently
4532        /// present in the buffer.
4533        #[prost(uint64, optional, tag="16")]
4534        pub padding_bytes_cleared: ::core::option::Option<u64>,
4535        /// Num. chunks (!= packets) written into the buffer.
4536        #[prost(uint64, optional, tag="2")]
4537        pub chunks_written: ::core::option::Option<u64>,
4538        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
4539        /// the same chunk with additional packets appended to the end.
4540        #[prost(uint64, optional, tag="10")]
4541        pub chunks_rewritten: ::core::option::Option<u64>,
4542        /// Num. chunks overwritten before they have been read (i.e. loss of data).
4543        #[prost(uint64, optional, tag="3")]
4544        pub chunks_overwritten: ::core::option::Option<u64>,
4545        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
4546        /// is configured with FillPolicy == DISCARD.
4547        #[prost(uint64, optional, tag="18")]
4548        pub chunks_discarded: ::core::option::Option<u64>,
4549        /// Num. chunks (!= packets) that were fully read from the circular buffer by
4550        /// the consumer. This may not be equal to |chunks_written| either in the
4551        /// middle of tracing, or if |chunks_overwritten| is non-zero.
4552        #[prost(uint64, optional, tag="17")]
4553        pub chunks_read: ::core::option::Option<u64>,
4554        /// Num. chunks that were committed out of order.
4555        #[prost(uint64, optional, tag="11")]
4556        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
4557        /// Num. times the ring buffer wrapped around.
4558        #[prost(uint64, optional, tag="4")]
4559        pub write_wrap_count: ::core::option::Option<u64>,
4560        /// Num. out-of-band (OOB) patches that succeeded.
4561        #[prost(uint64, optional, tag="5")]
4562        pub patches_succeeded: ::core::option::Option<u64>,
4563        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
4564        #[prost(uint64, optional, tag="6")]
4565        pub patches_failed: ::core::option::Option<u64>,
4566        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
4567        /// successful packet read.
4568        #[prost(uint64, optional, tag="7")]
4569        pub readaheads_succeeded: ::core::option::Option<u64>,
4570        /// Num. readaheads aborted because of missing chunks in the sequence stream.
4571        /// Note that a small number > 0 is totally expected: occasionally, when
4572        /// issuing a read, the very last packet in a sequence might be incomplete
4573        /// (because the producer is still writing it while we read). The read will
4574        /// stop at that point, for that sequence, increasing this counter.
4575        #[prost(uint64, optional, tag="8")]
4576        pub readaheads_failed: ::core::option::Option<u64>,
4577        /// Num. of violations of the SharedMemoryABI found while writing or reading
4578        /// the buffer. This is an indication of either a bug in the producer(s) or
4579        /// malicious producer(s).
4580        #[prost(uint64, optional, tag="9")]
4581        pub abi_violations: ::core::option::Option<u64>,
4582        // The fields below have been introduced in Android R.
4583
4584        /// Num. of times the service detected packet loss on a trace writer
4585        /// sequence. This is usually caused by exhaustion of available chunks in the
4586        /// writer process's SMB. Note that this relies on the client's TraceWriter
4587        /// indicating this loss to the service -- packets lost for other reasons are
4588        /// not reflected in this stat.
4589        #[prost(uint64, optional, tag="19")]
4590        pub trace_writer_packet_loss: ::core::option::Option<u64>,
4591    }
4592    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
4593    /// visible as a unique sequence ID in the trace.
4594    #[derive(Clone, PartialEq, ::prost::Message)]
4595    pub struct WriterStats {
4596        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
4597        /// correlate the stats with the actual packet types.
4598        #[prost(uint64, optional, tag="1")]
4599        pub sequence_id: ::core::option::Option<u64>,
4600        /// The buffer index (0..N, as defined in the TraceConfig).
4601        #[prost(uint32, optional, tag="4")]
4602        pub buffer: ::core::option::Option<u32>,
4603        /// These two arrays have the same cardinality and match the cardinality of
4604        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
4605        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
4606        /// for each bucket.
4607        #[prost(uint64, repeated, tag="2")]
4608        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
4609        #[prost(int64, repeated, tag="3")]
4610        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
4611    }
4612    /// This is set only when the TraceConfig specifies a TraceFilter.
4613    #[derive(Clone, PartialEq, ::prost::Message)]
4614    pub struct FilterStats {
4615        #[prost(uint64, optional, tag="1")]
4616        pub input_packets: ::core::option::Option<u64>,
4617        #[prost(uint64, optional, tag="2")]
4618        pub input_bytes: ::core::option::Option<u64>,
4619        #[prost(uint64, optional, tag="3")]
4620        pub output_bytes: ::core::option::Option<u64>,
4621        #[prost(uint64, optional, tag="4")]
4622        pub errors: ::core::option::Option<u64>,
4623        #[prost(uint64, optional, tag="5")]
4624        pub time_taken_ns: ::core::option::Option<u64>,
4625        /// The number of bytes discarded by the filter (i.e. output - input).
4626        /// The array has one entry for each buffer defined in the config (unless no
4627        /// packets for that buffer were seen and hence filtered).
4628        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
4629        /// (output_bytes - input_bytes) because the filter might also discard
4630        /// server-generated synthetic packets, that have no buffer index.
4631        #[prost(uint64, repeated, packed="false", tag="20")]
4632        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
4633    }
4634    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4635    #[repr(i32)]
4636    pub enum FinalFlushOutcome {
4637        FinalFlushUnspecified = 0,
4638        FinalFlushSucceeded = 1,
4639        FinalFlushFailed = 2,
4640    }
4641    impl FinalFlushOutcome {
4642        /// String value of the enum field names used in the ProtoBuf definition.
4643        ///
4644        /// The values are not transformed in any way and thus are considered stable
4645        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4646        pub fn as_str_name(&self) -> &'static str {
4647            match self {
4648                FinalFlushOutcome::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
4649                FinalFlushOutcome::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
4650                FinalFlushOutcome::FinalFlushFailed => "FINAL_FLUSH_FAILED",
4651            }
4652        }
4653    }
4654}
4655// End of protos/perfetto/common/trace_stats.proto
4656
4657// Begin of protos/perfetto/trace/android/android_game_intervention_list.proto
4658
4659#[derive(Clone, PartialEq, ::prost::Message)]
4660pub struct AndroidGameInterventionList {
4661    #[prost(message, repeated, tag="1")]
4662    pub game_packages: ::prost::alloc::vec::Vec<android_game_intervention_list::GamePackageInfo>,
4663    /// True when at least one error occurred when parsing
4664    /// game_mode_intervention.list
4665    #[prost(bool, optional, tag="2")]
4666    pub parse_error: ::core::option::Option<bool>,
4667    /// Failed to open / read game_mode_intervention.list
4668    #[prost(bool, optional, tag="3")]
4669    pub read_error: ::core::option::Option<bool>,
4670}
4671/// Nested message and enum types in `AndroidGameInterventionList`.
4672pub mod android_game_intervention_list {
4673    #[derive(Clone, PartialEq, ::prost::Message)]
4674    pub struct GameModeInfo {
4675        #[prost(uint32, optional, tag="1")]
4676        pub mode: ::core::option::Option<u32>,
4677        #[prost(bool, optional, tag="2")]
4678        pub use_angle: ::core::option::Option<bool>,
4679        #[prost(float, optional, tag="3")]
4680        pub resolution_downscale: ::core::option::Option<f32>,
4681        #[prost(float, optional, tag="4")]
4682        pub fps: ::core::option::Option<f32>,
4683    }
4684    #[derive(Clone, PartialEq, ::prost::Message)]
4685    pub struct GamePackageInfo {
4686        #[prost(string, optional, tag="1")]
4687        pub name: ::core::option::Option<::prost::alloc::string::String>,
4688        #[prost(uint64, optional, tag="2")]
4689        pub uid: ::core::option::Option<u64>,
4690        #[prost(uint32, optional, tag="3")]
4691        pub current_mode: ::core::option::Option<u32>,
4692        #[prost(message, repeated, tag="4")]
4693        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
4694    }
4695}
4696// End of protos/perfetto/trace/android/android_game_intervention_list.proto
4697
4698// Begin of protos/perfetto/trace/android/android_log.proto
4699
4700#[derive(Clone, PartialEq, ::prost::Message)]
4701pub struct AndroidLogPacket {
4702    #[prost(message, repeated, tag="1")]
4703    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
4704    #[prost(message, optional, tag="2")]
4705    pub stats: ::core::option::Option<android_log_packet::Stats>,
4706}
4707/// Nested message and enum types in `AndroidLogPacket`.
4708pub mod android_log_packet {
4709    #[derive(Clone, PartialEq, ::prost::Message)]
4710    pub struct LogEvent {
4711        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
4712        #[prost(enumeration="super::AndroidLogId", optional, tag="1")]
4713        pub log_id: ::core::option::Option<i32>,
4714        /// PID (TGID), TID and UID of the task that emitted the event.
4715        #[prost(int32, optional, tag="2")]
4716        pub pid: ::core::option::Option<i32>,
4717        #[prost(int32, optional, tag="3")]
4718        pub tid: ::core::option::Option<i32>,
4719        #[prost(int32, optional, tag="4")]
4720        pub uid: ::core::option::Option<i32>,
4721        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
4722        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
4723        /// processor will take care of realigning clocks using the ClockSnapshot(s).
4724        #[prost(uint64, optional, tag="5")]
4725        pub timestamp: ::core::option::Option<u64>,
4726        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
4727        /// the second column of /system/etc/event-log-tags. For all other events,
4728        /// |tag| is the app-specified argument passed to __android_log_write().
4729        #[prost(string, optional, tag="6")]
4730        pub tag: ::core::option::Option<::prost::alloc::string::String>,
4731        /// Empty when log_id == LID_EVENTS.
4732        #[prost(enumeration="super::AndroidLogPriority", optional, tag="7")]
4733        pub prio: ::core::option::Option<i32>,
4734        /// Empty when log_id == LID_EVENTS.
4735        #[prost(string, optional, tag="8")]
4736        pub message: ::core::option::Option<::prost::alloc::string::String>,
4737        /// Only populated when log_id == LID_EVENTS.
4738        #[prost(message, repeated, tag="9")]
4739        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
4740    }
4741    /// Nested message and enum types in `LogEvent`.
4742    pub mod log_event {
4743        #[derive(Clone, PartialEq, ::prost::Message)]
4744        pub struct Arg {
4745            #[prost(string, optional, tag="1")]
4746            pub name: ::core::option::Option<::prost::alloc::string::String>,
4747            #[prost(oneof="arg::Value", tags="2, 3, 4")]
4748            pub value: ::core::option::Option<arg::Value>,
4749        }
4750        /// Nested message and enum types in `Arg`.
4751        pub mod arg {
4752            #[derive(Clone, PartialEq, ::prost::Oneof)]
4753            pub enum Value {
4754                #[prost(int64, tag="2")]
4755                IntValue(i64),
4756                #[prost(float, tag="3")]
4757                FloatValue(f32),
4758                #[prost(string, tag="4")]
4759                StringValue(::prost::alloc::string::String),
4760            }
4761        }
4762    }
4763    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
4764    /// absolute counters since the beginning of the lifetime of the tracing
4765    /// session and NOT relative to the previous Stats snapshot).
4766    #[derive(Clone, PartialEq, ::prost::Message)]
4767    pub struct Stats {
4768        /// Total number of log events seen, including errors and skipped entries
4769        /// (num of events stored in the trace = total - failed - skipped).
4770        #[prost(uint64, optional, tag="1")]
4771        pub num_total: ::core::option::Option<u64>,
4772        /// Parser failures.
4773        #[prost(uint64, optional, tag="2")]
4774        pub num_failed: ::core::option::Option<u64>,
4775        /// Messages skipped due to filters.
4776        #[prost(uint64, optional, tag="3")]
4777        pub num_skipped: ::core::option::Option<u64>,
4778    }
4779}
4780// End of protos/perfetto/trace/android/android_log.proto
4781
4782// Begin of protos/perfetto/trace/android/android_system_property.proto
4783
4784#[derive(Clone, PartialEq, ::prost::Message)]
4785pub struct AndroidSystemProperty {
4786    #[prost(message, repeated, tag="1")]
4787    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
4788}
4789/// Nested message and enum types in `AndroidSystemProperty`.
4790pub mod android_system_property {
4791    #[derive(Clone, PartialEq, ::prost::Message)]
4792    pub struct PropertyValue {
4793        #[prost(string, optional, tag="1")]
4794        pub name: ::core::option::Option<::prost::alloc::string::String>,
4795        #[prost(string, optional, tag="2")]
4796        pub value: ::core::option::Option<::prost::alloc::string::String>,
4797    }
4798}
4799// End of protos/perfetto/trace/android/android_system_property.proto
4800
4801// Begin of protos/perfetto/trace/android/app_wakelock_data.proto
4802
4803/// AppWakelockInfo describes the time-independent properties of a wakelock, such
4804/// as the owning package or wakelock tag. This is interned to reduce trace size.
4805/// Event bundles refer to interned wakelock info by the iid.
4806#[derive(Clone, PartialEq, ::prost::Message)]
4807pub struct AppWakelockInfo {
4808    /// The interned id of this wakelock.
4809    #[prost(int32, optional, tag="1")]
4810    pub iid: ::core::option::Option<i32>,
4811    /// The app-provided tag of the wakelock.
4812    #[prost(string, optional, tag="2")]
4813    pub tag: ::core::option::Option<::prost::alloc::string::String>,
4814    /// The wakelock flags (such as partial vs full).
4815    #[prost(int32, optional, tag="3")]
4816    pub flags: ::core::option::Option<i32>,
4817    /// The pid that created the wakelock.
4818    #[prost(int32, optional, tag="4")]
4819    pub owner_pid: ::core::option::Option<i32>,
4820    /// The uid that created the wakelock.
4821    #[prost(int32, optional, tag="5")]
4822    pub owner_uid: ::core::option::Option<i32>,
4823    /// The uid of the work source root (if present).
4824    #[prost(int32, optional, tag="6")]
4825    pub work_uid: ::core::option::Option<i32>,
4826}
4827/// AppWakelockBundle describes one or more wakelock events. Events are written
4828/// in two paired array, such that the details for event i are in intern_id\[i\]
4829/// and encoded_ts\[i\].
4830#[derive(Clone, PartialEq, ::prost::Message)]
4831pub struct AppWakelockBundle {
4832    /// The interned id for the WakelockInfo of the event.
4833    #[prost(uint32, repeated, tag="1")]
4834    pub intern_id: ::prost::alloc::vec::Vec<u32>,
4835    /// The timestamp and event type, encoded as:
4836    ///    (event_time - packet_time) << 1 | (acquired ? 1 : 0)
4837    #[prost(uint64, repeated, tag="2")]
4838    pub encoded_ts: ::prost::alloc::vec::Vec<u64>,
4839    /// For writing single packets (mainly by tokenization).
4840    #[prost(message, optional, tag="3")]
4841    pub info: ::core::option::Option<AppWakelockInfo>,
4842    #[prost(bool, optional, tag="4")]
4843    pub acquired: ::core::option::Option<bool>,
4844}
4845/// Trace event for bluetooth
4846#[derive(Clone, PartialEq, ::prost::Message)]
4847pub struct BluetoothTraceEvent {
4848    /// Packet type and direction
4849    #[prost(enumeration="BluetoothTracePacketType", optional, tag="1")]
4850    pub packet_type: ::core::option::Option<i32>,
4851    /// Total count of the packets collected during the collection interval
4852    #[prost(uint32, optional, tag="2")]
4853    pub count: ::core::option::Option<u32>,
4854    /// Total cumulative length of the packets collected during the collection
4855    /// interval
4856    #[prost(uint32, optional, tag="3")]
4857    pub length: ::core::option::Option<u32>,
4858    /// The collection interval in nanoseconds. This is the duration between the
4859    /// first and last packets collected.
4860    #[prost(uint32, optional, tag="4")]
4861    pub duration: ::core::option::Option<u32>,
4862    /// In case of CMD type, further breakdown of the type of command
4863    #[prost(uint32, optional, tag="5")]
4864    pub op_code: ::core::option::Option<u32>,
4865    /// In the case of EVT type, further breakdown of the type of event
4866    #[prost(uint32, optional, tag="6")]
4867    pub event_code: ::core::option::Option<u32>,
4868    /// When applicable for EVT type, further breakdown of event type into specific
4869    /// subevent
4870    #[prost(uint32, optional, tag="7")]
4871    pub subevent_code: ::core::option::Option<u32>,
4872    /// Associated handle for the bluetooth packet
4873    #[prost(uint32, optional, tag="8")]
4874    pub connection_handle: ::core::option::Option<u32>,
4875}
4876// End of protos/perfetto/trace/android/bluetooth_trace.proto
4877
4878// Begin of protos/perfetto/trace/android/camera_event.proto
4879
4880/// A profiling event corresponding to a single camera frame. This message
4881/// collects important details and timestamps involved in producing a single
4882/// camera frame.
4883/// Next ID: 17
4884#[derive(Clone, PartialEq, ::prost::Message)]
4885pub struct AndroidCameraFrameEvent {
4886    /// Identifier for the CameraCaptureSession this frame originates from. See:
4887    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
4888    #[prost(uint64, optional, tag="1")]
4889    pub session_id: ::core::option::Option<u64>,
4890    /// Identifier for the camera sensor that is the source of this frame. This may
4891    /// be either a physical or logical camera (up to vendor interpretation).
4892    #[prost(uint32, optional, tag="2")]
4893    pub camera_id: ::core::option::Option<u32>,
4894    /// The frame number identifying this frame on this camera.
4895    #[prost(int64, optional, tag="3")]
4896    pub frame_number: ::core::option::Option<i64>,
4897    /// Identifier for the CaptureRequest. See:
4898    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest>
4899    ///
4900    /// If multiple cameras are streaming simultaneously, the request_id may be
4901    /// used to identify which frames were captured in service of the same request.
4902    #[prost(int64, optional, tag="4")]
4903    pub request_id: ::core::option::Option<i64>,
4904    /// The CLOCK_BOOTTIME timestamp at which the camera framework request is
4905    /// received by the camera HAL pipeline. Note that this request may wait for
4906    /// some time before processing actually begins. See also
4907    /// request_processing_started_ns.
4908    #[prost(int64, optional, tag="5")]
4909    pub request_received_ns: ::core::option::Option<i64>,
4910    /// The CLOCK_BOOTTIME timestamp at which the framework request is accepted for
4911    /// processing by the camera HAL pipeline. This is the time at which the
4912    /// pipeline actually begins to work on the request.
4913    #[prost(int64, optional, tag="6")]
4914    pub request_processing_started_ns: ::core::option::Option<i64>,
4915    /// The CLOCK_BOOTTIME timestamp at which the sensor begins its exposure.
4916    #[prost(int64, optional, tag="7")]
4917    pub start_of_exposure_ns: ::core::option::Option<i64>,
4918    /// The CLOCK_BOOTTIME timestamp corresponding to the sensor start of frame
4919    /// event.
4920    #[prost(int64, optional, tag="8")]
4921    pub start_of_frame_ns: ::core::option::Option<i64>,
4922    /// The CLOCK_BOOTTIME timestamp at which the camera HAL has sent all responses
4923    /// for the frame.
4924    #[prost(int64, optional, tag="9")]
4925    pub responses_all_sent_ns: ::core::option::Option<i64>,
4926    #[prost(enumeration="android_camera_frame_event::CaptureResultStatus", optional, tag="10")]
4927    pub capture_result_status: ::core::option::Option<i32>,
4928    /// The number of sensor frames that were skipped between this frame and the
4929    /// previous frame. Under normal operation, this should be zero. Any number
4930    /// greater than zero indicates dropped sensor frames.
4931    #[prost(int32, optional, tag="11")]
4932    pub skipped_sensor_frames: ::core::option::Option<i32>,
4933    /// The value of CONTROL_CAPTURE_INTENT. See:
4934    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#CONTROL_CAPTURE_INTENT>
4935    #[prost(int32, optional, tag="12")]
4936    pub capture_intent: ::core::option::Option<i32>,
4937    /// The number of streams in the capture request.
4938    #[prost(int32, optional, tag="13")]
4939    pub num_streams: ::core::option::Option<i32>,
4940    #[prost(message, repeated, tag="14")]
4941    pub node_processing_details: ::prost::alloc::vec::Vec<android_camera_frame_event::CameraNodeProcessingDetails>,
4942    /// These fields capture vendor-specific additions to this proto message. In
4943    /// practice `vendor_data` typically contains a serialized message of the
4944    /// vendor's design, and `vendor_data_version` is incremented each time there
4945    /// is a backwards incompatible change made to the message.
4946    #[prost(int32, optional, tag="15")]
4947    pub vendor_data_version: ::core::option::Option<i32>,
4948    #[prost(bytes="vec", optional, tag="16")]
4949    pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4950}
4951/// Nested message and enum types in `AndroidCameraFrameEvent`.
4952pub mod android_camera_frame_event {
4953    /// A profiling event corresponding to a single node processing within the
4954    /// camera pipeline. Intuitively this corresponds to a single stage of
4955    /// processing to produce a camera frame. Next ID: 6
4956    #[derive(Clone, PartialEq, ::prost::Message)]
4957    pub struct CameraNodeProcessingDetails {
4958        #[prost(int64, optional, tag="1")]
4959        pub node_id: ::core::option::Option<i64>,
4960        /// The timestamp at which node processing begins to run.
4961        #[prost(int64, optional, tag="2")]
4962        pub start_processing_ns: ::core::option::Option<i64>,
4963        /// The timestamp at which node processing finishes running.
4964        #[prost(int64, optional, tag="3")]
4965        pub end_processing_ns: ::core::option::Option<i64>,
4966        /// The delay between inputs becoming ready and the node actually beginning
4967        /// to run.
4968        #[prost(int64, optional, tag="4")]
4969        pub scheduling_latency_ns: ::core::option::Option<i64>,
4970    }
4971    /// The error status, if any, reported to the camera framework. Any status
4972    /// other than STATUS_OK indicates a dropped frame.
4973    /// Next Enum: 6
4974    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4975    #[repr(i32)]
4976    pub enum CaptureResultStatus {
4977        StatusUnspecified = 0,
4978        StatusOk = 1,
4979        /// Early metadata was returned to the camera framework with an error.
4980        StatusEarlyMetadataError = 2,
4981        /// Final metadata was returned to the camera framework with an error.
4982        StatusFinalMetadataError = 3,
4983        /// One or more buffers were returned to the camera framework with an error.
4984        StatusBufferError = 4,
4985        /// The frame was dropped as a result of a flush operation.
4986        StatusFlushError = 5,
4987    }
4988    impl CaptureResultStatus {
4989        /// String value of the enum field names used in the ProtoBuf definition.
4990        ///
4991        /// The values are not transformed in any way and thus are considered stable
4992        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4993        pub fn as_str_name(&self) -> &'static str {
4994            match self {
4995                CaptureResultStatus::StatusUnspecified => "STATUS_UNSPECIFIED",
4996                CaptureResultStatus::StatusOk => "STATUS_OK",
4997                CaptureResultStatus::StatusEarlyMetadataError => "STATUS_EARLY_METADATA_ERROR",
4998                CaptureResultStatus::StatusFinalMetadataError => "STATUS_FINAL_METADATA_ERROR",
4999                CaptureResultStatus::StatusBufferError => "STATUS_BUFFER_ERROR",
5000                CaptureResultStatus::StatusFlushError => "STATUS_FLUSH_ERROR",
5001            }
5002        }
5003    }
5004}
5005/// A profiling event that may be emitted periodically (i.e., at a slower rate
5006/// than `AndroidCameraFrameEvent`s) to record fixed and aggregated camera
5007/// session-specific values.
5008#[derive(Clone, PartialEq, ::prost::Message)]
5009pub struct AndroidCameraSessionStats {
5010    /// Identifier for the CameraCaptureSession this frame originates from. See:
5011    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
5012    #[prost(uint64, optional, tag="1")]
5013    pub session_id: ::core::option::Option<u64>,
5014    #[prost(message, optional, tag="2")]
5015    pub graph: ::core::option::Option<android_camera_session_stats::CameraGraph>,
5016}
5017/// Nested message and enum types in `AndroidCameraSessionStats`.
5018pub mod android_camera_session_stats {
5019    /// Although vendor implementations may vary, camera pipeline processing is
5020    /// typically arranged into a directed graph-like structure. This message is
5021    /// used to record that graph.
5022    #[derive(Clone, PartialEq, ::prost::Message)]
5023    pub struct CameraGraph {
5024        #[prost(message, repeated, tag="1")]
5025        pub nodes: ::prost::alloc::vec::Vec<camera_graph::CameraNode>,
5026        #[prost(message, repeated, tag="2")]
5027        pub edges: ::prost::alloc::vec::Vec<camera_graph::CameraEdge>,
5028    }
5029    /// Nested message and enum types in `CameraGraph`.
5030    pub mod camera_graph {
5031        #[derive(Clone, PartialEq, ::prost::Message)]
5032        pub struct CameraNode {
5033            #[prost(int64, optional, tag="1")]
5034            pub node_id: ::core::option::Option<i64>,
5035            /// A list of inputs consumed by this node.
5036            #[prost(int64, repeated, packed="false", tag="2")]
5037            pub input_ids: ::prost::alloc::vec::Vec<i64>,
5038            /// A list of outputs produced by this node.
5039            #[prost(int64, repeated, packed="false", tag="3")]
5040            pub output_ids: ::prost::alloc::vec::Vec<i64>,
5041            /// These fields capture vendor-specific additions to this proto message.
5042            /// In practice `vendor_data` typically contains a serialized message of
5043            /// the vendor's design, and `vendor_data_version` is incremented each time
5044            /// there is a backwards incompatible change made to the message.
5045            #[prost(int32, optional, tag="4")]
5046            pub vendor_data_version: ::core::option::Option<i32>,
5047            #[prost(bytes="vec", optional, tag="5")]
5048            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5049        }
5050        /// An adjacency list describing connections between CameraNodes, mapping
5051        /// nodes and their outputs to other nodes that consume them as inputs.
5052        #[derive(Clone, PartialEq, ::prost::Message)]
5053        pub struct CameraEdge {
5054            /// The pair of IDs identifying the node and output connected by this edge.
5055            #[prost(int64, optional, tag="1")]
5056            pub output_node_id: ::core::option::Option<i64>,
5057            #[prost(int64, optional, tag="2")]
5058            pub output_id: ::core::option::Option<i64>,
5059            /// The pair of IDs identifying the node and input connected by this edge.
5060            #[prost(int64, optional, tag="3")]
5061            pub input_node_id: ::core::option::Option<i64>,
5062            #[prost(int64, optional, tag="4")]
5063            pub input_id: ::core::option::Option<i64>,
5064            /// These fields capture vendor-specific additions to this proto message.
5065            /// In practice `vendor_data` typically contains a serialized message of
5066            /// the vendor's design, and `vendor_data_version` is incremented each time
5067            /// there is a backwards incompatible change made to the message.
5068            #[prost(int32, optional, tag="5")]
5069            pub vendor_data_version: ::core::option::Option<i32>,
5070            #[prost(bytes="vec", optional, tag="6")]
5071            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5072        }
5073    }
5074}
5075// End of protos/perfetto/trace/android/camera_event.proto
5076
5077// Begin of protos/perfetto/trace/android/cpu_per_uid_data.proto
5078
5079#[derive(Clone, PartialEq, ::prost::Message)]
5080pub struct CpuPerUidData {
5081    /// Number of clusters in the device. This will only be filled in the first
5082    /// packet in a sequence.
5083    #[prost(uint32, optional, tag="1")]
5084    pub cluster_count: ::core::option::Option<u32>,
5085    /// The UIDs for which we have data in this packet.
5086    #[prost(uint32, repeated, tag="2")]
5087    pub uid: ::prost::alloc::vec::Vec<u32>,
5088    /// List of times for {UID, cluster} tuples. This will be cluster_count
5089    /// times as long as the UID list.
5090    ///
5091    /// Ordered like:
5092    /// [{UID 0, cluster 0}, {UID 0, cluster 1}, {UID 0, cluster 2},
5093    ///   {UID 1, cluster 0}, {UID 1, cluster 1}, {UID 1, cluster 2}, ...]
5094    ///
5095    /// Each value is an absolute count for the first packet in a sequence, and a
5096    /// delta thereafter. UIDs for which all clusters have a zero delta are
5097    /// omitted; a single non-zero value for any cluster for a UID will cause
5098    /// values for all clusters to be recorded.
5099    #[prost(uint64, repeated, tag="3")]
5100    pub total_time_ms: ::prost::alloc::vec::Vec<u64>,
5101}
5102// End of protos/perfetto/trace/android/cpu_per_uid_data.proto
5103
5104// Begin of protos/perfetto/trace/android/frame_timeline_event.proto
5105
5106/// Generated by SurfaceFlinger's FrameTimeline (go/adaptive-scheduling-fr).
5107/// Used in comparing the expected timeline of a frame to the actual timeline.
5108/// Key terms:
5109///     1) DisplayFrame - represents SurfaceFlinger's work on a frame(composited)
5110///     2) SurfaceFrame - represents App's work on its frame
5111///     3) Timeline = start to end of a component's(app/SF) work on a frame.
5112/// SurfaceFlinger composites frames from many apps together, so
5113///     One DisplayFrame can map to N SurfaceFrame(s)
5114/// This relationship can be reconstructed by using
5115///     DisplayFrame.token = SurfaceFrame.display_frame_token
5116#[derive(Clone, PartialEq, ::prost::Message)]
5117pub struct FrameTimelineEvent {
5118    #[prost(oneof="frame_timeline_event::Event", tags="1, 2, 3, 4, 5")]
5119    pub event: ::core::option::Option<frame_timeline_event::Event>,
5120}
5121/// Nested message and enum types in `FrameTimelineEvent`.
5122pub mod frame_timeline_event {
5123    /// Indicates the start of expected timeline slice for SurfaceFrames.
5124    #[derive(Clone, PartialEq, ::prost::Message)]
5125    pub struct ExpectedSurfaceFrameStart {
5126        /// Cookie used to correlate between the start and end messages of the same
5127        /// frame. Since all values except the ts are same for start and end, cookie
5128        /// helps in preventing redundant data transmission.
5129        /// The same cookie is used only by start and end messages of a single frame
5130        /// and is otherwise unique.
5131        #[prost(int64, optional, tag="1")]
5132        pub cookie: ::core::option::Option<i64>,
5133        /// Token received by the app for its work. Can be shared between multiple
5134        /// layers of the same app (example: pip mode).
5135        #[prost(int64, optional, tag="2")]
5136        pub token: ::core::option::Option<i64>,
5137        /// The corresponding DisplayFrame token is required to link the App's work
5138        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
5139        /// DisplayFrame.
5140        /// this.display_frame_token = DisplayFrame.token
5141        #[prost(int64, optional, tag="3")]
5142        pub display_frame_token: ::core::option::Option<i64>,
5143        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
5144        /// the respective process track group.
5145        #[prost(int32, optional, tag="4")]
5146        pub pid: ::core::option::Option<i32>,
5147        #[prost(string, optional, tag="5")]
5148        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5149    }
5150    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
5151    /// includes the jank information.
5152    #[derive(Clone, PartialEq, ::prost::Message)]
5153    pub struct ActualSurfaceFrameStart {
5154        /// Cookie used to correlate between the start and end messages of the same
5155        /// frame. Since all values except the ts are same for start and end, cookie
5156        /// helps in preventing redundant data transmission.
5157        /// The same cookie is used only by start and end messages of a single frame
5158        /// and is otherwise unique.
5159        #[prost(int64, optional, tag="1")]
5160        pub cookie: ::core::option::Option<i64>,
5161        /// Token received by the app for its work. Can be shared between multiple
5162        /// layers of the same app (example: pip mode).
5163        #[prost(int64, optional, tag="2")]
5164        pub token: ::core::option::Option<i64>,
5165        /// The corresponding DisplayFrame token is required to link the App's work
5166        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
5167        /// DisplayFrame.
5168        /// this.display_frame_token = DisplayFrame.token
5169        #[prost(int64, optional, tag="3")]
5170        pub display_frame_token: ::core::option::Option<i64>,
5171        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
5172        /// the respective process track group.
5173        #[prost(int32, optional, tag="4")]
5174        pub pid: ::core::option::Option<i32>,
5175        #[prost(string, optional, tag="5")]
5176        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5177        #[prost(enumeration="PresentType", optional, tag="6")]
5178        pub present_type: ::core::option::Option<i32>,
5179        #[prost(bool, optional, tag="7")]
5180        pub on_time_finish: ::core::option::Option<bool>,
5181        #[prost(bool, optional, tag="8")]
5182        pub gpu_composition: ::core::option::Option<bool>,
5183        /// A bitmask of JankType. More than one reason can be attributed to a janky
5184        /// frame.
5185        #[prost(int32, optional, tag="9")]
5186        pub jank_type: ::core::option::Option<i32>,
5187        #[prost(enumeration="PredictionType", optional, tag="10")]
5188        pub prediction_type: ::core::option::Option<i32>,
5189        #[prost(bool, optional, tag="11")]
5190        pub is_buffer: ::core::option::Option<bool>,
5191        #[prost(enumeration="JankSeverityType", optional, tag="12")]
5192        pub jank_severity_type: ::core::option::Option<i32>,
5193        #[prost(float, optional, tag="13")]
5194        pub present_delay_millis: ::core::option::Option<f32>,
5195        #[prost(float, optional, tag="14")]
5196        pub vsync_resynced_jitter_millis: ::core::option::Option<f32>,
5197        #[prost(float, optional, tag="15")]
5198        pub jank_severity_score: ::core::option::Option<f32>,
5199        /// experimental value for jank_type. Do not consider in jank analysis.
5200        #[prost(int32, optional, tag="16")]
5201        pub jank_type_experimental: ::core::option::Option<i32>,
5202        /// experimental value for present_type. Do not consider in jank analysis.
5203        #[prost(enumeration="PresentType", optional, tag="17")]
5204        pub present_type_experimental: ::core::option::Option<i32>,
5205        /// jank metadata information (for debug).
5206        #[prost(float, optional, tag="18")]
5207        pub jank_debug_metadata: ::core::option::Option<f32>,
5208    }
5209    /// Indicates the start of expected timeline slice for DisplayFrames.
5210    #[derive(Clone, PartialEq, ::prost::Message)]
5211    pub struct ExpectedDisplayFrameStart {
5212        /// Cookie used to correlate between the start and end messages of the same
5213        /// frame. Since all values except the ts are same for start and end, cookie
5214        /// helps in preventing redundant data transmission.
5215        /// The same cookie is used only by start and end messages of a single frame
5216        /// and is otherwise unique.
5217        #[prost(int64, optional, tag="1")]
5218        pub cookie: ::core::option::Option<i64>,
5219        /// Token received by SurfaceFlinger for its work
5220        /// this.token = SurfaceFrame.display_frame_token
5221        #[prost(int64, optional, tag="2")]
5222        pub token: ::core::option::Option<i64>,
5223        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
5224        /// inside the SurfaceFlinger process group.
5225        #[prost(int32, optional, tag="3")]
5226        pub pid: ::core::option::Option<i32>,
5227    }
5228    /// Indicates the start of actual timeline slice for DisplayFrames. Also
5229    /// includes the jank information.
5230    #[derive(Clone, PartialEq, ::prost::Message)]
5231    pub struct ActualDisplayFrameStart {
5232        /// Cookie used to correlate between the start and end messages of the same
5233        /// frame. Since all values except the ts are same for start and end, cookie
5234        /// helps in preventing redundant data transmission.
5235        /// The same cookie is used only by start and end messages of a single frame
5236        /// and is otherwise unique.
5237        #[prost(int64, optional, tag="1")]
5238        pub cookie: ::core::option::Option<i64>,
5239        /// Token received by SurfaceFlinger for its work
5240        /// this.token = SurfaceFrame.display_frame_token
5241        #[prost(int64, optional, tag="2")]
5242        pub token: ::core::option::Option<i64>,
5243        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
5244        /// inside the SurfaceFlinger process group.
5245        #[prost(int32, optional, tag="3")]
5246        pub pid: ::core::option::Option<i32>,
5247        #[prost(enumeration="PresentType", optional, tag="4")]
5248        pub present_type: ::core::option::Option<i32>,
5249        #[prost(bool, optional, tag="5")]
5250        pub on_time_finish: ::core::option::Option<bool>,
5251        #[prost(bool, optional, tag="6")]
5252        pub gpu_composition: ::core::option::Option<bool>,
5253        /// A bitmask of JankType. More than one reason can be attributed to a janky
5254        /// frame.
5255        #[prost(int32, optional, tag="7")]
5256        pub jank_type: ::core::option::Option<i32>,
5257        #[prost(enumeration="PredictionType", optional, tag="8")]
5258        pub prediction_type: ::core::option::Option<i32>,
5259        #[prost(enumeration="JankSeverityType", optional, tag="9")]
5260        pub jank_severity_type: ::core::option::Option<i32>,
5261        #[prost(float, optional, tag="10")]
5262        pub present_delay_millis: ::core::option::Option<f32>,
5263        #[prost(float, optional, tag="11")]
5264        pub jank_severity_score: ::core::option::Option<f32>,
5265        /// experimental value for jank_type. Do not consider in jank analysis.
5266        #[prost(int32, optional, tag="12")]
5267        pub jank_type_experimental: ::core::option::Option<i32>,
5268        /// experimental value for present_type. Do not consider in jank analysis.
5269        #[prost(enumeration="PresentType", optional, tag="13")]
5270        pub present_type_experimental: ::core::option::Option<i32>,
5271        /// jank metadata information (for debug).
5272        #[prost(float, optional, tag="14")]
5273        pub jank_debug_metadata: ::core::option::Option<f32>,
5274    }
5275    /// FrameEnd just sends the cookie to indicate that the corresponding
5276    /// <display/surface>frame slice's end.
5277    #[derive(Clone, PartialEq, ::prost::Message)]
5278    pub struct FrameEnd {
5279        #[prost(int64, optional, tag="1")]
5280        pub cookie: ::core::option::Option<i64>,
5281    }
5282    /// Specifies the reason(s) most likely to have caused the jank.
5283    /// Used as a bitmask.
5284    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5285    #[repr(i32)]
5286    pub enum JankType {
5287        JankUnspecified = 0,
5288        JankNone = 1,
5289        JankSfScheduling = 2,
5290        JankPredictionError = 4,
5291        JankDisplayHal = 8,
5292        JankSfCpuDeadlineMissed = 16,
5293        JankSfGpuDeadlineMissed = 32,
5294        JankAppDeadlineMissed = 64,
5295        JankBufferStuffing = 128,
5296        JankUnknown = 256,
5297        JankSfStuffing = 512,
5298        JankDropped = 1024,
5299        JankNonAnimating = 2048,
5300        JankAppResyncedJitter = 4096,
5301        JankDisplayNotOn = 8192,
5302    }
5303    impl JankType {
5304        /// String value of the enum field names used in the ProtoBuf definition.
5305        ///
5306        /// The values are not transformed in any way and thus are considered stable
5307        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5308        pub fn as_str_name(&self) -> &'static str {
5309            match self {
5310                JankType::JankUnspecified => "JANK_UNSPECIFIED",
5311                JankType::JankNone => "JANK_NONE",
5312                JankType::JankSfScheduling => "JANK_SF_SCHEDULING",
5313                JankType::JankPredictionError => "JANK_PREDICTION_ERROR",
5314                JankType::JankDisplayHal => "JANK_DISPLAY_HAL",
5315                JankType::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
5316                JankType::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
5317                JankType::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
5318                JankType::JankBufferStuffing => "JANK_BUFFER_STUFFING",
5319                JankType::JankUnknown => "JANK_UNKNOWN",
5320                JankType::JankSfStuffing => "JANK_SF_STUFFING",
5321                JankType::JankDropped => "JANK_DROPPED",
5322                JankType::JankNonAnimating => "JANK_NON_ANIMATING",
5323                JankType::JankAppResyncedJitter => "JANK_APP_RESYNCED_JITTER",
5324                JankType::JankDisplayNotOn => "JANK_DISPLAY_NOT_ON",
5325            }
5326        }
5327    }
5328    /// Specifies the severity of a jank.
5329    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5330    #[repr(i32)]
5331    pub enum JankSeverityType {
5332        SeverityUnknown = 0,
5333        SeverityNone = 1,
5334        SeverityPartial = 2,
5335        SeverityFull = 3,
5336    }
5337    impl JankSeverityType {
5338        /// String value of the enum field names used in the ProtoBuf definition.
5339        ///
5340        /// The values are not transformed in any way and thus are considered stable
5341        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5342        pub fn as_str_name(&self) -> &'static str {
5343            match self {
5344                JankSeverityType::SeverityUnknown => "SEVERITY_UNKNOWN",
5345                JankSeverityType::SeverityNone => "SEVERITY_NONE",
5346                JankSeverityType::SeverityPartial => "SEVERITY_PARTIAL",
5347                JankSeverityType::SeverityFull => "SEVERITY_FULL",
5348            }
5349        }
5350    }
5351    /// Specifies how a frame was presented on screen w.r.t. timing.
5352    /// Can be different for SurfaceFrame and DisplayFrame.
5353    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5354    #[repr(i32)]
5355    pub enum PresentType {
5356        PresentUnspecified = 0,
5357        PresentOnTime = 1,
5358        PresentLate = 2,
5359        PresentEarly = 3,
5360        PresentDropped = 4,
5361        PresentUnknown = 5,
5362    }
5363    impl PresentType {
5364        /// String value of the enum field names used in the ProtoBuf definition.
5365        ///
5366        /// The values are not transformed in any way and thus are considered stable
5367        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5368        pub fn as_str_name(&self) -> &'static str {
5369            match self {
5370                PresentType::PresentUnspecified => "PRESENT_UNSPECIFIED",
5371                PresentType::PresentOnTime => "PRESENT_ON_TIME",
5372                PresentType::PresentLate => "PRESENT_LATE",
5373                PresentType::PresentEarly => "PRESENT_EARLY",
5374                PresentType::PresentDropped => "PRESENT_DROPPED",
5375                PresentType::PresentUnknown => "PRESENT_UNKNOWN",
5376            }
5377        }
5378    }
5379    /// Specifies if the predictions for the frame are still valid, expired or
5380    /// unknown.
5381    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5382    #[repr(i32)]
5383    pub enum PredictionType {
5384        PredictionUnspecified = 0,
5385        PredictionValid = 1,
5386        PredictionExpired = 2,
5387        PredictionUnknown = 3,
5388    }
5389    impl PredictionType {
5390        /// String value of the enum field names used in the ProtoBuf definition.
5391        ///
5392        /// The values are not transformed in any way and thus are considered stable
5393        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5394        pub fn as_str_name(&self) -> &'static str {
5395            match self {
5396                PredictionType::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
5397                PredictionType::PredictionValid => "PREDICTION_VALID",
5398                PredictionType::PredictionExpired => "PREDICTION_EXPIRED",
5399                PredictionType::PredictionUnknown => "PREDICTION_UNKNOWN",
5400            }
5401        }
5402    }
5403    #[derive(Clone, PartialEq, ::prost::Oneof)]
5404    pub enum Event {
5405        #[prost(message, tag="1")]
5406        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
5407        #[prost(message, tag="2")]
5408        ActualDisplayFrameStart(ActualDisplayFrameStart),
5409        #[prost(message, tag="3")]
5410        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
5411        #[prost(message, tag="4")]
5412        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
5413        #[prost(message, tag="5")]
5414        FrameEnd(FrameEnd),
5415    }
5416}
5417// End of protos/perfetto/trace/android/frame_timeline_event.proto
5418
5419// Begin of protos/perfetto/trace/android/gpu_mem_event.proto
5420
5421/// Generated by Android's GpuService.
5422#[derive(Clone, PartialEq, ::prost::Message)]
5423pub struct GpuMemTotalEvent {
5424    #[prost(uint32, optional, tag="1")]
5425    pub gpu_id: ::core::option::Option<u32>,
5426    #[prost(uint32, optional, tag="2")]
5427    pub pid: ::core::option::Option<u32>,
5428    #[prost(uint64, optional, tag="3")]
5429    pub size: ::core::option::Option<u64>,
5430}
5431// End of protos/perfetto/trace/android/gpu_mem_event.proto
5432
5433// Begin of protos/perfetto/trace/android/graphics_frame_event.proto
5434
5435/// Generated by Android's SurfaceFlinger.
5436#[derive(Clone, PartialEq, ::prost::Message)]
5437pub struct GraphicsFrameEvent {
5438    #[prost(message, optional, tag="1")]
5439    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
5440}
5441/// Nested message and enum types in `GraphicsFrameEvent`.
5442pub mod graphics_frame_event {
5443    #[derive(Clone, PartialEq, ::prost::Message)]
5444    pub struct BufferEvent {
5445        #[prost(uint32, optional, tag="1")]
5446        pub frame_number: ::core::option::Option<u32>,
5447        #[prost(enumeration="BufferEventType", optional, tag="2")]
5448        pub r#type: ::core::option::Option<i32>,
5449        #[prost(string, optional, tag="3")]
5450        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
5451        /// If no duration is set, the event is an instant event.
5452        #[prost(uint64, optional, tag="4")]
5453        pub duration_ns: ::core::option::Option<u64>,
5454        /// Unique buffer identifier.
5455        #[prost(uint32, optional, tag="5")]
5456        pub buffer_id: ::core::option::Option<u32>,
5457    }
5458    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5459    #[repr(i32)]
5460    pub enum BufferEventType {
5461        Unspecified = 0,
5462        Dequeue = 1,
5463        Queue = 2,
5464        Post = 3,
5465        AcquireFence = 4,
5466        Latch = 5,
5467        /// HWC will compose this buffer
5468        HwcCompositionQueued = 6,
5469        /// renderEngine composition
5470        FallbackComposition = 7,
5471        PresentFence = 8,
5472        ReleaseFence = 9,
5473        Modify = 10,
5474        Detach = 11,
5475        Attach = 12,
5476        Cancel = 13,
5477    }
5478    impl BufferEventType {
5479        /// String value of the enum field names used in the ProtoBuf definition.
5480        ///
5481        /// The values are not transformed in any way and thus are considered stable
5482        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5483        pub fn as_str_name(&self) -> &'static str {
5484            match self {
5485                BufferEventType::Unspecified => "UNSPECIFIED",
5486                BufferEventType::Dequeue => "DEQUEUE",
5487                BufferEventType::Queue => "QUEUE",
5488                BufferEventType::Post => "POST",
5489                BufferEventType::AcquireFence => "ACQUIRE_FENCE",
5490                BufferEventType::Latch => "LATCH",
5491                BufferEventType::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
5492                BufferEventType::FallbackComposition => "FALLBACK_COMPOSITION",
5493                BufferEventType::PresentFence => "PRESENT_FENCE",
5494                BufferEventType::ReleaseFence => "RELEASE_FENCE",
5495                BufferEventType::Modify => "MODIFY",
5496                BufferEventType::Detach => "DETACH",
5497                BufferEventType::Attach => "ATTACH",
5498                BufferEventType::Cancel => "CANCEL",
5499            }
5500        }
5501    }
5502}
5503// End of protos/perfetto/trace/android/graphics_frame_event.proto
5504
5505// Begin of protos/perfetto/trace/android/initial_display_state.proto
5506
5507#[derive(Clone, PartialEq, ::prost::Message)]
5508pub struct InitialDisplayState {
5509    /// Same values as android.view.Display.STATE_*
5510    #[prost(int32, optional, tag="1")]
5511    pub display_state: ::core::option::Option<i32>,
5512    #[prost(double, optional, tag="2")]
5513    pub brightness: ::core::option::Option<f64>,
5514}
5515// End of protos/perfetto/trace/android/initial_display_state.proto
5516
5517// Begin of protos/perfetto/trace/android/kernel_wakelock_data.proto
5518
5519#[derive(Clone, PartialEq, ::prost::Message)]
5520pub struct KernelWakelockData {
5521    /// This is only emitted when we encounter new wakelocks.
5522    #[prost(message, repeated, tag="1")]
5523    pub wakelock: ::prost::alloc::vec::Vec<kernel_wakelock_data::Wakelock>,
5524    /// Interning id.
5525    #[prost(uint32, repeated, tag="2")]
5526    pub wakelock_id: ::prost::alloc::vec::Vec<u32>,
5527    /// If we interned the wakelock name in this packet, this is the total time
5528    /// the wakelock has been held.
5529    /// If not, it's a delta from the last time we saw it.
5530    #[prost(uint64, repeated, tag="3")]
5531    pub time_held_millis: ::prost::alloc::vec::Vec<u64>,
5532    #[prost(uint64, optional, tag="4")]
5533    pub error_flags: ::core::option::Option<u64>,
5534}
5535/// Nested message and enum types in `KernelWakelockData`.
5536pub mod kernel_wakelock_data {
5537    #[derive(Clone, PartialEq, ::prost::Message)]
5538    pub struct Wakelock {
5539        /// Interning id.
5540        #[prost(uint32, optional, tag="1")]
5541        pub wakelock_id: ::core::option::Option<u32>,
5542        /// Name of the wakelock.
5543        #[prost(string, optional, tag="2")]
5544        pub wakelock_name: ::core::option::Option<::prost::alloc::string::String>,
5545        /// Type of the wakelock. We record data about both true kernel wakelocks
5546        /// and "native" wakelocks which are taken in userspace but are more
5547        /// conceptually similar to kernel wakelocks than normal userspace ones.
5548        #[prost(enumeration="wakelock::Type", optional, tag="3")]
5549        pub wakelock_type: ::core::option::Option<i32>,
5550    }
5551    /// Nested message and enum types in `Wakelock`.
5552    pub mod wakelock {
5553        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5554        #[repr(i32)]
5555        pub enum Type {
5556            WakelockTypeUnknown = 0,
5557            WakelockTypeKernel = 1,
5558            WakelockTypeNative = 2,
5559        }
5560        impl Type {
5561            /// String value of the enum field names used in the ProtoBuf definition.
5562            ///
5563            /// The values are not transformed in any way and thus are considered stable
5564            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5565            pub fn as_str_name(&self) -> &'static str {
5566                match self {
5567                    Type::WakelockTypeUnknown => "WAKELOCK_TYPE_UNKNOWN",
5568                    Type::WakelockTypeKernel => "WAKELOCK_TYPE_KERNEL",
5569                    Type::WakelockTypeNative => "WAKELOCK_TYPE_NATIVE",
5570                }
5571            }
5572        }
5573    }
5574}
5575/// NetworkPacketEvent records the details of a single packet sent or received
5576/// on the network (in Linux kernel terminology, one sk_buff struct).
5577#[derive(Clone, PartialEq, ::prost::Message)]
5578pub struct NetworkPacketEvent {
5579    /// The direction traffic is flowing for this event.
5580    #[prost(enumeration="TrafficDirection", optional, tag="1")]
5581    pub direction: ::core::option::Option<i32>,
5582    /// The name of the network interface if available (e.g. 'rmnet0').
5583    #[prost(string, optional, tag="2")]
5584    pub network_interface: ::core::option::Option<::prost::alloc::string::String>,
5585    /// The length of the packet in bytes (wire_size - L2_header_size). Ignored
5586    /// when using NetworkPacketEvent as the ctx in either NetworkPacketBundle or
5587    /// NetworkPacketContext.
5588    #[prost(uint32, optional, tag="3")]
5589    pub length: ::core::option::Option<u32>,
5590    /// The Linux user id associated with the packet's socket.
5591    #[prost(uint32, optional, tag="4")]
5592    pub uid: ::core::option::Option<u32>,
5593    /// The Android network tag associated with the packet's socket.
5594    #[prost(uint32, optional, tag="5")]
5595    pub tag: ::core::option::Option<u32>,
5596    /// The packet's IP protocol (TCP=6, UDP=17, etc).
5597    #[prost(uint32, optional, tag="6")]
5598    pub ip_proto: ::core::option::Option<u32>,
5599    /// The packet's TCP flags as a bitmask (FIN=0x1, SYN=0x2, RST=0x4, etc).
5600    #[prost(uint32, optional, tag="7")]
5601    pub tcp_flags: ::core::option::Option<u32>,
5602    /// The local udp/tcp port of the packet.
5603    #[prost(uint32, optional, tag="8")]
5604    pub local_port: ::core::option::Option<u32>,
5605    /// The remote udp/tcp port of the packet.
5606    #[prost(uint32, optional, tag="9")]
5607    pub remote_port: ::core::option::Option<u32>,
5608    /// The 1-byte ICMP type identifier.
5609    #[prost(uint32, optional, tag="10")]
5610    pub icmp_type: ::core::option::Option<u32>,
5611    /// The 1-byte ICMP code identifier.
5612    #[prost(uint32, optional, tag="11")]
5613    pub icmp_code: ::core::option::Option<u32>,
5614}
5615/// NetworkPacketBundle bundles one or more packets sharing the same attributes.
5616#[derive(Clone, PartialEq, ::prost::Message)]
5617pub struct NetworkPacketBundle {
5618    /// The timestamp of the i-th packet encoded as the nanoseconds since the
5619    /// enclosing TracePacket's timestamp.
5620    #[prost(uint64, repeated, tag="3")]
5621    pub packet_timestamps: ::prost::alloc::vec::Vec<u64>,
5622    /// The length of the i-th packet in bytes (wire_size - L2_header_size).
5623    #[prost(uint32, repeated, tag="4")]
5624    pub packet_lengths: ::prost::alloc::vec::Vec<u32>,
5625    /// Total number of packets in the bundle (when above aggregation_threshold).
5626    #[prost(uint32, optional, tag="5")]
5627    pub total_packets: ::core::option::Option<u32>,
5628    /// Duration between first and last packet (when above aggregation_threshold).
5629    #[prost(uint64, optional, tag="6")]
5630    pub total_duration: ::core::option::Option<u64>,
5631    /// Total packet length in bytes (when above aggregation_threshold).
5632    #[prost(uint64, optional, tag="7")]
5633    pub total_length: ::core::option::Option<u64>,
5634    #[prost(oneof="network_packet_bundle::PacketContext", tags="1, 2")]
5635    pub packet_context: ::core::option::Option<network_packet_bundle::PacketContext>,
5636}
5637/// Nested message and enum types in `NetworkPacketBundle`.
5638pub mod network_packet_bundle {
5639    #[derive(Clone, PartialEq, ::prost::Oneof)]
5640    pub enum PacketContext {
5641        /// The intern id for looking up the associated packet context.
5642        #[prost(uint64, tag="1")]
5643        Iid(u64),
5644        /// The inlined context for events in this bundle.
5645        #[prost(message, tag="2")]
5646        Ctx(super::NetworkPacketEvent),
5647    }
5648}
5649/// An internable packet context.
5650#[derive(Clone, PartialEq, ::prost::Message)]
5651pub struct NetworkPacketContext {
5652    #[prost(uint64, optional, tag="1")]
5653    pub iid: ::core::option::Option<u64>,
5654    #[prost(message, optional, tag="2")]
5655    pub ctx: ::core::option::Option<NetworkPacketEvent>,
5656}
5657// End of protos/perfetto/trace/android/network_trace.proto
5658
5659// Begin of protos/perfetto/trace/android/packages_list.proto
5660
5661#[derive(Clone, PartialEq, ::prost::Message)]
5662pub struct PackagesList {
5663    #[prost(message, repeated, tag="1")]
5664    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
5665    /// At least one error occurred parsing the packages.list.
5666    #[prost(bool, optional, tag="2")]
5667    pub parse_error: ::core::option::Option<bool>,
5668    /// Failed to open / read packages.list.
5669    #[prost(bool, optional, tag="3")]
5670    pub read_error: ::core::option::Option<bool>,
5671}
5672/// Nested message and enum types in `PackagesList`.
5673pub mod packages_list {
5674    #[derive(Clone, PartialEq, ::prost::Message)]
5675    pub struct PackageInfo {
5676        #[prost(string, optional, tag="1")]
5677        pub name: ::core::option::Option<::prost::alloc::string::String>,
5678        #[prost(uint64, optional, tag="2")]
5679        pub uid: ::core::option::Option<u64>,
5680        #[prost(bool, optional, tag="3")]
5681        pub debuggable: ::core::option::Option<bool>,
5682        #[prost(bool, optional, tag="4")]
5683        pub profileable_from_shell: ::core::option::Option<bool>,
5684        #[prost(int64, optional, tag="5")]
5685        pub version_code: ::core::option::Option<i64>,
5686    }
5687}
5688// End of protos/perfetto/trace/android/packages_list.proto
5689
5690// Begin of protos/perfetto/trace/android/pixel_modem_events.proto
5691
5692#[derive(Clone, PartialEq, ::prost::Message)]
5693pub struct PixelModemEvents {
5694    /// Pigweed-format dehydrated events.
5695    #[prost(bytes="vec", repeated, tag="1")]
5696    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
5697    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
5698    /// timestamp is the absolute timestamp of the first event. Subsequent
5699    /// timestamps are deltas from the previous timestamp.
5700    /// The nth entry from `events` gets the nth entry here.
5701    #[prost(uint64, repeated, packed="false", tag="2")]
5702    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
5703}
5704/// NB: this is not emitted in the trace but can be prepended later.
5705#[derive(Clone, PartialEq, ::prost::Message)]
5706pub struct PixelModemTokenDatabase {
5707    /// Pigweed-format database to allow event rehydration.
5708    #[prost(bytes="vec", optional, tag="1")]
5709    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5710}
5711// End of protos/perfetto/trace/android/pixel_modem_events.proto
5712
5713// Begin of protos/perfetto/trace/android/protolog.proto
5714
5715/// represents a single log entry 
5716#[derive(Clone, PartialEq, ::prost::Message)]
5717pub struct ProtoLogMessage {
5718    /// log statement identifier, created from message string and log level. 
5719    #[prost(fixed64, optional, tag="1")]
5720    pub message_id: ::core::option::Option<u64>,
5721    /// string parameters passed to the log call that have been interned. 
5722    #[prost(uint32, repeated, packed="false", tag="2")]
5723    pub str_param_iids: ::prost::alloc::vec::Vec<u32>,
5724    /// integer parameters passed to the log call. 
5725    #[prost(sint64, repeated, packed="false", tag="3")]
5726    pub sint64_params: ::prost::alloc::vec::Vec<i64>,
5727    /// floating point parameters passed to the log call. 
5728    #[prost(double, repeated, packed="false", tag="4")]
5729    pub double_params: ::prost::alloc::vec::Vec<f64>,
5730    /// boolean parameters passed to the log call. 
5731    #[prost(int32, repeated, packed="false", tag="5")]
5732    pub boolean_params: ::prost::alloc::vec::Vec<i32>,
5733    /// id of the interned stacktrace string
5734    /// (only dumped if explicitly confuigured to do so)
5735    #[prost(uint32, optional, tag="6")]
5736    pub stacktrace_iid: ::core::option::Option<u32>,
5737}
5738/// contains all the data required to fully decode the protolog messages 
5739#[derive(Clone, PartialEq, ::prost::Message)]
5740pub struct ProtoLogViewerConfig {
5741    #[prost(message, repeated, tag="1")]
5742    pub messages: ::prost::alloc::vec::Vec<proto_log_viewer_config::MessageData>,
5743    #[prost(message, repeated, tag="2")]
5744    pub groups: ::prost::alloc::vec::Vec<proto_log_viewer_config::Group>,
5745}
5746/// Nested message and enum types in `ProtoLogViewerConfig`.
5747pub mod proto_log_viewer_config {
5748    #[derive(Clone, PartialEq, ::prost::Message)]
5749    pub struct MessageData {
5750        /// the id of the message that is logged in a ProtoLogMessage
5751        #[prost(fixed64, optional, tag="1")]
5752        pub message_id: ::core::option::Option<u64>,
5753        /// the string representation of the message
5754        #[prost(string, optional, tag="2")]
5755        pub message: ::core::option::Option<::prost::alloc::string::String>,
5756        /// the level of the message
5757        #[prost(enumeration="super::ProtoLogLevel", optional, tag="3")]
5758        pub level: ::core::option::Option<i32>,
5759        /// the id of the log group this message belongs to
5760        #[prost(uint32, optional, tag="4")]
5761        pub group_id: ::core::option::Option<u32>,
5762        /// path to the file where the message was logged
5763        #[prost(string, optional, tag="5")]
5764        pub location: ::core::option::Option<::prost::alloc::string::String>,
5765    }
5766    /// information about a ProtoLog log group 
5767    #[derive(Clone, PartialEq, ::prost::Message)]
5768    pub struct Group {
5769        #[prost(uint32, optional, tag="1")]
5770        pub id: ::core::option::Option<u32>,
5771        #[prost(string, optional, tag="2")]
5772        pub name: ::core::option::Option<::prost::alloc::string::String>,
5773        #[prost(string, optional, tag="3")]
5774        pub tag: ::core::option::Option<::prost::alloc::string::String>,
5775    }
5776}
5777// End of protos/perfetto/trace/android/protolog.proto
5778
5779// Begin of protos/perfetto/trace/android/shell_transition.proto
5780
5781/// ShellTransition messages record information about the shell transitions in
5782/// the system. This is used to track the animations that are created and execute
5783/// through the shell transition system.
5784#[derive(Clone, PartialEq, ::prost::Message)]
5785pub struct ShellTransition {
5786    /// The unique identifier of the transition.
5787    #[prost(int32, optional, tag="1")]
5788    pub id: ::core::option::Option<i32>,
5789    /// The time the transition was created on the WM side
5790    /// (using SystemClock.elapsedRealtimeNanos())
5791    #[prost(int64, optional, tag="2")]
5792    pub create_time_ns: ::core::option::Option<i64>,
5793    /// The time the transition was sent from the WM side to shell
5794    /// (using SystemClock.elapsedRealtimeNanos())
5795    #[prost(int64, optional, tag="3")]
5796    pub send_time_ns: ::core::option::Option<i64>,
5797    /// The time the transition was dispatched by shell to execute
5798    /// (using SystemClock.elapsedRealtimeNanos())
5799    #[prost(int64, optional, tag="4")]
5800    pub dispatch_time_ns: ::core::option::Option<i64>,
5801    /// If the transition merge was accepted by the transition handler, this
5802    /// contains the time the transition was merged into transition with id
5803    /// `merge_target`.
5804    /// (using SystemClock.elapsedRealtimeNanos())
5805    #[prost(int64, optional, tag="5")]
5806    pub merge_time_ns: ::core::option::Option<i64>,
5807    /// The time shell proposed the transition should be merged to the transition
5808    /// handler into transition with id `merge_target`.
5809    /// (using SystemClock.elapsedRealtimeNanos()).
5810    #[prost(int64, optional, tag="6")]
5811    pub merge_request_time_ns: ::core::option::Option<i64>,
5812    /// If the transition was aborted on the shell side, this is the time that
5813    /// occurred.
5814    /// (using SystemClock.elapsedRealtimeNanos())
5815    #[prost(int64, optional, tag="7")]
5816    pub shell_abort_time_ns: ::core::option::Option<i64>,
5817    /// If the transition was aborted on the wm side, this is the time that
5818    /// occurred.
5819    /// (using SystemClock.elapsedRealtimeNanos())
5820    #[prost(int64, optional, tag="8")]
5821    pub wm_abort_time_ns: ::core::option::Option<i64>,
5822    /// The time WM considers the transition to be complete.
5823    /// (using SystemClock.elapsedRealtimeNanos())
5824    #[prost(int64, optional, tag="9")]
5825    pub finish_time_ns: ::core::option::Option<i64>,
5826    /// The id of the transaction that WM proposed to use as the starting
5827    /// transaction. It contains all the layer changes required to setup the
5828    /// transition and should be executed right at the start of the transition
5829    /// by the transition handler.
5830    #[prost(uint64, optional, tag="10")]
5831    pub start_transaction_id: ::core::option::Option<u64>,
5832    /// The if of the transaction that WM proposed to use as the finish
5833    /// transaction. It contains all the layer changes required to set the final
5834    /// state of the transition.
5835    #[prost(uint64, optional, tag="11")]
5836    pub finish_transaction_id: ::core::option::Option<u64>,
5837    /// The id of the handler that executed the transition. A HandlerMappings
5838    /// message in the trace will contain the mapping of id to a string
5839    /// representation of the handler.
5840    #[prost(int32, optional, tag="12")]
5841    pub handler: ::core::option::Option<i32>,
5842    /// The transition type of this transition (e.g. TO_FRONT, OPEN, CLOSE).
5843    #[prost(int32, optional, tag="13")]
5844    pub r#type: ::core::option::Option<i32>,
5845    /// The list of targets that are part of this transition.
5846    #[prost(message, repeated, tag="14")]
5847    pub targets: ::prost::alloc::vec::Vec<shell_transition::Target>,
5848    /// The id of the transition we have requested to merge or have merged this
5849    /// transition into.
5850    #[prost(int32, optional, tag="15")]
5851    pub merge_target: ::core::option::Option<i32>,
5852    /// The flags set on this transition.
5853    #[prost(int32, optional, tag="16")]
5854    pub flags: ::core::option::Option<i32>,
5855    /// The time the starting window was removed. Tracked because this can
5856    /// happen after the transition finishes, but the app may not yet be visible
5857    /// until the starting window is removed. So in a sense the transition is not
5858    /// finished until the starting window is removed. (b/284302118)
5859    /// (using SystemClock.elapsedRealtimeNanos())
5860    #[prost(int64, optional, tag="17")]
5861    pub starting_window_remove_time_ns: ::core::option::Option<i64>,
5862}
5863/// Nested message and enum types in `ShellTransition`.
5864pub mod shell_transition {
5865    /// Contains the information about the windows targeted in a transition.
5866    #[derive(Clone, PartialEq, ::prost::Message)]
5867    pub struct Target {
5868        /// The transition mode of this target (e.g. TO_FRONT, CLOSE...)
5869        #[prost(int32, optional, tag="1")]
5870        pub mode: ::core::option::Option<i32>,
5871        /// The layer id of this target.
5872        #[prost(int32, optional, tag="2")]
5873        pub layer_id: ::core::option::Option<i32>,
5874        /// The window id of this target.
5875        #[prost(int32, optional, tag="3")]
5876        pub window_id: ::core::option::Option<i32>,
5877        /// The flags set on this target.
5878        #[prost(int32, optional, tag="4")]
5879        pub flags: ::core::option::Option<i32>,
5880    }
5881}
5882/// Contains mappings from handler ids to string representation of the handlers.
5883#[derive(Clone, PartialEq, ::prost::Message)]
5884pub struct ShellHandlerMappings {
5885    #[prost(message, repeated, tag="1")]
5886    pub mapping: ::prost::alloc::vec::Vec<ShellHandlerMapping>,
5887}
5888#[derive(Clone, PartialEq, ::prost::Message)]
5889pub struct ShellHandlerMapping {
5890    /// The id of the handler used in the ShellTransition message.
5891    #[prost(int32, optional, tag="1")]
5892    pub id: ::core::option::Option<i32>,
5893    /// A human readable and meaningful string representation of the handler.
5894    #[prost(string, optional, tag="2")]
5895    pub name: ::core::option::Option<::prost::alloc::string::String>,
5896}
5897// End of protos/perfetto/trace/android/shell_transition.proto
5898
5899// Begin of protos/perfetto/trace/android/graphics/rect.proto
5900
5901#[derive(Clone, PartialEq, ::prost::Message)]
5902pub struct RectProto {
5903    #[prost(int32, optional, tag="1")]
5904    pub left: ::core::option::Option<i32>,
5905    #[prost(int32, optional, tag="2")]
5906    pub top: ::core::option::Option<i32>,
5907    #[prost(int32, optional, tag="3")]
5908    pub right: ::core::option::Option<i32>,
5909    #[prost(int32, optional, tag="4")]
5910    pub bottom: ::core::option::Option<i32>,
5911}
5912// End of protos/perfetto/trace/android/graphics/rect.proto
5913
5914// Begin of protos/perfetto/trace/android/surfaceflinger_common.proto
5915
5916#[derive(Clone, PartialEq, ::prost::Message)]
5917pub struct RegionProto {
5918    #[prost(message, repeated, tag="2")]
5919    pub rect: ::prost::alloc::vec::Vec<RectProto>,
5920}
5921#[derive(Clone, PartialEq, ::prost::Message)]
5922pub struct SizeProto {
5923    #[prost(int32, optional, tag="1")]
5924    pub w: ::core::option::Option<i32>,
5925    #[prost(int32, optional, tag="2")]
5926    pub h: ::core::option::Option<i32>,
5927}
5928#[derive(Clone, PartialEq, ::prost::Message)]
5929pub struct TransformProto {
5930    #[prost(float, optional, tag="1")]
5931    pub dsdx: ::core::option::Option<f32>,
5932    #[prost(float, optional, tag="2")]
5933    pub dtdx: ::core::option::Option<f32>,
5934    #[prost(float, optional, tag="3")]
5935    pub dsdy: ::core::option::Option<f32>,
5936    #[prost(float, optional, tag="4")]
5937    pub dtdy: ::core::option::Option<f32>,
5938    #[prost(int32, optional, tag="5")]
5939    pub r#type: ::core::option::Option<i32>,
5940}
5941#[derive(Clone, PartialEq, ::prost::Message)]
5942pub struct ColorProto {
5943    #[prost(float, optional, tag="1")]
5944    pub r: ::core::option::Option<f32>,
5945    #[prost(float, optional, tag="2")]
5946    pub g: ::core::option::Option<f32>,
5947    #[prost(float, optional, tag="3")]
5948    pub b: ::core::option::Option<f32>,
5949    #[prost(float, optional, tag="4")]
5950    pub a: ::core::option::Option<f32>,
5951}
5952#[derive(Clone, PartialEq, ::prost::Message)]
5953pub struct InputWindowInfoProto {
5954    #[prost(uint32, optional, tag="1")]
5955    pub layout_params_flags: ::core::option::Option<u32>,
5956    #[prost(int32, optional, tag="2")]
5957    pub layout_params_type: ::core::option::Option<i32>,
5958    #[prost(message, optional, tag="3")]
5959    pub frame: ::core::option::Option<RectProto>,
5960    #[prost(message, optional, tag="4")]
5961    pub touchable_region: ::core::option::Option<RegionProto>,
5962    #[prost(int32, optional, tag="5")]
5963    pub surface_inset: ::core::option::Option<i32>,
5964    #[prost(bool, optional, tag="6")]
5965    pub visible: ::core::option::Option<bool>,
5966    #[deprecated]
5967    #[prost(bool, optional, tag="7")]
5968    pub can_receive_keys: ::core::option::Option<bool>,
5969    #[prost(bool, optional, tag="8")]
5970    pub focusable: ::core::option::Option<bool>,
5971    #[prost(bool, optional, tag="9")]
5972    pub has_wallpaper: ::core::option::Option<bool>,
5973    #[prost(float, optional, tag="10")]
5974    pub global_scale_factor: ::core::option::Option<f32>,
5975    #[deprecated]
5976    #[prost(float, optional, tag="11")]
5977    pub window_x_scale: ::core::option::Option<f32>,
5978    #[deprecated]
5979    #[prost(float, optional, tag="12")]
5980    pub window_y_scale: ::core::option::Option<f32>,
5981    #[prost(int32, optional, tag="13")]
5982    pub crop_layer_id: ::core::option::Option<i32>,
5983    #[prost(bool, optional, tag="14")]
5984    pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
5985    #[prost(message, optional, tag="15")]
5986    pub touchable_region_crop: ::core::option::Option<RectProto>,
5987    #[prost(message, optional, tag="16")]
5988    pub transform: ::core::option::Option<TransformProto>,
5989    #[prost(uint32, optional, tag="17")]
5990    pub input_config: ::core::option::Option<u32>,
5991}
5992#[derive(Clone, PartialEq, ::prost::Message)]
5993pub struct BlurRegion {
5994    #[prost(uint32, optional, tag="1")]
5995    pub blur_radius: ::core::option::Option<u32>,
5996    #[deprecated]
5997    #[prost(uint32, optional, tag="2")]
5998    pub corner_radius_tl: ::core::option::Option<u32>,
5999    #[deprecated]
6000    #[prost(uint32, optional, tag="3")]
6001    pub corner_radius_tr: ::core::option::Option<u32>,
6002    #[deprecated]
6003    #[prost(uint32, optional, tag="4")]
6004    pub corner_radius_bl: ::core::option::Option<u32>,
6005    #[deprecated]
6006    #[prost(float, optional, tag="5")]
6007    pub corner_radius_br: ::core::option::Option<f32>,
6008    #[prost(float, optional, tag="11")]
6009    pub corner_radius_tlx: ::core::option::Option<f32>,
6010    #[prost(float, optional, tag="12")]
6011    pub corner_radius_tly: ::core::option::Option<f32>,
6012    #[prost(float, optional, tag="13")]
6013    pub corner_radius_trx: ::core::option::Option<f32>,
6014    #[prost(float, optional, tag="14")]
6015    pub corner_radius_try: ::core::option::Option<f32>,
6016    #[prost(float, optional, tag="15")]
6017    pub corner_radius_blx: ::core::option::Option<f32>,
6018    #[prost(float, optional, tag="16")]
6019    pub corner_radius_bly: ::core::option::Option<f32>,
6020    #[prost(float, optional, tag="17")]
6021    pub corner_radius_brx: ::core::option::Option<f32>,
6022    #[prost(float, optional, tag="18")]
6023    pub corner_radius_bry: ::core::option::Option<f32>,
6024    #[prost(float, optional, tag="6")]
6025    pub alpha: ::core::option::Option<f32>,
6026    #[prost(int32, optional, tag="7")]
6027    pub left: ::core::option::Option<i32>,
6028    #[prost(int32, optional, tag="8")]
6029    pub top: ::core::option::Option<i32>,
6030    #[prost(int32, optional, tag="9")]
6031    pub right: ::core::option::Option<i32>,
6032    #[prost(int32, optional, tag="10")]
6033    pub bottom: ::core::option::Option<i32>,
6034}
6035#[derive(Clone, PartialEq, ::prost::Message)]
6036pub struct ColorTransformProto {
6037    /// This will be a 4x4 matrix of float values
6038    #[prost(float, repeated, tag="1")]
6039    pub val: ::prost::alloc::vec::Vec<f32>,
6040}
6041#[derive(Clone, PartialEq, ::prost::Message)]
6042pub struct BoxShadowSettings {
6043    #[prost(message, repeated, tag="1")]
6044    pub box_shadows: ::prost::alloc::vec::Vec<box_shadow_settings::BoxShadowParams>,
6045}
6046/// Nested message and enum types in `BoxShadowSettings`.
6047pub mod box_shadow_settings {
6048    #[derive(Clone, PartialEq, ::prost::Message)]
6049    pub struct BoxShadowParams {
6050        #[prost(float, optional, tag="1")]
6051        pub blur_radius: ::core::option::Option<f32>,
6052        #[prost(float, optional, tag="2")]
6053        pub spread_radius: ::core::option::Option<f32>,
6054        #[prost(int32, optional, tag="3")]
6055        pub color: ::core::option::Option<i32>,
6056        #[prost(float, optional, tag="4")]
6057        pub offset_x: ::core::option::Option<f32>,
6058        #[prost(float, optional, tag="5")]
6059        pub offset_y: ::core::option::Option<f32>,
6060    }
6061}
6062#[derive(Clone, PartialEq, ::prost::Message)]
6063pub struct BorderSettings {
6064    #[prost(float, optional, tag="1")]
6065    pub stroke_width: ::core::option::Option<f32>,
6066    #[prost(int32, optional, tag="2")]
6067    pub color: ::core::option::Option<i32>,
6068}
6069// Begin of protos/perfetto/trace/android/surfaceflinger_layers.proto
6070
6071/// Message used by Winscope to process legacy trace files.
6072/// Represents a file full of surface flinger trace entries.
6073/// Encoded, it should start with 0x4c 0x59 0x52 0x54 0x52 0x41 0x43 0x45
6074/// (.LYRTRACE), such that they can be easily identified.
6075#[derive(Clone, PartialEq, ::prost::Message)]
6076pub struct LayersTraceFileProto {
6077    /// Must be the first field, set to value in MagicNumber
6078    #[prost(fixed64, optional, tag="1")]
6079    pub magic_number: ::core::option::Option<u64>,
6080    #[prost(message, repeated, tag="2")]
6081    pub entry: ::prost::alloc::vec::Vec<LayersSnapshotProto>,
6082    /// Offset between real-time clock and elapsed time clock in nanoseconds.
6083    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
6084    /// systemTime(SYSTEM_TIME_MONOTONIC)
6085    #[prost(fixed64, optional, tag="3")]
6086    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
6087}
6088/// Nested message and enum types in `LayersTraceFileProto`.
6089pub mod layers_trace_file_proto {
6090    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
6091    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
6092    /// and there's no nice way to put 64bit constants into .proto files.
6093    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6094    #[repr(i32)]
6095    pub enum MagicNumber {
6096        Invalid = 0,
6097        /// LYRT (little-endian ASCII)
6098        L = 1414682956,
6099        /// RACE (little-endian ASCII)
6100        H = 1162035538,
6101    }
6102    impl MagicNumber {
6103        /// String value of the enum field names used in the ProtoBuf definition.
6104        ///
6105        /// The values are not transformed in any way and thus are considered stable
6106        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6107        pub fn as_str_name(&self) -> &'static str {
6108            match self {
6109                MagicNumber::Invalid => "INVALID",
6110                MagicNumber::L => "MAGIC_NUMBER_L",
6111                MagicNumber::H => "MAGIC_NUMBER_H",
6112            }
6113        }
6114    }
6115}
6116#[derive(Clone, PartialEq, ::prost::Message)]
6117pub struct LayersSnapshotProto {
6118    /// elapsed realtime in nanos since boot of when this entry was logged
6119    #[prost(sfixed64, optional, tag="1")]
6120    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
6121    /// SurfaceFlinger's stage where the snapshot was triggered.
6122    /// Currently either "visibleRegionsDirty" or "bufferLatched".
6123    #[prost(string, optional, tag="2")]
6124    pub r#where: ::core::option::Option<::prost::alloc::string::String>,
6125    #[prost(message, optional, tag="3")]
6126    pub layers: ::core::option::Option<LayersProto>,
6127    /// Blob for the current HWC information for all layers, reported by dumpsys.
6128    /// Example:
6129    ///    "maxDownScale: 4, maxFullWidth: 8192, HWState: 1, AssignedState: 3, ..."
6130    #[prost(string, optional, tag="4")]
6131    pub hwc_blob: ::core::option::Option<::prost::alloc::string::String>,
6132    /// Excludes state sent during composition like visible region and composition
6133    /// type.
6134    #[prost(bool, optional, tag="5")]
6135    pub excludes_composition_state: ::core::option::Option<bool>,
6136    /// Number of missed entries since the last entry was recorded.
6137    #[prost(uint32, optional, tag="6")]
6138    pub missed_entries: ::core::option::Option<u32>,
6139    #[prost(message, repeated, tag="7")]
6140    pub displays: ::prost::alloc::vec::Vec<DisplayProto>,
6141    #[prost(int64, optional, tag="8")]
6142    pub vsync_id: ::core::option::Option<i64>,
6143}
6144/// Contains a list of all layers.
6145#[derive(Clone, PartialEq, ::prost::Message)]
6146pub struct LayersProto {
6147    #[prost(message, repeated, tag="1")]
6148    pub layers: ::prost::alloc::vec::Vec<LayerProto>,
6149}
6150#[derive(Clone, PartialEq, ::prost::Message)]
6151pub struct DisplayProto {
6152    #[prost(uint64, optional, tag="1")]
6153    pub id: ::core::option::Option<u64>,
6154    /// Display descriptor, e.g. "Built-In Screen"
6155    #[prost(string, optional, tag="2")]
6156    pub name: ::core::option::Option<::prost::alloc::string::String>,
6157    #[prost(uint32, optional, tag="3")]
6158    pub layer_stack: ::core::option::Option<u32>,
6159    #[prost(message, optional, tag="4")]
6160    pub size: ::core::option::Option<SizeProto>,
6161    #[prost(message, optional, tag="5")]
6162    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
6163    #[prost(message, optional, tag="6")]
6164    pub transform: ::core::option::Option<TransformProto>,
6165    #[prost(bool, optional, tag="7")]
6166    pub is_virtual: ::core::option::Option<bool>,
6167    #[prost(double, optional, tag="8")]
6168    pub dpi_x: ::core::option::Option<f64>,
6169    #[prost(double, optional, tag="9")]
6170    pub dpi_y: ::core::option::Option<f64>,
6171}
6172/// Information about each layer.
6173#[derive(Clone, PartialEq, ::prost::Message)]
6174pub struct LayerProto {
6175    /// unique id per layer.
6176    #[prost(int32, optional, tag="1")]
6177    pub id: ::core::option::Option<i32>,
6178    /// unique name per layer.
6179    /// Example: "Wallpaper".
6180    #[prost(string, optional, tag="2")]
6181    pub name: ::core::option::Option<::prost::alloc::string::String>,
6182    /// list of children this layer may have. May be empty.
6183    #[prost(int32, repeated, tag="3")]
6184    pub children: ::prost::alloc::vec::Vec<i32>,
6185    /// list of layers that are z order relative to this layer.
6186    #[prost(int32, repeated, tag="4")]
6187    pub relatives: ::prost::alloc::vec::Vec<i32>,
6188    /// The type of layer.
6189    /// Examples: "ContainerLayer", "BufferStateLayer".
6190    #[prost(string, optional, tag="5")]
6191    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
6192    #[prost(message, optional, tag="6")]
6193    pub transparent_region: ::core::option::Option<RegionProto>,
6194    #[prost(message, optional, tag="7")]
6195    pub visible_region: ::core::option::Option<RegionProto>,
6196    #[prost(message, optional, tag="8")]
6197    pub damage_region: ::core::option::Option<RegionProto>,
6198    #[prost(uint32, optional, tag="9")]
6199    pub layer_stack: ::core::option::Option<u32>,
6200    /// The layer's z order. Can be z order in layer stack, relative to parent,
6201    /// or relative to another layer specified in zOrderRelative.
6202    #[prost(int32, optional, tag="10")]
6203    pub z: ::core::option::Option<i32>,
6204    /// The layer's position on the display.
6205    #[prost(message, optional, tag="11")]
6206    pub position: ::core::option::Option<PositionProto>,
6207    /// The layer's requested position.
6208    #[prost(message, optional, tag="12")]
6209    pub requested_position: ::core::option::Option<PositionProto>,
6210    /// The layer's size.
6211    #[prost(message, optional, tag="13")]
6212    pub size: ::core::option::Option<SizeProto>,
6213    /// The layer's crop in its own bounds.
6214    #[prost(message, optional, tag="14")]
6215    pub crop: ::core::option::Option<RectProto>,
6216    /// The layer's crop in its parent's bounds.
6217    #[deprecated]
6218    #[prost(message, optional, tag="15")]
6219    pub final_crop: ::core::option::Option<RectProto>,
6220    #[prost(bool, optional, tag="16")]
6221    pub is_opaque: ::core::option::Option<bool>,
6222    #[prost(bool, optional, tag="17")]
6223    pub invalidate: ::core::option::Option<bool>,
6224    /// Composition states's dataspace.
6225    /// Examples: "STANDARD_BT709", "STANDARD_BT601_625".
6226    /// See full enum in
6227    /// frameworks/native/libs/nativewindow/include/android/data_space.h
6228    #[prost(string, optional, tag="18")]
6229    pub dataspace: ::core::option::Option<::prost::alloc::string::String>,
6230    /// Buffer's pixel format
6231    /// Examples: "PIXEL_FORMAT_TRANSLUCENT", "PIXEL_FORMAT_RGBA_8888".
6232    /// See full enum in frameworks/native/libs/ui/include/ui/PixelFormat.h
6233    #[prost(string, optional, tag="19")]
6234    pub pixel_format: ::core::option::Option<::prost::alloc::string::String>,
6235    /// The layer's actual color.
6236    #[prost(message, optional, tag="20")]
6237    pub color: ::core::option::Option<ColorProto>,
6238    /// The layer's requested color.
6239    #[prost(message, optional, tag="21")]
6240    pub requested_color: ::core::option::Option<ColorProto>,
6241    /// Can be any combination of
6242    ///     hidden = 0x01
6243    ///     opaque = 0x02,
6244    ///     secure = 0x80,
6245    #[prost(uint32, optional, tag="22")]
6246    pub flags: ::core::option::Option<u32>,
6247    /// The layer's actual transform
6248    #[prost(message, optional, tag="23")]
6249    pub transform: ::core::option::Option<TransformProto>,
6250    /// The layer's requested transform.
6251    #[prost(message, optional, tag="24")]
6252    pub requested_transform: ::core::option::Option<TransformProto>,
6253    /// The parent layer. This value can be null if there is no parent.
6254    #[prost(int32, optional, tag="25")]
6255    pub parent: ::core::option::Option<i32>,
6256    /// The layer that this layer has a z order relative to. This value can be
6257    /// null.
6258    #[prost(int32, optional, tag="26")]
6259    pub z_order_relative_of: ::core::option::Option<i32>,
6260    /// This value can be null if there's nothing to draw.
6261    #[prost(message, optional, tag="27")]
6262    pub active_buffer: ::core::option::Option<ActiveBufferProto>,
6263    /// The number of frames available.
6264    #[prost(int32, optional, tag="28")]
6265    pub queued_frames: ::core::option::Option<i32>,
6266    #[prost(bool, optional, tag="29")]
6267    pub refresh_pending: ::core::option::Option<bool>,
6268    /// The layer's composer backend destination frame
6269    #[prost(message, optional, tag="30")]
6270    pub hwc_frame: ::core::option::Option<RectProto>,
6271    /// The layer's composer backend source crop
6272    #[prost(message, optional, tag="31")]
6273    pub hwc_crop: ::core::option::Option<FloatRectProto>,
6274    /// The layer's composer backend transform
6275    #[prost(int32, optional, tag="32")]
6276    pub hwc_transform: ::core::option::Option<i32>,
6277    #[deprecated]
6278    #[prost(int32, optional, tag="33")]
6279    pub window_type: ::core::option::Option<i32>,
6280    #[deprecated]
6281    #[prost(int32, optional, tag="34")]
6282    pub app_id: ::core::option::Option<i32>,
6283    /// The layer's composition type
6284    #[prost(enumeration="HwcCompositionType", optional, tag="35")]
6285    pub hwc_composition_type: ::core::option::Option<i32>,
6286    /// If it's a buffer layer, indicate if the content is protected
6287    #[prost(bool, optional, tag="36")]
6288    pub is_protected: ::core::option::Option<bool>,
6289    /// Current frame number being rendered.
6290    #[prost(uint64, optional, tag="37")]
6291    pub curr_frame: ::core::option::Option<u64>,
6292    /// A list of barriers that the layer is waiting to update state.
6293    #[prost(message, repeated, tag="38")]
6294    pub barrier_layer: ::prost::alloc::vec::Vec<BarrierLayerProto>,
6295    /// If active_buffer is not null, record its transform.
6296    #[prost(message, optional, tag="39")]
6297    pub buffer_transform: ::core::option::Option<TransformProto>,
6298    #[prost(int32, optional, tag="40")]
6299    pub effective_scaling_mode: ::core::option::Option<i32>,
6300    /// Layer's corner radius
6301    #[deprecated]
6302    #[prost(float, optional, tag="41")]
6303    pub corner_radius: ::core::option::Option<f32>,
6304    /// Metadata map. May be empty.
6305    #[prost(map="int32, string", tag="42")]
6306    pub metadata: ::std::collections::HashMap<i32, ::prost::alloc::string::String>,
6307    #[prost(message, optional, tag="43")]
6308    pub effective_transform: ::core::option::Option<TransformProto>,
6309    #[prost(message, optional, tag="44")]
6310    pub source_bounds: ::core::option::Option<FloatRectProto>,
6311    #[prost(message, optional, tag="45")]
6312    pub bounds: ::core::option::Option<FloatRectProto>,
6313    #[prost(message, optional, tag="46")]
6314    pub screen_bounds: ::core::option::Option<FloatRectProto>,
6315    #[prost(message, optional, tag="47")]
6316    pub input_window_info: ::core::option::Option<InputWindowInfoProto>,
6317    /// Crop used to draw the rounded corner.
6318    #[prost(message, optional, tag="48")]
6319    pub corner_radius_crop: ::core::option::Option<FloatRectProto>,
6320    /// length of the shadow to draw around the layer, it may be set on the
6321    /// layer or set by a parent layer.
6322    #[prost(float, optional, tag="49")]
6323    pub shadow_radius: ::core::option::Option<f32>,
6324    #[prost(message, optional, tag="50")]
6325    pub color_transform: ::core::option::Option<ColorTransformProto>,
6326    #[prost(bool, optional, tag="51")]
6327    pub is_relative_of: ::core::option::Option<bool>,
6328    /// Layer's background blur radius in pixels.
6329    #[prost(int32, optional, tag="52")]
6330    pub background_blur_radius: ::core::option::Option<i32>,
6331    #[prost(uint32, optional, tag="53")]
6332    pub owner_uid: ::core::option::Option<u32>,
6333    /// Regions of a layer, where blur should be applied.
6334    #[prost(message, repeated, tag="54")]
6335    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
6336    #[prost(bool, optional, tag="55")]
6337    pub is_trusted_overlay: ::core::option::Option<bool>,
6338    /// Corner radius explicitly set on layer rather than inherited
6339    #[deprecated]
6340    #[prost(float, optional, tag="56")]
6341    pub requested_corner_radius: ::core::option::Option<f32>,
6342    #[prost(message, optional, tag="57")]
6343    pub destination_frame: ::core::option::Option<RectProto>,
6344    #[prost(uint32, optional, tag="58")]
6345    pub original_id: ::core::option::Option<u32>,
6346    #[prost(enumeration="TrustedOverlay", optional, tag="59")]
6347    pub trusted_overlay: ::core::option::Option<i32>,
6348    /// Layer's scale during background blur, relative to 1.0f=100%
6349    #[prost(float, optional, tag="60")]
6350    pub background_blur_scale: ::core::option::Option<f32>,
6351    /// Layer's corner radius.
6352    #[prost(message, optional, tag="61")]
6353    pub corner_radii: ::core::option::Option<CornerRadiiProto>,
6354    /// Corner radius explicitly set on layer rather than inherited
6355    #[prost(message, optional, tag="62")]
6356    pub requested_corner_radii: ::core::option::Option<CornerRadiiProto>,
6357    /// Corner radius explicity set as drawn by client
6358    #[prost(message, optional, tag="63")]
6359    pub client_drawn_corner_radii: ::core::option::Option<CornerRadiiProto>,
6360    /// Priority value of the layer set by the system.
6361    #[prost(int32, optional, tag="64")]
6362    pub system_content_priority: ::core::option::Option<i32>,
6363    /// Settings which specify how shadows should be drawn for a layer.
6364    #[prost(message, optional, tag="65")]
6365    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
6366    /// Settings which specify how an outline should be drawn for a layer.
6367    #[prost(message, optional, tag="66")]
6368    pub border_settings: ::core::option::Option<BorderSettings>,
6369    /// "True" corner radii of the layer computed by SurfaceFlinger.
6370    #[prost(message, optional, tag="67")]
6371    pub effective_radii: ::core::option::Option<CornerRadiiProto>,
6372}
6373#[derive(Clone, PartialEq, ::prost::Message)]
6374pub struct PositionProto {
6375    #[prost(float, optional, tag="1")]
6376    pub x: ::core::option::Option<f32>,
6377    #[prost(float, optional, tag="2")]
6378    pub y: ::core::option::Option<f32>,
6379}
6380#[derive(Clone, PartialEq, ::prost::Message)]
6381pub struct FloatRectProto {
6382    #[prost(float, optional, tag="1")]
6383    pub left: ::core::option::Option<f32>,
6384    #[prost(float, optional, tag="2")]
6385    pub top: ::core::option::Option<f32>,
6386    #[prost(float, optional, tag="3")]
6387    pub right: ::core::option::Option<f32>,
6388    #[prost(float, optional, tag="4")]
6389    pub bottom: ::core::option::Option<f32>,
6390}
6391#[derive(Clone, PartialEq, ::prost::Message)]
6392pub struct CornerRadiiProto {
6393    #[prost(float, optional, tag="1")]
6394    pub tl: ::core::option::Option<f32>,
6395    #[prost(float, optional, tag="2")]
6396    pub tr: ::core::option::Option<f32>,
6397    #[prost(float, optional, tag="3")]
6398    pub bl: ::core::option::Option<f32>,
6399    #[prost(float, optional, tag="4")]
6400    pub br: ::core::option::Option<f32>,
6401}
6402#[derive(Clone, PartialEq, ::prost::Message)]
6403pub struct ActiveBufferProto {
6404    #[prost(uint32, optional, tag="1")]
6405    pub width: ::core::option::Option<u32>,
6406    #[prost(uint32, optional, tag="2")]
6407    pub height: ::core::option::Option<u32>,
6408    #[prost(uint32, optional, tag="3")]
6409    pub stride: ::core::option::Option<u32>,
6410    #[prost(int32, optional, tag="4")]
6411    pub format: ::core::option::Option<i32>,
6412    #[prost(uint64, optional, tag="5")]
6413    pub usage: ::core::option::Option<u64>,
6414}
6415#[derive(Clone, PartialEq, ::prost::Message)]
6416pub struct BarrierLayerProto {
6417    /// layer id the barrier is waiting on.
6418    #[prost(int32, optional, tag="1")]
6419    pub id: ::core::option::Option<i32>,
6420    /// frame number the barrier is waiting on.
6421    #[prost(uint64, optional, tag="2")]
6422    pub frame_number: ::core::option::Option<u64>,
6423}
6424// End of protos/perfetto/trace/android/surfaceflinger_layers.proto
6425
6426// Begin of protos/perfetto/trace/android/surfaceflinger_transactions.proto
6427
6428/// Message used by Winscope to process legacy trace files.
6429/// Represents a file full of surface flinger transactions.
6430/// Encoded, it should start with 0x54 0x4E 0x58 0x54 0x52 0x41 0x43 0x45
6431/// (.TNXTRACE), such that they can be easily identified.
6432#[derive(Clone, PartialEq, ::prost::Message)]
6433pub struct TransactionTraceFile {
6434    /// Must be the first field, set to value in MagicNumber
6435    #[prost(fixed64, optional, tag="1")]
6436    pub magic_number: ::core::option::Option<u64>,
6437    #[prost(message, repeated, tag="2")]
6438    pub entry: ::prost::alloc::vec::Vec<TransactionTraceEntry>,
6439    /// offset between real-time clock and elapsed time clock in nanoseconds.
6440    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
6441    /// systemTime(SYSTEM_TIME_MONOTONIC)
6442    #[prost(fixed64, optional, tag="3")]
6443    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
6444    #[prost(uint32, optional, tag="4")]
6445    pub version: ::core::option::Option<u32>,
6446}
6447/// Nested message and enum types in `TransactionTraceFile`.
6448pub mod transaction_trace_file {
6449    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
6450    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
6451    /// and there's no nice way to put 64bit constants into .proto files.
6452    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6453    #[repr(i32)]
6454    pub enum MagicNumber {
6455        Invalid = 0,
6456        /// TNXT (little-endian ASCII)
6457        L = 1415073364,
6458        /// RACE (little-endian ASCII)
6459        H = 1162035538,
6460    }
6461    impl MagicNumber {
6462        /// String value of the enum field names used in the ProtoBuf definition.
6463        ///
6464        /// The values are not transformed in any way and thus are considered stable
6465        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6466        pub fn as_str_name(&self) -> &'static str {
6467            match self {
6468                MagicNumber::Invalid => "INVALID",
6469                MagicNumber::L => "MAGIC_NUMBER_L",
6470                MagicNumber::H => "MAGIC_NUMBER_H",
6471            }
6472        }
6473    }
6474}
6475#[derive(Clone, PartialEq, ::prost::Message)]
6476pub struct TransactionTraceEntry {
6477    #[prost(int64, optional, tag="1")]
6478    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
6479    #[prost(int64, optional, tag="2")]
6480    pub vsync_id: ::core::option::Option<i64>,
6481    #[prost(message, repeated, tag="3")]
6482    pub transactions: ::prost::alloc::vec::Vec<TransactionState>,
6483    #[prost(message, repeated, tag="4")]
6484    pub added_layers: ::prost::alloc::vec::Vec<LayerCreationArgs>,
6485    #[prost(uint32, repeated, packed="false", tag="5")]
6486    pub destroyed_layers: ::prost::alloc::vec::Vec<u32>,
6487    #[prost(message, repeated, tag="6")]
6488    pub added_displays: ::prost::alloc::vec::Vec<DisplayState>,
6489    #[prost(int32, repeated, packed="false", tag="7")]
6490    pub removed_displays: ::prost::alloc::vec::Vec<i32>,
6491    #[prost(uint32, repeated, packed="false", tag="8")]
6492    pub destroyed_layer_handles: ::prost::alloc::vec::Vec<u32>,
6493    #[prost(bool, optional, tag="9")]
6494    pub displays_changed: ::core::option::Option<bool>,
6495    #[prost(message, repeated, tag="10")]
6496    pub displays: ::prost::alloc::vec::Vec<DisplayInfo>,
6497}
6498#[derive(Clone, PartialEq, ::prost::Message)]
6499pub struct DisplayInfo {
6500    #[prost(uint32, optional, tag="1")]
6501    pub layer_stack: ::core::option::Option<u32>,
6502    #[prost(int32, optional, tag="2")]
6503    pub display_id: ::core::option::Option<i32>,
6504    #[prost(int32, optional, tag="3")]
6505    pub logical_width: ::core::option::Option<i32>,
6506    #[prost(int32, optional, tag="4")]
6507    pub logical_height: ::core::option::Option<i32>,
6508    #[prost(message, optional, tag="5")]
6509    pub transform_inverse: ::core::option::Option<Transform>,
6510    #[prost(message, optional, tag="6")]
6511    pub transform: ::core::option::Option<Transform>,
6512    #[prost(bool, optional, tag="7")]
6513    pub receives_input: ::core::option::Option<bool>,
6514    #[prost(bool, optional, tag="8")]
6515    pub is_secure: ::core::option::Option<bool>,
6516    #[prost(bool, optional, tag="9")]
6517    pub is_primary: ::core::option::Option<bool>,
6518    #[prost(bool, optional, tag="10")]
6519    pub is_virtual: ::core::option::Option<bool>,
6520    #[prost(int32, optional, tag="11")]
6521    pub rotation_flags: ::core::option::Option<i32>,
6522    #[prost(int32, optional, tag="12")]
6523    pub transform_hint: ::core::option::Option<i32>,
6524}
6525#[derive(Clone, PartialEq, ::prost::Message)]
6526pub struct LayerCreationArgs {
6527    #[prost(uint32, optional, tag="1")]
6528    pub layer_id: ::core::option::Option<u32>,
6529    #[prost(string, optional, tag="2")]
6530    pub name: ::core::option::Option<::prost::alloc::string::String>,
6531    #[prost(uint32, optional, tag="3")]
6532    pub flags: ::core::option::Option<u32>,
6533    #[prost(uint32, optional, tag="4")]
6534    pub parent_id: ::core::option::Option<u32>,
6535    #[prost(uint32, optional, tag="5")]
6536    pub mirror_from_id: ::core::option::Option<u32>,
6537    #[prost(bool, optional, tag="6")]
6538    pub add_to_root: ::core::option::Option<bool>,
6539    #[prost(uint32, optional, tag="7")]
6540    pub layer_stack_to_mirror: ::core::option::Option<u32>,
6541}
6542#[derive(Clone, PartialEq, ::prost::Message)]
6543pub struct Transform {
6544    #[prost(float, optional, tag="1")]
6545    pub dsdx: ::core::option::Option<f32>,
6546    #[prost(float, optional, tag="2")]
6547    pub dtdx: ::core::option::Option<f32>,
6548    #[prost(float, optional, tag="3")]
6549    pub dtdy: ::core::option::Option<f32>,
6550    #[prost(float, optional, tag="4")]
6551    pub dsdy: ::core::option::Option<f32>,
6552    #[prost(float, optional, tag="5")]
6553    pub tx: ::core::option::Option<f32>,
6554    #[prost(float, optional, tag="6")]
6555    pub ty: ::core::option::Option<f32>,
6556}
6557#[derive(Clone, PartialEq, ::prost::Message)]
6558pub struct TransactionBarrier {
6559    #[prost(string, optional, tag="1")]
6560    pub barrier_token: ::core::option::Option<::prost::alloc::string::String>,
6561    #[prost(uint32, optional, tag="2")]
6562    pub kind: ::core::option::Option<u32>,
6563}
6564#[derive(Clone, PartialEq, ::prost::Message)]
6565pub struct TransactionState {
6566    #[prost(int32, optional, tag="1")]
6567    pub pid: ::core::option::Option<i32>,
6568    #[prost(int32, optional, tag="2")]
6569    pub uid: ::core::option::Option<i32>,
6570    #[prost(int64, optional, tag="3")]
6571    pub vsync_id: ::core::option::Option<i64>,
6572    #[prost(int32, optional, tag="4")]
6573    pub input_event_id: ::core::option::Option<i32>,
6574    #[prost(int64, optional, tag="5")]
6575    pub post_time: ::core::option::Option<i64>,
6576    #[prost(uint64, optional, tag="6")]
6577    pub transaction_id: ::core::option::Option<u64>,
6578    #[prost(message, repeated, tag="7")]
6579    pub layer_changes: ::prost::alloc::vec::Vec<LayerState>,
6580    #[prost(message, repeated, tag="8")]
6581    pub display_changes: ::prost::alloc::vec::Vec<DisplayState>,
6582    #[prost(uint64, repeated, packed="false", tag="9")]
6583    pub merged_transaction_ids: ::prost::alloc::vec::Vec<u64>,
6584    #[prost(uint64, optional, tag="10")]
6585    pub apply_token: ::core::option::Option<u64>,
6586    #[prost(message, repeated, tag="11")]
6587    pub transaction_barriers: ::prost::alloc::vec::Vec<TransactionBarrier>,
6588}
6589/// Keep insync with layer_state_t
6590#[derive(Clone, PartialEq, ::prost::Message)]
6591pub struct LayerState {
6592    #[prost(uint32, optional, tag="1")]
6593    pub layer_id: ::core::option::Option<u32>,
6594    #[prost(uint64, optional, tag="2")]
6595    pub what: ::core::option::Option<u64>,
6596    #[prost(float, optional, tag="3")]
6597    pub x: ::core::option::Option<f32>,
6598    #[prost(float, optional, tag="4")]
6599    pub y: ::core::option::Option<f32>,
6600    #[prost(int32, optional, tag="5")]
6601    pub z: ::core::option::Option<i32>,
6602    #[prost(uint32, optional, tag="6")]
6603    pub w: ::core::option::Option<u32>,
6604    #[prost(uint32, optional, tag="7")]
6605    pub h: ::core::option::Option<u32>,
6606    #[prost(uint32, optional, tag="8")]
6607    pub layer_stack: ::core::option::Option<u32>,
6608    #[prost(uint32, optional, tag="9")]
6609    pub flags: ::core::option::Option<u32>,
6610    #[prost(uint32, optional, tag="10")]
6611    pub mask: ::core::option::Option<u32>,
6612    #[prost(message, optional, tag="11")]
6613    pub matrix: ::core::option::Option<layer_state::Matrix22>,
6614    #[deprecated]
6615    #[prost(float, optional, tag="12")]
6616    pub corner_radius: ::core::option::Option<f32>,
6617    #[prost(uint32, optional, tag="13")]
6618    pub background_blur_radius: ::core::option::Option<u32>,
6619    #[prost(uint32, optional, tag="14")]
6620    pub parent_id: ::core::option::Option<u32>,
6621    #[prost(uint32, optional, tag="15")]
6622    pub relative_parent_id: ::core::option::Option<u32>,
6623    #[prost(float, optional, tag="16")]
6624    pub alpha: ::core::option::Option<f32>,
6625    #[prost(message, optional, tag="17")]
6626    pub color: ::core::option::Option<layer_state::Color3>,
6627    #[prost(message, optional, tag="18")]
6628    pub transparent_region: ::core::option::Option<RegionProto>,
6629    #[prost(uint32, optional, tag="19")]
6630    pub transform: ::core::option::Option<u32>,
6631    #[prost(bool, optional, tag="20")]
6632    pub transform_to_display_inverse: ::core::option::Option<bool>,
6633    #[prost(message, optional, tag="21")]
6634    pub crop: ::core::option::Option<RectProto>,
6635    #[prost(message, optional, tag="22")]
6636    pub buffer_data: ::core::option::Option<layer_state::BufferData>,
6637    #[prost(int32, optional, tag="23")]
6638    pub api: ::core::option::Option<i32>,
6639    #[prost(bool, optional, tag="24")]
6640    pub has_sideband_stream: ::core::option::Option<bool>,
6641    #[prost(message, optional, tag="25")]
6642    pub color_transform: ::core::option::Option<ColorTransformProto>,
6643    #[prost(message, repeated, tag="26")]
6644    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
6645    #[prost(message, optional, tag="27")]
6646    pub window_info_handle: ::core::option::Option<layer_state::WindowInfo>,
6647    #[prost(float, optional, tag="28")]
6648    pub bg_color_alpha: ::core::option::Option<f32>,
6649    #[prost(int32, optional, tag="29")]
6650    pub bg_color_dataspace: ::core::option::Option<i32>,
6651    #[prost(bool, optional, tag="30")]
6652    pub color_space_agnostic: ::core::option::Option<bool>,
6653    #[prost(float, optional, tag="31")]
6654    pub shadow_radius: ::core::option::Option<f32>,
6655    #[prost(int32, optional, tag="32")]
6656    pub frame_rate_selection_priority: ::core::option::Option<i32>,
6657    #[prost(float, optional, tag="33")]
6658    pub frame_rate: ::core::option::Option<f32>,
6659    #[prost(int32, optional, tag="34")]
6660    pub frame_rate_compatibility: ::core::option::Option<i32>,
6661    #[prost(int32, optional, tag="35")]
6662    pub change_frame_rate_strategy: ::core::option::Option<i32>,
6663    #[prost(uint32, optional, tag="36")]
6664    pub fixed_transform_hint: ::core::option::Option<u32>,
6665    #[prost(uint64, optional, tag="37")]
6666    pub frame_number: ::core::option::Option<u64>,
6667    #[prost(bool, optional, tag="38")]
6668    pub auto_refresh: ::core::option::Option<bool>,
6669    /// unused
6670    #[prost(bool, optional, tag="39")]
6671    pub is_trusted_overlay: ::core::option::Option<bool>,
6672    #[prost(message, optional, tag="40")]
6673    pub buffer_crop: ::core::option::Option<RectProto>,
6674    #[prost(message, optional, tag="41")]
6675    pub destination_frame: ::core::option::Option<RectProto>,
6676    #[prost(enumeration="layer_state::DropInputMode", optional, tag="42")]
6677    pub drop_input_mode: ::core::option::Option<i32>,
6678    #[prost(enumeration="TrustedOverlay", optional, tag="43")]
6679    pub trusted_overlay: ::core::option::Option<i32>,
6680    #[prost(float, optional, tag="44")]
6681    pub background_blur_scale: ::core::option::Option<f32>,
6682    #[prost(message, optional, tag="45")]
6683    pub corner_radii: ::core::option::Option<layer_state::CornerRadii>,
6684    #[prost(message, optional, tag="46")]
6685    pub client_drawn_corner_radii: ::core::option::Option<layer_state::CornerRadii>,
6686    #[prost(int32, optional, tag="47")]
6687    pub system_content_priority: ::core::option::Option<i32>,
6688    #[prost(message, optional, tag="48")]
6689    pub box_shadow_settings: ::core::option::Option<BoxShadowSettings>,
6690    #[prost(message, optional, tag="49")]
6691    pub border_settings: ::core::option::Option<BorderSettings>,
6692}
6693/// Nested message and enum types in `LayerState`.
6694pub mod layer_state {
6695    #[derive(Clone, PartialEq, ::prost::Message)]
6696    pub struct Matrix22 {
6697        #[prost(float, optional, tag="1")]
6698        pub dsdx: ::core::option::Option<f32>,
6699        #[prost(float, optional, tag="2")]
6700        pub dtdx: ::core::option::Option<f32>,
6701        #[prost(float, optional, tag="3")]
6702        pub dtdy: ::core::option::Option<f32>,
6703        #[prost(float, optional, tag="4")]
6704        pub dsdy: ::core::option::Option<f32>,
6705    }
6706    #[derive(Clone, PartialEq, ::prost::Message)]
6707    pub struct CornerRadii {
6708        #[prost(float, optional, tag="1")]
6709        pub tl: ::core::option::Option<f32>,
6710        #[prost(float, optional, tag="2")]
6711        pub tr: ::core::option::Option<f32>,
6712        #[prost(float, optional, tag="3")]
6713        pub bl: ::core::option::Option<f32>,
6714        #[prost(float, optional, tag="4")]
6715        pub br: ::core::option::Option<f32>,
6716    }
6717    #[derive(Clone, PartialEq, ::prost::Message)]
6718    pub struct Color3 {
6719        #[prost(float, optional, tag="1")]
6720        pub r: ::core::option::Option<f32>,
6721        #[prost(float, optional, tag="2")]
6722        pub g: ::core::option::Option<f32>,
6723        #[prost(float, optional, tag="3")]
6724        pub b: ::core::option::Option<f32>,
6725    }
6726    #[derive(Clone, PartialEq, ::prost::Message)]
6727    pub struct BufferData {
6728        #[prost(uint64, optional, tag="1")]
6729        pub buffer_id: ::core::option::Option<u64>,
6730        #[prost(uint32, optional, tag="2")]
6731        pub width: ::core::option::Option<u32>,
6732        #[prost(uint32, optional, tag="3")]
6733        pub height: ::core::option::Option<u32>,
6734        #[prost(uint64, optional, tag="4")]
6735        pub frame_number: ::core::option::Option<u64>,
6736        #[prost(uint32, optional, tag="5")]
6737        pub flags: ::core::option::Option<u32>,
6738        #[prost(uint64, optional, tag="6")]
6739        pub cached_buffer_id: ::core::option::Option<u64>,
6740        #[prost(enumeration="buffer_data::PixelFormat", optional, tag="7")]
6741        pub pixel_format: ::core::option::Option<i32>,
6742        #[prost(uint64, optional, tag="8")]
6743        pub usage: ::core::option::Option<u64>,
6744    }
6745    /// Nested message and enum types in `BufferData`.
6746    pub mod buffer_data {
6747        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6748        #[repr(i32)]
6749        pub enum BufferDataChange {
6750            None = 0,
6751            FenceChanged = 1,
6752            FrameNumberChanged = 2,
6753            CachedBufferChanged = 4,
6754        }
6755        impl BufferDataChange {
6756            /// String value of the enum field names used in the ProtoBuf definition.
6757            ///
6758            /// The values are not transformed in any way and thus are considered stable
6759            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6760            pub fn as_str_name(&self) -> &'static str {
6761                match self {
6762                    BufferDataChange::None => "BufferDataChangeNone",
6763                    BufferDataChange::FenceChanged => "fenceChanged",
6764                    BufferDataChange::FrameNumberChanged => "frameNumberChanged",
6765                    BufferDataChange::CachedBufferChanged => "cachedBufferChanged",
6766                }
6767            }
6768        }
6769        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6770        #[repr(i32)]
6771        pub enum PixelFormat {
6772            Unknown = 0,
6773            Custom = -4,
6774            Translucent = -3,
6775            Transparent = -2,
6776            Opaque = -1,
6777            Rgba8888 = 1,
6778            Rgbx8888 = 2,
6779            Rgb888 = 3,
6780            Rgb565 = 4,
6781            Bgra8888 = 5,
6782            Rgba5551 = 6,
6783            Rgba4444 = 7,
6784            RgbaFp16 = 22,
6785            Rgba1010102 = 43,
6786            R8 = 56,
6787        }
6788        impl PixelFormat {
6789            /// String value of the enum field names used in the ProtoBuf definition.
6790            ///
6791            /// The values are not transformed in any way and thus are considered stable
6792            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6793            pub fn as_str_name(&self) -> &'static str {
6794                match self {
6795                    PixelFormat::Unknown => "PIXEL_FORMAT_UNKNOWN",
6796                    PixelFormat::Custom => "PIXEL_FORMAT_CUSTOM",
6797                    PixelFormat::Translucent => "PIXEL_FORMAT_TRANSLUCENT",
6798                    PixelFormat::Transparent => "PIXEL_FORMAT_TRANSPARENT",
6799                    PixelFormat::Opaque => "PIXEL_FORMAT_OPAQUE",
6800                    PixelFormat::Rgba8888 => "PIXEL_FORMAT_RGBA_8888",
6801                    PixelFormat::Rgbx8888 => "PIXEL_FORMAT_RGBX_8888",
6802                    PixelFormat::Rgb888 => "PIXEL_FORMAT_RGB_888",
6803                    PixelFormat::Rgb565 => "PIXEL_FORMAT_RGB_565",
6804                    PixelFormat::Bgra8888 => "PIXEL_FORMAT_BGRA_8888",
6805                    PixelFormat::Rgba5551 => "PIXEL_FORMAT_RGBA_5551",
6806                    PixelFormat::Rgba4444 => "PIXEL_FORMAT_RGBA_4444",
6807                    PixelFormat::RgbaFp16 => "PIXEL_FORMAT_RGBA_FP16",
6808                    PixelFormat::Rgba1010102 => "PIXEL_FORMAT_RGBA_1010102",
6809                    PixelFormat::R8 => "PIXEL_FORMAT_R_8",
6810                }
6811            }
6812        }
6813    }
6814    #[derive(Clone, PartialEq, ::prost::Message)]
6815    pub struct WindowInfo {
6816        #[prost(uint32, optional, tag="1")]
6817        pub layout_params_flags: ::core::option::Option<u32>,
6818        #[prost(int32, optional, tag="2")]
6819        pub layout_params_type: ::core::option::Option<i32>,
6820        #[prost(message, optional, tag="3")]
6821        pub touchable_region: ::core::option::Option<super::RegionProto>,
6822        #[prost(int32, optional, tag="4")]
6823        pub surface_inset: ::core::option::Option<i32>,
6824        /// unused
6825        #[prost(bool, optional, tag="5")]
6826        pub focusable: ::core::option::Option<bool>,
6827        /// unused
6828        #[prost(bool, optional, tag="6")]
6829        pub has_wallpaper: ::core::option::Option<bool>,
6830        #[prost(float, optional, tag="7")]
6831        pub global_scale_factor: ::core::option::Option<f32>,
6832        #[prost(uint32, optional, tag="8")]
6833        pub crop_layer_id: ::core::option::Option<u32>,
6834        #[prost(bool, optional, tag="9")]
6835        pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
6836        #[prost(message, optional, tag="10")]
6837        pub touchable_region_crop: ::core::option::Option<super::RectProto>,
6838        #[prost(message, optional, tag="11")]
6839        pub transform: ::core::option::Option<super::Transform>,
6840        #[prost(uint32, optional, tag="12")]
6841        pub input_config: ::core::option::Option<u32>,
6842    }
6843    /// Changes are split into ChangesLsb and ChangesMsb. First 32 bits are in
6844    /// ChangesLsb and the next 32 bits are in ChangesMsb. This is needed because
6845    /// enums have to be 32 bits and there's no nice way to put 64bit constants
6846    /// into .proto files.
6847    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6848    #[repr(i32)]
6849    pub enum ChangesLsb {
6850        EChangesLsbNone = 0,
6851        EPositionChanged = 1,
6852        ELayerChanged = 2,
6853        /// unused = 0x00000004;
6854        EAlphaChanged = 8,
6855        EMatrixChanged = 16,
6856        ETransparentRegionChanged = 32,
6857        EFlagsChanged = 64,
6858        ELayerStackChanged = 128,
6859        EReleaseBufferListenerChanged = 1024,
6860        EShadowRadiusChanged = 2048,
6861        EBufferCropChanged = 8192,
6862        ERelativeLayerChanged = 16384,
6863        EReparent = 32768,
6864        EColorChanged = 65536,
6865        EBufferTransformChanged = 262144,
6866        ETransformToDisplayInverseChanged = 524288,
6867        ECropChanged = 1048576,
6868        EBufferChanged = 2097152,
6869        EAcquireFenceChanged = 4194304,
6870        EDataspaceChanged = 8388608,
6871        EHdrMetadataChanged = 16777216,
6872        ESurfaceDamageRegionChanged = 33554432,
6873        EApiChanged = 67108864,
6874        ESidebandStreamChanged = 134217728,
6875        EColorTransformChanged = 268435456,
6876        EHasListenerCallbacksChanged = 536870912,
6877        EInputInfoChanged = 1073741824,
6878        /// 0x80000000; (proto stores enums as signed int)
6879        ECornerRadiusChanged = -2147483648,
6880    }
6881    impl ChangesLsb {
6882        /// String value of the enum field names used in the ProtoBuf definition.
6883        ///
6884        /// The values are not transformed in any way and thus are considered stable
6885        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6886        pub fn as_str_name(&self) -> &'static str {
6887            match self {
6888                ChangesLsb::EChangesLsbNone => "eChangesLsbNone",
6889                ChangesLsb::EPositionChanged => "ePositionChanged",
6890                ChangesLsb::ELayerChanged => "eLayerChanged",
6891                ChangesLsb::EAlphaChanged => "eAlphaChanged",
6892                ChangesLsb::EMatrixChanged => "eMatrixChanged",
6893                ChangesLsb::ETransparentRegionChanged => "eTransparentRegionChanged",
6894                ChangesLsb::EFlagsChanged => "eFlagsChanged",
6895                ChangesLsb::ELayerStackChanged => "eLayerStackChanged",
6896                ChangesLsb::EReleaseBufferListenerChanged => "eReleaseBufferListenerChanged",
6897                ChangesLsb::EShadowRadiusChanged => "eShadowRadiusChanged",
6898                ChangesLsb::EBufferCropChanged => "eBufferCropChanged",
6899                ChangesLsb::ERelativeLayerChanged => "eRelativeLayerChanged",
6900                ChangesLsb::EReparent => "eReparent",
6901                ChangesLsb::EColorChanged => "eColorChanged",
6902                ChangesLsb::EBufferTransformChanged => "eBufferTransformChanged",
6903                ChangesLsb::ETransformToDisplayInverseChanged => "eTransformToDisplayInverseChanged",
6904                ChangesLsb::ECropChanged => "eCropChanged",
6905                ChangesLsb::EBufferChanged => "eBufferChanged",
6906                ChangesLsb::EAcquireFenceChanged => "eAcquireFenceChanged",
6907                ChangesLsb::EDataspaceChanged => "eDataspaceChanged",
6908                ChangesLsb::EHdrMetadataChanged => "eHdrMetadataChanged",
6909                ChangesLsb::ESurfaceDamageRegionChanged => "eSurfaceDamageRegionChanged",
6910                ChangesLsb::EApiChanged => "eApiChanged",
6911                ChangesLsb::ESidebandStreamChanged => "eSidebandStreamChanged",
6912                ChangesLsb::EColorTransformChanged => "eColorTransformChanged",
6913                ChangesLsb::EHasListenerCallbacksChanged => "eHasListenerCallbacksChanged",
6914                ChangesLsb::EInputInfoChanged => "eInputInfoChanged",
6915                ChangesLsb::ECornerRadiusChanged => "eCornerRadiusChanged",
6916            }
6917        }
6918    }
6919    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6920    #[repr(i32)]
6921    pub enum ChangesMsb {
6922        EChangesMsbNone = 0,
6923        EDestinationFrameChanged = 1,
6924        ECachedBufferChanged = 2,
6925        EBackgroundColorChanged = 4,
6926        EMetadataChanged = 8,
6927        EColorSpaceAgnosticChanged = 16,
6928        EFrameRateSelectionPriority = 32,
6929        EFrameRateChanged = 64,
6930        EBackgroundBlurRadiusChanged = 128,
6931        EProducerDisconnect = 256,
6932        EFixedTransformHintChanged = 512,
6933        EFrameNumberChanged = 1024,
6934        EBlurRegionsChanged = 2048,
6935        EAutoRefreshChanged = 4096,
6936        EStretchChanged = 8192,
6937        ETrustedOverlayChanged = 16384,
6938        EDropInputModeChanged = 32768,
6939        EClientDrawnCornerRadiusChanged = 65536,
6940        ESystemContentPriorityChanged = 131072,
6941        EBoxShadowSettingsChanged = 262144,
6942        EBorderSettingsChanged = 524288,
6943    }
6944    impl ChangesMsb {
6945        /// String value of the enum field names used in the ProtoBuf definition.
6946        ///
6947        /// The values are not transformed in any way and thus are considered stable
6948        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6949        pub fn as_str_name(&self) -> &'static str {
6950            match self {
6951                ChangesMsb::EChangesMsbNone => "eChangesMsbNone",
6952                ChangesMsb::EDestinationFrameChanged => "eDestinationFrameChanged",
6953                ChangesMsb::ECachedBufferChanged => "eCachedBufferChanged",
6954                ChangesMsb::EBackgroundColorChanged => "eBackgroundColorChanged",
6955                ChangesMsb::EMetadataChanged => "eMetadataChanged",
6956                ChangesMsb::EColorSpaceAgnosticChanged => "eColorSpaceAgnosticChanged",
6957                ChangesMsb::EFrameRateSelectionPriority => "eFrameRateSelectionPriority",
6958                ChangesMsb::EFrameRateChanged => "eFrameRateChanged",
6959                ChangesMsb::EBackgroundBlurRadiusChanged => "eBackgroundBlurRadiusChanged",
6960                ChangesMsb::EProducerDisconnect => "eProducerDisconnect",
6961                ChangesMsb::EFixedTransformHintChanged => "eFixedTransformHintChanged",
6962                ChangesMsb::EFrameNumberChanged => "eFrameNumberChanged",
6963                ChangesMsb::EBlurRegionsChanged => "eBlurRegionsChanged",
6964                ChangesMsb::EAutoRefreshChanged => "eAutoRefreshChanged",
6965                ChangesMsb::EStretchChanged => "eStretchChanged",
6966                ChangesMsb::ETrustedOverlayChanged => "eTrustedOverlayChanged",
6967                ChangesMsb::EDropInputModeChanged => "eDropInputModeChanged",
6968                ChangesMsb::EClientDrawnCornerRadiusChanged => "eClientDrawnCornerRadiusChanged",
6969                ChangesMsb::ESystemContentPriorityChanged => "eSystemContentPriorityChanged",
6970                ChangesMsb::EBoxShadowSettingsChanged => "eBoxShadowSettingsChanged",
6971                ChangesMsb::EBorderSettingsChanged => "eBorderSettingsChanged",
6972            }
6973        }
6974    }
6975    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6976    #[repr(i32)]
6977    pub enum Flags {
6978        EFlagsNone = 0,
6979        ELayerHidden = 1,
6980        ELayerOpaque = 2,
6981        ELayerSkipScreenshot = 64,
6982        ELayerSecure = 128,
6983        EEnableBackpressure = 256,
6984        ELayerIsDisplayDecoration = 512,
6985    }
6986    impl Flags {
6987        /// String value of the enum field names used in the ProtoBuf definition.
6988        ///
6989        /// The values are not transformed in any way and thus are considered stable
6990        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6991        pub fn as_str_name(&self) -> &'static str {
6992            match self {
6993                Flags::EFlagsNone => "eFlagsNone",
6994                Flags::ELayerHidden => "eLayerHidden",
6995                Flags::ELayerOpaque => "eLayerOpaque",
6996                Flags::ELayerSkipScreenshot => "eLayerSkipScreenshot",
6997                Flags::ELayerSecure => "eLayerSecure",
6998                Flags::EEnableBackpressure => "eEnableBackpressure",
6999                Flags::ELayerIsDisplayDecoration => "eLayerIsDisplayDecoration",
7000            }
7001        }
7002    }
7003    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7004    #[repr(i32)]
7005    pub enum DropInputMode {
7006        None = 0,
7007        All = 1,
7008        Obscured = 2,
7009    }
7010    impl DropInputMode {
7011        /// String value of the enum field names used in the ProtoBuf definition.
7012        ///
7013        /// The values are not transformed in any way and thus are considered stable
7014        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7015        pub fn as_str_name(&self) -> &'static str {
7016            match self {
7017                DropInputMode::None => "NONE",
7018                DropInputMode::All => "ALL",
7019                DropInputMode::Obscured => "OBSCURED",
7020            }
7021        }
7022    }
7023}
7024#[derive(Clone, PartialEq, ::prost::Message)]
7025pub struct DisplayState {
7026    #[prost(int32, optional, tag="1")]
7027    pub id: ::core::option::Option<i32>,
7028    #[prost(uint32, optional, tag="2")]
7029    pub what: ::core::option::Option<u32>,
7030    #[prost(uint32, optional, tag="3")]
7031    pub flags: ::core::option::Option<u32>,
7032    #[prost(uint32, optional, tag="4")]
7033    pub layer_stack: ::core::option::Option<u32>,
7034    #[prost(uint32, optional, tag="5")]
7035    pub orientation: ::core::option::Option<u32>,
7036    #[prost(message, optional, tag="6")]
7037    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
7038    #[prost(message, optional, tag="7")]
7039    pub oriented_display_space_rect: ::core::option::Option<RectProto>,
7040    #[prost(uint32, optional, tag="8")]
7041    pub width: ::core::option::Option<u32>,
7042    #[prost(uint32, optional, tag="9")]
7043    pub height: ::core::option::Option<u32>,
7044}
7045/// Nested message and enum types in `DisplayState`.
7046pub mod display_state {
7047    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7048    #[repr(i32)]
7049    pub enum Changes {
7050        EChangesNone = 0,
7051        ESurfaceChanged = 1,
7052        ELayerStackChanged = 2,
7053        EDisplayProjectionChanged = 4,
7054        EDisplaySizeChanged = 8,
7055        EFlagsChanged = 16,
7056    }
7057    impl Changes {
7058        /// String value of the enum field names used in the ProtoBuf definition.
7059        ///
7060        /// The values are not transformed in any way and thus are considered stable
7061        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7062        pub fn as_str_name(&self) -> &'static str {
7063            match self {
7064                Changes::EChangesNone => "eChangesNone",
7065                Changes::ESurfaceChanged => "eSurfaceChanged",
7066                Changes::ELayerStackChanged => "eLayerStackChanged",
7067                Changes::EDisplayProjectionChanged => "eDisplayProjectionChanged",
7068                Changes::EDisplaySizeChanged => "eDisplaySizeChanged",
7069                Changes::EFlagsChanged => "eFlagsChanged",
7070            }
7071        }
7072    }
7073}
7074// End of protos/perfetto/trace/android/surfaceflinger_transactions.proto
7075
7076// Begin of protos/perfetto/trace/android/user_list.proto
7077
7078#[derive(Clone, PartialEq, ::prost::Message)]
7079pub struct AndroidUserList {
7080    #[prost(message, repeated, tag="1")]
7081    pub users: ::prost::alloc::vec::Vec<android_user_list::UserInfo>,
7082    /// Error number
7083    #[prost(int32, optional, tag="2")]
7084    pub error: ::core::option::Option<i32>,
7085}
7086/// Nested message and enum types in `AndroidUserList`.
7087pub mod android_user_list {
7088    #[derive(Clone, PartialEq, ::prost::Message)]
7089    pub struct UserInfo {
7090        /// eg. android.os.usertype.full.SYSTEM, android.os.usertype.full.SECONDARY
7091        #[prost(string, optional, tag="1")]
7092        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
7093        #[prost(int32, optional, tag="2")]
7094        pub uid: ::core::option::Option<i32>,
7095    }
7096}
7097// End of protos/perfetto/trace/android/user_list.proto
7098
7099// Begin of protos/perfetto/trace/android/winscope_extensions.proto
7100
7101#[derive(Clone, PartialEq, ::prost::Message)]
7102pub struct WinscopeExtensions {
7103}
7104// End of protos/perfetto/trace/android/winscope_extensions.proto
7105
7106// Begin of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
7107
7108/// This message is not intended to be written by the chrome on the device.
7109/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
7110/// part of the trace that's written by the telemetry tracing agent).
7111#[derive(Clone, PartialEq, ::prost::Message)]
7112pub struct ChromeBenchmarkMetadata {
7113    /// Time when the benchmark execution started (host unixtime in microseconds).
7114    #[prost(int64, optional, tag="1")]
7115    pub benchmark_start_time_us: ::core::option::Option<i64>,
7116    /// Time when this particular story was run (host unixtime in microseconds).
7117    #[prost(int64, optional, tag="2")]
7118    pub story_run_time_us: ::core::option::Option<i64>,
7119    /// Name of benchmark.
7120    #[prost(string, optional, tag="3")]
7121    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
7122    /// Description of benchmark.
7123    #[prost(string, optional, tag="4")]
7124    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
7125    /// Optional label.
7126    #[prost(string, optional, tag="5")]
7127    pub label: ::core::option::Option<::prost::alloc::string::String>,
7128    /// Name of story.
7129    #[prost(string, optional, tag="6")]
7130    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
7131    /// List of story tags.
7132    #[prost(string, repeated, tag="7")]
7133    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7134    /// Index of the story run (>0 if the same story was run several times).
7135    #[prost(int32, optional, tag="8")]
7136    pub story_run_index: ::core::option::Option<i32>,
7137    /// Whether this run failed.
7138    #[prost(bool, optional, tag="9")]
7139    pub had_failures: ::core::option::Option<bool>,
7140}
7141// End of protos/perfetto/trace/chrome/chrome_benchmark_metadata.proto
7142
7143// Begin of protos/perfetto/trace/chrome/chrome_metadata.proto
7144
7145/// Metadata for chrome traces.
7146#[derive(Clone, PartialEq, ::prost::Message)]
7147pub struct ChromeMetadataPacket {
7148    #[prost(message, optional, tag="1")]
7149    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
7150    /// Version code of Chrome used by Android's Play Store. This field is only set
7151    /// on Android.
7152    #[prost(int32, optional, tag="2")]
7153    pub chrome_version_code: ::core::option::Option<i32>,
7154    /// Comma separated list of enabled categories for tracing. The list of
7155    /// possible category strings are listed in code
7156    /// base/trace_event/builtin_categories.h.
7157    #[prost(string, optional, tag="3")]
7158    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
7159    /// List of Finch study/groups that apply to this trace.
7160    #[prost(message, repeated, tag="4")]
7161    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
7162}
7163/// Nested message and enum types in `ChromeMetadataPacket`.
7164pub mod chrome_metadata_packet {
7165    /// Finch name and group based on the ActiveGroupId.
7166    #[derive(Clone, PartialEq, ::prost::Message)]
7167    pub struct FinchHash {
7168        #[prost(uint32, optional, tag="1")]
7169        pub name: ::core::option::Option<u32>,
7170        #[prost(uint32, optional, tag="2")]
7171        pub group: ::core::option::Option<u32>,
7172    }
7173}
7174/// Metadata related to background tracing scenarios, states and triggers.
7175#[derive(Clone, PartialEq, ::prost::Message)]
7176pub struct BackgroundTracingMetadata {
7177    /// Specifies the rule that caused the trace to be uploaded.
7178    #[prost(message, optional, tag="1")]
7179    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
7180    /// List of all active triggers in current session, when trace was triggered.
7181    #[prost(message, repeated, tag="2")]
7182    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
7183    /// Hash of the scenario name.
7184    #[prost(fixed32, optional, tag="3")]
7185    pub scenario_name_hash: ::core::option::Option<u32>,
7186}
7187/// Nested message and enum types in `BackgroundTracingMetadata`.
7188pub mod background_tracing_metadata {
7189    /// Information about a trigger rule defined in the experiment config.
7190    #[derive(Clone, PartialEq, ::prost::Message)]
7191    pub struct TriggerRule {
7192        #[prost(enumeration="trigger_rule::TriggerType", optional, tag="1")]
7193        pub trigger_type: ::core::option::Option<i32>,
7194        #[prost(message, optional, tag="2")]
7195        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
7196        #[prost(message, optional, tag="3")]
7197        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
7198        /// Hash of the rule name.
7199        #[prost(fixed32, optional, tag="4")]
7200        pub name_hash: ::core::option::Option<u32>,
7201    }
7202    /// Nested message and enum types in `TriggerRule`.
7203    pub mod trigger_rule {
7204        /// Configuration of histogram trigger.
7205        #[derive(Clone, PartialEq, ::prost::Message)]
7206        pub struct HistogramRule {
7207            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
7208            #[prost(fixed64, optional, tag="1")]
7209            pub histogram_name_hash: ::core::option::Option<u64>,
7210            /// Range of values of the histogram that activates trigger.
7211            #[prost(int64, optional, tag="2")]
7212            pub histogram_min_trigger: ::core::option::Option<i64>,
7213            #[prost(int64, optional, tag="3")]
7214            pub histogram_max_trigger: ::core::option::Option<i64>,
7215        }
7216        /// Configuration of named trigger.
7217        #[derive(Clone, PartialEq, ::prost::Message)]
7218        pub struct NamedRule {
7219            #[prost(enumeration="named_rule::EventType", optional, tag="1")]
7220            pub event_type: ::core::option::Option<i32>,
7221            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
7222            /// content-trigger that actually fired.
7223            #[prost(fixed64, optional, tag="2")]
7224            pub content_trigger_name_hash: ::core::option::Option<u64>,
7225        }
7226        /// Nested message and enum types in `NamedRule`.
7227        pub mod named_rule {
7228            #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7229            #[repr(i32)]
7230            pub enum EventType {
7231                Unspecified = 0,
7232                SessionRestore = 1,
7233                Navigation = 2,
7234                Startup = 3,
7235                ReachedCode = 4,
7236                ContentTrigger = 5,
7237                TestRule = 1000,
7238            }
7239            impl EventType {
7240                /// String value of the enum field names used in the ProtoBuf definition.
7241                ///
7242                /// The values are not transformed in any way and thus are considered stable
7243                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7244                pub fn as_str_name(&self) -> &'static str {
7245                    match self {
7246                        EventType::Unspecified => "UNSPECIFIED",
7247                        EventType::SessionRestore => "SESSION_RESTORE",
7248                        EventType::Navigation => "NAVIGATION",
7249                        EventType::Startup => "STARTUP",
7250                        EventType::ReachedCode => "REACHED_CODE",
7251                        EventType::ContentTrigger => "CONTENT_TRIGGER",
7252                        EventType::TestRule => "TEST_RULE",
7253                    }
7254                }
7255            }
7256        }
7257        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7258        #[repr(i32)]
7259        pub enum TriggerType {
7260            TriggerUnspecified = 0,
7261            /// Traces are triggered by specific range of values of an UMA histogram.
7262            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
7263            /// Traces are triggered by specific named events in chromium codebase,
7264            /// like "second-update-failure".
7265            MonitorAndDumpWhenTriggerNamed = 2,
7266        }
7267        impl TriggerType {
7268            /// String value of the enum field names used in the ProtoBuf definition.
7269            ///
7270            /// The values are not transformed in any way and thus are considered stable
7271            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7272            pub fn as_str_name(&self) -> &'static str {
7273                match self {
7274                    TriggerType::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
7275                    TriggerType::MonitorAndDumpWhenSpecificHistogramAndValue => "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE",
7276                    TriggerType::MonitorAndDumpWhenTriggerNamed => "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED",
7277                }
7278            }
7279        }
7280    }
7281}
7282// End of protos/perfetto/trace/chrome/chrome_metadata.proto
7283
7284// Begin of protos/perfetto/trace/chrome/chrome_trace_event.proto
7285
7286#[derive(Clone, PartialEq, ::prost::Message)]
7287pub struct ChromeTracedValue {
7288    #[prost(enumeration="chrome_traced_value::NestedType", optional, tag="1")]
7289    pub nested_type: ::core::option::Option<i32>,
7290    #[prost(string, repeated, tag="2")]
7291    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7292    #[prost(message, repeated, tag="3")]
7293    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7294    #[prost(message, repeated, tag="4")]
7295    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7296    #[prost(int32, optional, tag="5")]
7297    pub int_value: ::core::option::Option<i32>,
7298    #[prost(double, optional, tag="6")]
7299    pub double_value: ::core::option::Option<f64>,
7300    #[prost(bool, optional, tag="7")]
7301    pub bool_value: ::core::option::Option<bool>,
7302    #[prost(string, optional, tag="8")]
7303    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
7304}
7305/// Nested message and enum types in `ChromeTracedValue`.
7306pub mod chrome_traced_value {
7307    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7308    #[repr(i32)]
7309    pub enum NestedType {
7310        Dict = 0,
7311        Array = 1,
7312    }
7313    impl NestedType {
7314        /// String value of the enum field names used in the ProtoBuf definition.
7315        ///
7316        /// The values are not transformed in any way and thus are considered stable
7317        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7318        pub fn as_str_name(&self) -> &'static str {
7319            match self {
7320                NestedType::Dict => "DICT",
7321                NestedType::Array => "ARRAY",
7322            }
7323        }
7324    }
7325}
7326#[derive(Clone, PartialEq, ::prost::Message)]
7327pub struct ChromeStringTableEntry {
7328    #[prost(string, optional, tag="1")]
7329    pub value: ::core::option::Option<::prost::alloc::string::String>,
7330    #[prost(int32, optional, tag="2")]
7331    pub index: ::core::option::Option<i32>,
7332}
7333/// Deprecated, use TrackEvent protos instead.
7334#[derive(Clone, PartialEq, ::prost::Message)]
7335pub struct ChromeTraceEvent {
7336    #[prost(string, optional, tag="1")]
7337    pub name: ::core::option::Option<::prost::alloc::string::String>,
7338    #[prost(int64, optional, tag="2")]
7339    pub timestamp: ::core::option::Option<i64>,
7340    #[prost(int32, optional, tag="3")]
7341    pub phase: ::core::option::Option<i32>,
7342    #[prost(int32, optional, tag="4")]
7343    pub thread_id: ::core::option::Option<i32>,
7344    #[prost(int64, optional, tag="5")]
7345    pub duration: ::core::option::Option<i64>,
7346    #[prost(int64, optional, tag="6")]
7347    pub thread_duration: ::core::option::Option<i64>,
7348    #[prost(string, optional, tag="7")]
7349    pub scope: ::core::option::Option<::prost::alloc::string::String>,
7350    #[prost(uint64, optional, tag="8")]
7351    pub id: ::core::option::Option<u64>,
7352    #[prost(uint32, optional, tag="9")]
7353    pub flags: ::core::option::Option<u32>,
7354    #[prost(string, optional, tag="10")]
7355    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
7356    #[prost(int32, optional, tag="11")]
7357    pub process_id: ::core::option::Option<i32>,
7358    #[prost(int64, optional, tag="12")]
7359    pub thread_timestamp: ::core::option::Option<i64>,
7360    #[prost(uint64, optional, tag="13")]
7361    pub bind_id: ::core::option::Option<u64>,
7362    #[prost(message, repeated, tag="14")]
7363    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
7364    /// Takes precedence over respectively |name| and
7365    /// |category_group_name_index| if set,
7366    /// and are indices into |string_table|.
7367    #[prost(uint32, optional, tag="15")]
7368    pub name_index: ::core::option::Option<u32>,
7369    #[prost(uint32, optional, tag="16")]
7370    pub category_group_name_index: ::core::option::Option<u32>,
7371}
7372/// Nested message and enum types in `ChromeTraceEvent`.
7373pub mod chrome_trace_event {
7374    #[derive(Clone, PartialEq, ::prost::Message)]
7375    pub struct Arg {
7376        #[prost(string, optional, tag="1")]
7377        pub name: ::core::option::Option<::prost::alloc::string::String>,
7378        /// Takes precedence over |name| if set,
7379        /// and is an index into |string_table|.
7380        #[prost(uint32, optional, tag="9")]
7381        pub name_index: ::core::option::Option<u32>,
7382        #[prost(oneof="arg::Value", tags="2, 3, 4, 5, 6, 7, 8, 10")]
7383        pub value: ::core::option::Option<arg::Value>,
7384    }
7385    /// Nested message and enum types in `Arg`.
7386    pub mod arg {
7387        #[derive(Clone, PartialEq, ::prost::Oneof)]
7388        pub enum Value {
7389            #[prost(bool, tag="2")]
7390            BoolValue(bool),
7391            #[prost(uint64, tag="3")]
7392            UintValue(u64),
7393            #[prost(int64, tag="4")]
7394            IntValue(i64),
7395            #[prost(double, tag="5")]
7396            DoubleValue(f64),
7397            #[prost(string, tag="6")]
7398            StringValue(::prost::alloc::string::String),
7399            /// Pointers are stored in a separate type as the JSON output treats them
7400            /// differently from other uint64 values.
7401            #[prost(uint64, tag="7")]
7402            PointerValue(u64),
7403            #[prost(string, tag="8")]
7404            JsonValue(::prost::alloc::string::String),
7405            #[prost(message, tag="10")]
7406            TracedValue(super::super::ChromeTracedValue),
7407        }
7408    }
7409}
7410#[derive(Clone, PartialEq, ::prost::Message)]
7411pub struct ChromeMetadata {
7412    #[prost(string, optional, tag="1")]
7413    pub name: ::core::option::Option<::prost::alloc::string::String>,
7414    #[prost(oneof="chrome_metadata::Value", tags="2, 3, 4, 5")]
7415    pub value: ::core::option::Option<chrome_metadata::Value>,
7416}
7417/// Nested message and enum types in `ChromeMetadata`.
7418pub mod chrome_metadata {
7419    #[derive(Clone, PartialEq, ::prost::Oneof)]
7420    pub enum Value {
7421        #[prost(string, tag="2")]
7422        StringValue(::prost::alloc::string::String),
7423        #[prost(bool, tag="3")]
7424        BoolValue(bool),
7425        #[prost(int64, tag="4")]
7426        IntValue(i64),
7427        #[prost(string, tag="5")]
7428        JsonValue(::prost::alloc::string::String),
7429    }
7430}
7431/// Subtraces produced in legacy json format by Chrome tracing agents not yet
7432/// updated to support the new binary format, e.g. ETW and CrOS ARC.
7433/// TODO(eseckler): Update these agents to become perfetto producers.
7434#[derive(Clone, PartialEq, ::prost::Message)]
7435pub struct ChromeLegacyJsonTrace {
7436    #[prost(enumeration="chrome_legacy_json_trace::TraceType", optional, tag="1")]
7437    pub r#type: ::core::option::Option<i32>,
7438    #[prost(string, optional, tag="2")]
7439    pub data: ::core::option::Option<::prost::alloc::string::String>,
7440}
7441/// Nested message and enum types in `ChromeLegacyJsonTrace`.
7442pub mod chrome_legacy_json_trace {
7443    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7444    #[repr(i32)]
7445    pub enum TraceType {
7446        UserTrace = 0,
7447        /// Deprecated.
7448        SystemTrace = 1,
7449    }
7450    impl TraceType {
7451        /// String value of the enum field names used in the ProtoBuf definition.
7452        ///
7453        /// The values are not transformed in any way and thus are considered stable
7454        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7455        pub fn as_str_name(&self) -> &'static str {
7456            match self {
7457                TraceType::UserTrace => "USER_TRACE",
7458                TraceType::SystemTrace => "SYSTEM_TRACE",
7459            }
7460        }
7461    }
7462}
7463#[derive(Clone, PartialEq, ::prost::Message)]
7464pub struct ChromeEventBundle {
7465    /// Deprecated, use TrackEvent protos instead.
7466    #[deprecated]
7467    #[prost(message, repeated, tag="1")]
7468    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
7469    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
7470    /// which contains typed fields.
7471    #[prost(message, repeated, tag="2")]
7472    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
7473    /// ftrace output from CrOS and Cast system tracing agents.
7474    /// TODO(eseckler): Replace system traces with native perfetto service.
7475    #[prost(string, repeated, tag="4")]
7476    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7477    #[prost(message, repeated, tag="5")]
7478    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
7479    /// Contents of a string table that's valid for
7480    /// the whole ChromeEventBundle entry.
7481    #[deprecated]
7482    #[prost(message, repeated, tag="3")]
7483    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
7484}
7485// End of protos/perfetto/trace/chrome/chrome_trace_event.proto
7486
7487// Begin of protos/perfetto/trace/chrome/chrome_trigger.proto
7488
7489/// Information about a specific trigger during a background tracing scenario
7490/// Associated packet timestamps are useful to delimitate a scenario range in a
7491/// trace. Triggers are also useful for filtering traces.
7492#[derive(Clone, PartialEq, ::prost::Message)]
7493pub struct ChromeTrigger {
7494    /// Name of the trigger which was received.
7495    #[prost(string, optional, tag="1")]
7496    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
7497    /// SHA1 hash of the trigger name.
7498    #[prost(fixed32, optional, tag="2")]
7499    pub trigger_name_hash: ::core::option::Option<u32>,
7500    /// Flow id which should terminate on this trigger.
7501    #[prost(fixed64, optional, tag="3")]
7502    pub flow_id: ::core::option::Option<u64>,
7503}
7504// End of protos/perfetto/trace/chrome/chrome_trigger.proto
7505
7506// Begin of protos/perfetto/trace/chrome/v8.proto
7507
7508// These are the protos for the V8 data source.
7509//
7510// All events are associated to a V8 isolate instance. There can be multiple
7511// instances associated to a given thread, although this is rare.
7512//
7513// Generated code in V8 is allocated in the V8 heap (in a special executeable
7514// section), this means that code can be garbage collected (when no longer used)
7515// or can be moved around (e.g. during heap compactation). This means that a
7516// given callsite might correspond to function `A` at one point in time and to
7517// function `B` later on.
7518// In addition V8 code has various levels of optimization, so a function might
7519// have multiple associated code snippets.
7520//
7521// V8 does not track code deletion, so we have to indirectly infer it by
7522// detecting code overlaps, if a newer code creation event overlaps with older
7523// code we need to asume that the old code was deleted. Code moves are logged,
7524// and there is an event to track those.
7525
7526/// Strings used by V8 can have different encodings, instead of coverting to a
7527/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
7528/// "raw" string and do the convestion at trace ingestion time.
7529///
7530/// ATTENTION: There is some overhead in using a message (as opossed to having
7531/// the `oneof encoded_string`` direcly embedded in the message), so use this
7532/// message in places were these extra bytes don't matter that much.
7533/// Next id: 5
7534#[derive(Clone, PartialEq, ::prost::Message)]
7535pub struct V8String {
7536    #[prost(oneof="v8_string::EncodedString", tags="1, 2, 3")]
7537    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
7538}
7539/// Nested message and enum types in `V8String`.
7540pub mod v8_string {
7541    #[derive(Clone, PartialEq, ::prost::Oneof)]
7542    pub enum EncodedString {
7543        /// ISO/IEC 8859-1:1998 encoding aka latin1
7544        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7545        #[prost(bytes, tag="1")]
7546        Latin1(::prost::alloc::vec::Vec<u8>),
7547        /// UTF-16 Little Endian Encoding
7548        #[prost(bytes, tag="2")]
7549        Utf16Le(::prost::alloc::vec::Vec<u8>),
7550        /// UTF-16 Big Endian Encoding
7551        #[prost(bytes, tag="3")]
7552        Utf16Be(::prost::alloc::vec::Vec<u8>),
7553    }
7554}
7555/// Interned version of V8String
7556#[derive(Clone, PartialEq, ::prost::Message)]
7557pub struct InternedV8String {
7558    #[prost(uint64, optional, tag="1")]
7559    pub iid: ::core::option::Option<u64>,
7560    /// We inline the fields in V8String here to save some bytes in the serialized
7561    /// proto format. Interning is about saving bytes so this makes sense here.
7562    #[prost(oneof="interned_v8_string::EncodedString", tags="2, 3, 4")]
7563    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
7564}
7565/// Nested message and enum types in `InternedV8String`.
7566pub mod interned_v8_string {
7567    /// We inline the fields in V8String here to save some bytes in the serialized
7568    /// proto format. Interning is about saving bytes so this makes sense here.
7569    #[derive(Clone, PartialEq, ::prost::Oneof)]
7570    pub enum EncodedString {
7571        /// ISO/IEC 8859-1:1998 encoding aka latin1
7572        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7573        #[prost(bytes, tag="2")]
7574        Latin1(::prost::alloc::vec::Vec<u8>),
7575        /// UTF-16 Little Endian Encoding
7576        #[prost(bytes, tag="3")]
7577        Utf16Le(::prost::alloc::vec::Vec<u8>),
7578        /// UTF-16 Big Endian Encoding
7579        #[prost(bytes, tag="4")]
7580        Utf16Be(::prost::alloc::vec::Vec<u8>),
7581    }
7582}
7583/// Represents a script that was compiled to generate code. Some V8 code is
7584/// generated out of scripts and will reference a V8Script other types of code
7585/// will not (e.g. builtins).
7586#[derive(Clone, PartialEq, ::prost::Message)]
7587pub struct InternedV8JsScript {
7588    #[prost(uint64, optional, tag="1")]
7589    pub iid: ::core::option::Option<u64>,
7590    /// Unique in a given isolate
7591    #[prost(int32, optional, tag="2")]
7592    pub script_id: ::core::option::Option<i32>,
7593    #[prost(enumeration="interned_v8_js_script::Type", optional, tag="3")]
7594    pub r#type: ::core::option::Option<i32>,
7595    #[prost(message, optional, tag="4")]
7596    pub name: ::core::option::Option<V8String>,
7597    /// Actual source of the script
7598    #[prost(message, optional, tag="5")]
7599    pub source: ::core::option::Option<V8String>,
7600}
7601/// Nested message and enum types in `InternedV8JsScript`.
7602pub mod interned_v8_js_script {
7603    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7604    #[repr(i32)]
7605    pub enum Type {
7606        Unknown = 0,
7607        Normal = 1,
7608        Eval = 2,
7609        Module = 3,
7610        Native = 4,
7611        Extension = 5,
7612        Inspector = 6,
7613    }
7614    impl Type {
7615        /// String value of the enum field names used in the ProtoBuf definition.
7616        ///
7617        /// The values are not transformed in any way and thus are considered stable
7618        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7619        pub fn as_str_name(&self) -> &'static str {
7620            match self {
7621                Type::Unknown => "TYPE_UNKNOWN",
7622                Type::Normal => "TYPE_NORMAL",
7623                Type::Eval => "TYPE_EVAL",
7624                Type::Module => "TYPE_MODULE",
7625                Type::Native => "TYPE_NATIVE",
7626                Type::Extension => "TYPE_EXTENSION",
7627                Type::Inspector => "TYPE_INSPECTOR",
7628            }
7629        }
7630    }
7631}
7632#[derive(Clone, PartialEq, ::prost::Message)]
7633pub struct InternedV8WasmScript {
7634    #[prost(uint64, optional, tag="1")]
7635    pub iid: ::core::option::Option<u64>,
7636    /// Unique in a given isolate
7637    #[prost(int32, optional, tag="2")]
7638    pub script_id: ::core::option::Option<i32>,
7639    #[prost(string, optional, tag="3")]
7640    pub url: ::core::option::Option<::prost::alloc::string::String>,
7641    /// Raw transferred wasm native module wire bytes.
7642    #[prost(bytes="vec", optional, tag="4")]
7643    pub wire_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7644}
7645#[derive(Clone, PartialEq, ::prost::Message)]
7646pub struct InternedV8JsFunction {
7647    #[prost(uint64, optional, tag="1")]
7648    pub iid: ::core::option::Option<u64>,
7649    #[prost(uint64, optional, tag="2")]
7650    pub v8_js_function_name_iid: ::core::option::Option<u64>,
7651    #[prost(uint64, optional, tag="3")]
7652    pub v8_js_script_iid: ::core::option::Option<u64>,
7653    #[prost(bool, optional, tag="4")]
7654    pub is_toplevel: ::core::option::Option<bool>,
7655    #[prost(enumeration="interned_v8_js_function::Kind", optional, tag="5")]
7656    pub kind: ::core::option::Option<i32>,
7657    /// Where in the script source this function is defined. This is counted in
7658    /// bytes not characters.
7659    #[prost(uint32, optional, tag="6")]
7660    pub byte_offset: ::core::option::Option<u32>,
7661    #[prost(uint32, optional, tag="7")]
7662    pub line: ::core::option::Option<u32>,
7663    #[prost(uint32, optional, tag="8")]
7664    pub column: ::core::option::Option<u32>,
7665}
7666/// Nested message and enum types in `InternedV8JsFunction`.
7667pub mod interned_v8_js_function {
7668    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7669    #[repr(i32)]
7670    pub enum Kind {
7671        Unknown = 0,
7672        NormalFunction = 1,
7673        Module = 2,
7674        AsyncModule = 3,
7675        BaseConstructor = 4,
7676        DefaultBaseConstructor = 5,
7677        DefaultDerivedConstructor = 6,
7678        DerivedConstructor = 7,
7679        GetterFunction = 8,
7680        StaticGetterFunction = 9,
7681        SetterFunction = 10,
7682        StaticSetterFunction = 11,
7683        ArrowFunction = 12,
7684        AsyncArrowFunction = 13,
7685        AsyncFunction = 14,
7686        AsyncConciseMethod = 15,
7687        StaticAsyncConciseMethod = 16,
7688        AsyncConciseGeneratorMethod = 17,
7689        StaticAsyncConciseGeneratorMethod = 18,
7690        AsyncGeneratorFunction = 19,
7691        GeneratorFunction = 20,
7692        ConciseGeneratorMethod = 21,
7693        StaticConciseGeneratorMethod = 22,
7694        ConciseMethod = 23,
7695        StaticConciseMethod = 24,
7696        ClassMembersInitializerFunction = 25,
7697        ClassStaticInitializerFunction = 26,
7698        Invalid = 27,
7699    }
7700    impl Kind {
7701        /// String value of the enum field names used in the ProtoBuf definition.
7702        ///
7703        /// The values are not transformed in any way and thus are considered stable
7704        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7705        pub fn as_str_name(&self) -> &'static str {
7706            match self {
7707                Kind::Unknown => "KIND_UNKNOWN",
7708                Kind::NormalFunction => "KIND_NORMAL_FUNCTION",
7709                Kind::Module => "KIND_MODULE",
7710                Kind::AsyncModule => "KIND_ASYNC_MODULE",
7711                Kind::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
7712                Kind::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
7713                Kind::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
7714                Kind::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
7715                Kind::GetterFunction => "KIND_GETTER_FUNCTION",
7716                Kind::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
7717                Kind::SetterFunction => "KIND_SETTER_FUNCTION",
7718                Kind::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
7719                Kind::ArrowFunction => "KIND_ARROW_FUNCTION",
7720                Kind::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
7721                Kind::AsyncFunction => "KIND_ASYNC_FUNCTION",
7722                Kind::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
7723                Kind::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
7724                Kind::AsyncConciseGeneratorMethod => "KIND_ASYNC_CONCISE_GENERATOR_METHOD",
7725                Kind::StaticAsyncConciseGeneratorMethod => "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD",
7726                Kind::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
7727                Kind::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
7728                Kind::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
7729                Kind::StaticConciseGeneratorMethod => "KIND_STATIC_CONCISE_GENERATOR_METHOD",
7730                Kind::ConciseMethod => "KIND_CONCISE_METHOD",
7731                Kind::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
7732                Kind::ClassMembersInitializerFunction => "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION",
7733                Kind::ClassStaticInitializerFunction => "KIND_CLASS_STATIC_INITIALIZER_FUNCTION",
7734                Kind::Invalid => "KIND_INVALID",
7735            }
7736        }
7737    }
7738}
7739/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
7740/// engine.
7741#[derive(Clone, PartialEq, ::prost::Message)]
7742pub struct InternedV8Isolate {
7743    #[prost(uint64, optional, tag="1")]
7744    pub iid: ::core::option::Option<u64>,
7745    #[prost(uint32, optional, tag="2")]
7746    pub pid: ::core::option::Option<u32>,
7747    /// Process unique isolate id.
7748    #[prost(int32, optional, tag="3")]
7749    pub isolate_id: ::core::option::Option<i32>,
7750    #[prost(message, optional, tag="4")]
7751    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
7752    /// The embedded blob holds code for built in functions that are precompiled in
7753    /// the V8 library.
7754    #[prost(uint64, optional, tag="5")]
7755    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
7756    #[prost(uint64, optional, tag="6")]
7757    pub embedded_blob_code_size: ::core::option::Option<u64>,
7758}
7759/// Nested message and enum types in `InternedV8Isolate`.
7760pub mod interned_v8_isolate {
7761    /// A code range is a virtual memory cage that may contain executable code.
7762    /// Depending on the Isolate settings the Isolate might have one or not.
7763    /// See:
7764    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
7765    /// If the isolate defines code range this will be tracked here.
7766    #[derive(Clone, PartialEq, ::prost::Message)]
7767    pub struct CodeRange {
7768        #[prost(uint64, optional, tag="1")]
7769        pub base_address: ::core::option::Option<u64>,
7770        #[prost(uint64, optional, tag="2")]
7771        pub size: ::core::option::Option<u64>,
7772        /// Used when short builtin calls are enabled, where embedded builtins are
7773        /// copied into the CodeRange so calls can be nearer.
7774        #[prost(uint64, optional, tag="3")]
7775        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
7776        /// Whether this code range is shared with other Isolates in the same process
7777        #[prost(bool, optional, tag="4")]
7778        pub is_process_wide: ::core::option::Option<bool>,
7779    }
7780}
7781#[derive(Clone, PartialEq, ::prost::Message)]
7782pub struct V8JsCode {
7783    #[prost(uint64, optional, tag="1")]
7784    pub v8_isolate_iid: ::core::option::Option<u64>,
7785    #[prost(uint32, optional, tag="2")]
7786    pub tid: ::core::option::Option<u32>,
7787    #[prost(uint64, optional, tag="3")]
7788    pub v8_js_function_iid: ::core::option::Option<u64>,
7789    #[prost(enumeration="v8_js_code::Tier", optional, tag="4")]
7790    pub tier: ::core::option::Option<i32>,
7791    #[prost(uint64, optional, tag="5")]
7792    pub instruction_start: ::core::option::Option<u64>,
7793    #[prost(uint64, optional, tag="6")]
7794    pub instruction_size_bytes: ::core::option::Option<u64>,
7795    #[prost(oneof="v8_js_code::Instructions", tags="7, 8")]
7796    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
7797}
7798/// Nested message and enum types in `V8JsCode`.
7799pub mod v8_js_code {
7800    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7801    #[repr(i32)]
7802    pub enum Tier {
7803        Unknown = 0,
7804        Ignition = 1,
7805        Sparkplug = 2,
7806        Maglev = 3,
7807        Turboshaft = 4,
7808        Turbofan = 5,
7809    }
7810    impl Tier {
7811        /// String value of the enum field names used in the ProtoBuf definition.
7812        ///
7813        /// The values are not transformed in any way and thus are considered stable
7814        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7815        pub fn as_str_name(&self) -> &'static str {
7816            match self {
7817                Tier::Unknown => "TIER_UNKNOWN",
7818                Tier::Ignition => "TIER_IGNITION",
7819                Tier::Sparkplug => "TIER_SPARKPLUG",
7820                Tier::Maglev => "TIER_MAGLEV",
7821                Tier::Turboshaft => "TIER_TURBOSHAFT",
7822                Tier::Turbofan => "TIER_TURBOFAN",
7823            }
7824        }
7825    }
7826    #[derive(Clone, PartialEq, ::prost::Oneof)]
7827    pub enum Instructions {
7828        #[prost(bytes, tag="7")]
7829        MachineCode(::prost::alloc::vec::Vec<u8>),
7830        #[prost(bytes, tag="8")]
7831        Bytecode(::prost::alloc::vec::Vec<u8>),
7832    }
7833}
7834#[derive(Clone, PartialEq, ::prost::Message)]
7835pub struct V8InternalCode {
7836    #[prost(uint64, optional, tag="1")]
7837    pub v8_isolate_iid: ::core::option::Option<u64>,
7838    #[prost(uint32, optional, tag="2")]
7839    pub tid: ::core::option::Option<u32>,
7840    #[prost(string, optional, tag="3")]
7841    pub name: ::core::option::Option<::prost::alloc::string::String>,
7842    #[prost(enumeration="v8_internal_code::Type", optional, tag="4")]
7843    pub r#type: ::core::option::Option<i32>,
7844    #[prost(int32, optional, tag="5")]
7845    pub builtin_id: ::core::option::Option<i32>,
7846    #[prost(uint64, optional, tag="6")]
7847    pub instruction_start: ::core::option::Option<u64>,
7848    #[prost(uint64, optional, tag="7")]
7849    pub instruction_size_bytes: ::core::option::Option<u64>,
7850    #[prost(bytes="vec", optional, tag="8")]
7851    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7852}
7853/// Nested message and enum types in `V8InternalCode`.
7854pub mod v8_internal_code {
7855    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7856    #[repr(i32)]
7857    pub enum Type {
7858        Unknown = 0,
7859        BytecodeHandler = 1,
7860        ForTesting = 2,
7861        Builtin = 3,
7862        WasmFunction = 4,
7863        WasmToCapiFunction = 5,
7864        WasmToJsFunction = 6,
7865        JsToWasmFunction = 7,
7866        JsToJsFunction = 8,
7867        CWasmEntry = 9,
7868    }
7869    impl Type {
7870        /// String value of the enum field names used in the ProtoBuf definition.
7871        ///
7872        /// The values are not transformed in any way and thus are considered stable
7873        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7874        pub fn as_str_name(&self) -> &'static str {
7875            match self {
7876                Type::Unknown => "TYPE_UNKNOWN",
7877                Type::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
7878                Type::ForTesting => "TYPE_FOR_TESTING",
7879                Type::Builtin => "TYPE_BUILTIN",
7880                Type::WasmFunction => "TYPE_WASM_FUNCTION",
7881                Type::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
7882                Type::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
7883                Type::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
7884                Type::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
7885                Type::CWasmEntry => "TYPE_C_WASM_ENTRY",
7886            }
7887        }
7888    }
7889}
7890#[derive(Clone, PartialEq, ::prost::Message)]
7891pub struct V8WasmCode {
7892    #[prost(uint64, optional, tag="1")]
7893    pub v8_isolate_iid: ::core::option::Option<u64>,
7894    #[prost(uint32, optional, tag="2")]
7895    pub tid: ::core::option::Option<u32>,
7896    #[prost(uint64, optional, tag="3")]
7897    pub v8_wasm_script_iid: ::core::option::Option<u64>,
7898    #[prost(string, optional, tag="4")]
7899    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
7900    #[prost(enumeration="v8_wasm_code::Tier", optional, tag="5")]
7901    pub tier: ::core::option::Option<i32>,
7902    #[prost(int32, optional, tag="6")]
7903    pub code_offset_in_module: ::core::option::Option<i32>,
7904    #[prost(uint64, optional, tag="7")]
7905    pub instruction_start: ::core::option::Option<u64>,
7906    #[prost(uint64, optional, tag="8")]
7907    pub instruction_size_bytes: ::core::option::Option<u64>,
7908    #[prost(bytes="vec", optional, tag="9")]
7909    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7910}
7911/// Nested message and enum types in `V8WasmCode`.
7912pub mod v8_wasm_code {
7913    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7914    #[repr(i32)]
7915    pub enum Tier {
7916        Unknown = 0,
7917        Liftoff = 1,
7918        Turbofan = 2,
7919    }
7920    impl Tier {
7921        /// String value of the enum field names used in the ProtoBuf definition.
7922        ///
7923        /// The values are not transformed in any way and thus are considered stable
7924        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7925        pub fn as_str_name(&self) -> &'static str {
7926            match self {
7927                Tier::Unknown => "TIER_UNKNOWN",
7928                Tier::Liftoff => "TIER_LIFTOFF",
7929                Tier::Turbofan => "TIER_TURBOFAN",
7930            }
7931        }
7932    }
7933}
7934#[derive(Clone, PartialEq, ::prost::Message)]
7935pub struct V8RegExpCode {
7936    #[prost(uint64, optional, tag="1")]
7937    pub v8_isolate_iid: ::core::option::Option<u64>,
7938    #[prost(uint32, optional, tag="2")]
7939    pub tid: ::core::option::Option<u32>,
7940    #[prost(message, optional, tag="3")]
7941    pub pattern: ::core::option::Option<V8String>,
7942    #[prost(uint64, optional, tag="4")]
7943    pub instruction_start: ::core::option::Option<u64>,
7944    #[prost(uint64, optional, tag="5")]
7945    pub instruction_size_bytes: ::core::option::Option<u64>,
7946    #[prost(bytes="vec", optional, tag="6")]
7947    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7948}
7949/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
7950/// memory by V8's GC.
7951#[derive(Clone, PartialEq, ::prost::Message)]
7952pub struct V8CodeMove {
7953    #[prost(uint64, optional, tag="1")]
7954    pub isolate_iid: ::core::option::Option<u64>,
7955    #[prost(uint32, optional, tag="2")]
7956    pub tid: ::core::option::Option<u32>,
7957    #[prost(uint64, optional, tag="3")]
7958    pub from_instruction_start_address: ::core::option::Option<u64>,
7959    #[prost(uint64, optional, tag="4")]
7960    pub to_instruction_start_address: ::core::option::Option<u64>,
7961    #[prost(uint64, optional, tag="5")]
7962    pub instruction_size_bytes: ::core::option::Option<u64>,
7963    #[prost(oneof="v8_code_move::ToInstructions", tags="6, 7")]
7964    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
7965}
7966/// Nested message and enum types in `V8CodeMove`.
7967pub mod v8_code_move {
7968    #[derive(Clone, PartialEq, ::prost::Oneof)]
7969    pub enum ToInstructions {
7970        #[prost(bytes, tag="6")]
7971        ToMachineCode(::prost::alloc::vec::Vec<u8>),
7972        #[prost(bytes, tag="7")]
7973        ToBytecode(::prost::alloc::vec::Vec<u8>),
7974    }
7975}
7976#[derive(Clone, PartialEq, ::prost::Message)]
7977pub struct V8CodeDefaults {
7978    #[prost(uint32, optional, tag="1")]
7979    pub tid: ::core::option::Option<u32>,
7980}
7981// End of protos/perfetto/trace/chrome/v8.proto
7982
7983// Begin of protos/perfetto/trace/clock_snapshot.proto
7984
7985/// A snapshot of clock readings to allow for trace alignment.
7986#[derive(Clone, PartialEq, ::prost::Message)]
7987pub struct ClockSnapshot {
7988    #[prost(message, repeated, tag="1")]
7989    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
7990    /// The authoritative clock domain for the trace. Defaults to BOOTTIME, but can
7991    /// be overridden in TraceConfig's builtin_data_sources. Trace processor will
7992    /// attempt to translate packet/event timestamps from various data sources (and
7993    /// their chosen clock domains) to this domain during import.
7994    #[prost(enumeration="BuiltinClock", optional, tag="2")]
7995    pub primary_trace_clock: ::core::option::Option<i32>,
7996}
7997/// Nested message and enum types in `ClockSnapshot`.
7998pub mod clock_snapshot {
7999    #[derive(Clone, PartialEq, ::prost::Message)]
8000    pub struct Clock {
8001        /// Clock IDs have the following semantic:
8002        /// [1, 63]:    Builtin types, see BuiltinClock from
8003        ///              ../common/builtin_clock.proto.
8004        /// [64, 127]:  User-defined clocks. These clocks are sequence-scoped. They
8005        ///              are only valid within the same |trusted_packet_sequence_id|
8006        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
8007        ///              that emitted the clock snapshot).
8008        /// [128, MAX]: Reserved for future use. The idea is to allow global clock
8009        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
8010        #[prost(uint32, optional, tag="1")]
8011        pub clock_id: ::core::option::Option<u32>,
8012        /// Absolute timestamp. Unit is ns unless specified otherwise by the
8013        /// unit_multiplier_ns field below.
8014        #[prost(uint64, optional, tag="2")]
8015        pub timestamp: ::core::option::Option<u64>,
8016        /// When true each TracePacket's timestamp should be interpreted as a delta
8017        /// from the last TracePacket's timestamp (referencing this clock) emitted by
8018        /// the same packet_sequence_id. Should only be used for user-defined
8019        /// sequence-local clocks. The first packet timestamp after each
8020        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
8021        /// the ClockSnapshot.
8022        #[prost(bool, optional, tag="3")]
8023        pub is_incremental: ::core::option::Option<bool>,
8024        /// Allows to specify a custom unit different than the default (ns) for this
8025        /// clock domain.
8026        ///
8027        /// * A multiplier of 1000 means that a timestamp = 3 should be interpreted
8028        ///    as 3000 ns = 3 us.
8029        /// * All snapshots for the same clock within a trace need to use the same
8030        ///    unit.
8031        /// * `unit_multiplier_ns` is *not* supported for the `primary_trace_clock`.
8032        #[prost(uint64, optional, tag="4")]
8033        pub unit_multiplier_ns: ::core::option::Option<u64>,
8034    }
8035    /// Nested message and enum types in `Clock`.
8036    pub mod clock {
8037        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
8038        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8039        #[repr(i32)]
8040        pub enum BuiltinClocks {
8041            Unknown = 0,
8042            Realtime = 1,
8043            RealtimeCoarse = 2,
8044            Monotonic = 3,
8045            MonotonicCoarse = 4,
8046            MonotonicRaw = 5,
8047            Boottime = 6,
8048            BuiltinClockMaxId = 63,
8049        }
8050        impl BuiltinClocks {
8051            /// String value of the enum field names used in the ProtoBuf definition.
8052            ///
8053            /// The values are not transformed in any way and thus are considered stable
8054            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8055            pub fn as_str_name(&self) -> &'static str {
8056                match self {
8057                    BuiltinClocks::Unknown => "UNKNOWN",
8058                    BuiltinClocks::Realtime => "REALTIME",
8059                    BuiltinClocks::RealtimeCoarse => "REALTIME_COARSE",
8060                    BuiltinClocks::Monotonic => "MONOTONIC",
8061                    BuiltinClocks::MonotonicCoarse => "MONOTONIC_COARSE",
8062                    BuiltinClocks::MonotonicRaw => "MONOTONIC_RAW",
8063                    BuiltinClocks::Boottime => "BOOTTIME",
8064                    BuiltinClocks::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
8065                }
8066            }
8067        }
8068    }
8069}
8070// End of protos/perfetto/trace/clock_snapshot.proto
8071
8072// Begin of protos/perfetto/trace/etw/etw.proto
8073
8074/// Proto definition based on the Thread_v2 CSwitch class definition
8075/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
8076#[derive(Clone, PartialEq, ::prost::Message)]
8077pub struct CSwitchEtwEvent {
8078    /// New thread ID after the switch.
8079    #[prost(uint32, optional, tag="1")]
8080    pub new_thread_id: ::core::option::Option<u32>,
8081    /// Previous thread ID.
8082    #[prost(uint32, optional, tag="2")]
8083    pub old_thread_id: ::core::option::Option<u32>,
8084    /// Thread priority of the new thread.
8085    #[prost(sint32, optional, tag="3")]
8086    pub new_thread_priority: ::core::option::Option<i32>,
8087    /// Thread priority of the previous thread.
8088    #[prost(sint32, optional, tag="4")]
8089    pub old_thread_priority: ::core::option::Option<i32>,
8090    /// The index of the C-state that was last used by the processor. A value of 0
8091    /// represents the lightest idle state with higher values representing deeper
8092    /// C-states.
8093    #[prost(uint32, optional, tag="5")]
8094    pub previous_c_state: ::core::option::Option<u32>,
8095    /// Ideal wait time of the previous thread.
8096    #[prost(sint32, optional, tag="9")]
8097    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
8098    /// Wait time for the new thread.
8099    #[prost(uint32, optional, tag="10")]
8100    pub new_thread_wait_time: ::core::option::Option<u32>,
8101    #[prost(oneof="c_switch_etw_event::OldThreadWaitReasonEnumOrInt", tags="6, 11")]
8102    pub old_thread_wait_reason_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitReasonEnumOrInt>,
8103    #[prost(oneof="c_switch_etw_event::OldThreadWaitModeEnumOrInt", tags="7, 12")]
8104    pub old_thread_wait_mode_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadWaitModeEnumOrInt>,
8105    #[prost(oneof="c_switch_etw_event::OldThreadStateEnumOrInt", tags="8, 13")]
8106    pub old_thread_state_enum_or_int: ::core::option::Option<c_switch_etw_event::OldThreadStateEnumOrInt>,
8107}
8108/// Nested message and enum types in `CSwitchEtwEvent`.
8109pub mod c_switch_etw_event {
8110    /// Wait reason for the previous thread. The ordering is important as based on
8111    /// the OldThreadWaitReason definition from the link above. The following are
8112    /// the possible values:
8113    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8114    #[repr(i32)]
8115    pub enum OldThreadWaitReason {
8116        Executive = 0,
8117        FreePage = 1,
8118        PageIn = 2,
8119        PoolAllocation = 3,
8120        DelayExecution = 4,
8121        Suspend = 5,
8122        UserRequest = 6,
8123        WrExecutive = 7,
8124        WrFreePage = 8,
8125        WrPageIn = 9,
8126        WrPoolAllocation = 10,
8127        WrDelayExecution = 11,
8128        WrSuspended = 12,
8129        WrUserRequest = 13,
8130        WrEventPair = 14,
8131        WrQueue = 15,
8132        WrLpcReceiver = 16,
8133        WrLpcReply = 17,
8134        WrVirtualMemory = 18,
8135        WrPageOut = 19,
8136        WrRendezVous = 20,
8137        WrKeyedEvent = 21,
8138        WrTerminated = 22,
8139        WrProcessInSwap = 23,
8140        WrCpuRateControl = 24,
8141        WrCalloutStack = 25,
8142        WrKernel = 26,
8143        WrResource = 27,
8144        WrPushLock = 28,
8145        WrMutex = 29,
8146        WrQuantumEnd = 30,
8147        WrDispatchInt = 31,
8148        WrPreempted = 32,
8149        WrYieldExecution = 33,
8150        WrFastMutex = 34,
8151        WrGuardMutex = 35,
8152        WrRundown = 36,
8153        MaximumWaitReason = 37,
8154    }
8155    impl OldThreadWaitReason {
8156        /// String value of the enum field names used in the ProtoBuf definition.
8157        ///
8158        /// The values are not transformed in any way and thus are considered stable
8159        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8160        pub fn as_str_name(&self) -> &'static str {
8161            match self {
8162                OldThreadWaitReason::Executive => "EXECUTIVE",
8163                OldThreadWaitReason::FreePage => "FREE_PAGE",
8164                OldThreadWaitReason::PageIn => "PAGE_IN",
8165                OldThreadWaitReason::PoolAllocation => "POOL_ALLOCATION",
8166                OldThreadWaitReason::DelayExecution => "DELAY_EXECUTION",
8167                OldThreadWaitReason::Suspend => "SUSPEND",
8168                OldThreadWaitReason::UserRequest => "USER_REQUEST",
8169                OldThreadWaitReason::WrExecutive => "WR_EXECUTIVE",
8170                OldThreadWaitReason::WrFreePage => "WR_FREE_PAGE",
8171                OldThreadWaitReason::WrPageIn => "WR_PAGE_IN",
8172                OldThreadWaitReason::WrPoolAllocation => "WR_POOL_ALLOCATION",
8173                OldThreadWaitReason::WrDelayExecution => "WR_DELAY_EXECUTION",
8174                OldThreadWaitReason::WrSuspended => "WR_SUSPENDED",
8175                OldThreadWaitReason::WrUserRequest => "WR_USER_REQUEST",
8176                OldThreadWaitReason::WrEventPair => "WR_EVENT_PAIR",
8177                OldThreadWaitReason::WrQueue => "WR_QUEUE",
8178                OldThreadWaitReason::WrLpcReceiver => "WR_LPC_RECEIVER",
8179                OldThreadWaitReason::WrLpcReply => "WR_LPC_REPLY",
8180                OldThreadWaitReason::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
8181                OldThreadWaitReason::WrPageOut => "WR_PAGE_OUT",
8182                OldThreadWaitReason::WrRendezVous => "WR_RENDEZ_VOUS",
8183                OldThreadWaitReason::WrKeyedEvent => "WR_KEYED_EVENT",
8184                OldThreadWaitReason::WrTerminated => "WR_TERMINATED",
8185                OldThreadWaitReason::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
8186                OldThreadWaitReason::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
8187                OldThreadWaitReason::WrCalloutStack => "WR_CALLOUT_STACK",
8188                OldThreadWaitReason::WrKernel => "WR_KERNEL",
8189                OldThreadWaitReason::WrResource => "WR_RESOURCE",
8190                OldThreadWaitReason::WrPushLock => "WR_PUSH_LOCK",
8191                OldThreadWaitReason::WrMutex => "WR_MUTEX",
8192                OldThreadWaitReason::WrQuantumEnd => "WR_QUANTUM_END",
8193                OldThreadWaitReason::WrDispatchInt => "WR_DISPATCH_INT",
8194                OldThreadWaitReason::WrPreempted => "WR_PREEMPTED",
8195                OldThreadWaitReason::WrYieldExecution => "WR_YIELD_EXECUTION",
8196                OldThreadWaitReason::WrFastMutex => "WR_FAST_MUTEX",
8197                OldThreadWaitReason::WrGuardMutex => "WR_GUARD_MUTEX",
8198                OldThreadWaitReason::WrRundown => "WR_RUNDOWN",
8199                OldThreadWaitReason::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
8200            }
8201        }
8202    }
8203    /// Wait mode for the previous thread. The ordering is important as based on
8204    /// the OldThreadWaitMode definition from the link above. The following are the
8205    /// possible values:
8206    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8207    #[repr(i32)]
8208    pub enum OldThreadWaitMode {
8209        KernelMode = 0,
8210        UserMode = 1,
8211    }
8212    impl OldThreadWaitMode {
8213        /// String value of the enum field names used in the ProtoBuf definition.
8214        ///
8215        /// The values are not transformed in any way and thus are considered stable
8216        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8217        pub fn as_str_name(&self) -> &'static str {
8218            match self {
8219                OldThreadWaitMode::KernelMode => "KERNEL_MODE",
8220                OldThreadWaitMode::UserMode => "USER_MODE",
8221            }
8222        }
8223    }
8224    /// State of the previous thread. The ordering is important as based on the
8225    /// OldThreadState definition from the link above. The following are the
8226    /// possible state values:
8227    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8228    #[repr(i32)]
8229    pub enum OldThreadState {
8230        Initialized = 0,
8231        Ready = 1,
8232        Running = 2,
8233        Standby = 3,
8234        Terminated = 4,
8235        Waiting = 5,
8236        Transition = 6,
8237        DeferredReady = 7,
8238    }
8239    impl OldThreadState {
8240        /// String value of the enum field names used in the ProtoBuf definition.
8241        ///
8242        /// The values are not transformed in any way and thus are considered stable
8243        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8244        pub fn as_str_name(&self) -> &'static str {
8245            match self {
8246                OldThreadState::Initialized => "INITIALIZED",
8247                OldThreadState::Ready => "READY",
8248                OldThreadState::Running => "RUNNING",
8249                OldThreadState::Standby => "STANDBY",
8250                OldThreadState::Terminated => "TERMINATED",
8251                OldThreadState::Waiting => "WAITING",
8252                OldThreadState::Transition => "TRANSITION",
8253                OldThreadState::DeferredReady => "DEFERRED_READY",
8254            }
8255        }
8256    }
8257    #[derive(Clone, PartialEq, ::prost::Oneof)]
8258    pub enum OldThreadWaitReasonEnumOrInt {
8259        #[prost(enumeration="OldThreadWaitReason", tag="6")]
8260        OldThreadWaitReason(i32),
8261        #[prost(int32, tag="11")]
8262        OldThreadWaitReasonInt(i32),
8263    }
8264    #[derive(Clone, PartialEq, ::prost::Oneof)]
8265    pub enum OldThreadWaitModeEnumOrInt {
8266        #[prost(enumeration="OldThreadWaitMode", tag="7")]
8267        OldThreadWaitMode(i32),
8268        #[prost(int32, tag="12")]
8269        OldThreadWaitModeInt(i32),
8270    }
8271    #[derive(Clone, PartialEq, ::prost::Oneof)]
8272    pub enum OldThreadStateEnumOrInt {
8273        #[prost(enumeration="OldThreadState", tag="8")]
8274        OldThreadState(i32),
8275        #[prost(sint32, tag="13")]
8276        OldThreadStateInt(i32),
8277    }
8278}
8279/// Proto definition based on the Thread_v2 CSwitch class definition
8280/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
8281#[derive(Clone, PartialEq, ::prost::Message)]
8282pub struct ReadyThreadEtwEvent {
8283    /// The thread identifier of the thread being readied for execution.
8284    #[prost(uint32, optional, tag="1")]
8285    pub t_thread_id: ::core::option::Option<u32>,
8286    ///   The value by which the priority is being adjusted.
8287    #[prost(sint32, optional, tag="3")]
8288    pub adjust_increment: ::core::option::Option<i32>,
8289    #[prost(oneof="ready_thread_etw_event::AdjustReasonEnumOrInt", tags="2, 5")]
8290    pub adjust_reason_enum_or_int: ::core::option::Option<ready_thread_etw_event::AdjustReasonEnumOrInt>,
8291    #[prost(oneof="ready_thread_etw_event::FlagEnumOrInt", tags="4, 6")]
8292    pub flag_enum_or_int: ::core::option::Option<ready_thread_etw_event::FlagEnumOrInt>,
8293}
8294/// Nested message and enum types in `ReadyThreadEtwEvent`.
8295pub mod ready_thread_etw_event {
8296    /// The reason for the priority boost. The ordering is important as based on
8297    /// the AdjustReason definition from the link above.
8298    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8299    #[repr(i32)]
8300    pub enum AdjustReason {
8301        IgnoreTheIncrement = 0,
8302        /// Apply the increment, which will decay incrementally at the end of each
8303        /// quantum.
8304        ApplyIncrement = 1,
8305        /// Apply the increment as a boost that will decay in its entirety at quantum
8306        /// (typically for priority donation).
8307        ApplyIncrementBoost = 2,
8308    }
8309    impl AdjustReason {
8310        /// String value of the enum field names used in the ProtoBuf definition.
8311        ///
8312        /// The values are not transformed in any way and thus are considered stable
8313        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8314        pub fn as_str_name(&self) -> &'static str {
8315            match self {
8316                AdjustReason::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
8317                AdjustReason::ApplyIncrement => "APPLY_INCREMENT",
8318                AdjustReason::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
8319            }
8320        }
8321    }
8322    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8323    #[repr(i32)]
8324    pub enum TraceFlag {
8325        Unspecified = 0,
8326        /// The thread has been readied from DPC (deferred procedure call).
8327        ThreadReadied = 1,
8328        /// The kernel stack is currently swapped out.
8329        KernelStackSwappedOut = 2,
8330        /// The process address space is swapped out.
8331        ProcessAddressSwappedOut = 4,
8332    }
8333    impl TraceFlag {
8334        /// String value of the enum field names used in the ProtoBuf definition.
8335        ///
8336        /// The values are not transformed in any way and thus are considered stable
8337        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8338        pub fn as_str_name(&self) -> &'static str {
8339            match self {
8340                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
8341                TraceFlag::ThreadReadied => "THREAD_READIED",
8342                TraceFlag::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
8343                TraceFlag::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
8344            }
8345        }
8346    }
8347    #[derive(Clone, PartialEq, ::prost::Oneof)]
8348    pub enum AdjustReasonEnumOrInt {
8349        #[prost(enumeration="AdjustReason", tag="2")]
8350        AdjustReason(i32),
8351        #[prost(int32, tag="5")]
8352        AdjustReasonInt(i32),
8353    }
8354    #[derive(Clone, PartialEq, ::prost::Oneof)]
8355    pub enum FlagEnumOrInt {
8356        #[prost(enumeration="TraceFlag", tag="4")]
8357        Flag(i32),
8358        #[prost(int32, tag="6")]
8359        FlagInt(i32),
8360    }
8361}
8362/// Proto definition based on the type of MemInfoArgs_V1, found here and observed
8363/// on local traces using tracerpt:
8364/// <https://github.com/repnz/etw-providers-docs/blob/master/Manifests-Win10-17134/Microsoft-Windows-Kernel-Memory.xml>
8365#[derive(Clone, PartialEq, ::prost::Message)]
8366pub struct MemInfoEtwEvent {
8367    /// Number of memory priorities on the system.
8368    #[prost(uint32, optional, tag="1")]
8369    pub priority_levels: ::core::option::Option<u32>,
8370    /// Number of pages in the zero list.
8371    #[prost(uint64, optional, tag="2")]
8372    pub zero_page_count: ::core::option::Option<u64>,
8373    /// Number of pages in the free list.
8374    #[prost(uint64, optional, tag="3")]
8375    pub free_page_count: ::core::option::Option<u64>,
8376    /// Number of pages in the modified list.
8377    #[prost(uint64, optional, tag="4")]
8378    pub modified_page_count: ::core::option::Option<u64>,
8379    /// Number of modified non-paged pool pages.
8380    #[prost(uint64, optional, tag="5")]
8381    pub modified_no_write_page_count: ::core::option::Option<u64>,
8382    /// Number of bad pages.
8383    #[prost(uint64, optional, tag="6")]
8384    pub bad_page_count: ::core::option::Option<u64>,
8385    /// Number of standby pages by memory priority.
8386    #[prost(uint64, repeated, packed="false", tag="7")]
8387    pub standby_page_counts: ::prost::alloc::vec::Vec<u64>,
8388    /// Number of repurposed pages by memory priority.
8389    #[prost(uint64, repeated, packed="false", tag="8")]
8390    pub repurposed_page_counts: ::prost::alloc::vec::Vec<u64>,
8391    /// Modified paged pages.
8392    #[prost(uint64, optional, tag="9")]
8393    pub modified_page_count_page_file: ::core::option::Option<u64>,
8394    /// Pool page counts.
8395    #[prost(uint64, optional, tag="10")]
8396    pub paged_pool_page_count: ::core::option::Option<u64>,
8397    #[prost(uint64, optional, tag="11")]
8398    pub non_paged_pool_page_count: ::core::option::Option<u64>,
8399    /// Memory Descriptor List page count.
8400    #[prost(uint64, optional, tag="12")]
8401    pub mdl_page_count: ::core::option::Option<u64>,
8402    /// Commit weight.
8403    #[prost(uint64, optional, tag="13")]
8404    pub commit_page_count: ::core::option::Option<u64>,
8405}
8406/// Proto definition based on the `FileIo_Create` class definition.
8407#[derive(Clone, PartialEq, ::prost::Message)]
8408pub struct FileIoCreateEtwEvent {
8409    #[prost(uint64, optional, tag="1")]
8410    pub irp_ptr: ::core::option::Option<u64>,
8411    #[prost(uint64, optional, tag="2")]
8412    pub file_object: ::core::option::Option<u64>,
8413    #[prost(uint32, optional, tag="3")]
8414    pub ttid: ::core::option::Option<u32>,
8415    #[prost(uint32, optional, tag="4")]
8416    pub create_options: ::core::option::Option<u32>,
8417    #[prost(uint32, optional, tag="5")]
8418    pub file_attributes: ::core::option::Option<u32>,
8419    #[prost(uint32, optional, tag="6")]
8420    pub share_access: ::core::option::Option<u32>,
8421    #[prost(string, optional, tag="7")]
8422    pub open_path: ::core::option::Option<::prost::alloc::string::String>,
8423}
8424/// Proto definition based on the `FileIo_DirEnum` class definition.
8425#[derive(Clone, PartialEq, ::prost::Message)]
8426pub struct FileIoDirEnumEtwEvent {
8427    #[prost(uint64, optional, tag="1")]
8428    pub irp_ptr: ::core::option::Option<u64>,
8429    #[prost(uint64, optional, tag="2")]
8430    pub file_object: ::core::option::Option<u64>,
8431    #[prost(uint64, optional, tag="3")]
8432    pub file_key: ::core::option::Option<u64>,
8433    #[prost(uint32, optional, tag="4")]
8434    pub ttid: ::core::option::Option<u32>,
8435    #[prost(uint32, optional, tag="5")]
8436    pub length: ::core::option::Option<u32>,
8437    #[prost(uint32, optional, tag="6")]
8438    pub info_class: ::core::option::Option<u32>,
8439    #[prost(uint32, optional, tag="7")]
8440    pub file_index: ::core::option::Option<u32>,
8441    #[prost(string, optional, tag="8")]
8442    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
8443    #[prost(uint32, optional, tag="9")]
8444    pub opcode: ::core::option::Option<u32>,
8445}
8446/// Proto definition based on the `FileIo_Info` class definition.
8447#[derive(Clone, PartialEq, ::prost::Message)]
8448pub struct FileIoInfoEtwEvent {
8449    #[prost(uint64, optional, tag="1")]
8450    pub irp_ptr: ::core::option::Option<u64>,
8451    #[prost(uint64, optional, tag="2")]
8452    pub file_object: ::core::option::Option<u64>,
8453    #[prost(uint64, optional, tag="3")]
8454    pub file_key: ::core::option::Option<u64>,
8455    #[prost(uint64, optional, tag="4")]
8456    pub extra_info: ::core::option::Option<u64>,
8457    #[prost(uint32, optional, tag="5")]
8458    pub ttid: ::core::option::Option<u32>,
8459    #[prost(uint32, optional, tag="6")]
8460    pub info_class: ::core::option::Option<u32>,
8461    #[prost(uint32, optional, tag="7")]
8462    pub opcode: ::core::option::Option<u32>,
8463}
8464/// Proto definition based on the `FileIo_ReadWrite` class definition.
8465#[derive(Clone, PartialEq, ::prost::Message)]
8466pub struct FileIoReadWriteEtwEvent {
8467    #[prost(uint64, optional, tag="1")]
8468    pub offset: ::core::option::Option<u64>,
8469    #[prost(uint64, optional, tag="2")]
8470    pub irp_ptr: ::core::option::Option<u64>,
8471    #[prost(uint64, optional, tag="3")]
8472    pub file_object: ::core::option::Option<u64>,
8473    #[prost(uint64, optional, tag="4")]
8474    pub file_key: ::core::option::Option<u64>,
8475    #[prost(uint32, optional, tag="5")]
8476    pub ttid: ::core::option::Option<u32>,
8477    #[prost(uint32, optional, tag="6")]
8478    pub io_size: ::core::option::Option<u32>,
8479    #[prost(uint32, optional, tag="7")]
8480    pub io_flags: ::core::option::Option<u32>,
8481    #[prost(uint32, optional, tag="8")]
8482    pub opcode: ::core::option::Option<u32>,
8483}
8484/// Proto definition based on the `FileIo_SimpleOp` class definition.
8485#[derive(Clone, PartialEq, ::prost::Message)]
8486pub struct FileIoSimpleOpEtwEvent {
8487    #[prost(uint64, optional, tag="1")]
8488    pub irp_ptr: ::core::option::Option<u64>,
8489    #[prost(uint64, optional, tag="2")]
8490    pub file_object: ::core::option::Option<u64>,
8491    #[prost(uint64, optional, tag="3")]
8492    pub file_key: ::core::option::Option<u64>,
8493    #[prost(uint32, optional, tag="4")]
8494    pub ttid: ::core::option::Option<u32>,
8495    #[prost(uint32, optional, tag="5")]
8496    pub opcode: ::core::option::Option<u32>,
8497}
8498/// Proto definition based on the `FileIo_OpEnd` class definition.
8499#[derive(Clone, PartialEq, ::prost::Message)]
8500pub struct FileIoOpEndEtwEvent {
8501    #[prost(uint64, optional, tag="1")]
8502    pub irp_ptr: ::core::option::Option<u64>,
8503    #[prost(uint64, optional, tag="2")]
8504    pub extra_info: ::core::option::Option<u64>,
8505    #[prost(uint32, optional, tag="3")]
8506    pub nt_status: ::core::option::Option<u32>,
8507}
8508// End of protos/perfetto/trace/etw/etw.proto
8509
8510// Begin of protos/perfetto/trace/etw/etw_event.proto
8511
8512#[derive(Clone, PartialEq, ::prost::Message)]
8513pub struct EtwTraceEvent {
8514    #[prost(uint64, optional, tag="1")]
8515    pub timestamp: ::core::option::Option<u64>,
8516    #[prost(uint32, optional, tag="4")]
8517    pub cpu: ::core::option::Option<u32>,
8518    #[prost(uint32, optional, tag="5")]
8519    pub thread_id: ::core::option::Option<u32>,
8520    #[prost(oneof="etw_trace_event::Event", tags="2, 3, 6, 7, 8, 9, 10, 11, 12")]
8521    pub event: ::core::option::Option<etw_trace_event::Event>,
8522}
8523/// Nested message and enum types in `EtwTraceEvent`.
8524pub mod etw_trace_event {
8525    #[derive(Clone, PartialEq, ::prost::Oneof)]
8526    pub enum Event {
8527        #[prost(message, tag="2")]
8528        CSwitch(super::CSwitchEtwEvent),
8529        #[prost(message, tag="3")]
8530        ReadyThread(super::ReadyThreadEtwEvent),
8531        #[prost(message, tag="6")]
8532        MemInfo(super::MemInfoEtwEvent),
8533        #[prost(message, tag="7")]
8534        FileIoCreate(super::FileIoCreateEtwEvent),
8535        #[prost(message, tag="8")]
8536        FileIoDirEnum(super::FileIoDirEnumEtwEvent),
8537        #[prost(message, tag="9")]
8538        FileIoInfo(super::FileIoInfoEtwEvent),
8539        #[prost(message, tag="10")]
8540        FileIoReadWrite(super::FileIoReadWriteEtwEvent),
8541        #[prost(message, tag="11")]
8542        FileIoSimpleOp(super::FileIoSimpleOpEtwEvent),
8543        #[prost(message, tag="12")]
8544        FileIoOpEnd(super::FileIoOpEndEtwEvent),
8545    }
8546}
8547// End of protos/perfetto/trace/etw/etw_event.proto
8548
8549// Begin of protos/perfetto/trace/etw/etw_event_bundle.proto
8550
8551/// The result of tracing one or more etw event uses per-processor buffers where
8552/// an in-use buffer is assigned to each processor at all times. Therefore,
8553/// collecting multiple events they should already be synchronized.
8554#[derive(Clone, PartialEq, ::prost::Message)]
8555pub struct EtwTraceEventBundle {
8556    #[prost(uint32, optional, tag="1")]
8557    pub cpu: ::core::option::Option<u32>,
8558    #[prost(message, repeated, tag="2")]
8559    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
8560}
8561// Begin of protos/perfetto/trace/evdev.proto
8562
8563/// Records an event in the evdev protocol, as used by Linux and some other *nix
8564/// kernels to report events from human interface devices.
8565///
8566/// Next ID: 3
8567#[derive(Clone, PartialEq, ::prost::Message)]
8568pub struct EvdevEvent {
8569    /// The device's unique ID number. This need not be the number of its
8570    /// /dev/input/event node.
8571    #[prost(uint32, optional, tag="1")]
8572    pub device_id: ::core::option::Option<u32>,
8573    #[prost(oneof="evdev_event::Event", tags="2")]
8574    pub event: ::core::option::Option<evdev_event::Event>,
8575}
8576/// Nested message and enum types in `EvdevEvent`.
8577pub mod evdev_event {
8578    /// Proto version of Linux's struct input_event. The meaning of types and codes
8579    /// are described in the Linux kernel documentation at
8580    /// <https://www.kernel.org/doc/html/latest/input/event-codes.html.>
8581    ///
8582    /// Next ID: 5
8583    #[derive(Clone, PartialEq, ::prost::Message)]
8584    pub struct InputEvent {
8585        /// The monotonic timestamp at which the event occurred, as reported by the
8586        /// kernel, in integer nanoseconds. If omitted, assume that it hasn't changed
8587        /// since the previous event.
8588        #[prost(uint64, optional, tag="1")]
8589        pub kernel_timestamp: ::core::option::Option<u64>,
8590        /// The code grouping for this event, used to distinguish signals, absolute
8591        /// and relative axis changes, and other types of event.
8592        #[prost(uint32, optional, tag="2")]
8593        pub r#type: ::core::option::Option<u32>,
8594        /// The precise type of the event, such as the axis code for absolute and
8595        /// relative events.
8596        #[prost(uint32, optional, tag="3")]
8597        pub code: ::core::option::Option<u32>,
8598        /// The new value of the axis described by type and code.
8599        #[prost(sint32, optional, tag="4")]
8600        pub value: ::core::option::Option<i32>,
8601    }
8602    #[derive(Clone, PartialEq, ::prost::Oneof)]
8603    pub enum Event {
8604        #[prost(message, tag="2")]
8605        InputEvent(InputEvent),
8606    }
8607}
8608// End of protos/perfetto/trace/evdev.proto
8609
8610// Begin of protos/perfetto/common/descriptor.proto
8611
8612/// The protocol compiler can output a FileDescriptorSet containing the .proto
8613/// files it parses.
8614#[derive(Clone, PartialEq, ::prost::Message)]
8615pub struct FileDescriptorSet {
8616    #[prost(message, repeated, tag="1")]
8617    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
8618}
8619/// Describes a complete .proto file.
8620#[derive(Clone, PartialEq, ::prost::Message)]
8621pub struct FileDescriptorProto {
8622    /// file name, relative to root of source tree
8623    #[prost(string, optional, tag="1")]
8624    pub name: ::core::option::Option<::prost::alloc::string::String>,
8625    /// e.g. "foo", "foo.bar", etc.
8626    #[prost(string, optional, tag="2")]
8627    pub package: ::core::option::Option<::prost::alloc::string::String>,
8628    /// Names of files imported by this file.
8629    #[prost(string, repeated, tag="3")]
8630    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8631    /// Indexes of the public imported files in the dependency list above.
8632    #[prost(int32, repeated, packed="false", tag="10")]
8633    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
8634    /// Indexes of the weak imported files in the dependency list.
8635    /// For Google-internal migration only. Do not use.
8636    #[prost(int32, repeated, packed="false", tag="11")]
8637    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
8638    /// All top-level definitions in this file.
8639    #[prost(message, repeated, tag="4")]
8640    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
8641    #[prost(message, repeated, tag="5")]
8642    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
8643    #[prost(message, repeated, tag="7")]
8644    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8645}
8646/// Describes a message type.
8647#[derive(Clone, PartialEq, ::prost::Message)]
8648pub struct DescriptorProto {
8649    #[prost(string, optional, tag="1")]
8650    pub name: ::core::option::Option<::prost::alloc::string::String>,
8651    #[prost(message, repeated, tag="2")]
8652    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8653    #[prost(message, repeated, tag="6")]
8654    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8655    #[prost(message, repeated, tag="3")]
8656    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
8657    #[prost(message, repeated, tag="4")]
8658    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
8659    #[prost(message, repeated, tag="8")]
8660    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
8661    #[prost(message, repeated, tag="9")]
8662    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
8663    /// Reserved field names, which may not be used by fields in the same message.
8664    /// A given name may only be reserved once.
8665    #[prost(string, repeated, tag="10")]
8666    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8667}
8668/// Nested message and enum types in `DescriptorProto`.
8669pub mod descriptor_proto {
8670    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
8671    /// fields or extension ranges in the same message. Reserved ranges may
8672    /// not overlap.
8673    #[derive(Clone, PartialEq, ::prost::Message)]
8674    pub struct ReservedRange {
8675        /// Inclusive.
8676        #[prost(int32, optional, tag="1")]
8677        pub start: ::core::option::Option<i32>,
8678        /// Exclusive.
8679        #[prost(int32, optional, tag="2")]
8680        pub end: ::core::option::Option<i32>,
8681    }
8682}
8683/// A message representing a option the parser does not recognize. This only
8684/// appears in options protos created by the compiler::Parser class.
8685/// DescriptorPool resolves these when building Descriptor objects. Therefore,
8686/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
8687/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
8688/// in them.
8689#[derive(Clone, PartialEq, ::prost::Message)]
8690pub struct UninterpretedOption {
8691    #[prost(message, repeated, tag="2")]
8692    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
8693    /// The value of the uninterpreted option, in whatever type the tokenizer
8694    /// identified it as during parsing. Exactly one of these should be set.
8695    #[prost(string, optional, tag="3")]
8696    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
8697    #[prost(uint64, optional, tag="4")]
8698    pub positive_int_value: ::core::option::Option<u64>,
8699    #[prost(int64, optional, tag="5")]
8700    pub negative_int_value: ::core::option::Option<i64>,
8701    #[prost(double, optional, tag="6")]
8702    pub double_value: ::core::option::Option<f64>,
8703    #[prost(bytes="vec", optional, tag="7")]
8704    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8705    #[prost(string, optional, tag="8")]
8706    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
8707}
8708/// Nested message and enum types in `UninterpretedOption`.
8709pub mod uninterpreted_option {
8710    /// The name of the uninterpreted option.  Each string represents a segment in
8711    /// a dot-separated name.  is_extension is true iff a segment represents an
8712    /// extension (denoted with parentheses in options specs in .proto files).
8713    /// E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
8714    /// "foo.(bar.baz).moo".
8715    #[derive(Clone, PartialEq, ::prost::Message)]
8716    pub struct NamePart {
8717        #[prost(string, optional, tag="1")]
8718        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
8719        #[prost(bool, optional, tag="2")]
8720        pub is_extension: ::core::option::Option<bool>,
8721    }
8722}
8723#[derive(Clone, PartialEq, ::prost::Message)]
8724pub struct FieldOptions {
8725    /// The packed option can be enabled for repeated primitive fields to enable
8726    /// a more efficient representation on the wire. Rather than repeatedly
8727    /// writing the tag and type for each element, the entire array is encoded as
8728    /// a single length-delimited blob. In proto3, only explicit setting it to
8729    /// false will avoid using packed encoding.
8730    #[prost(bool, optional, tag="2")]
8731    pub packed: ::core::option::Option<bool>,
8732    /// The parser stores options it doesn't recognize here. See above.
8733    #[prost(message, repeated, tag="999")]
8734    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
8735}
8736/// Describes a field within a message.
8737#[derive(Clone, PartialEq, ::prost::Message)]
8738pub struct FieldDescriptorProto {
8739    #[prost(string, optional, tag="1")]
8740    pub name: ::core::option::Option<::prost::alloc::string::String>,
8741    #[prost(int32, optional, tag="3")]
8742    pub number: ::core::option::Option<i32>,
8743    #[prost(enumeration="field_descriptor_proto::Label", optional, tag="4")]
8744    pub label: ::core::option::Option<i32>,
8745    /// If type_name is set, this need not be set.  If both this and type_name
8746    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
8747    #[prost(enumeration="field_descriptor_proto::Type", optional, tag="5")]
8748    pub r#type: ::core::option::Option<i32>,
8749    /// For message and enum types, this is the name of the type.  If the name
8750    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
8751    /// rules are used to find the type (i.e. first the nested types within this
8752    /// message are searched, then within the parent, on up to the root
8753    /// namespace).
8754    #[prost(string, optional, tag="6")]
8755    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
8756    /// For extensions, this is the name of the type being extended.  It is
8757    /// resolved in the same manner as type_name.
8758    #[prost(string, optional, tag="2")]
8759    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
8760    /// For numeric types, contains the original text representation of the value.
8761    /// For booleans, "true" or "false".
8762    /// For strings, contains the default text contents (not escaped in any way).
8763    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
8764    /// TODO(kenton):  Base-64 encode?
8765    #[prost(string, optional, tag="7")]
8766    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
8767    #[prost(message, optional, tag="8")]
8768    pub options: ::core::option::Option<FieldOptions>,
8769    /// If set, gives the index of a oneof in the containing type's oneof_decl
8770    /// list.  This field is a member of that oneof.
8771    #[prost(int32, optional, tag="9")]
8772    pub oneof_index: ::core::option::Option<i32>,
8773}
8774/// Nested message and enum types in `FieldDescriptorProto`.
8775pub mod field_descriptor_proto {
8776    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8777    #[repr(i32)]
8778    pub enum Type {
8779        /// 0 is reserved for errors.
8780        /// Order is weird for historical reasons.
8781        Double = 1,
8782        Float = 2,
8783        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
8784        /// negative values are likely.
8785        Int64 = 3,
8786        Uint64 = 4,
8787        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
8788        /// negative values are likely.
8789        Int32 = 5,
8790        Fixed64 = 6,
8791        Fixed32 = 7,
8792        Bool = 8,
8793        String = 9,
8794        /// Tag-delimited aggregate.
8795        /// Group type is deprecated and not supported in proto3. However, Proto3
8796        /// implementations should still be able to parse the group wire format and
8797        /// treat group fields as unknown fields.
8798        Group = 10,
8799        /// Length-delimited aggregate.
8800        Message = 11,
8801        /// New in version 2.
8802        Bytes = 12,
8803        Uint32 = 13,
8804        Enum = 14,
8805        Sfixed32 = 15,
8806        Sfixed64 = 16,
8807        /// Uses ZigZag encoding.
8808        Sint32 = 17,
8809        /// Uses ZigZag encoding.
8810        Sint64 = 18,
8811    }
8812    impl Type {
8813        /// String value of the enum field names used in the ProtoBuf definition.
8814        ///
8815        /// The values are not transformed in any way and thus are considered stable
8816        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8817        pub fn as_str_name(&self) -> &'static str {
8818            match self {
8819                Type::Double => "TYPE_DOUBLE",
8820                Type::Float => "TYPE_FLOAT",
8821                Type::Int64 => "TYPE_INT64",
8822                Type::Uint64 => "TYPE_UINT64",
8823                Type::Int32 => "TYPE_INT32",
8824                Type::Fixed64 => "TYPE_FIXED64",
8825                Type::Fixed32 => "TYPE_FIXED32",
8826                Type::Bool => "TYPE_BOOL",
8827                Type::String => "TYPE_STRING",
8828                Type::Group => "TYPE_GROUP",
8829                Type::Message => "TYPE_MESSAGE",
8830                Type::Bytes => "TYPE_BYTES",
8831                Type::Uint32 => "TYPE_UINT32",
8832                Type::Enum => "TYPE_ENUM",
8833                Type::Sfixed32 => "TYPE_SFIXED32",
8834                Type::Sfixed64 => "TYPE_SFIXED64",
8835                Type::Sint32 => "TYPE_SINT32",
8836                Type::Sint64 => "TYPE_SINT64",
8837            }
8838        }
8839    }
8840    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8841    #[repr(i32)]
8842    pub enum Label {
8843        /// 0 is reserved for errors
8844        Optional = 1,
8845        Required = 2,
8846        Repeated = 3,
8847    }
8848    impl Label {
8849        /// String value of the enum field names used in the ProtoBuf definition.
8850        ///
8851        /// The values are not transformed in any way and thus are considered stable
8852        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8853        pub fn as_str_name(&self) -> &'static str {
8854            match self {
8855                Label::Optional => "LABEL_OPTIONAL",
8856                Label::Required => "LABEL_REQUIRED",
8857                Label::Repeated => "LABEL_REPEATED",
8858            }
8859        }
8860    }
8861}
8862/// Describes a oneof.
8863#[derive(Clone, PartialEq, ::prost::Message)]
8864pub struct OneofDescriptorProto {
8865    #[prost(string, optional, tag="1")]
8866    pub name: ::core::option::Option<::prost::alloc::string::String>,
8867    #[prost(message, optional, tag="2")]
8868    pub options: ::core::option::Option<OneofOptions>,
8869}
8870/// Describes an enum type.
8871#[derive(Clone, PartialEq, ::prost::Message)]
8872pub struct EnumDescriptorProto {
8873    #[prost(string, optional, tag="1")]
8874    pub name: ::core::option::Option<::prost::alloc::string::String>,
8875    #[prost(message, repeated, tag="2")]
8876    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
8877    /// Reserved enum value names, which may not be reused. A given name may only
8878    /// be reserved once.
8879    #[prost(string, repeated, tag="5")]
8880    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8881}
8882/// Describes a value within an enum.
8883#[derive(Clone, PartialEq, ::prost::Message)]
8884pub struct EnumValueDescriptorProto {
8885    #[prost(string, optional, tag="1")]
8886    pub name: ::core::option::Option<::prost::alloc::string::String>,
8887    #[prost(int32, optional, tag="2")]
8888    pub number: ::core::option::Option<i32>,
8889}
8890#[derive(Clone, PartialEq, ::prost::Message)]
8891pub struct OneofOptions {
8892}
8893// End of protos/perfetto/common/descriptor.proto
8894
8895// Begin of protos/perfetto/trace/extension_descriptor.proto
8896
8897/// This message contains descriptors used to parse extension fields of
8898/// TrackEvent.
8899///
8900/// See docs/design-docs/extensions.md for more details.
8901#[derive(Clone, PartialEq, ::prost::Message)]
8902pub struct ExtensionDescriptor {
8903    #[prost(message, optional, tag="1")]
8904    pub extension_set: ::core::option::Option<FileDescriptorSet>,
8905}
8906// End of protos/perfetto/trace/extension_descriptor.proto
8907
8908// Begin of protos/perfetto/trace/filesystem/inode_file_map.proto
8909
8910/// Represents the mapping between inode numbers in a block device and their path
8911/// on the filesystem
8912#[derive(Clone, PartialEq, ::prost::Message)]
8913pub struct InodeFileMap {
8914    #[prost(uint64, optional, tag="1")]
8915    pub block_device_id: ::core::option::Option<u64>,
8916    /// The mount points of the block device, e.g. \["system"\].
8917    #[prost(string, repeated, tag="2")]
8918    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8919    /// The list of all the entries from the block device
8920    #[prost(message, repeated, tag="3")]
8921    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
8922}
8923/// Nested message and enum types in `InodeFileMap`.
8924pub mod inode_file_map {
8925    /// Representation of Entry
8926    #[derive(Clone, PartialEq, ::prost::Message)]
8927    pub struct Entry {
8928        #[prost(uint64, optional, tag="1")]
8929        pub inode_number: ::core::option::Option<u64>,
8930        /// The path to the file, e.g. "etc/file.xml"
8931        /// List of strings for multiple hardlinks
8932        #[prost(string, repeated, tag="2")]
8933        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8934        #[prost(enumeration="entry::Type", optional, tag="3")]
8935        pub r#type: ::core::option::Option<i32>,
8936    }
8937    /// Nested message and enum types in `Entry`.
8938    pub mod entry {
8939        /// The file type
8940        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8941        #[repr(i32)]
8942        pub enum Type {
8943            Unknown = 0,
8944            File = 1,
8945            Directory = 2,
8946        }
8947        impl Type {
8948            /// String value of the enum field names used in the ProtoBuf definition.
8949            ///
8950            /// The values are not transformed in any way and thus are considered stable
8951            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8952            pub fn as_str_name(&self) -> &'static str {
8953                match self {
8954                    Type::Unknown => "UNKNOWN",
8955                    Type::File => "FILE",
8956                    Type::Directory => "DIRECTORY",
8957                }
8958            }
8959        }
8960    }
8961}
8962// End of protos/perfetto/trace/filesystem/inode_file_map.proto
8963
8964// Begin of protos/perfetto/trace/ftrace/android_fs.proto
8965
8966#[derive(Clone, PartialEq, ::prost::Message)]
8967pub struct AndroidFsDatareadEndFtraceEvent {
8968    #[prost(int32, optional, tag="1")]
8969    pub bytes: ::core::option::Option<i32>,
8970    #[prost(uint64, optional, tag="2")]
8971    pub ino: ::core::option::Option<u64>,
8972    #[prost(int64, optional, tag="3")]
8973    pub offset: ::core::option::Option<i64>,
8974}
8975#[derive(Clone, PartialEq, ::prost::Message)]
8976pub struct AndroidFsDatareadStartFtraceEvent {
8977    #[prost(int32, optional, tag="1")]
8978    pub bytes: ::core::option::Option<i32>,
8979    #[prost(string, optional, tag="2")]
8980    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
8981    #[prost(int64, optional, tag="3")]
8982    pub i_size: ::core::option::Option<i64>,
8983    #[prost(uint64, optional, tag="4")]
8984    pub ino: ::core::option::Option<u64>,
8985    #[prost(int64, optional, tag="5")]
8986    pub offset: ::core::option::Option<i64>,
8987    #[prost(string, optional, tag="6")]
8988    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
8989    #[prost(int32, optional, tag="7")]
8990    pub pid: ::core::option::Option<i32>,
8991}
8992#[derive(Clone, PartialEq, ::prost::Message)]
8993pub struct AndroidFsDatawriteEndFtraceEvent {
8994    #[prost(int32, optional, tag="1")]
8995    pub bytes: ::core::option::Option<i32>,
8996    #[prost(uint64, optional, tag="2")]
8997    pub ino: ::core::option::Option<u64>,
8998    #[prost(int64, optional, tag="3")]
8999    pub offset: ::core::option::Option<i64>,
9000}
9001#[derive(Clone, PartialEq, ::prost::Message)]
9002pub struct AndroidFsDatawriteStartFtraceEvent {
9003    #[prost(int32, optional, tag="1")]
9004    pub bytes: ::core::option::Option<i32>,
9005    #[prost(string, optional, tag="2")]
9006    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9007    #[prost(int64, optional, tag="3")]
9008    pub i_size: ::core::option::Option<i64>,
9009    #[prost(uint64, optional, tag="4")]
9010    pub ino: ::core::option::Option<u64>,
9011    #[prost(int64, optional, tag="5")]
9012    pub offset: ::core::option::Option<i64>,
9013    #[prost(string, optional, tag="6")]
9014    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9015    #[prost(int32, optional, tag="7")]
9016    pub pid: ::core::option::Option<i32>,
9017}
9018#[derive(Clone, PartialEq, ::prost::Message)]
9019pub struct AndroidFsFsyncEndFtraceEvent {
9020    #[prost(int32, optional, tag="1")]
9021    pub bytes: ::core::option::Option<i32>,
9022    #[prost(uint64, optional, tag="2")]
9023    pub ino: ::core::option::Option<u64>,
9024    #[prost(int64, optional, tag="3")]
9025    pub offset: ::core::option::Option<i64>,
9026}
9027#[derive(Clone, PartialEq, ::prost::Message)]
9028pub struct AndroidFsFsyncStartFtraceEvent {
9029    #[prost(string, optional, tag="1")]
9030    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9031    #[prost(int64, optional, tag="2")]
9032    pub i_size: ::core::option::Option<i64>,
9033    #[prost(uint64, optional, tag="3")]
9034    pub ino: ::core::option::Option<u64>,
9035    #[prost(string, optional, tag="4")]
9036    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9037    #[prost(int32, optional, tag="5")]
9038    pub pid: ::core::option::Option<i32>,
9039}
9040// End of protos/perfetto/trace/ftrace/android_fs.proto
9041
9042// Begin of protos/perfetto/trace/ftrace/bcl_exynos.proto
9043
9044#[derive(Clone, PartialEq, ::prost::Message)]
9045pub struct BclIrqTriggerFtraceEvent {
9046    #[prost(int32, optional, tag="1")]
9047    pub id: ::core::option::Option<i32>,
9048    #[prost(int32, optional, tag="2")]
9049    pub throttle: ::core::option::Option<i32>,
9050    #[prost(int32, optional, tag="3")]
9051    pub cpu0_limit: ::core::option::Option<i32>,
9052    #[prost(int32, optional, tag="4")]
9053    pub cpu1_limit: ::core::option::Option<i32>,
9054    #[prost(int32, optional, tag="5")]
9055    pub cpu2_limit: ::core::option::Option<i32>,
9056    #[prost(int32, optional, tag="6")]
9057    pub tpu_limit: ::core::option::Option<i32>,
9058    #[prost(int32, optional, tag="7")]
9059    pub gpu_limit: ::core::option::Option<i32>,
9060    #[prost(int32, optional, tag="8")]
9061    pub voltage: ::core::option::Option<i32>,
9062    #[prost(int32, optional, tag="9")]
9063    pub capacity: ::core::option::Option<i32>,
9064}
9065// End of protos/perfetto/trace/ftrace/bcl_exynos.proto
9066
9067// Begin of protos/perfetto/trace/ftrace/binder.proto
9068
9069#[derive(Clone, PartialEq, ::prost::Message)]
9070pub struct BinderTransactionFtraceEvent {
9071    #[prost(int32, optional, tag="1")]
9072    pub debug_id: ::core::option::Option<i32>,
9073    #[prost(int32, optional, tag="2")]
9074    pub target_node: ::core::option::Option<i32>,
9075    #[prost(int32, optional, tag="3")]
9076    pub to_proc: ::core::option::Option<i32>,
9077    #[prost(int32, optional, tag="4")]
9078    pub to_thread: ::core::option::Option<i32>,
9079    #[prost(int32, optional, tag="5")]
9080    pub reply: ::core::option::Option<i32>,
9081    #[prost(uint32, optional, tag="6")]
9082    pub code: ::core::option::Option<u32>,
9083    #[prost(uint32, optional, tag="7")]
9084    pub flags: ::core::option::Option<u32>,
9085}
9086#[derive(Clone, PartialEq, ::prost::Message)]
9087pub struct BinderTransactionReceivedFtraceEvent {
9088    #[prost(int32, optional, tag="1")]
9089    pub debug_id: ::core::option::Option<i32>,
9090}
9091#[derive(Clone, PartialEq, ::prost::Message)]
9092pub struct BinderSetPriorityFtraceEvent {
9093    #[prost(int32, optional, tag="1")]
9094    pub proc: ::core::option::Option<i32>,
9095    #[prost(int32, optional, tag="2")]
9096    pub thread: ::core::option::Option<i32>,
9097    #[prost(uint32, optional, tag="3")]
9098    pub old_prio: ::core::option::Option<u32>,
9099    #[prost(uint32, optional, tag="4")]
9100    pub new_prio: ::core::option::Option<u32>,
9101    #[prost(uint32, optional, tag="5")]
9102    pub desired_prio: ::core::option::Option<u32>,
9103}
9104#[derive(Clone, PartialEq, ::prost::Message)]
9105pub struct BinderLockFtraceEvent {
9106    #[prost(string, optional, tag="1")]
9107    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9108}
9109#[derive(Clone, PartialEq, ::prost::Message)]
9110pub struct BinderLockedFtraceEvent {
9111    #[prost(string, optional, tag="1")]
9112    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9113}
9114#[derive(Clone, PartialEq, ::prost::Message)]
9115pub struct BinderUnlockFtraceEvent {
9116    #[prost(string, optional, tag="1")]
9117    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9118}
9119#[derive(Clone, PartialEq, ::prost::Message)]
9120pub struct BinderTransactionAllocBufFtraceEvent {
9121    #[prost(uint64, optional, tag="1")]
9122    pub data_size: ::core::option::Option<u64>,
9123    #[prost(int32, optional, tag="2")]
9124    pub debug_id: ::core::option::Option<i32>,
9125    #[prost(uint64, optional, tag="3")]
9126    pub offsets_size: ::core::option::Option<u64>,
9127    #[prost(uint64, optional, tag="4")]
9128    pub extra_buffers_size: ::core::option::Option<u64>,
9129}
9130#[derive(Clone, PartialEq, ::prost::Message)]
9131pub struct BinderCommandFtraceEvent {
9132    #[prost(uint32, optional, tag="1")]
9133    pub cmd: ::core::option::Option<u32>,
9134}
9135#[derive(Clone, PartialEq, ::prost::Message)]
9136pub struct BinderReturnFtraceEvent {
9137    #[prost(uint32, optional, tag="1")]
9138    pub cmd: ::core::option::Option<u32>,
9139}
9140// End of protos/perfetto/trace/ftrace/binder.proto
9141
9142// Begin of protos/perfetto/trace/ftrace/block.proto
9143
9144#[derive(Clone, PartialEq, ::prost::Message)]
9145pub struct BlockRqIssueFtraceEvent {
9146    #[prost(uint64, optional, tag="1")]
9147    pub dev: ::core::option::Option<u64>,
9148    #[prost(uint64, optional, tag="2")]
9149    pub sector: ::core::option::Option<u64>,
9150    #[prost(uint32, optional, tag="3")]
9151    pub nr_sector: ::core::option::Option<u32>,
9152    #[prost(uint32, optional, tag="4")]
9153    pub bytes: ::core::option::Option<u32>,
9154    #[prost(string, optional, tag="5")]
9155    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9156    #[prost(string, optional, tag="6")]
9157    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9158    #[prost(string, optional, tag="7")]
9159    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9160}
9161#[derive(Clone, PartialEq, ::prost::Message)]
9162pub struct BlockBioBackmergeFtraceEvent {
9163    #[prost(uint64, optional, tag="1")]
9164    pub dev: ::core::option::Option<u64>,
9165    #[prost(uint64, optional, tag="2")]
9166    pub sector: ::core::option::Option<u64>,
9167    #[prost(uint32, optional, tag="3")]
9168    pub nr_sector: ::core::option::Option<u32>,
9169    #[prost(string, optional, tag="4")]
9170    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9171    #[prost(string, optional, tag="5")]
9172    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9173}
9174#[derive(Clone, PartialEq, ::prost::Message)]
9175pub struct BlockBioBounceFtraceEvent {
9176    #[prost(uint64, optional, tag="1")]
9177    pub dev: ::core::option::Option<u64>,
9178    #[prost(uint64, optional, tag="2")]
9179    pub sector: ::core::option::Option<u64>,
9180    #[prost(uint32, optional, tag="3")]
9181    pub nr_sector: ::core::option::Option<u32>,
9182    #[prost(string, optional, tag="4")]
9183    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9184    #[prost(string, optional, tag="5")]
9185    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9186}
9187#[derive(Clone, PartialEq, ::prost::Message)]
9188pub struct BlockBioCompleteFtraceEvent {
9189    #[prost(uint64, optional, tag="1")]
9190    pub dev: ::core::option::Option<u64>,
9191    #[prost(uint64, optional, tag="2")]
9192    pub sector: ::core::option::Option<u64>,
9193    #[prost(uint32, optional, tag="3")]
9194    pub nr_sector: ::core::option::Option<u32>,
9195    #[prost(int32, optional, tag="4")]
9196    pub error: ::core::option::Option<i32>,
9197    #[prost(string, optional, tag="5")]
9198    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9199}
9200#[derive(Clone, PartialEq, ::prost::Message)]
9201pub struct BlockBioFrontmergeFtraceEvent {
9202    #[prost(uint64, optional, tag="1")]
9203    pub dev: ::core::option::Option<u64>,
9204    #[prost(uint64, optional, tag="2")]
9205    pub sector: ::core::option::Option<u64>,
9206    #[prost(uint32, optional, tag="3")]
9207    pub nr_sector: ::core::option::Option<u32>,
9208    #[prost(string, optional, tag="4")]
9209    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9210    #[prost(string, optional, tag="5")]
9211    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9212}
9213#[derive(Clone, PartialEq, ::prost::Message)]
9214pub struct BlockBioQueueFtraceEvent {
9215    #[prost(uint64, optional, tag="1")]
9216    pub dev: ::core::option::Option<u64>,
9217    #[prost(uint64, optional, tag="2")]
9218    pub sector: ::core::option::Option<u64>,
9219    #[prost(uint32, optional, tag="3")]
9220    pub nr_sector: ::core::option::Option<u32>,
9221    #[prost(string, optional, tag="4")]
9222    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9223    #[prost(string, optional, tag="5")]
9224    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9225}
9226#[derive(Clone, PartialEq, ::prost::Message)]
9227pub struct BlockBioRemapFtraceEvent {
9228    #[prost(uint64, optional, tag="1")]
9229    pub dev: ::core::option::Option<u64>,
9230    #[prost(uint64, optional, tag="2")]
9231    pub sector: ::core::option::Option<u64>,
9232    #[prost(uint32, optional, tag="3")]
9233    pub nr_sector: ::core::option::Option<u32>,
9234    #[prost(uint64, optional, tag="4")]
9235    pub old_dev: ::core::option::Option<u64>,
9236    #[prost(uint64, optional, tag="5")]
9237    pub old_sector: ::core::option::Option<u64>,
9238    #[prost(string, optional, tag="6")]
9239    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9240}
9241#[derive(Clone, PartialEq, ::prost::Message)]
9242pub struct BlockDirtyBufferFtraceEvent {
9243    #[prost(uint64, optional, tag="1")]
9244    pub dev: ::core::option::Option<u64>,
9245    #[prost(uint64, optional, tag="2")]
9246    pub sector: ::core::option::Option<u64>,
9247    #[prost(uint64, optional, tag="3")]
9248    pub size: ::core::option::Option<u64>,
9249}
9250#[derive(Clone, PartialEq, ::prost::Message)]
9251pub struct BlockGetrqFtraceEvent {
9252    #[prost(uint64, optional, tag="1")]
9253    pub dev: ::core::option::Option<u64>,
9254    #[prost(uint64, optional, tag="2")]
9255    pub sector: ::core::option::Option<u64>,
9256    #[prost(uint32, optional, tag="3")]
9257    pub nr_sector: ::core::option::Option<u32>,
9258    #[prost(string, optional, tag="4")]
9259    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9260    #[prost(string, optional, tag="5")]
9261    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9262}
9263#[derive(Clone, PartialEq, ::prost::Message)]
9264pub struct BlockPlugFtraceEvent {
9265    #[prost(string, optional, tag="1")]
9266    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9267}
9268#[derive(Clone, PartialEq, ::prost::Message)]
9269pub struct BlockRqAbortFtraceEvent {
9270    #[prost(uint64, optional, tag="1")]
9271    pub dev: ::core::option::Option<u64>,
9272    #[prost(uint64, optional, tag="2")]
9273    pub sector: ::core::option::Option<u64>,
9274    #[prost(uint32, optional, tag="3")]
9275    pub nr_sector: ::core::option::Option<u32>,
9276    #[prost(int32, optional, tag="4")]
9277    pub errors: ::core::option::Option<i32>,
9278    #[prost(string, optional, tag="5")]
9279    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9280    #[prost(string, optional, tag="6")]
9281    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9282}
9283#[derive(Clone, PartialEq, ::prost::Message)]
9284pub struct BlockRqCompleteFtraceEvent {
9285    #[prost(uint64, optional, tag="1")]
9286    pub dev: ::core::option::Option<u64>,
9287    #[prost(uint64, optional, tag="2")]
9288    pub sector: ::core::option::Option<u64>,
9289    #[prost(uint32, optional, tag="3")]
9290    pub nr_sector: ::core::option::Option<u32>,
9291    #[prost(int32, optional, tag="4")]
9292    pub errors: ::core::option::Option<i32>,
9293    #[prost(string, optional, tag="5")]
9294    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9295    #[prost(string, optional, tag="6")]
9296    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9297    #[prost(int32, optional, tag="7")]
9298    pub error: ::core::option::Option<i32>,
9299}
9300#[derive(Clone, PartialEq, ::prost::Message)]
9301pub struct BlockRqInsertFtraceEvent {
9302    #[prost(uint64, optional, tag="1")]
9303    pub dev: ::core::option::Option<u64>,
9304    #[prost(uint64, optional, tag="2")]
9305    pub sector: ::core::option::Option<u64>,
9306    #[prost(uint32, optional, tag="3")]
9307    pub nr_sector: ::core::option::Option<u32>,
9308    #[prost(uint32, optional, tag="4")]
9309    pub bytes: ::core::option::Option<u32>,
9310    #[prost(string, optional, tag="5")]
9311    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9312    #[prost(string, optional, tag="6")]
9313    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9314    #[prost(string, optional, tag="7")]
9315    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9316}
9317#[derive(Clone, PartialEq, ::prost::Message)]
9318pub struct BlockRqRemapFtraceEvent {
9319    #[prost(uint64, optional, tag="1")]
9320    pub dev: ::core::option::Option<u64>,
9321    #[prost(uint64, optional, tag="2")]
9322    pub sector: ::core::option::Option<u64>,
9323    #[prost(uint32, optional, tag="3")]
9324    pub nr_sector: ::core::option::Option<u32>,
9325    #[prost(uint64, optional, tag="4")]
9326    pub old_dev: ::core::option::Option<u64>,
9327    #[prost(uint64, optional, tag="5")]
9328    pub old_sector: ::core::option::Option<u64>,
9329    #[prost(uint32, optional, tag="6")]
9330    pub nr_bios: ::core::option::Option<u32>,
9331    #[prost(string, optional, tag="7")]
9332    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9333}
9334#[derive(Clone, PartialEq, ::prost::Message)]
9335pub struct BlockRqRequeueFtraceEvent {
9336    #[prost(uint64, optional, tag="1")]
9337    pub dev: ::core::option::Option<u64>,
9338    #[prost(uint64, optional, tag="2")]
9339    pub sector: ::core::option::Option<u64>,
9340    #[prost(uint32, optional, tag="3")]
9341    pub nr_sector: ::core::option::Option<u32>,
9342    #[prost(int32, optional, tag="4")]
9343    pub errors: ::core::option::Option<i32>,
9344    #[prost(string, optional, tag="5")]
9345    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9346    #[prost(string, optional, tag="6")]
9347    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9348}
9349#[derive(Clone, PartialEq, ::prost::Message)]
9350pub struct BlockSleeprqFtraceEvent {
9351    #[prost(uint64, optional, tag="1")]
9352    pub dev: ::core::option::Option<u64>,
9353    #[prost(uint64, optional, tag="2")]
9354    pub sector: ::core::option::Option<u64>,
9355    #[prost(uint32, optional, tag="3")]
9356    pub nr_sector: ::core::option::Option<u32>,
9357    #[prost(string, optional, tag="4")]
9358    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9359    #[prost(string, optional, tag="5")]
9360    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9361}
9362#[derive(Clone, PartialEq, ::prost::Message)]
9363pub struct BlockSplitFtraceEvent {
9364    #[prost(uint64, optional, tag="1")]
9365    pub dev: ::core::option::Option<u64>,
9366    #[prost(uint64, optional, tag="2")]
9367    pub sector: ::core::option::Option<u64>,
9368    #[prost(uint64, optional, tag="3")]
9369    pub new_sector: ::core::option::Option<u64>,
9370    #[prost(string, optional, tag="4")]
9371    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9372    #[prost(string, optional, tag="5")]
9373    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9374}
9375#[derive(Clone, PartialEq, ::prost::Message)]
9376pub struct BlockTouchBufferFtraceEvent {
9377    #[prost(uint64, optional, tag="1")]
9378    pub dev: ::core::option::Option<u64>,
9379    #[prost(uint64, optional, tag="2")]
9380    pub sector: ::core::option::Option<u64>,
9381    #[prost(uint64, optional, tag="3")]
9382    pub size: ::core::option::Option<u64>,
9383}
9384#[derive(Clone, PartialEq, ::prost::Message)]
9385pub struct BlockUnplugFtraceEvent {
9386    #[prost(int32, optional, tag="1")]
9387    pub nr_rq: ::core::option::Option<i32>,
9388    #[prost(string, optional, tag="2")]
9389    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9390}
9391#[derive(Clone, PartialEq, ::prost::Message)]
9392pub struct BlockIoStartFtraceEvent {
9393    #[prost(uint64, optional, tag="1")]
9394    pub dev: ::core::option::Option<u64>,
9395    #[prost(uint64, optional, tag="2")]
9396    pub sector: ::core::option::Option<u64>,
9397    #[prost(uint32, optional, tag="3")]
9398    pub nr_sector: ::core::option::Option<u32>,
9399    #[prost(uint32, optional, tag="4")]
9400    pub bytes: ::core::option::Option<u32>,
9401    #[prost(uint32, optional, tag="5")]
9402    pub ioprio: ::core::option::Option<u32>,
9403    #[prost(string, optional, tag="6")]
9404    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9405    #[prost(string, optional, tag="7")]
9406    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9407    #[prost(string, optional, tag="8")]
9408    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9409}
9410#[derive(Clone, PartialEq, ::prost::Message)]
9411pub struct BlockIoDoneFtraceEvent {
9412    #[prost(uint64, optional, tag="1")]
9413    pub dev: ::core::option::Option<u64>,
9414    #[prost(uint64, optional, tag="2")]
9415    pub sector: ::core::option::Option<u64>,
9416    #[prost(uint32, optional, tag="3")]
9417    pub nr_sector: ::core::option::Option<u32>,
9418    #[prost(uint32, optional, tag="4")]
9419    pub bytes: ::core::option::Option<u32>,
9420    #[prost(uint32, optional, tag="5")]
9421    pub ioprio: ::core::option::Option<u32>,
9422    #[prost(string, optional, tag="6")]
9423    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9424    #[prost(string, optional, tag="7")]
9425    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9426    #[prost(string, optional, tag="8")]
9427    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9428}
9429// End of protos/perfetto/trace/ftrace/block.proto
9430
9431// Begin of protos/perfetto/trace/ftrace/cgroup.proto
9432
9433#[derive(Clone, PartialEq, ::prost::Message)]
9434pub struct CgroupAttachTaskFtraceEvent {
9435    #[prost(int32, optional, tag="1")]
9436    pub dst_root: ::core::option::Option<i32>,
9437    #[prost(int32, optional, tag="2")]
9438    pub dst_id: ::core::option::Option<i32>,
9439    #[prost(int32, optional, tag="3")]
9440    pub pid: ::core::option::Option<i32>,
9441    #[prost(string, optional, tag="4")]
9442    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9443    #[prost(string, optional, tag="5")]
9444    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9445    #[prost(int32, optional, tag="6")]
9446    pub dst_level: ::core::option::Option<i32>,
9447    #[prost(string, optional, tag="7")]
9448    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
9449}
9450#[derive(Clone, PartialEq, ::prost::Message)]
9451pub struct CgroupMkdirFtraceEvent {
9452    #[prost(int32, optional, tag="1")]
9453    pub root: ::core::option::Option<i32>,
9454    #[prost(int32, optional, tag="2")]
9455    pub id: ::core::option::Option<i32>,
9456    #[prost(string, optional, tag="3")]
9457    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9458    #[prost(int32, optional, tag="4")]
9459    pub level: ::core::option::Option<i32>,
9460    #[prost(string, optional, tag="5")]
9461    pub path: ::core::option::Option<::prost::alloc::string::String>,
9462}
9463#[derive(Clone, PartialEq, ::prost::Message)]
9464pub struct CgroupRemountFtraceEvent {
9465    #[prost(int32, optional, tag="1")]
9466    pub root: ::core::option::Option<i32>,
9467    #[prost(uint32, optional, tag="2")]
9468    pub ss_mask: ::core::option::Option<u32>,
9469    #[prost(string, optional, tag="3")]
9470    pub name: ::core::option::Option<::prost::alloc::string::String>,
9471}
9472#[derive(Clone, PartialEq, ::prost::Message)]
9473pub struct CgroupRmdirFtraceEvent {
9474    #[prost(int32, optional, tag="1")]
9475    pub root: ::core::option::Option<i32>,
9476    #[prost(int32, optional, tag="2")]
9477    pub id: ::core::option::Option<i32>,
9478    #[prost(string, optional, tag="3")]
9479    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9480    #[prost(int32, optional, tag="4")]
9481    pub level: ::core::option::Option<i32>,
9482    #[prost(string, optional, tag="5")]
9483    pub path: ::core::option::Option<::prost::alloc::string::String>,
9484}
9485#[derive(Clone, PartialEq, ::prost::Message)]
9486pub struct CgroupTransferTasksFtraceEvent {
9487    #[prost(int32, optional, tag="1")]
9488    pub dst_root: ::core::option::Option<i32>,
9489    #[prost(int32, optional, tag="2")]
9490    pub dst_id: ::core::option::Option<i32>,
9491    #[prost(int32, optional, tag="3")]
9492    pub pid: ::core::option::Option<i32>,
9493    #[prost(string, optional, tag="4")]
9494    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9495    #[prost(string, optional, tag="5")]
9496    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9497    #[prost(int32, optional, tag="6")]
9498    pub dst_level: ::core::option::Option<i32>,
9499    #[prost(string, optional, tag="7")]
9500    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
9501}
9502#[derive(Clone, PartialEq, ::prost::Message)]
9503pub struct CgroupDestroyRootFtraceEvent {
9504    #[prost(int32, optional, tag="1")]
9505    pub root: ::core::option::Option<i32>,
9506    #[prost(uint32, optional, tag="2")]
9507    pub ss_mask: ::core::option::Option<u32>,
9508    #[prost(string, optional, tag="3")]
9509    pub name: ::core::option::Option<::prost::alloc::string::String>,
9510}
9511#[derive(Clone, PartialEq, ::prost::Message)]
9512pub struct CgroupReleaseFtraceEvent {
9513    #[prost(int32, optional, tag="1")]
9514    pub root: ::core::option::Option<i32>,
9515    #[prost(int32, optional, tag="2")]
9516    pub id: ::core::option::Option<i32>,
9517    #[prost(string, optional, tag="3")]
9518    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9519    #[prost(int32, optional, tag="4")]
9520    pub level: ::core::option::Option<i32>,
9521    #[prost(string, optional, tag="5")]
9522    pub path: ::core::option::Option<::prost::alloc::string::String>,
9523}
9524#[derive(Clone, PartialEq, ::prost::Message)]
9525pub struct CgroupRenameFtraceEvent {
9526    #[prost(int32, optional, tag="1")]
9527    pub root: ::core::option::Option<i32>,
9528    #[prost(int32, optional, tag="2")]
9529    pub id: ::core::option::Option<i32>,
9530    #[prost(string, optional, tag="3")]
9531    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9532    #[prost(int32, optional, tag="4")]
9533    pub level: ::core::option::Option<i32>,
9534    #[prost(string, optional, tag="5")]
9535    pub path: ::core::option::Option<::prost::alloc::string::String>,
9536}
9537#[derive(Clone, PartialEq, ::prost::Message)]
9538pub struct CgroupSetupRootFtraceEvent {
9539    #[prost(int32, optional, tag="1")]
9540    pub root: ::core::option::Option<i32>,
9541    #[prost(uint32, optional, tag="2")]
9542    pub ss_mask: ::core::option::Option<u32>,
9543    #[prost(string, optional, tag="3")]
9544    pub name: ::core::option::Option<::prost::alloc::string::String>,
9545}
9546// End of protos/perfetto/trace/ftrace/cgroup.proto
9547
9548// Begin of protos/perfetto/trace/ftrace/clk.proto
9549
9550#[derive(Clone, PartialEq, ::prost::Message)]
9551pub struct ClkEnableFtraceEvent {
9552    #[prost(string, optional, tag="1")]
9553    pub name: ::core::option::Option<::prost::alloc::string::String>,
9554}
9555#[derive(Clone, PartialEq, ::prost::Message)]
9556pub struct ClkDisableFtraceEvent {
9557    #[prost(string, optional, tag="1")]
9558    pub name: ::core::option::Option<::prost::alloc::string::String>,
9559}
9560#[derive(Clone, PartialEq, ::prost::Message)]
9561pub struct ClkSetRateFtraceEvent {
9562    #[prost(string, optional, tag="1")]
9563    pub name: ::core::option::Option<::prost::alloc::string::String>,
9564    #[prost(uint64, optional, tag="2")]
9565    pub rate: ::core::option::Option<u64>,
9566}
9567// End of protos/perfetto/trace/ftrace/clk.proto
9568
9569// Begin of protos/perfetto/trace/ftrace/cma.proto
9570
9571#[derive(Clone, PartialEq, ::prost::Message)]
9572pub struct CmaAllocStartFtraceEvent {
9573    #[prost(uint32, optional, tag="1")]
9574    pub align: ::core::option::Option<u32>,
9575    #[prost(uint32, optional, tag="2")]
9576    pub count: ::core::option::Option<u32>,
9577    #[prost(string, optional, tag="3")]
9578    pub name: ::core::option::Option<::prost::alloc::string::String>,
9579}
9580#[derive(Clone, PartialEq, ::prost::Message)]
9581pub struct CmaAllocInfoFtraceEvent {
9582    #[prost(uint32, optional, tag="1")]
9583    pub align: ::core::option::Option<u32>,
9584    #[prost(uint32, optional, tag="2")]
9585    pub count: ::core::option::Option<u32>,
9586    #[prost(uint32, optional, tag="3")]
9587    pub err_iso: ::core::option::Option<u32>,
9588    #[prost(uint32, optional, tag="4")]
9589    pub err_mig: ::core::option::Option<u32>,
9590    #[prost(uint32, optional, tag="5")]
9591    pub err_test: ::core::option::Option<u32>,
9592    #[prost(string, optional, tag="6")]
9593    pub name: ::core::option::Option<::prost::alloc::string::String>,
9594    #[prost(uint64, optional, tag="7")]
9595    pub nr_mapped: ::core::option::Option<u64>,
9596    #[prost(uint64, optional, tag="8")]
9597    pub nr_migrated: ::core::option::Option<u64>,
9598    #[prost(uint64, optional, tag="9")]
9599    pub nr_reclaimed: ::core::option::Option<u64>,
9600    #[prost(uint64, optional, tag="10")]
9601    pub pfn: ::core::option::Option<u64>,
9602}
9603#[derive(Clone, PartialEq, ::prost::Message)]
9604pub struct CmaAllocFinishFtraceEvent {
9605    #[prost(string, optional, tag="1")]
9606    pub name: ::core::option::Option<::prost::alloc::string::String>,
9607    #[prost(uint64, optional, tag="2")]
9608    pub pfn: ::core::option::Option<u64>,
9609    #[prost(uint64, optional, tag="3")]
9610    pub page: ::core::option::Option<u64>,
9611    #[prost(uint64, optional, tag="4")]
9612    pub count: ::core::option::Option<u64>,
9613    #[prost(uint32, optional, tag="5")]
9614    pub align: ::core::option::Option<u32>,
9615    #[prost(int32, optional, tag="6")]
9616    pub errorno: ::core::option::Option<i32>,
9617}
9618// End of protos/perfetto/trace/ftrace/cma.proto
9619
9620// Begin of protos/perfetto/trace/ftrace/compaction.proto
9621
9622#[derive(Clone, PartialEq, ::prost::Message)]
9623pub struct MmCompactionBeginFtraceEvent {
9624    #[prost(uint64, optional, tag="1")]
9625    pub zone_start: ::core::option::Option<u64>,
9626    #[prost(uint64, optional, tag="2")]
9627    pub migrate_pfn: ::core::option::Option<u64>,
9628    #[prost(uint64, optional, tag="3")]
9629    pub free_pfn: ::core::option::Option<u64>,
9630    #[prost(uint64, optional, tag="4")]
9631    pub zone_end: ::core::option::Option<u64>,
9632    #[prost(uint32, optional, tag="5")]
9633    pub sync: ::core::option::Option<u32>,
9634}
9635#[derive(Clone, PartialEq, ::prost::Message)]
9636pub struct MmCompactionDeferCompactionFtraceEvent {
9637    #[prost(int32, optional, tag="1")]
9638    pub nid: ::core::option::Option<i32>,
9639    #[prost(uint32, optional, tag="2")]
9640    pub idx: ::core::option::Option<u32>,
9641    #[prost(int32, optional, tag="3")]
9642    pub order: ::core::option::Option<i32>,
9643    #[prost(uint32, optional, tag="4")]
9644    pub considered: ::core::option::Option<u32>,
9645    #[prost(uint32, optional, tag="5")]
9646    pub defer_shift: ::core::option::Option<u32>,
9647    #[prost(int32, optional, tag="6")]
9648    pub order_failed: ::core::option::Option<i32>,
9649}
9650#[derive(Clone, PartialEq, ::prost::Message)]
9651pub struct MmCompactionDeferredFtraceEvent {
9652    #[prost(int32, optional, tag="1")]
9653    pub nid: ::core::option::Option<i32>,
9654    #[prost(uint32, optional, tag="2")]
9655    pub idx: ::core::option::Option<u32>,
9656    #[prost(int32, optional, tag="3")]
9657    pub order: ::core::option::Option<i32>,
9658    #[prost(uint32, optional, tag="4")]
9659    pub considered: ::core::option::Option<u32>,
9660    #[prost(uint32, optional, tag="5")]
9661    pub defer_shift: ::core::option::Option<u32>,
9662    #[prost(int32, optional, tag="6")]
9663    pub order_failed: ::core::option::Option<i32>,
9664}
9665#[derive(Clone, PartialEq, ::prost::Message)]
9666pub struct MmCompactionDeferResetFtraceEvent {
9667    #[prost(int32, optional, tag="1")]
9668    pub nid: ::core::option::Option<i32>,
9669    #[prost(uint32, optional, tag="2")]
9670    pub idx: ::core::option::Option<u32>,
9671    #[prost(int32, optional, tag="3")]
9672    pub order: ::core::option::Option<i32>,
9673    #[prost(uint32, optional, tag="4")]
9674    pub considered: ::core::option::Option<u32>,
9675    #[prost(uint32, optional, tag="5")]
9676    pub defer_shift: ::core::option::Option<u32>,
9677    #[prost(int32, optional, tag="6")]
9678    pub order_failed: ::core::option::Option<i32>,
9679}
9680#[derive(Clone, PartialEq, ::prost::Message)]
9681pub struct MmCompactionEndFtraceEvent {
9682    #[prost(uint64, optional, tag="1")]
9683    pub zone_start: ::core::option::Option<u64>,
9684    #[prost(uint64, optional, tag="2")]
9685    pub migrate_pfn: ::core::option::Option<u64>,
9686    #[prost(uint64, optional, tag="3")]
9687    pub free_pfn: ::core::option::Option<u64>,
9688    #[prost(uint64, optional, tag="4")]
9689    pub zone_end: ::core::option::Option<u64>,
9690    #[prost(uint32, optional, tag="5")]
9691    pub sync: ::core::option::Option<u32>,
9692    #[prost(int32, optional, tag="6")]
9693    pub status: ::core::option::Option<i32>,
9694}
9695#[derive(Clone, PartialEq, ::prost::Message)]
9696pub struct MmCompactionFinishedFtraceEvent {
9697    #[prost(int32, optional, tag="1")]
9698    pub nid: ::core::option::Option<i32>,
9699    #[prost(uint32, optional, tag="2")]
9700    pub idx: ::core::option::Option<u32>,
9701    #[prost(int32, optional, tag="3")]
9702    pub order: ::core::option::Option<i32>,
9703    #[prost(int32, optional, tag="4")]
9704    pub ret: ::core::option::Option<i32>,
9705}
9706#[derive(Clone, PartialEq, ::prost::Message)]
9707pub struct MmCompactionIsolateFreepagesFtraceEvent {
9708    #[prost(uint64, optional, tag="1")]
9709    pub start_pfn: ::core::option::Option<u64>,
9710    #[prost(uint64, optional, tag="2")]
9711    pub end_pfn: ::core::option::Option<u64>,
9712    #[prost(uint64, optional, tag="3")]
9713    pub nr_scanned: ::core::option::Option<u64>,
9714    #[prost(uint64, optional, tag="4")]
9715    pub nr_taken: ::core::option::Option<u64>,
9716}
9717#[derive(Clone, PartialEq, ::prost::Message)]
9718pub struct MmCompactionIsolateMigratepagesFtraceEvent {
9719    #[prost(uint64, optional, tag="1")]
9720    pub start_pfn: ::core::option::Option<u64>,
9721    #[prost(uint64, optional, tag="2")]
9722    pub end_pfn: ::core::option::Option<u64>,
9723    #[prost(uint64, optional, tag="3")]
9724    pub nr_scanned: ::core::option::Option<u64>,
9725    #[prost(uint64, optional, tag="4")]
9726    pub nr_taken: ::core::option::Option<u64>,
9727}
9728#[derive(Clone, PartialEq, ::prost::Message)]
9729pub struct MmCompactionKcompactdSleepFtraceEvent {
9730    #[prost(int32, optional, tag="1")]
9731    pub nid: ::core::option::Option<i32>,
9732}
9733#[derive(Clone, PartialEq, ::prost::Message)]
9734pub struct MmCompactionKcompactdWakeFtraceEvent {
9735    #[prost(int32, optional, tag="1")]
9736    pub nid: ::core::option::Option<i32>,
9737    #[prost(int32, optional, tag="2")]
9738    pub order: ::core::option::Option<i32>,
9739    #[prost(uint32, optional, tag="3")]
9740    pub classzone_idx: ::core::option::Option<u32>,
9741    #[prost(uint32, optional, tag="4")]
9742    pub highest_zoneidx: ::core::option::Option<u32>,
9743}
9744#[derive(Clone, PartialEq, ::prost::Message)]
9745pub struct MmCompactionMigratepagesFtraceEvent {
9746    #[prost(uint64, optional, tag="1")]
9747    pub nr_migrated: ::core::option::Option<u64>,
9748    #[prost(uint64, optional, tag="2")]
9749    pub nr_failed: ::core::option::Option<u64>,
9750}
9751#[derive(Clone, PartialEq, ::prost::Message)]
9752pub struct MmCompactionSuitableFtraceEvent {
9753    #[prost(int32, optional, tag="1")]
9754    pub nid: ::core::option::Option<i32>,
9755    #[prost(uint32, optional, tag="2")]
9756    pub idx: ::core::option::Option<u32>,
9757    #[prost(int32, optional, tag="3")]
9758    pub order: ::core::option::Option<i32>,
9759    #[prost(int32, optional, tag="4")]
9760    pub ret: ::core::option::Option<i32>,
9761}
9762#[derive(Clone, PartialEq, ::prost::Message)]
9763pub struct MmCompactionTryToCompactPagesFtraceEvent {
9764    #[prost(int32, optional, tag="1")]
9765    pub order: ::core::option::Option<i32>,
9766    #[prost(uint32, optional, tag="2")]
9767    pub gfp_mask: ::core::option::Option<u32>,
9768    #[prost(uint32, optional, tag="3")]
9769    pub mode: ::core::option::Option<u32>,
9770    #[prost(int32, optional, tag="4")]
9771    pub prio: ::core::option::Option<i32>,
9772}
9773#[derive(Clone, PartialEq, ::prost::Message)]
9774pub struct MmCompactionWakeupKcompactdFtraceEvent {
9775    #[prost(int32, optional, tag="1")]
9776    pub nid: ::core::option::Option<i32>,
9777    #[prost(int32, optional, tag="2")]
9778    pub order: ::core::option::Option<i32>,
9779    #[prost(uint32, optional, tag="3")]
9780    pub classzone_idx: ::core::option::Option<u32>,
9781    #[prost(uint32, optional, tag="4")]
9782    pub highest_zoneidx: ::core::option::Option<u32>,
9783}
9784// End of protos/perfetto/trace/ftrace/compaction.proto
9785
9786// Begin of protos/perfetto/trace/ftrace/cpm_trace.proto
9787
9788#[derive(Clone, PartialEq, ::prost::Message)]
9789pub struct ParamSetValueCpmFtraceEvent {
9790    #[prost(string, optional, tag="1")]
9791    pub body: ::core::option::Option<::prost::alloc::string::String>,
9792    #[prost(uint32, optional, tag="2")]
9793    pub value: ::core::option::Option<u32>,
9794    #[prost(int64, optional, tag="3")]
9795    pub timestamp: ::core::option::Option<i64>,
9796}
9797// End of protos/perfetto/trace/ftrace/cpm_trace.proto
9798
9799// Begin of protos/perfetto/trace/ftrace/cpuhp.proto
9800
9801#[derive(Clone, PartialEq, ::prost::Message)]
9802pub struct CpuhpExitFtraceEvent {
9803    #[prost(uint32, optional, tag="1")]
9804    pub cpu: ::core::option::Option<u32>,
9805    #[prost(int32, optional, tag="2")]
9806    pub idx: ::core::option::Option<i32>,
9807    #[prost(int32, optional, tag="3")]
9808    pub ret: ::core::option::Option<i32>,
9809    #[prost(int32, optional, tag="4")]
9810    pub state: ::core::option::Option<i32>,
9811}
9812#[derive(Clone, PartialEq, ::prost::Message)]
9813pub struct CpuhpMultiEnterFtraceEvent {
9814    #[prost(uint32, optional, tag="1")]
9815    pub cpu: ::core::option::Option<u32>,
9816    #[prost(uint64, optional, tag="2")]
9817    pub fun: ::core::option::Option<u64>,
9818    #[prost(int32, optional, tag="3")]
9819    pub idx: ::core::option::Option<i32>,
9820    #[prost(int32, optional, tag="4")]
9821    pub target: ::core::option::Option<i32>,
9822}
9823#[derive(Clone, PartialEq, ::prost::Message)]
9824pub struct CpuhpEnterFtraceEvent {
9825    #[prost(uint32, optional, tag="1")]
9826    pub cpu: ::core::option::Option<u32>,
9827    #[prost(uint64, optional, tag="2")]
9828    pub fun: ::core::option::Option<u64>,
9829    #[prost(int32, optional, tag="3")]
9830    pub idx: ::core::option::Option<i32>,
9831    #[prost(int32, optional, tag="4")]
9832    pub target: ::core::option::Option<i32>,
9833}
9834#[derive(Clone, PartialEq, ::prost::Message)]
9835pub struct CpuhpLatencyFtraceEvent {
9836    #[prost(uint32, optional, tag="1")]
9837    pub cpu: ::core::option::Option<u32>,
9838    #[prost(int32, optional, tag="2")]
9839    pub ret: ::core::option::Option<i32>,
9840    #[prost(uint32, optional, tag="3")]
9841    pub state: ::core::option::Option<u32>,
9842    #[prost(uint64, optional, tag="4")]
9843    pub time: ::core::option::Option<u64>,
9844}
9845#[derive(Clone, PartialEq, ::prost::Message)]
9846pub struct CpuhpPauseFtraceEvent {
9847    #[prost(uint32, optional, tag="1")]
9848    pub active_cpus: ::core::option::Option<u32>,
9849    #[prost(uint32, optional, tag="2")]
9850    pub cpus: ::core::option::Option<u32>,
9851    #[prost(uint32, optional, tag="3")]
9852    pub pause: ::core::option::Option<u32>,
9853    #[prost(uint32, optional, tag="4")]
9854    pub time: ::core::option::Option<u32>,
9855}
9856// End of protos/perfetto/trace/ftrace/cpuhp.proto
9857
9858// Begin of protos/perfetto/trace/ftrace/cros_ec.proto
9859
9860#[derive(Clone, PartialEq, ::prost::Message)]
9861pub struct CrosEcSensorhubDataFtraceEvent {
9862    #[prost(int64, optional, tag="1")]
9863    pub current_time: ::core::option::Option<i64>,
9864    #[prost(int64, optional, tag="2")]
9865    pub current_timestamp: ::core::option::Option<i64>,
9866    #[prost(int64, optional, tag="3")]
9867    pub delta: ::core::option::Option<i64>,
9868    #[prost(uint32, optional, tag="4")]
9869    pub ec_fifo_timestamp: ::core::option::Option<u32>,
9870    #[prost(uint32, optional, tag="5")]
9871    pub ec_sensor_num: ::core::option::Option<u32>,
9872    #[prost(int64, optional, tag="6")]
9873    pub fifo_timestamp: ::core::option::Option<i64>,
9874}
9875// End of protos/perfetto/trace/ftrace/cros_ec.proto
9876
9877// Begin of protos/perfetto/trace/ftrace/dcvsh.proto
9878
9879#[derive(Clone, PartialEq, ::prost::Message)]
9880pub struct DcvshFreqFtraceEvent {
9881    #[prost(uint64, optional, tag="1")]
9882    pub cpu: ::core::option::Option<u64>,
9883    #[prost(uint64, optional, tag="2")]
9884    pub freq: ::core::option::Option<u64>,
9885}
9886// End of protos/perfetto/trace/ftrace/dcvsh.proto
9887
9888// Begin of protos/perfetto/trace/ftrace/devfreq.proto
9889
9890#[derive(Clone, PartialEq, ::prost::Message)]
9891pub struct DevfreqFrequencyFtraceEvent {
9892    #[prost(string, optional, tag="1")]
9893    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
9894    #[prost(uint64, optional, tag="2")]
9895    pub freq: ::core::option::Option<u64>,
9896    #[prost(uint64, optional, tag="3")]
9897    pub prev_freq: ::core::option::Option<u64>,
9898    #[prost(uint64, optional, tag="4")]
9899    pub busy_time: ::core::option::Option<u64>,
9900    #[prost(uint64, optional, tag="5")]
9901    pub total_time: ::core::option::Option<u64>,
9902}
9903// End of protos/perfetto/trace/ftrace/devfreq.proto
9904
9905// Begin of protos/perfetto/trace/ftrace/dma_fence.proto
9906
9907#[derive(Clone, PartialEq, ::prost::Message)]
9908pub struct DmaFenceInitFtraceEvent {
9909    #[prost(uint32, optional, tag="1")]
9910    pub context: ::core::option::Option<u32>,
9911    #[prost(string, optional, tag="2")]
9912    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9913    #[prost(uint32, optional, tag="3")]
9914    pub seqno: ::core::option::Option<u32>,
9915    #[prost(string, optional, tag="4")]
9916    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9917}
9918#[derive(Clone, PartialEq, ::prost::Message)]
9919pub struct DmaFenceEmitFtraceEvent {
9920    #[prost(uint32, optional, tag="1")]
9921    pub context: ::core::option::Option<u32>,
9922    #[prost(string, optional, tag="2")]
9923    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9924    #[prost(uint32, optional, tag="3")]
9925    pub seqno: ::core::option::Option<u32>,
9926    #[prost(string, optional, tag="4")]
9927    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9928}
9929#[derive(Clone, PartialEq, ::prost::Message)]
9930pub struct DmaFenceSignaledFtraceEvent {
9931    #[prost(uint32, optional, tag="1")]
9932    pub context: ::core::option::Option<u32>,
9933    #[prost(string, optional, tag="2")]
9934    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9935    #[prost(uint32, optional, tag="3")]
9936    pub seqno: ::core::option::Option<u32>,
9937    #[prost(string, optional, tag="4")]
9938    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9939}
9940#[derive(Clone, PartialEq, ::prost::Message)]
9941pub struct DmaFenceWaitStartFtraceEvent {
9942    #[prost(uint32, optional, tag="1")]
9943    pub context: ::core::option::Option<u32>,
9944    #[prost(string, optional, tag="2")]
9945    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9946    #[prost(uint32, optional, tag="3")]
9947    pub seqno: ::core::option::Option<u32>,
9948    #[prost(string, optional, tag="4")]
9949    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9950}
9951#[derive(Clone, PartialEq, ::prost::Message)]
9952pub struct DmaFenceWaitEndFtraceEvent {
9953    #[prost(uint32, optional, tag="1")]
9954    pub context: ::core::option::Option<u32>,
9955    #[prost(string, optional, tag="2")]
9956    pub driver: ::core::option::Option<::prost::alloc::string::String>,
9957    #[prost(uint32, optional, tag="3")]
9958    pub seqno: ::core::option::Option<u32>,
9959    #[prost(string, optional, tag="4")]
9960    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
9961}
9962// End of protos/perfetto/trace/ftrace/dma_fence.proto
9963
9964// Begin of protos/perfetto/trace/ftrace/dmabuf_heap.proto
9965
9966#[derive(Clone, PartialEq, ::prost::Message)]
9967pub struct DmaHeapStatFtraceEvent {
9968    #[prost(uint64, optional, tag="1")]
9969    pub inode: ::core::option::Option<u64>,
9970    #[prost(int64, optional, tag="2")]
9971    pub len: ::core::option::Option<i64>,
9972    #[prost(uint64, optional, tag="3")]
9973    pub total_allocated: ::core::option::Option<u64>,
9974}
9975// End of protos/perfetto/trace/ftrace/dmabuf_heap.proto
9976
9977// Begin of protos/perfetto/trace/ftrace/dpu.proto
9978
9979#[derive(Clone, PartialEq, ::prost::Message)]
9980pub struct DpuTracingMarkWriteFtraceEvent {
9981    #[prost(int32, optional, tag="1")]
9982    pub pid: ::core::option::Option<i32>,
9983    #[prost(string, optional, tag="2")]
9984    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
9985    #[prost(uint32, optional, tag="3")]
9986    pub trace_begin: ::core::option::Option<u32>,
9987    #[prost(string, optional, tag="4")]
9988    pub name: ::core::option::Option<::prost::alloc::string::String>,
9989    #[prost(uint32, optional, tag="5")]
9990    pub r#type: ::core::option::Option<u32>,
9991    #[prost(int32, optional, tag="6")]
9992    pub value: ::core::option::Option<i32>,
9993}
9994#[derive(Clone, PartialEq, ::prost::Message)]
9995pub struct DpuDsiCmdFifoStatusFtraceEvent {
9996    #[prost(uint32, optional, tag="1")]
9997    pub header: ::core::option::Option<u32>,
9998    #[prost(uint32, optional, tag="2")]
9999    pub payload: ::core::option::Option<u32>,
10000}
10001#[derive(Clone, PartialEq, ::prost::Message)]
10002pub struct DpuDsiRxFtraceEvent {
10003    #[prost(uint32, optional, tag="1")]
10004    pub cmd: ::core::option::Option<u32>,
10005    #[prost(uint32, optional, tag="2")]
10006    pub rx_buf: ::core::option::Option<u32>,
10007}
10008#[derive(Clone, PartialEq, ::prost::Message)]
10009pub struct DpuDsiTxFtraceEvent {
10010    #[prost(uint32, optional, tag="1")]
10011    pub r#type: ::core::option::Option<u32>,
10012    #[prost(uint32, optional, tag="2")]
10013    pub tx_buf: ::core::option::Option<u32>,
10014    #[prost(uint32, optional, tag="3")]
10015    pub last: ::core::option::Option<u32>,
10016    #[prost(uint32, optional, tag="4")]
10017    pub delay_ms: ::core::option::Option<u32>,
10018}
10019#[derive(Clone, PartialEq, ::prost::Message)]
10020pub struct DpuDispDpuUnderrunFtraceEvent {
10021    #[prost(int32, optional, tag="1")]
10022    pub id: ::core::option::Option<i32>,
10023    #[prost(int32, optional, tag="2")]
10024    pub frames_pending: ::core::option::Option<i32>,
10025    #[prost(int32, optional, tag="3")]
10026    pub vsync_count: ::core::option::Option<i32>,
10027}
10028#[derive(Clone, PartialEq, ::prost::Message)]
10029pub struct DpuDispVblankIrqEnableFtraceEvent {
10030    #[prost(int32, optional, tag="1")]
10031    pub id: ::core::option::Option<i32>,
10032    #[prost(int32, optional, tag="2")]
10033    pub output_id: ::core::option::Option<i32>,
10034    #[prost(int32, optional, tag="3")]
10035    pub enable: ::core::option::Option<i32>,
10036}
10037// End of protos/perfetto/trace/ftrace/dpu.proto
10038
10039// Begin of protos/perfetto/trace/ftrace/drm.proto
10040
10041#[derive(Clone, PartialEq, ::prost::Message)]
10042pub struct DrmVblankEventFtraceEvent {
10043    #[prost(int32, optional, tag="1")]
10044    pub crtc: ::core::option::Option<i32>,
10045    #[prost(uint32, optional, tag="2")]
10046    pub high_prec: ::core::option::Option<u32>,
10047    #[prost(uint32, optional, tag="3")]
10048    pub seq: ::core::option::Option<u32>,
10049    #[prost(int64, optional, tag="4")]
10050    pub time: ::core::option::Option<i64>,
10051}
10052#[derive(Clone, PartialEq, ::prost::Message)]
10053pub struct DrmVblankEventDeliveredFtraceEvent {
10054    #[prost(int32, optional, tag="1")]
10055    pub crtc: ::core::option::Option<i32>,
10056    #[prost(uint64, optional, tag="2")]
10057    pub file: ::core::option::Option<u64>,
10058    #[prost(uint32, optional, tag="3")]
10059    pub seq: ::core::option::Option<u32>,
10060}
10061// End of protos/perfetto/trace/ftrace/drm.proto
10062
10063// Begin of protos/perfetto/trace/ftrace/dwc3.proto
10064
10065#[derive(Clone, PartialEq, ::prost::Message)]
10066pub struct Dwc3AllocRequestFtraceEvent {
10067    #[prost(string, optional, tag="1")]
10068    pub name: ::core::option::Option<::prost::alloc::string::String>,
10069    #[prost(uint64, optional, tag="2")]
10070    pub req: ::core::option::Option<u64>,
10071    #[prost(uint32, optional, tag="3")]
10072    pub actual: ::core::option::Option<u32>,
10073    #[prost(uint32, optional, tag="4")]
10074    pub length: ::core::option::Option<u32>,
10075    #[prost(int32, optional, tag="5")]
10076    pub status: ::core::option::Option<i32>,
10077    #[prost(int32, optional, tag="6")]
10078    pub zero: ::core::option::Option<i32>,
10079    #[prost(int32, optional, tag="7")]
10080    pub short_not_ok: ::core::option::Option<i32>,
10081    #[prost(int32, optional, tag="8")]
10082    pub no_interrupt: ::core::option::Option<i32>,
10083}
10084#[derive(Clone, PartialEq, ::prost::Message)]
10085pub struct Dwc3CompleteTrbFtraceEvent {
10086    #[prost(string, optional, tag="1")]
10087    pub name: ::core::option::Option<::prost::alloc::string::String>,
10088    #[prost(uint64, optional, tag="2")]
10089    pub trb: ::core::option::Option<u64>,
10090    #[prost(uint32, optional, tag="3")]
10091    pub allocated: ::core::option::Option<u32>,
10092    #[prost(uint32, optional, tag="4")]
10093    pub queued: ::core::option::Option<u32>,
10094    #[prost(uint32, optional, tag="5")]
10095    pub bpl: ::core::option::Option<u32>,
10096    #[prost(uint32, optional, tag="6")]
10097    pub bph: ::core::option::Option<u32>,
10098    #[prost(uint32, optional, tag="7")]
10099    pub size: ::core::option::Option<u32>,
10100    #[prost(uint32, optional, tag="8")]
10101    pub ctrl: ::core::option::Option<u32>,
10102    #[prost(uint32, optional, tag="9")]
10103    pub r#type: ::core::option::Option<u32>,
10104    #[prost(uint32, optional, tag="10")]
10105    pub enqueue: ::core::option::Option<u32>,
10106    #[prost(uint32, optional, tag="11")]
10107    pub dequeue: ::core::option::Option<u32>,
10108}
10109#[derive(Clone, PartialEq, ::prost::Message)]
10110pub struct Dwc3CtrlReqFtraceEvent {
10111    #[prost(uint32, optional, tag="1")]
10112    pub b_request_type: ::core::option::Option<u32>,
10113    #[prost(uint32, optional, tag="2")]
10114    pub b_request: ::core::option::Option<u32>,
10115    #[prost(uint32, optional, tag="3")]
10116    pub w_value: ::core::option::Option<u32>,
10117    #[prost(uint32, optional, tag="4")]
10118    pub w_index: ::core::option::Option<u32>,
10119    #[prost(uint32, optional, tag="5")]
10120    pub w_length: ::core::option::Option<u32>,
10121    #[prost(string, optional, tag="6")]
10122    pub str: ::core::option::Option<::prost::alloc::string::String>,
10123}
10124#[derive(Clone, PartialEq, ::prost::Message)]
10125pub struct Dwc3EpDequeueFtraceEvent {
10126    #[prost(string, optional, tag="1")]
10127    pub name: ::core::option::Option<::prost::alloc::string::String>,
10128    #[prost(uint64, optional, tag="2")]
10129    pub req: ::core::option::Option<u64>,
10130    #[prost(uint32, optional, tag="3")]
10131    pub actual: ::core::option::Option<u32>,
10132    #[prost(uint32, optional, tag="4")]
10133    pub length: ::core::option::Option<u32>,
10134    #[prost(int32, optional, tag="5")]
10135    pub status: ::core::option::Option<i32>,
10136    #[prost(int32, optional, tag="6")]
10137    pub zero: ::core::option::Option<i32>,
10138    #[prost(int32, optional, tag="7")]
10139    pub short_not_ok: ::core::option::Option<i32>,
10140    #[prost(int32, optional, tag="8")]
10141    pub no_interrupt: ::core::option::Option<i32>,
10142}
10143#[derive(Clone, PartialEq, ::prost::Message)]
10144pub struct Dwc3EpQueueFtraceEvent {
10145    #[prost(string, optional, tag="1")]
10146    pub name: ::core::option::Option<::prost::alloc::string::String>,
10147    #[prost(uint64, optional, tag="2")]
10148    pub req: ::core::option::Option<u64>,
10149    #[prost(uint32, optional, tag="3")]
10150    pub actual: ::core::option::Option<u32>,
10151    #[prost(uint32, optional, tag="4")]
10152    pub length: ::core::option::Option<u32>,
10153    #[prost(int32, optional, tag="5")]
10154    pub status: ::core::option::Option<i32>,
10155    #[prost(int32, optional, tag="6")]
10156    pub zero: ::core::option::Option<i32>,
10157    #[prost(int32, optional, tag="7")]
10158    pub short_not_ok: ::core::option::Option<i32>,
10159    #[prost(int32, optional, tag="8")]
10160    pub no_interrupt: ::core::option::Option<i32>,
10161}
10162#[derive(Clone, PartialEq, ::prost::Message)]
10163pub struct Dwc3EventFtraceEvent {
10164    #[prost(uint32, optional, tag="1")]
10165    pub event: ::core::option::Option<u32>,
10166    #[prost(uint32, optional, tag="2")]
10167    pub ep0state: ::core::option::Option<u32>,
10168    #[prost(string, optional, tag="3")]
10169    pub str: ::core::option::Option<::prost::alloc::string::String>,
10170}
10171#[derive(Clone, PartialEq, ::prost::Message)]
10172pub struct Dwc3FreeRequestFtraceEvent {
10173    #[prost(string, optional, tag="1")]
10174    pub name: ::core::option::Option<::prost::alloc::string::String>,
10175    #[prost(uint64, optional, tag="2")]
10176    pub req: ::core::option::Option<u64>,
10177    #[prost(uint32, optional, tag="3")]
10178    pub actual: ::core::option::Option<u32>,
10179    #[prost(uint32, optional, tag="4")]
10180    pub length: ::core::option::Option<u32>,
10181    #[prost(int32, optional, tag="5")]
10182    pub status: ::core::option::Option<i32>,
10183    #[prost(int32, optional, tag="6")]
10184    pub zero: ::core::option::Option<i32>,
10185    #[prost(int32, optional, tag="7")]
10186    pub short_not_ok: ::core::option::Option<i32>,
10187    #[prost(int32, optional, tag="8")]
10188    pub no_interrupt: ::core::option::Option<i32>,
10189}
10190#[derive(Clone, PartialEq, ::prost::Message)]
10191pub struct Dwc3GadgetEpCmdFtraceEvent {
10192    #[prost(string, optional, tag="1")]
10193    pub name: ::core::option::Option<::prost::alloc::string::String>,
10194    #[prost(uint32, optional, tag="2")]
10195    pub cmd: ::core::option::Option<u32>,
10196    #[prost(uint32, optional, tag="3")]
10197    pub param0: ::core::option::Option<u32>,
10198    #[prost(uint32, optional, tag="4")]
10199    pub param1: ::core::option::Option<u32>,
10200    #[prost(uint32, optional, tag="5")]
10201    pub param2: ::core::option::Option<u32>,
10202    #[prost(int32, optional, tag="6")]
10203    pub cmd_status: ::core::option::Option<i32>,
10204}
10205#[derive(Clone, PartialEq, ::prost::Message)]
10206pub struct Dwc3GadgetEpDisableFtraceEvent {
10207    #[prost(string, optional, tag="1")]
10208    pub name: ::core::option::Option<::prost::alloc::string::String>,
10209    #[prost(uint32, optional, tag="2")]
10210    pub maxpacket: ::core::option::Option<u32>,
10211    #[prost(uint32, optional, tag="3")]
10212    pub maxpacket_limit: ::core::option::Option<u32>,
10213    #[prost(uint32, optional, tag="4")]
10214    pub max_streams: ::core::option::Option<u32>,
10215    #[prost(uint32, optional, tag="5")]
10216    pub maxburst: ::core::option::Option<u32>,
10217    #[prost(uint32, optional, tag="6")]
10218    pub flags: ::core::option::Option<u32>,
10219    #[prost(uint32, optional, tag="7")]
10220    pub direction: ::core::option::Option<u32>,
10221    #[prost(uint32, optional, tag="8")]
10222    pub trb_enqueue: ::core::option::Option<u32>,
10223    #[prost(uint32, optional, tag="9")]
10224    pub trb_dequeue: ::core::option::Option<u32>,
10225}
10226#[derive(Clone, PartialEq, ::prost::Message)]
10227pub struct Dwc3GadgetEpEnableFtraceEvent {
10228    #[prost(string, optional, tag="1")]
10229    pub name: ::core::option::Option<::prost::alloc::string::String>,
10230    #[prost(uint32, optional, tag="2")]
10231    pub maxpacket: ::core::option::Option<u32>,
10232    #[prost(uint32, optional, tag="3")]
10233    pub maxpacket_limit: ::core::option::Option<u32>,
10234    #[prost(uint32, optional, tag="4")]
10235    pub max_streams: ::core::option::Option<u32>,
10236    #[prost(uint32, optional, tag="5")]
10237    pub maxburst: ::core::option::Option<u32>,
10238    #[prost(uint32, optional, tag="6")]
10239    pub flags: ::core::option::Option<u32>,
10240    #[prost(uint32, optional, tag="7")]
10241    pub direction: ::core::option::Option<u32>,
10242    #[prost(uint32, optional, tag="8")]
10243    pub trb_enqueue: ::core::option::Option<u32>,
10244    #[prost(uint32, optional, tag="9")]
10245    pub trb_dequeue: ::core::option::Option<u32>,
10246}
10247#[derive(Clone, PartialEq, ::prost::Message)]
10248pub struct Dwc3GadgetGenericCmdFtraceEvent {
10249    #[prost(uint32, optional, tag="1")]
10250    pub cmd: ::core::option::Option<u32>,
10251    #[prost(uint32, optional, tag="2")]
10252    pub param: ::core::option::Option<u32>,
10253    #[prost(int32, optional, tag="3")]
10254    pub status: ::core::option::Option<i32>,
10255}
10256#[derive(Clone, PartialEq, ::prost::Message)]
10257pub struct Dwc3GadgetGivebackFtraceEvent {
10258    #[prost(string, optional, tag="1")]
10259    pub name: ::core::option::Option<::prost::alloc::string::String>,
10260    #[prost(uint64, optional, tag="2")]
10261    pub req: ::core::option::Option<u64>,
10262    #[prost(uint32, optional, tag="3")]
10263    pub actual: ::core::option::Option<u32>,
10264    #[prost(uint32, optional, tag="4")]
10265    pub length: ::core::option::Option<u32>,
10266    #[prost(int32, optional, tag="5")]
10267    pub status: ::core::option::Option<i32>,
10268    #[prost(int32, optional, tag="6")]
10269    pub zero: ::core::option::Option<i32>,
10270    #[prost(int32, optional, tag="7")]
10271    pub short_not_ok: ::core::option::Option<i32>,
10272    #[prost(int32, optional, tag="8")]
10273    pub no_interrupt: ::core::option::Option<i32>,
10274}
10275#[derive(Clone, PartialEq, ::prost::Message)]
10276pub struct Dwc3PrepareTrbFtraceEvent {
10277    #[prost(string, optional, tag="1")]
10278    pub name: ::core::option::Option<::prost::alloc::string::String>,
10279    #[prost(uint64, optional, tag="2")]
10280    pub trb: ::core::option::Option<u64>,
10281    #[prost(uint32, optional, tag="3")]
10282    pub allocated: ::core::option::Option<u32>,
10283    #[prost(uint32, optional, tag="4")]
10284    pub queued: ::core::option::Option<u32>,
10285    #[prost(uint32, optional, tag="5")]
10286    pub bpl: ::core::option::Option<u32>,
10287    #[prost(uint32, optional, tag="6")]
10288    pub bph: ::core::option::Option<u32>,
10289    #[prost(uint32, optional, tag="7")]
10290    pub size: ::core::option::Option<u32>,
10291    #[prost(uint32, optional, tag="8")]
10292    pub ctrl: ::core::option::Option<u32>,
10293    #[prost(uint32, optional, tag="9")]
10294    pub r#type: ::core::option::Option<u32>,
10295    #[prost(uint32, optional, tag="10")]
10296    pub enqueue: ::core::option::Option<u32>,
10297    #[prost(uint32, optional, tag="11")]
10298    pub dequeue: ::core::option::Option<u32>,
10299}
10300#[derive(Clone, PartialEq, ::prost::Message)]
10301pub struct Dwc3ReadlFtraceEvent {
10302    #[prost(uint64, optional, tag="1")]
10303    pub base: ::core::option::Option<u64>,
10304    #[prost(uint32, optional, tag="2")]
10305    pub offset: ::core::option::Option<u32>,
10306    #[prost(uint32, optional, tag="3")]
10307    pub value: ::core::option::Option<u32>,
10308    #[prost(string, optional, tag="4")]
10309    pub msg: ::core::option::Option<::prost::alloc::string::String>,
10310}
10311#[derive(Clone, PartialEq, ::prost::Message)]
10312pub struct Dwc3WritelFtraceEvent {
10313    #[prost(uint64, optional, tag="1")]
10314    pub base: ::core::option::Option<u64>,
10315    #[prost(uint32, optional, tag="2")]
10316    pub offset: ::core::option::Option<u32>,
10317    #[prost(uint32, optional, tag="3")]
10318    pub value: ::core::option::Option<u32>,
10319    #[prost(string, optional, tag="4")]
10320    pub msg: ::core::option::Option<::prost::alloc::string::String>,
10321}
10322// End of protos/perfetto/trace/ftrace/dwc3.proto
10323
10324// Begin of protos/perfetto/trace/ftrace/ext4.proto
10325
10326#[derive(Clone, PartialEq, ::prost::Message)]
10327pub struct Ext4DaWriteBeginFtraceEvent {
10328    #[prost(uint64, optional, tag="1")]
10329    pub dev: ::core::option::Option<u64>,
10330    #[prost(uint64, optional, tag="2")]
10331    pub ino: ::core::option::Option<u64>,
10332    #[prost(int64, optional, tag="3")]
10333    pub pos: ::core::option::Option<i64>,
10334    #[prost(uint32, optional, tag="4")]
10335    pub len: ::core::option::Option<u32>,
10336    #[prost(uint32, optional, tag="5")]
10337    pub flags: ::core::option::Option<u32>,
10338}
10339#[derive(Clone, PartialEq, ::prost::Message)]
10340pub struct Ext4DaWriteEndFtraceEvent {
10341    #[prost(uint64, optional, tag="1")]
10342    pub dev: ::core::option::Option<u64>,
10343    #[prost(uint64, optional, tag="2")]
10344    pub ino: ::core::option::Option<u64>,
10345    #[prost(int64, optional, tag="3")]
10346    pub pos: ::core::option::Option<i64>,
10347    #[prost(uint32, optional, tag="4")]
10348    pub len: ::core::option::Option<u32>,
10349    #[prost(uint32, optional, tag="5")]
10350    pub copied: ::core::option::Option<u32>,
10351}
10352#[derive(Clone, PartialEq, ::prost::Message)]
10353pub struct Ext4SyncFileEnterFtraceEvent {
10354    #[prost(uint64, optional, tag="1")]
10355    pub dev: ::core::option::Option<u64>,
10356    #[prost(uint64, optional, tag="2")]
10357    pub ino: ::core::option::Option<u64>,
10358    #[prost(uint64, optional, tag="3")]
10359    pub parent: ::core::option::Option<u64>,
10360    #[prost(int32, optional, tag="4")]
10361    pub datasync: ::core::option::Option<i32>,
10362}
10363#[derive(Clone, PartialEq, ::prost::Message)]
10364pub struct Ext4SyncFileExitFtraceEvent {
10365    #[prost(uint64, optional, tag="1")]
10366    pub dev: ::core::option::Option<u64>,
10367    #[prost(uint64, optional, tag="2")]
10368    pub ino: ::core::option::Option<u64>,
10369    #[prost(int32, optional, tag="3")]
10370    pub ret: ::core::option::Option<i32>,
10371}
10372#[derive(Clone, PartialEq, ::prost::Message)]
10373pub struct Ext4AllocDaBlocksFtraceEvent {
10374    #[prost(uint64, optional, tag="1")]
10375    pub dev: ::core::option::Option<u64>,
10376    #[prost(uint64, optional, tag="2")]
10377    pub ino: ::core::option::Option<u64>,
10378    #[prost(uint32, optional, tag="3")]
10379    pub data_blocks: ::core::option::Option<u32>,
10380    #[prost(uint32, optional, tag="4")]
10381    pub meta_blocks: ::core::option::Option<u32>,
10382}
10383#[derive(Clone, PartialEq, ::prost::Message)]
10384pub struct Ext4AllocateBlocksFtraceEvent {
10385    #[prost(uint64, optional, tag="1")]
10386    pub dev: ::core::option::Option<u64>,
10387    #[prost(uint64, optional, tag="2")]
10388    pub ino: ::core::option::Option<u64>,
10389    #[prost(uint64, optional, tag="3")]
10390    pub block: ::core::option::Option<u64>,
10391    #[prost(uint32, optional, tag="4")]
10392    pub len: ::core::option::Option<u32>,
10393    #[prost(uint32, optional, tag="5")]
10394    pub logical: ::core::option::Option<u32>,
10395    #[prost(uint32, optional, tag="6")]
10396    pub lleft: ::core::option::Option<u32>,
10397    #[prost(uint32, optional, tag="7")]
10398    pub lright: ::core::option::Option<u32>,
10399    #[prost(uint64, optional, tag="8")]
10400    pub goal: ::core::option::Option<u64>,
10401    #[prost(uint64, optional, tag="9")]
10402    pub pleft: ::core::option::Option<u64>,
10403    #[prost(uint64, optional, tag="10")]
10404    pub pright: ::core::option::Option<u64>,
10405    #[prost(uint32, optional, tag="11")]
10406    pub flags: ::core::option::Option<u32>,
10407}
10408#[derive(Clone, PartialEq, ::prost::Message)]
10409pub struct Ext4AllocateInodeFtraceEvent {
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 dir: ::core::option::Option<u64>,
10416    #[prost(uint32, optional, tag="4")]
10417    pub mode: ::core::option::Option<u32>,
10418}
10419#[derive(Clone, PartialEq, ::prost::Message)]
10420pub struct Ext4BeginOrderedTruncateFtraceEvent {
10421    #[prost(uint64, optional, tag="1")]
10422    pub dev: ::core::option::Option<u64>,
10423    #[prost(uint64, optional, tag="2")]
10424    pub ino: ::core::option::Option<u64>,
10425    #[prost(int64, optional, tag="3")]
10426    pub new_size: ::core::option::Option<i64>,
10427}
10428#[derive(Clone, PartialEq, ::prost::Message)]
10429pub struct Ext4CollapseRangeFtraceEvent {
10430    #[prost(uint64, optional, tag="1")]
10431    pub dev: ::core::option::Option<u64>,
10432    #[prost(uint64, optional, tag="2")]
10433    pub ino: ::core::option::Option<u64>,
10434    #[prost(int64, optional, tag="3")]
10435    pub offset: ::core::option::Option<i64>,
10436    #[prost(int64, optional, tag="4")]
10437    pub len: ::core::option::Option<i64>,
10438}
10439#[derive(Clone, PartialEq, ::prost::Message)]
10440pub struct Ext4DaReleaseSpaceFtraceEvent {
10441    #[prost(uint64, optional, tag="1")]
10442    pub dev: ::core::option::Option<u64>,
10443    #[prost(uint64, optional, tag="2")]
10444    pub ino: ::core::option::Option<u64>,
10445    #[prost(uint64, optional, tag="3")]
10446    pub i_blocks: ::core::option::Option<u64>,
10447    #[prost(int32, optional, tag="4")]
10448    pub freed_blocks: ::core::option::Option<i32>,
10449    #[prost(int32, optional, tag="5")]
10450    pub reserved_data_blocks: ::core::option::Option<i32>,
10451    #[prost(int32, optional, tag="6")]
10452    pub reserved_meta_blocks: ::core::option::Option<i32>,
10453    #[prost(int32, optional, tag="7")]
10454    pub allocated_meta_blocks: ::core::option::Option<i32>,
10455    #[prost(uint32, optional, tag="8")]
10456    pub mode: ::core::option::Option<u32>,
10457}
10458#[derive(Clone, PartialEq, ::prost::Message)]
10459pub struct Ext4DaReserveSpaceFtraceEvent {
10460    #[prost(uint64, optional, tag="1")]
10461    pub dev: ::core::option::Option<u64>,
10462    #[prost(uint64, optional, tag="2")]
10463    pub ino: ::core::option::Option<u64>,
10464    #[prost(uint64, optional, tag="3")]
10465    pub i_blocks: ::core::option::Option<u64>,
10466    #[prost(int32, optional, tag="4")]
10467    pub reserved_data_blocks: ::core::option::Option<i32>,
10468    #[prost(int32, optional, tag="5")]
10469    pub reserved_meta_blocks: ::core::option::Option<i32>,
10470    #[prost(uint32, optional, tag="6")]
10471    pub mode: ::core::option::Option<u32>,
10472    #[prost(int32, optional, tag="7")]
10473    pub md_needed: ::core::option::Option<i32>,
10474}
10475#[derive(Clone, PartialEq, ::prost::Message)]
10476pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
10477    #[prost(uint64, optional, tag="1")]
10478    pub dev: ::core::option::Option<u64>,
10479    #[prost(uint64, optional, tag="2")]
10480    pub ino: ::core::option::Option<u64>,
10481    #[prost(uint64, optional, tag="3")]
10482    pub i_blocks: ::core::option::Option<u64>,
10483    #[prost(int32, optional, tag="4")]
10484    pub used_blocks: ::core::option::Option<i32>,
10485    #[prost(int32, optional, tag="5")]
10486    pub reserved_data_blocks: ::core::option::Option<i32>,
10487    #[prost(int32, optional, tag="6")]
10488    pub reserved_meta_blocks: ::core::option::Option<i32>,
10489    #[prost(int32, optional, tag="7")]
10490    pub allocated_meta_blocks: ::core::option::Option<i32>,
10491    #[prost(int32, optional, tag="8")]
10492    pub quota_claim: ::core::option::Option<i32>,
10493    #[prost(uint32, optional, tag="9")]
10494    pub mode: ::core::option::Option<u32>,
10495}
10496#[derive(Clone, PartialEq, ::prost::Message)]
10497pub struct Ext4DaWritePagesFtraceEvent {
10498    #[prost(uint64, optional, tag="1")]
10499    pub dev: ::core::option::Option<u64>,
10500    #[prost(uint64, optional, tag="2")]
10501    pub ino: ::core::option::Option<u64>,
10502    #[prost(uint64, optional, tag="3")]
10503    pub first_page: ::core::option::Option<u64>,
10504    #[prost(int64, optional, tag="4")]
10505    pub nr_to_write: ::core::option::Option<i64>,
10506    #[prost(int32, optional, tag="5")]
10507    pub sync_mode: ::core::option::Option<i32>,
10508    #[prost(uint64, optional, tag="6")]
10509    pub b_blocknr: ::core::option::Option<u64>,
10510    #[prost(uint32, optional, tag="7")]
10511    pub b_size: ::core::option::Option<u32>,
10512    #[prost(uint32, optional, tag="8")]
10513    pub b_state: ::core::option::Option<u32>,
10514    #[prost(int32, optional, tag="9")]
10515    pub io_done: ::core::option::Option<i32>,
10516    #[prost(int32, optional, tag="10")]
10517    pub pages_written: ::core::option::Option<i32>,
10518}
10519#[derive(Clone, PartialEq, ::prost::Message)]
10520pub struct Ext4DaWritePagesExtentFtraceEvent {
10521    #[prost(uint64, optional, tag="1")]
10522    pub dev: ::core::option::Option<u64>,
10523    #[prost(uint64, optional, tag="2")]
10524    pub ino: ::core::option::Option<u64>,
10525    #[prost(uint64, optional, tag="3")]
10526    pub lblk: ::core::option::Option<u64>,
10527    #[prost(uint32, optional, tag="4")]
10528    pub len: ::core::option::Option<u32>,
10529    #[prost(uint32, optional, tag="5")]
10530    pub flags: ::core::option::Option<u32>,
10531}
10532#[derive(Clone, PartialEq, ::prost::Message)]
10533pub struct Ext4DirectIoEnterFtraceEvent {
10534    #[prost(uint64, optional, tag="1")]
10535    pub dev: ::core::option::Option<u64>,
10536    #[prost(uint64, optional, tag="2")]
10537    pub ino: ::core::option::Option<u64>,
10538    #[prost(int64, optional, tag="3")]
10539    pub pos: ::core::option::Option<i64>,
10540    #[prost(uint64, optional, tag="4")]
10541    pub len: ::core::option::Option<u64>,
10542    #[prost(int32, optional, tag="5")]
10543    pub rw: ::core::option::Option<i32>,
10544}
10545#[derive(Clone, PartialEq, ::prost::Message)]
10546pub struct Ext4DirectIoExitFtraceEvent {
10547    #[prost(uint64, optional, tag="1")]
10548    pub dev: ::core::option::Option<u64>,
10549    #[prost(uint64, optional, tag="2")]
10550    pub ino: ::core::option::Option<u64>,
10551    #[prost(int64, optional, tag="3")]
10552    pub pos: ::core::option::Option<i64>,
10553    #[prost(uint64, optional, tag="4")]
10554    pub len: ::core::option::Option<u64>,
10555    #[prost(int32, optional, tag="5")]
10556    pub rw: ::core::option::Option<i32>,
10557    #[prost(int32, optional, tag="6")]
10558    pub ret: ::core::option::Option<i32>,
10559}
10560#[derive(Clone, PartialEq, ::prost::Message)]
10561pub struct Ext4DiscardBlocksFtraceEvent {
10562    #[prost(uint64, optional, tag="1")]
10563    pub dev: ::core::option::Option<u64>,
10564    #[prost(uint64, optional, tag="2")]
10565    pub blk: ::core::option::Option<u64>,
10566    #[prost(uint64, optional, tag="3")]
10567    pub count: ::core::option::Option<u64>,
10568}
10569#[derive(Clone, PartialEq, ::prost::Message)]
10570pub struct Ext4DiscardPreallocationsFtraceEvent {
10571    #[prost(uint64, optional, tag="1")]
10572    pub dev: ::core::option::Option<u64>,
10573    #[prost(uint64, optional, tag="2")]
10574    pub ino: ::core::option::Option<u64>,
10575    #[prost(uint32, optional, tag="3")]
10576    pub len: ::core::option::Option<u32>,
10577    #[prost(uint32, optional, tag="4")]
10578    pub needed: ::core::option::Option<u32>,
10579}
10580#[derive(Clone, PartialEq, ::prost::Message)]
10581pub struct Ext4DropInodeFtraceEvent {
10582    #[prost(uint64, optional, tag="1")]
10583    pub dev: ::core::option::Option<u64>,
10584    #[prost(uint64, optional, tag="2")]
10585    pub ino: ::core::option::Option<u64>,
10586    #[prost(int32, optional, tag="3")]
10587    pub drop: ::core::option::Option<i32>,
10588}
10589#[derive(Clone, PartialEq, ::prost::Message)]
10590pub struct Ext4EsCacheExtentFtraceEvent {
10591    #[prost(uint64, optional, tag="1")]
10592    pub dev: ::core::option::Option<u64>,
10593    #[prost(uint64, optional, tag="2")]
10594    pub ino: ::core::option::Option<u64>,
10595    #[prost(uint32, optional, tag="3")]
10596    pub lblk: ::core::option::Option<u32>,
10597    #[prost(uint32, optional, tag="4")]
10598    pub len: ::core::option::Option<u32>,
10599    #[prost(uint64, optional, tag="5")]
10600    pub pblk: ::core::option::Option<u64>,
10601    #[prost(uint32, optional, tag="6")]
10602    pub status: ::core::option::Option<u32>,
10603}
10604#[derive(Clone, PartialEq, ::prost::Message)]
10605pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
10606    #[prost(uint64, optional, tag="1")]
10607    pub dev: ::core::option::Option<u64>,
10608    #[prost(uint64, optional, tag="2")]
10609    pub ino: ::core::option::Option<u64>,
10610    #[prost(uint32, optional, tag="3")]
10611    pub lblk: ::core::option::Option<u32>,
10612}
10613#[derive(Clone, PartialEq, ::prost::Message)]
10614pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
10615    #[prost(uint64, optional, tag="1")]
10616    pub dev: ::core::option::Option<u64>,
10617    #[prost(uint64, optional, tag="2")]
10618    pub ino: ::core::option::Option<u64>,
10619    #[prost(uint32, optional, tag="3")]
10620    pub lblk: ::core::option::Option<u32>,
10621    #[prost(uint32, optional, tag="4")]
10622    pub len: ::core::option::Option<u32>,
10623    #[prost(uint64, optional, tag="5")]
10624    pub pblk: ::core::option::Option<u64>,
10625    #[prost(uint64, optional, tag="6")]
10626    pub status: ::core::option::Option<u64>,
10627}
10628#[derive(Clone, PartialEq, ::prost::Message)]
10629pub struct Ext4EsInsertExtentFtraceEvent {
10630    #[prost(uint64, optional, tag="1")]
10631    pub dev: ::core::option::Option<u64>,
10632    #[prost(uint64, optional, tag="2")]
10633    pub ino: ::core::option::Option<u64>,
10634    #[prost(uint32, optional, tag="3")]
10635    pub lblk: ::core::option::Option<u32>,
10636    #[prost(uint32, optional, tag="4")]
10637    pub len: ::core::option::Option<u32>,
10638    #[prost(uint64, optional, tag="5")]
10639    pub pblk: ::core::option::Option<u64>,
10640    #[prost(uint64, optional, tag="6")]
10641    pub status: ::core::option::Option<u64>,
10642}
10643#[derive(Clone, PartialEq, ::prost::Message)]
10644pub struct Ext4EsLookupExtentEnterFtraceEvent {
10645    #[prost(uint64, optional, tag="1")]
10646    pub dev: ::core::option::Option<u64>,
10647    #[prost(uint64, optional, tag="2")]
10648    pub ino: ::core::option::Option<u64>,
10649    #[prost(uint32, optional, tag="3")]
10650    pub lblk: ::core::option::Option<u32>,
10651}
10652#[derive(Clone, PartialEq, ::prost::Message)]
10653pub struct Ext4EsLookupExtentExitFtraceEvent {
10654    #[prost(uint64, optional, tag="1")]
10655    pub dev: ::core::option::Option<u64>,
10656    #[prost(uint64, optional, tag="2")]
10657    pub ino: ::core::option::Option<u64>,
10658    #[prost(uint32, optional, tag="3")]
10659    pub lblk: ::core::option::Option<u32>,
10660    #[prost(uint32, optional, tag="4")]
10661    pub len: ::core::option::Option<u32>,
10662    #[prost(uint64, optional, tag="5")]
10663    pub pblk: ::core::option::Option<u64>,
10664    #[prost(uint64, optional, tag="6")]
10665    pub status: ::core::option::Option<u64>,
10666    #[prost(int32, optional, tag="7")]
10667    pub found: ::core::option::Option<i32>,
10668}
10669#[derive(Clone, PartialEq, ::prost::Message)]
10670pub struct Ext4EsRemoveExtentFtraceEvent {
10671    #[prost(uint64, optional, tag="1")]
10672    pub dev: ::core::option::Option<u64>,
10673    #[prost(uint64, optional, tag="2")]
10674    pub ino: ::core::option::Option<u64>,
10675    #[prost(int64, optional, tag="3")]
10676    pub lblk: ::core::option::Option<i64>,
10677    #[prost(int64, optional, tag="4")]
10678    pub len: ::core::option::Option<i64>,
10679}
10680#[derive(Clone, PartialEq, ::prost::Message)]
10681pub struct Ext4EsShrinkFtraceEvent {
10682    #[prost(uint64, optional, tag="1")]
10683    pub dev: ::core::option::Option<u64>,
10684    #[prost(int32, optional, tag="2")]
10685    pub nr_shrunk: ::core::option::Option<i32>,
10686    #[prost(uint64, optional, tag="3")]
10687    pub scan_time: ::core::option::Option<u64>,
10688    #[prost(int32, optional, tag="4")]
10689    pub nr_skipped: ::core::option::Option<i32>,
10690    #[prost(int32, optional, tag="5")]
10691    pub retried: ::core::option::Option<i32>,
10692}
10693#[derive(Clone, PartialEq, ::prost::Message)]
10694pub struct Ext4EsShrinkCountFtraceEvent {
10695    #[prost(uint64, optional, tag="1")]
10696    pub dev: ::core::option::Option<u64>,
10697    #[prost(int32, optional, tag="2")]
10698    pub nr_to_scan: ::core::option::Option<i32>,
10699    #[prost(int32, optional, tag="3")]
10700    pub cache_cnt: ::core::option::Option<i32>,
10701}
10702#[derive(Clone, PartialEq, ::prost::Message)]
10703pub struct Ext4EsShrinkScanEnterFtraceEvent {
10704    #[prost(uint64, optional, tag="1")]
10705    pub dev: ::core::option::Option<u64>,
10706    #[prost(int32, optional, tag="2")]
10707    pub nr_to_scan: ::core::option::Option<i32>,
10708    #[prost(int32, optional, tag="3")]
10709    pub cache_cnt: ::core::option::Option<i32>,
10710}
10711#[derive(Clone, PartialEq, ::prost::Message)]
10712pub struct Ext4EsShrinkScanExitFtraceEvent {
10713    #[prost(uint64, optional, tag="1")]
10714    pub dev: ::core::option::Option<u64>,
10715    #[prost(int32, optional, tag="2")]
10716    pub nr_shrunk: ::core::option::Option<i32>,
10717    #[prost(int32, optional, tag="3")]
10718    pub cache_cnt: ::core::option::Option<i32>,
10719}
10720#[derive(Clone, PartialEq, ::prost::Message)]
10721pub struct Ext4EvictInodeFtraceEvent {
10722    #[prost(uint64, optional, tag="1")]
10723    pub dev: ::core::option::Option<u64>,
10724    #[prost(uint64, optional, tag="2")]
10725    pub ino: ::core::option::Option<u64>,
10726    #[prost(int32, optional, tag="3")]
10727    pub nlink: ::core::option::Option<i32>,
10728}
10729#[derive(Clone, PartialEq, ::prost::Message)]
10730pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
10731    #[prost(uint64, optional, tag="1")]
10732    pub dev: ::core::option::Option<u64>,
10733    #[prost(uint64, optional, tag="2")]
10734    pub ino: ::core::option::Option<u64>,
10735    #[prost(uint32, optional, tag="3")]
10736    pub m_lblk: ::core::option::Option<u32>,
10737    #[prost(uint32, optional, tag="4")]
10738    pub m_len: ::core::option::Option<u32>,
10739    #[prost(uint32, optional, tag="5")]
10740    pub u_lblk: ::core::option::Option<u32>,
10741    #[prost(uint32, optional, tag="6")]
10742    pub u_len: ::core::option::Option<u32>,
10743    #[prost(uint64, optional, tag="7")]
10744    pub u_pblk: ::core::option::Option<u64>,
10745}
10746#[derive(Clone, PartialEq, ::prost::Message)]
10747pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
10748    #[prost(uint64, optional, tag="1")]
10749    pub dev: ::core::option::Option<u64>,
10750    #[prost(uint64, optional, tag="2")]
10751    pub ino: ::core::option::Option<u64>,
10752    #[prost(uint32, optional, tag="3")]
10753    pub m_lblk: ::core::option::Option<u32>,
10754    #[prost(uint32, optional, tag="4")]
10755    pub m_len: ::core::option::Option<u32>,
10756    #[prost(uint32, optional, tag="5")]
10757    pub u_lblk: ::core::option::Option<u32>,
10758    #[prost(uint32, optional, tag="6")]
10759    pub u_len: ::core::option::Option<u32>,
10760    #[prost(uint64, optional, tag="7")]
10761    pub u_pblk: ::core::option::Option<u64>,
10762    #[prost(uint32, optional, tag="8")]
10763    pub i_lblk: ::core::option::Option<u32>,
10764    #[prost(uint32, optional, tag="9")]
10765    pub i_len: ::core::option::Option<u32>,
10766    #[prost(uint64, optional, tag="10")]
10767    pub i_pblk: ::core::option::Option<u64>,
10768}
10769#[derive(Clone, PartialEq, ::prost::Message)]
10770pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
10771    #[prost(uint64, optional, tag="1")]
10772    pub dev: ::core::option::Option<u64>,
10773    #[prost(uint64, optional, tag="2")]
10774    pub ino: ::core::option::Option<u64>,
10775    #[prost(int32, optional, tag="3")]
10776    pub flags: ::core::option::Option<i32>,
10777    #[prost(uint32, optional, tag="4")]
10778    pub lblk: ::core::option::Option<u32>,
10779    #[prost(uint64, optional, tag="5")]
10780    pub pblk: ::core::option::Option<u64>,
10781    #[prost(uint32, optional, tag="6")]
10782    pub len: ::core::option::Option<u32>,
10783    #[prost(uint32, optional, tag="7")]
10784    pub allocated: ::core::option::Option<u32>,
10785    #[prost(uint64, optional, tag="8")]
10786    pub newblk: ::core::option::Option<u64>,
10787}
10788#[derive(Clone, PartialEq, ::prost::Message)]
10789pub struct Ext4ExtInCacheFtraceEvent {
10790    #[prost(uint64, optional, tag="1")]
10791    pub dev: ::core::option::Option<u64>,
10792    #[prost(uint64, optional, tag="2")]
10793    pub ino: ::core::option::Option<u64>,
10794    #[prost(uint32, optional, tag="3")]
10795    pub lblk: ::core::option::Option<u32>,
10796    #[prost(int32, optional, tag="4")]
10797    pub ret: ::core::option::Option<i32>,
10798}
10799#[derive(Clone, PartialEq, ::prost::Message)]
10800pub struct Ext4ExtLoadExtentFtraceEvent {
10801    #[prost(uint64, optional, tag="1")]
10802    pub dev: ::core::option::Option<u64>,
10803    #[prost(uint64, optional, tag="2")]
10804    pub ino: ::core::option::Option<u64>,
10805    #[prost(uint64, optional, tag="3")]
10806    pub pblk: ::core::option::Option<u64>,
10807    #[prost(uint32, optional, tag="4")]
10808    pub lblk: ::core::option::Option<u32>,
10809}
10810#[derive(Clone, PartialEq, ::prost::Message)]
10811pub struct Ext4ExtMapBlocksEnterFtraceEvent {
10812    #[prost(uint64, optional, tag="1")]
10813    pub dev: ::core::option::Option<u64>,
10814    #[prost(uint64, optional, tag="2")]
10815    pub ino: ::core::option::Option<u64>,
10816    #[prost(uint32, optional, tag="3")]
10817    pub lblk: ::core::option::Option<u32>,
10818    #[prost(uint32, optional, tag="4")]
10819    pub len: ::core::option::Option<u32>,
10820    #[prost(uint32, optional, tag="5")]
10821    pub flags: ::core::option::Option<u32>,
10822}
10823#[derive(Clone, PartialEq, ::prost::Message)]
10824pub struct Ext4ExtMapBlocksExitFtraceEvent {
10825    #[prost(uint64, optional, tag="1")]
10826    pub dev: ::core::option::Option<u64>,
10827    #[prost(uint64, optional, tag="2")]
10828    pub ino: ::core::option::Option<u64>,
10829    #[prost(uint32, optional, tag="3")]
10830    pub flags: ::core::option::Option<u32>,
10831    #[prost(uint64, optional, tag="4")]
10832    pub pblk: ::core::option::Option<u64>,
10833    #[prost(uint32, optional, tag="5")]
10834    pub lblk: ::core::option::Option<u32>,
10835    #[prost(uint32, optional, tag="6")]
10836    pub len: ::core::option::Option<u32>,
10837    #[prost(uint32, optional, tag="7")]
10838    pub mflags: ::core::option::Option<u32>,
10839    #[prost(int32, optional, tag="8")]
10840    pub ret: ::core::option::Option<i32>,
10841}
10842#[derive(Clone, PartialEq, ::prost::Message)]
10843pub struct Ext4ExtPutInCacheFtraceEvent {
10844    #[prost(uint64, optional, tag="1")]
10845    pub dev: ::core::option::Option<u64>,
10846    #[prost(uint64, optional, tag="2")]
10847    pub ino: ::core::option::Option<u64>,
10848    #[prost(uint32, optional, tag="3")]
10849    pub lblk: ::core::option::Option<u32>,
10850    #[prost(uint32, optional, tag="4")]
10851    pub len: ::core::option::Option<u32>,
10852    #[prost(uint64, optional, tag="5")]
10853    pub start: ::core::option::Option<u64>,
10854}
10855#[derive(Clone, PartialEq, ::prost::Message)]
10856pub struct Ext4ExtRemoveSpaceFtraceEvent {
10857    #[prost(uint64, optional, tag="1")]
10858    pub dev: ::core::option::Option<u64>,
10859    #[prost(uint64, optional, tag="2")]
10860    pub ino: ::core::option::Option<u64>,
10861    #[prost(uint32, optional, tag="3")]
10862    pub start: ::core::option::Option<u32>,
10863    #[prost(uint32, optional, tag="4")]
10864    pub end: ::core::option::Option<u32>,
10865    #[prost(int32, optional, tag="5")]
10866    pub depth: ::core::option::Option<i32>,
10867}
10868#[derive(Clone, PartialEq, ::prost::Message)]
10869pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
10870    #[prost(uint64, optional, tag="1")]
10871    pub dev: ::core::option::Option<u64>,
10872    #[prost(uint64, optional, tag="2")]
10873    pub ino: ::core::option::Option<u64>,
10874    #[prost(uint32, optional, tag="3")]
10875    pub start: ::core::option::Option<u32>,
10876    #[prost(uint32, optional, tag="4")]
10877    pub end: ::core::option::Option<u32>,
10878    #[prost(int32, optional, tag="5")]
10879    pub depth: ::core::option::Option<i32>,
10880    #[prost(int64, optional, tag="6")]
10881    pub partial: ::core::option::Option<i64>,
10882    #[prost(uint32, optional, tag="7")]
10883    pub eh_entries: ::core::option::Option<u32>,
10884    #[prost(uint32, optional, tag="8")]
10885    pub pc_lblk: ::core::option::Option<u32>,
10886    #[prost(uint64, optional, tag="9")]
10887    pub pc_pclu: ::core::option::Option<u64>,
10888    #[prost(int32, optional, tag="10")]
10889    pub pc_state: ::core::option::Option<i32>,
10890}
10891#[derive(Clone, PartialEq, ::prost::Message)]
10892pub struct Ext4ExtRmIdxFtraceEvent {
10893    #[prost(uint64, optional, tag="1")]
10894    pub dev: ::core::option::Option<u64>,
10895    #[prost(uint64, optional, tag="2")]
10896    pub ino: ::core::option::Option<u64>,
10897    #[prost(uint64, optional, tag="3")]
10898    pub pblk: ::core::option::Option<u64>,
10899}
10900#[derive(Clone, PartialEq, ::prost::Message)]
10901pub struct Ext4ExtRmLeafFtraceEvent {
10902    #[prost(uint64, optional, tag="1")]
10903    pub dev: ::core::option::Option<u64>,
10904    #[prost(uint64, optional, tag="2")]
10905    pub ino: ::core::option::Option<u64>,
10906    #[prost(int64, optional, tag="3")]
10907    pub partial: ::core::option::Option<i64>,
10908    #[prost(uint32, optional, tag="4")]
10909    pub start: ::core::option::Option<u32>,
10910    #[prost(uint32, optional, tag="5")]
10911    pub ee_lblk: ::core::option::Option<u32>,
10912    #[prost(uint64, optional, tag="6")]
10913    pub ee_pblk: ::core::option::Option<u64>,
10914    #[prost(int32, optional, tag="7")]
10915    pub ee_len: ::core::option::Option<i32>,
10916    #[prost(uint32, optional, tag="8")]
10917    pub pc_lblk: ::core::option::Option<u32>,
10918    #[prost(uint64, optional, tag="9")]
10919    pub pc_pclu: ::core::option::Option<u64>,
10920    #[prost(int32, optional, tag="10")]
10921    pub pc_state: ::core::option::Option<i32>,
10922}
10923#[derive(Clone, PartialEq, ::prost::Message)]
10924pub struct Ext4ExtShowExtentFtraceEvent {
10925    #[prost(uint64, optional, tag="1")]
10926    pub dev: ::core::option::Option<u64>,
10927    #[prost(uint64, optional, tag="2")]
10928    pub ino: ::core::option::Option<u64>,
10929    #[prost(uint64, optional, tag="3")]
10930    pub pblk: ::core::option::Option<u64>,
10931    #[prost(uint32, optional, tag="4")]
10932    pub lblk: ::core::option::Option<u32>,
10933    #[prost(uint32, optional, tag="5")]
10934    pub len: ::core::option::Option<u32>,
10935}
10936#[derive(Clone, PartialEq, ::prost::Message)]
10937pub struct Ext4FallocateEnterFtraceEvent {
10938    #[prost(uint64, optional, tag="1")]
10939    pub dev: ::core::option::Option<u64>,
10940    #[prost(uint64, optional, tag="2")]
10941    pub ino: ::core::option::Option<u64>,
10942    #[prost(int64, optional, tag="3")]
10943    pub offset: ::core::option::Option<i64>,
10944    #[prost(int64, optional, tag="4")]
10945    pub len: ::core::option::Option<i64>,
10946    #[prost(int32, optional, tag="5")]
10947    pub mode: ::core::option::Option<i32>,
10948    #[prost(int64, optional, tag="6")]
10949    pub pos: ::core::option::Option<i64>,
10950}
10951#[derive(Clone, PartialEq, ::prost::Message)]
10952pub struct Ext4FallocateExitFtraceEvent {
10953    #[prost(uint64, optional, tag="1")]
10954    pub dev: ::core::option::Option<u64>,
10955    #[prost(uint64, optional, tag="2")]
10956    pub ino: ::core::option::Option<u64>,
10957    #[prost(int64, optional, tag="3")]
10958    pub pos: ::core::option::Option<i64>,
10959    #[prost(uint32, optional, tag="4")]
10960    pub blocks: ::core::option::Option<u32>,
10961    #[prost(int32, optional, tag="5")]
10962    pub ret: ::core::option::Option<i32>,
10963}
10964#[derive(Clone, PartialEq, ::prost::Message)]
10965pub struct Ext4FindDelallocRangeFtraceEvent {
10966    #[prost(uint64, optional, tag="1")]
10967    pub dev: ::core::option::Option<u64>,
10968    #[prost(uint64, optional, tag="2")]
10969    pub ino: ::core::option::Option<u64>,
10970    #[prost(uint32, optional, tag="3")]
10971    pub from: ::core::option::Option<u32>,
10972    #[prost(uint32, optional, tag="4")]
10973    pub to: ::core::option::Option<u32>,
10974    #[prost(int32, optional, tag="5")]
10975    pub reverse: ::core::option::Option<i32>,
10976    #[prost(int32, optional, tag="6")]
10977    pub found: ::core::option::Option<i32>,
10978    #[prost(uint32, optional, tag="7")]
10979    pub found_blk: ::core::option::Option<u32>,
10980}
10981#[derive(Clone, PartialEq, ::prost::Message)]
10982pub struct Ext4ForgetFtraceEvent {
10983    #[prost(uint64, optional, tag="1")]
10984    pub dev: ::core::option::Option<u64>,
10985    #[prost(uint64, optional, tag="2")]
10986    pub ino: ::core::option::Option<u64>,
10987    #[prost(uint64, optional, tag="3")]
10988    pub block: ::core::option::Option<u64>,
10989    #[prost(int32, optional, tag="4")]
10990    pub is_metadata: ::core::option::Option<i32>,
10991    #[prost(uint32, optional, tag="5")]
10992    pub mode: ::core::option::Option<u32>,
10993}
10994#[derive(Clone, PartialEq, ::prost::Message)]
10995pub struct Ext4FreeBlocksFtraceEvent {
10996    #[prost(uint64, optional, tag="1")]
10997    pub dev: ::core::option::Option<u64>,
10998    #[prost(uint64, optional, tag="2")]
10999    pub ino: ::core::option::Option<u64>,
11000    #[prost(uint64, optional, tag="3")]
11001    pub block: ::core::option::Option<u64>,
11002    #[prost(uint64, optional, tag="4")]
11003    pub count: ::core::option::Option<u64>,
11004    #[prost(int32, optional, tag="5")]
11005    pub flags: ::core::option::Option<i32>,
11006    #[prost(uint32, optional, tag="6")]
11007    pub mode: ::core::option::Option<u32>,
11008}
11009#[derive(Clone, PartialEq, ::prost::Message)]
11010pub struct Ext4FreeInodeFtraceEvent {
11011    #[prost(uint64, optional, tag="1")]
11012    pub dev: ::core::option::Option<u64>,
11013    #[prost(uint64, optional, tag="2")]
11014    pub ino: ::core::option::Option<u64>,
11015    #[prost(uint32, optional, tag="3")]
11016    pub uid: ::core::option::Option<u32>,
11017    #[prost(uint32, optional, tag="4")]
11018    pub gid: ::core::option::Option<u32>,
11019    #[prost(uint64, optional, tag="5")]
11020    pub blocks: ::core::option::Option<u64>,
11021    #[prost(uint32, optional, tag="6")]
11022    pub mode: ::core::option::Option<u32>,
11023}
11024#[derive(Clone, PartialEq, ::prost::Message)]
11025pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
11026    #[prost(uint64, optional, tag="1")]
11027    pub dev: ::core::option::Option<u64>,
11028    #[prost(uint32, optional, tag="2")]
11029    pub flags: ::core::option::Option<u32>,
11030    #[prost(uint32, optional, tag="3")]
11031    pub lblk: ::core::option::Option<u32>,
11032    #[prost(uint64, optional, tag="4")]
11033    pub pblk: ::core::option::Option<u64>,
11034    #[prost(uint32, optional, tag="5")]
11035    pub len: ::core::option::Option<u32>,
11036    #[prost(int32, optional, tag="6")]
11037    pub ret: ::core::option::Option<i32>,
11038}
11039#[derive(Clone, PartialEq, ::prost::Message)]
11040pub struct Ext4GetReservedClusterAllocFtraceEvent {
11041    #[prost(uint64, optional, tag="1")]
11042    pub dev: ::core::option::Option<u64>,
11043    #[prost(uint64, optional, tag="2")]
11044    pub ino: ::core::option::Option<u64>,
11045    #[prost(uint32, optional, tag="3")]
11046    pub lblk: ::core::option::Option<u32>,
11047    #[prost(uint32, optional, tag="4")]
11048    pub len: ::core::option::Option<u32>,
11049}
11050#[derive(Clone, PartialEq, ::prost::Message)]
11051pub struct Ext4IndMapBlocksEnterFtraceEvent {
11052    #[prost(uint64, optional, tag="1")]
11053    pub dev: ::core::option::Option<u64>,
11054    #[prost(uint64, optional, tag="2")]
11055    pub ino: ::core::option::Option<u64>,
11056    #[prost(uint32, optional, tag="3")]
11057    pub lblk: ::core::option::Option<u32>,
11058    #[prost(uint32, optional, tag="4")]
11059    pub len: ::core::option::Option<u32>,
11060    #[prost(uint32, optional, tag="5")]
11061    pub flags: ::core::option::Option<u32>,
11062}
11063#[derive(Clone, PartialEq, ::prost::Message)]
11064pub struct Ext4IndMapBlocksExitFtraceEvent {
11065    #[prost(uint64, optional, tag="1")]
11066    pub dev: ::core::option::Option<u64>,
11067    #[prost(uint64, optional, tag="2")]
11068    pub ino: ::core::option::Option<u64>,
11069    #[prost(uint32, optional, tag="3")]
11070    pub flags: ::core::option::Option<u32>,
11071    #[prost(uint64, optional, tag="4")]
11072    pub pblk: ::core::option::Option<u64>,
11073    #[prost(uint32, optional, tag="5")]
11074    pub lblk: ::core::option::Option<u32>,
11075    #[prost(uint32, optional, tag="6")]
11076    pub len: ::core::option::Option<u32>,
11077    #[prost(uint32, optional, tag="7")]
11078    pub mflags: ::core::option::Option<u32>,
11079    #[prost(int32, optional, tag="8")]
11080    pub ret: ::core::option::Option<i32>,
11081}
11082#[derive(Clone, PartialEq, ::prost::Message)]
11083pub struct Ext4InsertRangeFtraceEvent {
11084    #[prost(uint64, optional, tag="1")]
11085    pub dev: ::core::option::Option<u64>,
11086    #[prost(uint64, optional, tag="2")]
11087    pub ino: ::core::option::Option<u64>,
11088    #[prost(int64, optional, tag="3")]
11089    pub offset: ::core::option::Option<i64>,
11090    #[prost(int64, optional, tag="4")]
11091    pub len: ::core::option::Option<i64>,
11092}
11093#[derive(Clone, PartialEq, ::prost::Message)]
11094pub struct Ext4InvalidatepageFtraceEvent {
11095    #[prost(uint64, optional, tag="1")]
11096    pub dev: ::core::option::Option<u64>,
11097    #[prost(uint64, optional, tag="2")]
11098    pub ino: ::core::option::Option<u64>,
11099    #[prost(uint64, optional, tag="3")]
11100    pub index: ::core::option::Option<u64>,
11101    #[prost(uint64, optional, tag="4")]
11102    pub offset: ::core::option::Option<u64>,
11103    #[prost(uint32, optional, tag="5")]
11104    pub length: ::core::option::Option<u32>,
11105}
11106#[derive(Clone, PartialEq, ::prost::Message)]
11107pub struct Ext4JournalStartFtraceEvent {
11108    #[prost(uint64, optional, tag="1")]
11109    pub dev: ::core::option::Option<u64>,
11110    #[prost(uint64, optional, tag="2")]
11111    pub ip: ::core::option::Option<u64>,
11112    #[prost(int32, optional, tag="3")]
11113    pub blocks: ::core::option::Option<i32>,
11114    #[prost(int32, optional, tag="4")]
11115    pub rsv_blocks: ::core::option::Option<i32>,
11116    #[prost(int32, optional, tag="5")]
11117    pub nblocks: ::core::option::Option<i32>,
11118    #[prost(int32, optional, tag="6")]
11119    pub revoke_creds: ::core::option::Option<i32>,
11120}
11121#[derive(Clone, PartialEq, ::prost::Message)]
11122pub struct Ext4JournalStartReservedFtraceEvent {
11123    #[prost(uint64, optional, tag="1")]
11124    pub dev: ::core::option::Option<u64>,
11125    #[prost(uint64, optional, tag="2")]
11126    pub ip: ::core::option::Option<u64>,
11127    #[prost(int32, optional, tag="3")]
11128    pub blocks: ::core::option::Option<i32>,
11129}
11130#[derive(Clone, PartialEq, ::prost::Message)]
11131pub struct Ext4JournalledInvalidatepageFtraceEvent {
11132    #[prost(uint64, optional, tag="1")]
11133    pub dev: ::core::option::Option<u64>,
11134    #[prost(uint64, optional, tag="2")]
11135    pub ino: ::core::option::Option<u64>,
11136    #[prost(uint64, optional, tag="3")]
11137    pub index: ::core::option::Option<u64>,
11138    #[prost(uint64, optional, tag="4")]
11139    pub offset: ::core::option::Option<u64>,
11140    #[prost(uint32, optional, tag="5")]
11141    pub length: ::core::option::Option<u32>,
11142}
11143#[derive(Clone, PartialEq, ::prost::Message)]
11144pub struct Ext4JournalledWriteEndFtraceEvent {
11145    #[prost(uint64, optional, tag="1")]
11146    pub dev: ::core::option::Option<u64>,
11147    #[prost(uint64, optional, tag="2")]
11148    pub ino: ::core::option::Option<u64>,
11149    #[prost(int64, optional, tag="3")]
11150    pub pos: ::core::option::Option<i64>,
11151    #[prost(uint32, optional, tag="4")]
11152    pub len: ::core::option::Option<u32>,
11153    #[prost(uint32, optional, tag="5")]
11154    pub copied: ::core::option::Option<u32>,
11155}
11156#[derive(Clone, PartialEq, ::prost::Message)]
11157pub struct Ext4LoadInodeFtraceEvent {
11158    #[prost(uint64, optional, tag="1")]
11159    pub dev: ::core::option::Option<u64>,
11160    #[prost(uint64, optional, tag="2")]
11161    pub ino: ::core::option::Option<u64>,
11162}
11163#[derive(Clone, PartialEq, ::prost::Message)]
11164pub struct Ext4LoadInodeBitmapFtraceEvent {
11165    #[prost(uint64, optional, tag="1")]
11166    pub dev: ::core::option::Option<u64>,
11167    #[prost(uint32, optional, tag="2")]
11168    pub group: ::core::option::Option<u32>,
11169}
11170#[derive(Clone, PartialEq, ::prost::Message)]
11171pub struct Ext4MarkInodeDirtyFtraceEvent {
11172    #[prost(uint64, optional, tag="1")]
11173    pub dev: ::core::option::Option<u64>,
11174    #[prost(uint64, optional, tag="2")]
11175    pub ino: ::core::option::Option<u64>,
11176    #[prost(uint64, optional, tag="3")]
11177    pub ip: ::core::option::Option<u64>,
11178}
11179#[derive(Clone, PartialEq, ::prost::Message)]
11180pub struct Ext4MbBitmapLoadFtraceEvent {
11181    #[prost(uint64, optional, tag="1")]
11182    pub dev: ::core::option::Option<u64>,
11183    #[prost(uint32, optional, tag="2")]
11184    pub group: ::core::option::Option<u32>,
11185}
11186#[derive(Clone, PartialEq, ::prost::Message)]
11187pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
11188    #[prost(uint64, optional, tag="1")]
11189    pub dev: ::core::option::Option<u64>,
11190    #[prost(uint32, optional, tag="2")]
11191    pub group: ::core::option::Option<u32>,
11192}
11193#[derive(Clone, PartialEq, ::prost::Message)]
11194pub struct Ext4MbDiscardPreallocationsFtraceEvent {
11195    #[prost(uint64, optional, tag="1")]
11196    pub dev: ::core::option::Option<u64>,
11197    #[prost(int32, optional, tag="2")]
11198    pub needed: ::core::option::Option<i32>,
11199}
11200#[derive(Clone, PartialEq, ::prost::Message)]
11201pub struct Ext4MbNewGroupPaFtraceEvent {
11202    #[prost(uint64, optional, tag="1")]
11203    pub dev: ::core::option::Option<u64>,
11204    #[prost(uint64, optional, tag="2")]
11205    pub ino: ::core::option::Option<u64>,
11206    #[prost(uint64, optional, tag="3")]
11207    pub pa_pstart: ::core::option::Option<u64>,
11208    #[prost(uint64, optional, tag="4")]
11209    pub pa_lstart: ::core::option::Option<u64>,
11210    #[prost(uint32, optional, tag="5")]
11211    pub pa_len: ::core::option::Option<u32>,
11212}
11213#[derive(Clone, PartialEq, ::prost::Message)]
11214pub struct Ext4MbNewInodePaFtraceEvent {
11215    #[prost(uint64, optional, tag="1")]
11216    pub dev: ::core::option::Option<u64>,
11217    #[prost(uint64, optional, tag="2")]
11218    pub ino: ::core::option::Option<u64>,
11219    #[prost(uint64, optional, tag="3")]
11220    pub pa_pstart: ::core::option::Option<u64>,
11221    #[prost(uint64, optional, tag="4")]
11222    pub pa_lstart: ::core::option::Option<u64>,
11223    #[prost(uint32, optional, tag="5")]
11224    pub pa_len: ::core::option::Option<u32>,
11225}
11226#[derive(Clone, PartialEq, ::prost::Message)]
11227pub struct Ext4MbReleaseGroupPaFtraceEvent {
11228    #[prost(uint64, optional, tag="1")]
11229    pub dev: ::core::option::Option<u64>,
11230    #[prost(uint64, optional, tag="2")]
11231    pub pa_pstart: ::core::option::Option<u64>,
11232    #[prost(uint32, optional, tag="3")]
11233    pub pa_len: ::core::option::Option<u32>,
11234}
11235#[derive(Clone, PartialEq, ::prost::Message)]
11236pub struct Ext4MbReleaseInodePaFtraceEvent {
11237    #[prost(uint64, optional, tag="1")]
11238    pub dev: ::core::option::Option<u64>,
11239    #[prost(uint64, optional, tag="2")]
11240    pub ino: ::core::option::Option<u64>,
11241    #[prost(uint64, optional, tag="3")]
11242    pub block: ::core::option::Option<u64>,
11243    #[prost(uint32, optional, tag="4")]
11244    pub count: ::core::option::Option<u32>,
11245}
11246#[derive(Clone, PartialEq, ::prost::Message)]
11247pub struct Ext4MballocAllocFtraceEvent {
11248    #[prost(uint64, optional, tag="1")]
11249    pub dev: ::core::option::Option<u64>,
11250    #[prost(uint64, optional, tag="2")]
11251    pub ino: ::core::option::Option<u64>,
11252    #[prost(uint32, optional, tag="3")]
11253    pub orig_logical: ::core::option::Option<u32>,
11254    #[prost(int32, optional, tag="4")]
11255    pub orig_start: ::core::option::Option<i32>,
11256    #[prost(uint32, optional, tag="5")]
11257    pub orig_group: ::core::option::Option<u32>,
11258    #[prost(int32, optional, tag="6")]
11259    pub orig_len: ::core::option::Option<i32>,
11260    #[prost(uint32, optional, tag="7")]
11261    pub goal_logical: ::core::option::Option<u32>,
11262    #[prost(int32, optional, tag="8")]
11263    pub goal_start: ::core::option::Option<i32>,
11264    #[prost(uint32, optional, tag="9")]
11265    pub goal_group: ::core::option::Option<u32>,
11266    #[prost(int32, optional, tag="10")]
11267    pub goal_len: ::core::option::Option<i32>,
11268    #[prost(uint32, optional, tag="11")]
11269    pub result_logical: ::core::option::Option<u32>,
11270    #[prost(int32, optional, tag="12")]
11271    pub result_start: ::core::option::Option<i32>,
11272    #[prost(uint32, optional, tag="13")]
11273    pub result_group: ::core::option::Option<u32>,
11274    #[prost(int32, optional, tag="14")]
11275    pub result_len: ::core::option::Option<i32>,
11276    #[prost(uint32, optional, tag="15")]
11277    pub found: ::core::option::Option<u32>,
11278    #[prost(uint32, optional, tag="16")]
11279    pub groups: ::core::option::Option<u32>,
11280    #[prost(uint32, optional, tag="17")]
11281    pub buddy: ::core::option::Option<u32>,
11282    #[prost(uint32, optional, tag="18")]
11283    pub flags: ::core::option::Option<u32>,
11284    #[prost(uint32, optional, tag="19")]
11285    pub tail: ::core::option::Option<u32>,
11286    #[prost(uint32, optional, tag="20")]
11287    pub cr: ::core::option::Option<u32>,
11288}
11289#[derive(Clone, PartialEq, ::prost::Message)]
11290pub struct Ext4MballocDiscardFtraceEvent {
11291    #[prost(uint64, optional, tag="1")]
11292    pub dev: ::core::option::Option<u64>,
11293    #[prost(uint64, optional, tag="2")]
11294    pub ino: ::core::option::Option<u64>,
11295    #[prost(int32, optional, tag="3")]
11296    pub result_start: ::core::option::Option<i32>,
11297    #[prost(uint32, optional, tag="4")]
11298    pub result_group: ::core::option::Option<u32>,
11299    #[prost(int32, optional, tag="5")]
11300    pub result_len: ::core::option::Option<i32>,
11301}
11302#[derive(Clone, PartialEq, ::prost::Message)]
11303pub struct Ext4MballocFreeFtraceEvent {
11304    #[prost(uint64, optional, tag="1")]
11305    pub dev: ::core::option::Option<u64>,
11306    #[prost(uint64, optional, tag="2")]
11307    pub ino: ::core::option::Option<u64>,
11308    #[prost(int32, optional, tag="3")]
11309    pub result_start: ::core::option::Option<i32>,
11310    #[prost(uint32, optional, tag="4")]
11311    pub result_group: ::core::option::Option<u32>,
11312    #[prost(int32, optional, tag="5")]
11313    pub result_len: ::core::option::Option<i32>,
11314}
11315#[derive(Clone, PartialEq, ::prost::Message)]
11316pub struct Ext4MballocPreallocFtraceEvent {
11317    #[prost(uint64, optional, tag="1")]
11318    pub dev: ::core::option::Option<u64>,
11319    #[prost(uint64, optional, tag="2")]
11320    pub ino: ::core::option::Option<u64>,
11321    #[prost(uint32, optional, tag="3")]
11322    pub orig_logical: ::core::option::Option<u32>,
11323    #[prost(int32, optional, tag="4")]
11324    pub orig_start: ::core::option::Option<i32>,
11325    #[prost(uint32, optional, tag="5")]
11326    pub orig_group: ::core::option::Option<u32>,
11327    #[prost(int32, optional, tag="6")]
11328    pub orig_len: ::core::option::Option<i32>,
11329    #[prost(uint32, optional, tag="7")]
11330    pub result_logical: ::core::option::Option<u32>,
11331    #[prost(int32, optional, tag="8")]
11332    pub result_start: ::core::option::Option<i32>,
11333    #[prost(uint32, optional, tag="9")]
11334    pub result_group: ::core::option::Option<u32>,
11335    #[prost(int32, optional, tag="10")]
11336    pub result_len: ::core::option::Option<i32>,
11337}
11338#[derive(Clone, PartialEq, ::prost::Message)]
11339pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
11340    #[prost(uint64, optional, tag="1")]
11341    pub dev: ::core::option::Option<u64>,
11342    #[prost(uint64, optional, tag="2")]
11343    pub ino: ::core::option::Option<u64>,
11344    #[prost(uint64, optional, tag="3")]
11345    pub orig_ino: ::core::option::Option<u64>,
11346    #[prost(uint32, optional, tag="4")]
11347    pub uid: ::core::option::Option<u32>,
11348    #[prost(uint32, optional, tag="5")]
11349    pub gid: ::core::option::Option<u32>,
11350    #[prost(uint32, optional, tag="6")]
11351    pub mode: ::core::option::Option<u32>,
11352}
11353#[derive(Clone, PartialEq, ::prost::Message)]
11354pub struct Ext4PunchHoleFtraceEvent {
11355    #[prost(uint64, optional, tag="1")]
11356    pub dev: ::core::option::Option<u64>,
11357    #[prost(uint64, optional, tag="2")]
11358    pub ino: ::core::option::Option<u64>,
11359    #[prost(int64, optional, tag="3")]
11360    pub offset: ::core::option::Option<i64>,
11361    #[prost(int64, optional, tag="4")]
11362    pub len: ::core::option::Option<i64>,
11363    #[prost(int32, optional, tag="5")]
11364    pub mode: ::core::option::Option<i32>,
11365}
11366#[derive(Clone, PartialEq, ::prost::Message)]
11367pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
11368    #[prost(uint64, optional, tag="1")]
11369    pub dev: ::core::option::Option<u64>,
11370    #[prost(uint32, optional, tag="2")]
11371    pub group: ::core::option::Option<u32>,
11372    #[prost(uint32, optional, tag="3")]
11373    pub prefetch: ::core::option::Option<u32>,
11374}
11375#[derive(Clone, PartialEq, ::prost::Message)]
11376pub struct Ext4ReadpageFtraceEvent {
11377    #[prost(uint64, optional, tag="1")]
11378    pub dev: ::core::option::Option<u64>,
11379    #[prost(uint64, optional, tag="2")]
11380    pub ino: ::core::option::Option<u64>,
11381    #[prost(uint64, optional, tag="3")]
11382    pub index: ::core::option::Option<u64>,
11383}
11384#[derive(Clone, PartialEq, ::prost::Message)]
11385pub struct Ext4ReleasepageFtraceEvent {
11386    #[prost(uint64, optional, tag="1")]
11387    pub dev: ::core::option::Option<u64>,
11388    #[prost(uint64, optional, tag="2")]
11389    pub ino: ::core::option::Option<u64>,
11390    #[prost(uint64, optional, tag="3")]
11391    pub index: ::core::option::Option<u64>,
11392}
11393#[derive(Clone, PartialEq, ::prost::Message)]
11394pub struct Ext4RemoveBlocksFtraceEvent {
11395    #[prost(uint64, optional, tag="1")]
11396    pub dev: ::core::option::Option<u64>,
11397    #[prost(uint64, optional, tag="2")]
11398    pub ino: ::core::option::Option<u64>,
11399    #[prost(uint32, optional, tag="3")]
11400    pub from: ::core::option::Option<u32>,
11401    #[prost(uint32, optional, tag="4")]
11402    pub to: ::core::option::Option<u32>,
11403    #[prost(int64, optional, tag="5")]
11404    pub partial: ::core::option::Option<i64>,
11405    #[prost(uint64, optional, tag="6")]
11406    pub ee_pblk: ::core::option::Option<u64>,
11407    #[prost(uint32, optional, tag="7")]
11408    pub ee_lblk: ::core::option::Option<u32>,
11409    #[prost(uint32, optional, tag="8")]
11410    pub ee_len: ::core::option::Option<u32>,
11411    #[prost(uint32, optional, tag="9")]
11412    pub pc_lblk: ::core::option::Option<u32>,
11413    #[prost(uint64, optional, tag="10")]
11414    pub pc_pclu: ::core::option::Option<u64>,
11415    #[prost(int32, optional, tag="11")]
11416    pub pc_state: ::core::option::Option<i32>,
11417}
11418#[derive(Clone, PartialEq, ::prost::Message)]
11419pub struct Ext4RequestBlocksFtraceEvent {
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 len: ::core::option::Option<u32>,
11426    #[prost(uint32, optional, tag="4")]
11427    pub logical: ::core::option::Option<u32>,
11428    #[prost(uint32, optional, tag="5")]
11429    pub lleft: ::core::option::Option<u32>,
11430    #[prost(uint32, optional, tag="6")]
11431    pub lright: ::core::option::Option<u32>,
11432    #[prost(uint64, optional, tag="7")]
11433    pub goal: ::core::option::Option<u64>,
11434    #[prost(uint64, optional, tag="8")]
11435    pub pleft: ::core::option::Option<u64>,
11436    #[prost(uint64, optional, tag="9")]
11437    pub pright: ::core::option::Option<u64>,
11438    #[prost(uint32, optional, tag="10")]
11439    pub flags: ::core::option::Option<u32>,
11440}
11441#[derive(Clone, PartialEq, ::prost::Message)]
11442pub struct Ext4RequestInodeFtraceEvent {
11443    #[prost(uint64, optional, tag="1")]
11444    pub dev: ::core::option::Option<u64>,
11445    #[prost(uint64, optional, tag="2")]
11446    pub dir: ::core::option::Option<u64>,
11447    #[prost(uint32, optional, tag="3")]
11448    pub mode: ::core::option::Option<u32>,
11449}
11450#[derive(Clone, PartialEq, ::prost::Message)]
11451pub struct Ext4SyncFsFtraceEvent {
11452    #[prost(uint64, optional, tag="1")]
11453    pub dev: ::core::option::Option<u64>,
11454    #[prost(int32, optional, tag="2")]
11455    pub wait: ::core::option::Option<i32>,
11456}
11457#[derive(Clone, PartialEq, ::prost::Message)]
11458pub struct Ext4TrimAllFreeFtraceEvent {
11459    #[prost(int32, optional, tag="1")]
11460    pub dev_major: ::core::option::Option<i32>,
11461    #[prost(int32, optional, tag="2")]
11462    pub dev_minor: ::core::option::Option<i32>,
11463    #[prost(uint32, optional, tag="3")]
11464    pub group: ::core::option::Option<u32>,
11465    #[prost(int32, optional, tag="4")]
11466    pub start: ::core::option::Option<i32>,
11467    #[prost(int32, optional, tag="5")]
11468    pub len: ::core::option::Option<i32>,
11469}
11470#[derive(Clone, PartialEq, ::prost::Message)]
11471pub struct Ext4TrimExtentFtraceEvent {
11472    #[prost(int32, optional, tag="1")]
11473    pub dev_major: ::core::option::Option<i32>,
11474    #[prost(int32, optional, tag="2")]
11475    pub dev_minor: ::core::option::Option<i32>,
11476    #[prost(uint32, optional, tag="3")]
11477    pub group: ::core::option::Option<u32>,
11478    #[prost(int32, optional, tag="4")]
11479    pub start: ::core::option::Option<i32>,
11480    #[prost(int32, optional, tag="5")]
11481    pub len: ::core::option::Option<i32>,
11482}
11483#[derive(Clone, PartialEq, ::prost::Message)]
11484pub struct Ext4TruncateEnterFtraceEvent {
11485    #[prost(uint64, optional, tag="1")]
11486    pub dev: ::core::option::Option<u64>,
11487    #[prost(uint64, optional, tag="2")]
11488    pub ino: ::core::option::Option<u64>,
11489    #[prost(uint64, optional, tag="3")]
11490    pub blocks: ::core::option::Option<u64>,
11491}
11492#[derive(Clone, PartialEq, ::prost::Message)]
11493pub struct Ext4TruncateExitFtraceEvent {
11494    #[prost(uint64, optional, tag="1")]
11495    pub dev: ::core::option::Option<u64>,
11496    #[prost(uint64, optional, tag="2")]
11497    pub ino: ::core::option::Option<u64>,
11498    #[prost(uint64, optional, tag="3")]
11499    pub blocks: ::core::option::Option<u64>,
11500}
11501#[derive(Clone, PartialEq, ::prost::Message)]
11502pub struct Ext4UnlinkEnterFtraceEvent {
11503    #[prost(uint64, optional, tag="1")]
11504    pub dev: ::core::option::Option<u64>,
11505    #[prost(uint64, optional, tag="2")]
11506    pub ino: ::core::option::Option<u64>,
11507    #[prost(uint64, optional, tag="3")]
11508    pub parent: ::core::option::Option<u64>,
11509    #[prost(int64, optional, tag="4")]
11510    pub size: ::core::option::Option<i64>,
11511}
11512#[derive(Clone, PartialEq, ::prost::Message)]
11513pub struct Ext4UnlinkExitFtraceEvent {
11514    #[prost(uint64, optional, tag="1")]
11515    pub dev: ::core::option::Option<u64>,
11516    #[prost(uint64, optional, tag="2")]
11517    pub ino: ::core::option::Option<u64>,
11518    #[prost(int32, optional, tag="3")]
11519    pub ret: ::core::option::Option<i32>,
11520}
11521#[derive(Clone, PartialEq, ::prost::Message)]
11522pub struct Ext4WriteBeginFtraceEvent {
11523    #[prost(uint64, optional, tag="1")]
11524    pub dev: ::core::option::Option<u64>,
11525    #[prost(uint64, optional, tag="2")]
11526    pub ino: ::core::option::Option<u64>,
11527    #[prost(int64, optional, tag="3")]
11528    pub pos: ::core::option::Option<i64>,
11529    #[prost(uint32, optional, tag="4")]
11530    pub len: ::core::option::Option<u32>,
11531    #[prost(uint32, optional, tag="5")]
11532    pub flags: ::core::option::Option<u32>,
11533}
11534#[derive(Clone, PartialEq, ::prost::Message)]
11535pub struct Ext4WriteEndFtraceEvent {
11536    #[prost(uint64, optional, tag="1")]
11537    pub dev: ::core::option::Option<u64>,
11538    #[prost(uint64, optional, tag="2")]
11539    pub ino: ::core::option::Option<u64>,
11540    #[prost(int64, optional, tag="3")]
11541    pub pos: ::core::option::Option<i64>,
11542    #[prost(uint32, optional, tag="4")]
11543    pub len: ::core::option::Option<u32>,
11544    #[prost(uint32, optional, tag="5")]
11545    pub copied: ::core::option::Option<u32>,
11546}
11547#[derive(Clone, PartialEq, ::prost::Message)]
11548pub struct Ext4WritepageFtraceEvent {
11549    #[prost(uint64, optional, tag="1")]
11550    pub dev: ::core::option::Option<u64>,
11551    #[prost(uint64, optional, tag="2")]
11552    pub ino: ::core::option::Option<u64>,
11553    #[prost(uint64, optional, tag="3")]
11554    pub index: ::core::option::Option<u64>,
11555}
11556#[derive(Clone, PartialEq, ::prost::Message)]
11557pub struct Ext4WritepagesFtraceEvent {
11558    #[prost(uint64, optional, tag="1")]
11559    pub dev: ::core::option::Option<u64>,
11560    #[prost(uint64, optional, tag="2")]
11561    pub ino: ::core::option::Option<u64>,
11562    #[prost(int64, optional, tag="3")]
11563    pub nr_to_write: ::core::option::Option<i64>,
11564    #[prost(int64, optional, tag="4")]
11565    pub pages_skipped: ::core::option::Option<i64>,
11566    #[prost(int64, optional, tag="5")]
11567    pub range_start: ::core::option::Option<i64>,
11568    #[prost(int64, optional, tag="6")]
11569    pub range_end: ::core::option::Option<i64>,
11570    #[prost(uint64, optional, tag="7")]
11571    pub writeback_index: ::core::option::Option<u64>,
11572    #[prost(int32, optional, tag="8")]
11573    pub sync_mode: ::core::option::Option<i32>,
11574    #[prost(uint32, optional, tag="9")]
11575    pub for_kupdate: ::core::option::Option<u32>,
11576    #[prost(uint32, optional, tag="10")]
11577    pub range_cyclic: ::core::option::Option<u32>,
11578}
11579#[derive(Clone, PartialEq, ::prost::Message)]
11580pub struct Ext4WritepagesResultFtraceEvent {
11581    #[prost(uint64, optional, tag="1")]
11582    pub dev: ::core::option::Option<u64>,
11583    #[prost(uint64, optional, tag="2")]
11584    pub ino: ::core::option::Option<u64>,
11585    #[prost(int32, optional, tag="3")]
11586    pub ret: ::core::option::Option<i32>,
11587    #[prost(int32, optional, tag="4")]
11588    pub pages_written: ::core::option::Option<i32>,
11589    #[prost(int64, optional, tag="5")]
11590    pub pages_skipped: ::core::option::Option<i64>,
11591    #[prost(uint64, optional, tag="6")]
11592    pub writeback_index: ::core::option::Option<u64>,
11593    #[prost(int32, optional, tag="7")]
11594    pub sync_mode: ::core::option::Option<i32>,
11595}
11596#[derive(Clone, PartialEq, ::prost::Message)]
11597pub struct Ext4ZeroRangeFtraceEvent {
11598    #[prost(uint64, optional, tag="1")]
11599    pub dev: ::core::option::Option<u64>,
11600    #[prost(uint64, optional, tag="2")]
11601    pub ino: ::core::option::Option<u64>,
11602    #[prost(int64, optional, tag="3")]
11603    pub offset: ::core::option::Option<i64>,
11604    #[prost(int64, optional, tag="4")]
11605    pub len: ::core::option::Option<i64>,
11606    #[prost(int32, optional, tag="5")]
11607    pub mode: ::core::option::Option<i32>,
11608}
11609// End of protos/perfetto/trace/ftrace/ext4.proto
11610
11611// Begin of protos/perfetto/trace/ftrace/f2fs.proto
11612
11613#[derive(Clone, PartialEq, ::prost::Message)]
11614pub struct F2fsDoSubmitBioFtraceEvent {
11615    #[prost(uint64, optional, tag="1")]
11616    pub dev: ::core::option::Option<u64>,
11617    #[prost(int32, optional, tag="2")]
11618    pub btype: ::core::option::Option<i32>,
11619    #[prost(uint32, optional, tag="3")]
11620    pub sync: ::core::option::Option<u32>,
11621    #[prost(uint64, optional, tag="4")]
11622    pub sector: ::core::option::Option<u64>,
11623    #[prost(uint32, optional, tag="5")]
11624    pub size: ::core::option::Option<u32>,
11625}
11626#[derive(Clone, PartialEq, ::prost::Message)]
11627pub struct F2fsEvictInodeFtraceEvent {
11628    #[prost(uint64, optional, tag="1")]
11629    pub dev: ::core::option::Option<u64>,
11630    #[prost(uint64, optional, tag="2")]
11631    pub ino: ::core::option::Option<u64>,
11632    #[prost(uint64, optional, tag="3")]
11633    pub pino: ::core::option::Option<u64>,
11634    #[prost(uint32, optional, tag="4")]
11635    pub mode: ::core::option::Option<u32>,
11636    #[prost(int64, optional, tag="5")]
11637    pub size: ::core::option::Option<i64>,
11638    #[prost(uint32, optional, tag="6")]
11639    pub nlink: ::core::option::Option<u32>,
11640    #[prost(uint64, optional, tag="7")]
11641    pub blocks: ::core::option::Option<u64>,
11642    #[prost(uint32, optional, tag="8")]
11643    pub advise: ::core::option::Option<u32>,
11644}
11645#[derive(Clone, PartialEq, ::prost::Message)]
11646pub struct F2fsFallocateFtraceEvent {
11647    #[prost(uint64, optional, tag="1")]
11648    pub dev: ::core::option::Option<u64>,
11649    #[prost(uint64, optional, tag="2")]
11650    pub ino: ::core::option::Option<u64>,
11651    #[prost(int32, optional, tag="3")]
11652    pub mode: ::core::option::Option<i32>,
11653    #[prost(int64, optional, tag="4")]
11654    pub offset: ::core::option::Option<i64>,
11655    #[prost(int64, optional, tag="5")]
11656    pub len: ::core::option::Option<i64>,
11657    #[prost(int64, optional, tag="6")]
11658    pub size: ::core::option::Option<i64>,
11659    #[prost(uint64, optional, tag="7")]
11660    pub blocks: ::core::option::Option<u64>,
11661    #[prost(int32, optional, tag="8")]
11662    pub ret: ::core::option::Option<i32>,
11663}
11664#[derive(Clone, PartialEq, ::prost::Message)]
11665pub struct F2fsGetDataBlockFtraceEvent {
11666    #[prost(uint64, optional, tag="1")]
11667    pub dev: ::core::option::Option<u64>,
11668    #[prost(uint64, optional, tag="2")]
11669    pub ino: ::core::option::Option<u64>,
11670    #[prost(uint64, optional, tag="3")]
11671    pub iblock: ::core::option::Option<u64>,
11672    #[prost(uint64, optional, tag="4")]
11673    pub bh_start: ::core::option::Option<u64>,
11674    #[prost(uint64, optional, tag="5")]
11675    pub bh_size: ::core::option::Option<u64>,
11676    #[prost(int32, optional, tag="6")]
11677    pub ret: ::core::option::Option<i32>,
11678}
11679#[derive(Clone, PartialEq, ::prost::Message)]
11680pub struct F2fsGetVictimFtraceEvent {
11681    #[prost(uint64, optional, tag="1")]
11682    pub dev: ::core::option::Option<u64>,
11683    #[prost(int32, optional, tag="2")]
11684    pub r#type: ::core::option::Option<i32>,
11685    #[prost(int32, optional, tag="3")]
11686    pub gc_type: ::core::option::Option<i32>,
11687    #[prost(int32, optional, tag="4")]
11688    pub alloc_mode: ::core::option::Option<i32>,
11689    #[prost(int32, optional, tag="5")]
11690    pub gc_mode: ::core::option::Option<i32>,
11691    #[prost(uint32, optional, tag="6")]
11692    pub victim: ::core::option::Option<u32>,
11693    #[prost(uint32, optional, tag="7")]
11694    pub ofs_unit: ::core::option::Option<u32>,
11695    #[prost(uint32, optional, tag="8")]
11696    pub pre_victim: ::core::option::Option<u32>,
11697    #[prost(uint32, optional, tag="9")]
11698    pub prefree: ::core::option::Option<u32>,
11699    #[prost(uint32, optional, tag="10")]
11700    pub free: ::core::option::Option<u32>,
11701    #[prost(uint32, optional, tag="11")]
11702    pub cost: ::core::option::Option<u32>,
11703}
11704#[derive(Clone, PartialEq, ::prost::Message)]
11705pub struct F2fsIgetFtraceEvent {
11706    #[prost(uint64, optional, tag="1")]
11707    pub dev: ::core::option::Option<u64>,
11708    #[prost(uint64, optional, tag="2")]
11709    pub ino: ::core::option::Option<u64>,
11710    #[prost(uint64, optional, tag="3")]
11711    pub pino: ::core::option::Option<u64>,
11712    #[prost(uint32, optional, tag="4")]
11713    pub mode: ::core::option::Option<u32>,
11714    #[prost(int64, optional, tag="5")]
11715    pub size: ::core::option::Option<i64>,
11716    #[prost(uint32, optional, tag="6")]
11717    pub nlink: ::core::option::Option<u32>,
11718    #[prost(uint64, optional, tag="7")]
11719    pub blocks: ::core::option::Option<u64>,
11720    #[prost(uint32, optional, tag="8")]
11721    pub advise: ::core::option::Option<u32>,
11722}
11723#[derive(Clone, PartialEq, ::prost::Message)]
11724pub struct F2fsIgetExitFtraceEvent {
11725    #[prost(uint64, optional, tag="1")]
11726    pub dev: ::core::option::Option<u64>,
11727    #[prost(uint64, optional, tag="2")]
11728    pub ino: ::core::option::Option<u64>,
11729    #[prost(int32, optional, tag="3")]
11730    pub ret: ::core::option::Option<i32>,
11731}
11732#[derive(Clone, PartialEq, ::prost::Message)]
11733pub struct F2fsNewInodeFtraceEvent {
11734    #[prost(uint64, optional, tag="1")]
11735    pub dev: ::core::option::Option<u64>,
11736    #[prost(uint64, optional, tag="2")]
11737    pub ino: ::core::option::Option<u64>,
11738    #[prost(int32, optional, tag="3")]
11739    pub ret: ::core::option::Option<i32>,
11740}
11741#[derive(Clone, PartialEq, ::prost::Message)]
11742pub struct F2fsReadpageFtraceEvent {
11743    #[prost(uint64, optional, tag="1")]
11744    pub dev: ::core::option::Option<u64>,
11745    #[prost(uint64, optional, tag="2")]
11746    pub ino: ::core::option::Option<u64>,
11747    #[prost(uint64, optional, tag="3")]
11748    pub index: ::core::option::Option<u64>,
11749    #[prost(uint64, optional, tag="4")]
11750    pub blkaddr: ::core::option::Option<u64>,
11751    #[prost(int32, optional, tag="5")]
11752    pub r#type: ::core::option::Option<i32>,
11753    #[prost(int32, optional, tag="6")]
11754    pub dir: ::core::option::Option<i32>,
11755    #[prost(int32, optional, tag="7")]
11756    pub dirty: ::core::option::Option<i32>,
11757    #[prost(int32, optional, tag="8")]
11758    pub uptodate: ::core::option::Option<i32>,
11759}
11760#[derive(Clone, PartialEq, ::prost::Message)]
11761pub struct F2fsReserveNewBlockFtraceEvent {
11762    #[prost(uint64, optional, tag="1")]
11763    pub dev: ::core::option::Option<u64>,
11764    #[prost(uint32, optional, tag="2")]
11765    pub nid: ::core::option::Option<u32>,
11766    #[prost(uint32, optional, tag="3")]
11767    pub ofs_in_node: ::core::option::Option<u32>,
11768}
11769#[derive(Clone, PartialEq, ::prost::Message)]
11770pub struct F2fsSetPageDirtyFtraceEvent {
11771    #[prost(uint64, optional, tag="1")]
11772    pub dev: ::core::option::Option<u64>,
11773    #[prost(uint64, optional, tag="2")]
11774    pub ino: ::core::option::Option<u64>,
11775    #[prost(int32, optional, tag="3")]
11776    pub r#type: ::core::option::Option<i32>,
11777    #[prost(int32, optional, tag="4")]
11778    pub dir: ::core::option::Option<i32>,
11779    #[prost(uint64, optional, tag="5")]
11780    pub index: ::core::option::Option<u64>,
11781    #[prost(int32, optional, tag="6")]
11782    pub dirty: ::core::option::Option<i32>,
11783    #[prost(int32, optional, tag="7")]
11784    pub uptodate: ::core::option::Option<i32>,
11785}
11786#[derive(Clone, PartialEq, ::prost::Message)]
11787pub struct F2fsSubmitWritePageFtraceEvent {
11788    #[prost(uint64, optional, tag="1")]
11789    pub dev: ::core::option::Option<u64>,
11790    #[prost(uint64, optional, tag="2")]
11791    pub ino: ::core::option::Option<u64>,
11792    #[prost(int32, optional, tag="3")]
11793    pub r#type: ::core::option::Option<i32>,
11794    #[prost(uint64, optional, tag="4")]
11795    pub index: ::core::option::Option<u64>,
11796    #[prost(uint32, optional, tag="5")]
11797    pub block: ::core::option::Option<u32>,
11798}
11799#[derive(Clone, PartialEq, ::prost::Message)]
11800pub struct F2fsSyncFileEnterFtraceEvent {
11801    #[prost(uint64, optional, tag="1")]
11802    pub dev: ::core::option::Option<u64>,
11803    #[prost(uint64, optional, tag="2")]
11804    pub ino: ::core::option::Option<u64>,
11805    #[prost(uint64, optional, tag="3")]
11806    pub pino: ::core::option::Option<u64>,
11807    #[prost(uint32, optional, tag="4")]
11808    pub mode: ::core::option::Option<u32>,
11809    #[prost(int64, optional, tag="5")]
11810    pub size: ::core::option::Option<i64>,
11811    #[prost(uint32, optional, tag="6")]
11812    pub nlink: ::core::option::Option<u32>,
11813    #[prost(uint64, optional, tag="7")]
11814    pub blocks: ::core::option::Option<u64>,
11815    #[prost(uint32, optional, tag="8")]
11816    pub advise: ::core::option::Option<u32>,
11817}
11818#[derive(Clone, PartialEq, ::prost::Message)]
11819pub struct F2fsSyncFileExitFtraceEvent {
11820    #[prost(uint64, optional, tag="1")]
11821    pub dev: ::core::option::Option<u64>,
11822    #[prost(uint64, optional, tag="2")]
11823    pub ino: ::core::option::Option<u64>,
11824    #[prost(uint32, optional, tag="3")]
11825    pub need_cp: ::core::option::Option<u32>,
11826    #[prost(int32, optional, tag="4")]
11827    pub datasync: ::core::option::Option<i32>,
11828    #[prost(int32, optional, tag="5")]
11829    pub ret: ::core::option::Option<i32>,
11830    #[prost(int32, optional, tag="6")]
11831    pub cp_reason: ::core::option::Option<i32>,
11832}
11833#[derive(Clone, PartialEq, ::prost::Message)]
11834pub struct F2fsSyncFsFtraceEvent {
11835    #[prost(uint64, optional, tag="1")]
11836    pub dev: ::core::option::Option<u64>,
11837    #[prost(int32, optional, tag="2")]
11838    pub dirty: ::core::option::Option<i32>,
11839    #[prost(int32, optional, tag="3")]
11840    pub wait: ::core::option::Option<i32>,
11841}
11842#[derive(Clone, PartialEq, ::prost::Message)]
11843pub struct F2fsTruncateFtraceEvent {
11844    #[prost(uint64, optional, tag="1")]
11845    pub dev: ::core::option::Option<u64>,
11846    #[prost(uint64, optional, tag="2")]
11847    pub ino: ::core::option::Option<u64>,
11848    #[prost(uint64, optional, tag="3")]
11849    pub pino: ::core::option::Option<u64>,
11850    #[prost(uint32, optional, tag="4")]
11851    pub mode: ::core::option::Option<u32>,
11852    #[prost(int64, optional, tag="5")]
11853    pub size: ::core::option::Option<i64>,
11854    #[prost(uint32, optional, tag="6")]
11855    pub nlink: ::core::option::Option<u32>,
11856    #[prost(uint64, optional, tag="7")]
11857    pub blocks: ::core::option::Option<u64>,
11858    #[prost(uint32, optional, tag="8")]
11859    pub advise: ::core::option::Option<u32>,
11860}
11861#[derive(Clone, PartialEq, ::prost::Message)]
11862pub struct F2fsTruncateBlocksEnterFtraceEvent {
11863    #[prost(uint64, optional, tag="1")]
11864    pub dev: ::core::option::Option<u64>,
11865    #[prost(uint64, optional, tag="2")]
11866    pub ino: ::core::option::Option<u64>,
11867    #[prost(int64, optional, tag="3")]
11868    pub size: ::core::option::Option<i64>,
11869    #[prost(uint64, optional, tag="4")]
11870    pub blocks: ::core::option::Option<u64>,
11871    #[prost(uint64, optional, tag="5")]
11872    pub from: ::core::option::Option<u64>,
11873}
11874#[derive(Clone, PartialEq, ::prost::Message)]
11875pub struct F2fsTruncateBlocksExitFtraceEvent {
11876    #[prost(uint64, optional, tag="1")]
11877    pub dev: ::core::option::Option<u64>,
11878    #[prost(uint64, optional, tag="2")]
11879    pub ino: ::core::option::Option<u64>,
11880    #[prost(int32, optional, tag="3")]
11881    pub ret: ::core::option::Option<i32>,
11882}
11883#[derive(Clone, PartialEq, ::prost::Message)]
11884pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
11885    #[prost(uint64, optional, tag="1")]
11886    pub dev: ::core::option::Option<u64>,
11887    #[prost(uint64, optional, tag="2")]
11888    pub ino: ::core::option::Option<u64>,
11889    #[prost(uint32, optional, tag="3")]
11890    pub nid: ::core::option::Option<u32>,
11891    #[prost(uint32, optional, tag="4")]
11892    pub ofs: ::core::option::Option<u32>,
11893    #[prost(int32, optional, tag="5")]
11894    pub free: ::core::option::Option<i32>,
11895}
11896#[derive(Clone, PartialEq, ::prost::Message)]
11897pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
11898    #[prost(uint64, optional, tag="1")]
11899    pub dev: ::core::option::Option<u64>,
11900    #[prost(uint64, optional, tag="2")]
11901    pub ino: ::core::option::Option<u64>,
11902    #[prost(int64, optional, tag="3")]
11903    pub size: ::core::option::Option<i64>,
11904    #[prost(uint64, optional, tag="4")]
11905    pub blocks: ::core::option::Option<u64>,
11906    #[prost(uint64, optional, tag="5")]
11907    pub from: ::core::option::Option<u64>,
11908}
11909#[derive(Clone, PartialEq, ::prost::Message)]
11910pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
11911    #[prost(uint64, optional, tag="1")]
11912    pub dev: ::core::option::Option<u64>,
11913    #[prost(uint64, optional, tag="2")]
11914    pub ino: ::core::option::Option<u64>,
11915    #[prost(int32, optional, tag="3")]
11916    pub ret: ::core::option::Option<i32>,
11917}
11918#[derive(Clone, PartialEq, ::prost::Message)]
11919pub struct F2fsTruncateNodeFtraceEvent {
11920    #[prost(uint64, optional, tag="1")]
11921    pub dev: ::core::option::Option<u64>,
11922    #[prost(uint64, optional, tag="2")]
11923    pub ino: ::core::option::Option<u64>,
11924    #[prost(uint32, optional, tag="3")]
11925    pub nid: ::core::option::Option<u32>,
11926    #[prost(uint32, optional, tag="4")]
11927    pub blk_addr: ::core::option::Option<u32>,
11928}
11929#[derive(Clone, PartialEq, ::prost::Message)]
11930pub struct F2fsTruncateNodesEnterFtraceEvent {
11931    #[prost(uint64, optional, tag="1")]
11932    pub dev: ::core::option::Option<u64>,
11933    #[prost(uint64, optional, tag="2")]
11934    pub ino: ::core::option::Option<u64>,
11935    #[prost(uint32, optional, tag="3")]
11936    pub nid: ::core::option::Option<u32>,
11937    #[prost(uint32, optional, tag="4")]
11938    pub blk_addr: ::core::option::Option<u32>,
11939}
11940#[derive(Clone, PartialEq, ::prost::Message)]
11941pub struct F2fsTruncateNodesExitFtraceEvent {
11942    #[prost(uint64, optional, tag="1")]
11943    pub dev: ::core::option::Option<u64>,
11944    #[prost(uint64, optional, tag="2")]
11945    pub ino: ::core::option::Option<u64>,
11946    #[prost(int32, optional, tag="3")]
11947    pub ret: ::core::option::Option<i32>,
11948}
11949#[derive(Clone, PartialEq, ::prost::Message)]
11950pub struct F2fsTruncatePartialNodesFtraceEvent {
11951    #[prost(uint64, optional, tag="1")]
11952    pub dev: ::core::option::Option<u64>,
11953    #[prost(uint64, optional, tag="2")]
11954    pub ino: ::core::option::Option<u64>,
11955    #[prost(uint32, optional, tag="3")]
11956    pub nid: ::core::option::Option<u32>,
11957    #[prost(int32, optional, tag="4")]
11958    pub depth: ::core::option::Option<i32>,
11959    #[prost(int32, optional, tag="5")]
11960    pub err: ::core::option::Option<i32>,
11961}
11962#[derive(Clone, PartialEq, ::prost::Message)]
11963pub struct F2fsUnlinkEnterFtraceEvent {
11964    #[prost(uint64, optional, tag="1")]
11965    pub dev: ::core::option::Option<u64>,
11966    #[prost(uint64, optional, tag="2")]
11967    pub ino: ::core::option::Option<u64>,
11968    #[prost(int64, optional, tag="3")]
11969    pub size: ::core::option::Option<i64>,
11970    #[prost(uint64, optional, tag="4")]
11971    pub blocks: ::core::option::Option<u64>,
11972    #[prost(string, optional, tag="5")]
11973    pub name: ::core::option::Option<::prost::alloc::string::String>,
11974}
11975#[derive(Clone, PartialEq, ::prost::Message)]
11976pub struct F2fsUnlinkExitFtraceEvent {
11977    #[prost(uint64, optional, tag="1")]
11978    pub dev: ::core::option::Option<u64>,
11979    #[prost(uint64, optional, tag="2")]
11980    pub ino: ::core::option::Option<u64>,
11981    #[prost(int32, optional, tag="3")]
11982    pub ret: ::core::option::Option<i32>,
11983}
11984#[derive(Clone, PartialEq, ::prost::Message)]
11985pub struct F2fsVmPageMkwriteFtraceEvent {
11986    #[prost(uint64, optional, tag="1")]
11987    pub dev: ::core::option::Option<u64>,
11988    #[prost(uint64, optional, tag="2")]
11989    pub ino: ::core::option::Option<u64>,
11990    #[prost(int32, optional, tag="3")]
11991    pub r#type: ::core::option::Option<i32>,
11992    #[prost(int32, optional, tag="4")]
11993    pub dir: ::core::option::Option<i32>,
11994    #[prost(uint64, optional, tag="5")]
11995    pub index: ::core::option::Option<u64>,
11996    #[prost(int32, optional, tag="6")]
11997    pub dirty: ::core::option::Option<i32>,
11998    #[prost(int32, optional, tag="7")]
11999    pub uptodate: ::core::option::Option<i32>,
12000}
12001#[derive(Clone, PartialEq, ::prost::Message)]
12002pub struct F2fsWriteBeginFtraceEvent {
12003    #[prost(uint64, optional, tag="1")]
12004    pub dev: ::core::option::Option<u64>,
12005    #[prost(uint64, optional, tag="2")]
12006    pub ino: ::core::option::Option<u64>,
12007    #[prost(int64, optional, tag="3")]
12008    pub pos: ::core::option::Option<i64>,
12009    #[prost(uint32, optional, tag="4")]
12010    pub len: ::core::option::Option<u32>,
12011    #[prost(uint32, optional, tag="5")]
12012    pub flags: ::core::option::Option<u32>,
12013}
12014#[derive(Clone, PartialEq, ::prost::Message)]
12015pub struct F2fsWriteCheckpointFtraceEvent {
12016    #[prost(uint64, optional, tag="1")]
12017    pub dev: ::core::option::Option<u64>,
12018    #[prost(uint32, optional, tag="2")]
12019    pub is_umount: ::core::option::Option<u32>,
12020    #[prost(string, optional, tag="3")]
12021    pub msg: ::core::option::Option<::prost::alloc::string::String>,
12022    #[prost(int32, optional, tag="4")]
12023    pub reason: ::core::option::Option<i32>,
12024}
12025#[derive(Clone, PartialEq, ::prost::Message)]
12026pub struct F2fsWriteEndFtraceEvent {
12027    #[prost(uint64, optional, tag="1")]
12028    pub dev: ::core::option::Option<u64>,
12029    #[prost(uint64, optional, tag="2")]
12030    pub ino: ::core::option::Option<u64>,
12031    #[prost(int64, optional, tag="3")]
12032    pub pos: ::core::option::Option<i64>,
12033    #[prost(uint32, optional, tag="4")]
12034    pub len: ::core::option::Option<u32>,
12035    #[prost(uint32, optional, tag="5")]
12036    pub copied: ::core::option::Option<u32>,
12037}
12038#[derive(Clone, PartialEq, ::prost::Message)]
12039pub struct F2fsIostatFtraceEvent {
12040    #[prost(uint64, optional, tag="1")]
12041    pub app_bio: ::core::option::Option<u64>,
12042    #[prost(uint64, optional, tag="2")]
12043    pub app_brio: ::core::option::Option<u64>,
12044    #[prost(uint64, optional, tag="3")]
12045    pub app_dio: ::core::option::Option<u64>,
12046    #[prost(uint64, optional, tag="4")]
12047    pub app_drio: ::core::option::Option<u64>,
12048    #[prost(uint64, optional, tag="5")]
12049    pub app_mio: ::core::option::Option<u64>,
12050    #[prost(uint64, optional, tag="6")]
12051    pub app_mrio: ::core::option::Option<u64>,
12052    #[prost(uint64, optional, tag="7")]
12053    pub app_rio: ::core::option::Option<u64>,
12054    #[prost(uint64, optional, tag="8")]
12055    pub app_wio: ::core::option::Option<u64>,
12056    #[prost(uint64, optional, tag="9")]
12057    pub dev: ::core::option::Option<u64>,
12058    #[prost(uint64, optional, tag="10")]
12059    pub fs_cdrio: ::core::option::Option<u64>,
12060    #[prost(uint64, optional, tag="11")]
12061    pub fs_cp_dio: ::core::option::Option<u64>,
12062    #[prost(uint64, optional, tag="12")]
12063    pub fs_cp_mio: ::core::option::Option<u64>,
12064    #[prost(uint64, optional, tag="13")]
12065    pub fs_cp_nio: ::core::option::Option<u64>,
12066    #[prost(uint64, optional, tag="14")]
12067    pub fs_dio: ::core::option::Option<u64>,
12068    #[prost(uint64, optional, tag="15")]
12069    pub fs_discard: ::core::option::Option<u64>,
12070    #[prost(uint64, optional, tag="16")]
12071    pub fs_drio: ::core::option::Option<u64>,
12072    #[prost(uint64, optional, tag="17")]
12073    pub fs_gc_dio: ::core::option::Option<u64>,
12074    #[prost(uint64, optional, tag="18")]
12075    pub fs_gc_nio: ::core::option::Option<u64>,
12076    #[prost(uint64, optional, tag="19")]
12077    pub fs_gdrio: ::core::option::Option<u64>,
12078    #[prost(uint64, optional, tag="20")]
12079    pub fs_mio: ::core::option::Option<u64>,
12080    #[prost(uint64, optional, tag="21")]
12081    pub fs_mrio: ::core::option::Option<u64>,
12082    #[prost(uint64, optional, tag="22")]
12083    pub fs_nio: ::core::option::Option<u64>,
12084    #[prost(uint64, optional, tag="23")]
12085    pub fs_nrio: ::core::option::Option<u64>,
12086}
12087#[derive(Clone, PartialEq, ::prost::Message)]
12088pub struct F2fsIostatLatencyFtraceEvent {
12089    #[prost(uint32, optional, tag="1")]
12090    pub d_rd_avg: ::core::option::Option<u32>,
12091    #[prost(uint32, optional, tag="2")]
12092    pub d_rd_cnt: ::core::option::Option<u32>,
12093    #[prost(uint32, optional, tag="3")]
12094    pub d_rd_peak: ::core::option::Option<u32>,
12095    #[prost(uint32, optional, tag="4")]
12096    pub d_wr_as_avg: ::core::option::Option<u32>,
12097    #[prost(uint32, optional, tag="5")]
12098    pub d_wr_as_cnt: ::core::option::Option<u32>,
12099    #[prost(uint32, optional, tag="6")]
12100    pub d_wr_as_peak: ::core::option::Option<u32>,
12101    #[prost(uint32, optional, tag="7")]
12102    pub d_wr_s_avg: ::core::option::Option<u32>,
12103    #[prost(uint32, optional, tag="8")]
12104    pub d_wr_s_cnt: ::core::option::Option<u32>,
12105    #[prost(uint32, optional, tag="9")]
12106    pub d_wr_s_peak: ::core::option::Option<u32>,
12107    #[prost(uint64, optional, tag="10")]
12108    pub dev: ::core::option::Option<u64>,
12109    #[prost(uint32, optional, tag="11")]
12110    pub m_rd_avg: ::core::option::Option<u32>,
12111    #[prost(uint32, optional, tag="12")]
12112    pub m_rd_cnt: ::core::option::Option<u32>,
12113    #[prost(uint32, optional, tag="13")]
12114    pub m_rd_peak: ::core::option::Option<u32>,
12115    #[prost(uint32, optional, tag="14")]
12116    pub m_wr_as_avg: ::core::option::Option<u32>,
12117    #[prost(uint32, optional, tag="15")]
12118    pub m_wr_as_cnt: ::core::option::Option<u32>,
12119    #[prost(uint32, optional, tag="16")]
12120    pub m_wr_as_peak: ::core::option::Option<u32>,
12121    #[prost(uint32, optional, tag="17")]
12122    pub m_wr_s_avg: ::core::option::Option<u32>,
12123    #[prost(uint32, optional, tag="18")]
12124    pub m_wr_s_cnt: ::core::option::Option<u32>,
12125    #[prost(uint32, optional, tag="19")]
12126    pub m_wr_s_peak: ::core::option::Option<u32>,
12127    #[prost(uint32, optional, tag="20")]
12128    pub n_rd_avg: ::core::option::Option<u32>,
12129    #[prost(uint32, optional, tag="21")]
12130    pub n_rd_cnt: ::core::option::Option<u32>,
12131    #[prost(uint32, optional, tag="22")]
12132    pub n_rd_peak: ::core::option::Option<u32>,
12133    #[prost(uint32, optional, tag="23")]
12134    pub n_wr_as_avg: ::core::option::Option<u32>,
12135    #[prost(uint32, optional, tag="24")]
12136    pub n_wr_as_cnt: ::core::option::Option<u32>,
12137    #[prost(uint32, optional, tag="25")]
12138    pub n_wr_as_peak: ::core::option::Option<u32>,
12139    #[prost(uint32, optional, tag="26")]
12140    pub n_wr_s_avg: ::core::option::Option<u32>,
12141    #[prost(uint32, optional, tag="27")]
12142    pub n_wr_s_cnt: ::core::option::Option<u32>,
12143    #[prost(uint32, optional, tag="28")]
12144    pub n_wr_s_peak: ::core::option::Option<u32>,
12145}
12146#[derive(Clone, PartialEq, ::prost::Message)]
12147pub struct F2fsBackgroundGcFtraceEvent {
12148    #[prost(uint64, optional, tag="1")]
12149    pub dev: ::core::option::Option<u64>,
12150    #[prost(uint32, optional, tag="2")]
12151    pub wait_ms: ::core::option::Option<u32>,
12152    #[prost(uint32, optional, tag="3")]
12153    pub prefree: ::core::option::Option<u32>,
12154    #[prost(uint32, optional, tag="4")]
12155    pub free: ::core::option::Option<u32>,
12156}
12157#[derive(Clone, PartialEq, ::prost::Message)]
12158pub struct F2fsGcBeginFtraceEvent {
12159    #[prost(uint64, optional, tag="1")]
12160    pub dev: ::core::option::Option<u64>,
12161    #[prost(uint32, optional, tag="2")]
12162    pub sync: ::core::option::Option<u32>,
12163    #[prost(uint32, optional, tag="3")]
12164    pub background: ::core::option::Option<u32>,
12165    #[prost(int64, optional, tag="4")]
12166    pub dirty_nodes: ::core::option::Option<i64>,
12167    #[prost(int64, optional, tag="5")]
12168    pub dirty_dents: ::core::option::Option<i64>,
12169    #[prost(int64, optional, tag="6")]
12170    pub dirty_imeta: ::core::option::Option<i64>,
12171    #[prost(uint32, optional, tag="7")]
12172    pub free_sec: ::core::option::Option<u32>,
12173    #[prost(uint32, optional, tag="8")]
12174    pub free_seg: ::core::option::Option<u32>,
12175    #[prost(int32, optional, tag="9")]
12176    pub reserved_seg: ::core::option::Option<i32>,
12177    #[prost(uint32, optional, tag="10")]
12178    pub prefree_seg: ::core::option::Option<u32>,
12179    #[prost(int32, optional, tag="11")]
12180    pub gc_type: ::core::option::Option<i32>,
12181    #[prost(uint32, optional, tag="12")]
12182    pub no_bg_gc: ::core::option::Option<u32>,
12183    #[prost(uint32, optional, tag="13")]
12184    pub nr_free_secs: ::core::option::Option<u32>,
12185}
12186#[derive(Clone, PartialEq, ::prost::Message)]
12187pub struct F2fsGcEndFtraceEvent {
12188    #[prost(uint64, optional, tag="1")]
12189    pub dev: ::core::option::Option<u64>,
12190    #[prost(int32, optional, tag="2")]
12191    pub ret: ::core::option::Option<i32>,
12192    #[prost(int32, optional, tag="3")]
12193    pub seg_freed: ::core::option::Option<i32>,
12194    #[prost(int32, optional, tag="4")]
12195    pub sec_freed: ::core::option::Option<i32>,
12196    #[prost(int64, optional, tag="5")]
12197    pub dirty_nodes: ::core::option::Option<i64>,
12198    #[prost(int64, optional, tag="6")]
12199    pub dirty_dents: ::core::option::Option<i64>,
12200    #[prost(int64, optional, tag="7")]
12201    pub dirty_imeta: ::core::option::Option<i64>,
12202    #[prost(uint32, optional, tag="8")]
12203    pub free_sec: ::core::option::Option<u32>,
12204    #[prost(uint32, optional, tag="9")]
12205    pub free_seg: ::core::option::Option<u32>,
12206    #[prost(int32, optional, tag="10")]
12207    pub reserved_seg: ::core::option::Option<i32>,
12208    #[prost(uint32, optional, tag="11")]
12209    pub prefree_seg: ::core::option::Option<u32>,
12210}
12211// End of protos/perfetto/trace/ftrace/f2fs.proto
12212
12213// Begin of protos/perfetto/trace/ftrace/fastrpc.proto
12214
12215#[derive(Clone, PartialEq, ::prost::Message)]
12216pub struct FastrpcDmaStatFtraceEvent {
12217    #[prost(int32, optional, tag="1")]
12218    pub cid: ::core::option::Option<i32>,
12219    #[prost(int64, optional, tag="2")]
12220    pub len: ::core::option::Option<i64>,
12221    #[prost(uint64, optional, tag="3")]
12222    pub total_allocated: ::core::option::Option<u64>,
12223}
12224#[derive(Clone, PartialEq, ::prost::Message)]
12225pub struct FastrpcDmaFreeFtraceEvent {
12226    #[prost(int32, optional, tag="1")]
12227    pub cid: ::core::option::Option<i32>,
12228    #[prost(uint64, optional, tag="2")]
12229    pub phys: ::core::option::Option<u64>,
12230    #[prost(uint64, optional, tag="3")]
12231    pub size: ::core::option::Option<u64>,
12232}
12233#[derive(Clone, PartialEq, ::prost::Message)]
12234pub struct FastrpcDmaAllocFtraceEvent {
12235    #[prost(int32, optional, tag="1")]
12236    pub cid: ::core::option::Option<i32>,
12237    #[prost(uint64, optional, tag="2")]
12238    pub phys: ::core::option::Option<u64>,
12239    #[prost(uint64, optional, tag="3")]
12240    pub size: ::core::option::Option<u64>,
12241    #[prost(uint64, optional, tag="4")]
12242    pub attr: ::core::option::Option<u64>,
12243    #[prost(int32, optional, tag="5")]
12244    pub mflags: ::core::option::Option<i32>,
12245}
12246#[derive(Clone, PartialEq, ::prost::Message)]
12247pub struct FastrpcDmaUnmapFtraceEvent {
12248    #[prost(int32, optional, tag="1")]
12249    pub cid: ::core::option::Option<i32>,
12250    #[prost(uint64, optional, tag="2")]
12251    pub phys: ::core::option::Option<u64>,
12252    #[prost(uint64, optional, tag="3")]
12253    pub size: ::core::option::Option<u64>,
12254}
12255#[derive(Clone, PartialEq, ::prost::Message)]
12256pub struct FastrpcDmaMapFtraceEvent {
12257    #[prost(int32, optional, tag="1")]
12258    pub cid: ::core::option::Option<i32>,
12259    #[prost(int32, optional, tag="2")]
12260    pub fd: ::core::option::Option<i32>,
12261    #[prost(uint64, optional, tag="3")]
12262    pub phys: ::core::option::Option<u64>,
12263    #[prost(uint64, optional, tag="4")]
12264    pub size: ::core::option::Option<u64>,
12265    #[prost(uint64, optional, tag="5")]
12266    pub len: ::core::option::Option<u64>,
12267    #[prost(uint32, optional, tag="6")]
12268    pub attr: ::core::option::Option<u32>,
12269    #[prost(int32, optional, tag="7")]
12270    pub mflags: ::core::option::Option<i32>,
12271}
12272// End of protos/perfetto/trace/ftrace/fastrpc.proto
12273
12274// Begin of protos/perfetto/trace/ftrace/fence.proto
12275
12276#[derive(Clone, PartialEq, ::prost::Message)]
12277pub struct FenceInitFtraceEvent {
12278    #[prost(uint32, optional, tag="1")]
12279    pub context: ::core::option::Option<u32>,
12280    #[prost(string, optional, tag="2")]
12281    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12282    #[prost(uint32, optional, tag="3")]
12283    pub seqno: ::core::option::Option<u32>,
12284    #[prost(string, optional, tag="4")]
12285    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12286}
12287#[derive(Clone, PartialEq, ::prost::Message)]
12288pub struct FenceDestroyFtraceEvent {
12289    #[prost(uint32, optional, tag="1")]
12290    pub context: ::core::option::Option<u32>,
12291    #[prost(string, optional, tag="2")]
12292    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12293    #[prost(uint32, optional, tag="3")]
12294    pub seqno: ::core::option::Option<u32>,
12295    #[prost(string, optional, tag="4")]
12296    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12297}
12298#[derive(Clone, PartialEq, ::prost::Message)]
12299pub struct FenceEnableSignalFtraceEvent {
12300    #[prost(uint32, optional, tag="1")]
12301    pub context: ::core::option::Option<u32>,
12302    #[prost(string, optional, tag="2")]
12303    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12304    #[prost(uint32, optional, tag="3")]
12305    pub seqno: ::core::option::Option<u32>,
12306    #[prost(string, optional, tag="4")]
12307    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12308}
12309#[derive(Clone, PartialEq, ::prost::Message)]
12310pub struct FenceSignaledFtraceEvent {
12311    #[prost(uint32, optional, tag="1")]
12312    pub context: ::core::option::Option<u32>,
12313    #[prost(string, optional, tag="2")]
12314    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12315    #[prost(uint32, optional, tag="3")]
12316    pub seqno: ::core::option::Option<u32>,
12317    #[prost(string, optional, tag="4")]
12318    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12319}
12320// End of protos/perfetto/trace/ftrace/fence.proto
12321
12322// Begin of protos/perfetto/trace/ftrace/filemap.proto
12323
12324#[derive(Clone, PartialEq, ::prost::Message)]
12325pub struct MmFilemapAddToPageCacheFtraceEvent {
12326    #[prost(uint64, optional, tag="1")]
12327    pub pfn: ::core::option::Option<u64>,
12328    #[prost(uint64, optional, tag="2")]
12329    pub i_ino: ::core::option::Option<u64>,
12330    #[prost(uint64, optional, tag="3")]
12331    pub index: ::core::option::Option<u64>,
12332    #[prost(uint64, optional, tag="4")]
12333    pub s_dev: ::core::option::Option<u64>,
12334    #[prost(uint64, optional, tag="5")]
12335    pub page: ::core::option::Option<u64>,
12336}
12337#[derive(Clone, PartialEq, ::prost::Message)]
12338pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
12339    #[prost(uint64, optional, tag="1")]
12340    pub pfn: ::core::option::Option<u64>,
12341    #[prost(uint64, optional, tag="2")]
12342    pub i_ino: ::core::option::Option<u64>,
12343    #[prost(uint64, optional, tag="3")]
12344    pub index: ::core::option::Option<u64>,
12345    #[prost(uint64, optional, tag="4")]
12346    pub s_dev: ::core::option::Option<u64>,
12347    #[prost(uint64, optional, tag="5")]
12348    pub page: ::core::option::Option<u64>,
12349}
12350// End of protos/perfetto/trace/ftrace/filemap.proto
12351
12352// Begin of protos/perfetto/trace/ftrace/fs.proto
12353
12354#[derive(Clone, PartialEq, ::prost::Message)]
12355pub struct DoSysOpenFtraceEvent {
12356    #[prost(string, optional, tag="1")]
12357    pub filename: ::core::option::Option<::prost::alloc::string::String>,
12358    #[prost(int32, optional, tag="2")]
12359    pub flags: ::core::option::Option<i32>,
12360    #[prost(int32, optional, tag="3")]
12361    pub mode: ::core::option::Option<i32>,
12362}
12363#[derive(Clone, PartialEq, ::prost::Message)]
12364pub struct OpenExecFtraceEvent {
12365    #[prost(string, optional, tag="1")]
12366    pub filename: ::core::option::Option<::prost::alloc::string::String>,
12367}
12368// End of protos/perfetto/trace/ftrace/fs.proto
12369
12370// Begin of protos/perfetto/trace/ftrace/ftrace.proto
12371
12372#[derive(Clone, PartialEq, ::prost::Message)]
12373pub struct PrintFtraceEvent {
12374    #[prost(uint64, optional, tag="1")]
12375    pub ip: ::core::option::Option<u64>,
12376    #[prost(string, optional, tag="2")]
12377    pub buf: ::core::option::Option<::prost::alloc::string::String>,
12378}
12379#[derive(Clone, PartialEq, ::prost::Message)]
12380pub struct FuncgraphEntryFtraceEvent {
12381    #[prost(int32, optional, tag="1")]
12382    pub depth: ::core::option::Option<i32>,
12383    #[prost(uint64, optional, tag="2")]
12384    pub func: ::core::option::Option<u64>,
12385}
12386#[derive(Clone, PartialEq, ::prost::Message)]
12387pub struct FuncgraphExitFtraceEvent {
12388    #[prost(uint64, optional, tag="1")]
12389    pub calltime: ::core::option::Option<u64>,
12390    #[prost(int32, optional, tag="2")]
12391    pub depth: ::core::option::Option<i32>,
12392    #[prost(uint64, optional, tag="3")]
12393    pub func: ::core::option::Option<u64>,
12394    #[prost(uint64, optional, tag="4")]
12395    pub overrun: ::core::option::Option<u64>,
12396    #[prost(uint64, optional, tag="5")]
12397    pub rettime: ::core::option::Option<u64>,
12398}
12399// End of protos/perfetto/trace/ftrace/ftrace.proto
12400
12401// Begin of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
12402
12403#[derive(Clone, PartialEq, ::prost::Message)]
12404pub struct FwtpPerfettoCounterFtraceEvent {
12405    #[prost(uint64, optional, tag="1")]
12406    pub timestamp: ::core::option::Option<u64>,
12407    #[prost(uint32, optional, tag="2")]
12408    pub track_id: ::core::option::Option<u32>,
12409    #[prost(string, optional, tag="3")]
12410    pub category: ::core::option::Option<::prost::alloc::string::String>,
12411    #[prost(string, optional, tag="4")]
12412    pub name: ::core::option::Option<::prost::alloc::string::String>,
12413    #[prost(uint32, optional, tag="5")]
12414    pub value: ::core::option::Option<u32>,
12415}
12416// End of protos/perfetto/trace/ftrace/fwtp_ftrace.proto
12417
12418// Begin of protos/perfetto/trace/ftrace/g2d.proto
12419
12420#[derive(Clone, PartialEq, ::prost::Message)]
12421pub struct G2dTracingMarkWriteFtraceEvent {
12422    #[prost(int32, optional, tag="1")]
12423    pub pid: ::core::option::Option<i32>,
12424    #[prost(string, optional, tag="4")]
12425    pub name: ::core::option::Option<::prost::alloc::string::String>,
12426    #[prost(uint32, optional, tag="5")]
12427    pub r#type: ::core::option::Option<u32>,
12428    #[prost(int32, optional, tag="6")]
12429    pub value: ::core::option::Option<i32>,
12430}
12431// End of protos/perfetto/trace/ftrace/g2d.proto
12432
12433// Begin of protos/perfetto/trace/ftrace/generic.proto
12434
12435/// This generic proto is used to output events in the trace
12436/// when a specific proto for that event does not exist.
12437#[derive(Clone, PartialEq, ::prost::Message)]
12438pub struct GenericFtraceEvent {
12439    #[prost(string, optional, tag="1")]
12440    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
12441    #[prost(message, repeated, tag="2")]
12442    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
12443}
12444/// Nested message and enum types in `GenericFtraceEvent`.
12445pub mod generic_ftrace_event {
12446    #[derive(Clone, PartialEq, ::prost::Message)]
12447    pub struct Field {
12448        #[prost(string, optional, tag="1")]
12449        pub name: ::core::option::Option<::prost::alloc::string::String>,
12450        #[prost(oneof="field::Value", tags="3, 4, 5")]
12451        pub value: ::core::option::Option<field::Value>,
12452    }
12453    /// Nested message and enum types in `Field`.
12454    pub mod field {
12455        #[derive(Clone, PartialEq, ::prost::Oneof)]
12456        pub enum Value {
12457            #[prost(string, tag="3")]
12458            StrValue(::prost::alloc::string::String),
12459            #[prost(int64, tag="4")]
12460            IntValue(i64),
12461            #[prost(uint64, tag="5")]
12462            UintValue(u64),
12463        }
12464    }
12465}
12466#[derive(Clone, PartialEq, ::prost::Message)]
12467pub struct KprobeEvent {
12468    #[prost(string, optional, tag="1")]
12469    pub name: ::core::option::Option<::prost::alloc::string::String>,
12470    #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
12471    pub r#type: ::core::option::Option<i32>,
12472}
12473/// Nested message and enum types in `KprobeEvent`.
12474pub mod kprobe_event {
12475    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
12476    #[repr(i32)]
12477    pub enum KprobeType {
12478        Unknown = 0,
12479        Begin = 1,
12480        End = 2,
12481        Instant = 3,
12482    }
12483    impl KprobeType {
12484        /// String value of the enum field names used in the ProtoBuf definition.
12485        ///
12486        /// The values are not transformed in any way and thus are considered stable
12487        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12488        pub fn as_str_name(&self) -> &'static str {
12489            match self {
12490                KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
12491                KprobeType::Begin => "KPROBE_TYPE_BEGIN",
12492                KprobeType::End => "KPROBE_TYPE_END",
12493                KprobeType::Instant => "KPROBE_TYPE_INSTANT",
12494            }
12495        }
12496    }
12497}
12498// End of protos/perfetto/trace/ftrace/generic.proto
12499
12500// Begin of protos/perfetto/trace/ftrace/google_icc_trace.proto
12501
12502#[derive(Clone, PartialEq, ::prost::Message)]
12503pub struct GoogleIccEventFtraceEvent {
12504    #[prost(string, optional, tag="1")]
12505    pub event: ::core::option::Option<::prost::alloc::string::String>,
12506    #[prost(uint64, optional, tag="2")]
12507    pub timestamp: ::core::option::Option<u64>,
12508}
12509// End of protos/perfetto/trace/ftrace/google_icc_trace.proto
12510
12511// Begin of protos/perfetto/trace/ftrace/google_irm_trace.proto
12512
12513#[derive(Clone, PartialEq, ::prost::Message)]
12514pub struct GoogleIrmEventFtraceEvent {
12515    #[prost(string, optional, tag="1")]
12516    pub event: ::core::option::Option<::prost::alloc::string::String>,
12517    #[prost(uint64, optional, tag="2")]
12518    pub timestamp: ::core::option::Option<u64>,
12519}
12520// End of protos/perfetto/trace/ftrace/google_irm_trace.proto
12521
12522// Begin of protos/perfetto/trace/ftrace/gpu_mem.proto
12523
12524#[derive(Clone, PartialEq, ::prost::Message)]
12525pub struct GpuMemTotalFtraceEvent {
12526    #[prost(uint32, optional, tag="1")]
12527    pub gpu_id: ::core::option::Option<u32>,
12528    #[prost(uint32, optional, tag="2")]
12529    pub pid: ::core::option::Option<u32>,
12530    #[prost(uint64, optional, tag="3")]
12531    pub size: ::core::option::Option<u64>,
12532}
12533// End of protos/perfetto/trace/ftrace/gpu_mem.proto
12534
12535// Begin of protos/perfetto/trace/ftrace/gpu_scheduler.proto
12536
12537#[derive(Clone, PartialEq, ::prost::Message)]
12538pub struct DrmSchedJobFtraceEvent {
12539    #[prost(uint64, optional, tag="1")]
12540    pub entity: ::core::option::Option<u64>,
12541    #[prost(uint64, optional, tag="2")]
12542    pub fence: ::core::option::Option<u64>,
12543    #[prost(int32, optional, tag="3")]
12544    pub hw_job_count: ::core::option::Option<i32>,
12545    #[prost(uint64, optional, tag="4")]
12546    pub id: ::core::option::Option<u64>,
12547    #[prost(uint32, optional, tag="5")]
12548    pub job_count: ::core::option::Option<u32>,
12549    #[prost(string, optional, tag="6")]
12550    pub name: ::core::option::Option<::prost::alloc::string::String>,
12551}
12552#[derive(Clone, PartialEq, ::prost::Message)]
12553pub struct DrmRunJobFtraceEvent {
12554    #[prost(uint64, optional, tag="1")]
12555    pub entity: ::core::option::Option<u64>,
12556    #[prost(uint64, optional, tag="2")]
12557    pub fence: ::core::option::Option<u64>,
12558    #[prost(int32, optional, tag="3")]
12559    pub hw_job_count: ::core::option::Option<i32>,
12560    #[prost(uint64, optional, tag="4")]
12561    pub id: ::core::option::Option<u64>,
12562    #[prost(uint32, optional, tag="5")]
12563    pub job_count: ::core::option::Option<u32>,
12564    #[prost(string, optional, tag="6")]
12565    pub name: ::core::option::Option<::prost::alloc::string::String>,
12566}
12567#[derive(Clone, PartialEq, ::prost::Message)]
12568pub struct DrmSchedProcessJobFtraceEvent {
12569    #[prost(uint64, optional, tag="1")]
12570    pub fence: ::core::option::Option<u64>,
12571}
12572#[derive(Clone, PartialEq, ::prost::Message)]
12573pub struct DrmSchedJobAddDepFtraceEvent {
12574    #[prost(uint64, optional, tag="1")]
12575    pub fence_context: ::core::option::Option<u64>,
12576    #[prost(uint64, optional, tag="2")]
12577    pub fence_seqno: ::core::option::Option<u64>,
12578    #[prost(uint64, optional, tag="3")]
12579    pub ctx: ::core::option::Option<u64>,
12580    #[prost(uint64, optional, tag="4")]
12581    pub seqno: ::core::option::Option<u64>,
12582}
12583#[derive(Clone, PartialEq, ::prost::Message)]
12584pub struct DrmSchedJobDoneFtraceEvent {
12585    #[prost(uint64, optional, tag="1")]
12586    pub fence_context: ::core::option::Option<u64>,
12587    #[prost(uint64, optional, tag="2")]
12588    pub fence_seqno: ::core::option::Option<u64>,
12589}
12590#[derive(Clone, PartialEq, ::prost::Message)]
12591pub struct DrmSchedJobQueueFtraceEvent {
12592    #[prost(string, optional, tag="1")]
12593    pub name: ::core::option::Option<::prost::alloc::string::String>,
12594    #[prost(uint32, optional, tag="2")]
12595    pub job_count: ::core::option::Option<u32>,
12596    #[prost(int32, optional, tag="3")]
12597    pub hw_job_count: ::core::option::Option<i32>,
12598    #[prost(string, optional, tag="4")]
12599    pub dev: ::core::option::Option<::prost::alloc::string::String>,
12600    #[prost(uint64, optional, tag="5")]
12601    pub fence_context: ::core::option::Option<u64>,
12602    #[prost(uint64, optional, tag="6")]
12603    pub fence_seqno: ::core::option::Option<u64>,
12604    #[prost(uint64, optional, tag="7")]
12605    pub client_id: ::core::option::Option<u64>,
12606}
12607#[derive(Clone, PartialEq, ::prost::Message)]
12608pub struct DrmSchedJobRunFtraceEvent {
12609    #[prost(string, optional, tag="1")]
12610    pub name: ::core::option::Option<::prost::alloc::string::String>,
12611    #[prost(uint32, optional, tag="2")]
12612    pub job_count: ::core::option::Option<u32>,
12613    #[prost(int32, optional, tag="3")]
12614    pub hw_job_count: ::core::option::Option<i32>,
12615    #[prost(string, optional, tag="4")]
12616    pub dev: ::core::option::Option<::prost::alloc::string::String>,
12617    #[prost(uint64, optional, tag="5")]
12618    pub fence_context: ::core::option::Option<u64>,
12619    #[prost(uint64, optional, tag="6")]
12620    pub fence_seqno: ::core::option::Option<u64>,
12621    #[prost(uint64, optional, tag="7")]
12622    pub client_id: ::core::option::Option<u64>,
12623}
12624#[derive(Clone, PartialEq, ::prost::Message)]
12625pub struct DrmSchedJobUnschedulableFtraceEvent {
12626    #[prost(uint64, optional, tag="1")]
12627    pub fence_context: ::core::option::Option<u64>,
12628    #[prost(uint64, optional, tag="2")]
12629    pub fence_seqno: ::core::option::Option<u64>,
12630    #[prost(uint64, optional, tag="3")]
12631    pub ctx: ::core::option::Option<u64>,
12632    #[prost(uint64, optional, tag="4")]
12633    pub seqno: ::core::option::Option<u64>,
12634}
12635// End of protos/perfetto/trace/ftrace/gpu_scheduler.proto
12636
12637// Begin of protos/perfetto/trace/ftrace/hyp.proto
12638
12639#[derive(Clone, PartialEq, ::prost::Message)]
12640pub struct HypEnterFtraceEvent {
12641}
12642#[derive(Clone, PartialEq, ::prost::Message)]
12643pub struct HypExitFtraceEvent {
12644}
12645#[derive(Clone, PartialEq, ::prost::Message)]
12646pub struct HostHcallFtraceEvent {
12647    #[prost(uint32, optional, tag="1")]
12648    pub id: ::core::option::Option<u32>,
12649    #[prost(uint32, optional, tag="2")]
12650    pub invalid: ::core::option::Option<u32>,
12651}
12652#[derive(Clone, PartialEq, ::prost::Message)]
12653pub struct HostSmcFtraceEvent {
12654    #[prost(uint64, optional, tag="1")]
12655    pub id: ::core::option::Option<u64>,
12656    #[prost(uint32, optional, tag="2")]
12657    pub forwarded: ::core::option::Option<u32>,
12658}
12659#[derive(Clone, PartialEq, ::prost::Message)]
12660pub struct HostMemAbortFtraceEvent {
12661    #[prost(uint64, optional, tag="1")]
12662    pub esr: ::core::option::Option<u64>,
12663    #[prost(uint64, optional, tag="2")]
12664    pub addr: ::core::option::Option<u64>,
12665}
12666#[derive(Clone, PartialEq, ::prost::Message)]
12667pub struct HostFfaCallFtraceEvent {
12668    #[prost(uint64, optional, tag="1")]
12669    pub func_id: ::core::option::Option<u64>,
12670    #[prost(uint64, optional, tag="2")]
12671    pub res_a1: ::core::option::Option<u64>,
12672    #[prost(uint64, optional, tag="3")]
12673    pub res_a2: ::core::option::Option<u64>,
12674    #[prost(uint64, optional, tag="4")]
12675    pub res_a3: ::core::option::Option<u64>,
12676    #[prost(uint64, optional, tag="5")]
12677    pub res_a4: ::core::option::Option<u64>,
12678    #[prost(int32, optional, tag="6")]
12679    pub handled: ::core::option::Option<i32>,
12680    #[prost(int32, optional, tag="7")]
12681    pub err: ::core::option::Option<i32>,
12682}
12683#[derive(Clone, PartialEq, ::prost::Message)]
12684pub struct IommuIdmapFtraceEvent {
12685    #[prost(uint64, optional, tag="1")]
12686    pub from: ::core::option::Option<u64>,
12687    #[prost(uint64, optional, tag="2")]
12688    pub to: ::core::option::Option<u64>,
12689    #[prost(int32, optional, tag="3")]
12690    pub prot: ::core::option::Option<i32>,
12691}
12692#[derive(Clone, PartialEq, ::prost::Message)]
12693pub struct PsciMemProtectFtraceEvent {
12694    #[prost(uint64, optional, tag="1")]
12695    pub count: ::core::option::Option<u64>,
12696    #[prost(uint64, optional, tag="2")]
12697    pub was: ::core::option::Option<u64>,
12698}
12699// End of protos/perfetto/trace/ftrace/hyp.proto
12700
12701// Begin of protos/perfetto/trace/ftrace/hypervisor.proto
12702
12703#[derive(Clone, PartialEq, ::prost::Message)]
12704pub struct HypervisorHostHcallFtraceEvent {
12705    #[prost(uint32, optional, tag="1")]
12706    pub id: ::core::option::Option<u32>,
12707    #[prost(uint32, optional, tag="2")]
12708    pub invalid: ::core::option::Option<u32>,
12709}
12710#[derive(Clone, PartialEq, ::prost::Message)]
12711pub struct HypervisorHostSmcFtraceEvent {
12712    #[prost(uint64, optional, tag="1")]
12713    pub id: ::core::option::Option<u64>,
12714    #[prost(uint32, optional, tag="2")]
12715    pub forwarded: ::core::option::Option<u32>,
12716}
12717#[derive(Clone, PartialEq, ::prost::Message)]
12718pub struct HypervisorHypExitFtraceEvent {
12719}
12720#[derive(Clone, PartialEq, ::prost::Message)]
12721pub struct HypervisorIommuIdmapFtraceEvent {
12722    #[prost(uint64, optional, tag="1")]
12723    pub from: ::core::option::Option<u64>,
12724    #[prost(uint64, optional, tag="2")]
12725    pub to: ::core::option::Option<u64>,
12726    #[prost(int32, optional, tag="3")]
12727    pub prot: ::core::option::Option<i32>,
12728}
12729#[derive(Clone, PartialEq, ::prost::Message)]
12730pub struct HypervisorPsciMemProtectFtraceEvent {
12731    #[prost(uint64, optional, tag="1")]
12732    pub count: ::core::option::Option<u64>,
12733    #[prost(uint64, optional, tag="2")]
12734    pub was: ::core::option::Option<u64>,
12735}
12736#[derive(Clone, PartialEq, ::prost::Message)]
12737pub struct HypervisorHostMemAbortFtraceEvent {
12738    #[prost(uint64, optional, tag="1")]
12739    pub esr: ::core::option::Option<u64>,
12740    #[prost(uint64, optional, tag="2")]
12741    pub addr: ::core::option::Option<u64>,
12742}
12743#[derive(Clone, PartialEq, ::prost::Message)]
12744pub struct HypervisorHypEnterFtraceEvent {
12745}
12746#[derive(Clone, PartialEq, ::prost::Message)]
12747pub struct HypervisorIommuIdmapCompleteFtraceEvent {
12748    #[prost(uint32, optional, tag="1")]
12749    pub map: ::core::option::Option<u32>,
12750}
12751#[derive(Clone, PartialEq, ::prost::Message)]
12752pub struct HypervisorVcpuIllegalTrapFtraceEvent {
12753    #[prost(uint64, optional, tag="1")]
12754    pub esr: ::core::option::Option<u64>,
12755}
12756// End of protos/perfetto/trace/ftrace/hypervisor.proto
12757
12758// Begin of protos/perfetto/trace/ftrace/i2c.proto
12759
12760#[derive(Clone, PartialEq, ::prost::Message)]
12761pub struct I2cReadFtraceEvent {
12762    #[prost(int32, optional, tag="1")]
12763    pub adapter_nr: ::core::option::Option<i32>,
12764    #[prost(uint32, optional, tag="2")]
12765    pub msg_nr: ::core::option::Option<u32>,
12766    #[prost(uint32, optional, tag="3")]
12767    pub addr: ::core::option::Option<u32>,
12768    #[prost(uint32, optional, tag="4")]
12769    pub flags: ::core::option::Option<u32>,
12770    #[prost(uint32, optional, tag="5")]
12771    pub len: ::core::option::Option<u32>,
12772}
12773#[derive(Clone, PartialEq, ::prost::Message)]
12774pub struct I2cWriteFtraceEvent {
12775    #[prost(int32, optional, tag="1")]
12776    pub adapter_nr: ::core::option::Option<i32>,
12777    #[prost(uint32, optional, tag="2")]
12778    pub msg_nr: ::core::option::Option<u32>,
12779    #[prost(uint32, optional, tag="3")]
12780    pub addr: ::core::option::Option<u32>,
12781    #[prost(uint32, optional, tag="4")]
12782    pub flags: ::core::option::Option<u32>,
12783    #[prost(uint32, optional, tag="5")]
12784    pub len: ::core::option::Option<u32>,
12785    #[prost(uint32, optional, tag="6")]
12786    pub buf: ::core::option::Option<u32>,
12787}
12788#[derive(Clone, PartialEq, ::prost::Message)]
12789pub struct I2cResultFtraceEvent {
12790    #[prost(int32, optional, tag="1")]
12791    pub adapter_nr: ::core::option::Option<i32>,
12792    #[prost(uint32, optional, tag="2")]
12793    pub nr_msgs: ::core::option::Option<u32>,
12794    #[prost(int32, optional, tag="3")]
12795    pub ret: ::core::option::Option<i32>,
12796}
12797#[derive(Clone, PartialEq, ::prost::Message)]
12798pub struct I2cReplyFtraceEvent {
12799    #[prost(int32, optional, tag="1")]
12800    pub adapter_nr: ::core::option::Option<i32>,
12801    #[prost(uint32, optional, tag="2")]
12802    pub msg_nr: ::core::option::Option<u32>,
12803    #[prost(uint32, optional, tag="3")]
12804    pub addr: ::core::option::Option<u32>,
12805    #[prost(uint32, optional, tag="4")]
12806    pub flags: ::core::option::Option<u32>,
12807    #[prost(uint32, optional, tag="5")]
12808    pub len: ::core::option::Option<u32>,
12809    #[prost(uint32, optional, tag="6")]
12810    pub buf: ::core::option::Option<u32>,
12811}
12812#[derive(Clone, PartialEq, ::prost::Message)]
12813pub struct SmbusReadFtraceEvent {
12814    #[prost(int32, optional, tag="1")]
12815    pub adapter_nr: ::core::option::Option<i32>,
12816    #[prost(uint32, optional, tag="2")]
12817    pub flags: ::core::option::Option<u32>,
12818    #[prost(uint32, optional, tag="3")]
12819    pub addr: ::core::option::Option<u32>,
12820    #[prost(uint32, optional, tag="4")]
12821    pub command: ::core::option::Option<u32>,
12822    #[prost(uint32, optional, tag="5")]
12823    pub protocol: ::core::option::Option<u32>,
12824}
12825#[derive(Clone, PartialEq, ::prost::Message)]
12826pub struct SmbusWriteFtraceEvent {
12827    #[prost(int32, optional, tag="1")]
12828    pub adapter_nr: ::core::option::Option<i32>,
12829    #[prost(uint32, optional, tag="2")]
12830    pub addr: ::core::option::Option<u32>,
12831    #[prost(uint32, optional, tag="3")]
12832    pub flags: ::core::option::Option<u32>,
12833    #[prost(uint32, optional, tag="4")]
12834    pub command: ::core::option::Option<u32>,
12835    #[prost(uint32, optional, tag="5")]
12836    pub len: ::core::option::Option<u32>,
12837    #[prost(uint32, optional, tag="6")]
12838    pub protocol: ::core::option::Option<u32>,
12839}
12840#[derive(Clone, PartialEq, ::prost::Message)]
12841pub struct SmbusResultFtraceEvent {
12842    #[prost(int32, optional, tag="1")]
12843    pub adapter_nr: ::core::option::Option<i32>,
12844    #[prost(uint32, optional, tag="2")]
12845    pub addr: ::core::option::Option<u32>,
12846    #[prost(uint32, optional, tag="3")]
12847    pub flags: ::core::option::Option<u32>,
12848    #[prost(uint32, optional, tag="4")]
12849    pub read_write: ::core::option::Option<u32>,
12850    #[prost(uint32, optional, tag="5")]
12851    pub command: ::core::option::Option<u32>,
12852    #[prost(int32, optional, tag="6")]
12853    pub res: ::core::option::Option<i32>,
12854    #[prost(uint32, optional, tag="7")]
12855    pub protocol: ::core::option::Option<u32>,
12856}
12857#[derive(Clone, PartialEq, ::prost::Message)]
12858pub struct SmbusReplyFtraceEvent {
12859    #[prost(int32, optional, tag="1")]
12860    pub adapter_nr: ::core::option::Option<i32>,
12861    #[prost(uint32, optional, tag="2")]
12862    pub addr: ::core::option::Option<u32>,
12863    #[prost(uint32, optional, tag="3")]
12864    pub flags: ::core::option::Option<u32>,
12865    #[prost(uint32, optional, tag="4")]
12866    pub command: ::core::option::Option<u32>,
12867    #[prost(uint32, optional, tag="5")]
12868    pub len: ::core::option::Option<u32>,
12869    #[prost(uint32, optional, tag="6")]
12870    pub protocol: ::core::option::Option<u32>,
12871}
12872// End of protos/perfetto/trace/ftrace/i2c.proto
12873
12874// Begin of protos/perfetto/trace/ftrace/ion.proto
12875
12876#[derive(Clone, PartialEq, ::prost::Message)]
12877pub struct IonStatFtraceEvent {
12878    #[prost(uint32, optional, tag="1")]
12879    pub buffer_id: ::core::option::Option<u32>,
12880    #[prost(int64, optional, tag="2")]
12881    pub len: ::core::option::Option<i64>,
12882    #[prost(uint64, optional, tag="3")]
12883    pub total_allocated: ::core::option::Option<u64>,
12884}
12885// End of protos/perfetto/trace/ftrace/ion.proto
12886
12887// Begin of protos/perfetto/trace/ftrace/ipi.proto
12888
12889#[derive(Clone, PartialEq, ::prost::Message)]
12890pub struct IpiEntryFtraceEvent {
12891    #[prost(string, optional, tag="1")]
12892    pub reason: ::core::option::Option<::prost::alloc::string::String>,
12893}
12894#[derive(Clone, PartialEq, ::prost::Message)]
12895pub struct IpiExitFtraceEvent {
12896    #[prost(string, optional, tag="1")]
12897    pub reason: ::core::option::Option<::prost::alloc::string::String>,
12898}
12899#[derive(Clone, PartialEq, ::prost::Message)]
12900pub struct IpiRaiseFtraceEvent {
12901    #[prost(uint32, optional, tag="1")]
12902    pub target_cpus: ::core::option::Option<u32>,
12903    #[prost(string, optional, tag="2")]
12904    pub reason: ::core::option::Option<::prost::alloc::string::String>,
12905}
12906// End of protos/perfetto/trace/ftrace/ipi.proto
12907
12908// Begin of protos/perfetto/trace/ftrace/irq.proto
12909
12910#[derive(Clone, PartialEq, ::prost::Message)]
12911pub struct SoftirqEntryFtraceEvent {
12912    #[prost(uint32, optional, tag="1")]
12913    pub vec: ::core::option::Option<u32>,
12914}
12915#[derive(Clone, PartialEq, ::prost::Message)]
12916pub struct SoftirqExitFtraceEvent {
12917    #[prost(uint32, optional, tag="1")]
12918    pub vec: ::core::option::Option<u32>,
12919}
12920#[derive(Clone, PartialEq, ::prost::Message)]
12921pub struct SoftirqRaiseFtraceEvent {
12922    #[prost(uint32, optional, tag="1")]
12923    pub vec: ::core::option::Option<u32>,
12924}
12925#[derive(Clone, PartialEq, ::prost::Message)]
12926pub struct IrqHandlerEntryFtraceEvent {
12927    #[prost(int32, optional, tag="1")]
12928    pub irq: ::core::option::Option<i32>,
12929    #[prost(string, optional, tag="2")]
12930    pub name: ::core::option::Option<::prost::alloc::string::String>,
12931    #[prost(uint32, optional, tag="3")]
12932    pub handler: ::core::option::Option<u32>,
12933}
12934#[derive(Clone, PartialEq, ::prost::Message)]
12935pub struct IrqHandlerExitFtraceEvent {
12936    #[prost(int32, optional, tag="1")]
12937    pub irq: ::core::option::Option<i32>,
12938    #[prost(int32, optional, tag="2")]
12939    pub ret: ::core::option::Option<i32>,
12940}
12941// End of protos/perfetto/trace/ftrace/irq.proto
12942
12943// Begin of protos/perfetto/trace/ftrace/irq_vectors.proto
12944
12945#[derive(Clone, PartialEq, ::prost::Message)]
12946pub struct LocalTimerEntryFtraceEvent {
12947    #[prost(int32, optional, tag="1")]
12948    pub vector: ::core::option::Option<i32>,
12949}
12950#[derive(Clone, PartialEq, ::prost::Message)]
12951pub struct LocalTimerExitFtraceEvent {
12952    #[prost(int32, optional, tag="1")]
12953    pub vector: ::core::option::Option<i32>,
12954}
12955// End of protos/perfetto/trace/ftrace/irq_vectors.proto
12956
12957// Begin of protos/perfetto/trace/ftrace/kgsl.proto
12958
12959#[derive(Clone, PartialEq, ::prost::Message)]
12960pub struct KgslGpuFrequencyFtraceEvent {
12961    #[prost(uint32, optional, tag="1")]
12962    pub gpu_freq: ::core::option::Option<u32>,
12963    #[prost(uint32, optional, tag="2")]
12964    pub gpu_id: ::core::option::Option<u32>,
12965}
12966#[derive(Clone, PartialEq, ::prost::Message)]
12967pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
12968    #[prost(uint32, optional, tag="1")]
12969    pub id: ::core::option::Option<u32>,
12970    #[prost(uint32, optional, tag="2")]
12971    pub timestamp: ::core::option::Option<u32>,
12972    #[prost(uint32, optional, tag="3")]
12973    pub queued: ::core::option::Option<u32>,
12974    #[prost(uint32, optional, tag="4")]
12975    pub flags: ::core::option::Option<u32>,
12976    #[prost(uint32, optional, tag="5")]
12977    pub prio: ::core::option::Option<u32>,
12978}
12979#[derive(Clone, PartialEq, ::prost::Message)]
12980pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
12981    #[prost(uint32, optional, tag="1")]
12982    pub id: ::core::option::Option<u32>,
12983    #[prost(uint32, optional, tag="2")]
12984    pub timestamp: ::core::option::Option<u32>,
12985    #[prost(int64, optional, tag="3")]
12986    pub inflight: ::core::option::Option<i64>,
12987    #[prost(uint32, optional, tag="4")]
12988    pub flags: ::core::option::Option<u32>,
12989    #[prost(uint64, optional, tag="5")]
12990    pub ticks: ::core::option::Option<u64>,
12991    #[prost(uint64, optional, tag="6")]
12992    pub secs: ::core::option::Option<u64>,
12993    #[prost(uint64, optional, tag="7")]
12994    pub usecs: ::core::option::Option<u64>,
12995    #[prost(int32, optional, tag="8")]
12996    pub prio: ::core::option::Option<i32>,
12997    #[prost(int32, optional, tag="9")]
12998    pub rb_id: ::core::option::Option<i32>,
12999    #[prost(uint32, optional, tag="10")]
13000    pub rptr: ::core::option::Option<u32>,
13001    #[prost(uint32, optional, tag="11")]
13002    pub wptr: ::core::option::Option<u32>,
13003    #[prost(int32, optional, tag="12")]
13004    pub q_inflight: ::core::option::Option<i32>,
13005    #[prost(int32, optional, tag="13")]
13006    pub dispatch_queue: ::core::option::Option<i32>,
13007}
13008#[derive(Clone, PartialEq, ::prost::Message)]
13009pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
13010    #[prost(uint32, optional, tag="1")]
13011    pub id: ::core::option::Option<u32>,
13012    #[prost(uint32, optional, tag="2")]
13013    pub timestamp: ::core::option::Option<u32>,
13014    #[prost(uint64, optional, tag="3")]
13015    pub ticks: ::core::option::Option<u64>,
13016    #[prost(int32, optional, tag="4")]
13017    pub prio: ::core::option::Option<i32>,
13018}
13019#[derive(Clone, PartialEq, ::prost::Message)]
13020pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
13021    #[prost(uint32, optional, tag="1")]
13022    pub id: ::core::option::Option<u32>,
13023    #[prost(uint32, optional, tag="2")]
13024    pub timestamp: ::core::option::Option<u32>,
13025    #[prost(int64, optional, tag="3")]
13026    pub inflight: ::core::option::Option<i64>,
13027    #[prost(uint32, optional, tag="4")]
13028    pub recovery: ::core::option::Option<u32>,
13029    #[prost(uint32, optional, tag="5")]
13030    pub flags: ::core::option::Option<u32>,
13031    #[prost(uint64, optional, tag="6")]
13032    pub start: ::core::option::Option<u64>,
13033    #[prost(uint64, optional, tag="7")]
13034    pub retire: ::core::option::Option<u64>,
13035    #[prost(int32, optional, tag="8")]
13036    pub prio: ::core::option::Option<i32>,
13037    #[prost(int32, optional, tag="9")]
13038    pub rb_id: ::core::option::Option<i32>,
13039    #[prost(uint32, optional, tag="10")]
13040    pub rptr: ::core::option::Option<u32>,
13041    #[prost(uint32, optional, tag="11")]
13042    pub wptr: ::core::option::Option<u32>,
13043    #[prost(int32, optional, tag="12")]
13044    pub q_inflight: ::core::option::Option<i32>,
13045    #[prost(uint64, optional, tag="13")]
13046    pub fault_recovery: ::core::option::Option<u64>,
13047    #[prost(uint32, optional, tag="14")]
13048    pub dispatch_queue: ::core::option::Option<u32>,
13049    #[prost(uint64, optional, tag="15")]
13050    pub submitted_to_rb: ::core::option::Option<u64>,
13051    #[prost(uint64, optional, tag="16")]
13052    pub retired_on_gmu: ::core::option::Option<u64>,
13053    #[prost(uint64, optional, tag="17")]
13054    pub active: ::core::option::Option<u64>,
13055}
13056// End of protos/perfetto/trace/ftrace/kgsl.proto
13057
13058// Begin of protos/perfetto/trace/ftrace/kmem.proto
13059
13060#[derive(Clone, PartialEq, ::prost::Message)]
13061pub struct AllocPagesIommuEndFtraceEvent {
13062    #[prost(uint32, optional, tag="1")]
13063    pub gfp_flags: ::core::option::Option<u32>,
13064    #[prost(uint32, optional, tag="2")]
13065    pub order: ::core::option::Option<u32>,
13066}
13067#[derive(Clone, PartialEq, ::prost::Message)]
13068pub struct AllocPagesIommuFailFtraceEvent {
13069    #[prost(uint32, optional, tag="1")]
13070    pub gfp_flags: ::core::option::Option<u32>,
13071    #[prost(uint32, optional, tag="2")]
13072    pub order: ::core::option::Option<u32>,
13073}
13074#[derive(Clone, PartialEq, ::prost::Message)]
13075pub struct AllocPagesIommuStartFtraceEvent {
13076    #[prost(uint32, optional, tag="1")]
13077    pub gfp_flags: ::core::option::Option<u32>,
13078    #[prost(uint32, optional, tag="2")]
13079    pub order: ::core::option::Option<u32>,
13080}
13081#[derive(Clone, PartialEq, ::prost::Message)]
13082pub struct AllocPagesSysEndFtraceEvent {
13083    #[prost(uint32, optional, tag="1")]
13084    pub gfp_flags: ::core::option::Option<u32>,
13085    #[prost(uint32, optional, tag="2")]
13086    pub order: ::core::option::Option<u32>,
13087}
13088#[derive(Clone, PartialEq, ::prost::Message)]
13089pub struct AllocPagesSysFailFtraceEvent {
13090    #[prost(uint32, optional, tag="1")]
13091    pub gfp_flags: ::core::option::Option<u32>,
13092    #[prost(uint32, optional, tag="2")]
13093    pub order: ::core::option::Option<u32>,
13094}
13095#[derive(Clone, PartialEq, ::prost::Message)]
13096pub struct AllocPagesSysStartFtraceEvent {
13097    #[prost(uint32, optional, tag="1")]
13098    pub gfp_flags: ::core::option::Option<u32>,
13099    #[prost(uint32, optional, tag="2")]
13100    pub order: ::core::option::Option<u32>,
13101}
13102#[derive(Clone, PartialEq, ::prost::Message)]
13103pub struct DmaAllocContiguousRetryFtraceEvent {
13104    #[prost(int32, optional, tag="1")]
13105    pub tries: ::core::option::Option<i32>,
13106}
13107#[derive(Clone, PartialEq, ::prost::Message)]
13108pub struct IommuMapRangeFtraceEvent {
13109    #[prost(uint64, optional, tag="1")]
13110    pub chunk_size: ::core::option::Option<u64>,
13111    #[prost(uint64, optional, tag="2")]
13112    pub len: ::core::option::Option<u64>,
13113    #[prost(uint64, optional, tag="3")]
13114    pub pa: ::core::option::Option<u64>,
13115    #[prost(uint64, optional, tag="4")]
13116    pub va: ::core::option::Option<u64>,
13117}
13118#[derive(Clone, PartialEq, ::prost::Message)]
13119pub struct IommuSecPtblMapRangeEndFtraceEvent {
13120    #[prost(uint64, optional, tag="1")]
13121    pub len: ::core::option::Option<u64>,
13122    #[prost(int32, optional, tag="2")]
13123    pub num: ::core::option::Option<i32>,
13124    #[prost(uint32, optional, tag="3")]
13125    pub pa: ::core::option::Option<u32>,
13126    #[prost(int32, optional, tag="4")]
13127    pub sec_id: ::core::option::Option<i32>,
13128    #[prost(uint64, optional, tag="5")]
13129    pub va: ::core::option::Option<u64>,
13130}
13131#[derive(Clone, PartialEq, ::prost::Message)]
13132pub struct IommuSecPtblMapRangeStartFtraceEvent {
13133    #[prost(uint64, optional, tag="1")]
13134    pub len: ::core::option::Option<u64>,
13135    #[prost(int32, optional, tag="2")]
13136    pub num: ::core::option::Option<i32>,
13137    #[prost(uint32, optional, tag="3")]
13138    pub pa: ::core::option::Option<u32>,
13139    #[prost(int32, optional, tag="4")]
13140    pub sec_id: ::core::option::Option<i32>,
13141    #[prost(uint64, optional, tag="5")]
13142    pub va: ::core::option::Option<u64>,
13143}
13144#[derive(Clone, PartialEq, ::prost::Message)]
13145pub struct IonAllocBufferEndFtraceEvent {
13146    #[prost(string, optional, tag="1")]
13147    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13148    #[prost(uint32, optional, tag="2")]
13149    pub flags: ::core::option::Option<u32>,
13150    #[prost(string, optional, tag="3")]
13151    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13152    #[prost(uint64, optional, tag="4")]
13153    pub len: ::core::option::Option<u64>,
13154    #[prost(uint32, optional, tag="5")]
13155    pub mask: ::core::option::Option<u32>,
13156}
13157#[derive(Clone, PartialEq, ::prost::Message)]
13158pub struct IonAllocBufferFailFtraceEvent {
13159    #[prost(string, optional, tag="1")]
13160    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13161    #[prost(int64, optional, tag="2")]
13162    pub error: ::core::option::Option<i64>,
13163    #[prost(uint32, optional, tag="3")]
13164    pub flags: ::core::option::Option<u32>,
13165    #[prost(string, optional, tag="4")]
13166    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13167    #[prost(uint64, optional, tag="5")]
13168    pub len: ::core::option::Option<u64>,
13169    #[prost(uint32, optional, tag="6")]
13170    pub mask: ::core::option::Option<u32>,
13171}
13172#[derive(Clone, PartialEq, ::prost::Message)]
13173pub struct IonAllocBufferFallbackFtraceEvent {
13174    #[prost(string, optional, tag="1")]
13175    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13176    #[prost(int64, optional, tag="2")]
13177    pub error: ::core::option::Option<i64>,
13178    #[prost(uint32, optional, tag="3")]
13179    pub flags: ::core::option::Option<u32>,
13180    #[prost(string, optional, tag="4")]
13181    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13182    #[prost(uint64, optional, tag="5")]
13183    pub len: ::core::option::Option<u64>,
13184    #[prost(uint32, optional, tag="6")]
13185    pub mask: ::core::option::Option<u32>,
13186}
13187#[derive(Clone, PartialEq, ::prost::Message)]
13188pub struct IonAllocBufferStartFtraceEvent {
13189    #[prost(string, optional, tag="1")]
13190    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13191    #[prost(uint32, optional, tag="2")]
13192    pub flags: ::core::option::Option<u32>,
13193    #[prost(string, optional, tag="3")]
13194    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13195    #[prost(uint64, optional, tag="4")]
13196    pub len: ::core::option::Option<u64>,
13197    #[prost(uint32, optional, tag="5")]
13198    pub mask: ::core::option::Option<u32>,
13199}
13200#[derive(Clone, PartialEq, ::prost::Message)]
13201pub struct IonCpAllocRetryFtraceEvent {
13202    #[prost(int32, optional, tag="1")]
13203    pub tries: ::core::option::Option<i32>,
13204}
13205#[derive(Clone, PartialEq, ::prost::Message)]
13206pub struct IonCpSecureBufferEndFtraceEvent {
13207    #[prost(uint64, optional, tag="1")]
13208    pub align: ::core::option::Option<u64>,
13209    #[prost(uint64, optional, tag="2")]
13210    pub flags: ::core::option::Option<u64>,
13211    #[prost(string, optional, tag="3")]
13212    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13213    #[prost(uint64, optional, tag="4")]
13214    pub len: ::core::option::Option<u64>,
13215}
13216#[derive(Clone, PartialEq, ::prost::Message)]
13217pub struct IonCpSecureBufferStartFtraceEvent {
13218    #[prost(uint64, optional, tag="1")]
13219    pub align: ::core::option::Option<u64>,
13220    #[prost(uint64, optional, tag="2")]
13221    pub flags: ::core::option::Option<u64>,
13222    #[prost(string, optional, tag="3")]
13223    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13224    #[prost(uint64, optional, tag="4")]
13225    pub len: ::core::option::Option<u64>,
13226}
13227#[derive(Clone, PartialEq, ::prost::Message)]
13228pub struct IonPrefetchingFtraceEvent {
13229    #[prost(uint64, optional, tag="1")]
13230    pub len: ::core::option::Option<u64>,
13231}
13232#[derive(Clone, PartialEq, ::prost::Message)]
13233pub struct IonSecureCmaAddToPoolEndFtraceEvent {
13234    #[prost(uint32, optional, tag="1")]
13235    pub is_prefetch: ::core::option::Option<u32>,
13236    #[prost(uint64, optional, tag="2")]
13237    pub len: ::core::option::Option<u64>,
13238    #[prost(int32, optional, tag="3")]
13239    pub pool_total: ::core::option::Option<i32>,
13240}
13241#[derive(Clone, PartialEq, ::prost::Message)]
13242pub struct IonSecureCmaAddToPoolStartFtraceEvent {
13243    #[prost(uint32, optional, tag="1")]
13244    pub is_prefetch: ::core::option::Option<u32>,
13245    #[prost(uint64, optional, tag="2")]
13246    pub len: ::core::option::Option<u64>,
13247    #[prost(int32, optional, tag="3")]
13248    pub pool_total: ::core::option::Option<i32>,
13249}
13250#[derive(Clone, PartialEq, ::prost::Message)]
13251pub struct IonSecureCmaAllocateEndFtraceEvent {
13252    #[prost(uint64, optional, tag="1")]
13253    pub align: ::core::option::Option<u64>,
13254    #[prost(uint64, optional, tag="2")]
13255    pub flags: ::core::option::Option<u64>,
13256    #[prost(string, optional, tag="3")]
13257    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13258    #[prost(uint64, optional, tag="4")]
13259    pub len: ::core::option::Option<u64>,
13260}
13261#[derive(Clone, PartialEq, ::prost::Message)]
13262pub struct IonSecureCmaAllocateStartFtraceEvent {
13263    #[prost(uint64, optional, tag="1")]
13264    pub align: ::core::option::Option<u64>,
13265    #[prost(uint64, optional, tag="2")]
13266    pub flags: ::core::option::Option<u64>,
13267    #[prost(string, optional, tag="3")]
13268    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13269    #[prost(uint64, optional, tag="4")]
13270    pub len: ::core::option::Option<u64>,
13271}
13272#[derive(Clone, PartialEq, ::prost::Message)]
13273pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
13274    #[prost(uint64, optional, tag="1")]
13275    pub drained_size: ::core::option::Option<u64>,
13276    #[prost(uint64, optional, tag="2")]
13277    pub skipped_size: ::core::option::Option<u64>,
13278}
13279#[derive(Clone, PartialEq, ::prost::Message)]
13280pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
13281    #[prost(uint64, optional, tag="1")]
13282    pub drained_size: ::core::option::Option<u64>,
13283    #[prost(uint64, optional, tag="2")]
13284    pub skipped_size: ::core::option::Option<u64>,
13285}
13286#[derive(Clone, PartialEq, ::prost::Message)]
13287pub struct KfreeFtraceEvent {
13288    #[prost(uint64, optional, tag="1")]
13289    pub call_site: ::core::option::Option<u64>,
13290    #[prost(uint64, optional, tag="2")]
13291    pub ptr: ::core::option::Option<u64>,
13292}
13293#[derive(Clone, PartialEq, ::prost::Message)]
13294pub struct KmallocFtraceEvent {
13295    #[prost(uint64, optional, tag="1")]
13296    pub bytes_alloc: ::core::option::Option<u64>,
13297    #[prost(uint64, optional, tag="2")]
13298    pub bytes_req: ::core::option::Option<u64>,
13299    #[prost(uint64, optional, tag="3")]
13300    pub call_site: ::core::option::Option<u64>,
13301    #[prost(uint32, optional, tag="4")]
13302    pub gfp_flags: ::core::option::Option<u32>,
13303    #[prost(uint64, optional, tag="5")]
13304    pub ptr: ::core::option::Option<u64>,
13305}
13306#[derive(Clone, PartialEq, ::prost::Message)]
13307pub struct KmallocNodeFtraceEvent {
13308    #[prost(uint64, optional, tag="1")]
13309    pub bytes_alloc: ::core::option::Option<u64>,
13310    #[prost(uint64, optional, tag="2")]
13311    pub bytes_req: ::core::option::Option<u64>,
13312    #[prost(uint64, optional, tag="3")]
13313    pub call_site: ::core::option::Option<u64>,
13314    #[prost(uint32, optional, tag="4")]
13315    pub gfp_flags: ::core::option::Option<u32>,
13316    #[prost(int32, optional, tag="5")]
13317    pub node: ::core::option::Option<i32>,
13318    #[prost(uint64, optional, tag="6")]
13319    pub ptr: ::core::option::Option<u64>,
13320}
13321#[derive(Clone, PartialEq, ::prost::Message)]
13322pub struct KmemCacheAllocFtraceEvent {
13323    #[prost(uint64, optional, tag="1")]
13324    pub bytes_alloc: ::core::option::Option<u64>,
13325    #[prost(uint64, optional, tag="2")]
13326    pub bytes_req: ::core::option::Option<u64>,
13327    #[prost(uint64, optional, tag="3")]
13328    pub call_site: ::core::option::Option<u64>,
13329    #[prost(uint32, optional, tag="4")]
13330    pub gfp_flags: ::core::option::Option<u32>,
13331    #[prost(uint64, optional, tag="5")]
13332    pub ptr: ::core::option::Option<u64>,
13333}
13334#[derive(Clone, PartialEq, ::prost::Message)]
13335pub struct KmemCacheAllocNodeFtraceEvent {
13336    #[prost(uint64, optional, tag="1")]
13337    pub bytes_alloc: ::core::option::Option<u64>,
13338    #[prost(uint64, optional, tag="2")]
13339    pub bytes_req: ::core::option::Option<u64>,
13340    #[prost(uint64, optional, tag="3")]
13341    pub call_site: ::core::option::Option<u64>,
13342    #[prost(uint32, optional, tag="4")]
13343    pub gfp_flags: ::core::option::Option<u32>,
13344    #[prost(int32, optional, tag="5")]
13345    pub node: ::core::option::Option<i32>,
13346    #[prost(uint64, optional, tag="6")]
13347    pub ptr: ::core::option::Option<u64>,
13348}
13349#[derive(Clone, PartialEq, ::prost::Message)]
13350pub struct KmemCacheFreeFtraceEvent {
13351    #[prost(uint64, optional, tag="1")]
13352    pub call_site: ::core::option::Option<u64>,
13353    #[prost(uint64, optional, tag="2")]
13354    pub ptr: ::core::option::Option<u64>,
13355}
13356#[derive(Clone, PartialEq, ::prost::Message)]
13357pub struct MigratePagesEndFtraceEvent {
13358    #[prost(int32, optional, tag="1")]
13359    pub mode: ::core::option::Option<i32>,
13360}
13361#[derive(Clone, PartialEq, ::prost::Message)]
13362pub struct MigratePagesStartFtraceEvent {
13363    #[prost(int32, optional, tag="1")]
13364    pub mode: ::core::option::Option<i32>,
13365}
13366#[derive(Clone, PartialEq, ::prost::Message)]
13367pub struct MigrateRetryFtraceEvent {
13368    #[prost(int32, optional, tag="1")]
13369    pub tries: ::core::option::Option<i32>,
13370}
13371#[derive(Clone, PartialEq, ::prost::Message)]
13372pub struct MmPageAllocFtraceEvent {
13373    #[prost(uint32, optional, tag="1")]
13374    pub gfp_flags: ::core::option::Option<u32>,
13375    #[prost(int32, optional, tag="2")]
13376    pub migratetype: ::core::option::Option<i32>,
13377    #[prost(uint32, optional, tag="3")]
13378    pub order: ::core::option::Option<u32>,
13379    #[prost(uint64, optional, tag="4")]
13380    pub page: ::core::option::Option<u64>,
13381    #[prost(uint64, optional, tag="5")]
13382    pub pfn: ::core::option::Option<u64>,
13383}
13384#[derive(Clone, PartialEq, ::prost::Message)]
13385pub struct MmPageAllocExtfragFtraceEvent {
13386    #[prost(int32, optional, tag="1")]
13387    pub alloc_migratetype: ::core::option::Option<i32>,
13388    #[prost(int32, optional, tag="2")]
13389    pub alloc_order: ::core::option::Option<i32>,
13390    #[prost(int32, optional, tag="3")]
13391    pub fallback_migratetype: ::core::option::Option<i32>,
13392    #[prost(int32, optional, tag="4")]
13393    pub fallback_order: ::core::option::Option<i32>,
13394    #[prost(uint64, optional, tag="5")]
13395    pub page: ::core::option::Option<u64>,
13396    #[prost(int32, optional, tag="6")]
13397    pub change_ownership: ::core::option::Option<i32>,
13398    #[prost(uint64, optional, tag="7")]
13399    pub pfn: ::core::option::Option<u64>,
13400}
13401#[derive(Clone, PartialEq, ::prost::Message)]
13402pub struct MmPageAllocZoneLockedFtraceEvent {
13403    #[prost(int32, optional, tag="1")]
13404    pub migratetype: ::core::option::Option<i32>,
13405    #[prost(uint32, optional, tag="2")]
13406    pub order: ::core::option::Option<u32>,
13407    #[prost(uint64, optional, tag="3")]
13408    pub page: ::core::option::Option<u64>,
13409    #[prost(uint64, optional, tag="4")]
13410    pub pfn: ::core::option::Option<u64>,
13411}
13412#[derive(Clone, PartialEq, ::prost::Message)]
13413pub struct MmPageFreeFtraceEvent {
13414    #[prost(uint32, optional, tag="1")]
13415    pub order: ::core::option::Option<u32>,
13416    #[prost(uint64, optional, tag="2")]
13417    pub page: ::core::option::Option<u64>,
13418    #[prost(uint64, optional, tag="3")]
13419    pub pfn: ::core::option::Option<u64>,
13420}
13421#[derive(Clone, PartialEq, ::prost::Message)]
13422pub struct MmPageFreeBatchedFtraceEvent {
13423    #[prost(int32, optional, tag="1")]
13424    pub cold: ::core::option::Option<i32>,
13425    #[prost(uint64, optional, tag="2")]
13426    pub page: ::core::option::Option<u64>,
13427    #[prost(uint64, optional, tag="3")]
13428    pub pfn: ::core::option::Option<u64>,
13429}
13430#[derive(Clone, PartialEq, ::prost::Message)]
13431pub struct MmPagePcpuDrainFtraceEvent {
13432    #[prost(int32, optional, tag="1")]
13433    pub migratetype: ::core::option::Option<i32>,
13434    #[prost(uint32, optional, tag="2")]
13435    pub order: ::core::option::Option<u32>,
13436    #[prost(uint64, optional, tag="3")]
13437    pub page: ::core::option::Option<u64>,
13438    #[prost(uint64, optional, tag="4")]
13439    pub pfn: ::core::option::Option<u64>,
13440}
13441#[derive(Clone, PartialEq, ::prost::Message)]
13442pub struct RssStatFtraceEvent {
13443    #[prost(int32, optional, tag="1")]
13444    pub member: ::core::option::Option<i32>,
13445    #[prost(int64, optional, tag="2")]
13446    pub size: ::core::option::Option<i64>,
13447    #[prost(uint32, optional, tag="3")]
13448    pub curr: ::core::option::Option<u32>,
13449    #[prost(uint32, optional, tag="4")]
13450    pub mm_id: ::core::option::Option<u32>,
13451}
13452#[derive(Clone, PartialEq, ::prost::Message)]
13453pub struct IonHeapShrinkFtraceEvent {
13454    #[prost(string, optional, tag="1")]
13455    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13456    #[prost(uint64, optional, tag="2")]
13457    pub len: ::core::option::Option<u64>,
13458    #[prost(int64, optional, tag="3")]
13459    pub total_allocated: ::core::option::Option<i64>,
13460}
13461#[derive(Clone, PartialEq, ::prost::Message)]
13462pub struct IonHeapGrowFtraceEvent {
13463    #[prost(string, optional, tag="1")]
13464    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13465    #[prost(uint64, optional, tag="2")]
13466    pub len: ::core::option::Option<u64>,
13467    #[prost(int64, optional, tag="3")]
13468    pub total_allocated: ::core::option::Option<i64>,
13469}
13470#[derive(Clone, PartialEq, ::prost::Message)]
13471pub struct IonBufferCreateFtraceEvent {
13472    #[prost(uint64, optional, tag="1")]
13473    pub addr: ::core::option::Option<u64>,
13474    #[prost(uint64, optional, tag="2")]
13475    pub len: ::core::option::Option<u64>,
13476}
13477#[derive(Clone, PartialEq, ::prost::Message)]
13478pub struct IonBufferDestroyFtraceEvent {
13479    #[prost(uint64, optional, tag="1")]
13480    pub addr: ::core::option::Option<u64>,
13481    #[prost(uint64, optional, tag="2")]
13482    pub len: ::core::option::Option<u64>,
13483}
13484#[derive(Clone, PartialEq, ::prost::Message)]
13485pub struct MmAllocContigMigrateRangeInfoFtraceEvent {
13486    #[prost(uint64, optional, tag="1")]
13487    pub start: ::core::option::Option<u64>,
13488    #[prost(uint64, optional, tag="2")]
13489    pub end: ::core::option::Option<u64>,
13490    #[prost(uint64, optional, tag="3")]
13491    pub nr_migrated: ::core::option::Option<u64>,
13492    #[prost(uint64, optional, tag="4")]
13493    pub nr_reclaimed: ::core::option::Option<u64>,
13494    #[prost(uint64, optional, tag="5")]
13495    pub nr_mapped: ::core::option::Option<u64>,
13496    #[prost(int32, optional, tag="6")]
13497    pub migratetype: ::core::option::Option<i32>,
13498}
13499#[derive(Clone, PartialEq, ::prost::Message)]
13500pub struct DmabufRssStatFtraceEvent {
13501    #[prost(uint64, optional, tag="1")]
13502    pub rss: ::core::option::Option<u64>,
13503    #[prost(int64, optional, tag="2")]
13504    pub rss_delta: ::core::option::Option<i64>,
13505    #[prost(uint64, optional, tag="3")]
13506    pub i_ino: ::core::option::Option<u64>,
13507}
13508// End of protos/perfetto/trace/ftrace/kmem.proto
13509
13510// Begin of protos/perfetto/trace/ftrace/kvm.proto
13511
13512#[derive(Clone, PartialEq, ::prost::Message)]
13513pub struct KvmAccessFaultFtraceEvent {
13514    #[prost(uint64, optional, tag="1")]
13515    pub ipa: ::core::option::Option<u64>,
13516}
13517#[derive(Clone, PartialEq, ::prost::Message)]
13518pub struct KvmAckIrqFtraceEvent {
13519    #[prost(uint32, optional, tag="1")]
13520    pub irqchip: ::core::option::Option<u32>,
13521    #[prost(uint32, optional, tag="2")]
13522    pub pin: ::core::option::Option<u32>,
13523}
13524#[derive(Clone, PartialEq, ::prost::Message)]
13525pub struct KvmAgeHvaFtraceEvent {
13526    #[prost(uint64, optional, tag="1")]
13527    pub end: ::core::option::Option<u64>,
13528    #[prost(uint64, optional, tag="2")]
13529    pub start: ::core::option::Option<u64>,
13530}
13531#[derive(Clone, PartialEq, ::prost::Message)]
13532pub struct KvmAgePageFtraceEvent {
13533    #[prost(uint64, optional, tag="1")]
13534    pub gfn: ::core::option::Option<u64>,
13535    #[prost(uint64, optional, tag="2")]
13536    pub hva: ::core::option::Option<u64>,
13537    #[prost(uint32, optional, tag="3")]
13538    pub level: ::core::option::Option<u32>,
13539    #[prost(uint32, optional, tag="4")]
13540    pub referenced: ::core::option::Option<u32>,
13541}
13542#[derive(Clone, PartialEq, ::prost::Message)]
13543pub struct KvmArmClearDebugFtraceEvent {
13544    #[prost(uint32, optional, tag="1")]
13545    pub guest_debug: ::core::option::Option<u32>,
13546}
13547#[derive(Clone, PartialEq, ::prost::Message)]
13548pub struct KvmArmSetDreg32FtraceEvent {
13549    #[prost(string, optional, tag="1")]
13550    pub name: ::core::option::Option<::prost::alloc::string::String>,
13551    #[prost(uint32, optional, tag="2")]
13552    pub value: ::core::option::Option<u32>,
13553}
13554#[derive(Clone, PartialEq, ::prost::Message)]
13555pub struct KvmArmSetRegsetFtraceEvent {
13556    #[prost(int32, optional, tag="1")]
13557    pub len: ::core::option::Option<i32>,
13558    #[prost(string, optional, tag="2")]
13559    pub name: ::core::option::Option<::prost::alloc::string::String>,
13560}
13561#[derive(Clone, PartialEq, ::prost::Message)]
13562pub struct KvmArmSetupDebugFtraceEvent {
13563    #[prost(uint32, optional, tag="1")]
13564    pub guest_debug: ::core::option::Option<u32>,
13565    #[prost(uint64, optional, tag="2")]
13566    pub vcpu: ::core::option::Option<u64>,
13567}
13568#[derive(Clone, PartialEq, ::prost::Message)]
13569pub struct KvmEntryFtraceEvent {
13570    #[prost(uint64, optional, tag="1")]
13571    pub vcpu_pc: ::core::option::Option<u64>,
13572}
13573#[derive(Clone, PartialEq, ::prost::Message)]
13574pub struct KvmExitFtraceEvent {
13575    #[prost(uint32, optional, tag="1")]
13576    pub esr_ec: ::core::option::Option<u32>,
13577    #[prost(int32, optional, tag="2")]
13578    pub ret: ::core::option::Option<i32>,
13579    #[prost(uint64, optional, tag="3")]
13580    pub vcpu_pc: ::core::option::Option<u64>,
13581}
13582#[derive(Clone, PartialEq, ::prost::Message)]
13583pub struct KvmFpuFtraceEvent {
13584    #[prost(uint32, optional, tag="1")]
13585    pub load: ::core::option::Option<u32>,
13586}
13587#[derive(Clone, PartialEq, ::prost::Message)]
13588pub struct KvmGetTimerMapFtraceEvent {
13589    #[prost(int32, optional, tag="1")]
13590    pub direct_ptimer: ::core::option::Option<i32>,
13591    #[prost(int32, optional, tag="2")]
13592    pub direct_vtimer: ::core::option::Option<i32>,
13593    #[prost(int32, optional, tag="3")]
13594    pub emul_ptimer: ::core::option::Option<i32>,
13595    #[prost(uint64, optional, tag="4")]
13596    pub vcpu_id: ::core::option::Option<u64>,
13597}
13598#[derive(Clone, PartialEq, ::prost::Message)]
13599pub struct KvmGuestFaultFtraceEvent {
13600    #[prost(uint64, optional, tag="1")]
13601    pub hsr: ::core::option::Option<u64>,
13602    #[prost(uint64, optional, tag="2")]
13603    pub hxfar: ::core::option::Option<u64>,
13604    #[prost(uint64, optional, tag="3")]
13605    pub ipa: ::core::option::Option<u64>,
13606    #[prost(uint64, optional, tag="4")]
13607    pub vcpu_pc: ::core::option::Option<u64>,
13608}
13609#[derive(Clone, PartialEq, ::prost::Message)]
13610pub struct KvmHandleSysRegFtraceEvent {
13611    #[prost(uint64, optional, tag="1")]
13612    pub hsr: ::core::option::Option<u64>,
13613}
13614#[derive(Clone, PartialEq, ::prost::Message)]
13615pub struct KvmHvcArm64FtraceEvent {
13616    #[prost(uint64, optional, tag="1")]
13617    pub imm: ::core::option::Option<u64>,
13618    #[prost(uint64, optional, tag="2")]
13619    pub r0: ::core::option::Option<u64>,
13620    #[prost(uint64, optional, tag="3")]
13621    pub vcpu_pc: ::core::option::Option<u64>,
13622}
13623#[derive(Clone, PartialEq, ::prost::Message)]
13624pub struct KvmIrqLineFtraceEvent {
13625    #[prost(int32, optional, tag="1")]
13626    pub irq_num: ::core::option::Option<i32>,
13627    #[prost(int32, optional, tag="2")]
13628    pub level: ::core::option::Option<i32>,
13629    #[prost(uint32, optional, tag="3")]
13630    pub r#type: ::core::option::Option<u32>,
13631    #[prost(int32, optional, tag="4")]
13632    pub vcpu_idx: ::core::option::Option<i32>,
13633}
13634#[derive(Clone, PartialEq, ::prost::Message)]
13635pub struct KvmMmioFtraceEvent {
13636    #[prost(uint64, optional, tag="1")]
13637    pub gpa: ::core::option::Option<u64>,
13638    #[prost(uint32, optional, tag="2")]
13639    pub len: ::core::option::Option<u32>,
13640    #[prost(uint32, optional, tag="3")]
13641    pub r#type: ::core::option::Option<u32>,
13642    #[prost(uint64, optional, tag="4")]
13643    pub val: ::core::option::Option<u64>,
13644}
13645#[derive(Clone, PartialEq, ::prost::Message)]
13646pub struct KvmMmioEmulateFtraceEvent {
13647    #[prost(uint64, optional, tag="1")]
13648    pub cpsr: ::core::option::Option<u64>,
13649    #[prost(uint64, optional, tag="2")]
13650    pub instr: ::core::option::Option<u64>,
13651    #[prost(uint64, optional, tag="3")]
13652    pub vcpu_pc: ::core::option::Option<u64>,
13653}
13654#[derive(Clone, PartialEq, ::prost::Message)]
13655pub struct KvmSetGuestDebugFtraceEvent {
13656    #[prost(uint32, optional, tag="1")]
13657    pub guest_debug: ::core::option::Option<u32>,
13658    #[prost(uint64, optional, tag="2")]
13659    pub vcpu: ::core::option::Option<u64>,
13660}
13661#[derive(Clone, PartialEq, ::prost::Message)]
13662pub struct KvmSetIrqFtraceEvent {
13663    #[prost(uint32, optional, tag="1")]
13664    pub gsi: ::core::option::Option<u32>,
13665    #[prost(int32, optional, tag="2")]
13666    pub irq_source_id: ::core::option::Option<i32>,
13667    #[prost(int32, optional, tag="3")]
13668    pub level: ::core::option::Option<i32>,
13669}
13670#[derive(Clone, PartialEq, ::prost::Message)]
13671pub struct KvmSetSpteHvaFtraceEvent {
13672    #[prost(uint64, optional, tag="1")]
13673    pub hva: ::core::option::Option<u64>,
13674}
13675#[derive(Clone, PartialEq, ::prost::Message)]
13676pub struct KvmSetWayFlushFtraceEvent {
13677    #[prost(uint32, optional, tag="1")]
13678    pub cache: ::core::option::Option<u32>,
13679    #[prost(uint64, optional, tag="2")]
13680    pub vcpu_pc: ::core::option::Option<u64>,
13681}
13682#[derive(Clone, PartialEq, ::prost::Message)]
13683pub struct KvmSysAccessFtraceEvent {
13684    #[prost(uint32, optional, tag="1")]
13685    pub c_rm: ::core::option::Option<u32>,
13686    #[prost(uint32, optional, tag="2")]
13687    pub c_rn: ::core::option::Option<u32>,
13688    #[prost(uint32, optional, tag="3")]
13689    pub op0: ::core::option::Option<u32>,
13690    #[prost(uint32, optional, tag="4")]
13691    pub op1: ::core::option::Option<u32>,
13692    #[prost(uint32, optional, tag="5")]
13693    pub op2: ::core::option::Option<u32>,
13694    #[prost(uint32, optional, tag="6")]
13695    pub is_write: ::core::option::Option<u32>,
13696    #[prost(string, optional, tag="7")]
13697    pub name: ::core::option::Option<::prost::alloc::string::String>,
13698    #[prost(uint64, optional, tag="8")]
13699    pub vcpu_pc: ::core::option::Option<u64>,
13700}
13701#[derive(Clone, PartialEq, ::prost::Message)]
13702pub struct KvmTestAgeHvaFtraceEvent {
13703    #[prost(uint64, optional, tag="1")]
13704    pub hva: ::core::option::Option<u64>,
13705}
13706#[derive(Clone, PartialEq, ::prost::Message)]
13707pub struct KvmTimerEmulateFtraceEvent {
13708    #[prost(uint32, optional, tag="1")]
13709    pub should_fire: ::core::option::Option<u32>,
13710    #[prost(int32, optional, tag="2")]
13711    pub timer_idx: ::core::option::Option<i32>,
13712}
13713#[derive(Clone, PartialEq, ::prost::Message)]
13714pub struct KvmTimerHrtimerExpireFtraceEvent {
13715    #[prost(int32, optional, tag="1")]
13716    pub timer_idx: ::core::option::Option<i32>,
13717}
13718#[derive(Clone, PartialEq, ::prost::Message)]
13719pub struct KvmTimerRestoreStateFtraceEvent {
13720    #[prost(uint64, optional, tag="1")]
13721    pub ctl: ::core::option::Option<u64>,
13722    #[prost(uint64, optional, tag="2")]
13723    pub cval: ::core::option::Option<u64>,
13724    #[prost(int32, optional, tag="3")]
13725    pub timer_idx: ::core::option::Option<i32>,
13726}
13727#[derive(Clone, PartialEq, ::prost::Message)]
13728pub struct KvmTimerSaveStateFtraceEvent {
13729    #[prost(uint64, optional, tag="1")]
13730    pub ctl: ::core::option::Option<u64>,
13731    #[prost(uint64, optional, tag="2")]
13732    pub cval: ::core::option::Option<u64>,
13733    #[prost(int32, optional, tag="3")]
13734    pub timer_idx: ::core::option::Option<i32>,
13735}
13736#[derive(Clone, PartialEq, ::prost::Message)]
13737pub struct KvmTimerUpdateIrqFtraceEvent {
13738    #[prost(uint32, optional, tag="1")]
13739    pub irq: ::core::option::Option<u32>,
13740    #[prost(int32, optional, tag="2")]
13741    pub level: ::core::option::Option<i32>,
13742    #[prost(uint64, optional, tag="3")]
13743    pub vcpu_id: ::core::option::Option<u64>,
13744}
13745#[derive(Clone, PartialEq, ::prost::Message)]
13746pub struct KvmToggleCacheFtraceEvent {
13747    #[prost(uint32, optional, tag="1")]
13748    pub now: ::core::option::Option<u32>,
13749    #[prost(uint64, optional, tag="2")]
13750    pub vcpu_pc: ::core::option::Option<u64>,
13751    #[prost(uint32, optional, tag="3")]
13752    pub was: ::core::option::Option<u32>,
13753}
13754#[derive(Clone, PartialEq, ::prost::Message)]
13755pub struct KvmUnmapHvaRangeFtraceEvent {
13756    #[prost(uint64, optional, tag="1")]
13757    pub end: ::core::option::Option<u64>,
13758    #[prost(uint64, optional, tag="2")]
13759    pub start: ::core::option::Option<u64>,
13760}
13761#[derive(Clone, PartialEq, ::prost::Message)]
13762pub struct KvmUserspaceExitFtraceEvent {
13763    #[prost(uint32, optional, tag="1")]
13764    pub reason: ::core::option::Option<u32>,
13765}
13766#[derive(Clone, PartialEq, ::prost::Message)]
13767pub struct KvmVcpuWakeupFtraceEvent {
13768    #[prost(uint64, optional, tag="1")]
13769    pub ns: ::core::option::Option<u64>,
13770    #[prost(uint32, optional, tag="2")]
13771    pub valid: ::core::option::Option<u32>,
13772    #[prost(uint32, optional, tag="3")]
13773    pub waited: ::core::option::Option<u32>,
13774}
13775#[derive(Clone, PartialEq, ::prost::Message)]
13776pub struct KvmWfxArm64FtraceEvent {
13777    #[prost(uint32, optional, tag="1")]
13778    pub is_wfe: ::core::option::Option<u32>,
13779    #[prost(uint64, optional, tag="2")]
13780    pub vcpu_pc: ::core::option::Option<u64>,
13781}
13782#[derive(Clone, PartialEq, ::prost::Message)]
13783pub struct TrapRegFtraceEvent {
13784    #[prost(string, optional, tag="1")]
13785    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
13786    #[prost(uint32, optional, tag="2")]
13787    pub is_write: ::core::option::Option<u32>,
13788    #[prost(int32, optional, tag="3")]
13789    pub reg: ::core::option::Option<i32>,
13790    #[prost(uint64, optional, tag="4")]
13791    pub write_value: ::core::option::Option<u64>,
13792}
13793#[derive(Clone, PartialEq, ::prost::Message)]
13794pub struct VgicUpdateIrqPendingFtraceEvent {
13795    #[prost(uint32, optional, tag="1")]
13796    pub irq: ::core::option::Option<u32>,
13797    #[prost(uint32, optional, tag="2")]
13798    pub level: ::core::option::Option<u32>,
13799    #[prost(uint64, optional, tag="3")]
13800    pub vcpu_id: ::core::option::Option<u64>,
13801}
13802// End of protos/perfetto/trace/ftrace/kvm.proto
13803
13804// Begin of protos/perfetto/trace/ftrace/lowmemorykiller.proto
13805
13806#[derive(Clone, PartialEq, ::prost::Message)]
13807pub struct LowmemoryKillFtraceEvent {
13808    #[prost(string, optional, tag="1")]
13809    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13810    #[prost(int32, optional, tag="2")]
13811    pub pid: ::core::option::Option<i32>,
13812    #[prost(int64, optional, tag="3")]
13813    pub pagecache_size: ::core::option::Option<i64>,
13814    #[prost(int64, optional, tag="4")]
13815    pub pagecache_limit: ::core::option::Option<i64>,
13816    #[prost(int64, optional, tag="5")]
13817    pub free: ::core::option::Option<i64>,
13818}
13819// End of protos/perfetto/trace/ftrace/lowmemorykiller.proto
13820
13821// Begin of protos/perfetto/trace/ftrace/lwis.proto
13822
13823#[derive(Clone, PartialEq, ::prost::Message)]
13824pub struct LwisTracingMarkWriteFtraceEvent {
13825    #[prost(string, optional, tag="1")]
13826    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
13827    #[prost(uint32, optional, tag="2")]
13828    pub r#type: ::core::option::Option<u32>,
13829    #[prost(int32, optional, tag="3")]
13830    pub pid: ::core::option::Option<i32>,
13831    #[prost(string, optional, tag="4")]
13832    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
13833    #[prost(int64, optional, tag="5")]
13834    pub value: ::core::option::Option<i64>,
13835}
13836// End of protos/perfetto/trace/ftrace/lwis.proto
13837
13838// Begin of protos/perfetto/trace/ftrace/mali.proto
13839
13840#[derive(Clone, PartialEq, ::prost::Message)]
13841pub struct MaliTracingMarkWriteFtraceEvent {
13842    #[prost(string, optional, tag="1")]
13843    pub name: ::core::option::Option<::prost::alloc::string::String>,
13844    #[prost(int32, optional, tag="2")]
13845    pub pid: ::core::option::Option<i32>,
13846    #[prost(uint32, optional, tag="3")]
13847    pub r#type: ::core::option::Option<u32>,
13848    #[prost(int32, optional, tag="4")]
13849    pub value: ::core::option::Option<i32>,
13850}
13851#[derive(Clone, PartialEq, ::prost::Message)]
13852pub struct MaliMaliKcpucqssetFtraceEvent {
13853    #[prost(uint32, optional, tag="1")]
13854    pub id: ::core::option::Option<u32>,
13855    #[prost(uint64, optional, tag="2")]
13856    pub info_val1: ::core::option::Option<u64>,
13857    #[prost(uint64, optional, tag="3")]
13858    pub info_val2: ::core::option::Option<u64>,
13859    #[prost(uint32, optional, tag="4")]
13860    pub kctx_id: ::core::option::Option<u32>,
13861    #[prost(int32, optional, tag="5")]
13862    pub kctx_tgid: ::core::option::Option<i32>,
13863}
13864#[derive(Clone, PartialEq, ::prost::Message)]
13865pub struct MaliMaliKcpucqswaitstartFtraceEvent {
13866    #[prost(uint32, optional, tag="1")]
13867    pub id: ::core::option::Option<u32>,
13868    #[prost(uint64, optional, tag="2")]
13869    pub info_val1: ::core::option::Option<u64>,
13870    #[prost(uint64, optional, tag="3")]
13871    pub info_val2: ::core::option::Option<u64>,
13872    #[prost(uint32, optional, tag="4")]
13873    pub kctx_id: ::core::option::Option<u32>,
13874    #[prost(int32, optional, tag="5")]
13875    pub kctx_tgid: ::core::option::Option<i32>,
13876}
13877#[derive(Clone, PartialEq, ::prost::Message)]
13878pub struct MaliMaliKcpucqswaitendFtraceEvent {
13879    #[prost(uint32, optional, tag="1")]
13880    pub id: ::core::option::Option<u32>,
13881    #[prost(uint64, optional, tag="2")]
13882    pub info_val1: ::core::option::Option<u64>,
13883    #[prost(uint64, optional, tag="3")]
13884    pub info_val2: ::core::option::Option<u64>,
13885    #[prost(uint32, optional, tag="4")]
13886    pub kctx_id: ::core::option::Option<u32>,
13887    #[prost(int32, optional, tag="5")]
13888    pub kctx_tgid: ::core::option::Option<i32>,
13889}
13890#[derive(Clone, PartialEq, ::prost::Message)]
13891pub struct MaliMaliKcpufencesignalFtraceEvent {
13892    #[prost(uint64, optional, tag="1")]
13893    pub info_val1: ::core::option::Option<u64>,
13894    #[prost(uint64, optional, tag="2")]
13895    pub info_val2: ::core::option::Option<u64>,
13896    #[prost(int32, optional, tag="3")]
13897    pub kctx_tgid: ::core::option::Option<i32>,
13898    #[prost(uint32, optional, tag="4")]
13899    pub kctx_id: ::core::option::Option<u32>,
13900    #[prost(uint32, optional, tag="5")]
13901    pub id: ::core::option::Option<u32>,
13902}
13903#[derive(Clone, PartialEq, ::prost::Message)]
13904pub struct MaliMaliKcpufencewaitstartFtraceEvent {
13905    #[prost(uint64, optional, tag="1")]
13906    pub info_val1: ::core::option::Option<u64>,
13907    #[prost(uint64, optional, tag="2")]
13908    pub info_val2: ::core::option::Option<u64>,
13909    #[prost(int32, optional, tag="3")]
13910    pub kctx_tgid: ::core::option::Option<i32>,
13911    #[prost(uint32, optional, tag="4")]
13912    pub kctx_id: ::core::option::Option<u32>,
13913    #[prost(uint32, optional, tag="5")]
13914    pub id: ::core::option::Option<u32>,
13915}
13916#[derive(Clone, PartialEq, ::prost::Message)]
13917pub struct MaliMaliKcpufencewaitendFtraceEvent {
13918    #[prost(uint64, optional, tag="1")]
13919    pub info_val1: ::core::option::Option<u64>,
13920    #[prost(uint64, optional, tag="2")]
13921    pub info_val2: ::core::option::Option<u64>,
13922    #[prost(int32, optional, tag="3")]
13923    pub kctx_tgid: ::core::option::Option<i32>,
13924    #[prost(uint32, optional, tag="4")]
13925    pub kctx_id: ::core::option::Option<u32>,
13926    #[prost(uint32, optional, tag="5")]
13927    pub id: ::core::option::Option<u32>,
13928}
13929#[derive(Clone, PartialEq, ::prost::Message)]
13930pub struct MaliMaliCsfinterruptstartFtraceEvent {
13931    #[prost(int32, optional, tag="1")]
13932    pub kctx_tgid: ::core::option::Option<i32>,
13933    #[prost(uint32, optional, tag="2")]
13934    pub kctx_id: ::core::option::Option<u32>,
13935    #[prost(uint64, optional, tag="3")]
13936    pub info_val: ::core::option::Option<u64>,
13937}
13938#[derive(Clone, PartialEq, ::prost::Message)]
13939pub struct MaliMaliCsfinterruptendFtraceEvent {
13940    #[prost(int32, optional, tag="1")]
13941    pub kctx_tgid: ::core::option::Option<i32>,
13942    #[prost(uint32, optional, tag="2")]
13943    pub kctx_id: ::core::option::Option<u32>,
13944    #[prost(uint64, optional, tag="3")]
13945    pub info_val: ::core::option::Option<u64>,
13946}
13947#[derive(Clone, PartialEq, ::prost::Message)]
13948pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
13949    #[prost(int32, optional, tag="1")]
13950    pub kctx_tgid: ::core::option::Option<i32>,
13951    #[prost(uint32, optional, tag="2")]
13952    pub kctx_id: ::core::option::Option<u32>,
13953    #[prost(uint64, optional, tag="3")]
13954    pub info_val: ::core::option::Option<u64>,
13955}
13956#[derive(Clone, PartialEq, ::prost::Message)]
13957pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
13958    #[prost(int32, optional, tag="1")]
13959    pub kctx_tgid: ::core::option::Option<i32>,
13960    #[prost(uint32, optional, tag="2")]
13961    pub kctx_id: ::core::option::Option<u32>,
13962    #[prost(uint64, optional, tag="3")]
13963    pub info_val: ::core::option::Option<u64>,
13964}
13965#[derive(Clone, PartialEq, ::prost::Message)]
13966pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
13967    #[prost(int32, optional, tag="1")]
13968    pub kctx_tgid: ::core::option::Option<i32>,
13969    #[prost(uint32, optional, tag="2")]
13970    pub kctx_id: ::core::option::Option<u32>,
13971    #[prost(uint64, optional, tag="3")]
13972    pub info_val: ::core::option::Option<u64>,
13973}
13974#[derive(Clone, PartialEq, ::prost::Message)]
13975pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
13976    #[prost(int32, optional, tag="1")]
13977    pub kctx_tgid: ::core::option::Option<i32>,
13978    #[prost(uint32, optional, tag="2")]
13979    pub kctx_id: ::core::option::Option<u32>,
13980    #[prost(uint64, optional, tag="3")]
13981    pub info_val: ::core::option::Option<u64>,
13982}
13983#[derive(Clone, PartialEq, ::prost::Message)]
13984pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
13985    #[prost(int32, optional, tag="1")]
13986    pub kctx_tgid: ::core::option::Option<i32>,
13987    #[prost(uint32, optional, tag="2")]
13988    pub kctx_id: ::core::option::Option<u32>,
13989    #[prost(uint64, optional, tag="3")]
13990    pub info_val: ::core::option::Option<u64>,
13991}
13992#[derive(Clone, PartialEq, ::prost::Message)]
13993pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
13994    #[prost(int32, optional, tag="1")]
13995    pub kctx_tgid: ::core::option::Option<i32>,
13996    #[prost(uint32, optional, tag="2")]
13997    pub kctx_id: ::core::option::Option<u32>,
13998    #[prost(uint64, optional, tag="3")]
13999    pub info_val: ::core::option::Option<u64>,
14000}
14001#[derive(Clone, PartialEq, ::prost::Message)]
14002pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
14003    #[prost(int32, optional, tag="1")]
14004    pub kctx_tgid: ::core::option::Option<i32>,
14005    #[prost(uint32, optional, tag="2")]
14006    pub kctx_id: ::core::option::Option<u32>,
14007    #[prost(uint64, optional, tag="3")]
14008    pub info_val: ::core::option::Option<u64>,
14009}
14010#[derive(Clone, PartialEq, ::prost::Message)]
14011pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
14012    #[prost(int32, optional, tag="1")]
14013    pub kctx_tgid: ::core::option::Option<i32>,
14014    #[prost(uint32, optional, tag="2")]
14015    pub kctx_id: ::core::option::Option<u32>,
14016    #[prost(uint64, optional, tag="3")]
14017    pub info_val: ::core::option::Option<u64>,
14018}
14019#[derive(Clone, PartialEq, ::prost::Message)]
14020pub struct MaliMaliPmmcuinsleepFtraceEvent {
14021    #[prost(int32, optional, tag="1")]
14022    pub kctx_tgid: ::core::option::Option<i32>,
14023    #[prost(uint32, optional, tag="2")]
14024    pub kctx_id: ::core::option::Option<u32>,
14025    #[prost(uint64, optional, tag="3")]
14026    pub info_val: ::core::option::Option<u64>,
14027}
14028#[derive(Clone, PartialEq, ::prost::Message)]
14029pub struct MaliMaliPmmcuoffFtraceEvent {
14030    #[prost(int32, optional, tag="1")]
14031    pub kctx_tgid: ::core::option::Option<i32>,
14032    #[prost(uint32, optional, tag="2")]
14033    pub kctx_id: ::core::option::Option<u32>,
14034    #[prost(uint64, optional, tag="3")]
14035    pub info_val: ::core::option::Option<u64>,
14036}
14037#[derive(Clone, PartialEq, ::prost::Message)]
14038pub struct MaliMaliPmmcuonFtraceEvent {
14039    #[prost(int32, optional, tag="1")]
14040    pub kctx_tgid: ::core::option::Option<i32>,
14041    #[prost(uint32, optional, tag="2")]
14042    pub kctx_id: ::core::option::Option<u32>,
14043    #[prost(uint64, optional, tag="3")]
14044    pub info_val: ::core::option::Option<u64>,
14045}
14046#[derive(Clone, PartialEq, ::prost::Message)]
14047pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
14048    #[prost(int32, optional, tag="1")]
14049    pub kctx_tgid: ::core::option::Option<i32>,
14050    #[prost(uint32, optional, tag="2")]
14051    pub kctx_id: ::core::option::Option<u32>,
14052    #[prost(uint64, optional, tag="3")]
14053    pub info_val: ::core::option::Option<u64>,
14054}
14055#[derive(Clone, PartialEq, ::prost::Message)]
14056pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
14057    #[prost(int32, optional, tag="1")]
14058    pub kctx_tgid: ::core::option::Option<i32>,
14059    #[prost(uint32, optional, tag="2")]
14060    pub kctx_id: ::core::option::Option<u32>,
14061    #[prost(uint64, optional, tag="3")]
14062    pub info_val: ::core::option::Option<u64>,
14063}
14064#[derive(Clone, PartialEq, ::prost::Message)]
14065pub struct MaliMaliPmmcuonhaltFtraceEvent {
14066    #[prost(int32, optional, tag="1")]
14067    pub kctx_tgid: ::core::option::Option<i32>,
14068    #[prost(uint32, optional, tag="2")]
14069    pub kctx_id: ::core::option::Option<u32>,
14070    #[prost(uint64, optional, tag="3")]
14071    pub info_val: ::core::option::Option<u64>,
14072}
14073#[derive(Clone, PartialEq, ::prost::Message)]
14074pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
14075    #[prost(int32, optional, tag="1")]
14076    pub kctx_tgid: ::core::option::Option<i32>,
14077    #[prost(uint32, optional, tag="2")]
14078    pub kctx_id: ::core::option::Option<u32>,
14079    #[prost(uint64, optional, tag="3")]
14080    pub info_val: ::core::option::Option<u64>,
14081}
14082#[derive(Clone, PartialEq, ::prost::Message)]
14083pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
14084    #[prost(int32, optional, tag="1")]
14085    pub kctx_tgid: ::core::option::Option<i32>,
14086    #[prost(uint32, optional, tag="2")]
14087    pub kctx_id: ::core::option::Option<u32>,
14088    #[prost(uint64, optional, tag="3")]
14089    pub info_val: ::core::option::Option<u64>,
14090}
14091#[derive(Clone, PartialEq, ::prost::Message)]
14092pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
14093    #[prost(int32, optional, tag="1")]
14094    pub kctx_tgid: ::core::option::Option<i32>,
14095    #[prost(uint32, optional, tag="2")]
14096    pub kctx_id: ::core::option::Option<u32>,
14097    #[prost(uint64, optional, tag="3")]
14098    pub info_val: ::core::option::Option<u64>,
14099}
14100#[derive(Clone, PartialEq, ::prost::Message)]
14101pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
14102    #[prost(int32, optional, tag="1")]
14103    pub kctx_tgid: ::core::option::Option<i32>,
14104    #[prost(uint32, optional, tag="2")]
14105    pub kctx_id: ::core::option::Option<u32>,
14106    #[prost(uint64, optional, tag="3")]
14107    pub info_val: ::core::option::Option<u64>,
14108}
14109#[derive(Clone, PartialEq, ::prost::Message)]
14110pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
14111    #[prost(int32, optional, tag="1")]
14112    pub kctx_tgid: ::core::option::Option<i32>,
14113    #[prost(uint32, optional, tag="2")]
14114    pub kctx_id: ::core::option::Option<u32>,
14115    #[prost(uint64, optional, tag="3")]
14116    pub info_val: ::core::option::Option<u64>,
14117}
14118#[derive(Clone, PartialEq, ::prost::Message)]
14119pub struct MaliMaliPmmcupendoffFtraceEvent {
14120    #[prost(int32, optional, tag="1")]
14121    pub kctx_tgid: ::core::option::Option<i32>,
14122    #[prost(uint32, optional, tag="2")]
14123    pub kctx_id: ::core::option::Option<u32>,
14124    #[prost(uint64, optional, tag="3")]
14125    pub info_val: ::core::option::Option<u64>,
14126}
14127#[derive(Clone, PartialEq, ::prost::Message)]
14128pub struct MaliMaliPmmcupendonreloadFtraceEvent {
14129    #[prost(int32, optional, tag="1")]
14130    pub kctx_tgid: ::core::option::Option<i32>,
14131    #[prost(uint32, optional, tag="2")]
14132    pub kctx_id: ::core::option::Option<u32>,
14133    #[prost(uint64, optional, tag="3")]
14134    pub info_val: ::core::option::Option<u64>,
14135}
14136#[derive(Clone, PartialEq, ::prost::Message)]
14137pub struct MaliMaliPmmcupowerdownFtraceEvent {
14138    #[prost(int32, optional, tag="1")]
14139    pub kctx_tgid: ::core::option::Option<i32>,
14140    #[prost(uint32, optional, tag="2")]
14141    pub kctx_id: ::core::option::Option<u32>,
14142    #[prost(uint64, optional, tag="3")]
14143    pub info_val: ::core::option::Option<u64>,
14144}
14145#[derive(Clone, PartialEq, ::prost::Message)]
14146pub struct MaliMaliPmmcuresetwaitFtraceEvent {
14147    #[prost(int32, optional, tag="1")]
14148    pub kctx_tgid: ::core::option::Option<i32>,
14149    #[prost(uint32, optional, tag="2")]
14150    pub kctx_id: ::core::option::Option<u32>,
14151    #[prost(uint64, optional, tag="3")]
14152    pub info_val: ::core::option::Option<u64>,
14153}
14154#[derive(Clone, PartialEq, ::prost::Message)]
14155pub struct MaliGpuPowerStateFtraceEvent {
14156    #[prost(uint64, optional, tag="1")]
14157    pub change_ns: ::core::option::Option<u64>,
14158    #[prost(int32, optional, tag="2")]
14159    pub from_state: ::core::option::Option<i32>,
14160    #[prost(int32, optional, tag="3")]
14161    pub to_state: ::core::option::Option<i32>,
14162}
14163// End of protos/perfetto/trace/ftrace/mali.proto
14164
14165// Begin of protos/perfetto/trace/ftrace/mdss.proto
14166
14167#[derive(Clone, PartialEq, ::prost::Message)]
14168pub struct MdpCmdKickoffFtraceEvent {
14169    #[prost(uint32, optional, tag="1")]
14170    pub ctl_num: ::core::option::Option<u32>,
14171    #[prost(int32, optional, tag="2")]
14172    pub kickoff_cnt: ::core::option::Option<i32>,
14173}
14174#[derive(Clone, PartialEq, ::prost::Message)]
14175pub struct MdpCommitFtraceEvent {
14176    #[prost(uint32, optional, tag="1")]
14177    pub num: ::core::option::Option<u32>,
14178    #[prost(uint32, optional, tag="2")]
14179    pub play_cnt: ::core::option::Option<u32>,
14180    #[prost(uint32, optional, tag="3")]
14181    pub clk_rate: ::core::option::Option<u32>,
14182    #[prost(uint64, optional, tag="4")]
14183    pub bandwidth: ::core::option::Option<u64>,
14184}
14185#[derive(Clone, PartialEq, ::prost::Message)]
14186pub struct MdpPerfSetOtFtraceEvent {
14187    #[prost(uint32, optional, tag="1")]
14188    pub pnum: ::core::option::Option<u32>,
14189    #[prost(uint32, optional, tag="2")]
14190    pub xin_id: ::core::option::Option<u32>,
14191    #[prost(uint32, optional, tag="3")]
14192    pub rd_lim: ::core::option::Option<u32>,
14193    #[prost(uint32, optional, tag="4")]
14194    pub is_vbif_rt: ::core::option::Option<u32>,
14195}
14196#[derive(Clone, PartialEq, ::prost::Message)]
14197pub struct MdpSsppChangeFtraceEvent {
14198    #[prost(uint32, optional, tag="1")]
14199    pub num: ::core::option::Option<u32>,
14200    #[prost(uint32, optional, tag="2")]
14201    pub play_cnt: ::core::option::Option<u32>,
14202    #[prost(uint32, optional, tag="3")]
14203    pub mixer: ::core::option::Option<u32>,
14204    #[prost(uint32, optional, tag="4")]
14205    pub stage: ::core::option::Option<u32>,
14206    #[prost(uint32, optional, tag="5")]
14207    pub flags: ::core::option::Option<u32>,
14208    #[prost(uint32, optional, tag="6")]
14209    pub format: ::core::option::Option<u32>,
14210    #[prost(uint32, optional, tag="7")]
14211    pub img_w: ::core::option::Option<u32>,
14212    #[prost(uint32, optional, tag="8")]
14213    pub img_h: ::core::option::Option<u32>,
14214    #[prost(uint32, optional, tag="9")]
14215    pub src_x: ::core::option::Option<u32>,
14216    #[prost(uint32, optional, tag="10")]
14217    pub src_y: ::core::option::Option<u32>,
14218    #[prost(uint32, optional, tag="11")]
14219    pub src_w: ::core::option::Option<u32>,
14220    #[prost(uint32, optional, tag="12")]
14221    pub src_h: ::core::option::Option<u32>,
14222    #[prost(uint32, optional, tag="13")]
14223    pub dst_x: ::core::option::Option<u32>,
14224    #[prost(uint32, optional, tag="14")]
14225    pub dst_y: ::core::option::Option<u32>,
14226    #[prost(uint32, optional, tag="15")]
14227    pub dst_w: ::core::option::Option<u32>,
14228    #[prost(uint32, optional, tag="16")]
14229    pub dst_h: ::core::option::Option<u32>,
14230}
14231#[derive(Clone, PartialEq, ::prost::Message)]
14232pub struct TracingMarkWriteFtraceEvent {
14233    #[prost(int32, optional, tag="1")]
14234    pub pid: ::core::option::Option<i32>,
14235    #[prost(string, optional, tag="2")]
14236    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14237    #[prost(uint32, optional, tag="3")]
14238    pub trace_begin: ::core::option::Option<u32>,
14239}
14240#[derive(Clone, PartialEq, ::prost::Message)]
14241pub struct MdpCmdPingpongDoneFtraceEvent {
14242    #[prost(uint32, optional, tag="1")]
14243    pub ctl_num: ::core::option::Option<u32>,
14244    #[prost(uint32, optional, tag="2")]
14245    pub intf_num: ::core::option::Option<u32>,
14246    #[prost(uint32, optional, tag="3")]
14247    pub pp_num: ::core::option::Option<u32>,
14248    #[prost(int32, optional, tag="4")]
14249    pub koff_cnt: ::core::option::Option<i32>,
14250}
14251#[derive(Clone, PartialEq, ::prost::Message)]
14252pub struct MdpCompareBwFtraceEvent {
14253    #[prost(uint64, optional, tag="1")]
14254    pub new_ab: ::core::option::Option<u64>,
14255    #[prost(uint64, optional, tag="2")]
14256    pub new_ib: ::core::option::Option<u64>,
14257    #[prost(uint64, optional, tag="3")]
14258    pub new_wb: ::core::option::Option<u64>,
14259    #[prost(uint64, optional, tag="4")]
14260    pub old_ab: ::core::option::Option<u64>,
14261    #[prost(uint64, optional, tag="5")]
14262    pub old_ib: ::core::option::Option<u64>,
14263    #[prost(uint64, optional, tag="6")]
14264    pub old_wb: ::core::option::Option<u64>,
14265    #[prost(uint32, optional, tag="7")]
14266    pub params_changed: ::core::option::Option<u32>,
14267    #[prost(uint32, optional, tag="8")]
14268    pub update_bw: ::core::option::Option<u32>,
14269}
14270#[derive(Clone, PartialEq, ::prost::Message)]
14271pub struct MdpPerfSetPanicLutsFtraceEvent {
14272    #[prost(uint32, optional, tag="1")]
14273    pub pnum: ::core::option::Option<u32>,
14274    #[prost(uint32, optional, tag="2")]
14275    pub fmt: ::core::option::Option<u32>,
14276    #[prost(uint32, optional, tag="3")]
14277    pub mode: ::core::option::Option<u32>,
14278    #[prost(uint32, optional, tag="4")]
14279    pub panic_lut: ::core::option::Option<u32>,
14280    #[prost(uint32, optional, tag="5")]
14281    pub robust_lut: ::core::option::Option<u32>,
14282}
14283#[derive(Clone, PartialEq, ::prost::Message)]
14284pub struct MdpSsppSetFtraceEvent {
14285    #[prost(uint32, optional, tag="1")]
14286    pub num: ::core::option::Option<u32>,
14287    #[prost(uint32, optional, tag="2")]
14288    pub play_cnt: ::core::option::Option<u32>,
14289    #[prost(uint32, optional, tag="3")]
14290    pub mixer: ::core::option::Option<u32>,
14291    #[prost(uint32, optional, tag="4")]
14292    pub stage: ::core::option::Option<u32>,
14293    #[prost(uint32, optional, tag="5")]
14294    pub flags: ::core::option::Option<u32>,
14295    #[prost(uint32, optional, tag="6")]
14296    pub format: ::core::option::Option<u32>,
14297    #[prost(uint32, optional, tag="7")]
14298    pub img_w: ::core::option::Option<u32>,
14299    #[prost(uint32, optional, tag="8")]
14300    pub img_h: ::core::option::Option<u32>,
14301    #[prost(uint32, optional, tag="9")]
14302    pub src_x: ::core::option::Option<u32>,
14303    #[prost(uint32, optional, tag="10")]
14304    pub src_y: ::core::option::Option<u32>,
14305    #[prost(uint32, optional, tag="11")]
14306    pub src_w: ::core::option::Option<u32>,
14307    #[prost(uint32, optional, tag="12")]
14308    pub src_h: ::core::option::Option<u32>,
14309    #[prost(uint32, optional, tag="13")]
14310    pub dst_x: ::core::option::Option<u32>,
14311    #[prost(uint32, optional, tag="14")]
14312    pub dst_y: ::core::option::Option<u32>,
14313    #[prost(uint32, optional, tag="15")]
14314    pub dst_w: ::core::option::Option<u32>,
14315    #[prost(uint32, optional, tag="16")]
14316    pub dst_h: ::core::option::Option<u32>,
14317}
14318#[derive(Clone, PartialEq, ::prost::Message)]
14319pub struct MdpCmdReadptrDoneFtraceEvent {
14320    #[prost(uint32, optional, tag="1")]
14321    pub ctl_num: ::core::option::Option<u32>,
14322    #[prost(int32, optional, tag="2")]
14323    pub koff_cnt: ::core::option::Option<i32>,
14324}
14325#[derive(Clone, PartialEq, ::prost::Message)]
14326pub struct MdpMisrCrcFtraceEvent {
14327    #[prost(uint32, optional, tag="1")]
14328    pub block_id: ::core::option::Option<u32>,
14329    #[prost(uint32, optional, tag="2")]
14330    pub vsync_cnt: ::core::option::Option<u32>,
14331    #[prost(uint32, optional, tag="3")]
14332    pub crc: ::core::option::Option<u32>,
14333}
14334#[derive(Clone, PartialEq, ::prost::Message)]
14335pub struct MdpPerfSetQosLutsFtraceEvent {
14336    #[prost(uint32, optional, tag="1")]
14337    pub pnum: ::core::option::Option<u32>,
14338    #[prost(uint32, optional, tag="2")]
14339    pub fmt: ::core::option::Option<u32>,
14340    #[prost(uint32, optional, tag="3")]
14341    pub intf: ::core::option::Option<u32>,
14342    #[prost(uint32, optional, tag="4")]
14343    pub rot: ::core::option::Option<u32>,
14344    #[prost(uint32, optional, tag="5")]
14345    pub fl: ::core::option::Option<u32>,
14346    #[prost(uint32, optional, tag="6")]
14347    pub lut: ::core::option::Option<u32>,
14348    #[prost(uint32, optional, tag="7")]
14349    pub linear: ::core::option::Option<u32>,
14350}
14351#[derive(Clone, PartialEq, ::prost::Message)]
14352pub struct MdpTraceCounterFtraceEvent {
14353    #[prost(int32, optional, tag="1")]
14354    pub pid: ::core::option::Option<i32>,
14355    #[prost(string, optional, tag="2")]
14356    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
14357    #[prost(int32, optional, tag="3")]
14358    pub value: ::core::option::Option<i32>,
14359}
14360#[derive(Clone, PartialEq, ::prost::Message)]
14361pub struct MdpCmdReleaseBwFtraceEvent {
14362    #[prost(uint32, optional, tag="1")]
14363    pub ctl_num: ::core::option::Option<u32>,
14364}
14365#[derive(Clone, PartialEq, ::prost::Message)]
14366pub struct MdpMixerUpdateFtraceEvent {
14367    #[prost(uint32, optional, tag="1")]
14368    pub mixer_num: ::core::option::Option<u32>,
14369}
14370#[derive(Clone, PartialEq, ::prost::Message)]
14371pub struct MdpPerfSetWmLevelsFtraceEvent {
14372    #[prost(uint32, optional, tag="1")]
14373    pub pnum: ::core::option::Option<u32>,
14374    #[prost(uint32, optional, tag="2")]
14375    pub use_space: ::core::option::Option<u32>,
14376    #[prost(uint32, optional, tag="3")]
14377    pub priority_bytes: ::core::option::Option<u32>,
14378    #[prost(uint32, optional, tag="4")]
14379    pub wm0: ::core::option::Option<u32>,
14380    #[prost(uint32, optional, tag="5")]
14381    pub wm1: ::core::option::Option<u32>,
14382    #[prost(uint32, optional, tag="6")]
14383    pub wm2: ::core::option::Option<u32>,
14384    #[prost(uint32, optional, tag="7")]
14385    pub mb_cnt: ::core::option::Option<u32>,
14386    #[prost(uint32, optional, tag="8")]
14387    pub mb_size: ::core::option::Option<u32>,
14388}
14389#[derive(Clone, PartialEq, ::prost::Message)]
14390pub struct MdpVideoUnderrunDoneFtraceEvent {
14391    #[prost(uint32, optional, tag="1")]
14392    pub ctl_num: ::core::option::Option<u32>,
14393    #[prost(uint32, optional, tag="2")]
14394    pub underrun_cnt: ::core::option::Option<u32>,
14395}
14396#[derive(Clone, PartialEq, ::prost::Message)]
14397pub struct MdpCmdWaitPingpongFtraceEvent {
14398    #[prost(uint32, optional, tag="1")]
14399    pub ctl_num: ::core::option::Option<u32>,
14400    #[prost(int32, optional, tag="2")]
14401    pub kickoff_cnt: ::core::option::Option<i32>,
14402}
14403#[derive(Clone, PartialEq, ::prost::Message)]
14404pub struct MdpPerfPrefillCalcFtraceEvent {
14405    #[prost(uint32, optional, tag="1")]
14406    pub pnum: ::core::option::Option<u32>,
14407    #[prost(uint32, optional, tag="2")]
14408    pub latency_buf: ::core::option::Option<u32>,
14409    #[prost(uint32, optional, tag="3")]
14410    pub ot: ::core::option::Option<u32>,
14411    #[prost(uint32, optional, tag="4")]
14412    pub y_buf: ::core::option::Option<u32>,
14413    #[prost(uint32, optional, tag="5")]
14414    pub y_scaler: ::core::option::Option<u32>,
14415    #[prost(uint32, optional, tag="6")]
14416    pub pp_lines: ::core::option::Option<u32>,
14417    #[prost(uint32, optional, tag="7")]
14418    pub pp_bytes: ::core::option::Option<u32>,
14419    #[prost(uint32, optional, tag="8")]
14420    pub post_sc: ::core::option::Option<u32>,
14421    #[prost(uint32, optional, tag="9")]
14422    pub fbc_bytes: ::core::option::Option<u32>,
14423    #[prost(uint32, optional, tag="10")]
14424    pub prefill_bytes: ::core::option::Option<u32>,
14425}
14426#[derive(Clone, PartialEq, ::prost::Message)]
14427pub struct MdpPerfUpdateBusFtraceEvent {
14428    #[prost(int32, optional, tag="1")]
14429    pub client: ::core::option::Option<i32>,
14430    #[prost(uint64, optional, tag="2")]
14431    pub ab_quota: ::core::option::Option<u64>,
14432    #[prost(uint64, optional, tag="3")]
14433    pub ib_quota: ::core::option::Option<u64>,
14434}
14435#[derive(Clone, PartialEq, ::prost::Message)]
14436pub struct RotatorBwAoAsContextFtraceEvent {
14437    #[prost(uint32, optional, tag="1")]
14438    pub state: ::core::option::Option<u32>,
14439}
14440// End of protos/perfetto/trace/ftrace/mdss.proto
14441
14442// Begin of protos/perfetto/trace/ftrace/mm_event.proto
14443
14444#[derive(Clone, PartialEq, ::prost::Message)]
14445pub struct MmEventRecordFtraceEvent {
14446    #[prost(uint32, optional, tag="1")]
14447    pub avg_lat: ::core::option::Option<u32>,
14448    #[prost(uint32, optional, tag="2")]
14449    pub count: ::core::option::Option<u32>,
14450    #[prost(uint32, optional, tag="3")]
14451    pub max_lat: ::core::option::Option<u32>,
14452    #[prost(uint32, optional, tag="4")]
14453    pub r#type: ::core::option::Option<u32>,
14454}
14455// End of protos/perfetto/trace/ftrace/mm_event.proto
14456
14457// Begin of protos/perfetto/trace/ftrace/net.proto
14458
14459#[derive(Clone, PartialEq, ::prost::Message)]
14460pub struct NetifReceiveSkbFtraceEvent {
14461    #[prost(uint32, optional, tag="1")]
14462    pub len: ::core::option::Option<u32>,
14463    #[prost(string, optional, tag="2")]
14464    pub name: ::core::option::Option<::prost::alloc::string::String>,
14465    #[prost(uint64, optional, tag="3")]
14466    pub skbaddr: ::core::option::Option<u64>,
14467}
14468#[derive(Clone, PartialEq, ::prost::Message)]
14469pub struct NetDevXmitFtraceEvent {
14470    #[prost(uint32, optional, tag="1")]
14471    pub len: ::core::option::Option<u32>,
14472    #[prost(string, optional, tag="2")]
14473    pub name: ::core::option::Option<::prost::alloc::string::String>,
14474    #[prost(int32, optional, tag="3")]
14475    pub rc: ::core::option::Option<i32>,
14476    #[prost(uint64, optional, tag="4")]
14477    pub skbaddr: ::core::option::Option<u64>,
14478}
14479#[derive(Clone, PartialEq, ::prost::Message)]
14480pub struct NapiGroReceiveEntryFtraceEvent {
14481    #[prost(uint32, optional, tag="1")]
14482    pub data_len: ::core::option::Option<u32>,
14483    #[prost(uint32, optional, tag="2")]
14484    pub gso_size: ::core::option::Option<u32>,
14485    #[prost(uint32, optional, tag="3")]
14486    pub gso_type: ::core::option::Option<u32>,
14487    #[prost(uint32, optional, tag="4")]
14488    pub hash: ::core::option::Option<u32>,
14489    #[prost(uint32, optional, tag="5")]
14490    pub ip_summed: ::core::option::Option<u32>,
14491    #[prost(uint32, optional, tag="6")]
14492    pub l4_hash: ::core::option::Option<u32>,
14493    #[prost(uint32, optional, tag="7")]
14494    pub len: ::core::option::Option<u32>,
14495    #[prost(int32, optional, tag="8")]
14496    pub mac_header: ::core::option::Option<i32>,
14497    #[prost(uint32, optional, tag="9")]
14498    pub mac_header_valid: ::core::option::Option<u32>,
14499    #[prost(string, optional, tag="10")]
14500    pub name: ::core::option::Option<::prost::alloc::string::String>,
14501    #[prost(uint32, optional, tag="11")]
14502    pub napi_id: ::core::option::Option<u32>,
14503    #[prost(uint32, optional, tag="12")]
14504    pub nr_frags: ::core::option::Option<u32>,
14505    #[prost(uint32, optional, tag="13")]
14506    pub protocol: ::core::option::Option<u32>,
14507    #[prost(uint32, optional, tag="14")]
14508    pub queue_mapping: ::core::option::Option<u32>,
14509    #[prost(uint64, optional, tag="15")]
14510    pub skbaddr: ::core::option::Option<u64>,
14511    #[prost(uint32, optional, tag="16")]
14512    pub truesize: ::core::option::Option<u32>,
14513    #[prost(uint32, optional, tag="17")]
14514    pub vlan_proto: ::core::option::Option<u32>,
14515    #[prost(uint32, optional, tag="18")]
14516    pub vlan_tagged: ::core::option::Option<u32>,
14517    #[prost(uint32, optional, tag="19")]
14518    pub vlan_tci: ::core::option::Option<u32>,
14519}
14520#[derive(Clone, PartialEq, ::prost::Message)]
14521pub struct NapiGroReceiveExitFtraceEvent {
14522    #[prost(int32, optional, tag="1")]
14523    pub ret: ::core::option::Option<i32>,
14524}
14525// End of protos/perfetto/trace/ftrace/net.proto
14526
14527// Begin of protos/perfetto/trace/ftrace/oom.proto
14528
14529#[derive(Clone, PartialEq, ::prost::Message)]
14530pub struct OomScoreAdjUpdateFtraceEvent {
14531    #[prost(string, optional, tag="1")]
14532    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14533    #[prost(int32, optional, tag="2")]
14534    pub oom_score_adj: ::core::option::Option<i32>,
14535    #[prost(int32, optional, tag="3")]
14536    pub pid: ::core::option::Option<i32>,
14537}
14538#[derive(Clone, PartialEq, ::prost::Message)]
14539pub struct MarkVictimFtraceEvent {
14540    #[prost(int32, optional, tag="1")]
14541    pub pid: ::core::option::Option<i32>,
14542}
14543// End of protos/perfetto/trace/ftrace/oom.proto
14544
14545// Begin of protos/perfetto/trace/ftrace/panel.proto
14546
14547#[derive(Clone, PartialEq, ::prost::Message)]
14548pub struct DsiCmdFifoStatusFtraceEvent {
14549    #[prost(uint32, optional, tag="1")]
14550    pub header: ::core::option::Option<u32>,
14551    #[prost(uint32, optional, tag="2")]
14552    pub payload: ::core::option::Option<u32>,
14553}
14554#[derive(Clone, PartialEq, ::prost::Message)]
14555pub struct DsiRxFtraceEvent {
14556    #[prost(uint32, optional, tag="1")]
14557    pub cmd: ::core::option::Option<u32>,
14558    #[prost(uint32, optional, tag="2")]
14559    pub rx_buf: ::core::option::Option<u32>,
14560}
14561#[derive(Clone, PartialEq, ::prost::Message)]
14562pub struct DsiTxFtraceEvent {
14563    #[prost(uint32, optional, tag="1")]
14564    pub last: ::core::option::Option<u32>,
14565    #[prost(uint32, optional, tag="2")]
14566    pub tx_buf: ::core::option::Option<u32>,
14567    #[prost(uint32, optional, tag="3")]
14568    pub r#type: ::core::option::Option<u32>,
14569}
14570#[derive(Clone, PartialEq, ::prost::Message)]
14571pub struct PanelWriteGenericFtraceEvent {
14572    #[prost(int32, optional, tag="1")]
14573    pub pid: ::core::option::Option<i32>,
14574    #[prost(string, optional, tag="2")]
14575    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14576    #[prost(uint32, optional, tag="3")]
14577    pub trace_begin: ::core::option::Option<u32>,
14578    #[prost(string, optional, tag="4")]
14579    pub name: ::core::option::Option<::prost::alloc::string::String>,
14580    #[prost(uint32, optional, tag="5")]
14581    pub r#type: ::core::option::Option<u32>,
14582    #[prost(int32, optional, tag="6")]
14583    pub value: ::core::option::Option<i32>,
14584}
14585// End of protos/perfetto/trace/ftrace/panel.proto
14586
14587// Begin of protos/perfetto/trace/ftrace/perf_trace_counters.proto
14588
14589#[derive(Clone, PartialEq, ::prost::Message)]
14590pub struct SchedSwitchWithCtrsFtraceEvent {
14591    #[prost(int32, optional, tag="1")]
14592    pub old_pid: ::core::option::Option<i32>,
14593    #[prost(int32, optional, tag="2")]
14594    pub new_pid: ::core::option::Option<i32>,
14595    #[prost(uint64, optional, tag="3")]
14596    pub cctr: ::core::option::Option<u64>,
14597    #[prost(uint64, optional, tag="4")]
14598    pub ctr0: ::core::option::Option<u64>,
14599    #[prost(uint64, optional, tag="5")]
14600    pub ctr1: ::core::option::Option<u64>,
14601    #[prost(uint64, optional, tag="6")]
14602    pub ctr2: ::core::option::Option<u64>,
14603    #[prost(uint64, optional, tag="7")]
14604    pub ctr3: ::core::option::Option<u64>,
14605    #[prost(uint32, optional, tag="8")]
14606    pub lctr0: ::core::option::Option<u32>,
14607    #[prost(uint32, optional, tag="9")]
14608    pub lctr1: ::core::option::Option<u32>,
14609    #[prost(uint64, optional, tag="10")]
14610    pub ctr4: ::core::option::Option<u64>,
14611    #[prost(uint64, optional, tag="11")]
14612    pub ctr5: ::core::option::Option<u64>,
14613    #[prost(string, optional, tag="12")]
14614    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
14615    #[prost(int32, optional, tag="13")]
14616    pub prev_pid: ::core::option::Option<i32>,
14617    #[prost(uint32, optional, tag="14")]
14618    pub cyc: ::core::option::Option<u32>,
14619    #[prost(uint32, optional, tag="15")]
14620    pub inst: ::core::option::Option<u32>,
14621    #[prost(uint32, optional, tag="16")]
14622    pub stallbm: ::core::option::Option<u32>,
14623    #[prost(uint32, optional, tag="17")]
14624    pub l3dm: ::core::option::Option<u32>,
14625    #[prost(int32, optional, tag="18")]
14626    pub next_pid: ::core::option::Option<i32>,
14627    #[prost(string, optional, tag="19")]
14628    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
14629    #[prost(int64, optional, tag="20")]
14630    pub prev_state: ::core::option::Option<i64>,
14631    #[prost(uint64, optional, tag="21")]
14632    pub amu0: ::core::option::Option<u64>,
14633    #[prost(uint64, optional, tag="22")]
14634    pub amu1: ::core::option::Option<u64>,
14635    #[prost(uint64, optional, tag="23")]
14636    pub amu2: ::core::option::Option<u64>,
14637}
14638// End of protos/perfetto/trace/ftrace/perf_trace_counters.proto
14639
14640// Begin of protos/perfetto/trace/ftrace/pixel_mm.proto
14641
14642#[derive(Clone, PartialEq, ::prost::Message)]
14643pub struct PixelMmKswapdWakeFtraceEvent {
14644    #[prost(int32, optional, tag="1")]
14645    pub whatever: ::core::option::Option<i32>,
14646}
14647#[derive(Clone, PartialEq, ::prost::Message)]
14648pub struct PixelMmKswapdDoneFtraceEvent {
14649    #[prost(uint64, optional, tag="1")]
14650    pub delta_nr_scanned: ::core::option::Option<u64>,
14651    #[prost(uint64, optional, tag="2")]
14652    pub delta_nr_reclaimed: ::core::option::Option<u64>,
14653    #[prost(uint64, optional, tag="3")]
14654    pub delta_nr_allocated: ::core::option::Option<u64>,
14655    #[prost(uint64, optional, tag="4")]
14656    pub duration_ns: ::core::option::Option<u64>,
14657}
14658// End of protos/perfetto/trace/ftrace/pixel_mm.proto
14659
14660// Begin of protos/perfetto/trace/ftrace/power.proto
14661
14662#[derive(Clone, PartialEq, ::prost::Message)]
14663pub struct CpuFrequencyFtraceEvent {
14664    #[prost(uint32, optional, tag="1")]
14665    pub state: ::core::option::Option<u32>,
14666    #[prost(uint32, optional, tag="2")]
14667    pub cpu_id: ::core::option::Option<u32>,
14668}
14669#[derive(Clone, PartialEq, ::prost::Message)]
14670pub struct CpuFrequencyLimitsFtraceEvent {
14671    #[prost(uint32, optional, tag="1")]
14672    pub min_freq: ::core::option::Option<u32>,
14673    #[prost(uint32, optional, tag="2")]
14674    pub max_freq: ::core::option::Option<u32>,
14675    #[prost(uint32, optional, tag="3")]
14676    pub cpu_id: ::core::option::Option<u32>,
14677}
14678#[derive(Clone, PartialEq, ::prost::Message)]
14679pub struct CpuIdleFtraceEvent {
14680    #[prost(uint32, optional, tag="1")]
14681    pub state: ::core::option::Option<u32>,
14682    #[prost(uint32, optional, tag="2")]
14683    pub cpu_id: ::core::option::Option<u32>,
14684}
14685#[derive(Clone, PartialEq, ::prost::Message)]
14686pub struct ClockEnableFtraceEvent {
14687    #[prost(string, optional, tag="1")]
14688    pub name: ::core::option::Option<::prost::alloc::string::String>,
14689    #[prost(uint64, optional, tag="2")]
14690    pub state: ::core::option::Option<u64>,
14691    #[prost(uint64, optional, tag="3")]
14692    pub cpu_id: ::core::option::Option<u64>,
14693}
14694#[derive(Clone, PartialEq, ::prost::Message)]
14695pub struct ClockDisableFtraceEvent {
14696    #[prost(string, optional, tag="1")]
14697    pub name: ::core::option::Option<::prost::alloc::string::String>,
14698    #[prost(uint64, optional, tag="2")]
14699    pub state: ::core::option::Option<u64>,
14700    #[prost(uint64, optional, tag="3")]
14701    pub cpu_id: ::core::option::Option<u64>,
14702}
14703#[derive(Clone, PartialEq, ::prost::Message)]
14704pub struct ClockSetRateFtraceEvent {
14705    #[prost(string, optional, tag="1")]
14706    pub name: ::core::option::Option<::prost::alloc::string::String>,
14707    #[prost(uint64, optional, tag="2")]
14708    pub state: ::core::option::Option<u64>,
14709    #[prost(uint64, optional, tag="3")]
14710    pub cpu_id: ::core::option::Option<u64>,
14711}
14712#[derive(Clone, PartialEq, ::prost::Message)]
14713pub struct SuspendResumeFtraceEvent {
14714    #[prost(string, optional, tag="1")]
14715    pub action: ::core::option::Option<::prost::alloc::string::String>,
14716    #[prost(int32, optional, tag="2")]
14717    pub val: ::core::option::Option<i32>,
14718    #[prost(uint32, optional, tag="3")]
14719    pub start: ::core::option::Option<u32>,
14720}
14721#[derive(Clone, PartialEq, ::prost::Message)]
14722pub struct GpuFrequencyFtraceEvent {
14723    #[prost(uint32, optional, tag="1")]
14724    pub gpu_id: ::core::option::Option<u32>,
14725    #[prost(uint32, optional, tag="2")]
14726    pub state: ::core::option::Option<u32>,
14727}
14728#[derive(Clone, PartialEq, ::prost::Message)]
14729pub struct WakeupSourceActivateFtraceEvent {
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}
14735#[derive(Clone, PartialEq, ::prost::Message)]
14736pub struct WakeupSourceDeactivateFtraceEvent {
14737    #[prost(string, optional, tag="1")]
14738    pub name: ::core::option::Option<::prost::alloc::string::String>,
14739    #[prost(uint64, optional, tag="2")]
14740    pub state: ::core::option::Option<u64>,
14741}
14742#[derive(Clone, PartialEq, ::prost::Message)]
14743pub struct GpuWorkPeriodFtraceEvent {
14744    #[prost(uint32, optional, tag="1")]
14745    pub gpu_id: ::core::option::Option<u32>,
14746    #[prost(uint32, optional, tag="2")]
14747    pub uid: ::core::option::Option<u32>,
14748    #[prost(uint64, optional, tag="3")]
14749    pub start_time_ns: ::core::option::Option<u64>,
14750    #[prost(uint64, optional, tag="4")]
14751    pub end_time_ns: ::core::option::Option<u64>,
14752    #[prost(uint64, optional, tag="5")]
14753    pub total_active_duration_ns: ::core::option::Option<u64>,
14754}
14755#[derive(Clone, PartialEq, ::prost::Message)]
14756pub struct DevicePmCallbackStartFtraceEvent {
14757    #[prost(string, optional, tag="1")]
14758    pub device: ::core::option::Option<::prost::alloc::string::String>,
14759    #[prost(string, optional, tag="2")]
14760    pub driver: ::core::option::Option<::prost::alloc::string::String>,
14761    #[prost(string, optional, tag="3")]
14762    pub parent: ::core::option::Option<::prost::alloc::string::String>,
14763    #[prost(string, optional, tag="4")]
14764    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
14765    #[prost(int32, optional, tag="5")]
14766    pub event: ::core::option::Option<i32>,
14767}
14768#[derive(Clone, PartialEq, ::prost::Message)]
14769pub struct DevicePmCallbackEndFtraceEvent {
14770    #[prost(string, optional, tag="1")]
14771    pub device: ::core::option::Option<::prost::alloc::string::String>,
14772    #[prost(string, optional, tag="2")]
14773    pub driver: ::core::option::Option<::prost::alloc::string::String>,
14774    #[prost(int32, optional, tag="3")]
14775    pub error: ::core::option::Option<i32>,
14776}
14777// End of protos/perfetto/trace/ftrace/power.proto
14778
14779// Begin of protos/perfetto/trace/ftrace/printk.proto
14780
14781#[derive(Clone, PartialEq, ::prost::Message)]
14782pub struct ConsoleFtraceEvent {
14783    #[prost(string, optional, tag="1")]
14784    pub msg: ::core::option::Option<::prost::alloc::string::String>,
14785}
14786// End of protos/perfetto/trace/ftrace/printk.proto
14787
14788// Begin of protos/perfetto/trace/ftrace/raw_syscalls.proto
14789
14790#[derive(Clone, PartialEq, ::prost::Message)]
14791pub struct SysEnterFtraceEvent {
14792    #[prost(int64, optional, tag="1")]
14793    pub id: ::core::option::Option<i64>,
14794    #[prost(uint64, repeated, packed="false", tag="2")]
14795    pub args: ::prost::alloc::vec::Vec<u64>,
14796}
14797#[derive(Clone, PartialEq, ::prost::Message)]
14798pub struct SysExitFtraceEvent {
14799    #[prost(int64, optional, tag="1")]
14800    pub id: ::core::option::Option<i64>,
14801    #[prost(int64, optional, tag="2")]
14802    pub ret: ::core::option::Option<i64>,
14803}
14804// End of protos/perfetto/trace/ftrace/raw_syscalls.proto
14805
14806// Begin of protos/perfetto/trace/ftrace/regulator.proto
14807
14808#[derive(Clone, PartialEq, ::prost::Message)]
14809pub struct RegulatorDisableFtraceEvent {
14810    #[prost(string, optional, tag="1")]
14811    pub name: ::core::option::Option<::prost::alloc::string::String>,
14812}
14813#[derive(Clone, PartialEq, ::prost::Message)]
14814pub struct RegulatorDisableCompleteFtraceEvent {
14815    #[prost(string, optional, tag="1")]
14816    pub name: ::core::option::Option<::prost::alloc::string::String>,
14817}
14818#[derive(Clone, PartialEq, ::prost::Message)]
14819pub struct RegulatorEnableFtraceEvent {
14820    #[prost(string, optional, tag="1")]
14821    pub name: ::core::option::Option<::prost::alloc::string::String>,
14822}
14823#[derive(Clone, PartialEq, ::prost::Message)]
14824pub struct RegulatorEnableCompleteFtraceEvent {
14825    #[prost(string, optional, tag="1")]
14826    pub name: ::core::option::Option<::prost::alloc::string::String>,
14827}
14828#[derive(Clone, PartialEq, ::prost::Message)]
14829pub struct RegulatorEnableDelayFtraceEvent {
14830    #[prost(string, optional, tag="1")]
14831    pub name: ::core::option::Option<::prost::alloc::string::String>,
14832}
14833#[derive(Clone, PartialEq, ::prost::Message)]
14834pub struct RegulatorSetVoltageFtraceEvent {
14835    #[prost(string, optional, tag="1")]
14836    pub name: ::core::option::Option<::prost::alloc::string::String>,
14837    #[prost(int32, optional, tag="2")]
14838    pub min: ::core::option::Option<i32>,
14839    #[prost(int32, optional, tag="3")]
14840    pub max: ::core::option::Option<i32>,
14841}
14842#[derive(Clone, PartialEq, ::prost::Message)]
14843pub struct RegulatorSetVoltageCompleteFtraceEvent {
14844    #[prost(string, optional, tag="1")]
14845    pub name: ::core::option::Option<::prost::alloc::string::String>,
14846    #[prost(uint32, optional, tag="2")]
14847    pub val: ::core::option::Option<u32>,
14848}
14849// End of protos/perfetto/trace/ftrace/regulator.proto
14850
14851// Begin of protos/perfetto/trace/ftrace/rpm.proto
14852
14853#[derive(Clone, PartialEq, ::prost::Message)]
14854pub struct RpmStatusFtraceEvent {
14855    #[prost(string, optional, tag="1")]
14856    pub name: ::core::option::Option<::prost::alloc::string::String>,
14857    #[prost(int32, optional, tag="2")]
14858    pub status: ::core::option::Option<i32>,
14859}
14860// End of protos/perfetto/trace/ftrace/rpm.proto
14861
14862// Begin of protos/perfetto/trace/ftrace/samsung.proto
14863
14864#[derive(Clone, PartialEq, ::prost::Message)]
14865pub struct SamsungTracingMarkWriteFtraceEvent {
14866    #[prost(int32, optional, tag="1")]
14867    pub pid: ::core::option::Option<i32>,
14868    #[prost(string, optional, tag="2")]
14869    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14870    #[prost(uint32, optional, tag="3")]
14871    pub trace_begin: ::core::option::Option<u32>,
14872    #[prost(uint32, optional, tag="4")]
14873    pub trace_type: ::core::option::Option<u32>,
14874    #[prost(int32, optional, tag="5")]
14875    pub value: ::core::option::Option<i32>,
14876}
14877// End of protos/perfetto/trace/ftrace/samsung.proto
14878
14879// Begin of protos/perfetto/trace/ftrace/sched.proto
14880
14881#[derive(Clone, PartialEq, ::prost::Message)]
14882pub struct SchedSwitchFtraceEvent {
14883    #[prost(string, optional, tag="1")]
14884    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
14885    #[prost(int32, optional, tag="2")]
14886    pub prev_pid: ::core::option::Option<i32>,
14887    #[prost(int32, optional, tag="3")]
14888    pub prev_prio: ::core::option::Option<i32>,
14889    #[prost(int64, optional, tag="4")]
14890    pub prev_state: ::core::option::Option<i64>,
14891    #[prost(string, optional, tag="5")]
14892    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
14893    #[prost(int32, optional, tag="6")]
14894    pub next_pid: ::core::option::Option<i32>,
14895    #[prost(int32, optional, tag="7")]
14896    pub next_prio: ::core::option::Option<i32>,
14897}
14898#[derive(Clone, PartialEq, ::prost::Message)]
14899pub struct SchedWakeupFtraceEvent {
14900    #[prost(string, optional, tag="1")]
14901    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14902    #[prost(int32, optional, tag="2")]
14903    pub pid: ::core::option::Option<i32>,
14904    #[prost(int32, optional, tag="3")]
14905    pub prio: ::core::option::Option<i32>,
14906    #[prost(int32, optional, tag="4")]
14907    pub success: ::core::option::Option<i32>,
14908    #[prost(int32, optional, tag="5")]
14909    pub target_cpu: ::core::option::Option<i32>,
14910}
14911#[derive(Clone, PartialEq, ::prost::Message)]
14912pub struct SchedBlockedReasonFtraceEvent {
14913    #[prost(int32, optional, tag="1")]
14914    pub pid: ::core::option::Option<i32>,
14915    #[prost(uint64, optional, tag="2")]
14916    pub caller: ::core::option::Option<u64>,
14917    #[prost(uint32, optional, tag="3")]
14918    pub io_wait: ::core::option::Option<u32>,
14919}
14920#[derive(Clone, PartialEq, ::prost::Message)]
14921pub struct SchedCpuHotplugFtraceEvent {
14922    #[prost(int32, optional, tag="1")]
14923    pub affected_cpu: ::core::option::Option<i32>,
14924    #[prost(int32, optional, tag="2")]
14925    pub error: ::core::option::Option<i32>,
14926    #[prost(int32, optional, tag="3")]
14927    pub status: ::core::option::Option<i32>,
14928}
14929#[derive(Clone, PartialEq, ::prost::Message)]
14930pub struct SchedWakingFtraceEvent {
14931    #[prost(string, optional, tag="1")]
14932    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14933    #[prost(int32, optional, tag="2")]
14934    pub pid: ::core::option::Option<i32>,
14935    #[prost(int32, optional, tag="3")]
14936    pub prio: ::core::option::Option<i32>,
14937    #[prost(int32, optional, tag="4")]
14938    pub success: ::core::option::Option<i32>,
14939    #[prost(int32, optional, tag="5")]
14940    pub target_cpu: ::core::option::Option<i32>,
14941}
14942#[derive(Clone, PartialEq, ::prost::Message)]
14943pub struct SchedWakeupNewFtraceEvent {
14944    #[prost(string, optional, tag="1")]
14945    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14946    #[prost(int32, optional, tag="2")]
14947    pub pid: ::core::option::Option<i32>,
14948    #[prost(int32, optional, tag="3")]
14949    pub prio: ::core::option::Option<i32>,
14950    #[prost(int32, optional, tag="4")]
14951    pub success: ::core::option::Option<i32>,
14952    #[prost(int32, optional, tag="5")]
14953    pub target_cpu: ::core::option::Option<i32>,
14954}
14955#[derive(Clone, PartialEq, ::prost::Message)]
14956pub struct SchedProcessExecFtraceEvent {
14957    #[prost(string, optional, tag="1")]
14958    pub filename: ::core::option::Option<::prost::alloc::string::String>,
14959    #[prost(int32, optional, tag="2")]
14960    pub pid: ::core::option::Option<i32>,
14961    #[prost(int32, optional, tag="3")]
14962    pub old_pid: ::core::option::Option<i32>,
14963}
14964#[derive(Clone, PartialEq, ::prost::Message)]
14965pub struct SchedProcessExitFtraceEvent {
14966    #[prost(string, optional, tag="1")]
14967    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14968    #[prost(int32, optional, tag="2")]
14969    pub pid: ::core::option::Option<i32>,
14970    #[prost(int32, optional, tag="3")]
14971    pub tgid: ::core::option::Option<i32>,
14972    #[prost(int32, optional, tag="4")]
14973    pub prio: ::core::option::Option<i32>,
14974}
14975#[derive(Clone, PartialEq, ::prost::Message)]
14976pub struct SchedProcessForkFtraceEvent {
14977    #[prost(string, optional, tag="1")]
14978    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
14979    #[prost(int32, optional, tag="2")]
14980    pub parent_pid: ::core::option::Option<i32>,
14981    #[prost(string, optional, tag="3")]
14982    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
14983    #[prost(int32, optional, tag="4")]
14984    pub child_pid: ::core::option::Option<i32>,
14985}
14986#[derive(Clone, PartialEq, ::prost::Message)]
14987pub struct SchedProcessFreeFtraceEvent {
14988    #[prost(string, optional, tag="1")]
14989    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14990    #[prost(int32, optional, tag="2")]
14991    pub pid: ::core::option::Option<i32>,
14992    #[prost(int32, optional, tag="3")]
14993    pub prio: ::core::option::Option<i32>,
14994}
14995#[derive(Clone, PartialEq, ::prost::Message)]
14996pub struct SchedProcessHangFtraceEvent {
14997    #[prost(string, optional, tag="1")]
14998    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14999    #[prost(int32, optional, tag="2")]
15000    pub pid: ::core::option::Option<i32>,
15001}
15002#[derive(Clone, PartialEq, ::prost::Message)]
15003pub struct SchedProcessWaitFtraceEvent {
15004    #[prost(string, optional, tag="1")]
15005    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15006    #[prost(int32, optional, tag="2")]
15007    pub pid: ::core::option::Option<i32>,
15008    #[prost(int32, optional, tag="3")]
15009    pub prio: ::core::option::Option<i32>,
15010}
15011#[derive(Clone, PartialEq, ::prost::Message)]
15012pub struct SchedPiSetprioFtraceEvent {
15013    #[prost(string, optional, tag="1")]
15014    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15015    #[prost(int32, optional, tag="2")]
15016    pub newprio: ::core::option::Option<i32>,
15017    #[prost(int32, optional, tag="3")]
15018    pub oldprio: ::core::option::Option<i32>,
15019    #[prost(int32, optional, tag="4")]
15020    pub pid: ::core::option::Option<i32>,
15021}
15022#[derive(Clone, PartialEq, ::prost::Message)]
15023pub struct SchedCpuUtilCfsFtraceEvent {
15024    #[prost(int32, optional, tag="1")]
15025    pub active: ::core::option::Option<i32>,
15026    #[prost(uint64, optional, tag="2")]
15027    pub capacity: ::core::option::Option<u64>,
15028    #[prost(uint64, optional, tag="3")]
15029    pub capacity_orig: ::core::option::Option<u64>,
15030    #[prost(uint32, optional, tag="4")]
15031    pub cpu: ::core::option::Option<u32>,
15032    #[prost(uint64, optional, tag="5")]
15033    pub cpu_importance: ::core::option::Option<u64>,
15034    #[prost(uint64, optional, tag="6")]
15035    pub cpu_util: ::core::option::Option<u64>,
15036    #[prost(uint32, optional, tag="7")]
15037    pub exit_lat: ::core::option::Option<u32>,
15038    #[prost(uint64, optional, tag="8")]
15039    pub group_capacity: ::core::option::Option<u64>,
15040    #[prost(uint32, optional, tag="9")]
15041    pub grp_overutilized: ::core::option::Option<u32>,
15042    #[prost(uint32, optional, tag="10")]
15043    pub idle_cpu: ::core::option::Option<u32>,
15044    #[prost(uint32, optional, tag="11")]
15045    pub nr_running: ::core::option::Option<u32>,
15046    #[prost(int64, optional, tag="12")]
15047    pub spare_cap: ::core::option::Option<i64>,
15048    #[prost(uint32, optional, tag="13")]
15049    pub task_fits: ::core::option::Option<u32>,
15050    #[prost(uint64, optional, tag="14")]
15051    pub wake_group_util: ::core::option::Option<u64>,
15052    #[prost(uint64, optional, tag="15")]
15053    pub wake_util: ::core::option::Option<u64>,
15054}
15055#[derive(Clone, PartialEq, ::prost::Message)]
15056pub struct SchedMigrateTaskFtraceEvent {
15057    #[prost(string, optional, tag="1")]
15058    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15059    #[prost(int32, optional, tag="2")]
15060    pub pid: ::core::option::Option<i32>,
15061    #[prost(int32, optional, tag="3")]
15062    pub prio: ::core::option::Option<i32>,
15063    #[prost(int32, optional, tag="4")]
15064    pub orig_cpu: ::core::option::Option<i32>,
15065    #[prost(int32, optional, tag="5")]
15066    pub dest_cpu: ::core::option::Option<i32>,
15067    #[prost(int32, optional, tag="6")]
15068    pub running: ::core::option::Option<i32>,
15069    #[prost(uint32, optional, tag="7")]
15070    pub load: ::core::option::Option<u32>,
15071}
15072#[derive(Clone, PartialEq, ::prost::Message)]
15073pub struct SchedWakeupTaskAttrFtraceEvent {
15074    #[prost(int32, optional, tag="1")]
15075    pub pid: ::core::option::Option<i32>,
15076    #[prost(uint64, optional, tag="2")]
15077    pub cpu_affinity: ::core::option::Option<u64>,
15078    #[prost(uint64, optional, tag="3")]
15079    pub task_util: ::core::option::Option<u64>,
15080    #[prost(uint64, optional, tag="4")]
15081    pub uclamp_min: ::core::option::Option<u64>,
15082    #[prost(uint64, optional, tag="5")]
15083    pub vruntime: ::core::option::Option<u64>,
15084}
15085// End of protos/perfetto/trace/ftrace/sched.proto
15086
15087// Begin of protos/perfetto/trace/ftrace/scm.proto
15088
15089#[derive(Clone, PartialEq, ::prost::Message)]
15090pub struct ScmCallStartFtraceEvent {
15091    #[prost(uint32, optional, tag="1")]
15092    pub arginfo: ::core::option::Option<u32>,
15093    #[prost(uint64, optional, tag="2")]
15094    pub x0: ::core::option::Option<u64>,
15095    #[prost(uint64, optional, tag="3")]
15096    pub x5: ::core::option::Option<u64>,
15097}
15098#[derive(Clone, PartialEq, ::prost::Message)]
15099pub struct ScmCallEndFtraceEvent {
15100}
15101// End of protos/perfetto/trace/ftrace/scm.proto
15102
15103// Begin of protos/perfetto/trace/ftrace/scsi.proto
15104
15105#[derive(Clone, PartialEq, ::prost::Message)]
15106pub struct ScsiDispatchCmdErrorFtraceEvent {
15107    #[prost(uint32, optional, tag="1")]
15108    pub host_no: ::core::option::Option<u32>,
15109    #[prost(uint32, optional, tag="2")]
15110    pub channel: ::core::option::Option<u32>,
15111    #[prost(uint32, optional, tag="3")]
15112    pub id: ::core::option::Option<u32>,
15113    #[prost(uint32, optional, tag="4")]
15114    pub lun: ::core::option::Option<u32>,
15115    #[prost(int32, optional, tag="5")]
15116    pub rtn: ::core::option::Option<i32>,
15117    #[prost(uint32, optional, tag="6")]
15118    pub opcode: ::core::option::Option<u32>,
15119    #[prost(uint32, optional, tag="7")]
15120    pub cmd_len: ::core::option::Option<u32>,
15121    #[prost(uint32, optional, tag="8")]
15122    pub data_sglen: ::core::option::Option<u32>,
15123    #[prost(uint32, optional, tag="9")]
15124    pub prot_sglen: ::core::option::Option<u32>,
15125    #[prost(uint32, optional, tag="10")]
15126    pub prot_op: ::core::option::Option<u32>,
15127    #[prost(string, optional, tag="11")]
15128    pub cmnd: ::core::option::Option<::prost::alloc::string::String>,
15129    #[prost(int32, optional, tag="12")]
15130    pub driver_tag: ::core::option::Option<i32>,
15131    #[prost(int32, optional, tag="13")]
15132    pub scheduler_tag: ::core::option::Option<i32>,
15133}
15134#[derive(Clone, PartialEq, ::prost::Message)]
15135pub struct ScsiDispatchCmdTimeoutFtraceEvent {
15136    #[prost(uint32, optional, tag="1")]
15137    pub host_no: ::core::option::Option<u32>,
15138    #[prost(uint32, optional, tag="2")]
15139    pub channel: ::core::option::Option<u32>,
15140    #[prost(uint32, optional, tag="3")]
15141    pub id: ::core::option::Option<u32>,
15142    #[prost(uint32, optional, tag="4")]
15143    pub lun: ::core::option::Option<u32>,
15144    #[prost(int32, optional, tag="5")]
15145    pub result: ::core::option::Option<i32>,
15146    #[prost(uint32, optional, tag="6")]
15147    pub opcode: ::core::option::Option<u32>,
15148    #[prost(uint32, optional, tag="7")]
15149    pub cmd_len: ::core::option::Option<u32>,
15150    #[prost(uint32, optional, tag="8")]
15151    pub data_sglen: ::core::option::Option<u32>,
15152    #[prost(uint32, optional, tag="9")]
15153    pub prot_sglen: ::core::option::Option<u32>,
15154    #[prost(uint32, optional, tag="10")]
15155    pub prot_op: ::core::option::Option<u32>,
15156    #[prost(string, optional, tag="11")]
15157    pub cmnd: ::core::option::Option<::prost::alloc::string::String>,
15158    #[prost(int32, optional, tag="12")]
15159    pub driver_tag: ::core::option::Option<i32>,
15160    #[prost(int32, optional, tag="13")]
15161    pub scheduler_tag: ::core::option::Option<i32>,
15162    #[prost(uint32, optional, tag="14")]
15163    pub sense_key: ::core::option::Option<u32>,
15164    #[prost(uint32, optional, tag="15")]
15165    pub asc: ::core::option::Option<u32>,
15166    #[prost(uint32, optional, tag="16")]
15167    pub ascq: ::core::option::Option<u32>,
15168}
15169#[derive(Clone, PartialEq, ::prost::Message)]
15170pub struct ScsiEhWakeupFtraceEvent {
15171    #[prost(uint32, optional, tag="1")]
15172    pub host_no: ::core::option::Option<u32>,
15173}
15174// End of protos/perfetto/trace/ftrace/scsi.proto
15175
15176// Begin of protos/perfetto/trace/ftrace/sde.proto
15177
15178#[derive(Clone, PartialEq, ::prost::Message)]
15179pub struct SdeTracingMarkWriteFtraceEvent {
15180    #[prost(int32, optional, tag="1")]
15181    pub pid: ::core::option::Option<i32>,
15182    #[prost(string, optional, tag="2")]
15183    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15184    #[prost(uint32, optional, tag="3")]
15185    pub trace_type: ::core::option::Option<u32>,
15186    #[prost(int32, optional, tag="4")]
15187    pub value: ::core::option::Option<i32>,
15188    #[prost(uint32, optional, tag="5")]
15189    pub trace_begin: ::core::option::Option<u32>,
15190}
15191#[derive(Clone, PartialEq, ::prost::Message)]
15192pub struct SdeSdeEvtlogFtraceEvent {
15193    #[prost(string, optional, tag="1")]
15194    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
15195    #[prost(int32, optional, tag="2")]
15196    pub pid: ::core::option::Option<i32>,
15197    #[prost(uint32, optional, tag="3")]
15198    pub tag_id: ::core::option::Option<u32>,
15199}
15200#[derive(Clone, PartialEq, ::prost::Message)]
15201pub struct SdeSdePerfCalcCrtcFtraceEvent {
15202    #[prost(uint64, optional, tag="1")]
15203    pub bw_ctl_ebi: ::core::option::Option<u64>,
15204    #[prost(uint64, optional, tag="2")]
15205    pub bw_ctl_llcc: ::core::option::Option<u64>,
15206    #[prost(uint64, optional, tag="3")]
15207    pub bw_ctl_mnoc: ::core::option::Option<u64>,
15208    #[prost(uint32, optional, tag="4")]
15209    pub core_clk_rate: ::core::option::Option<u32>,
15210    #[prost(uint32, optional, tag="5")]
15211    pub crtc: ::core::option::Option<u32>,
15212    #[prost(uint64, optional, tag="6")]
15213    pub ib_ebi: ::core::option::Option<u64>,
15214    #[prost(uint64, optional, tag="7")]
15215    pub ib_llcc: ::core::option::Option<u64>,
15216    #[prost(uint64, optional, tag="8")]
15217    pub ib_mnoc: ::core::option::Option<u64>,
15218}
15219#[derive(Clone, PartialEq, ::prost::Message)]
15220pub struct SdeSdePerfCrtcUpdateFtraceEvent {
15221    #[prost(uint64, optional, tag="1")]
15222    pub bw_ctl_ebi: ::core::option::Option<u64>,
15223    #[prost(uint64, optional, tag="2")]
15224    pub bw_ctl_llcc: ::core::option::Option<u64>,
15225    #[prost(uint64, optional, tag="3")]
15226    pub bw_ctl_mnoc: ::core::option::Option<u64>,
15227    #[prost(uint32, optional, tag="4")]
15228    pub core_clk_rate: ::core::option::Option<u32>,
15229    #[prost(uint32, optional, tag="5")]
15230    pub crtc: ::core::option::Option<u32>,
15231    #[prost(int32, optional, tag="6")]
15232    pub params: ::core::option::Option<i32>,
15233    #[prost(uint64, optional, tag="7")]
15234    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
15235    #[prost(uint64, optional, tag="8")]
15236    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
15237    #[prost(uint64, optional, tag="9")]
15238    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
15239    #[prost(uint32, optional, tag="10")]
15240    pub stop_req: ::core::option::Option<u32>,
15241    #[prost(uint32, optional, tag="11")]
15242    pub update_bus: ::core::option::Option<u32>,
15243    #[prost(uint32, optional, tag="12")]
15244    pub update_clk: ::core::option::Option<u32>,
15245}
15246#[derive(Clone, PartialEq, ::prost::Message)]
15247pub struct SdeSdePerfSetQosLutsFtraceEvent {
15248    #[prost(uint32, optional, tag="1")]
15249    pub fl: ::core::option::Option<u32>,
15250    #[prost(uint32, optional, tag="2")]
15251    pub fmt: ::core::option::Option<u32>,
15252    #[prost(uint64, optional, tag="3")]
15253    pub lut: ::core::option::Option<u64>,
15254    #[prost(uint32, optional, tag="4")]
15255    pub lut_usage: ::core::option::Option<u32>,
15256    #[prost(uint32, optional, tag="5")]
15257    pub pnum: ::core::option::Option<u32>,
15258    #[prost(uint32, optional, tag="6")]
15259    pub rt: ::core::option::Option<u32>,
15260}
15261#[derive(Clone, PartialEq, ::prost::Message)]
15262pub struct SdeSdePerfUpdateBusFtraceEvent {
15263    #[prost(uint64, optional, tag="1")]
15264    pub ab_quota: ::core::option::Option<u64>,
15265    #[prost(uint32, optional, tag="2")]
15266    pub bus_id: ::core::option::Option<u32>,
15267    #[prost(int32, optional, tag="3")]
15268    pub client: ::core::option::Option<i32>,
15269    #[prost(uint64, optional, tag="4")]
15270    pub ib_quota: ::core::option::Option<u64>,
15271}
15272// End of protos/perfetto/trace/ftrace/sde.proto
15273
15274// Begin of protos/perfetto/trace/ftrace/signal.proto
15275
15276#[derive(Clone, PartialEq, ::prost::Message)]
15277pub struct SignalDeliverFtraceEvent {
15278    #[prost(int32, optional, tag="1")]
15279    pub code: ::core::option::Option<i32>,
15280    #[prost(uint64, optional, tag="2")]
15281    pub sa_flags: ::core::option::Option<u64>,
15282    #[prost(int32, optional, tag="3")]
15283    pub sig: ::core::option::Option<i32>,
15284}
15285#[derive(Clone, PartialEq, ::prost::Message)]
15286pub struct SignalGenerateFtraceEvent {
15287    #[prost(int32, optional, tag="1")]
15288    pub code: ::core::option::Option<i32>,
15289    #[prost(string, optional, tag="2")]
15290    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15291    #[prost(int32, optional, tag="3")]
15292    pub group: ::core::option::Option<i32>,
15293    #[prost(int32, optional, tag="4")]
15294    pub pid: ::core::option::Option<i32>,
15295    #[prost(int32, optional, tag="5")]
15296    pub result: ::core::option::Option<i32>,
15297    #[prost(int32, optional, tag="6")]
15298    pub sig: ::core::option::Option<i32>,
15299}
15300// End of protos/perfetto/trace/ftrace/signal.proto
15301
15302// Begin of protos/perfetto/trace/ftrace/skb.proto
15303
15304#[derive(Clone, PartialEq, ::prost::Message)]
15305pub struct KfreeSkbFtraceEvent {
15306    #[prost(uint64, optional, tag="1")]
15307    pub location: ::core::option::Option<u64>,
15308    #[prost(uint32, optional, tag="2")]
15309    pub protocol: ::core::option::Option<u32>,
15310    #[prost(uint64, optional, tag="3")]
15311    pub skbaddr: ::core::option::Option<u64>,
15312}
15313// End of protos/perfetto/trace/ftrace/skb.proto
15314
15315// Begin of protos/perfetto/trace/ftrace/sock.proto
15316
15317#[derive(Clone, PartialEq, ::prost::Message)]
15318pub struct InetSockSetStateFtraceEvent {
15319    #[prost(uint32, optional, tag="1")]
15320    pub daddr: ::core::option::Option<u32>,
15321    #[prost(uint32, optional, tag="2")]
15322    pub dport: ::core::option::Option<u32>,
15323    #[prost(uint32, optional, tag="3")]
15324    pub family: ::core::option::Option<u32>,
15325    #[prost(int32, optional, tag="4")]
15326    pub newstate: ::core::option::Option<i32>,
15327    #[prost(int32, optional, tag="5")]
15328    pub oldstate: ::core::option::Option<i32>,
15329    #[prost(uint32, optional, tag="6")]
15330    pub protocol: ::core::option::Option<u32>,
15331    #[prost(uint32, optional, tag="7")]
15332    pub saddr: ::core::option::Option<u32>,
15333    #[prost(uint64, optional, tag="8")]
15334    pub skaddr: ::core::option::Option<u64>,
15335    #[prost(uint32, optional, tag="9")]
15336    pub sport: ::core::option::Option<u32>,
15337}
15338// End of protos/perfetto/trace/ftrace/sock.proto
15339
15340// Begin of protos/perfetto/trace/ftrace/sync.proto
15341
15342#[derive(Clone, PartialEq, ::prost::Message)]
15343pub struct SyncPtFtraceEvent {
15344    #[prost(string, optional, tag="1")]
15345    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
15346    #[prost(string, optional, tag="2")]
15347    pub value: ::core::option::Option<::prost::alloc::string::String>,
15348}
15349#[derive(Clone, PartialEq, ::prost::Message)]
15350pub struct SyncTimelineFtraceEvent {
15351    #[prost(string, optional, tag="1")]
15352    pub name: ::core::option::Option<::prost::alloc::string::String>,
15353    #[prost(string, optional, tag="2")]
15354    pub value: ::core::option::Option<::prost::alloc::string::String>,
15355}
15356#[derive(Clone, PartialEq, ::prost::Message)]
15357pub struct SyncWaitFtraceEvent {
15358    #[prost(string, optional, tag="1")]
15359    pub name: ::core::option::Option<::prost::alloc::string::String>,
15360    #[prost(int32, optional, tag="2")]
15361    pub status: ::core::option::Option<i32>,
15362    #[prost(uint32, optional, tag="3")]
15363    pub begin: ::core::option::Option<u32>,
15364}
15365// End of protos/perfetto/trace/ftrace/sync.proto
15366
15367// Begin of protos/perfetto/trace/ftrace/synthetic.proto
15368
15369#[derive(Clone, PartialEq, ::prost::Message)]
15370pub struct RssStatThrottledFtraceEvent {
15371    #[prost(uint32, optional, tag="1")]
15372    pub curr: ::core::option::Option<u32>,
15373    #[prost(int32, optional, tag="2")]
15374    pub member: ::core::option::Option<i32>,
15375    #[prost(uint32, optional, tag="3")]
15376    pub mm_id: ::core::option::Option<u32>,
15377    #[prost(int64, optional, tag="4")]
15378    pub size: ::core::option::Option<i64>,
15379}
15380#[derive(Clone, PartialEq, ::prost::Message)]
15381pub struct SuspendResumeMinimalFtraceEvent {
15382    #[prost(uint32, optional, tag="1")]
15383    pub start: ::core::option::Option<u32>,
15384}
15385// End of protos/perfetto/trace/ftrace/synthetic.proto
15386
15387// Begin of protos/perfetto/trace/ftrace/systrace.proto
15388
15389#[derive(Clone, PartialEq, ::prost::Message)]
15390pub struct ZeroFtraceEvent {
15391    #[prost(int32, optional, tag="1")]
15392    pub flag: ::core::option::Option<i32>,
15393    #[prost(string, optional, tag="2")]
15394    pub name: ::core::option::Option<::prost::alloc::string::String>,
15395    #[prost(int32, optional, tag="3")]
15396    pub pid: ::core::option::Option<i32>,
15397    #[prost(int64, optional, tag="4")]
15398    pub value: ::core::option::Option<i64>,
15399}
15400// End of protos/perfetto/trace/ftrace/systrace.proto
15401
15402// Begin of protos/perfetto/trace/ftrace/task.proto
15403
15404#[derive(Clone, PartialEq, ::prost::Message)]
15405pub struct TaskNewtaskFtraceEvent {
15406    #[prost(int32, optional, tag="1")]
15407    pub pid: ::core::option::Option<i32>,
15408    #[prost(string, optional, tag="2")]
15409    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15410    #[prost(uint64, optional, tag="3")]
15411    pub clone_flags: ::core::option::Option<u64>,
15412    #[prost(int32, optional, tag="4")]
15413    pub oom_score_adj: ::core::option::Option<i32>,
15414}
15415#[derive(Clone, PartialEq, ::prost::Message)]
15416pub struct TaskRenameFtraceEvent {
15417    #[prost(int32, optional, tag="1")]
15418    pub pid: ::core::option::Option<i32>,
15419    #[prost(string, optional, tag="2")]
15420    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
15421    #[prost(string, optional, tag="3")]
15422    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
15423    #[prost(int32, optional, tag="4")]
15424    pub oom_score_adj: ::core::option::Option<i32>,
15425}
15426// End of protos/perfetto/trace/ftrace/task.proto
15427
15428// Begin of protos/perfetto/trace/ftrace/tcp.proto
15429
15430#[derive(Clone, PartialEq, ::prost::Message)]
15431pub struct TcpRetransmitSkbFtraceEvent {
15432    #[prost(uint32, optional, tag="1")]
15433    pub daddr: ::core::option::Option<u32>,
15434    #[prost(uint32, optional, tag="2")]
15435    pub dport: ::core::option::Option<u32>,
15436    #[prost(uint32, optional, tag="3")]
15437    pub saddr: ::core::option::Option<u32>,
15438    #[prost(uint64, optional, tag="4")]
15439    pub skaddr: ::core::option::Option<u64>,
15440    #[prost(uint64, optional, tag="5")]
15441    pub skbaddr: ::core::option::Option<u64>,
15442    #[prost(uint32, optional, tag="6")]
15443    pub sport: ::core::option::Option<u32>,
15444    #[prost(int32, optional, tag="7")]
15445    pub state: ::core::option::Option<i32>,
15446}
15447// End of protos/perfetto/trace/ftrace/tcp.proto
15448
15449// Begin of protos/perfetto/trace/ftrace/thermal.proto
15450
15451#[derive(Clone, PartialEq, ::prost::Message)]
15452pub struct ThermalTemperatureFtraceEvent {
15453    #[prost(int32, optional, tag="1")]
15454    pub id: ::core::option::Option<i32>,
15455    #[prost(int32, optional, tag="2")]
15456    pub temp: ::core::option::Option<i32>,
15457    #[prost(int32, optional, tag="3")]
15458    pub temp_prev: ::core::option::Option<i32>,
15459    #[prost(string, optional, tag="4")]
15460    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
15461}
15462#[derive(Clone, PartialEq, ::prost::Message)]
15463pub struct CdevUpdateFtraceEvent {
15464    #[prost(uint64, optional, tag="1")]
15465    pub target: ::core::option::Option<u64>,
15466    #[prost(string, optional, tag="2")]
15467    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
15468}
15469// End of protos/perfetto/trace/ftrace/thermal.proto
15470
15471// Begin of protos/perfetto/trace/ftrace/thermal_exynos.proto
15472
15473#[derive(Clone, PartialEq, ::prost::Message)]
15474pub struct ThermalExynosAcpmBulkFtraceEvent {
15475    #[prost(uint32, optional, tag="1")]
15476    pub tz_id: ::core::option::Option<u32>,
15477    #[prost(uint32, optional, tag="2")]
15478    pub current_temp: ::core::option::Option<u32>,
15479    #[prost(uint32, optional, tag="3")]
15480    pub ctrl_temp: ::core::option::Option<u32>,
15481    #[prost(uint32, optional, tag="4")]
15482    pub cdev_state: ::core::option::Option<u32>,
15483    #[prost(int32, optional, tag="5")]
15484    pub pid_et_p: ::core::option::Option<i32>,
15485    #[prost(int32, optional, tag="6")]
15486    pub pid_power_range: ::core::option::Option<i32>,
15487    #[prost(int32, optional, tag="7")]
15488    pub pid_p: ::core::option::Option<i32>,
15489    #[prost(int32, optional, tag="8")]
15490    pub pid_i: ::core::option::Option<i32>,
15491    #[prost(int32, optional, tag="9")]
15492    pub k_p: ::core::option::Option<i32>,
15493    #[prost(int32, optional, tag="10")]
15494    pub k_i: ::core::option::Option<i32>,
15495    #[prost(uint64, optional, tag="11")]
15496    pub timestamp: ::core::option::Option<u64>,
15497}
15498#[derive(Clone, PartialEq, ::prost::Message)]
15499pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
15500    #[prost(int32, optional, tag="1")]
15501    pub tz_id: ::core::option::Option<i32>,
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 k_p: ::core::option::Option<i32>,
15512    #[prost(int32, optional, tag="7")]
15513    pub k_i: ::core::option::Option<i32>,
15514}
15515// End of protos/perfetto/trace/ftrace/thermal_exynos.proto
15516
15517// Begin of protos/perfetto/trace/ftrace/timer.proto
15518
15519#[derive(Clone, PartialEq, ::prost::Message)]
15520pub struct HrtimerStartFtraceEvent {
15521    #[prost(uint64, optional, tag="1")]
15522    pub hrtimer: ::core::option::Option<u64>,
15523    #[prost(uint64, optional, tag="2")]
15524    pub function: ::core::option::Option<u64>,
15525    #[prost(int64, optional, tag="3")]
15526    pub expires: ::core::option::Option<i64>,
15527    #[prost(int64, optional, tag="4")]
15528    pub softexpires: ::core::option::Option<i64>,
15529    #[prost(uint32, optional, tag="5")]
15530    pub mode: ::core::option::Option<u32>,
15531}
15532#[derive(Clone, PartialEq, ::prost::Message)]
15533pub struct HrtimerCancelFtraceEvent {
15534    #[prost(uint64, optional, tag="1")]
15535    pub hrtimer: ::core::option::Option<u64>,
15536}
15537#[derive(Clone, PartialEq, ::prost::Message)]
15538pub struct HrtimerExpireEntryFtraceEvent {
15539    #[prost(uint64, optional, tag="1")]
15540    pub hrtimer: ::core::option::Option<u64>,
15541    #[prost(int64, optional, tag="2")]
15542    pub now: ::core::option::Option<i64>,
15543    #[prost(uint64, optional, tag="3")]
15544    pub function: ::core::option::Option<u64>,
15545}
15546#[derive(Clone, PartialEq, ::prost::Message)]
15547pub struct HrtimerExpireExitFtraceEvent {
15548    #[prost(uint64, optional, tag="1")]
15549    pub hrtimer: ::core::option::Option<u64>,
15550}
15551#[derive(Clone, PartialEq, ::prost::Message)]
15552pub struct TimerStartFtraceEvent {
15553    #[prost(uint64, optional, tag="1")]
15554    pub timer: ::core::option::Option<u64>,
15555    #[prost(uint64, optional, tag="2")]
15556    pub function: ::core::option::Option<u64>,
15557    #[prost(uint64, optional, tag="3")]
15558    pub expires: ::core::option::Option<u64>,
15559    #[prost(uint64, optional, tag="4")]
15560    pub now: ::core::option::Option<u64>,
15561    #[prost(uint32, optional, tag="5")]
15562    pub deferrable: ::core::option::Option<u32>,
15563    #[prost(uint32, optional, tag="6")]
15564    pub flags: ::core::option::Option<u32>,
15565    #[prost(uint64, optional, tag="7")]
15566    pub bucket_expiry: ::core::option::Option<u64>,
15567}
15568#[derive(Clone, PartialEq, ::prost::Message)]
15569pub struct TimerCancelFtraceEvent {
15570    #[prost(uint64, optional, tag="1")]
15571    pub timer: ::core::option::Option<u64>,
15572}
15573#[derive(Clone, PartialEq, ::prost::Message)]
15574pub struct TimerExpireEntryFtraceEvent {
15575    #[prost(uint64, optional, tag="1")]
15576    pub timer: ::core::option::Option<u64>,
15577    #[prost(uint64, optional, tag="2")]
15578    pub now: ::core::option::Option<u64>,
15579    #[prost(uint64, optional, tag="3")]
15580    pub function: ::core::option::Option<u64>,
15581    #[prost(uint64, optional, tag="4")]
15582    pub baseclk: ::core::option::Option<u64>,
15583}
15584#[derive(Clone, PartialEq, ::prost::Message)]
15585pub struct TimerExpireExitFtraceEvent {
15586    #[prost(uint64, optional, tag="1")]
15587    pub timer: ::core::option::Option<u64>,
15588}
15589// End of protos/perfetto/trace/ftrace/timer.proto
15590
15591// Begin of protos/perfetto/trace/ftrace/trusty.proto
15592
15593#[derive(Clone, PartialEq, ::prost::Message)]
15594pub struct TrustySmcFtraceEvent {
15595    #[prost(uint64, optional, tag="1")]
15596    pub r0: ::core::option::Option<u64>,
15597    #[prost(uint64, optional, tag="2")]
15598    pub r1: ::core::option::Option<u64>,
15599    #[prost(uint64, optional, tag="3")]
15600    pub r2: ::core::option::Option<u64>,
15601    #[prost(uint64, optional, tag="4")]
15602    pub r3: ::core::option::Option<u64>,
15603}
15604#[derive(Clone, PartialEq, ::prost::Message)]
15605pub struct TrustySmcDoneFtraceEvent {
15606    #[prost(uint64, optional, tag="1")]
15607    pub ret: ::core::option::Option<u64>,
15608}
15609#[derive(Clone, PartialEq, ::prost::Message)]
15610pub struct TrustyStdCall32FtraceEvent {
15611    #[prost(uint64, optional, tag="1")]
15612    pub r0: ::core::option::Option<u64>,
15613    #[prost(uint64, optional, tag="2")]
15614    pub r1: ::core::option::Option<u64>,
15615    #[prost(uint64, optional, tag="3")]
15616    pub r2: ::core::option::Option<u64>,
15617    #[prost(uint64, optional, tag="4")]
15618    pub r3: ::core::option::Option<u64>,
15619}
15620#[derive(Clone, PartialEq, ::prost::Message)]
15621pub struct TrustyStdCall32DoneFtraceEvent {
15622    #[prost(int64, optional, tag="1")]
15623    pub ret: ::core::option::Option<i64>,
15624}
15625#[derive(Clone, PartialEq, ::prost::Message)]
15626pub struct TrustyShareMemoryFtraceEvent {
15627    #[prost(uint64, optional, tag="1")]
15628    pub len: ::core::option::Option<u64>,
15629    #[prost(uint32, optional, tag="2")]
15630    pub lend: ::core::option::Option<u32>,
15631    #[prost(uint32, optional, tag="3")]
15632    pub nents: ::core::option::Option<u32>,
15633}
15634#[derive(Clone, PartialEq, ::prost::Message)]
15635pub struct TrustyShareMemoryDoneFtraceEvent {
15636    #[prost(uint64, optional, tag="1")]
15637    pub handle: ::core::option::Option<u64>,
15638    #[prost(uint64, optional, tag="2")]
15639    pub len: ::core::option::Option<u64>,
15640    #[prost(uint32, optional, tag="3")]
15641    pub lend: ::core::option::Option<u32>,
15642    #[prost(uint32, optional, tag="4")]
15643    pub nents: ::core::option::Option<u32>,
15644    #[prost(int32, optional, tag="5")]
15645    pub ret: ::core::option::Option<i32>,
15646}
15647#[derive(Clone, PartialEq, ::prost::Message)]
15648pub struct TrustyReclaimMemoryFtraceEvent {
15649    #[prost(uint64, optional, tag="1")]
15650    pub id: ::core::option::Option<u64>,
15651}
15652#[derive(Clone, PartialEq, ::prost::Message)]
15653pub struct TrustyReclaimMemoryDoneFtraceEvent {
15654    #[prost(uint64, optional, tag="1")]
15655    pub id: ::core::option::Option<u64>,
15656    #[prost(int32, optional, tag="2")]
15657    pub ret: ::core::option::Option<i32>,
15658}
15659#[derive(Clone, PartialEq, ::prost::Message)]
15660pub struct TrustyIrqFtraceEvent {
15661    #[prost(int32, optional, tag="1")]
15662    pub irq: ::core::option::Option<i32>,
15663}
15664#[derive(Clone, PartialEq, ::prost::Message)]
15665pub struct TrustyIpcHandleEventFtraceEvent {
15666    #[prost(uint32, optional, tag="1")]
15667    pub chan: ::core::option::Option<u32>,
15668    #[prost(uint32, optional, tag="2")]
15669    pub event_id: ::core::option::Option<u32>,
15670    #[prost(string, optional, tag="3")]
15671    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15672}
15673#[derive(Clone, PartialEq, ::prost::Message)]
15674pub struct TrustyIpcConnectFtraceEvent {
15675    #[prost(uint32, optional, tag="1")]
15676    pub chan: ::core::option::Option<u32>,
15677    #[prost(string, optional, tag="2")]
15678    pub port: ::core::option::Option<::prost::alloc::string::String>,
15679    #[prost(int32, optional, tag="3")]
15680    pub state: ::core::option::Option<i32>,
15681}
15682#[derive(Clone, PartialEq, ::prost::Message)]
15683pub struct TrustyIpcConnectEndFtraceEvent {
15684    #[prost(uint32, optional, tag="1")]
15685    pub chan: ::core::option::Option<u32>,
15686    #[prost(int32, optional, tag="2")]
15687    pub err: ::core::option::Option<i32>,
15688    #[prost(int32, optional, tag="3")]
15689    pub state: ::core::option::Option<i32>,
15690}
15691#[derive(Clone, PartialEq, ::prost::Message)]
15692pub struct TrustyIpcWriteFtraceEvent {
15693    #[prost(uint64, optional, tag="1")]
15694    pub buf_id: ::core::option::Option<u64>,
15695    #[prost(uint32, optional, tag="2")]
15696    pub chan: ::core::option::Option<u32>,
15697    #[prost(int32, optional, tag="3")]
15698    pub kind_shm: ::core::option::Option<i32>,
15699    #[prost(int32, optional, tag="4")]
15700    pub len_or_err: ::core::option::Option<i32>,
15701    #[prost(uint64, optional, tag="5")]
15702    pub shm_cnt: ::core::option::Option<u64>,
15703    #[prost(string, optional, tag="6")]
15704    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15705}
15706#[derive(Clone, PartialEq, ::prost::Message)]
15707pub struct TrustyIpcPollFtraceEvent {
15708    #[prost(uint32, optional, tag="1")]
15709    pub chan: ::core::option::Option<u32>,
15710    #[prost(uint32, optional, tag="2")]
15711    pub poll_mask: ::core::option::Option<u32>,
15712    #[prost(string, optional, tag="3")]
15713    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15714}
15715#[derive(Clone, PartialEq, ::prost::Message)]
15716pub struct TrustyIpcReadFtraceEvent {
15717    #[prost(uint32, optional, tag="1")]
15718    pub chan: ::core::option::Option<u32>,
15719    #[prost(string, optional, tag="2")]
15720    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15721}
15722#[derive(Clone, PartialEq, ::prost::Message)]
15723pub struct TrustyIpcReadEndFtraceEvent {
15724    #[prost(uint64, optional, tag="1")]
15725    pub buf_id: ::core::option::Option<u64>,
15726    #[prost(uint32, optional, tag="2")]
15727    pub chan: ::core::option::Option<u32>,
15728    #[prost(int32, optional, tag="3")]
15729    pub len_or_err: ::core::option::Option<i32>,
15730    #[prost(uint64, optional, tag="4")]
15731    pub shm_cnt: ::core::option::Option<u64>,
15732    #[prost(string, optional, tag="5")]
15733    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15734}
15735#[derive(Clone, PartialEq, ::prost::Message)]
15736pub struct TrustyIpcRxFtraceEvent {
15737    #[prost(uint64, optional, tag="1")]
15738    pub buf_id: ::core::option::Option<u64>,
15739    #[prost(uint32, optional, tag="2")]
15740    pub chan: ::core::option::Option<u32>,
15741    #[prost(string, optional, tag="3")]
15742    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
15743}
15744#[derive(Clone, PartialEq, ::prost::Message)]
15745pub struct TrustyEnqueueNopFtraceEvent {
15746    #[prost(uint32, optional, tag="1")]
15747    pub arg1: ::core::option::Option<u32>,
15748    #[prost(uint32, optional, tag="2")]
15749    pub arg2: ::core::option::Option<u32>,
15750    #[prost(uint32, optional, tag="3")]
15751    pub arg3: ::core::option::Option<u32>,
15752}
15753// End of protos/perfetto/trace/ftrace/trusty.proto
15754
15755// Begin of protos/perfetto/trace/ftrace/ufs.proto
15756
15757#[derive(Clone, PartialEq, ::prost::Message)]
15758pub struct UfshcdCommandFtraceEvent {
15759    #[prost(string, optional, tag="1")]
15760    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
15761    #[prost(uint32, optional, tag="2")]
15762    pub doorbell: ::core::option::Option<u32>,
15763    #[prost(uint32, optional, tag="3")]
15764    pub intr: ::core::option::Option<u32>,
15765    #[prost(uint64, optional, tag="4")]
15766    pub lba: ::core::option::Option<u64>,
15767    #[prost(uint32, optional, tag="5")]
15768    pub opcode: ::core::option::Option<u32>,
15769    #[prost(string, optional, tag="6")]
15770    pub str: ::core::option::Option<::prost::alloc::string::String>,
15771    #[prost(uint32, optional, tag="7")]
15772    pub tag: ::core::option::Option<u32>,
15773    #[prost(int32, optional, tag="8")]
15774    pub transfer_len: ::core::option::Option<i32>,
15775    #[prost(uint32, optional, tag="9")]
15776    pub group_id: ::core::option::Option<u32>,
15777    #[prost(uint32, optional, tag="10")]
15778    pub str_t: ::core::option::Option<u32>,
15779}
15780#[derive(Clone, PartialEq, ::prost::Message)]
15781pub struct UfshcdClkGatingFtraceEvent {
15782    #[prost(string, optional, tag="1")]
15783    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
15784    #[prost(int32, optional, tag="2")]
15785    pub state: ::core::option::Option<i32>,
15786}
15787// End of protos/perfetto/trace/ftrace/ufs.proto
15788
15789// Begin of protos/perfetto/trace/ftrace/v4l2.proto
15790
15791#[derive(Clone, PartialEq, ::prost::Message)]
15792pub struct V4l2QbufFtraceEvent {
15793    #[prost(uint32, optional, tag="1")]
15794    pub bytesused: ::core::option::Option<u32>,
15795    #[prost(uint32, optional, tag="2")]
15796    pub field: ::core::option::Option<u32>,
15797    #[prost(uint32, optional, tag="3")]
15798    pub flags: ::core::option::Option<u32>,
15799    #[prost(uint32, optional, tag="4")]
15800    pub index: ::core::option::Option<u32>,
15801    #[prost(int32, optional, tag="5")]
15802    pub minor: ::core::option::Option<i32>,
15803    #[prost(uint32, optional, tag="6")]
15804    pub sequence: ::core::option::Option<u32>,
15805    #[prost(uint32, optional, tag="7")]
15806    pub timecode_flags: ::core::option::Option<u32>,
15807    #[prost(uint32, optional, tag="8")]
15808    pub timecode_frames: ::core::option::Option<u32>,
15809    #[prost(uint32, optional, tag="9")]
15810    pub timecode_hours: ::core::option::Option<u32>,
15811    #[prost(uint32, optional, tag="10")]
15812    pub timecode_minutes: ::core::option::Option<u32>,
15813    #[prost(uint32, optional, tag="11")]
15814    pub timecode_seconds: ::core::option::Option<u32>,
15815    #[prost(uint32, optional, tag="12")]
15816    pub timecode_type: ::core::option::Option<u32>,
15817    #[prost(uint32, optional, tag="13")]
15818    pub timecode_userbits0: ::core::option::Option<u32>,
15819    #[prost(uint32, optional, tag="14")]
15820    pub timecode_userbits1: ::core::option::Option<u32>,
15821    #[prost(uint32, optional, tag="15")]
15822    pub timecode_userbits2: ::core::option::Option<u32>,
15823    #[prost(uint32, optional, tag="16")]
15824    pub timecode_userbits3: ::core::option::Option<u32>,
15825    #[prost(int64, optional, tag="17")]
15826    pub timestamp: ::core::option::Option<i64>,
15827    #[prost(uint32, optional, tag="18")]
15828    pub r#type: ::core::option::Option<u32>,
15829}
15830#[derive(Clone, PartialEq, ::prost::Message)]
15831pub struct V4l2DqbufFtraceEvent {
15832    #[prost(uint32, optional, tag="1")]
15833    pub bytesused: ::core::option::Option<u32>,
15834    #[prost(uint32, optional, tag="2")]
15835    pub field: ::core::option::Option<u32>,
15836    #[prost(uint32, optional, tag="3")]
15837    pub flags: ::core::option::Option<u32>,
15838    #[prost(uint32, optional, tag="4")]
15839    pub index: ::core::option::Option<u32>,
15840    #[prost(int32, optional, tag="5")]
15841    pub minor: ::core::option::Option<i32>,
15842    #[prost(uint32, optional, tag="6")]
15843    pub sequence: ::core::option::Option<u32>,
15844    #[prost(uint32, optional, tag="7")]
15845    pub timecode_flags: ::core::option::Option<u32>,
15846    #[prost(uint32, optional, tag="8")]
15847    pub timecode_frames: ::core::option::Option<u32>,
15848    #[prost(uint32, optional, tag="9")]
15849    pub timecode_hours: ::core::option::Option<u32>,
15850    #[prost(uint32, optional, tag="10")]
15851    pub timecode_minutes: ::core::option::Option<u32>,
15852    #[prost(uint32, optional, tag="11")]
15853    pub timecode_seconds: ::core::option::Option<u32>,
15854    #[prost(uint32, optional, tag="12")]
15855    pub timecode_type: ::core::option::Option<u32>,
15856    #[prost(uint32, optional, tag="13")]
15857    pub timecode_userbits0: ::core::option::Option<u32>,
15858    #[prost(uint32, optional, tag="14")]
15859    pub timecode_userbits1: ::core::option::Option<u32>,
15860    #[prost(uint32, optional, tag="15")]
15861    pub timecode_userbits2: ::core::option::Option<u32>,
15862    #[prost(uint32, optional, tag="16")]
15863    pub timecode_userbits3: ::core::option::Option<u32>,
15864    #[prost(int64, optional, tag="17")]
15865    pub timestamp: ::core::option::Option<i64>,
15866    #[prost(uint32, optional, tag="18")]
15867    pub r#type: ::core::option::Option<u32>,
15868}
15869#[derive(Clone, PartialEq, ::prost::Message)]
15870pub struct Vb2V4l2BufQueueFtraceEvent {
15871    #[prost(uint32, optional, tag="1")]
15872    pub field: ::core::option::Option<u32>,
15873    #[prost(uint32, optional, tag="2")]
15874    pub flags: ::core::option::Option<u32>,
15875    #[prost(int32, optional, tag="3")]
15876    pub minor: ::core::option::Option<i32>,
15877    #[prost(uint32, optional, tag="4")]
15878    pub sequence: ::core::option::Option<u32>,
15879    #[prost(uint32, optional, tag="5")]
15880    pub timecode_flags: ::core::option::Option<u32>,
15881    #[prost(uint32, optional, tag="6")]
15882    pub timecode_frames: ::core::option::Option<u32>,
15883    #[prost(uint32, optional, tag="7")]
15884    pub timecode_hours: ::core::option::Option<u32>,
15885    #[prost(uint32, optional, tag="8")]
15886    pub timecode_minutes: ::core::option::Option<u32>,
15887    #[prost(uint32, optional, tag="9")]
15888    pub timecode_seconds: ::core::option::Option<u32>,
15889    #[prost(uint32, optional, tag="10")]
15890    pub timecode_type: ::core::option::Option<u32>,
15891    #[prost(uint32, optional, tag="11")]
15892    pub timecode_userbits0: ::core::option::Option<u32>,
15893    #[prost(uint32, optional, tag="12")]
15894    pub timecode_userbits1: ::core::option::Option<u32>,
15895    #[prost(uint32, optional, tag="13")]
15896    pub timecode_userbits2: ::core::option::Option<u32>,
15897    #[prost(uint32, optional, tag="14")]
15898    pub timecode_userbits3: ::core::option::Option<u32>,
15899    #[prost(int64, optional, tag="15")]
15900    pub timestamp: ::core::option::Option<i64>,
15901}
15902#[derive(Clone, PartialEq, ::prost::Message)]
15903pub struct Vb2V4l2BufDoneFtraceEvent {
15904    #[prost(uint32, optional, tag="1")]
15905    pub field: ::core::option::Option<u32>,
15906    #[prost(uint32, optional, tag="2")]
15907    pub flags: ::core::option::Option<u32>,
15908    #[prost(int32, optional, tag="3")]
15909    pub minor: ::core::option::Option<i32>,
15910    #[prost(uint32, optional, tag="4")]
15911    pub sequence: ::core::option::Option<u32>,
15912    #[prost(uint32, optional, tag="5")]
15913    pub timecode_flags: ::core::option::Option<u32>,
15914    #[prost(uint32, optional, tag="6")]
15915    pub timecode_frames: ::core::option::Option<u32>,
15916    #[prost(uint32, optional, tag="7")]
15917    pub timecode_hours: ::core::option::Option<u32>,
15918    #[prost(uint32, optional, tag="8")]
15919    pub timecode_minutes: ::core::option::Option<u32>,
15920    #[prost(uint32, optional, tag="9")]
15921    pub timecode_seconds: ::core::option::Option<u32>,
15922    #[prost(uint32, optional, tag="10")]
15923    pub timecode_type: ::core::option::Option<u32>,
15924    #[prost(uint32, optional, tag="11")]
15925    pub timecode_userbits0: ::core::option::Option<u32>,
15926    #[prost(uint32, optional, tag="12")]
15927    pub timecode_userbits1: ::core::option::Option<u32>,
15928    #[prost(uint32, optional, tag="13")]
15929    pub timecode_userbits2: ::core::option::Option<u32>,
15930    #[prost(uint32, optional, tag="14")]
15931    pub timecode_userbits3: ::core::option::Option<u32>,
15932    #[prost(int64, optional, tag="15")]
15933    pub timestamp: ::core::option::Option<i64>,
15934}
15935#[derive(Clone, PartialEq, ::prost::Message)]
15936pub struct Vb2V4l2QbufFtraceEvent {
15937    #[prost(uint32, optional, tag="1")]
15938    pub field: ::core::option::Option<u32>,
15939    #[prost(uint32, optional, tag="2")]
15940    pub flags: ::core::option::Option<u32>,
15941    #[prost(int32, optional, tag="3")]
15942    pub minor: ::core::option::Option<i32>,
15943    #[prost(uint32, optional, tag="4")]
15944    pub sequence: ::core::option::Option<u32>,
15945    #[prost(uint32, optional, tag="5")]
15946    pub timecode_flags: ::core::option::Option<u32>,
15947    #[prost(uint32, optional, tag="6")]
15948    pub timecode_frames: ::core::option::Option<u32>,
15949    #[prost(uint32, optional, tag="7")]
15950    pub timecode_hours: ::core::option::Option<u32>,
15951    #[prost(uint32, optional, tag="8")]
15952    pub timecode_minutes: ::core::option::Option<u32>,
15953    #[prost(uint32, optional, tag="9")]
15954    pub timecode_seconds: ::core::option::Option<u32>,
15955    #[prost(uint32, optional, tag="10")]
15956    pub timecode_type: ::core::option::Option<u32>,
15957    #[prost(uint32, optional, tag="11")]
15958    pub timecode_userbits0: ::core::option::Option<u32>,
15959    #[prost(uint32, optional, tag="12")]
15960    pub timecode_userbits1: ::core::option::Option<u32>,
15961    #[prost(uint32, optional, tag="13")]
15962    pub timecode_userbits2: ::core::option::Option<u32>,
15963    #[prost(uint32, optional, tag="14")]
15964    pub timecode_userbits3: ::core::option::Option<u32>,
15965    #[prost(int64, optional, tag="15")]
15966    pub timestamp: ::core::option::Option<i64>,
15967}
15968#[derive(Clone, PartialEq, ::prost::Message)]
15969pub struct Vb2V4l2DqbufFtraceEvent {
15970    #[prost(uint32, optional, tag="1")]
15971    pub field: ::core::option::Option<u32>,
15972    #[prost(uint32, optional, tag="2")]
15973    pub flags: ::core::option::Option<u32>,
15974    #[prost(int32, optional, tag="3")]
15975    pub minor: ::core::option::Option<i32>,
15976    #[prost(uint32, optional, tag="4")]
15977    pub sequence: ::core::option::Option<u32>,
15978    #[prost(uint32, optional, tag="5")]
15979    pub timecode_flags: ::core::option::Option<u32>,
15980    #[prost(uint32, optional, tag="6")]
15981    pub timecode_frames: ::core::option::Option<u32>,
15982    #[prost(uint32, optional, tag="7")]
15983    pub timecode_hours: ::core::option::Option<u32>,
15984    #[prost(uint32, optional, tag="8")]
15985    pub timecode_minutes: ::core::option::Option<u32>,
15986    #[prost(uint32, optional, tag="9")]
15987    pub timecode_seconds: ::core::option::Option<u32>,
15988    #[prost(uint32, optional, tag="10")]
15989    pub timecode_type: ::core::option::Option<u32>,
15990    #[prost(uint32, optional, tag="11")]
15991    pub timecode_userbits0: ::core::option::Option<u32>,
15992    #[prost(uint32, optional, tag="12")]
15993    pub timecode_userbits1: ::core::option::Option<u32>,
15994    #[prost(uint32, optional, tag="13")]
15995    pub timecode_userbits2: ::core::option::Option<u32>,
15996    #[prost(uint32, optional, tag="14")]
15997    pub timecode_userbits3: ::core::option::Option<u32>,
15998    #[prost(int64, optional, tag="15")]
15999    pub timestamp: ::core::option::Option<i64>,
16000}
16001// End of protos/perfetto/trace/ftrace/v4l2.proto
16002
16003// Begin of protos/perfetto/trace/ftrace/virtio_gpu.proto
16004
16005#[derive(Clone, PartialEq, ::prost::Message)]
16006pub struct VirtioGpuCmdQueueFtraceEvent {
16007    #[prost(uint32, optional, tag="1")]
16008    pub ctx_id: ::core::option::Option<u32>,
16009    #[prost(int32, optional, tag="2")]
16010    pub dev: ::core::option::Option<i32>,
16011    #[prost(uint64, optional, tag="3")]
16012    pub fence_id: ::core::option::Option<u64>,
16013    #[prost(uint32, optional, tag="4")]
16014    pub flags: ::core::option::Option<u32>,
16015    #[prost(string, optional, tag="5")]
16016    pub name: ::core::option::Option<::prost::alloc::string::String>,
16017    #[prost(uint32, optional, tag="6")]
16018    pub num_free: ::core::option::Option<u32>,
16019    #[prost(uint32, optional, tag="7")]
16020    pub seqno: ::core::option::Option<u32>,
16021    #[prost(uint32, optional, tag="8")]
16022    pub r#type: ::core::option::Option<u32>,
16023    #[prost(uint32, optional, tag="9")]
16024    pub vq: ::core::option::Option<u32>,
16025}
16026#[derive(Clone, PartialEq, ::prost::Message)]
16027pub struct VirtioGpuCmdResponseFtraceEvent {
16028    #[prost(uint32, optional, tag="1")]
16029    pub ctx_id: ::core::option::Option<u32>,
16030    #[prost(int32, optional, tag="2")]
16031    pub dev: ::core::option::Option<i32>,
16032    #[prost(uint64, optional, tag="3")]
16033    pub fence_id: ::core::option::Option<u64>,
16034    #[prost(uint32, optional, tag="4")]
16035    pub flags: ::core::option::Option<u32>,
16036    #[prost(string, optional, tag="5")]
16037    pub name: ::core::option::Option<::prost::alloc::string::String>,
16038    #[prost(uint32, optional, tag="6")]
16039    pub num_free: ::core::option::Option<u32>,
16040    #[prost(uint32, optional, tag="7")]
16041    pub seqno: ::core::option::Option<u32>,
16042    #[prost(uint32, optional, tag="8")]
16043    pub r#type: ::core::option::Option<u32>,
16044    #[prost(uint32, optional, tag="9")]
16045    pub vq: ::core::option::Option<u32>,
16046}
16047// End of protos/perfetto/trace/ftrace/virtio_gpu.proto
16048
16049// Begin of protos/perfetto/trace/ftrace/virtio_video.proto
16050
16051#[derive(Clone, PartialEq, ::prost::Message)]
16052pub struct VirtioVideoCmdFtraceEvent {
16053    #[prost(uint32, optional, tag="1")]
16054    pub stream_id: ::core::option::Option<u32>,
16055    #[prost(uint32, optional, tag="2")]
16056    pub r#type: ::core::option::Option<u32>,
16057}
16058#[derive(Clone, PartialEq, ::prost::Message)]
16059pub struct VirtioVideoCmdDoneFtraceEvent {
16060    #[prost(uint32, optional, tag="1")]
16061    pub stream_id: ::core::option::Option<u32>,
16062    #[prost(uint32, optional, tag="2")]
16063    pub r#type: ::core::option::Option<u32>,
16064}
16065#[derive(Clone, PartialEq, ::prost::Message)]
16066pub struct VirtioVideoResourceQueueFtraceEvent {
16067    #[prost(uint32, optional, tag="1")]
16068    pub data_size0: ::core::option::Option<u32>,
16069    #[prost(uint32, optional, tag="2")]
16070    pub data_size1: ::core::option::Option<u32>,
16071    #[prost(uint32, optional, tag="3")]
16072    pub data_size2: ::core::option::Option<u32>,
16073    #[prost(uint32, optional, tag="4")]
16074    pub data_size3: ::core::option::Option<u32>,
16075    #[prost(uint32, optional, tag="5")]
16076    pub queue_type: ::core::option::Option<u32>,
16077    #[prost(int32, optional, tag="6")]
16078    pub resource_id: ::core::option::Option<i32>,
16079    #[prost(int32, optional, tag="7")]
16080    pub stream_id: ::core::option::Option<i32>,
16081    #[prost(uint64, optional, tag="8")]
16082    pub timestamp: ::core::option::Option<u64>,
16083}
16084#[derive(Clone, PartialEq, ::prost::Message)]
16085pub struct VirtioVideoResourceQueueDoneFtraceEvent {
16086    #[prost(uint32, optional, tag="1")]
16087    pub data_size0: ::core::option::Option<u32>,
16088    #[prost(uint32, optional, tag="2")]
16089    pub data_size1: ::core::option::Option<u32>,
16090    #[prost(uint32, optional, tag="3")]
16091    pub data_size2: ::core::option::Option<u32>,
16092    #[prost(uint32, optional, tag="4")]
16093    pub data_size3: ::core::option::Option<u32>,
16094    #[prost(uint32, optional, tag="5")]
16095    pub queue_type: ::core::option::Option<u32>,
16096    #[prost(int32, optional, tag="6")]
16097    pub resource_id: ::core::option::Option<i32>,
16098    #[prost(int32, optional, tag="7")]
16099    pub stream_id: ::core::option::Option<i32>,
16100    #[prost(uint64, optional, tag="8")]
16101    pub timestamp: ::core::option::Option<u64>,
16102}
16103// End of protos/perfetto/trace/ftrace/virtio_video.proto
16104
16105// Begin of protos/perfetto/trace/ftrace/vmscan.proto
16106
16107#[derive(Clone, PartialEq, ::prost::Message)]
16108pub struct MmVmscanDirectReclaimBeginFtraceEvent {
16109    #[prost(int32, optional, tag="1")]
16110    pub order: ::core::option::Option<i32>,
16111    #[prost(int32, optional, tag="2")]
16112    pub may_writepage: ::core::option::Option<i32>,
16113    #[prost(uint32, optional, tag="3")]
16114    pub gfp_flags: ::core::option::Option<u32>,
16115}
16116#[derive(Clone, PartialEq, ::prost::Message)]
16117pub struct MmVmscanDirectReclaimEndFtraceEvent {
16118    #[prost(uint64, optional, tag="1")]
16119    pub nr_reclaimed: ::core::option::Option<u64>,
16120}
16121#[derive(Clone, PartialEq, ::prost::Message)]
16122pub struct MmVmscanKswapdWakeFtraceEvent {
16123    #[prost(int32, optional, tag="1")]
16124    pub nid: ::core::option::Option<i32>,
16125    #[prost(int32, optional, tag="2")]
16126    pub order: ::core::option::Option<i32>,
16127    #[prost(int32, optional, tag="3")]
16128    pub zid: ::core::option::Option<i32>,
16129}
16130#[derive(Clone, PartialEq, ::prost::Message)]
16131pub struct MmVmscanKswapdSleepFtraceEvent {
16132    #[prost(int32, optional, tag="1")]
16133    pub nid: ::core::option::Option<i32>,
16134}
16135#[derive(Clone, PartialEq, ::prost::Message)]
16136pub struct MmShrinkSlabStartFtraceEvent {
16137    #[prost(uint64, optional, tag="1")]
16138    pub cache_items: ::core::option::Option<u64>,
16139    #[prost(uint64, optional, tag="2")]
16140    pub delta: ::core::option::Option<u64>,
16141    #[prost(uint32, optional, tag="3")]
16142    pub gfp_flags: ::core::option::Option<u32>,
16143    #[prost(uint64, optional, tag="4")]
16144    pub lru_pgs: ::core::option::Option<u64>,
16145    #[prost(int64, optional, tag="5")]
16146    pub nr_objects_to_shrink: ::core::option::Option<i64>,
16147    #[prost(uint64, optional, tag="6")]
16148    pub pgs_scanned: ::core::option::Option<u64>,
16149    #[prost(uint64, optional, tag="7")]
16150    pub shr: ::core::option::Option<u64>,
16151    #[prost(uint64, optional, tag="8")]
16152    pub shrink: ::core::option::Option<u64>,
16153    #[prost(uint64, optional, tag="9")]
16154    pub total_scan: ::core::option::Option<u64>,
16155    #[prost(int32, optional, tag="10")]
16156    pub nid: ::core::option::Option<i32>,
16157    #[prost(int32, optional, tag="11")]
16158    pub priority: ::core::option::Option<i32>,
16159}
16160#[derive(Clone, PartialEq, ::prost::Message)]
16161pub struct MmShrinkSlabEndFtraceEvent {
16162    #[prost(int64, optional, tag="1")]
16163    pub new_scan: ::core::option::Option<i64>,
16164    #[prost(int32, optional, tag="2")]
16165    pub retval: ::core::option::Option<i32>,
16166    #[prost(uint64, optional, tag="3")]
16167    pub shr: ::core::option::Option<u64>,
16168    #[prost(uint64, optional, tag="4")]
16169    pub shrink: ::core::option::Option<u64>,
16170    #[prost(int64, optional, tag="5")]
16171    pub total_scan: ::core::option::Option<i64>,
16172    #[prost(int64, optional, tag="6")]
16173    pub unused_scan: ::core::option::Option<i64>,
16174    #[prost(int32, optional, tag="7")]
16175    pub nid: ::core::option::Option<i32>,
16176}
16177// End of protos/perfetto/trace/ftrace/vmscan.proto
16178
16179// Begin of protos/perfetto/trace/ftrace/workqueue.proto
16180
16181#[derive(Clone, PartialEq, ::prost::Message)]
16182pub struct WorkqueueActivateWorkFtraceEvent {
16183    #[prost(uint64, optional, tag="1")]
16184    pub work: ::core::option::Option<u64>,
16185    #[prost(uint64, optional, tag="2")]
16186    pub function: ::core::option::Option<u64>,
16187}
16188#[derive(Clone, PartialEq, ::prost::Message)]
16189pub struct WorkqueueExecuteEndFtraceEvent {
16190    #[prost(uint64, optional, tag="1")]
16191    pub work: ::core::option::Option<u64>,
16192    #[prost(uint64, optional, tag="2")]
16193    pub function: ::core::option::Option<u64>,
16194}
16195#[derive(Clone, PartialEq, ::prost::Message)]
16196pub struct WorkqueueExecuteStartFtraceEvent {
16197    #[prost(uint64, optional, tag="1")]
16198    pub work: ::core::option::Option<u64>,
16199    #[prost(uint64, optional, tag="2")]
16200    pub function: ::core::option::Option<u64>,
16201}
16202#[derive(Clone, PartialEq, ::prost::Message)]
16203pub struct WorkqueueQueueWorkFtraceEvent {
16204    #[prost(uint64, optional, tag="1")]
16205    pub work: ::core::option::Option<u64>,
16206    #[prost(uint64, optional, tag="2")]
16207    pub function: ::core::option::Option<u64>,
16208    #[prost(int32, optional, tag="4")]
16209    pub req_cpu: ::core::option::Option<i32>,
16210    #[prost(int32, optional, tag="5")]
16211    pub cpu: ::core::option::Option<i32>,
16212    #[prost(string, optional, tag="6")]
16213    pub workqueue: ::core::option::Option<::prost::alloc::string::String>,
16214}
16215// End of protos/perfetto/trace/ftrace/workqueue.proto
16216
16217// Begin of protos/perfetto/trace/ftrace/ftrace_event.proto
16218
16219#[derive(Clone, PartialEq, ::prost::Message)]
16220pub struct FtraceEvent {
16221    /// Timestamp in nanoseconds using .../tracing/trace_clock.
16222    #[prost(uint64, optional, tag="1")]
16223    pub timestamp: ::core::option::Option<u64>,
16224    /// Kernel pid (do not confuse with userspace pid aka tgid).
16225    #[prost(uint32, optional, tag="2")]
16226    pub pid: ::core::option::Option<u32>,
16227    /// Not populated in actual traces. Wire format might change.
16228    /// Placeholder declaration so that the ftrace parsing code accepts the
16229    /// existence of this common field. If this becomes needed for all events:
16230    /// consider merging with common_preempt_count to avoid extra proto tags.
16231    #[prost(uint32, optional, tag="5")]
16232    pub common_flags: ::core::option::Option<u32>,
16233    #[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")]
16234    pub event: ::core::option::Option<ftrace_event::Event>,
16235}
16236/// Nested message and enum types in `FtraceEvent`.
16237pub mod ftrace_event {
16238    #[derive(Clone, PartialEq, ::prost::Oneof)]
16239    pub enum Event {
16240        #[prost(message, tag="3")]
16241        Print(super::PrintFtraceEvent),
16242        #[prost(message, tag="4")]
16243        SchedSwitch(super::SchedSwitchFtraceEvent),
16244        /// removed field with id 5;
16245        /// removed field with id 6;
16246        /// removed field with id 7;
16247        /// removed field with id 8;
16248        /// removed field with id 9;
16249        /// removed field with id 10;
16250        #[prost(message, tag="11")]
16251        CpuFrequency(super::CpuFrequencyFtraceEvent),
16252        #[prost(message, tag="12")]
16253        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
16254        #[prost(message, tag="13")]
16255        CpuIdle(super::CpuIdleFtraceEvent),
16256        #[prost(message, tag="14")]
16257        ClockEnable(super::ClockEnableFtraceEvent),
16258        #[prost(message, tag="15")]
16259        ClockDisable(super::ClockDisableFtraceEvent),
16260        #[prost(message, tag="16")]
16261        ClockSetRate(super::ClockSetRateFtraceEvent),
16262        #[prost(message, tag="17")]
16263        SchedWakeup(super::SchedWakeupFtraceEvent),
16264        #[prost(message, tag="18")]
16265        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
16266        #[prost(message, tag="19")]
16267        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
16268        #[prost(message, tag="20")]
16269        SchedWaking(super::SchedWakingFtraceEvent),
16270        #[prost(message, tag="21")]
16271        IpiEntry(super::IpiEntryFtraceEvent),
16272        #[prost(message, tag="22")]
16273        IpiExit(super::IpiExitFtraceEvent),
16274        #[prost(message, tag="23")]
16275        IpiRaise(super::IpiRaiseFtraceEvent),
16276        #[prost(message, tag="24")]
16277        SoftirqEntry(super::SoftirqEntryFtraceEvent),
16278        #[prost(message, tag="25")]
16279        SoftirqExit(super::SoftirqExitFtraceEvent),
16280        #[prost(message, tag="26")]
16281        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
16282        #[prost(message, tag="27")]
16283        I2cRead(super::I2cReadFtraceEvent),
16284        #[prost(message, tag="28")]
16285        I2cWrite(super::I2cWriteFtraceEvent),
16286        #[prost(message, tag="29")]
16287        I2cResult(super::I2cResultFtraceEvent),
16288        #[prost(message, tag="30")]
16289        I2cReply(super::I2cReplyFtraceEvent),
16290        #[prost(message, tag="31")]
16291        SmbusRead(super::SmbusReadFtraceEvent),
16292        #[prost(message, tag="32")]
16293        SmbusWrite(super::SmbusWriteFtraceEvent),
16294        #[prost(message, tag="33")]
16295        SmbusResult(super::SmbusResultFtraceEvent),
16296        #[prost(message, tag="34")]
16297        SmbusReply(super::SmbusReplyFtraceEvent),
16298        #[prost(message, tag="35")]
16299        LowmemoryKill(super::LowmemoryKillFtraceEvent),
16300        #[prost(message, tag="36")]
16301        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
16302        #[prost(message, tag="37")]
16303        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
16304        #[prost(message, tag="38")]
16305        SyncPt(super::SyncPtFtraceEvent),
16306        #[prost(message, tag="39")]
16307        SyncTimeline(super::SyncTimelineFtraceEvent),
16308        #[prost(message, tag="40")]
16309        SyncWait(super::SyncWaitFtraceEvent),
16310        #[prost(message, tag="41")]
16311        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
16312        #[prost(message, tag="42")]
16313        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
16314        #[prost(message, tag="43")]
16315        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
16316        #[prost(message, tag="44")]
16317        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
16318        #[prost(message, tag="45")]
16319        BlockRqIssue(super::BlockRqIssueFtraceEvent),
16320        #[prost(message, tag="46")]
16321        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
16322        #[prost(message, tag="47")]
16323        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
16324        #[prost(message, tag="48")]
16325        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
16326        #[prost(message, tag="49")]
16327        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
16328        #[prost(message, tag="50")]
16329        BinderTransaction(super::BinderTransactionFtraceEvent),
16330        #[prost(message, tag="51")]
16331        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
16332        #[prost(message, tag="52")]
16333        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
16334        #[prost(message, tag="53")]
16335        BinderLock(super::BinderLockFtraceEvent),
16336        #[prost(message, tag="54")]
16337        BinderLocked(super::BinderLockedFtraceEvent),
16338        #[prost(message, tag="55")]
16339        BinderUnlock(super::BinderUnlockFtraceEvent),
16340        #[prost(message, tag="56")]
16341        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
16342        #[prost(message, tag="57")]
16343        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
16344        #[prost(message, tag="58")]
16345        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
16346        #[prost(message, tag="59")]
16347        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
16348        #[prost(message, tag="60")]
16349        RegulatorDisable(super::RegulatorDisableFtraceEvent),
16350        #[prost(message, tag="61")]
16351        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
16352        #[prost(message, tag="62")]
16353        RegulatorEnable(super::RegulatorEnableFtraceEvent),
16354        #[prost(message, tag="63")]
16355        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
16356        #[prost(message, tag="64")]
16357        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
16358        #[prost(message, tag="65")]
16359        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
16360        #[prost(message, tag="66")]
16361        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
16362        #[prost(message, tag="67")]
16363        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
16364        #[prost(message, tag="68")]
16365        CgroupMkdir(super::CgroupMkdirFtraceEvent),
16366        #[prost(message, tag="69")]
16367        CgroupRemount(super::CgroupRemountFtraceEvent),
16368        #[prost(message, tag="70")]
16369        CgroupRmdir(super::CgroupRmdirFtraceEvent),
16370        #[prost(message, tag="71")]
16371        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
16372        #[prost(message, tag="72")]
16373        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
16374        #[prost(message, tag="73")]
16375        CgroupRelease(super::CgroupReleaseFtraceEvent),
16376        #[prost(message, tag="74")]
16377        CgroupRename(super::CgroupRenameFtraceEvent),
16378        #[prost(message, tag="75")]
16379        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
16380        #[prost(message, tag="76")]
16381        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
16382        #[prost(message, tag="77")]
16383        MdpCommit(super::MdpCommitFtraceEvent),
16384        #[prost(message, tag="78")]
16385        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
16386        #[prost(message, tag="79")]
16387        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
16388        #[prost(message, tag="80")]
16389        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
16390        #[prost(message, tag="81")]
16391        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
16392        #[prost(message, tag="82")]
16393        MdpCompareBw(super::MdpCompareBwFtraceEvent),
16394        #[prost(message, tag="83")]
16395        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
16396        #[prost(message, tag="84")]
16397        MdpSsppSet(super::MdpSsppSetFtraceEvent),
16398        #[prost(message, tag="85")]
16399        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
16400        #[prost(message, tag="86")]
16401        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
16402        #[prost(message, tag="87")]
16403        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
16404        #[prost(message, tag="88")]
16405        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
16406        #[prost(message, tag="89")]
16407        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
16408        #[prost(message, tag="90")]
16409        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
16410        #[prost(message, tag="91")]
16411        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
16412        #[prost(message, tag="92")]
16413        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
16414        #[prost(message, tag="93")]
16415        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
16416        #[prost(message, tag="94")]
16417        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
16418        #[prost(message, tag="95")]
16419        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
16420        #[prost(message, tag="96")]
16421        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
16422        #[prost(message, tag="97")]
16423        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
16424        #[prost(message, tag="98")]
16425        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
16426        #[prost(message, tag="99")]
16427        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
16428        #[prost(message, tag="100")]
16429        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
16430        #[prost(message, tag="101")]
16431        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
16432        #[prost(message, tag="102")]
16433        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
16434        #[prost(message, tag="103")]
16435        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
16436        #[prost(message, tag="104")]
16437        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
16438        #[prost(message, tag="105")]
16439        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
16440        #[prost(message, tag="106")]
16441        MmCompactionIsolateMigratepages(super::MmCompactionIsolateMigratepagesFtraceEvent),
16442        #[prost(message, tag="107")]
16443        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
16444        #[prost(message, tag="108")]
16445        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
16446        #[prost(message, tag="109")]
16447        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
16448        #[prost(message, tag="110")]
16449        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
16450        #[prost(message, tag="111")]
16451        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
16452        #[prost(message, tag="112")]
16453        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
16454        #[prost(message, tag="113")]
16455        SuspendResume(super::SuspendResumeFtraceEvent),
16456        #[prost(message, tag="114")]
16457        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
16458        #[prost(message, tag="115")]
16459        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
16460        #[prost(message, tag="116")]
16461        BlockBioBounce(super::BlockBioBounceFtraceEvent),
16462        #[prost(message, tag="117")]
16463        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
16464        #[prost(message, tag="118")]
16465        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
16466        #[prost(message, tag="119")]
16467        BlockBioQueue(super::BlockBioQueueFtraceEvent),
16468        #[prost(message, tag="120")]
16469        BlockBioRemap(super::BlockBioRemapFtraceEvent),
16470        #[prost(message, tag="121")]
16471        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
16472        #[prost(message, tag="122")]
16473        BlockGetrq(super::BlockGetrqFtraceEvent),
16474        #[prost(message, tag="123")]
16475        BlockPlug(super::BlockPlugFtraceEvent),
16476        #[prost(message, tag="124")]
16477        BlockRqAbort(super::BlockRqAbortFtraceEvent),
16478        #[prost(message, tag="125")]
16479        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
16480        #[prost(message, tag="126")]
16481        BlockRqInsert(super::BlockRqInsertFtraceEvent),
16482        /// removed field with id 127;
16483        #[prost(message, tag="128")]
16484        BlockRqRemap(super::BlockRqRemapFtraceEvent),
16485        #[prost(message, tag="129")]
16486        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
16487        #[prost(message, tag="130")]
16488        BlockSleeprq(super::BlockSleeprqFtraceEvent),
16489        #[prost(message, tag="131")]
16490        BlockSplit(super::BlockSplitFtraceEvent),
16491        #[prost(message, tag="132")]
16492        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
16493        #[prost(message, tag="133")]
16494        BlockUnplug(super::BlockUnplugFtraceEvent),
16495        #[prost(message, tag="134")]
16496        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
16497        #[prost(message, tag="135")]
16498        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
16499        #[prost(message, tag="136")]
16500        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
16501        #[prost(message, tag="137")]
16502        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
16503        #[prost(message, tag="138")]
16504        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
16505        #[prost(message, tag="139")]
16506        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
16507        #[prost(message, tag="140")]
16508        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
16509        #[prost(message, tag="141")]
16510        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
16511        #[prost(message, tag="142")]
16512        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
16513        #[prost(message, tag="143")]
16514        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
16515        #[prost(message, tag="144")]
16516        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
16517        #[prost(message, tag="145")]
16518        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
16519        #[prost(message, tag="146")]
16520        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
16521        #[prost(message, tag="147")]
16522        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
16523        #[prost(message, tag="148")]
16524        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
16525        #[prost(message, tag="149")]
16526        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
16527        #[prost(message, tag="150")]
16528        Ext4EsFindDelayedExtentRangeEnter(super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent),
16529        #[prost(message, tag="151")]
16530        Ext4EsFindDelayedExtentRangeExit(super::Ext4EsFindDelayedExtentRangeExitFtraceEvent),
16531        #[prost(message, tag="152")]
16532        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
16533        #[prost(message, tag="153")]
16534        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
16535        #[prost(message, tag="154")]
16536        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
16537        #[prost(message, tag="155")]
16538        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
16539        #[prost(message, tag="156")]
16540        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
16541        #[prost(message, tag="157")]
16542        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
16543        #[prost(message, tag="158")]
16544        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
16545        #[prost(message, tag="159")]
16546        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
16547        #[prost(message, tag="160")]
16548        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
16549        #[prost(message, tag="161")]
16550        Ext4ExtConvertToInitializedEnter(super::Ext4ExtConvertToInitializedEnterFtraceEvent),
16551        #[prost(message, tag="162")]
16552        Ext4ExtConvertToInitializedFastpath(super::Ext4ExtConvertToInitializedFastpathFtraceEvent),
16553        #[prost(message, tag="163")]
16554        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
16555        #[prost(message, tag="164")]
16556        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
16557        #[prost(message, tag="165")]
16558        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
16559        #[prost(message, tag="166")]
16560        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
16561        #[prost(message, tag="167")]
16562        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
16563        #[prost(message, tag="168")]
16564        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
16565        #[prost(message, tag="169")]
16566        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
16567        #[prost(message, tag="170")]
16568        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
16569        #[prost(message, tag="171")]
16570        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
16571        #[prost(message, tag="172")]
16572        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
16573        #[prost(message, tag="173")]
16574        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
16575        #[prost(message, tag="174")]
16576        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
16577        #[prost(message, tag="175")]
16578        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
16579        #[prost(message, tag="176")]
16580        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
16581        #[prost(message, tag="177")]
16582        Ext4Forget(super::Ext4ForgetFtraceEvent),
16583        #[prost(message, tag="178")]
16584        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
16585        #[prost(message, tag="179")]
16586        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
16587        #[prost(message, tag="180")]
16588        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
16589        #[prost(message, tag="181")]
16590        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
16591        #[prost(message, tag="182")]
16592        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
16593        #[prost(message, tag="183")]
16594        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
16595        #[prost(message, tag="184")]
16596        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
16597        #[prost(message, tag="185")]
16598        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
16599        #[prost(message, tag="186")]
16600        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
16601        #[prost(message, tag="187")]
16602        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
16603        #[prost(message, tag="188")]
16604        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
16605        #[prost(message, tag="189")]
16606        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
16607        #[prost(message, tag="190")]
16608        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
16609        #[prost(message, tag="191")]
16610        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
16611        #[prost(message, tag="192")]
16612        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
16613        #[prost(message, tag="193")]
16614        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
16615        #[prost(message, tag="194")]
16616        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
16617        #[prost(message, tag="195")]
16618        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
16619        #[prost(message, tag="196")]
16620        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
16621        #[prost(message, tag="197")]
16622        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
16623        #[prost(message, tag="198")]
16624        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
16625        #[prost(message, tag="199")]
16626        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
16627        #[prost(message, tag="200")]
16628        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
16629        #[prost(message, tag="201")]
16630        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
16631        #[prost(message, tag="202")]
16632        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
16633        #[prost(message, tag="203")]
16634        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
16635        #[prost(message, tag="204")]
16636        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
16637        #[prost(message, tag="205")]
16638        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
16639        #[prost(message, tag="206")]
16640        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
16641        #[prost(message, tag="207")]
16642        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
16643        #[prost(message, tag="208")]
16644        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
16645        #[prost(message, tag="209")]
16646        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
16647        #[prost(message, tag="210")]
16648        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
16649        #[prost(message, tag="211")]
16650        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
16651        #[prost(message, tag="212")]
16652        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
16653        #[prost(message, tag="213")]
16654        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
16655        #[prost(message, tag="214")]
16656        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
16657        #[prost(message, tag="215")]
16658        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
16659        #[prost(message, tag="216")]
16660        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
16661        #[prost(message, tag="217")]
16662        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
16663        #[prost(message, tag="218")]
16664        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
16665        #[prost(message, tag="219")]
16666        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
16667        /// removed field with id 220;
16668        /// removed field with id 221;
16669        /// removed field with id 222;
16670        /// removed field with id 223;
16671        /// removed field with id 224;
16672        /// removed field with id 225;
16673        /// removed field with id 226;
16674        /// removed field with id 227;
16675        /// removed field with id 228;
16676        /// removed field with id 229;
16677        #[prost(message, tag="230")]
16678        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
16679        #[prost(message, tag="231")]
16680        Ext4Writepage(super::Ext4WritepageFtraceEvent),
16681        #[prost(message, tag="232")]
16682        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
16683        #[prost(message, tag="233")]
16684        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
16685        #[prost(message, tag="234")]
16686        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
16687        #[prost(message, tag="235")]
16688        TaskNewtask(super::TaskNewtaskFtraceEvent),
16689        #[prost(message, tag="236")]
16690        TaskRename(super::TaskRenameFtraceEvent),
16691        #[prost(message, tag="237")]
16692        SchedProcessExec(super::SchedProcessExecFtraceEvent),
16693        #[prost(message, tag="238")]
16694        SchedProcessExit(super::SchedProcessExitFtraceEvent),
16695        #[prost(message, tag="239")]
16696        SchedProcessFork(super::SchedProcessForkFtraceEvent),
16697        #[prost(message, tag="240")]
16698        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
16699        #[prost(message, tag="241")]
16700        SchedProcessHang(super::SchedProcessHangFtraceEvent),
16701        #[prost(message, tag="242")]
16702        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
16703        #[prost(message, tag="243")]
16704        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
16705        #[prost(message, tag="244")]
16706        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
16707        #[prost(message, tag="245")]
16708        F2fsFallocate(super::F2fsFallocateFtraceEvent),
16709        #[prost(message, tag="246")]
16710        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
16711        #[prost(message, tag="247")]
16712        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
16713        #[prost(message, tag="248")]
16714        F2fsIget(super::F2fsIgetFtraceEvent),
16715        #[prost(message, tag="249")]
16716        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
16717        #[prost(message, tag="250")]
16718        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
16719        #[prost(message, tag="251")]
16720        F2fsReadpage(super::F2fsReadpageFtraceEvent),
16721        #[prost(message, tag="252")]
16722        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
16723        #[prost(message, tag="253")]
16724        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
16725        #[prost(message, tag="254")]
16726        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
16727        #[prost(message, tag="255")]
16728        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
16729        #[prost(message, tag="256")]
16730        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
16731        #[prost(message, tag="257")]
16732        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
16733        #[prost(message, tag="258")]
16734        F2fsTruncate(super::F2fsTruncateFtraceEvent),
16735        #[prost(message, tag="259")]
16736        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
16737        #[prost(message, tag="260")]
16738        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
16739        #[prost(message, tag="261")]
16740        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
16741        #[prost(message, tag="262")]
16742        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
16743        #[prost(message, tag="263")]
16744        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
16745        #[prost(message, tag="264")]
16746        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
16747        #[prost(message, tag="265")]
16748        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
16749        #[prost(message, tag="266")]
16750        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
16751        #[prost(message, tag="267")]
16752        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
16753        #[prost(message, tag="268")]
16754        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
16755        #[prost(message, tag="269")]
16756        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
16757        #[prost(message, tag="270")]
16758        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
16759        #[prost(message, tag="271")]
16760        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
16761        #[prost(message, tag="272")]
16762        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
16763        #[prost(message, tag="273")]
16764        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
16765        #[prost(message, tag="274")]
16766        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
16767        #[prost(message, tag="275")]
16768        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
16769        #[prost(message, tag="276")]
16770        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
16771        #[prost(message, tag="277")]
16772        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
16773        #[prost(message, tag="278")]
16774        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
16775        #[prost(message, tag="279")]
16776        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
16777        #[prost(message, tag="280")]
16778        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
16779        #[prost(message, tag="281")]
16780        IommuMapRange(super::IommuMapRangeFtraceEvent),
16781        #[prost(message, tag="282")]
16782        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
16783        #[prost(message, tag="283")]
16784        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
16785        #[prost(message, tag="284")]
16786        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
16787        #[prost(message, tag="285")]
16788        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
16789        #[prost(message, tag="286")]
16790        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
16791        #[prost(message, tag="287")]
16792        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
16793        #[prost(message, tag="288")]
16794        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
16795        #[prost(message, tag="289")]
16796        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
16797        #[prost(message, tag="290")]
16798        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
16799        #[prost(message, tag="291")]
16800        IonPrefetching(super::IonPrefetchingFtraceEvent),
16801        #[prost(message, tag="292")]
16802        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
16803        #[prost(message, tag="293")]
16804        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
16805        #[prost(message, tag="294")]
16806        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
16807        #[prost(message, tag="295")]
16808        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
16809        #[prost(message, tag="296")]
16810        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
16811        #[prost(message, tag="297")]
16812        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
16813        #[prost(message, tag="298")]
16814        Kfree(super::KfreeFtraceEvent),
16815        #[prost(message, tag="299")]
16816        Kmalloc(super::KmallocFtraceEvent),
16817        #[prost(message, tag="300")]
16818        KmallocNode(super::KmallocNodeFtraceEvent),
16819        #[prost(message, tag="301")]
16820        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
16821        #[prost(message, tag="302")]
16822        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
16823        #[prost(message, tag="303")]
16824        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
16825        #[prost(message, tag="304")]
16826        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
16827        #[prost(message, tag="305")]
16828        MigratePagesStart(super::MigratePagesStartFtraceEvent),
16829        #[prost(message, tag="306")]
16830        MigrateRetry(super::MigrateRetryFtraceEvent),
16831        #[prost(message, tag="307")]
16832        MmPageAlloc(super::MmPageAllocFtraceEvent),
16833        #[prost(message, tag="308")]
16834        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
16835        #[prost(message, tag="309")]
16836        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
16837        #[prost(message, tag="310")]
16838        MmPageFree(super::MmPageFreeFtraceEvent),
16839        #[prost(message, tag="311")]
16840        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
16841        #[prost(message, tag="312")]
16842        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
16843        #[prost(message, tag="313")]
16844        RssStat(super::RssStatFtraceEvent),
16845        #[prost(message, tag="314")]
16846        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
16847        #[prost(message, tag="315")]
16848        IonHeapGrow(super::IonHeapGrowFtraceEvent),
16849        #[prost(message, tag="316")]
16850        FenceInit(super::FenceInitFtraceEvent),
16851        #[prost(message, tag="317")]
16852        FenceDestroy(super::FenceDestroyFtraceEvent),
16853        #[prost(message, tag="318")]
16854        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
16855        #[prost(message, tag="319")]
16856        FenceSignaled(super::FenceSignaledFtraceEvent),
16857        #[prost(message, tag="320")]
16858        ClkEnable(super::ClkEnableFtraceEvent),
16859        #[prost(message, tag="321")]
16860        ClkDisable(super::ClkDisableFtraceEvent),
16861        #[prost(message, tag="322")]
16862        ClkSetRate(super::ClkSetRateFtraceEvent),
16863        #[prost(message, tag="323")]
16864        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
16865        #[prost(message, tag="324")]
16866        SignalDeliver(super::SignalDeliverFtraceEvent),
16867        #[prost(message, tag="325")]
16868        SignalGenerate(super::SignalGenerateFtraceEvent),
16869        #[prost(message, tag="326")]
16870        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
16871        #[prost(message, tag="327")]
16872        Generic(super::GenericFtraceEvent),
16873        #[prost(message, tag="328")]
16874        MmEventRecord(super::MmEventRecordFtraceEvent),
16875        #[prost(message, tag="329")]
16876        SysEnter(super::SysEnterFtraceEvent),
16877        #[prost(message, tag="330")]
16878        SysExit(super::SysExitFtraceEvent),
16879        #[prost(message, tag="331")]
16880        Zero(super::ZeroFtraceEvent),
16881        #[prost(message, tag="332")]
16882        GpuFrequency(super::GpuFrequencyFtraceEvent),
16883        #[prost(message, tag="333")]
16884        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
16885        #[prost(message, tag="334")]
16886        MarkVictim(super::MarkVictimFtraceEvent),
16887        #[prost(message, tag="335")]
16888        IonStat(super::IonStatFtraceEvent),
16889        #[prost(message, tag="336")]
16890        IonBufferCreate(super::IonBufferCreateFtraceEvent),
16891        #[prost(message, tag="337")]
16892        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
16893        #[prost(message, tag="338")]
16894        ScmCallStart(super::ScmCallStartFtraceEvent),
16895        #[prost(message, tag="339")]
16896        ScmCallEnd(super::ScmCallEndFtraceEvent),
16897        #[prost(message, tag="340")]
16898        GpuMemTotal(super::GpuMemTotalFtraceEvent),
16899        #[prost(message, tag="341")]
16900        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
16901        #[prost(message, tag="342")]
16902        CdevUpdate(super::CdevUpdateFtraceEvent),
16903        #[prost(message, tag="343")]
16904        CpuhpExit(super::CpuhpExitFtraceEvent),
16905        #[prost(message, tag="344")]
16906        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
16907        #[prost(message, tag="345")]
16908        CpuhpEnter(super::CpuhpEnterFtraceEvent),
16909        #[prost(message, tag="346")]
16910        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
16911        #[prost(message, tag="347")]
16912        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
16913        #[prost(message, tag="348")]
16914        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
16915        #[prost(message, tag="349")]
16916        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
16917        #[prost(message, tag="350")]
16918        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
16919        #[prost(message, tag="351")]
16920        DmaHeapStat(super::DmaHeapStatFtraceEvent),
16921        #[prost(message, tag="352")]
16922        CpuhpPause(super::CpuhpPauseFtraceEvent),
16923        #[prost(message, tag="353")]
16924        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
16925        #[prost(message, tag="354")]
16926        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
16927        #[prost(message, tag="355")]
16928        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
16929        #[prost(message, tag="356")]
16930        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
16931        #[prost(message, tag="357")]
16932        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
16933        #[prost(message, tag="358")]
16934        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
16935        #[prost(message, tag="359")]
16936        RssStatThrottled(super::RssStatThrottledFtraceEvent),
16937        #[prost(message, tag="360")]
16938        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
16939        #[prost(message, tag="361")]
16940        NetDevXmit(super::NetDevXmitFtraceEvent),
16941        #[prost(message, tag="362")]
16942        InetSockSetState(super::InetSockSetStateFtraceEvent),
16943        #[prost(message, tag="363")]
16944        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
16945        #[prost(message, tag="364")]
16946        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
16947        #[prost(message, tag="365")]
16948        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
16949        #[prost(message, tag="366")]
16950        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
16951        #[prost(message, tag="367")]
16952        KfreeSkb(super::KfreeSkbFtraceEvent),
16953        #[prost(message, tag="368")]
16954        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
16955        #[prost(message, tag="369")]
16956        KvmAckIrq(super::KvmAckIrqFtraceEvent),
16957        #[prost(message, tag="370")]
16958        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
16959        #[prost(message, tag="371")]
16960        KvmAgePage(super::KvmAgePageFtraceEvent),
16961        #[prost(message, tag="372")]
16962        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
16963        #[prost(message, tag="373")]
16964        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
16965        #[prost(message, tag="374")]
16966        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
16967        #[prost(message, tag="375")]
16968        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
16969        #[prost(message, tag="376")]
16970        KvmEntry(super::KvmEntryFtraceEvent),
16971        #[prost(message, tag="377")]
16972        KvmExit(super::KvmExitFtraceEvent),
16973        #[prost(message, tag="378")]
16974        KvmFpu(super::KvmFpuFtraceEvent),
16975        #[prost(message, tag="379")]
16976        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
16977        #[prost(message, tag="380")]
16978        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
16979        #[prost(message, tag="381")]
16980        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
16981        #[prost(message, tag="382")]
16982        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
16983        #[prost(message, tag="383")]
16984        KvmIrqLine(super::KvmIrqLineFtraceEvent),
16985        #[prost(message, tag="384")]
16986        KvmMmio(super::KvmMmioFtraceEvent),
16987        #[prost(message, tag="385")]
16988        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
16989        #[prost(message, tag="386")]
16990        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
16991        #[prost(message, tag="387")]
16992        KvmSetIrq(super::KvmSetIrqFtraceEvent),
16993        #[prost(message, tag="388")]
16994        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
16995        #[prost(message, tag="389")]
16996        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
16997        #[prost(message, tag="390")]
16998        KvmSysAccess(super::KvmSysAccessFtraceEvent),
16999        #[prost(message, tag="391")]
17000        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
17001        #[prost(message, tag="392")]
17002        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
17003        #[prost(message, tag="393")]
17004        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
17005        #[prost(message, tag="394")]
17006        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
17007        #[prost(message, tag="395")]
17008        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
17009        #[prost(message, tag="396")]
17010        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
17011        #[prost(message, tag="397")]
17012        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
17013        #[prost(message, tag="398")]
17014        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
17015        #[prost(message, tag="399")]
17016        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
17017        #[prost(message, tag="400")]
17018        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
17019        #[prost(message, tag="401")]
17020        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
17021        #[prost(message, tag="402")]
17022        TrapReg(super::TrapRegFtraceEvent),
17023        #[prost(message, tag="403")]
17024        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
17025        #[prost(message, tag="404")]
17026        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
17027        #[prost(message, tag="405")]
17028        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
17029        #[prost(message, tag="406")]
17030        UfshcdCommand(super::UfshcdCommandFtraceEvent),
17031        #[prost(message, tag="407")]
17032        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
17033        #[prost(message, tag="408")]
17034        Console(super::ConsoleFtraceEvent),
17035        #[prost(message, tag="409")]
17036        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
17037        #[prost(message, tag="410")]
17038        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
17039        #[prost(message, tag="411")]
17040        DrmSchedJob(super::DrmSchedJobFtraceEvent),
17041        #[prost(message, tag="412")]
17042        DrmRunJob(super::DrmRunJobFtraceEvent),
17043        #[prost(message, tag="413")]
17044        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
17045        #[prost(message, tag="414")]
17046        DmaFenceInit(super::DmaFenceInitFtraceEvent),
17047        #[prost(message, tag="415")]
17048        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
17049        #[prost(message, tag="416")]
17050        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
17051        #[prost(message, tag="417")]
17052        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
17053        #[prost(message, tag="418")]
17054        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
17055        #[prost(message, tag="419")]
17056        F2fsIostat(super::F2fsIostatFtraceEvent),
17057        #[prost(message, tag="420")]
17058        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
17059        #[prost(message, tag="421")]
17060        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
17061        #[prost(message, tag="422")]
17062        V4l2Qbuf(super::V4l2QbufFtraceEvent),
17063        #[prost(message, tag="423")]
17064        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
17065        #[prost(message, tag="424")]
17066        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
17067        #[prost(message, tag="425")]
17068        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
17069        #[prost(message, tag="426")]
17070        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
17071        #[prost(message, tag="427")]
17072        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
17073        #[prost(message, tag="428")]
17074        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
17075        #[prost(message, tag="429")]
17076        DsiRx(super::DsiRxFtraceEvent),
17077        #[prost(message, tag="430")]
17078        DsiTx(super::DsiTxFtraceEvent),
17079        #[prost(message, tag="431")]
17080        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
17081        #[prost(message, tag="432")]
17082        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
17083        #[prost(message, tag="433")]
17084        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
17085        #[prost(message, tag="434")]
17086        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
17087        #[prost(message, tag="435")]
17088        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
17089        #[prost(message, tag="436")]
17090        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
17091        #[prost(message, tag="437")]
17092        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
17093        #[prost(message, tag="438")]
17094        FuncgraphExit(super::FuncgraphExitFtraceEvent),
17095        #[prost(message, tag="439")]
17096        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
17097        #[prost(message, tag="440")]
17098        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
17099        #[prost(message, tag="441")]
17100        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
17101        #[prost(message, tag="442")]
17102        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
17103        #[prost(message, tag="443")]
17104        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
17105        #[prost(message, tag="444")]
17106        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
17107        #[prost(message, tag="445")]
17108        TrustySmc(super::TrustySmcFtraceEvent),
17109        #[prost(message, tag="446")]
17110        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
17111        #[prost(message, tag="447")]
17112        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
17113        #[prost(message, tag="448")]
17114        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
17115        #[prost(message, tag="449")]
17116        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
17117        #[prost(message, tag="450")]
17118        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
17119        #[prost(message, tag="451")]
17120        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
17121        #[prost(message, tag="452")]
17122        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
17123        #[prost(message, tag="453")]
17124        TrustyIrq(super::TrustyIrqFtraceEvent),
17125        #[prost(message, tag="454")]
17126        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
17127        #[prost(message, tag="455")]
17128        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
17129        #[prost(message, tag="456")]
17130        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
17131        #[prost(message, tag="457")]
17132        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
17133        #[prost(message, tag="458")]
17134        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
17135        /// removed field with id 459;
17136        #[prost(message, tag="460")]
17137        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
17138        #[prost(message, tag="461")]
17139        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
17140        #[prost(message, tag="462")]
17141        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
17142        /// removed field with id 463;
17143        #[prost(message, tag="464")]
17144        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
17145        #[prost(message, tag="465")]
17146        CmaAllocStart(super::CmaAllocStartFtraceEvent),
17147        #[prost(message, tag="466")]
17148        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
17149        #[prost(message, tag="467")]
17150        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
17151        #[prost(message, tag="468")]
17152        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
17153        #[prost(message, tag="469")]
17154        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
17155        #[prost(message, tag="470")]
17156        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
17157        #[prost(message, tag="471")]
17158        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
17159        #[prost(message, tag="472")]
17160        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
17161        #[prost(message, tag="473")]
17162        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
17163        #[prost(message, tag="474")]
17164        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
17165        #[prost(message, tag="475")]
17166        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
17167        #[prost(message, tag="476")]
17168        HypEnter(super::HypEnterFtraceEvent),
17169        #[prost(message, tag="477")]
17170        HypExit(super::HypExitFtraceEvent),
17171        #[prost(message, tag="478")]
17172        HostHcall(super::HostHcallFtraceEvent),
17173        #[prost(message, tag="479")]
17174        HostSmc(super::HostSmcFtraceEvent),
17175        #[prost(message, tag="480")]
17176        HostMemAbort(super::HostMemAbortFtraceEvent),
17177        #[prost(message, tag="481")]
17178        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
17179        #[prost(message, tag="482")]
17180        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
17181        #[prost(message, tag="483")]
17182        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
17183        #[prost(message, tag="484")]
17184        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
17185        #[prost(message, tag="485")]
17186        BinderCommand(super::BinderCommandFtraceEvent),
17187        #[prost(message, tag="486")]
17188        BinderReturn(super::BinderReturnFtraceEvent),
17189        #[prost(message, tag="487")]
17190        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
17191        #[prost(message, tag="488")]
17192        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
17193        #[prost(message, tag="489")]
17194        RpmStatus(super::RpmStatusFtraceEvent),
17195        #[prost(message, tag="490")]
17196        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
17197        #[prost(message, tag="491")]
17198        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
17199        #[prost(message, tag="492")]
17200        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
17201        #[prost(message, tag="493")]
17202        DpuDsiRx(super::DpuDsiRxFtraceEvent),
17203        #[prost(message, tag="494")]
17204        DpuDsiTx(super::DpuDsiTxFtraceEvent),
17205        #[prost(message, tag="495")]
17206        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
17207        #[prost(message, tag="496")]
17208        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
17209        #[prost(message, tag="497")]
17210        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
17211        #[prost(message, tag="498")]
17212        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
17213        #[prost(message, tag="499")]
17214        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
17215        #[prost(message, tag="500")]
17216        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
17217        #[prost(message, tag="501")]
17218        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
17219        #[prost(message, tag="502")]
17220        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
17221        #[prost(message, tag="503")]
17222        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
17223        #[prost(message, tag="504")]
17224        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
17225        #[prost(message, tag="505")]
17226        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
17227        #[prost(message, tag="506")]
17228        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
17229        #[prost(message, tag="507")]
17230        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
17231        #[prost(message, tag="508")]
17232        DcvshFreq(super::DcvshFreqFtraceEvent),
17233        #[prost(message, tag="509")]
17234        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
17235        #[prost(message, tag="510")]
17236        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent),
17237        #[prost(message, tag="511")]
17238        MaliMaliPmMcuHctlCoresNotifyPend(super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent),
17239        #[prost(message, tag="512")]
17240        MaliMaliPmMcuHctlCoreInactivePend(super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent),
17241        #[prost(message, tag="513")]
17242        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
17243        #[prost(message, tag="514")]
17244        MaliMaliPmMcuHctlShadersCoreOffPend(super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent),
17245        #[prost(message, tag="515")]
17246        MaliMaliPmMcuHctlShadersPendOff(super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent),
17247        #[prost(message, tag="516")]
17248        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
17249        #[prost(message, tag="517")]
17250        MaliMaliPmMcuHctlShadersReadyOff(super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent),
17251        #[prost(message, tag="518")]
17252        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
17253        #[prost(message, tag="519")]
17254        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
17255        #[prost(message, tag="520")]
17256        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
17257        #[prost(message, tag="521")]
17258        MaliMaliPmMcuOnCoreAttrUpdatePend(super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent),
17259        #[prost(message, tag="522")]
17260        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
17261        #[prost(message, tag="523")]
17262        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
17263        #[prost(message, tag="524")]
17264        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
17265        #[prost(message, tag="525")]
17266        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
17267        #[prost(message, tag="526")]
17268        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
17269        #[prost(message, tag="527")]
17270        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
17271        #[prost(message, tag="528")]
17272        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
17273        #[prost(message, tag="529")]
17274        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
17275        #[prost(message, tag="530")]
17276        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
17277        #[prost(message, tag="531")]
17278        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
17279        #[prost(message, tag="532")]
17280        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
17281        #[prost(message, tag="533")]
17282        BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
17283        #[prost(message, tag="534")]
17284        KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
17285        #[prost(message, tag="535")]
17286        KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
17287        #[prost(message, tag="536")]
17288        KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
17289        #[prost(message, tag="537")]
17290        KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
17291        #[prost(message, tag="538")]
17292        PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
17293        #[prost(message, tag="539")]
17294        PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
17295        #[prost(message, tag="540")]
17296        SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
17297        #[prost(message, tag="541")]
17298        DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
17299        #[prost(message, tag="542")]
17300        KprobeEvent(super::KprobeEvent),
17301        #[prost(message, tag="543")]
17302        ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
17303        #[prost(message, tag="544")]
17304        DoSysOpen(super::DoSysOpenFtraceEvent),
17305        #[prost(message, tag="545")]
17306        OpenExec(super::OpenExecFtraceEvent),
17307        #[prost(message, tag="546")]
17308        BlockIoStart(super::BlockIoStartFtraceEvent),
17309        #[prost(message, tag="547")]
17310        BlockIoDone(super::BlockIoDoneFtraceEvent),
17311        #[prost(message, tag="548")]
17312        MaliGpuPowerState(super::MaliGpuPowerStateFtraceEvent),
17313        #[prost(message, tag="549")]
17314        DpuDispDpuUnderrun(super::DpuDispDpuUnderrunFtraceEvent),
17315        #[prost(message, tag="550")]
17316        DpuDispVblankIrqEnable(super::DpuDispVblankIrqEnableFtraceEvent),
17317        #[prost(message, tag="551")]
17318        HrtimerStart(super::HrtimerStartFtraceEvent),
17319        #[prost(message, tag="552")]
17320        HrtimerCancel(super::HrtimerCancelFtraceEvent),
17321        #[prost(message, tag="553")]
17322        HrtimerExpireEntry(super::HrtimerExpireEntryFtraceEvent),
17323        #[prost(message, tag="554")]
17324        HrtimerExpireExit(super::HrtimerExpireExitFtraceEvent),
17325        #[prost(message, tag="555")]
17326        TimerStart(super::TimerStartFtraceEvent),
17327        #[prost(message, tag="556")]
17328        TimerCancel(super::TimerCancelFtraceEvent),
17329        #[prost(message, tag="557")]
17330        TimerExpireEntry(super::TimerExpireEntryFtraceEvent),
17331        #[prost(message, tag="558")]
17332        TimerExpireExit(super::TimerExpireExitFtraceEvent),
17333        #[prost(message, tag="559")]
17334        LocalTimerEntry(super::LocalTimerEntryFtraceEvent),
17335        #[prost(message, tag="560")]
17336        LocalTimerExit(super::LocalTimerExitFtraceEvent),
17337        #[prost(message, tag="561")]
17338        Dwc3AllocRequest(super::Dwc3AllocRequestFtraceEvent),
17339        #[prost(message, tag="562")]
17340        Dwc3CompleteTrb(super::Dwc3CompleteTrbFtraceEvent),
17341        #[prost(message, tag="563")]
17342        Dwc3CtrlReq(super::Dwc3CtrlReqFtraceEvent),
17343        #[prost(message, tag="564")]
17344        Dwc3EpDequeue(super::Dwc3EpDequeueFtraceEvent),
17345        #[prost(message, tag="565")]
17346        Dwc3EpQueue(super::Dwc3EpQueueFtraceEvent),
17347        #[prost(message, tag="566")]
17348        Dwc3Event(super::Dwc3EventFtraceEvent),
17349        #[prost(message, tag="567")]
17350        Dwc3FreeRequest(super::Dwc3FreeRequestFtraceEvent),
17351        #[prost(message, tag="568")]
17352        Dwc3GadgetEpCmd(super::Dwc3GadgetEpCmdFtraceEvent),
17353        #[prost(message, tag="569")]
17354        Dwc3GadgetEpDisable(super::Dwc3GadgetEpDisableFtraceEvent),
17355        #[prost(message, tag="570")]
17356        Dwc3GadgetEpEnable(super::Dwc3GadgetEpEnableFtraceEvent),
17357        #[prost(message, tag="571")]
17358        Dwc3GadgetGenericCmd(super::Dwc3GadgetGenericCmdFtraceEvent),
17359        #[prost(message, tag="572")]
17360        Dwc3GadgetGiveback(super::Dwc3GadgetGivebackFtraceEvent),
17361        #[prost(message, tag="573")]
17362        Dwc3PrepareTrb(super::Dwc3PrepareTrbFtraceEvent),
17363        #[prost(message, tag="574")]
17364        Dwc3Readl(super::Dwc3ReadlFtraceEvent),
17365        #[prost(message, tag="575")]
17366        Dwc3Writel(super::Dwc3WritelFtraceEvent),
17367        #[prost(message, tag="576")]
17368        CmaAllocFinish(super::CmaAllocFinishFtraceEvent),
17369        #[prost(message, tag="577")]
17370        MmAllocContigMigrateRangeInfo(super::MmAllocContigMigrateRangeInfoFtraceEvent),
17371        #[prost(message, tag="578")]
17372        HostFfaCall(super::HostFfaCallFtraceEvent),
17373        #[prost(message, tag="579")]
17374        DmabufRssStat(super::DmabufRssStatFtraceEvent),
17375        #[prost(message, tag="580")]
17376        IommuIdmap(super::IommuIdmapFtraceEvent),
17377        #[prost(message, tag="581")]
17378        PsciMemProtect(super::PsciMemProtectFtraceEvent),
17379        #[prost(message, tag="582")]
17380        HypervisorHostHcall(super::HypervisorHostHcallFtraceEvent),
17381        #[prost(message, tag="583")]
17382        HypervisorHostSmc(super::HypervisorHostSmcFtraceEvent),
17383        #[prost(message, tag="584")]
17384        HypervisorHypExit(super::HypervisorHypExitFtraceEvent),
17385        #[prost(message, tag="585")]
17386        HypervisorIommuIdmap(super::HypervisorIommuIdmapFtraceEvent),
17387        #[prost(message, tag="586")]
17388        HypervisorPsciMemProtect(super::HypervisorPsciMemProtectFtraceEvent),
17389        #[prost(message, tag="587")]
17390        HypervisorHostMemAbort(super::HypervisorHostMemAbortFtraceEvent),
17391        #[prost(message, tag="588")]
17392        HypervisorHypEnter(super::HypervisorHypEnterFtraceEvent),
17393        #[prost(message, tag="589")]
17394        HypervisorIommuIdmapComplete(super::HypervisorIommuIdmapCompleteFtraceEvent),
17395        #[prost(message, tag="590")]
17396        HypervisorVcpuIllegalTrap(super::HypervisorVcpuIllegalTrapFtraceEvent),
17397        #[prost(message, tag="591")]
17398        DrmSchedJobAddDep(super::DrmSchedJobAddDepFtraceEvent),
17399        #[prost(message, tag="592")]
17400        DrmSchedJobDone(super::DrmSchedJobDoneFtraceEvent),
17401        #[prost(message, tag="593")]
17402        DrmSchedJobQueue(super::DrmSchedJobQueueFtraceEvent),
17403        #[prost(message, tag="594")]
17404        DrmSchedJobRun(super::DrmSchedJobRunFtraceEvent),
17405        #[prost(message, tag="595")]
17406        DrmSchedJobUnschedulable(super::DrmSchedJobUnschedulableFtraceEvent),
17407        #[prost(message, tag="596")]
17408        FwtpPerfettoCounter(super::FwtpPerfettoCounterFtraceEvent),
17409        #[prost(message, tag="597")]
17410        ScsiDispatchCmdError(super::ScsiDispatchCmdErrorFtraceEvent),
17411        #[prost(message, tag="598")]
17412        ScsiDispatchCmdTimeout(super::ScsiDispatchCmdTimeoutFtraceEvent),
17413        #[prost(message, tag="599")]
17414        ScsiEhWakeup(super::ScsiEhWakeupFtraceEvent),
17415    }
17416}
17417// End of protos/perfetto/trace/ftrace/ftrace_event.proto
17418
17419// Begin of protos/perfetto/trace/ftrace/ftrace_stats.proto
17420
17421/// Per-CPU kernel buffer stats for the ftrace data source gathered from
17422/// /sys/kernel/tracing/per_cpu/cpuX/stats.
17423#[derive(Clone, PartialEq, ::prost::Message)]
17424pub struct FtraceCpuStats {
17425    /// CPU index.
17426    #[prost(uint64, optional, tag="1")]
17427    pub cpu: ::core::option::Option<u64>,
17428    /// Number of entries currently in the kernel buffer.
17429    #[prost(uint64, optional, tag="2")]
17430    pub entries: ::core::option::Option<u64>,
17431    /// Number of events lost in kernel buffers due to overwriting of old events
17432    /// before userspace had a chance to drain them. Valid if the buffer is in
17433    /// "overwrite" mode, otherwise see |dropped_events|.
17434    #[prost(uint64, optional, tag="3")]
17435    pub overrun: ::core::option::Option<u64>,
17436    /// This should always be zero. If not the buffer size is way too small or
17437    /// something went wrong with the tracer. Quoting the kernel: "number of
17438    /// commits failing due to the buffer wrapping around while there are
17439    /// uncommitted events, such as during an interrupt storm".
17440    #[prost(uint64, optional, tag="4")]
17441    pub commit_overrun: ::core::option::Option<u64>,
17442    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
17443    /// The field should be named "bytes", but is misnamed for historical reasons.
17444    /// This value has known inaccuracies before Linux v6.6:
17445    /// <https://github.com/torvalds/linux/commit/45d99ea>
17446    #[prost(uint64, optional, tag="5")]
17447    pub bytes_read: ::core::option::Option<u64>,
17448    /// The timestamp for the oldest event still in the ring buffer.
17449    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
17450    #[prost(double, optional, tag="6")]
17451    pub oldest_event_ts: ::core::option::Option<f64>,
17452    /// The current timestamp.
17453    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
17454    #[prost(double, optional, tag="7")]
17455    pub now_ts: ::core::option::Option<f64>,
17456    /// If the kernel buffer has overwrite mode disabled, this will show the number
17457    /// of new events that were lost because the buffer was full. This is similar
17458    /// to |overrun| but only for the overwrite=false case.
17459    #[prost(uint64, optional, tag="8")]
17460    pub dropped_events: ::core::option::Option<u64>,
17461    /// The number of events read (consumed) from the buffer by userspace.
17462    #[prost(uint64, optional, tag="9")]
17463    pub read_events: ::core::option::Option<u64>,
17464}
17465/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
17466#[derive(Clone, PartialEq, ::prost::Message)]
17467pub struct FtraceKprobeStats {
17468    /// Cumulative number of kprobe events generated for this function
17469    #[prost(int64, optional, tag="1")]
17470    pub hits: ::core::option::Option<i64>,
17471    /// Cumulative number of kprobe events that could not be generated for this
17472    /// function and were missed.  This happens when too much nesting
17473    /// happens between a kprobe and its kretprobe, overflowing the
17474    /// maxactives buffer.
17475    #[prost(int64, optional, tag="2")]
17476    pub misses: ::core::option::Option<i64>,
17477}
17478/// Errors and kernel buffer stats for the ftrace data source.
17479#[derive(Clone, PartialEq, ::prost::Message)]
17480pub struct FtraceStats {
17481    /// A pair of FtraceStats is written on every trace flush:
17482    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
17483    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
17484    ///                   before this packet was written. For simple traces this
17485    ///                   will be once at the end of the trace.
17486    #[prost(enumeration="ftrace_stats::Phase", optional, tag="1")]
17487    pub phase: ::core::option::Option<i32>,
17488    /// Per-CPU stats (one entry for each CPU).
17489    #[prost(message, repeated, tag="2")]
17490    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
17491    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
17492    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
17493    /// trace or not. It can be used to debug kptr_restrict or security-related
17494    /// errors.
17495    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
17496    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
17497    #[prost(uint32, optional, tag="3")]
17498    pub kernel_symbols_parsed: ::core::option::Option<u32>,
17499    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
17500    #[prost(uint32, optional, tag="4")]
17501    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
17502    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
17503    /// one or more atrace categories not available on the device.
17504    #[prost(string, optional, tag="5")]
17505    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
17506    /// Error message due to exclusivity violation of a single-tenant feature.
17507    #[prost(string, optional, tag="13")]
17508    pub exclusive_feature_error: ::core::option::Option<::prost::alloc::string::String>,
17509    /// Ftrace events requested by the config but not present on device.
17510    #[prost(string, repeated, tag="6")]
17511    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17512    /// Ftrace events requested by the config and present on device, but which we
17513    /// failed to enable due to permissions, or due to a conflicting option
17514    /// (currently FtraceConfig.disable_generic_events).
17515    #[prost(string, repeated, tag="7")]
17516    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17517    /// The data source was configured to preserve existing events in the ftrace
17518    /// buffer before the start of the trace.
17519    #[prost(bool, optional, tag="8")]
17520    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
17521    /// Unique errors encountered during reading and parsing of the raw ftrace
17522    /// data. Ring buffer ABI related errors will also be recorded in the
17523    /// affected FtraceEventBundles with a timestamp.
17524    /// Any traces with entries in this field should be investigated, as they
17525    /// indicate a bug in perfetto or the kernel.
17526    #[prost(enumeration="FtraceParseStatus", repeated, packed="false", tag="9")]
17527    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
17528    /// Kprobe profile stats for functions hits and misses
17529    #[prost(message, optional, tag="10")]
17530    pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
17531    /// Per-cpu buffer size as returned by buffer_size_kb in pages (rounded up).
17532    /// Added in: perfetto v52.
17533    #[prost(uint32, optional, tag="11")]
17534    pub cpu_buffer_size_pages: ::core::option::Option<u32>,
17535    /// Per-cpu buffer size as cached by our implementation (ftrace muxer), based
17536    /// on the value we're writing into the tracefs control file. Might not be
17537    /// exactly equal to |cpu_buffer_size_pages| due to the kernel allocating extra
17538    /// scratch pages (and/or other factors). Added in: perfetto v52.
17539    #[prost(uint32, optional, tag="12")]
17540    pub cached_cpu_buffer_size_pages: ::core::option::Option<u32>,
17541}
17542/// Nested message and enum types in `FtraceStats`.
17543pub mod ftrace_stats {
17544    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17545    #[repr(i32)]
17546    pub enum Phase {
17547        Unspecified = 0,
17548        StartOfTrace = 1,
17549        EndOfTrace = 2,
17550    }
17551    impl Phase {
17552        /// String value of the enum field names used in the ProtoBuf definition.
17553        ///
17554        /// The values are not transformed in any way and thus are considered stable
17555        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17556        pub fn as_str_name(&self) -> &'static str {
17557            match self {
17558                Phase::Unspecified => "UNSPECIFIED",
17559                Phase::StartOfTrace => "START_OF_TRACE",
17560                Phase::EndOfTrace => "END_OF_TRACE",
17561            }
17562        }
17563    }
17564}
17565// End of protos/perfetto/trace/ftrace/ftrace_stats.proto
17566
17567// Begin of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
17568
17569/// The result of tracing one or more ftrace data pages from a single per-cpu
17570/// kernel ring buffer. If collating multiple pages' worth of events, all of
17571/// them come from contiguous pages, with no kernel data loss in between.
17572#[derive(Clone, PartialEq, ::prost::Message)]
17573pub struct FtraceEventBundle {
17574    #[prost(uint32, optional, tag="1")]
17575    pub cpu: ::core::option::Option<u32>,
17576    #[prost(message, repeated, tag="2")]
17577    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
17578    /// Set to true if there was data loss between the last time we've read from
17579    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
17580    /// in this bundle.
17581    #[prost(bool, optional, tag="3")]
17582    pub lost_events: ::core::option::Option<bool>,
17583    #[prost(message, optional, tag="4")]
17584    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
17585    /// Perfetto will by default try to use the boottime ("boot") clock for ftrace
17586    /// timestamps as that counts during suspend, is available to userspace, and
17587    /// is coherent across cpus.
17588    ///
17589    /// If this field is set, it means that a different clock was used during
17590    /// recording. Either because the boot clock is unavailable (e.g. old kernels
17591    /// before 3.x), or the trace config has set an incompatible option
17592    /// (use_monotonic_raw_clock / preserve_ftrace_buffer). In that case,
17593    /// trace_processor will do best-effort clock alignment using timestamp pairs
17594    /// from |ftrace_timestamp| and |boot_timestamp| fields. This field is omitted
17595    /// when the ftrace clock is "boot", as that is the default assumption.
17596    ///
17597    /// Some clocks (local/global) are technically per-cpu, but we make a
17598    /// simplifying assumption that they are global, as their inter-cpu skew
17599    /// should be reasonably bounded on modern systems.
17600    ///
17601    /// Added in: perfetto v19. Android T (13).
17602    #[prost(enumeration="FtraceClock", optional, tag="5")]
17603    pub ftrace_clock: ::core::option::Option<i32>,
17604    /// The timestamp according to the ftrace clock, taken at the same instant as
17605    /// |boot_timestamp|. Note: timestamping is done at buffer read time, so it
17606    /// will be in the future relative to the data covered by this bundle.
17607    /// Implementation note: Populated by reading the 'now ts:' field in
17608    /// tracefs/per_cpu/cpu0/stat.
17609    ///
17610    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
17611    #[prost(int64, optional, tag="6")]
17612    pub ftrace_timestamp: ::core::option::Option<i64>,
17613    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
17614    /// |ftrace_timestamp|.
17615    ///
17616    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
17617    #[prost(int64, optional, tag="7")]
17618    pub boot_timestamp: ::core::option::Option<i64>,
17619    #[prost(message, repeated, tag="8")]
17620    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
17621    /// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
17622    /// primary difference is that this field tracked the last timestamp read from
17623    /// the per-cpu buffer, while the newer field tracks events that get
17624    /// serialised into the trace.
17625    /// Added in: perfetto v44.
17626    #[prost(uint64, optional, tag="9")]
17627    pub last_read_event_timestamp: ::core::option::Option<u64>,
17628    /// The timestamp (using ftrace clock) of the last event written into this
17629    /// data source on this cpu. In other words: the last event in the previous
17630    /// bundle.
17631    /// Lets the trace processing find an initial timestamp after which ftrace
17632    /// data is known to be valid across all cpus. Of particular importance when
17633    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
17634    /// oldest bundles can skew the first valid timestamp per cpu significantly.
17635    /// Added in: perfetto v47.
17636    #[prost(uint64, optional, tag="10")]
17637    pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
17638    #[prost(message, repeated, tag="11")]
17639    pub generic_event_descriptors: ::prost::alloc::vec::Vec<ftrace_event_bundle::GenericEventDescriptor>,
17640    /// Written only on android builds if the config sets |debug_ftrace_abi|.
17641    /// Contains the raw ring buffer tracing page that the implementation could
17642    /// not parse.
17643    /// Addded in: perfetto v50.
17644    #[prost(bytes="vec", optional, tag="512")]
17645    pub broken_abi_trace_page: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
17646}
17647/// Nested message and enum types in `FtraceEventBundle`.
17648pub mod ftrace_event_bundle {
17649    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
17650    /// a subset of events & their fields is recorded.
17651    /// All fields (except comms) are stored in a structure-of-arrays form, one
17652    /// entry in each repeated field per event.
17653    #[derive(Clone, PartialEq, ::prost::Message)]
17654    pub struct CompactSched {
17655        /// Interned table of unique strings for this bundle.
17656        #[prost(string, repeated, tag="5")]
17657        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17658        /// Delta-encoded timestamps across all sched_switch events within this
17659        /// bundle. The first is absolute, each next one is relative to its
17660        /// predecessor.
17661        #[prost(uint64, repeated, tag="1")]
17662        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
17663        #[prost(int64, repeated, tag="2")]
17664        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
17665        #[prost(int32, repeated, tag="3")]
17666        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
17667        #[prost(int32, repeated, tag="4")]
17668        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
17669        /// One per event, index into |intern_table| corresponding to the
17670        /// next_comm field of the event.
17671        #[prost(uint32, repeated, tag="6")]
17672        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
17673        /// Delta-encoded timestamps across all sched_waking events within this
17674        /// bundle. The first is absolute, each next one is relative to its
17675        /// predecessor.
17676        #[prost(uint64, repeated, tag="7")]
17677        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
17678        #[prost(int32, repeated, tag="8")]
17679        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
17680        #[prost(int32, repeated, tag="9")]
17681        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
17682        #[prost(int32, repeated, tag="10")]
17683        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
17684        /// One per event, index into |intern_table| corresponding to the
17685        /// comm field of the event.
17686        #[prost(uint32, repeated, tag="11")]
17687        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
17688        #[prost(uint32, repeated, tag="12")]
17689        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
17690    }
17691    /// Errors encountered during parsing of the raw ftrace data. In case of ring
17692    /// buffer layout errors, the parser skips the rest of the offending kernel
17693    /// buffer page and continues from the next page.
17694    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
17695    /// seen within the duration of the trace (even if the affected bundles get
17696    /// overwritten in ring buffer mode).
17697    #[derive(Clone, PartialEq, ::prost::Message)]
17698    pub struct FtraceError {
17699        /// Timestamp of the data that we're unable to parse, in the ftrace clock
17700        /// domain. Currently, we use the base timestamp of the tracing page
17701        /// containing the bad record rather than the time of the record itself.
17702        #[prost(uint64, optional, tag="1")]
17703        pub timestamp: ::core::option::Option<u64>,
17704        #[prost(enumeration="super::FtraceParseStatus", optional, tag="2")]
17705        pub status: ::core::option::Option<i32>,
17706    }
17707    /// Describes the serialised |FtraceEvent| protos for events not known at
17708    /// compile time, when using the |denser_generic_event_encoding| option.
17709    /// Addded in: perfetto v50.
17710    #[derive(Clone, PartialEq, ::prost::Message)]
17711    pub struct GenericEventDescriptor {
17712        /// submessage id within FtraceEvent described by |event_descriptor|.
17713        #[prost(int32, optional, tag="1")]
17714        pub field_id: ::core::option::Option<i32>,
17715        /// optional: the event's group, e.g. "sched" for "sched/sched_switch".
17716        /// The event name itself is in |event_descriptor.name|.
17717        #[prost(string, optional, tag="3")]
17718        pub group_name: ::core::option::Option<::prost::alloc::string::String>,
17719        /// serialised DescriptorProto.
17720        #[prost(bytes="vec", optional, tag="2")]
17721        pub event_descriptor: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
17722    }
17723}
17724// End of protos/perfetto/trace/ftrace/ftrace_event_bundle.proto
17725
17726// Begin of protos/perfetto/trace/generic_kernel/generic_power.proto
17727
17728/// GenericKernelCpuFrequencyEvent is the standard proto to capture CPU
17729/// frequency change events in a generic kernel implementation.
17730#[derive(Clone, PartialEq, ::prost::Message)]
17731pub struct GenericKernelCpuFrequencyEvent {
17732    /// CPU in which the event occurred.
17733    #[prost(int32, optional, tag="1")]
17734    pub cpu: ::core::option::Option<i32>,
17735    /// Frequency (Hz) of the CPU.
17736    #[prost(int64, optional, tag="2")]
17737    pub freq_hz: ::core::option::Option<i64>,
17738}
17739// End of protos/perfetto/trace/generic_kernel/generic_power.proto
17740
17741// Begin of protos/perfetto/trace/generic_kernel/generic_task.proto
17742
17743/// GenericKernelTaskStateEvent is the standard proto to capture thread state
17744/// change events in a generic kernel implementation. This is mainly for the
17745/// case where scheduler events are not directly supported in the kernel's
17746/// tracing mechanism.
17747///
17748/// By capturing these task state events Perfetto is able to infer higher-level
17749/// events such as context switches and task waking events, providing as much
17750/// parity as possible with established tracing frameworks such as
17751/// Linux's ftrace.
17752#[derive(Clone, PartialEq, ::prost::Message)]
17753pub struct GenericKernelTaskStateEvent {
17754    /// CPU in which the event occurred.
17755    /// This field is only relevant with the TASK_STATE_RUNNING state. There is
17756    /// no specific meaning to the cpu field in a non-running state event.
17757    #[prost(int32, optional, tag="1")]
17758    pub cpu: ::core::option::Option<i32>,
17759    /// Command name for the thread.
17760    #[prost(string, optional, tag="2")]
17761    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17762    /// Thread id.
17763    #[prost(int64, optional, tag="3")]
17764    pub tid: ::core::option::Option<i64>,
17765    /// New state of the thread.
17766    #[prost(enumeration="generic_kernel_task_state_event::TaskStateEnum", optional, tag="4")]
17767    pub state: ::core::option::Option<i32>,
17768    /// Priority of the thread.
17769    /// This value is OS agnostic and should only be interpreted based on the
17770    /// kernel who emitted the message.
17771    #[prost(int32, optional, tag="5")]
17772    pub prio: ::core::option::Option<i32>,
17773}
17774/// Nested message and enum types in `GenericKernelTaskStateEvent`.
17775pub mod generic_kernel_task_state_event {
17776    /// TaskStateEnum represents the valid states of a thread.
17777    /// These states are a generic representation of the actual thread state and
17778    /// don't necessarily map one-to-one to the states the actual OS kernel
17779    /// tracks internally.
17780    ///
17781    /// Note: Consecutive TASK_STATE_RUNNING states for the same TID is considered
17782    /// an error resulting in potential data loss.
17783    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17784    #[repr(i32)]
17785    pub enum TaskStateEnum {
17786        TaskStateUnknown = 0,
17787        TaskStateCreated = 1,
17788        TaskStateRunnable = 2,
17789        TaskStateRunning = 3,
17790        TaskStateInterruptibleSleep = 4,
17791        TaskStateUninterruptibleSleep = 5,
17792        TaskStateStopped = 6,
17793        TaskStateDead = 7,
17794        TaskStateDestroyed = 8,
17795    }
17796    impl TaskStateEnum {
17797        /// String value of the enum field names used in the ProtoBuf definition.
17798        ///
17799        /// The values are not transformed in any way and thus are considered stable
17800        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17801        pub fn as_str_name(&self) -> &'static str {
17802            match self {
17803                TaskStateEnum::TaskStateUnknown => "TASK_STATE_UNKNOWN",
17804                TaskStateEnum::TaskStateCreated => "TASK_STATE_CREATED",
17805                TaskStateEnum::TaskStateRunnable => "TASK_STATE_RUNNABLE",
17806                TaskStateEnum::TaskStateRunning => "TASK_STATE_RUNNING",
17807                TaskStateEnum::TaskStateInterruptibleSleep => "TASK_STATE_INTERRUPTIBLE_SLEEP",
17808                TaskStateEnum::TaskStateUninterruptibleSleep => "TASK_STATE_UNINTERRUPTIBLE_SLEEP",
17809                TaskStateEnum::TaskStateStopped => "TASK_STATE_STOPPED",
17810                TaskStateEnum::TaskStateDead => "TASK_STATE_DEAD",
17811                TaskStateEnum::TaskStateDestroyed => "TASK_STATE_DESTROYED",
17812            }
17813        }
17814    }
17815}
17816/// GenericKernelTaskRenameEvent is the standard proto to capture the renaming
17817/// of a thread.
17818#[derive(Clone, PartialEq, ::prost::Message)]
17819pub struct GenericKernelTaskRenameEvent {
17820    /// Thread id.
17821    #[prost(int64, optional, tag="1")]
17822    pub tid: ::core::option::Option<i64>,
17823    /// New command name for the thread.
17824    #[prost(string, optional, tag="2")]
17825    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17826}
17827/// Metadata about the processes and threads in the trace.
17828/// The main goal of this proto is to provide a generic kernel
17829/// implementation a mechanism to outline its process structure.
17830#[derive(Clone, PartialEq, ::prost::Message)]
17831pub struct GenericKernelProcessTree {
17832    /// List of processes and threads in the kernel. These lists are incremental
17833    /// and not exhaustive. A process and its threads might show up separately in
17834    /// different ProcessTree messages. A thread might not show up at all, if
17835    /// no sched switch activity was detected, for instance:
17836    /// #0 { processes: [{pid: 10, ...}], threads: [{tid: 11, pid: 10}] }
17837    /// #1 { threads: [{tid: 12, pid: 10}] }
17838    /// #2 { processes: [{pid: 20, ...}], threads: [{tid: 13, pid: 10}] }
17839    #[prost(message, repeated, tag="1")]
17840    pub processes: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Process>,
17841    #[prost(message, repeated, tag="2")]
17842    pub threads: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Thread>,
17843}
17844/// Nested message and enum types in `GenericKernelProcessTree`.
17845pub mod generic_kernel_process_tree {
17846    /// Representation of a thread.
17847    #[derive(Clone, PartialEq, ::prost::Message)]
17848    pub struct Thread {
17849        /// Thread id.
17850        #[prost(int64, optional, tag="1")]
17851        pub tid: ::core::option::Option<i64>,
17852        /// Id of the parent process.
17853        #[prost(int64, optional, tag="2")]
17854        pub pid: ::core::option::Option<i64>,
17855        /// The command name of the thread.
17856        #[prost(string, optional, tag="3")]
17857        pub comm: ::core::option::Option<::prost::alloc::string::String>,
17858        /// True if thread is the main thread.
17859        #[prost(bool, optional, tag="4")]
17860        pub is_main_thread: ::core::option::Option<bool>,
17861    }
17862    /// Representation of a process.
17863    #[derive(Clone, PartialEq, ::prost::Message)]
17864    pub struct Process {
17865        /// Process id.
17866        #[prost(int64, optional, tag="1")]
17867        pub pid: ::core::option::Option<i64>,
17868        /// Parent process id.
17869        #[prost(int64, optional, tag="2")]
17870        pub ppid: ::core::option::Option<i64>,
17871        /// The command line of the process.
17872        /// If the cmdline has spaces in it, then we use the characters from
17873        /// position 0 to the first instance of the space char (' ') as the name
17874        /// of the process. If no spaces are present, then the entire cmdline is
17875        /// used as the name.
17876        #[prost(string, optional, tag="3")]
17877        pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
17878    }
17879}
17880// End of protos/perfetto/trace/generic_kernel/generic_task.proto
17881
17882// Begin of protos/perfetto/trace/gpu/gpu_counter_event.proto
17883
17884#[derive(Clone, PartialEq, ::prost::Message)]
17885pub struct GpuCounterEvent {
17886    /// The first trace packet of each session should include counter_spec.
17887    #[prost(message, optional, tag="1")]
17888    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
17889    #[prost(message, repeated, tag="2")]
17890    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
17891    /// optional. Identifier for GPU in a multi-gpu device.
17892    #[prost(int32, optional, tag="3")]
17893    pub gpu_id: ::core::option::Option<i32>,
17894}
17895/// Nested message and enum types in `GpuCounterEvent`.
17896pub mod gpu_counter_event {
17897    #[derive(Clone, PartialEq, ::prost::Message)]
17898    pub struct GpuCounter {
17899        /// required. Identifier for counter.
17900        #[prost(uint32, optional, tag="1")]
17901        pub counter_id: ::core::option::Option<u32>,
17902        /// required. Value of the counter.
17903        #[prost(oneof="gpu_counter::Value", tags="2, 3")]
17904        pub value: ::core::option::Option<gpu_counter::Value>,
17905    }
17906    /// Nested message and enum types in `GpuCounter`.
17907    pub mod gpu_counter {
17908        /// required. Value of the counter.
17909        #[derive(Clone, PartialEq, ::prost::Oneof)]
17910        pub enum Value {
17911            #[prost(int64, tag="2")]
17912            IntValue(i64),
17913            #[prost(double, tag="3")]
17914            DoubleValue(f64),
17915        }
17916    }
17917}
17918// End of protos/perfetto/trace/gpu/gpu_counter_event.proto
17919
17920// Begin of protos/perfetto/trace/gpu/gpu_log.proto
17921
17922/// Message for logging events GPU data producer.
17923#[derive(Clone, PartialEq, ::prost::Message)]
17924pub struct GpuLog {
17925    #[prost(enumeration="gpu_log::Severity", optional, tag="1")]
17926    pub severity: ::core::option::Option<i32>,
17927    #[prost(string, optional, tag="2")]
17928    pub tag: ::core::option::Option<::prost::alloc::string::String>,
17929    #[prost(string, optional, tag="3")]
17930    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
17931}
17932/// Nested message and enum types in `GpuLog`.
17933pub mod gpu_log {
17934    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
17935    #[repr(i32)]
17936    pub enum Severity {
17937        LogSeverityUnspecified = 0,
17938        LogSeverityVerbose = 1,
17939        LogSeverityDebug = 2,
17940        LogSeverityInfo = 3,
17941        LogSeverityWarning = 4,
17942        LogSeverityError = 5,
17943    }
17944    impl Severity {
17945        /// String value of the enum field names used in the ProtoBuf definition.
17946        ///
17947        /// The values are not transformed in any way and thus are considered stable
17948        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17949        pub fn as_str_name(&self) -> &'static str {
17950            match self {
17951                Severity::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
17952                Severity::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
17953                Severity::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
17954                Severity::LogSeverityInfo => "LOG_SEVERITY_INFO",
17955                Severity::LogSeverityWarning => "LOG_SEVERITY_WARNING",
17956                Severity::LogSeverityError => "LOG_SEVERITY_ERROR",
17957            }
17958        }
17959    }
17960}
17961// End of protos/perfetto/trace/gpu/gpu_log.proto
17962
17963// Begin of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
17964
17965/// next id: 15
17966#[derive(Clone, PartialEq, ::prost::Message)]
17967pub struct GpuRenderStageEvent {
17968    /// required. Unique ID for the event.
17969    #[prost(uint64, optional, tag="1")]
17970    pub event_id: ::core::option::Option<u64>,
17971    /// optional. Duration of the event in nanoseconds. If unset, this is a
17972    /// single time point event.
17973    #[prost(uint64, optional, tag="2")]
17974    pub duration: ::core::option::Option<u64>,
17975    /// required. ID to a hardware queue description in the specifications.
17976    /// InternedGpuRenderStageSpecification
17977    #[prost(uint64, optional, tag="13")]
17978    pub hw_queue_iid: ::core::option::Option<u64>,
17979    /// required. ID to a render stage description in the specifications.
17980    /// InternedGpuRenderStageSpecification
17981    #[prost(uint64, optional, tag="14")]
17982    pub stage_iid: ::core::option::Option<u64>,
17983    /// optional. Identifier for GPU in a multi-gpu device.
17984    #[prost(int32, optional, tag="11")]
17985    pub gpu_id: ::core::option::Option<i32>,
17986    /// required. Graphics context for the event.
17987    /// For OpenGL, this is the GL context.
17988    /// For Vulkan, this is the VkDevice.
17989    #[prost(uint64, optional, tag="5")]
17990    pub context: ::core::option::Option<u64>,
17991    /// optional. The render target for this event.
17992    /// For OpenGL, this is the GL frame buffer handle.
17993    /// For Vulkan, this is the VkFrameBuffer handle.
17994    #[prost(uint64, optional, tag="8")]
17995    pub render_target_handle: ::core::option::Option<u64>,
17996    /// optional. Submission ID generated by the UMD.
17997    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
17998    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
17999    /// to a single API submission should share the same ID.
18000    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
18001    #[prost(uint32, optional, tag="10")]
18002    pub submission_id: ::core::option::Option<u32>,
18003    #[prost(message, repeated, tag="6")]
18004    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
18005    // VULKAN SPECIFICS
18006
18007    /// optional. The Vulkan render pass handle.
18008    #[prost(uint64, optional, tag="9")]
18009    pub render_pass_handle: ::core::option::Option<u64>,
18010    /// optional. An ID for the render pass instance. This is used to correlate
18011    /// different events on different queues produced by the same Vulkan render
18012    /// pass instance.
18013    #[prost(uint64, optional, tag="16")]
18014    pub render_pass_instance_id: ::core::option::Option<u64>,
18015    /// optional. A bit mask representing which render subpasses contributed to
18016    /// this render stage event.  Subpass index 0 is represented by setting the
18017    /// LSB of the mask.  Additional mask can be added for subpass index greater
18018    /// than 63.
18019    #[prost(uint64, repeated, packed="false", tag="15")]
18020    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
18021    /// optional. The Vulkan command buffer handle.
18022    #[prost(uint64, optional, tag="12")]
18023    pub command_buffer_handle: ::core::option::Option<u64>,
18024    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
18025    /// InternedGpuRenderStageSpecification instead.
18026    #[deprecated]
18027    #[prost(message, optional, tag="7")]
18028    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
18029    /// Deprecated. Use hw_queue_iid instead;
18030    #[deprecated]
18031    #[prost(int32, optional, tag="3")]
18032    pub hw_queue_id: ::core::option::Option<i32>,
18033    /// Deprecated. Use stage_iid instead;
18034    #[deprecated]
18035    #[prost(int32, optional, tag="4")]
18036    pub stage_id: ::core::option::Option<i32>,
18037}
18038/// Nested message and enum types in `GpuRenderStageEvent`.
18039pub mod gpu_render_stage_event {
18040    /// optional. Additional data for the user. This may include attributes for
18041    /// the event like resource ids, shaders, etc.
18042    #[derive(Clone, PartialEq, ::prost::Message)]
18043    pub struct ExtraData {
18044        #[prost(string, optional, tag="1")]
18045        pub name: ::core::option::Option<::prost::alloc::string::String>,
18046        #[prost(string, optional, tag="2")]
18047        pub value: ::core::option::Option<::prost::alloc::string::String>,
18048    }
18049    // DEPRECATED
18050
18051    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
18052    /// The first trace packet of each session should include a Specifications
18053    /// to enumerate *all* IDs that will be used. The timestamp of this packet
18054    /// must be earlier than all other packets. Only one packet with Specifications
18055    /// is expected.
18056    #[derive(Clone, PartialEq, ::prost::Message)]
18057    pub struct Specifications {
18058        #[prost(message, optional, tag="1")]
18059        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
18060        /// Labels to categorize the hw Queue this event goes on.
18061        #[prost(message, repeated, tag="2")]
18062        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
18063        /// Labels to categorize render stage(binning, render, compute etc).
18064        #[prost(message, repeated, tag="3")]
18065        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
18066    }
18067    /// Nested message and enum types in `Specifications`.
18068    pub mod specifications {
18069        #[derive(Clone, PartialEq, ::prost::Message)]
18070        pub struct ContextSpec {
18071            #[prost(uint64, optional, tag="1")]
18072            pub context: ::core::option::Option<u64>,
18073            #[prost(int32, optional, tag="2")]
18074            pub pid: ::core::option::Option<i32>,
18075        }
18076        #[derive(Clone, PartialEq, ::prost::Message)]
18077        pub struct Description {
18078            #[prost(string, optional, tag="1")]
18079            pub name: ::core::option::Option<::prost::alloc::string::String>,
18080            #[prost(string, optional, tag="2")]
18081            pub description: ::core::option::Option<::prost::alloc::string::String>,
18082        }
18083    }
18084}
18085// Interned data.
18086
18087/// The iid is the numeric value of either the GL Context or the VkDevice
18088/// handle.
18089#[derive(Clone, PartialEq, ::prost::Message)]
18090pub struct InternedGraphicsContext {
18091    #[prost(uint64, optional, tag="1")]
18092    pub iid: ::core::option::Option<u64>,
18093    #[prost(int32, optional, tag="2")]
18094    pub pid: ::core::option::Option<i32>,
18095    #[prost(enumeration="interned_graphics_context::Api", optional, tag="3")]
18096    pub api: ::core::option::Option<i32>,
18097}
18098/// Nested message and enum types in `InternedGraphicsContext`.
18099pub mod interned_graphics_context {
18100    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18101    #[repr(i32)]
18102    pub enum Api {
18103        Undefined = 0,
18104        OpenGl = 1,
18105        Vulkan = 2,
18106        OpenCl = 3,
18107    }
18108    impl Api {
18109        /// String value of the enum field names used in the ProtoBuf definition.
18110        ///
18111        /// The values are not transformed in any way and thus are considered stable
18112        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18113        pub fn as_str_name(&self) -> &'static str {
18114            match self {
18115                Api::Undefined => "UNDEFINED",
18116                Api::OpenGl => "OPEN_GL",
18117                Api::Vulkan => "VULKAN",
18118                Api::OpenCl => "OPEN_CL",
18119            }
18120        }
18121    }
18122}
18123#[derive(Clone, PartialEq, ::prost::Message)]
18124pub struct InternedGpuRenderStageSpecification {
18125    #[prost(uint64, optional, tag="1")]
18126    pub iid: ::core::option::Option<u64>,
18127    #[prost(string, optional, tag="2")]
18128    pub name: ::core::option::Option<::prost::alloc::string::String>,
18129    #[prost(string, optional, tag="3")]
18130    pub description: ::core::option::Option<::prost::alloc::string::String>,
18131    #[prost(enumeration="interned_gpu_render_stage_specification::RenderStageCategory", optional, tag="4")]
18132    pub category: ::core::option::Option<i32>,
18133}
18134/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
18135pub mod interned_gpu_render_stage_specification {
18136    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18137    #[repr(i32)]
18138    pub enum RenderStageCategory {
18139        Other = 0,
18140        Graphics = 1,
18141        Compute = 2,
18142    }
18143    impl RenderStageCategory {
18144        /// String value of the enum field names used in the ProtoBuf definition.
18145        ///
18146        /// The values are not transformed in any way and thus are considered stable
18147        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18148        pub fn as_str_name(&self) -> &'static str {
18149            match self {
18150                RenderStageCategory::Other => "OTHER",
18151                RenderStageCategory::Graphics => "GRAPHICS",
18152                RenderStageCategory::Compute => "COMPUTE",
18153            }
18154        }
18155    }
18156}
18157// End of protos/perfetto/trace/gpu/gpu_render_stage_event.proto
18158
18159// Begin of protos/perfetto/trace/gpu/vulkan_api_event.proto
18160
18161/// Message for recording the Vulkan call.
18162#[derive(Clone, PartialEq, ::prost::Message)]
18163pub struct VulkanApiEvent {
18164    #[prost(oneof="vulkan_api_event::Event", tags="1, 2")]
18165    pub event: ::core::option::Option<vulkan_api_event::Event>,
18166}
18167/// Nested message and enum types in `VulkanApiEvent`.
18168pub mod vulkan_api_event {
18169    /// For recording vkSetDebugUtilsObjectNameEXT and
18170    /// vkDebugMarkerSetObjectNameEXT
18171    #[derive(Clone, PartialEq, ::prost::Message)]
18172    pub struct VkDebugUtilsObjectName {
18173        #[prost(uint32, optional, tag="1")]
18174        pub pid: ::core::option::Option<u32>,
18175        #[prost(uint64, optional, tag="2")]
18176        pub vk_device: ::core::option::Option<u64>,
18177        /// VkObjectType.  Value must match
18178        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
18179        #[prost(int32, optional, tag="3")]
18180        pub object_type: ::core::option::Option<i32>,
18181        #[prost(uint64, optional, tag="4")]
18182        pub object: ::core::option::Option<u64>,
18183        #[prost(string, optional, tag="5")]
18184        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
18185    }
18186    /// For recording vkQueueSubmit call.
18187    #[derive(Clone, PartialEq, ::prost::Message)]
18188    pub struct VkQueueSubmit {
18189        #[prost(uint64, optional, tag="1")]
18190        pub duration_ns: ::core::option::Option<u64>,
18191        #[prost(uint32, optional, tag="2")]
18192        pub pid: ::core::option::Option<u32>,
18193        #[prost(uint32, optional, tag="3")]
18194        pub tid: ::core::option::Option<u32>,
18195        #[prost(uint64, optional, tag="4")]
18196        pub vk_queue: ::core::option::Option<u64>,
18197        #[prost(uint64, repeated, packed="false", tag="5")]
18198        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
18199        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
18200        /// submission_id must match GpuRenderStageEvent.submission_id if the
18201        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
18202        #[prost(uint32, optional, tag="6")]
18203        pub submission_id: ::core::option::Option<u32>,
18204    }
18205    #[derive(Clone, PartialEq, ::prost::Oneof)]
18206    pub enum Event {
18207        #[prost(message, tag="1")]
18208        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
18209        #[prost(message, tag="2")]
18210        VkQueueSubmit(VkQueueSubmit),
18211    }
18212}
18213// End of protos/perfetto/trace/gpu/vulkan_api_event.proto
18214
18215// Begin of protos/perfetto/trace/gpu/vulkan_memory_event.proto
18216
18217/// All the information that cannot be sent within a VulkanMemoryEvent message,
18218/// are sent as annotations to the main memory event. One example is the
18219/// properties of the object that consumes the allocated memory, for example, a
18220/// buffer or an image.
18221/// key_iid and string_iid are both interned strings. Original string value is
18222/// stored in vulkan_memory_keys from
18223/// protos/perfetto/trace/interned_data/interned_data.proto.
18224#[derive(Clone, PartialEq, ::prost::Message)]
18225pub struct VulkanMemoryEventAnnotation {
18226    #[prost(uint64, optional, tag="1")]
18227    pub key_iid: ::core::option::Option<u64>,
18228    #[prost(oneof="vulkan_memory_event_annotation::Value", tags="2, 3, 4")]
18229    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
18230}
18231/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
18232pub mod vulkan_memory_event_annotation {
18233    #[derive(Clone, PartialEq, ::prost::Oneof)]
18234    pub enum Value {
18235        #[prost(int64, tag="2")]
18236        IntValue(i64),
18237        #[prost(double, tag="3")]
18238        DoubleValue(f64),
18239        #[prost(uint64, tag="4")]
18240        StringIid(u64),
18241    }
18242}
18243/// Each VulkanMemoryEvent encompasses information regarding one single function
18244/// call that results in reserving, binding or freeing host or GPU memory. There
18245/// is a special message type, ANNOTATIONS, which is used to communicate
18246/// information that are not directly related to a memory event, nonetheless are
18247/// essential to understand the memory usage. An example is the size and memory
18248/// types of the memory heaps.
18249///
18250/// Next reserved id: 10 (up to 15).
18251/// Next id: 21.
18252#[derive(Clone, PartialEq, ::prost::Message)]
18253pub struct VulkanMemoryEvent {
18254    #[prost(enumeration="vulkan_memory_event::Source", optional, tag="1")]
18255    pub source: ::core::option::Option<i32>,
18256    #[prost(enumeration="vulkan_memory_event::Operation", optional, tag="2")]
18257    pub operation: ::core::option::Option<i32>,
18258    #[prost(int64, optional, tag="3")]
18259    pub timestamp: ::core::option::Option<i64>,
18260    #[prost(uint32, optional, tag="4")]
18261    pub pid: ::core::option::Option<u32>,
18262    #[prost(fixed64, optional, tag="5")]
18263    pub memory_address: ::core::option::Option<u64>,
18264    #[prost(uint64, optional, tag="6")]
18265    pub memory_size: ::core::option::Option<u64>,
18266    /// Interned string. Original string value is stored in function_names from
18267    /// protos/perfetto/trace/interned_data/interned_data.proto.
18268    #[prost(uint64, optional, tag="7")]
18269    pub caller_iid: ::core::option::Option<u64>,
18270    #[prost(enumeration="vulkan_memory_event::AllocationScope", optional, tag="8")]
18271    pub allocation_scope: ::core::option::Option<i32>,
18272    /// Extra related information, e.g., create configs, etc.
18273    #[prost(message, repeated, tag="9")]
18274    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
18275    /// Field IDs used for device memory (low sampling rate)
18276    #[prost(fixed64, optional, tag="16")]
18277    pub device: ::core::option::Option<u64>,
18278    #[prost(fixed64, optional, tag="17")]
18279    pub device_memory: ::core::option::Option<u64>,
18280    #[prost(uint32, optional, tag="18")]
18281    pub memory_type: ::core::option::Option<u32>,
18282    #[prost(uint32, optional, tag="19")]
18283    pub heap: ::core::option::Option<u32>,
18284    #[prost(fixed64, optional, tag="20")]
18285    pub object_handle: ::core::option::Option<u64>,
18286}
18287/// Nested message and enum types in `VulkanMemoryEvent`.
18288pub mod vulkan_memory_event {
18289    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18290    #[repr(i32)]
18291    pub enum Source {
18292        Unspecified = 0,
18293        Driver = 1,
18294        Device = 2,
18295        DeviceMemory = 3,
18296        Buffer = 4,
18297        Image = 5,
18298    }
18299    impl Source {
18300        /// String value of the enum field names used in the ProtoBuf definition.
18301        ///
18302        /// The values are not transformed in any way and thus are considered stable
18303        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18304        pub fn as_str_name(&self) -> &'static str {
18305            match self {
18306                Source::Unspecified => "SOURCE_UNSPECIFIED",
18307                Source::Driver => "SOURCE_DRIVER",
18308                Source::Device => "SOURCE_DEVICE",
18309                Source::DeviceMemory => "SOURCE_DEVICE_MEMORY",
18310                Source::Buffer => "SOURCE_BUFFER",
18311                Source::Image => "SOURCE_IMAGE",
18312            }
18313        }
18314    }
18315    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18316    #[repr(i32)]
18317    pub enum Operation {
18318        OpUnspecified = 0,
18319        /// alloc, create
18320        OpCreate = 1,
18321        /// free, destroy(non-bound)
18322        OpDestroy = 2,
18323        /// bind buffer and image
18324        OpBind = 3,
18325        /// destroy (bound)
18326        OpDestroyBound = 4,
18327        /// only annotations
18328        OpAnnotations = 5,
18329    }
18330    impl Operation {
18331        /// String value of the enum field names used in the ProtoBuf definition.
18332        ///
18333        /// The values are not transformed in any way and thus are considered stable
18334        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18335        pub fn as_str_name(&self) -> &'static str {
18336            match self {
18337                Operation::OpUnspecified => "OP_UNSPECIFIED",
18338                Operation::OpCreate => "OP_CREATE",
18339                Operation::OpDestroy => "OP_DESTROY",
18340                Operation::OpBind => "OP_BIND",
18341                Operation::OpDestroyBound => "OP_DESTROY_BOUND",
18342                Operation::OpAnnotations => "OP_ANNOTATIONS",
18343            }
18344        }
18345    }
18346    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18347    #[repr(i32)]
18348    pub enum AllocationScope {
18349        ScopeUnspecified = 0,
18350        ScopeCommand = 1,
18351        ScopeObject = 2,
18352        ScopeCache = 3,
18353        ScopeDevice = 4,
18354        ScopeInstance = 5,
18355    }
18356    impl AllocationScope {
18357        /// String value of the enum field names used in the ProtoBuf definition.
18358        ///
18359        /// The values are not transformed in any way and thus are considered stable
18360        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18361        pub fn as_str_name(&self) -> &'static str {
18362            match self {
18363                AllocationScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
18364                AllocationScope::ScopeCommand => "SCOPE_COMMAND",
18365                AllocationScope::ScopeObject => "SCOPE_OBJECT",
18366                AllocationScope::ScopeCache => "SCOPE_CACHE",
18367                AllocationScope::ScopeDevice => "SCOPE_DEVICE",
18368                AllocationScope::ScopeInstance => "SCOPE_INSTANCE",
18369            }
18370        }
18371    }
18372}
18373// End of protos/perfetto/trace/gpu/vulkan_memory_event.proto
18374
18375// Begin of protos/perfetto/trace/profiling/profile_common.proto
18376
18377/// The interning fields in this file can refer to 2 different intern tables,
18378/// depending on the message they are used in. If the interned fields are present
18379/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
18380/// should be used. If the intered fields are present in the
18381/// StreamingProfilePacket proto, then the intern tables included in all of the
18382/// previous InternedData message with same sequence ID should be used.
18383/// TODO(fmayer): Move to the intern tables to a common location.
18384#[derive(Clone, PartialEq, ::prost::Message)]
18385pub struct InternedString {
18386    /// Interning key. Starts from 1, 0 is the same as "not set".
18387    #[prost(uint64, optional, tag="1")]
18388    pub iid: ::core::option::Option<u64>,
18389    /// The actual string.
18390    #[prost(bytes="vec", optional, tag="2")]
18391    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18392}
18393/// Source line info.
18394#[derive(Clone, PartialEq, ::prost::Message)]
18395pub struct Line {
18396    #[prost(string, optional, tag="1")]
18397    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
18398    #[prost(string, optional, tag="2")]
18399    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
18400    #[prost(uint32, optional, tag="3")]
18401    pub line_number: ::core::option::Option<u32>,
18402}
18403/// Symbols for a given address in a module.
18404#[derive(Clone, PartialEq, ::prost::Message)]
18405pub struct AddressSymbols {
18406    #[prost(uint64, optional, tag="1")]
18407    pub address: ::core::option::Option<u64>,
18408    /// Source lines that correspond to this address.
18409    ///
18410    /// These are repeated because when inlining happens, multiple functions'
18411    /// frames can be at a single address. Imagine function Foo calling the
18412    /// std::vector<int> constructor, which gets inlined at 0xf00. We then get
18413    /// both Foo and the std::vector<int> constructor when we symbolize the
18414    /// address.
18415    #[prost(message, repeated, tag="2")]
18416    pub lines: ::prost::alloc::vec::Vec<Line>,
18417}
18418/// Symbols for addresses seen in a module.
18419/// Used in re-symbolisation of complete traces.
18420#[derive(Clone, PartialEq, ::prost::Message)]
18421pub struct ModuleSymbols {
18422    /// Fully qualified path to the mapping.
18423    /// E.g. /system/lib64/libc.so.
18424    #[prost(string, optional, tag="1")]
18425    pub path: ::core::option::Option<::prost::alloc::string::String>,
18426    /// .note.gnu.build-id on Linux (not hex encoded).
18427    /// uuid on MacOS.
18428    /// Module GUID on Windows.
18429    #[prost(string, optional, tag="2")]
18430    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
18431    #[prost(message, repeated, tag="3")]
18432    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
18433}
18434#[derive(Clone, PartialEq, ::prost::Message)]
18435pub struct Mapping {
18436    /// Interning key.
18437    /// Starts from 1, 0 is the same as "not set".
18438    #[prost(uint64, optional, tag="1")]
18439    pub iid: ::core::option::Option<u64>,
18440    /// Interning key.
18441    /// Starts from 1, 0 is the same as "not set".
18442    #[prost(uint64, optional, tag="2")]
18443    pub build_id: ::core::option::Option<u64>,
18444    // The linker may create multiple memory mappings for the same shared
18445    // library.
18446    // This is so that the ELF header is mapped as read only, while the
18447    // executable memory is mapped as executable only.
18448    // The details of this depend on the linker, a possible mapping of an ELF
18449    // file is this:
18450    //          +----------------------+
18451    // ELF     |xxxxxxxxxyyyyyyyyyyyyy|
18452    //          +---------+------------+
18453    //          |         |
18454    //          | read    | executable
18455    //          v mapping v mapping
18456    //          +----------------------+
18457    // Memory  |xxxxxxxxx|yyyyyyyyyyyy|
18458    //          +------------------+---+
18459    //          ^         ^        ^
18460    //          +         +        +
18461    //        start     exact    relpc
18462    //        offset   offset    0x1800
18463    //        0x0000   0x1000
18464    //
18465    // exact_offset is the offset into the library file of this mapping.
18466    // start_offset is the offset into the library file of the first mapping
18467    // for that library. For native libraries (.so files) this should be 0.
18468
18469    /// This is not set on Android 10.
18470    #[prost(uint64, optional, tag="8")]
18471    pub exact_offset: ::core::option::Option<u64>,
18472    #[prost(uint64, optional, tag="3")]
18473    pub start_offset: ::core::option::Option<u64>,
18474    #[prost(uint64, optional, tag="4")]
18475    pub start: ::core::option::Option<u64>,
18476    #[prost(uint64, optional, tag="5")]
18477    pub end: ::core::option::Option<u64>,
18478    /// Libunwindstack-specific concept, not to be confused with bionic linker's
18479    /// notion of load_bias. Needed to correct relative pc addresses (as produced
18480    /// by libunwindstack) when doing offline resymbolisation.
18481    ///
18482    /// For an executable ELF PT_LOAD segment, this is:
18483    ///    p_vaddr - p_offset
18484    ///
18485    /// Where p_offset means that the code is at that offset into the ELF file on
18486    /// disk. While p_vaddr is the offset at which the code gets *mapped*, relative
18487    /// to where the linker loads the ELF into the address space. For most ELFs,
18488    /// the two values are identical and therefore load_bias is zero.
18489    #[prost(uint64, optional, tag="6")]
18490    pub load_bias: ::core::option::Option<u64>,
18491    /// E.g. ["system", "lib64", "libc.so"]
18492    /// id of string.
18493    #[prost(uint64, repeated, packed="false", tag="7")]
18494    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
18495}
18496#[derive(Clone, PartialEq, ::prost::Message)]
18497pub struct Frame {
18498    /// Interning key. Starts from 1, 0 is the same as "not set".
18499    #[prost(uint64, optional, tag="1")]
18500    pub iid: ::core::option::Option<u64>,
18501    /// E.g. "fopen"
18502    /// id of string.
18503    #[prost(uint64, optional, tag="2")]
18504    pub function_name_id: ::core::option::Option<u64>,
18505    /// The mapping in which this frame's instruction pointer resides.
18506    /// iid of Mapping.iid.
18507    ///
18508    /// If set (non-zero), rel_pc MUST also be set. If mapping_id is 0 (not set),
18509    /// this frame has no associated memory mapping (e.g., symbolized frames
18510    /// without address information).
18511    ///
18512    /// Starts from 1, 0 is the same as "not set".
18513    #[prost(uint64, optional, tag="3")]
18514    pub mapping_id: ::core::option::Option<u64>,
18515    /// Instruction pointer relative to the start of the mapping.
18516    /// MUST be set if mapping_id is set (non-zero). Ignored if mapping_id is 0.
18517    #[prost(uint64, optional, tag="4")]
18518    pub rel_pc: ::core::option::Option<u64>,
18519    /// Source file path for this frame.
18520    /// This is typically set during online symbolization when symbol information
18521    /// is available at trace collection time. If not set, source file paths may be
18522    /// added later via offline symbolization (see ModuleSymbols).
18523    ///
18524    /// Starts from 1, 0 is the same as "not set".
18525    ///
18526    /// iid of InternedData.source_paths.
18527    #[prost(uint64, optional, tag="5")]
18528    pub source_path_iid: ::core::option::Option<u64>,
18529    /// Line number in the source file for this frame.
18530    /// This is typically set during online symbolization when symbol information
18531    /// is available at trace collection time. If not set, line numbers may be
18532    /// added later via offline symbolization (see ModuleSymbols).
18533    #[prost(uint32, optional, tag="6")]
18534    pub line_number: ::core::option::Option<u32>,
18535}
18536#[derive(Clone, PartialEq, ::prost::Message)]
18537pub struct Callstack {
18538    /// Interning key. Starts from 1, 0 is the same as "not set".
18539    #[prost(uint64, optional, tag="1")]
18540    pub iid: ::core::option::Option<u64>,
18541    /// Frames of this callstack. Bottom frame first.
18542    #[prost(uint64, repeated, packed="false", tag="2")]
18543    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
18544}
18545// End of protos/perfetto/trace/profiling/profile_common.proto
18546
18547// Begin of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
18548
18549#[derive(Clone, PartialEq, ::prost::Message)]
18550pub struct HistogramName {
18551    #[prost(uint64, optional, tag="1")]
18552    pub iid: ::core::option::Option<u64>,
18553    #[prost(string, optional, tag="2")]
18554    pub name: ::core::option::Option<::prost::alloc::string::String>,
18555}
18556/// An individual histogram sample logged via Chrome's UMA metrics system.
18557#[derive(Clone, PartialEq, ::prost::Message)]
18558pub struct ChromeHistogramSample {
18559    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
18560    /// both must be present.
18561    #[prost(uint64, optional, tag="1")]
18562    pub name_hash: ::core::option::Option<u64>,
18563    #[prost(string, optional, tag="2")]
18564    pub name: ::core::option::Option<::prost::alloc::string::String>,
18565    #[prost(int64, optional, tag="3")]
18566    pub sample: ::core::option::Option<i64>,
18567    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
18568    #[prost(uint64, optional, tag="4")]
18569    pub name_iid: ::core::option::Option<u64>,
18570}
18571// End of protos/perfetto/trace/track_event/chrome_histogram_sample.proto
18572
18573// Begin of protos/perfetto/trace/track_event/debug_annotation.proto
18574
18575/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
18576/// macros. Users of the Perfetto SDK should prefer to use the
18577/// perfetto::TracedValue API to fill these protos, rather than filling them
18578/// manually.
18579///
18580/// Debug annotations are intended for debug use and are not considered a stable
18581/// API of the trace contents. Trace-based metrics that use debug annotation
18582/// values are prone to breakage, so please rely on typed TrackEvent fields for
18583/// these instead.
18584///
18585/// DebugAnnotations support nested arrays and dictionaries. Each entry is
18586/// encoded as a single DebugAnnotation message. Only dictionary entries
18587/// set the "name" field. The TrackEvent message forms an implicit root
18588/// dictionary.
18589///
18590/// Example TrackEvent with nested annotations:
18591///    track_event {
18592///      debug_annotations {
18593///        name: "foo"
18594///        dict_entries {
18595///          name: "a"
18596///          bool_value: true
18597///        }
18598///        dict_entries {
18599///          name: "b"
18600///          int_value: 123
18601///        }
18602///      }
18603///      debug_annotations {
18604///        name: "bar"
18605///        array_values {
18606///          string_value: "hello"
18607///        }
18608///        array_values {
18609///          string_value: "world"
18610///        }
18611///      }
18612///    }
18613///
18614/// Next ID: 18.
18615/// Reserved ID: 15
18616#[derive(Clone, PartialEq, ::prost::Message)]
18617pub struct DebugAnnotation {
18618    #[prost(bytes="vec", optional, tag="14")]
18619    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18620    #[prost(message, repeated, tag="11")]
18621    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
18622    #[prost(message, repeated, tag="12")]
18623    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
18624    /// Name fields are set only for dictionary entries.
18625    #[prost(oneof="debug_annotation::NameField", tags="1, 10")]
18626    pub name_field: ::core::option::Option<debug_annotation::NameField>,
18627    #[prost(oneof="debug_annotation::Value", tags="2, 3, 4, 5, 7, 8, 9, 6, 17")]
18628    pub value: ::core::option::Option<debug_annotation::Value>,
18629    /// Used to embed arbitrary proto messages (which are also typically used to
18630    /// represent typed TrackEvent arguments). |proto_type_name| or
18631    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
18632    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
18633    /// proto messages. See |TracedValue::WriteProto| for more details.
18634    #[prost(oneof="debug_annotation::ProtoTypeDescriptor", tags="16, 13")]
18635    pub proto_type_descriptor: ::core::option::Option<debug_annotation::ProtoTypeDescriptor>,
18636}
18637/// Nested message and enum types in `DebugAnnotation`.
18638pub mod debug_annotation {
18639    /// Deprecated legacy way to use nested values. Only kept for
18640    /// backwards-compatibility in TraceProcessor. May be removed in the future -
18641    /// code filling protos should use |dict_entries| and |array_values| instead.
18642    #[derive(Clone, PartialEq, ::prost::Message)]
18643    pub struct NestedValue {
18644        #[prost(enumeration="nested_value::NestedType", optional, tag="1")]
18645        pub nested_type: ::core::option::Option<i32>,
18646        #[prost(string, repeated, tag="2")]
18647        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18648        #[prost(message, repeated, tag="3")]
18649        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
18650        #[prost(message, repeated, tag="4")]
18651        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
18652        #[prost(int64, optional, tag="5")]
18653        pub int_value: ::core::option::Option<i64>,
18654        #[prost(double, optional, tag="6")]
18655        pub double_value: ::core::option::Option<f64>,
18656        #[prost(bool, optional, tag="7")]
18657        pub bool_value: ::core::option::Option<bool>,
18658        #[prost(string, optional, tag="8")]
18659        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
18660    }
18661    /// Nested message and enum types in `NestedValue`.
18662    pub mod nested_value {
18663        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18664        #[repr(i32)]
18665        pub enum NestedType {
18666            /// leaf value.
18667            Unspecified = 0,
18668            Dict = 1,
18669            Array = 2,
18670        }
18671        impl NestedType {
18672            /// String value of the enum field names used in the ProtoBuf definition.
18673            ///
18674            /// The values are not transformed in any way and thus are considered stable
18675            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18676            pub fn as_str_name(&self) -> &'static str {
18677                match self {
18678                    NestedType::Unspecified => "UNSPECIFIED",
18679                    NestedType::Dict => "DICT",
18680                    NestedType::Array => "ARRAY",
18681                }
18682            }
18683        }
18684    }
18685    /// Name fields are set only for dictionary entries.
18686    #[derive(Clone, PartialEq, ::prost::Oneof)]
18687    pub enum NameField {
18688        /// interned DebugAnnotationName.
18689        #[prost(uint64, tag="1")]
18690        NameIid(u64),
18691        /// non-interned variant.
18692        #[prost(string, tag="10")]
18693        Name(::prost::alloc::string::String),
18694    }
18695    #[derive(Clone, PartialEq, ::prost::Oneof)]
18696    pub enum Value {
18697        #[prost(bool, tag="2")]
18698        BoolValue(bool),
18699        #[prost(uint64, tag="3")]
18700        UintValue(u64),
18701        #[prost(int64, tag="4")]
18702        IntValue(i64),
18703        #[prost(double, tag="5")]
18704        DoubleValue(f64),
18705        /// Pointers are stored in a separate type as the JSON output treats them
18706        /// differently from other uint64 values.
18707        #[prost(uint64, tag="7")]
18708        PointerValue(u64),
18709        /// Deprecated. Use dict_entries / array_values instead.
18710        #[prost(message, tag="8")]
18711        NestedValue(NestedValue),
18712        /// Legacy instrumentation may not support conversion of nested data to
18713        /// NestedValue yet.
18714        #[prost(string, tag="9")]
18715        LegacyJsonValue(::prost::alloc::string::String),
18716        /// interned and non-interned variants of strings.
18717        #[prost(string, tag="6")]
18718        StringValue(::prost::alloc::string::String),
18719        /// Corresponds to |debug_annotation_string_values| field in InternedData.
18720        #[prost(uint64, tag="17")]
18721        StringValueIid(u64),
18722    }
18723    /// Used to embed arbitrary proto messages (which are also typically used to
18724    /// represent typed TrackEvent arguments). |proto_type_name| or
18725    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
18726    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
18727    /// proto messages. See |TracedValue::WriteProto| for more details.
18728    #[derive(Clone, PartialEq, ::prost::Oneof)]
18729    pub enum ProtoTypeDescriptor {
18730        #[prost(string, tag="16")]
18731        ProtoTypeName(::prost::alloc::string::String),
18732        /// interned DebugAnnotationValueTypeName.
18733        #[prost(uint64, tag="13")]
18734        ProtoTypeNameIid(u64),
18735    }
18736}
18737// --------------------
18738// Interned data types:
18739// --------------------
18740
18741#[derive(Clone, PartialEq, ::prost::Message)]
18742pub struct DebugAnnotationName {
18743    #[prost(uint64, optional, tag="1")]
18744    pub iid: ::core::option::Option<u64>,
18745    #[prost(string, optional, tag="2")]
18746    pub name: ::core::option::Option<::prost::alloc::string::String>,
18747}
18748/// See the |proto_type_descriptor| comment.
18749#[derive(Clone, PartialEq, ::prost::Message)]
18750pub struct DebugAnnotationValueTypeName {
18751    #[prost(uint64, optional, tag="1")]
18752    pub iid: ::core::option::Option<u64>,
18753    #[prost(string, optional, tag="2")]
18754    pub name: ::core::option::Option<::prost::alloc::string::String>,
18755}
18756// End of protos/perfetto/trace/track_event/debug_annotation.proto
18757
18758// Begin of protos/perfetto/trace/track_event/log_message.proto
18759
18760#[derive(Clone, PartialEq, ::prost::Message)]
18761pub struct LogMessage {
18762    /// interned SourceLocation.
18763    #[prost(uint64, optional, tag="1")]
18764    pub source_location_iid: ::core::option::Option<u64>,
18765    /// interned LogMessageBody.
18766    #[prost(uint64, optional, tag="2")]
18767    pub body_iid: ::core::option::Option<u64>,
18768    #[prost(enumeration="log_message::Priority", optional, tag="3")]
18769    pub prio: ::core::option::Option<i32>,
18770}
18771/// Nested message and enum types in `LogMessage`.
18772pub mod log_message {
18773    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18774    #[repr(i32)]
18775    pub enum Priority {
18776        PrioUnspecified = 0,
18777        PrioUnused = 1,
18778        PrioVerbose = 2,
18779        PrioDebug = 3,
18780        PrioInfo = 4,
18781        PrioWarn = 5,
18782        PrioError = 6,
18783        PrioFatal = 7,
18784    }
18785    impl Priority {
18786        /// String value of the enum field names used in the ProtoBuf definition.
18787        ///
18788        /// The values are not transformed in any way and thus are considered stable
18789        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18790        pub fn as_str_name(&self) -> &'static str {
18791            match self {
18792                Priority::PrioUnspecified => "PRIO_UNSPECIFIED",
18793                Priority::PrioUnused => "PRIO_UNUSED",
18794                Priority::PrioVerbose => "PRIO_VERBOSE",
18795                Priority::PrioDebug => "PRIO_DEBUG",
18796                Priority::PrioInfo => "PRIO_INFO",
18797                Priority::PrioWarn => "PRIO_WARN",
18798                Priority::PrioError => "PRIO_ERROR",
18799                Priority::PrioFatal => "PRIO_FATAL",
18800            }
18801        }
18802    }
18803}
18804// --------------------
18805// Interned data types:
18806// --------------------
18807
18808#[derive(Clone, PartialEq, ::prost::Message)]
18809pub struct LogMessageBody {
18810    #[prost(uint64, optional, tag="1")]
18811    pub iid: ::core::option::Option<u64>,
18812    #[prost(string, optional, tag="2")]
18813    pub body: ::core::option::Option<::prost::alloc::string::String>,
18814}
18815// End of protos/perfetto/trace/track_event/log_message.proto
18816
18817// Begin of protos/perfetto/trace/track_event/source_location.proto
18818
18819// --------------------
18820// Interned data types:
18821// --------------------
18822
18823/// A source location, represented as a native symbol.
18824/// This is similar to `message Frame` from
18825/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
18826/// source code locations (for example in track event args), not stack frames.
18827#[derive(Clone, PartialEq, ::prost::Message)]
18828pub struct UnsymbolizedSourceLocation {
18829    #[prost(uint64, optional, tag="1")]
18830    pub iid: ::core::option::Option<u64>,
18831    #[prost(uint64, optional, tag="2")]
18832    pub mapping_id: ::core::option::Option<u64>,
18833    #[prost(uint64, optional, tag="3")]
18834    pub rel_pc: ::core::option::Option<u64>,
18835}
18836#[derive(Clone, PartialEq, ::prost::Message)]
18837pub struct SourceLocation {
18838    #[prost(uint64, optional, tag="1")]
18839    pub iid: ::core::option::Option<u64>,
18840    #[prost(string, optional, tag="2")]
18841    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
18842    #[prost(string, optional, tag="3")]
18843    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
18844    #[prost(uint32, optional, tag="4")]
18845    pub line_number: ::core::option::Option<u32>,
18846}
18847// End of protos/perfetto/trace/track_event/source_location.proto
18848
18849// Begin of protos/perfetto/trace/track_event/chrome_active_processes.proto
18850
18851/// A list of processes connected to the tracing service.
18852#[derive(Clone, PartialEq, ::prost::Message)]
18853pub struct ChromeActiveProcesses {
18854    #[prost(int32, repeated, packed="false", tag="1")]
18855    pub pid: ::prost::alloc::vec::Vec<i32>,
18856}
18857// Begin of protos/perfetto/trace/track_event/chrome_application_state_info.proto
18858
18859/// Trace event arguments for application state changes.
18860#[derive(Clone, PartialEq, ::prost::Message)]
18861pub struct ChromeApplicationStateInfo {
18862    #[prost(enumeration="chrome_application_state_info::ChromeApplicationState", optional, tag="1")]
18863    pub application_state: ::core::option::Option<i32>,
18864}
18865/// Nested message and enum types in `ChromeApplicationStateInfo`.
18866pub mod chrome_application_state_info {
18867    /// Enum definition taken from:
18868    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
18869    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18870    #[repr(i32)]
18871    pub enum ChromeApplicationState {
18872        ApplicationStateUnknown = 0,
18873        ApplicationStateHasRunningActivities = 1,
18874        ApplicationStateHasPausedActivities = 2,
18875        ApplicationStateHasStoppedActivities = 3,
18876        ApplicationStateHasDestroyedActivities = 4,
18877    }
18878    impl ChromeApplicationState {
18879        /// String value of the enum field names used in the ProtoBuf definition.
18880        ///
18881        /// The values are not transformed in any way and thus are considered stable
18882        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18883        pub fn as_str_name(&self) -> &'static str {
18884            match self {
18885                ChromeApplicationState::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
18886                ChromeApplicationState::ApplicationStateHasRunningActivities => "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES",
18887                ChromeApplicationState::ApplicationStateHasPausedActivities => "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES",
18888                ChromeApplicationState::ApplicationStateHasStoppedActivities => "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES",
18889                ChromeApplicationState::ApplicationStateHasDestroyedActivities => "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES",
18890            }
18891        }
18892    }
18893}
18894/// Next id: 18
18895#[derive(Clone, PartialEq, ::prost::Message)]
18896pub struct ChromeCompositorSchedulerState {
18897    #[prost(message, optional, tag="1")]
18898    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
18899    #[prost(bool, optional, tag="2")]
18900    pub observing_begin_frame_source: ::core::option::Option<bool>,
18901    #[prost(bool, optional, tag="3")]
18902    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
18903    #[prost(bool, optional, tag="4")]
18904    pub pending_begin_frame_task: ::core::option::Option<bool>,
18905    #[prost(bool, optional, tag="5")]
18906    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
18907    #[prost(enumeration="ChromeCompositorSchedulerAction", optional, tag="7")]
18908    pub inside_action: ::core::option::Option<i32>,
18909    #[prost(enumeration="chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode", optional, tag="8")]
18910    pub deadline_mode: ::core::option::Option<i32>,
18911    #[prost(int64, optional, tag="9")]
18912    pub deadline_us: ::core::option::Option<i64>,
18913    #[prost(int64, optional, tag="10")]
18914    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
18915    #[prost(int64, optional, tag="11")]
18916    pub now_us: ::core::option::Option<i64>,
18917    #[prost(int64, optional, tag="12")]
18918    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
18919    #[prost(int64, optional, tag="13")]
18920    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
18921    #[prost(message, optional, tag="14")]
18922    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
18923    #[prost(message, optional, tag="15")]
18924    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
18925    #[prost(message, optional, tag="16")]
18926    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
18927    #[prost(message, optional, tag="17")]
18928    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
18929}
18930/// Nested message and enum types in `ChromeCompositorSchedulerState`.
18931pub mod chrome_compositor_scheduler_state {
18932    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18933    #[repr(i32)]
18934    pub enum BeginImplFrameDeadlineMode {
18935        DeadlineModeUnspecified = 0,
18936        DeadlineModeNone = 1,
18937        DeadlineModeImmediate = 2,
18938        DeadlineModeRegular = 3,
18939        DeadlineModeLate = 4,
18940        DeadlineModeBlocked = 5,
18941    }
18942    impl BeginImplFrameDeadlineMode {
18943        /// String value of the enum field names used in the ProtoBuf definition.
18944        ///
18945        /// The values are not transformed in any way and thus are considered stable
18946        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18947        pub fn as_str_name(&self) -> &'static str {
18948            match self {
18949                BeginImplFrameDeadlineMode::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
18950                BeginImplFrameDeadlineMode::DeadlineModeNone => "DEADLINE_MODE_NONE",
18951                BeginImplFrameDeadlineMode::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
18952                BeginImplFrameDeadlineMode::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
18953                BeginImplFrameDeadlineMode::DeadlineModeLate => "DEADLINE_MODE_LATE",
18954                BeginImplFrameDeadlineMode::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
18955            }
18956        }
18957    }
18958}
18959/// Describes the current values stored in the Chrome Compositor state machine.
18960/// Next id: 3
18961#[derive(Clone, PartialEq, ::prost::Message)]
18962pub struct ChromeCompositorStateMachine {
18963    #[prost(message, optional, tag="1")]
18964    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
18965    #[prost(message, optional, tag="2")]
18966    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
18967}
18968/// Nested message and enum types in `ChromeCompositorStateMachine`.
18969pub mod chrome_compositor_state_machine {
18970    /// Next id: 6
18971    #[derive(Clone, PartialEq, ::prost::Message)]
18972    pub struct MajorState {
18973        #[prost(enumeration="super::ChromeCompositorSchedulerAction", optional, tag="1")]
18974        pub next_action: ::core::option::Option<i32>,
18975        #[prost(enumeration="major_state::BeginImplFrameState", optional, tag="2")]
18976        pub begin_impl_frame_state: ::core::option::Option<i32>,
18977        #[prost(enumeration="major_state::BeginMainFrameState", optional, tag="3")]
18978        pub begin_main_frame_state: ::core::option::Option<i32>,
18979        #[prost(enumeration="major_state::LayerTreeFrameSinkState", optional, tag="4")]
18980        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
18981        #[prost(enumeration="major_state::ForcedRedrawOnTimeoutState", optional, tag="5")]
18982        pub forced_redraw_state: ::core::option::Option<i32>,
18983    }
18984    /// Nested message and enum types in `MajorState`.
18985    pub mod major_state {
18986        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18987        #[repr(i32)]
18988        pub enum BeginImplFrameState {
18989            BeginImplFrameUnspecified = 0,
18990            BeginImplFrameIdle = 1,
18991            BeginImplFrameInsideBeginFrame = 2,
18992            BeginImplFrameInsideDeadline = 3,
18993        }
18994        impl BeginImplFrameState {
18995            /// String value of the enum field names used in the ProtoBuf definition.
18996            ///
18997            /// The values are not transformed in any way and thus are considered stable
18998            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18999            pub fn as_str_name(&self) -> &'static str {
19000                match self {
19001                    BeginImplFrameState::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
19002                    BeginImplFrameState::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
19003                    BeginImplFrameState::BeginImplFrameInsideBeginFrame => "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME",
19004                    BeginImplFrameState::BeginImplFrameInsideDeadline => "BEGIN_IMPL_FRAME_INSIDE_DEADLINE",
19005                }
19006            }
19007        }
19008        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19009        #[repr(i32)]
19010        pub enum BeginMainFrameState {
19011            BeginMainFrameUnspecified = 0,
19012            BeginMainFrameIdle = 1,
19013            BeginMainFrameSent = 2,
19014            BeginMainFrameReadyToCommit = 3,
19015        }
19016        impl BeginMainFrameState {
19017            /// String value of the enum field names used in the ProtoBuf definition.
19018            ///
19019            /// The values are not transformed in any way and thus are considered stable
19020            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19021            pub fn as_str_name(&self) -> &'static str {
19022                match self {
19023                    BeginMainFrameState::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
19024                    BeginMainFrameState::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
19025                    BeginMainFrameState::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
19026                    BeginMainFrameState::BeginMainFrameReadyToCommit => "BEGIN_MAIN_FRAME_READY_TO_COMMIT",
19027                }
19028            }
19029        }
19030        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19031        #[repr(i32)]
19032        pub enum LayerTreeFrameSinkState {
19033            LayerTreeFrameUnspecified = 0,
19034            LayerTreeFrameNone = 1,
19035            LayerTreeFrameActive = 2,
19036            LayerTreeFrameCreating = 3,
19037            LayerTreeFrameWaitingForFirstCommit = 4,
19038            LayerTreeFrameWaitingForFirstActivation = 5,
19039        }
19040        impl LayerTreeFrameSinkState {
19041            /// String value of the enum field names used in the ProtoBuf definition.
19042            ///
19043            /// The values are not transformed in any way and thus are considered stable
19044            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19045            pub fn as_str_name(&self) -> &'static str {
19046                match self {
19047                    LayerTreeFrameSinkState::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
19048                    LayerTreeFrameSinkState::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
19049                    LayerTreeFrameSinkState::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
19050                    LayerTreeFrameSinkState::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
19051                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstCommit => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT",
19052                    LayerTreeFrameSinkState::LayerTreeFrameWaitingForFirstActivation => "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION",
19053                }
19054            }
19055        }
19056        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19057        #[repr(i32)]
19058        pub enum ForcedRedrawOnTimeoutState {
19059            ForcedRedrawUnspecified = 0,
19060            ForcedRedrawIdle = 1,
19061            ForcedRedrawWaitingForCommit = 2,
19062            ForcedRedrawWaitingForActivation = 3,
19063            ForcedRedrawWaitingForDraw = 4,
19064        }
19065        impl ForcedRedrawOnTimeoutState {
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                    ForcedRedrawOnTimeoutState::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
19073                    ForcedRedrawOnTimeoutState::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
19074                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForCommit => "FORCED_REDRAW_WAITING_FOR_COMMIT",
19075                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForActivation => "FORCED_REDRAW_WAITING_FOR_ACTIVATION",
19076                    ForcedRedrawOnTimeoutState::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
19077                }
19078            }
19079        }
19080    }
19081    /// Next id: 47
19082    #[derive(Clone, PartialEq, ::prost::Message)]
19083    pub struct MinorState {
19084        #[prost(int32, optional, tag="1")]
19085        pub commit_count: ::core::option::Option<i32>,
19086        #[prost(int32, optional, tag="2")]
19087        pub current_frame_number: ::core::option::Option<i32>,
19088        #[prost(int32, optional, tag="3")]
19089        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
19090        #[prost(int32, optional, tag="4")]
19091        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
19092        #[prost(int32, optional, tag="5")]
19093        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
19094        #[prost(bool, optional, tag="6")]
19095        pub did_draw: ::core::option::Option<bool>,
19096        #[prost(bool, optional, tag="7")]
19097        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
19098        #[prost(bool, optional, tag="8")]
19099        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
19100        #[prost(bool, optional, tag="9")]
19101        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
19102        #[prost(bool, optional, tag="10")]
19103        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
19104        #[prost(bool, optional, tag="11")]
19105        pub did_commit_during_frame: ::core::option::Option<bool>,
19106        #[prost(bool, optional, tag="12")]
19107        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
19108        #[prost(bool, optional, tag="13")]
19109        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
19110        #[prost(bool, optional, tag="14")]
19111        pub did_prepare_tiles: ::core::option::Option<bool>,
19112        #[prost(int32, optional, tag="15")]
19113        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
19114        #[prost(int32, optional, tag="16")]
19115        pub pending_submit_frames: ::core::option::Option<i32>,
19116        #[prost(int32, optional, tag="17")]
19117        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<i32>,
19118        #[prost(bool, optional, tag="18")]
19119        pub needs_redraw: ::core::option::Option<bool>,
19120        #[prost(bool, optional, tag="19")]
19121        pub needs_prepare_tiles: ::core::option::Option<bool>,
19122        #[prost(bool, optional, tag="20")]
19123        pub needs_begin_main_frame: ::core::option::Option<bool>,
19124        #[prost(bool, optional, tag="21")]
19125        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
19126        #[prost(bool, optional, tag="22")]
19127        pub visible: ::core::option::Option<bool>,
19128        #[prost(bool, optional, tag="23")]
19129        pub begin_frame_source_paused: ::core::option::Option<bool>,
19130        #[prost(bool, optional, tag="24")]
19131        pub can_draw: ::core::option::Option<bool>,
19132        #[prost(bool, optional, tag="25")]
19133        pub resourceless_draw: ::core::option::Option<bool>,
19134        #[prost(bool, optional, tag="26")]
19135        pub has_pending_tree: ::core::option::Option<bool>,
19136        #[prost(bool, optional, tag="27")]
19137        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
19138        #[prost(bool, optional, tag="28")]
19139        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
19140        #[prost(bool, optional, tag="29")]
19141        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
19142        #[prost(bool, optional, tag="30")]
19143        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<bool>,
19144        #[prost(enumeration="minor_state::TreePriority", optional, tag="31")]
19145        pub tree_priority: ::core::option::Option<i32>,
19146        #[prost(enumeration="minor_state::ScrollHandlerState", optional, tag="32")]
19147        pub scroll_handler_state: ::core::option::Option<i32>,
19148        #[prost(bool, optional, tag="33")]
19149        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
19150        #[prost(bool, optional, tag="34")]
19151        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
19152        #[prost(bool, optional, tag="36")]
19153        pub video_needs_begin_frames: ::core::option::Option<bool>,
19154        #[prost(bool, optional, tag="37")]
19155        pub defer_begin_main_frame: ::core::option::Option<bool>,
19156        #[prost(bool, optional, tag="38")]
19157        pub last_commit_had_no_updates: ::core::option::Option<bool>,
19158        #[prost(bool, optional, tag="39")]
19159        pub did_draw_in_last_frame: ::core::option::Option<bool>,
19160        #[prost(bool, optional, tag="40")]
19161        pub did_submit_in_last_frame: ::core::option::Option<bool>,
19162        #[prost(bool, optional, tag="41")]
19163        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
19164        #[prost(bool, optional, tag="42")]
19165        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
19166        #[prost(bool, optional, tag="43")]
19167        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
19168        #[prost(bool, optional, tag="44")]
19169        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
19170        #[prost(bool, optional, tag="45")]
19171        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
19172        #[prost(bool, optional, tag="46")]
19173        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
19174    }
19175    /// Nested message and enum types in `MinorState`.
19176    pub mod minor_state {
19177        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19178        #[repr(i32)]
19179        pub enum TreePriority {
19180            Unspecified = 0,
19181            SamePriorityForBothTrees = 1,
19182            SmoothnessTakesPriority = 2,
19183            NewContentTakesPriority = 3,
19184        }
19185        impl TreePriority {
19186            /// String value of the enum field names used in the ProtoBuf definition.
19187            ///
19188            /// The values are not transformed in any way and thus are considered stable
19189            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19190            pub fn as_str_name(&self) -> &'static str {
19191                match self {
19192                    TreePriority::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
19193                    TreePriority::SamePriorityForBothTrees => "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES",
19194                    TreePriority::SmoothnessTakesPriority => "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY",
19195                    TreePriority::NewContentTakesPriority => "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY",
19196                }
19197            }
19198        }
19199        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19200        #[repr(i32)]
19201        pub enum ScrollHandlerState {
19202            ScrollHandlerUnspecified = 0,
19203            ScrollAffectsScrollHandler = 1,
19204            ScrollDoesNotAffectScrollHandler = 2,
19205        }
19206        impl ScrollHandlerState {
19207            /// String value of the enum field names used in the ProtoBuf definition.
19208            ///
19209            /// The values are not transformed in any way and thus are considered stable
19210            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19211            pub fn as_str_name(&self) -> &'static str {
19212                match self {
19213                    ScrollHandlerState::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
19214                    ScrollHandlerState::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
19215                    ScrollHandlerState::ScrollDoesNotAffectScrollHandler => "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER",
19216                }
19217            }
19218        }
19219    }
19220}
19221/// Next id: 13
19222#[derive(Clone, PartialEq, ::prost::Message)]
19223pub struct BeginFrameArgs {
19224    #[prost(enumeration="begin_frame_args::BeginFrameArgsType", optional, tag="1")]
19225    pub r#type: ::core::option::Option<i32>,
19226    #[prost(uint64, optional, tag="2")]
19227    pub source_id: ::core::option::Option<u64>,
19228    #[prost(uint64, optional, tag="3")]
19229    pub sequence_number: ::core::option::Option<u64>,
19230    #[prost(int64, optional, tag="4")]
19231    pub frame_time_us: ::core::option::Option<i64>,
19232    #[prost(int64, optional, tag="5")]
19233    pub deadline_us: ::core::option::Option<i64>,
19234    #[prost(int64, optional, tag="6")]
19235    pub interval_delta_us: ::core::option::Option<i64>,
19236    #[prost(bool, optional, tag="7")]
19237    pub on_critical_path: ::core::option::Option<bool>,
19238    #[prost(bool, optional, tag="8")]
19239    pub animate_only: ::core::option::Option<bool>,
19240    #[prost(int64, optional, tag="12")]
19241    pub frames_throttled_since_last: ::core::option::Option<i64>,
19242    #[prost(oneof="begin_frame_args::CreatedFrom", tags="9, 10")]
19243    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
19244}
19245/// Nested message and enum types in `BeginFrameArgs`.
19246pub mod begin_frame_args {
19247    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
19248    /// drop this in the proto representation, and instead make the JSON format
19249    /// "subtype" field become the type field.
19250    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19251    #[repr(i32)]
19252    pub enum BeginFrameArgsType {
19253        Unspecified = 0,
19254        Invalid = 1,
19255        Normal = 2,
19256        Missed = 3,
19257    }
19258    impl BeginFrameArgsType {
19259        /// String value of the enum field names used in the ProtoBuf definition.
19260        ///
19261        /// The values are not transformed in any way and thus are considered stable
19262        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19263        pub fn as_str_name(&self) -> &'static str {
19264            match self {
19265                BeginFrameArgsType::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
19266                BeginFrameArgsType::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
19267                BeginFrameArgsType::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
19268                BeginFrameArgsType::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
19269            }
19270        }
19271    }
19272    #[derive(Clone, PartialEq, ::prost::Oneof)]
19273    pub enum CreatedFrom {
19274        /// The interned SourceLocation.
19275        #[prost(uint64, tag="9")]
19276        SourceLocationIid(u64),
19277        /// The SourceLocation that this args was created from.
19278        /// TODO(nuskos): Eventually we will support interning inside of
19279        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
19280        /// since we can emit it as part of the InternedData message. When we can
19281        /// remove this |source_location|.
19282        #[prost(message, tag="10")]
19283        SourceLocation(super::SourceLocation),
19284    }
19285}
19286/// Next id: 7
19287#[derive(Clone, PartialEq, ::prost::Message)]
19288pub struct BeginImplFrameArgs {
19289    #[prost(int64, optional, tag="1")]
19290    pub updated_at_us: ::core::option::Option<i64>,
19291    #[prost(int64, optional, tag="2")]
19292    pub finished_at_us: ::core::option::Option<i64>,
19293    #[prost(enumeration="begin_impl_frame_args::State", optional, tag="3")]
19294    pub state: ::core::option::Option<i32>,
19295    #[prost(message, optional, tag="6")]
19296    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
19297    #[prost(oneof="begin_impl_frame_args::Args", tags="4, 5")]
19298    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
19299}
19300/// Nested message and enum types in `BeginImplFrameArgs`.
19301pub mod begin_impl_frame_args {
19302    #[derive(Clone, PartialEq, ::prost::Message)]
19303    pub struct TimestampsInUs {
19304        #[prost(int64, optional, tag="1")]
19305        pub interval_delta: ::core::option::Option<i64>,
19306        #[prost(int64, optional, tag="2")]
19307        pub now_to_deadline_delta: ::core::option::Option<i64>,
19308        #[prost(int64, optional, tag="3")]
19309        pub frame_time_to_now_delta: ::core::option::Option<i64>,
19310        #[prost(int64, optional, tag="4")]
19311        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
19312        #[prost(int64, optional, tag="5")]
19313        pub now: ::core::option::Option<i64>,
19314        #[prost(int64, optional, tag="6")]
19315        pub frame_time: ::core::option::Option<i64>,
19316        #[prost(int64, optional, tag="7")]
19317        pub deadline: ::core::option::Option<i64>,
19318    }
19319    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19320    #[repr(i32)]
19321    pub enum State {
19322        BeginFrameFinished = 0,
19323        BeginFrameUsing = 1,
19324    }
19325    impl State {
19326        /// String value of the enum field names used in the ProtoBuf definition.
19327        ///
19328        /// The values are not transformed in any way and thus are considered stable
19329        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19330        pub fn as_str_name(&self) -> &'static str {
19331            match self {
19332                State::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
19333                State::BeginFrameUsing => "BEGIN_FRAME_USING",
19334            }
19335        }
19336    }
19337    #[derive(Clone, PartialEq, ::prost::Oneof)]
19338    pub enum Args {
19339        /// Only set if |state| is BEGIN_FRAME_FINISHED.
19340        #[prost(message, tag="4")]
19341        CurrentArgs(super::BeginFrameArgs),
19342        /// Only set if |state| is BEGIN_FRAME_USING.
19343        #[prost(message, tag="5")]
19344        LastArgs(super::BeginFrameArgs),
19345    }
19346}
19347#[derive(Clone, PartialEq, ::prost::Message)]
19348pub struct BeginFrameObserverState {
19349    #[prost(int64, optional, tag="1")]
19350    pub dropped_begin_frame_args: ::core::option::Option<i64>,
19351    #[prost(message, optional, tag="2")]
19352    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
19353}
19354#[derive(Clone, PartialEq, ::prost::Message)]
19355pub struct BeginFrameSourceState {
19356    #[prost(uint32, optional, tag="1")]
19357    pub source_id: ::core::option::Option<u32>,
19358    #[prost(bool, optional, tag="2")]
19359    pub paused: ::core::option::Option<bool>,
19360    #[prost(uint32, optional, tag="3")]
19361    pub num_observers: ::core::option::Option<u32>,
19362    #[prost(message, optional, tag="4")]
19363    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
19364}
19365#[derive(Clone, PartialEq, ::prost::Message)]
19366pub struct CompositorTimingHistory {
19367    #[prost(int64, optional, tag="1")]
19368    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
19369    #[prost(int64, optional, tag="2")]
19370    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<i64>,
19371    #[prost(int64, optional, tag="3")]
19372    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<i64>,
19373    #[prost(int64, optional, tag="4")]
19374    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
19375    #[prost(int64, optional, tag="5")]
19376    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
19377    #[prost(int64, optional, tag="6")]
19378    pub activate_estimate_delta_us: ::core::option::Option<i64>,
19379    #[prost(int64, optional, tag="7")]
19380    pub draw_estimate_delta_us: ::core::option::Option<i64>,
19381}
19382// End of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
19383
19384// Begin of protos/perfetto/trace/track_event/chrome_content_settings_event_info.proto
19385
19386/// Details about ContentSettings trace events.
19387#[derive(Clone, PartialEq, ::prost::Message)]
19388pub struct ChromeContentSettingsEventInfo {
19389    /// The number of user defined hostname patterns for content settings at
19390    /// browser start. Similar to UMA histogram
19391    /// 'ContentSettings.NumberOfExceptions'.
19392    #[prost(uint32, optional, tag="1")]
19393    pub number_of_exceptions: ::core::option::Option<u32>,
19394}
19395// Begin of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
19396
19397/// DEPRECATED. Only kept for backwards compatibility. Use |ChromeFrameReporter2|
19398/// in
19399/// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
19400/// instead.
19401#[derive(Clone, PartialEq, ::prost::Message)]
19402pub struct ChromeFrameReporter {
19403    #[prost(enumeration="chrome_frame_reporter::State", optional, tag="1")]
19404    pub state: ::core::option::Option<i32>,
19405    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
19406    #[prost(enumeration="chrome_frame_reporter::FrameDropReason", optional, tag="2")]
19407    pub reason: ::core::option::Option<i32>,
19408    #[prost(uint64, optional, tag="3")]
19409    pub frame_source: ::core::option::Option<u64>,
19410    #[prost(uint64, optional, tag="4")]
19411    pub frame_sequence: ::core::option::Option<u64>,
19412    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
19413    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
19414    /// smoothness.
19415    #[prost(bool, optional, tag="5")]
19416    pub affects_smoothness: ::core::option::Option<bool>,
19417    /// The type of active scroll.
19418    #[prost(enumeration="chrome_frame_reporter::ScrollState", optional, tag="6")]
19419    pub scroll_state: ::core::option::Option<i32>,
19420    /// If any main thread animation is active during this frame.
19421    #[prost(bool, optional, tag="7")]
19422    pub has_main_animation: ::core::option::Option<bool>,
19423    /// If any compositor thread animation is active during this frame.
19424    #[prost(bool, optional, tag="8")]
19425    pub has_compositor_animation: ::core::option::Option<bool>,
19426    /// If any touch-driven UX (not scroll) is active during this frame.
19427    #[prost(bool, optional, tag="9")]
19428    pub has_smooth_input_main: ::core::option::Option<bool>,
19429    /// Whether the frame contained any missing content (i.e. whether there was
19430    /// checkerboarding in the frame).  If has_missing_content,
19431    /// checkerboarded_needs_raster and checkerboarded_needs_record all have
19432    /// values, has_missing_content should equal checkerboarded_needs_raster ||
19433    /// checkerboarded_needs_record.
19434    #[prost(bool, optional, tag="10")]
19435    pub has_missing_content: ::core::option::Option<bool>,
19436    /// The id of layer_tree_host that the frame has been produced for.
19437    #[prost(uint64, optional, tag="11")]
19438    pub layer_tree_host_id: ::core::option::Option<u64>,
19439    /// If total latency of PipelineReporter exceeds a certain limit.
19440    #[prost(bool, optional, tag="12")]
19441    pub has_high_latency: ::core::option::Option<bool>,
19442    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
19443    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
19444    /// (i.e. dropped frames when there are no partial compositor updates).
19445    #[prost(enumeration="chrome_frame_reporter::FrameType", optional, tag="13")]
19446    pub frame_type: ::core::option::Option<i32>,
19447    /// The breakdown stage of PipelineReporter that is most likely accountable for
19448    /// high latency.
19449    #[prost(string, repeated, tag="14")]
19450    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19451    /// Whether the frame contained any content that is not fully rastered.
19452    #[prost(bool, optional, tag="15")]
19453    pub checkerboarded_needs_raster: ::core::option::Option<bool>,
19454    /// Whether the frame contained any content that is not fully recorded.
19455    #[prost(bool, optional, tag="16")]
19456    pub checkerboarded_needs_record: ::core::option::Option<bool>,
19457    /// viz::BeginFrameArgs.trace_id of the frame (before surface aggregation). See
19458    /// also ChromeTrackEvent.EventLatency.surface_frame_trace_id.
19459    #[prost(int64, optional, tag="17")]
19460    pub surface_frame_trace_id: ::core::option::Option<i64>,
19461    /// gfx::PresentationFeedback.display_trace_id of the frame (after surface
19462    /// aggregation). See also ChromeTrackEvent.EventLatency.display_trace_id.
19463    #[prost(int64, optional, tag="18")]
19464    pub display_trace_id: ::core::option::Option<i64>,
19465}
19466/// Nested message and enum types in `ChromeFrameReporter`.
19467pub mod chrome_frame_reporter {
19468    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19469    #[repr(i32)]
19470    pub enum State {
19471        /// The frame did not have any updates to present.
19472        NoUpdateDesired = 0,
19473        /// The frame presented all the desired updates (i.e. any updates requested
19474        /// from both the compositor thread and main-threads were handled).
19475        PresentedAll = 1,
19476        /// The frame was presented with some updates, but also missed some updates
19477        /// (e.g. missed updates from the main-thread, but included updates from the
19478        /// compositor thread).
19479        PresentedPartial = 2,
19480        /// The frame was dropped, i.e. some updates were desired for the frame, but
19481        /// was not presented.
19482        Dropped = 3,
19483    }
19484    impl State {
19485        /// String value of the enum field names used in the ProtoBuf definition.
19486        ///
19487        /// The values are not transformed in any way and thus are considered stable
19488        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19489        pub fn as_str_name(&self) -> &'static str {
19490            match self {
19491                State::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
19492                State::PresentedAll => "STATE_PRESENTED_ALL",
19493                State::PresentedPartial => "STATE_PRESENTED_PARTIAL",
19494                State::Dropped => "STATE_DROPPED",
19495            }
19496        }
19497    }
19498    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19499    #[repr(i32)]
19500    pub enum FrameDropReason {
19501        ReasonUnspecified = 0,
19502        /// Frame was dropped by the display-compositor.
19503        /// The display-compositor may drop a frame some times (e.g. the frame missed
19504        /// the deadline, or was blocked on surface-sync, etc.)
19505        ReasonDisplayCompositor = 1,
19506        /// Frame was dropped because of the main-thread.
19507        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
19508        /// is running expensive javascript, or doing a lot of layout updates, etc.
19509        ReasonMainThread = 2,
19510        /// Frame was dropped by the client compositor.
19511        /// The client compositor can drop some frames too (e.g. attempting to
19512        /// recover latency, missing the deadline, etc.).
19513        ReasonClientCompositor = 3,
19514    }
19515    impl FrameDropReason {
19516        /// String value of the enum field names used in the ProtoBuf definition.
19517        ///
19518        /// The values are not transformed in any way and thus are considered stable
19519        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19520        pub fn as_str_name(&self) -> &'static str {
19521            match self {
19522                FrameDropReason::ReasonUnspecified => "REASON_UNSPECIFIED",
19523                FrameDropReason::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
19524                FrameDropReason::ReasonMainThread => "REASON_MAIN_THREAD",
19525                FrameDropReason::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
19526            }
19527        }
19528    }
19529    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19530    #[repr(i32)]
19531    pub enum ScrollState {
19532        ScrollNone = 0,
19533        ScrollMainThread = 1,
19534        ScrollCompositorThread = 2,
19535        ScrollRaster = 3,
19536        /// Used when it can't be determined whether a scroll is in progress or not.
19537        ScrollUnknown = 4,
19538    }
19539    impl ScrollState {
19540        /// String value of the enum field names used in the ProtoBuf definition.
19541        ///
19542        /// The values are not transformed in any way and thus are considered stable
19543        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19544        pub fn as_str_name(&self) -> &'static str {
19545            match self {
19546                ScrollState::ScrollNone => "SCROLL_NONE",
19547                ScrollState::ScrollMainThread => "SCROLL_MAIN_THREAD",
19548                ScrollState::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
19549                ScrollState::ScrollRaster => "SCROLL_RASTER",
19550                ScrollState::ScrollUnknown => "SCROLL_UNKNOWN",
19551            }
19552        }
19553    }
19554    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19555    #[repr(i32)]
19556    pub enum FrameType {
19557        Forked = 0,
19558        Backfill = 1,
19559    }
19560    impl FrameType {
19561        /// String value of the enum field names used in the ProtoBuf definition.
19562        ///
19563        /// The values are not transformed in any way and thus are considered stable
19564        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19565        pub fn as_str_name(&self) -> &'static str {
19566            match self {
19567                FrameType::Forked => "FORKED",
19568                FrameType::Backfill => "BACKFILL",
19569            }
19570        }
19571    }
19572}
19573// End of protos/perfetto/trace/track_event/chrome_frame_reporter.proto
19574
19575// Begin of protos/perfetto/trace/track_event/chrome_keyed_service.proto
19576
19577/// Details about one of Chrome's keyed services associated with the event.
19578#[derive(Clone, PartialEq, ::prost::Message)]
19579pub struct ChromeKeyedService {
19580    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
19581    /// Chrome, these are static strings known at compile time).
19582    #[prost(string, optional, tag="1")]
19583    pub name: ::core::option::Option<::prost::alloc::string::String>,
19584}
19585// End of protos/perfetto/trace/track_event/chrome_keyed_service.proto
19586
19587// Begin of protos/perfetto/trace/track_event/chrome_latency_info.proto
19588
19589#[derive(Clone, PartialEq, ::prost::Message)]
19590pub struct ChromeLatencyInfo {
19591    #[prost(int64, optional, tag="1")]
19592    pub trace_id: ::core::option::Option<i64>,
19593    #[prost(enumeration="chrome_latency_info::Step", optional, tag="2")]
19594    pub step: ::core::option::Option<i32>,
19595    #[prost(int32, optional, tag="3")]
19596    pub frame_tree_node_id: ::core::option::Option<i32>,
19597    #[prost(message, repeated, tag="4")]
19598    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
19599    #[prost(bool, optional, tag="5")]
19600    pub is_coalesced: ::core::option::Option<bool>,
19601    #[prost(int64, optional, tag="6")]
19602    pub gesture_scroll_id: ::core::option::Option<i64>,
19603    #[prost(int64, optional, tag="7")]
19604    pub touch_id: ::core::option::Option<i64>,
19605    /// The type of input corresponding to this `ChromeLatencyInfo`.
19606    #[prost(enumeration="chrome_latency_info::InputType", optional, tag="8")]
19607    pub input_type: ::core::option::Option<i32>,
19608}
19609/// Nested message and enum types in `ChromeLatencyInfo`.
19610pub mod chrome_latency_info {
19611    #[derive(Clone, PartialEq, ::prost::Message)]
19612    pub struct ComponentInfo {
19613        #[prost(enumeration="LatencyComponentType", optional, tag="1")]
19614        pub component_type: ::core::option::Option<i32>,
19615        /// Microsecond timestamp in CLOCK_MONOTONIC domain
19616        #[prost(uint64, optional, tag="2")]
19617        pub time_us: ::core::option::Option<u64>,
19618    }
19619    /// NEXT ID: 12
19620    /// All step are optional but the enum is ordered (not by number) below in the
19621    /// order we expect them to appear if they are emitted in trace in a blocking
19622    /// fashion.
19623    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19624    #[repr(i32)]
19625    pub enum Step {
19626        Unspecified = 0,
19627        /// Emitted on the browser main thread.
19628        SendInputEventUi = 3,
19629        /// Happens on the renderer's compositor.
19630        HandleInputEventImpl = 5,
19631        DidHandleInputAndOverscroll = 8,
19632        /// Occurs on the Renderer's main thread.
19633        HandleInputEventMain = 4,
19634        MainThreadScrollUpdate = 2,
19635        HandleInputEventMainCommit = 1,
19636        /// Could be emitted on both the renderer's main OR compositor.
19637        HandledInputEventMainOrImpl = 9,
19638        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
19639        /// renderer's compositor and this will be emitted.
19640        HandledInputEventImpl = 10,
19641        /// Renderer's compositor.
19642        SwapBuffers = 6,
19643        /// Happens on the VizCompositor in the GPU process.
19644        DrawAndSwap = 7,
19645        /// Happens on the GPU main thread after the swap has completed.
19646        ///
19647        /// See above for NEXT ID, enum steps are not ordered by tag number.
19648        FinishedSwapBuffers = 11,
19649    }
19650    impl Step {
19651        /// String value of the enum field names used in the ProtoBuf definition.
19652        ///
19653        /// The values are not transformed in any way and thus are considered stable
19654        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19655        pub fn as_str_name(&self) -> &'static str {
19656            match self {
19657                Step::Unspecified => "STEP_UNSPECIFIED",
19658                Step::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
19659                Step::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
19660                Step::DidHandleInputAndOverscroll => "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL",
19661                Step::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
19662                Step::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
19663                Step::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
19664                Step::HandledInputEventMainOrImpl => "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL",
19665                Step::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
19666                Step::SwapBuffers => "STEP_SWAP_BUFFERS",
19667                Step::DrawAndSwap => "STEP_DRAW_AND_SWAP",
19668                Step::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
19669            }
19670        }
19671    }
19672    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
19673    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
19674    /// practices.
19675    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19676    #[repr(i32)]
19677    pub enum LatencyComponentType {
19678        ComponentUnspecified = 0,
19679        ComponentInputEventLatencyBeginRwh = 1,
19680        ComponentInputEventLatencyScrollUpdateOriginal = 2,
19681        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
19682        ComponentInputEventLatencyOriginal = 4,
19683        ComponentInputEventLatencyUi = 5,
19684        ComponentInputEventLatencyRendererMain = 6,
19685        ComponentInputEventLatencyRenderingScheduledMain = 7,
19686        ComponentInputEventLatencyRenderingScheduledImpl = 8,
19687        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
19688        ComponentInputEventLatencyAckRwh = 10,
19689        ComponentInputEventLatencyRendererSwap = 11,
19690        ComponentDisplayCompositorReceivedFrame = 12,
19691        ComponentInputEventGpuSwapBuffer = 13,
19692        ComponentInputEventLatencyFrameSwap = 14,
19693    }
19694    impl LatencyComponentType {
19695        /// String value of the enum field names used in the ProtoBuf definition.
19696        ///
19697        /// The values are not transformed in any way and thus are considered stable
19698        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19699        pub fn as_str_name(&self) -> &'static str {
19700            match self {
19701                LatencyComponentType::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
19702                LatencyComponentType::ComponentInputEventLatencyBeginRwh => "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH",
19703                LatencyComponentType::ComponentInputEventLatencyScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL",
19704                LatencyComponentType::ComponentInputEventLatencyFirstScrollUpdateOriginal => "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL",
19705                LatencyComponentType::ComponentInputEventLatencyOriginal => "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL",
19706                LatencyComponentType::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
19707                LatencyComponentType::ComponentInputEventLatencyRendererMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN",
19708                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledMain => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN",
19709                LatencyComponentType::ComponentInputEventLatencyRenderingScheduledImpl => "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL",
19710                LatencyComponentType::ComponentInputEventLatencyScrollUpdateLastEvent => "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT",
19711                LatencyComponentType::ComponentInputEventLatencyAckRwh => "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH",
19712                LatencyComponentType::ComponentInputEventLatencyRendererSwap => "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP",
19713                LatencyComponentType::ComponentDisplayCompositorReceivedFrame => "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME",
19714                LatencyComponentType::ComponentInputEventGpuSwapBuffer => "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER",
19715                LatencyComponentType::ComponentInputEventLatencyFrameSwap => "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP",
19716            }
19717        }
19718    }
19719    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19720    #[repr(i32)]
19721    pub enum InputType {
19722        UnspecifiedOrOther = 0,
19723        TouchMoved = 1,
19724        GestureScrollBegin = 2,
19725        GestureScrollUpdate = 3,
19726        GestureScrollEnd = 4,
19727        GestureTap = 5,
19728        GestureTapCancel = 6,
19729    }
19730    impl InputType {
19731        /// String value of the enum field names used in the ProtoBuf definition.
19732        ///
19733        /// The values are not transformed in any way and thus are considered stable
19734        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19735        pub fn as_str_name(&self) -> &'static str {
19736            match self {
19737                InputType::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
19738                InputType::TouchMoved => "TOUCH_MOVED",
19739                InputType::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
19740                InputType::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
19741                InputType::GestureScrollEnd => "GESTURE_SCROLL_END",
19742                InputType::GestureTap => "GESTURE_TAP",
19743                InputType::GestureTapCancel => "GESTURE_TAP_CANCEL",
19744            }
19745        }
19746    }
19747}
19748// End of protos/perfetto/trace/track_event/chrome_latency_info.proto
19749
19750// Begin of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
19751
19752/// Details about a legacy Chrome IPC message that is either sent by the event.
19753/// TODO(eseckler): Also use this message on the receiving side?
19754#[derive(Clone, PartialEq, ::prost::Message)]
19755pub struct ChromeLegacyIpc {
19756    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
19757    /// enum, e.g. FrameMsgStart,
19758    #[prost(enumeration="chrome_legacy_ipc::MessageClass", optional, tag="1")]
19759    pub message_class: ::core::option::Option<i32>,
19760    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
19761    /// IPC_MESSAGE_START macros.
19762    #[prost(uint32, optional, tag="2")]
19763    pub message_line: ::core::option::Option<u32>,
19764}
19765/// Nested message and enum types in `ChromeLegacyIpc`.
19766pub mod chrome_legacy_ipc {
19767    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19768    #[repr(i32)]
19769    pub enum MessageClass {
19770        ClassUnspecified = 0,
19771        ClassAutomation = 1,
19772        ClassFrame = 2,
19773        ClassPage = 3,
19774        ClassView = 4,
19775        ClassWidget = 5,
19776        ClassInput = 6,
19777        ClassTest = 7,
19778        ClassWorker = 8,
19779        ClassNacl = 9,
19780        ClassGpuChannel = 10,
19781        ClassMedia = 11,
19782        ClassPpapi = 12,
19783        ClassChrome = 13,
19784        ClassDrag = 14,
19785        ClassPrint = 15,
19786        ClassExtension = 16,
19787        ClassTextInputClient = 17,
19788        ClassBlinkTest = 18,
19789        ClassAccessibility = 19,
19790        ClassPrerender = 20,
19791        ClassChromoting = 21,
19792        ClassBrowserPlugin = 22,
19793        ClassAndroidWebView = 23,
19794        ClassNaclHost = 24,
19795        ClassEncryptedMedia = 25,
19796        ClassCast = 26,
19797        ClassGinJavaBridge = 27,
19798        ClassChromeUtilityPrinting = 28,
19799        ClassOzoneGpu = 29,
19800        ClassWebTest = 30,
19801        ClassNetworkHints = 31,
19802        ClassExtensionsGuestView = 32,
19803        ClassGuestView = 33,
19804        ClassMediaPlayerDelegate = 34,
19805        ClassExtensionWorker = 35,
19806        ClassSubresourceFilter = 36,
19807        ClassUnfreezableFrame = 37,
19808    }
19809    impl MessageClass {
19810        /// String value of the enum field names used in the ProtoBuf definition.
19811        ///
19812        /// The values are not transformed in any way and thus are considered stable
19813        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19814        pub fn as_str_name(&self) -> &'static str {
19815            match self {
19816                MessageClass::ClassUnspecified => "CLASS_UNSPECIFIED",
19817                MessageClass::ClassAutomation => "CLASS_AUTOMATION",
19818                MessageClass::ClassFrame => "CLASS_FRAME",
19819                MessageClass::ClassPage => "CLASS_PAGE",
19820                MessageClass::ClassView => "CLASS_VIEW",
19821                MessageClass::ClassWidget => "CLASS_WIDGET",
19822                MessageClass::ClassInput => "CLASS_INPUT",
19823                MessageClass::ClassTest => "CLASS_TEST",
19824                MessageClass::ClassWorker => "CLASS_WORKER",
19825                MessageClass::ClassNacl => "CLASS_NACL",
19826                MessageClass::ClassGpuChannel => "CLASS_GPU_CHANNEL",
19827                MessageClass::ClassMedia => "CLASS_MEDIA",
19828                MessageClass::ClassPpapi => "CLASS_PPAPI",
19829                MessageClass::ClassChrome => "CLASS_CHROME",
19830                MessageClass::ClassDrag => "CLASS_DRAG",
19831                MessageClass::ClassPrint => "CLASS_PRINT",
19832                MessageClass::ClassExtension => "CLASS_EXTENSION",
19833                MessageClass::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
19834                MessageClass::ClassBlinkTest => "CLASS_BLINK_TEST",
19835                MessageClass::ClassAccessibility => "CLASS_ACCESSIBILITY",
19836                MessageClass::ClassPrerender => "CLASS_PRERENDER",
19837                MessageClass::ClassChromoting => "CLASS_CHROMOTING",
19838                MessageClass::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
19839                MessageClass::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
19840                MessageClass::ClassNaclHost => "CLASS_NACL_HOST",
19841                MessageClass::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
19842                MessageClass::ClassCast => "CLASS_CAST",
19843                MessageClass::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
19844                MessageClass::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
19845                MessageClass::ClassOzoneGpu => "CLASS_OZONE_GPU",
19846                MessageClass::ClassWebTest => "CLASS_WEB_TEST",
19847                MessageClass::ClassNetworkHints => "CLASS_NETWORK_HINTS",
19848                MessageClass::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
19849                MessageClass::ClassGuestView => "CLASS_GUEST_VIEW",
19850                MessageClass::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
19851                MessageClass::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
19852                MessageClass::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
19853                MessageClass::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
19854            }
19855        }
19856    }
19857}
19858// End of protos/perfetto/trace/track_event/chrome_legacy_ipc.proto
19859
19860// Begin of protos/perfetto/trace/track_event/chrome_message_pump.proto
19861
19862/// Details about Chrome message pump events
19863#[derive(Clone, PartialEq, ::prost::Message)]
19864pub struct ChromeMessagePump {
19865    /// True if there are sent messages in the queue.
19866    #[prost(bool, optional, tag="1")]
19867    pub sent_messages_in_queue: ::core::option::Option<bool>,
19868    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
19869    /// invoke.
19870    #[prost(uint64, optional, tag="2")]
19871    pub io_handler_location_iid: ::core::option::Option<u64>,
19872}
19873// End of protos/perfetto/trace/track_event/chrome_message_pump.proto
19874
19875// Begin of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
19876
19877/// Contains information to identify mojo handling events. The trace events in
19878/// mojo are common for all mojo interfaces and this information is used to
19879/// identify who is the caller or callee.
19880#[derive(Clone, PartialEq, ::prost::Message)]
19881pub struct ChromeMojoEventInfo {
19882    /// Contains the interface name or the file name of the creator of a mojo
19883    /// handle watcher, recorded when an event if notified to the watcher. The code
19884    /// that runs within the track event belongs to the interface.
19885    #[prost(string, optional, tag="1")]
19886    pub watcher_notify_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
19887    /// The hash of the IPC message that is being handled.
19888    #[prost(uint32, optional, tag="2")]
19889    pub ipc_hash: ::core::option::Option<u32>,
19890    /// A static string representing the mojo interface name of the message that is
19891    /// being handled.
19892    #[prost(string, optional, tag="3")]
19893    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
19894    /// Refers to an interned UnsymbolizedSourceLocation.
19895    /// The UnsymbolizedSourceLocation contains the interface method that's being
19896    /// handled, represented as a native symbol.
19897    /// The native symbol can be symbolized after the trace is recorded.
19898    /// Not using a symbolized source location for official Chromium builds to
19899    /// reduce binary size - emitting file/function names as strings into the
19900    /// trace requires storing them in the binary, which causes a significant
19901    /// binary size bloat for Chromium.
19902    #[prost(uint64, optional, tag="4")]
19903    pub mojo_interface_method_iid: ::core::option::Option<u64>,
19904    /// Indicate whether this is a message or reply.
19905    #[prost(bool, optional, tag="5")]
19906    pub is_reply: ::core::option::Option<bool>,
19907    /// The payload size of the message being sent through mojo messages.
19908    #[prost(uint64, optional, tag="6")]
19909    pub payload_size: ::core::option::Option<u64>,
19910    /// Represents the size of the message. Includes all headers and user payload.
19911    #[prost(uint64, optional, tag="7")]
19912    pub data_num_bytes: ::core::option::Option<u64>,
19913}
19914#[derive(Clone, PartialEq, ::prost::Message)]
19915pub struct ChromeRendererSchedulerState {
19916    #[prost(enumeration="ChromeRailMode", optional, tag="1")]
19917    pub rail_mode: ::core::option::Option<i32>,
19918    #[prost(bool, optional, tag="2")]
19919    pub is_backgrounded: ::core::option::Option<bool>,
19920    #[prost(bool, optional, tag="3")]
19921    pub is_hidden: ::core::option::Option<bool>,
19922}
19923// End of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
19924
19925// Begin of protos/perfetto/trace/track_event/chrome_user_event.proto
19926
19927/// Details about a UI interaction initiated by the user, such as opening or
19928/// closing a tab or a context menu.
19929#[derive(Clone, PartialEq, ::prost::Message)]
19930pub struct ChromeUserEvent {
19931    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
19932    /// Chrome, these are usually static strings known at compile time, or
19933    /// concatenations of multiple such static strings).
19934    #[prost(string, optional, tag="1")]
19935    pub action: ::core::option::Option<::prost::alloc::string::String>,
19936    /// MD5 hash of the action string.
19937    #[prost(uint64, optional, tag="2")]
19938    pub action_hash: ::core::option::Option<u64>,
19939}
19940// End of protos/perfetto/trace/track_event/chrome_user_event.proto
19941
19942// Begin of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
19943
19944/// Details about HWNDMessageHandler trace events.
19945#[derive(Clone, PartialEq, ::prost::Message)]
19946pub struct ChromeWindowHandleEventInfo {
19947    #[prost(uint32, optional, tag="1")]
19948    pub dpi: ::core::option::Option<u32>,
19949    #[prost(uint32, optional, tag="2")]
19950    pub message_id: ::core::option::Option<u32>,
19951    #[prost(fixed64, optional, tag="3")]
19952    pub hwnd_ptr: ::core::option::Option<u64>,
19953}
19954// End of protos/perfetto/trace/track_event/chrome_window_handle_event_info.proto
19955
19956// Begin of protos/perfetto/trace/track_event/screenshot.proto
19957
19958#[derive(Clone, PartialEq, ::prost::Message)]
19959pub struct Screenshot {
19960    #[prost(bytes="vec", optional, tag="1")]
19961    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19962}
19963// End of protos/perfetto/trace/track_event/screenshot.proto
19964
19965// Begin of protos/perfetto/trace/track_event/task_execution.proto
19966
19967/// TrackEvent arguments describing the execution of a task.
19968#[derive(Clone, PartialEq, ::prost::Message)]
19969pub struct TaskExecution {
19970    /// Source location that the task was posted from.
19971    /// interned SourceLocation.
19972    #[prost(uint64, optional, tag="1")]
19973    pub posted_from_iid: ::core::option::Option<u64>,
19974}
19975// Begin of protos/perfetto/trace/track_event/track_event.proto
19976
19977// NOTE: Full TrackEvent support in the client lib and chrome is WIP, thus these
19978// protos are still subject to change. Don't depend on them staying as they are.
19979
19980/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
19981/// which describe activity on a track, such as a thread or asynchronous event
19982/// track. The track is specified using separate TrackDescriptor messages and
19983/// referred to via the track's UUID.
19984///
19985/// A simple TrackEvent packet specifies a timestamp, category, name and type:
19986/// ```protobuf
19987///    trace_packet {
19988///      timestamp: 1000
19989///      track_event {
19990///        categories: \["my_cat"\]
19991///        name: "my_event"
19992///        type: TYPE_INSTANT
19993///       }
19994///     }
19995/// ```
19996///
19997/// To associate an event with a custom track (e.g. a thread), the track is
19998/// defined in a separate packet and referred to from the TrackEvent by its UUID:
19999/// ```protobuf
20000///    trace_packet {
20001///      track_descriptor {
20002///        track_uuid: 1234
20003///        name: "my_track"
20004///
20005///        // Optionally, associate the track with a thread.
20006///        thread_descriptor {
20007///          pid: 10
20008///          tid: 10
20009///          ..
20010///        }
20011///      }
20012///    }
20013/// ```
20014///
20015/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
20016///
20017/// ```protobuf
20018///    trace_packet {
20019///      timestamp: 1200
20020///      track_event {
20021///        track_uuid: 1234
20022///        categories: \["my_cat"\]
20023///        name: "my_slice"
20024///        type: TYPE_SLICE_BEGIN
20025///      }
20026///    }
20027///    trace_packet {
20028///      timestamp: 1400
20029///      track_event {
20030///        track_uuid: 1234
20031///        type: TYPE_SLICE_END
20032///      }
20033///    }
20034/// ```
20035/// TrackEvents also support optimizations to reduce data repetition and encoded
20036/// data size, e.g. through data interning (names, categories, ...) and delta
20037/// encoding of timestamps/counters. For details, see the InternedData message.
20038/// Further, default values for attributes of events on the same sequence (e.g.
20039/// their default track association) can be emitted as part of a
20040/// TrackEventDefaults message.
20041///
20042/// Next reserved id: 13 (up to 15). Next id: 57.
20043#[derive(Clone, PartialEq, ::prost::Message)]
20044pub struct TrackEvent {
20045    /// Names of categories of the event. In the client library, categories are a
20046    /// way to turn groups of individual events on or off.
20047    /// interned EventCategoryName.
20048    #[prost(uint64, repeated, packed="false", tag="3")]
20049    pub category_iids: ::prost::alloc::vec::Vec<u64>,
20050    /// non-interned variant.
20051    #[prost(string, repeated, tag="22")]
20052    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20053    #[prost(enumeration="track_event::Type", optional, tag="9")]
20054    pub r#type: ::core::option::Option<i32>,
20055    /// Identifies the track of the event. The default value may be overridden
20056    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
20057    /// sequence (in most cases sequence = one thread). If no value is specified
20058    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
20059    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
20060    #[prost(uint64, optional, tag="11")]
20061    pub track_uuid: ::core::option::Option<u64>,
20062    /// To encode counter values more efficiently, we support attaching additional
20063    /// counter values to a TrackEvent of any type. All values will share the same
20064    /// timestamp specified in the TracePacket. The value at
20065    /// extra_counter_values\[N\] is for the counter track referenced by
20066    /// extra_counter_track_uuids\[N\].
20067    ///
20068    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
20069    /// should always be equal or more uuids than values. It is valid to set more
20070    /// uuids (e.g. via defaults) than values. If uuids are specified in
20071    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
20072    /// default uuid list.
20073    ///
20074    /// For example, this allows snapshotting the thread time clock at each
20075    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
20076    #[prost(uint64, repeated, packed="false", tag="31")]
20077    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20078    #[prost(int64, repeated, packed="false", tag="12")]
20079    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
20080    /// Counter snapshots using floating point instead of integer values.
20081    #[prost(uint64, repeated, packed="false", tag="45")]
20082    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20083    #[prost(double, repeated, packed="false", tag="46")]
20084    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
20085    /// IDs of flows originating, passing through, or ending at this event.
20086    /// Flow IDs are global within a trace.
20087    ///
20088    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
20089    /// an input event may be handled on one thread but cause another event on
20090    /// a different thread - a flow between the two events can associate them.
20091    ///
20092    /// The direction of the flows between events is inferred from the events'
20093    /// timestamps. The earliest event with the same flow ID becomes the source
20094    /// of the flow. Any events thereafter are intermediate steps of the flow,
20095    /// until the flow terminates at the last event with the flow ID.
20096    ///
20097    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
20098    /// that the same ID can later be reused for another flow.
20099    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
20100    #[deprecated]
20101    #[prost(uint64, repeated, packed="false", tag="36")]
20102    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
20103    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
20104    /// consumption.
20105    #[prost(fixed64, repeated, packed="false", tag="47")]
20106    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
20107    /// List of flow ids which should terminate on this event, otherwise same as
20108    /// |flow_ids|.
20109    /// Any one flow ID should be either listed as part of |flow_ids| OR
20110    /// |terminating_flow_ids|, not both.
20111    /// DEPRECATED. Only kept for backwards compatibility.  Use
20112    /// |terminating_flow_ids|.
20113    #[deprecated]
20114    #[prost(uint64, repeated, packed="false", tag="42")]
20115    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
20116    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
20117    /// "terminating_flow_ids" to reduce memory consumption.
20118    #[prost(fixed64, repeated, packed="false", tag="48")]
20119    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
20120    /// Debug annotations associated with this event. These are arbitrary key-value
20121    /// pairs that can be used to attach additional information to the event.
20122    /// See DebugAnnotation message for details on supported value types.
20123    ///
20124    /// For example, debug annotations can be used to attach a URL or resource
20125    /// identifier to a network request event. Arrays, dictionaries and full
20126    /// nested structures (e.g. arrays of dictionaries of dictionaries)
20127    /// are supported.
20128    #[prost(message, repeated, tag="4")]
20129    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
20130    // ---------------------------------------------------------------------------
20131    // TrackEvent arguments:
20132    // ---------------------------------------------------------------------------
20133    //
20134    // NOTE: The fields below this point are NOT part of the stable public API.
20135    // They are primarily intended for internal use by Chrome and Android. These
20136    // fields may change or be removed without notice. For custom/synthetic
20137    // traces, prefer using the fields above (name, categories, type, flows,
20138    // correlation_id, callstack, etc.) along with custom debug_annotations.
20139
20140    /// Typed event arguments:
20141    #[prost(message, optional, tag="5")]
20142    pub task_execution: ::core::option::Option<TaskExecution>,
20143    #[prost(message, optional, tag="21")]
20144    pub log_message: ::core::option::Option<LogMessage>,
20145    #[prost(message, optional, tag="24")]
20146    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
20147    #[prost(message, optional, tag="25")]
20148    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
20149    #[prost(message, optional, tag="26")]
20150    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
20151    #[prost(message, optional, tag="27")]
20152    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
20153    #[prost(message, optional, tag="28")]
20154    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
20155    #[prost(message, optional, tag="29")]
20156    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
20157    /// DEPRECATED. Only kept for backwards compatibility. Use the
20158    /// |ChromeTrackEvent.frame_reporter| extension in
20159    /// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
20160    /// instead.
20161    #[deprecated]
20162    #[prost(message, optional, tag="32")]
20163    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
20164    #[prost(message, optional, tag="39")]
20165    pub chrome_application_state_info: ::core::option::Option<ChromeApplicationStateInfo>,
20166    #[prost(message, optional, tag="40")]
20167    pub chrome_renderer_scheduler_state: ::core::option::Option<ChromeRendererSchedulerState>,
20168    #[prost(message, optional, tag="41")]
20169    pub chrome_window_handle_event_info: ::core::option::Option<ChromeWindowHandleEventInfo>,
20170    #[prost(message, optional, tag="43")]
20171    pub chrome_content_settings_event_info: ::core::option::Option<ChromeContentSettingsEventInfo>,
20172    #[prost(message, optional, tag="49")]
20173    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
20174    #[prost(message, optional, tag="50")]
20175    pub screenshot: ::core::option::Option<Screenshot>,
20176    #[prost(message, optional, tag="35")]
20177    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
20178    #[prost(message, optional, tag="38")]
20179    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
20180    #[prost(message, optional, tag="6")]
20181    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
20182    /// Optional name of the event for its display in trace viewer. May be left
20183    /// unspecified for events with typed arguments.
20184    ///
20185    /// Note that metrics should not rely on event names, as they are prone to
20186    /// changing. Instead, they should use typed arguments to identify the events
20187    /// they are interested in.
20188    #[prost(oneof="track_event::NameField", tags="10, 23")]
20189    pub name_field: ::core::option::Option<track_event::NameField>,
20190    /// A new value for a counter track. |track_uuid| should refer to a track with
20191    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
20192    /// efficient encoding of counter values that are sampled at the beginning/end
20193    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
20194    /// Counter values can optionally be encoded in as delta values (positive or
20195    /// negative) on each packet sequence (see CounterIncrementalBase).
20196    #[prost(oneof="track_event::CounterValueField", tags="30, 44")]
20197    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
20198    /// An opaque identifier to correlate this slice with other slices that are
20199    /// considered part of the same logical operation, even if they are not
20200    /// causally connected. Examples uses of a correlation id might be the number
20201    /// of frame going through various stages of rendering in a GPU, the id for an
20202    /// RPC request going through a distributed system, or the id of a network
20203    /// request going through various stages of processing by the kernel.
20204    ///
20205    /// NOTE: if the events *are* causually connected, you probably want to use
20206    /// flows instead of OR in addition to correlation ids.
20207    ///
20208    /// UIs can use this identifier to visually link these slices, for instance,
20209    /// by assigning them a consistent color or highlighting the entire correlated
20210    /// set when one slice is hovered.
20211    ///
20212    /// Only one field within this 'oneof' should be set to define the correlation.
20213    #[prost(oneof="track_event::CorrelationIdField", tags="52, 53, 54")]
20214    pub correlation_id_field: ::core::option::Option<track_event::CorrelationIdField>,
20215    /// Callstack associated with this event. This captures the program stack at
20216    /// the time the event occurred, useful for understanding what code path led
20217    /// to the event.
20218    ///
20219    /// Two variants are supported:
20220    /// - callstack: Inline callstack data (simpler when trace size is not a
20221    ///    concern or callstacks are unique)
20222    /// - callstack_iid: Reference to an interned Callstack in InternedData
20223    ///    (efficient for repeated callstacks)
20224    ///
20225    /// Only one of these fields should be set.
20226    #[prost(oneof="track_event::CallstackField", tags="55, 56")]
20227    pub callstack_field: ::core::option::Option<track_event::CallstackField>,
20228    /// This field is used only if the source location represents the function that
20229    /// executes during this event.
20230    #[prost(oneof="track_event::SourceLocationField", tags="33, 34")]
20231    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
20232    // ---------------------------------------------------------------------------
20233    // Deprecated / legacy event fields, which will be removed in the future:
20234    // ---------------------------------------------------------------------------
20235
20236    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
20237    /// TracePacket instead.
20238    ///
20239    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
20240    #[prost(oneof="track_event::Timestamp", tags="1, 16")]
20241    pub timestamp: ::core::option::Option<track_event::Timestamp>,
20242    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20243    /// encode thread time instead.
20244    ///
20245    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
20246    /// microseconds.
20247    #[prost(oneof="track_event::ThreadTime", tags="2, 17")]
20248    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
20249    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20250    /// encode thread instruction count instead.
20251    ///
20252    /// Value of the instruction counter for the current thread.
20253    #[prost(oneof="track_event::ThreadInstructionCount", tags="8, 20")]
20254    pub thread_instruction_count: ::core::option::Option<track_event::ThreadInstructionCount>,
20255}
20256/// Nested message and enum types in `TrackEvent`.
20257pub mod track_event {
20258    /// Inline callstack for TrackEvents when interning is not needed.
20259    /// This is a simplified version of the profiling Callstack/Frame messages,
20260    /// designed for cases where trace size is not critical or callstacks are
20261    /// unique.
20262    ///
20263    /// Use this for simple callstacks with function names and source locations.
20264    /// For binary/library information (mappings, build IDs, relative PCs), use
20265    /// interned callstacks via callstack_iid instead.
20266    #[derive(Clone, PartialEq, ::prost::Message)]
20267    pub struct Callstack {
20268        /// Frames of this callstack, ordered from bottom (outermost) to top
20269        /// (innermost). For example, if main() calls foo() which calls bar(), the
20270        /// frames would be: [main, foo, bar]
20271        #[prost(message, repeated, tag="1")]
20272        pub frames: ::prost::alloc::vec::Vec<callstack::Frame>,
20273    }
20274    /// Nested message and enum types in `Callstack`.
20275    pub mod callstack {
20276        /// Frame within an inline callstack.
20277        #[derive(Clone, PartialEq, ::prost::Message)]
20278        pub struct Frame {
20279            /// Function name, e.g., "malloc" or "std::vector<int>::push_back"
20280            #[prost(string, optional, tag="1")]
20281            pub function_name: ::core::option::Option<::prost::alloc::string::String>,
20282            /// Optional: Source file path, e.g., "/src/foo.cc"
20283            #[prost(string, optional, tag="2")]
20284            pub source_file: ::core::option::Option<::prost::alloc::string::String>,
20285            /// Optional: Line number in the source file
20286            #[prost(uint32, optional, tag="3")]
20287            pub line_number: ::core::option::Option<u32>,
20288        }
20289    }
20290    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
20291    /// event attributes are initially simply proxied for conversion to a JSON
20292    /// trace. We intend to gradually transition these attributes to similar native
20293    /// features in TrackEvent (e.g. async + flow events), or deprecate them
20294    /// without replacement where transition is unsuitable.
20295    ///
20296    /// Next reserved id: 16 (up to 16).
20297    /// Next id: 20.
20298    #[derive(Clone, PartialEq, ::prost::Message)]
20299    pub struct LegacyEvent {
20300        /// Deprecated, use TrackEvent::name(_iid) instead.
20301        /// interned EventName.
20302        #[prost(uint64, optional, tag="1")]
20303        pub name_iid: ::core::option::Option<u64>,
20304        #[prost(int32, optional, tag="2")]
20305        pub phase: ::core::option::Option<i32>,
20306        #[prost(int64, optional, tag="3")]
20307        pub duration_us: ::core::option::Option<i64>,
20308        #[prost(int64, optional, tag="4")]
20309        pub thread_duration_us: ::core::option::Option<i64>,
20310        /// Elapsed retired instruction count during the event.
20311        #[prost(int64, optional, tag="15")]
20312        pub thread_instruction_delta: ::core::option::Option<i64>,
20313        /// Additional optional scope for |id|.
20314        #[prost(string, optional, tag="7")]
20315        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
20316        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
20317        #[prost(bool, optional, tag="9")]
20318        pub use_async_tts: ::core::option::Option<bool>,
20319        /// Idenfifies a flow. Flow events with the same bind_id are connected.
20320        #[prost(uint64, optional, tag="8")]
20321        pub bind_id: ::core::option::Option<u64>,
20322        /// Use the enclosing slice as binding point for a flow end event instead of
20323        /// the next slice. Flow start/step events always bind to the enclosing
20324        /// slice.
20325        #[prost(bool, optional, tag="12")]
20326        pub bind_to_enclosing: ::core::option::Option<bool>,
20327        #[prost(enumeration="legacy_event::FlowDirection", optional, tag="13")]
20328        pub flow_direction: ::core::option::Option<i32>,
20329        #[prost(enumeration="legacy_event::InstantEventScope", optional, tag="14")]
20330        pub instant_event_scope: ::core::option::Option<i32>,
20331        /// Override the pid/tid if the writer needs to emit events on behalf of
20332        /// another process/thread. This should be the exception. Normally, the
20333        /// pid+tid from ThreadDescriptor is used.
20334        #[prost(int32, optional, tag="18")]
20335        pub pid_override: ::core::option::Option<i32>,
20336        #[prost(int32, optional, tag="19")]
20337        pub tid_override: ::core::option::Option<i32>,
20338        #[prost(oneof="legacy_event::Id", tags="6, 10, 11")]
20339        pub id: ::core::option::Option<legacy_event::Id>,
20340    }
20341    /// Nested message and enum types in `LegacyEvent`.
20342    pub mod legacy_event {
20343        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20344        #[repr(i32)]
20345        pub enum FlowDirection {
20346            FlowUnspecified = 0,
20347            FlowIn = 1,
20348            FlowOut = 2,
20349            FlowInout = 3,
20350        }
20351        impl FlowDirection {
20352            /// String value of the enum field names used in the ProtoBuf definition.
20353            ///
20354            /// The values are not transformed in any way and thus are considered stable
20355            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20356            pub fn as_str_name(&self) -> &'static str {
20357                match self {
20358                    FlowDirection::FlowUnspecified => "FLOW_UNSPECIFIED",
20359                    FlowDirection::FlowIn => "FLOW_IN",
20360                    FlowDirection::FlowOut => "FLOW_OUT",
20361                    FlowDirection::FlowInout => "FLOW_INOUT",
20362                }
20363            }
20364        }
20365        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20366        #[repr(i32)]
20367        pub enum InstantEventScope {
20368            ScopeUnspecified = 0,
20369            ScopeGlobal = 1,
20370            ScopeProcess = 2,
20371            ScopeThread = 3,
20372        }
20373        impl InstantEventScope {
20374            /// String value of the enum field names used in the ProtoBuf definition.
20375            ///
20376            /// The values are not transformed in any way and thus are considered stable
20377            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20378            pub fn as_str_name(&self) -> &'static str {
20379                match self {
20380                    InstantEventScope::ScopeUnspecified => "SCOPE_UNSPECIFIED",
20381                    InstantEventScope::ScopeGlobal => "SCOPE_GLOBAL",
20382                    InstantEventScope::ScopeProcess => "SCOPE_PROCESS",
20383                    InstantEventScope::ScopeThread => "SCOPE_THREAD",
20384                }
20385            }
20386        }
20387        #[derive(Clone, PartialEq, ::prost::Oneof)]
20388        pub enum Id {
20389            #[prost(uint64, tag="6")]
20390            UnscopedId(u64),
20391            #[prost(uint64, tag="10")]
20392            LocalId(u64),
20393            #[prost(uint64, tag="11")]
20394            GlobalId(u64),
20395        }
20396    }
20397    // TODO(eseckler): Support using binary symbols for category/event names.
20398
20399    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
20400    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20401    #[repr(i32)]
20402    pub enum Type {
20403        Unspecified = 0,
20404        /// Slice events are events that have a begin and end timestamp, i.e. a
20405        /// duration. They can be nested similar to a callstack: If, on the same
20406        /// track, event B begins after event A, but before A ends, B is a child
20407        /// event of A and will be drawn as a nested event underneath A in the UI.
20408        /// Note that child events should always end before their parents (e.g. B
20409        /// before A).
20410        ///
20411        /// Each slice event is formed by a pair of BEGIN + END events. The END event
20412        /// does not need to repeat any TrackEvent fields it has in common with its
20413        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
20414        /// END pair will be merged during trace import.
20415        ///
20416        /// Note that we deliberately chose not to support COMPLETE events (which
20417        /// would specify a duration directly) since clients would need to delay
20418        /// writing them until the slice is completed, which can result in reordered
20419        /// events in the trace and loss of unfinished events at the end of a trace.
20420        SliceBegin = 1,
20421        SliceEnd = 2,
20422        /// Instant events are nestable events without duration. They can be children
20423        /// of slice events on the same track.
20424        Instant = 3,
20425        /// Event that provides a value for a counter track. |track_uuid| should
20426        /// refer to a counter track and |counter_value| set to the new value. Note
20427        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
20428        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
20429        Counter = 4,
20430    }
20431    impl Type {
20432        /// String value of the enum field names used in the ProtoBuf definition.
20433        ///
20434        /// The values are not transformed in any way and thus are considered stable
20435        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20436        pub fn as_str_name(&self) -> &'static str {
20437            match self {
20438                Type::Unspecified => "TYPE_UNSPECIFIED",
20439                Type::SliceBegin => "TYPE_SLICE_BEGIN",
20440                Type::SliceEnd => "TYPE_SLICE_END",
20441                Type::Instant => "TYPE_INSTANT",
20442                Type::Counter => "TYPE_COUNTER",
20443            }
20444        }
20445    }
20446    /// Optional name of the event for its display in trace viewer. May be left
20447    /// unspecified for events with typed arguments.
20448    ///
20449    /// Note that metrics should not rely on event names, as they are prone to
20450    /// changing. Instead, they should use typed arguments to identify the events
20451    /// they are interested in.
20452    #[derive(Clone, PartialEq, ::prost::Oneof)]
20453    pub enum NameField {
20454        /// interned EventName.
20455        #[prost(uint64, tag="10")]
20456        NameIid(u64),
20457        /// non-interned variant.
20458        #[prost(string, tag="23")]
20459        Name(::prost::alloc::string::String),
20460    }
20461    /// A new value for a counter track. |track_uuid| should refer to a track with
20462    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
20463    /// efficient encoding of counter values that are sampled at the beginning/end
20464    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
20465    /// Counter values can optionally be encoded in as delta values (positive or
20466    /// negative) on each packet sequence (see CounterIncrementalBase).
20467    #[derive(Clone, PartialEq, ::prost::Oneof)]
20468    pub enum CounterValueField {
20469        #[prost(int64, tag="30")]
20470        CounterValue(i64),
20471        #[prost(double, tag="44")]
20472        DoubleCounterValue(f64),
20473    }
20474    /// An opaque identifier to correlate this slice with other slices that are
20475    /// considered part of the same logical operation, even if they are not
20476    /// causally connected. Examples uses of a correlation id might be the number
20477    /// of frame going through various stages of rendering in a GPU, the id for an
20478    /// RPC request going through a distributed system, or the id of a network
20479    /// request going through various stages of processing by the kernel.
20480    ///
20481    /// NOTE: if the events *are* causually connected, you probably want to use
20482    /// flows instead of OR in addition to correlation ids.
20483    ///
20484    /// UIs can use this identifier to visually link these slices, for instance,
20485    /// by assigning them a consistent color or highlighting the entire correlated
20486    /// set when one slice is hovered.
20487    ///
20488    /// Only one field within this 'oneof' should be set to define the correlation.
20489    #[derive(Clone, PartialEq, ::prost::Oneof)]
20490    pub enum CorrelationIdField {
20491        /// A 64-bit unsigned integer used as the correlation ID.
20492        ///
20493        /// Best for performance and compact traces if the identifier is naturally
20494        /// numerical or can be easily mapped to one by the trace producer.
20495        #[prost(uint64, tag="52")]
20496        CorrelationId(u64),
20497        /// A string value used as the correlation ID.
20498        ///
20499        /// Offers maximum flexibility for human-readable or complex identifiers
20500        /// (e.g., GUIDs). Note: Using many unique, long strings may increase trace
20501        /// size. For frequently repeated string identifiers, consider
20502        /// 'correlation_id_string_iid'.
20503        #[prost(string, tag="53")]
20504        CorrelationIdStr(::prost::alloc::string::String),
20505        /// An interned string identifier (an IID) for correlation.
20506        ///
20507        /// This 64-bit ID refers to a string defined in the 'correlation_id_str'
20508        /// field within the packet sequence's InternedData. This approach combines
20509        /// the descriptiveness and uniqueness of strings with the efficiency of
20510        /// integer IDs for storage and comparison, especially for identifiers that
20511        /// repeat across many events.
20512        #[prost(uint64, tag="54")]
20513        CorrelationIdStrIid(u64),
20514    }
20515    /// Callstack associated with this event. This captures the program stack at
20516    /// the time the event occurred, useful for understanding what code path led
20517    /// to the event.
20518    ///
20519    /// Two variants are supported:
20520    /// - callstack: Inline callstack data (simpler when trace size is not a
20521    ///    concern or callstacks are unique)
20522    /// - callstack_iid: Reference to an interned Callstack in InternedData
20523    ///    (efficient for repeated callstacks)
20524    ///
20525    /// Only one of these fields should be set.
20526    #[derive(Clone, PartialEq, ::prost::Oneof)]
20527    pub enum CallstackField {
20528        /// Inline callstack data. Use this for simplicity when interning is not
20529        /// needed (e.g., for unique callstacks or when trace size is not critical).
20530        #[prost(message, tag="55")]
20531        Callstack(Callstack),
20532        /// Reference to interned Callstack (see InternedData.callstacks).
20533        /// This is the efficient option when callstacks are repeated.
20534        ///
20535        /// Note: iids *always* start from 1. A value of 0 is considered "not set".
20536        #[prost(uint64, tag="56")]
20537        CallstackIid(u64),
20538    }
20539    /// This field is used only if the source location represents the function that
20540    /// executes during this event.
20541    #[derive(Clone, PartialEq, ::prost::Oneof)]
20542    pub enum SourceLocationField {
20543        /// Non-interned field.
20544        #[prost(message, tag="33")]
20545        SourceLocation(super::SourceLocation),
20546        /// Interned field.
20547        #[prost(uint64, tag="34")]
20548        SourceLocationIid(u64),
20549    }
20550    // ---------------------------------------------------------------------------
20551    // Deprecated / legacy event fields, which will be removed in the future:
20552    // ---------------------------------------------------------------------------
20553
20554    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
20555    /// TracePacket instead.
20556    ///
20557    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
20558    #[derive(Clone, PartialEq, ::prost::Oneof)]
20559    pub enum Timestamp {
20560        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
20561        /// calculate the absolute timestamp value, sum up all delta values of the
20562        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
20563        /// the |reference_timestamp| in ThreadDescriptor. This value should always
20564        /// be positive.
20565        #[prost(int64, tag="1")]
20566        TimestampDeltaUs(i64),
20567        /// Absolute value (e.g. a manually specified timestamp in the macro).
20568        /// This is a one-off value that does not affect delta timestamp computation
20569        /// in subsequent TrackEvents.
20570        #[prost(int64, tag="16")]
20571        TimestampAbsoluteUs(i64),
20572    }
20573    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20574    /// encode thread time instead.
20575    ///
20576    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
20577    /// microseconds.
20578    #[derive(Clone, PartialEq, ::prost::Oneof)]
20579    pub enum ThreadTime {
20580        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
20581        /// calculate the absolute timestamp value, sum up all delta values of the
20582        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
20583        /// the |reference_timestamp| in ThreadDescriptor. This value should always
20584        /// be positive.
20585        #[prost(int64, tag="2")]
20586        ThreadTimeDeltaUs(i64),
20587        /// This is a one-off absolute value that does not affect delta timestamp
20588        /// computation in subsequent TrackEvents.
20589        #[prost(int64, tag="17")]
20590        ThreadTimeAbsoluteUs(i64),
20591    }
20592    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
20593    /// encode thread instruction count instead.
20594    ///
20595    /// Value of the instruction counter for the current thread.
20596    #[derive(Clone, PartialEq, ::prost::Oneof)]
20597    pub enum ThreadInstructionCount {
20598        /// Same encoding as |thread_time| field above.
20599        #[prost(int64, tag="8")]
20600        ThreadInstructionCountDelta(i64),
20601        #[prost(int64, tag="20")]
20602        ThreadInstructionCountAbsolute(i64),
20603    }
20604}
20605/// Default values for fields of all TrackEvents on the same packet sequence.
20606/// Should be emitted as part of TracePacketDefaults whenever incremental state
20607/// is cleared. It's defined here because field IDs should match those of the
20608/// corresponding fields in TrackEvent.
20609#[derive(Clone, PartialEq, ::prost::Message)]
20610pub struct TrackEventDefaults {
20611    #[prost(uint64, optional, tag="11")]
20612    pub track_uuid: ::core::option::Option<u64>,
20613    #[prost(uint64, repeated, packed="false", tag="31")]
20614    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20615    #[prost(uint64, repeated, packed="false", tag="45")]
20616    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
20617}
20618// --------------------
20619// Interned data types:
20620// --------------------
20621
20622#[derive(Clone, PartialEq, ::prost::Message)]
20623pub struct EventCategory {
20624    #[prost(uint64, optional, tag="1")]
20625    pub iid: ::core::option::Option<u64>,
20626    #[prost(string, optional, tag="2")]
20627    pub name: ::core::option::Option<::prost::alloc::string::String>,
20628}
20629#[derive(Clone, PartialEq, ::prost::Message)]
20630pub struct EventName {
20631    #[prost(uint64, optional, tag="1")]
20632    pub iid: ::core::option::Option<u64>,
20633    #[prost(string, optional, tag="2")]
20634    pub name: ::core::option::Option<::prost::alloc::string::String>,
20635}
20636// End of protos/perfetto/trace/track_event/track_event.proto
20637
20638// Begin of protos/perfetto/trace/interned_data/interned_data.proto
20639
20640// ------------------------------ DATA INTERNING: ------------------------------
20641// Interning indexes are built up gradually by adding the entries contained in
20642// each TracePacket of the same packet sequence (packets emitted by the same
20643// producer and TraceWriter, see |trusted_packet_sequence_id|). Thus, packets
20644// can only refer to interned data from other packets in the same sequence.
20645//
20646// The writer will emit new entries when it encounters new internable values
20647// that aren't yet in the index. Data in current and subsequent TracePackets can
20648// then refer to the entry by its position (interning ID, abbreviated "iid") in
20649// its index. An interning ID with value 0 is considered invalid (not set).
20650//
20651// Because of the incremental build-up, the interning index will miss data when
20652// TracePackets are lost, e.g. because a chunk was overridden in the central
20653// ring buffer. To avoid invalidation of the whole trace in such a case, the
20654// index is periodically reset (see SEQ_INCREMENTAL_STATE_CLEARED).
20655// When packet loss occurs, the reader will only lose interning data up to the
20656// next reset.
20657// -----------------------------------------------------------------------------
20658
20659/// Message that contains new entries for the interning indices of a packet
20660/// sequence.
20661///
20662/// The writer will usually emit new entries in the same TracePacket that first
20663/// refers to them (since the last reset of interning state). They may also be
20664/// emitted proactively in advance of referring to them in later packets.
20665///
20666/// Next reserved id: 8 (up to 15).
20667/// Next id: 44.
20668///
20669/// TODO(eseckler): Replace iid fields inside interned messages with
20670/// map<iid, message> type fields in InternedData.
20671#[derive(Clone, PartialEq, ::prost::Message)]
20672pub struct InternedData {
20673    /// Each field's message type needs to specify an |iid| field, which is the ID
20674    /// of the entry in the field's interning index. Each field constructs its own
20675    /// index, thus interning IDs are scoped to the tracing session and field
20676    /// (usually as a counter for efficient var-int encoding), and optionally to
20677    /// the incremental state generation of the packet sequence.
20678    #[prost(message, repeated, tag="1")]
20679    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
20680    #[prost(message, repeated, tag="2")]
20681    pub event_names: ::prost::alloc::vec::Vec<EventName>,
20682    #[prost(message, repeated, tag="3")]
20683    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
20684    #[prost(message, repeated, tag="27")]
20685    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<DebugAnnotationValueTypeName>,
20686    #[prost(message, repeated, tag="4")]
20687    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
20688    #[prost(message, repeated, tag="28")]
20689    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<UnsymbolizedSourceLocation>,
20690    #[prost(message, repeated, tag="20")]
20691    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
20692    #[prost(message, repeated, tag="25")]
20693    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
20694    // Note: field IDs up to 15 should be used for frequent data only.
20695
20696    /// Build IDs of exectuable files.
20697    #[prost(message, repeated, tag="16")]
20698    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
20699    /// Paths to executable files.
20700    #[prost(message, repeated, tag="17")]
20701    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
20702    /// Paths to source files.
20703    #[prost(message, repeated, tag="18")]
20704    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
20705    /// Names of functions used in frames below.
20706    #[prost(message, repeated, tag="5")]
20707    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
20708    /// Executable files mapped into processes.
20709    #[prost(message, repeated, tag="19")]
20710    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
20711    /// Frames of callstacks of a program.
20712    #[prost(message, repeated, tag="6")]
20713    pub frames: ::prost::alloc::vec::Vec<Frame>,
20714    /// A callstack of a program.
20715    #[prost(message, repeated, tag="7")]
20716    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
20717    /// Additional Vulkan information sent in a VulkanMemoryEvent message
20718    #[prost(message, repeated, tag="22")]
20719    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
20720    /// Graphics context of a render stage event.  This represent the GL
20721    /// context for an OpenGl app or the VkDevice for a Vulkan app.
20722    #[prost(message, repeated, tag="23")]
20723    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
20724    /// Description of a GPU hardware queue or render stage.
20725    #[prost(message, repeated, tag="24")]
20726    pub gpu_specifications: ::prost::alloc::vec::Vec<InternedGpuRenderStageSpecification>,
20727    /// This is set when FtraceConfig.symbolize_ksyms = true.
20728    /// The id of each symbol the number that will be reported in ftrace events
20729    /// like sched_block_reason.caller and is obtained from a monotonic counter.
20730    /// The same symbol can have different indexes in different bundles.
20731    /// This is is NOT the real address. This is to avoid disclosing KASLR through
20732    /// traces.
20733    #[prost(message, repeated, tag="26")]
20734    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
20735    /// Interned string values in the DebugAnnotation proto.
20736    #[prost(message, repeated, tag="29")]
20737    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
20738    /// Interned packet context for android.network_packets.
20739    #[prost(message, repeated, tag="30")]
20740    pub packet_context: ::prost::alloc::vec::Vec<NetworkPacketContext>,
20741    /// Interned name of a js function. We only intern js functions as there is a
20742    /// lot of duplication for them, but less so for other strings in the V8 data
20743    /// source.
20744    #[prost(message, repeated, tag="31")]
20745    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
20746    /// Js functions can be emitted multiple times for various compilation tiers,
20747    /// so it makes sense to deduplicate all this.
20748    #[prost(message, repeated, tag="32")]
20749    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
20750    /// Interned JS script (there is one associated with each JS function)
20751    #[prost(message, repeated, tag="33")]
20752    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
20753    /// Interned Wasm script (there is one associated with each Wasm function)
20754    #[prost(message, repeated, tag="34")]
20755    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
20756    /// Every V8 event is associated with an isolate, intern the isolate to remove
20757    /// duplication.
20758    #[prost(message, repeated, tag="35")]
20759    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
20760    /// Interned protolog strings args.
20761    #[prost(message, repeated, tag="36")]
20762    pub protolog_string_args: ::prost::alloc::vec::Vec<InternedString>,
20763    /// Interned protolog stacktraces.
20764    #[prost(message, repeated, tag="37")]
20765    pub protolog_stacktrace: ::prost::alloc::vec::Vec<InternedString>,
20766    /// viewcapture
20767    #[prost(message, repeated, tag="38")]
20768    pub viewcapture_package_name: ::prost::alloc::vec::Vec<InternedString>,
20769    #[prost(message, repeated, tag="39")]
20770    pub viewcapture_window_name: ::prost::alloc::vec::Vec<InternedString>,
20771    #[prost(message, repeated, tag="40")]
20772    pub viewcapture_view_id: ::prost::alloc::vec::Vec<InternedString>,
20773    #[prost(message, repeated, tag="41")]
20774    pub viewcapture_class_name: ::prost::alloc::vec::Vec<InternedString>,
20775    /// Interned context for android.app_wakelocks.
20776    #[prost(message, repeated, tag="42")]
20777    pub app_wakelock_info: ::prost::alloc::vec::Vec<AppWakelockInfo>,
20778    /// Interned correlation ids in track_event.
20779    #[prost(message, repeated, tag="43")]
20780    pub correlation_id_str: ::prost::alloc::vec::Vec<InternedString>,
20781}
20782// End of protos/perfetto/trace/interned_data/interned_data.proto
20783
20784// Begin of protos/perfetto/trace/memory_graph.proto
20785
20786// Message definitions for app-reported memory breakdowns. At the moment, this
20787// is a Chrome-only tracing feature, historically known as 'memory-infra'. See
20788// <https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/> .
20789// This is unrelated to the native or java heap profilers (those protos live
20790// in //protos/perfetto/trace/profiling/).
20791
20792#[derive(Clone, PartialEq, ::prost::Message)]
20793pub struct MemoryTrackerSnapshot {
20794    /// Unique ID that represents the global memory dump.
20795    #[prost(uint64, optional, tag="1")]
20796    pub global_dump_id: ::core::option::Option<u64>,
20797    #[prost(enumeration="memory_tracker_snapshot::LevelOfDetail", optional, tag="2")]
20798    pub level_of_detail: ::core::option::Option<i32>,
20799    #[prost(message, repeated, tag="3")]
20800    pub process_memory_dumps: ::prost::alloc::vec::Vec<memory_tracker_snapshot::ProcessSnapshot>,
20801}
20802/// Nested message and enum types in `MemoryTrackerSnapshot`.
20803pub mod memory_tracker_snapshot {
20804    /// Memory snapshot of a process. The snapshot contains memory data that is
20805    /// from 2 different sources, namely system stats and instrumentation stats.
20806    /// The system memory usage stats come from the OS based on standard API
20807    /// available in the platform to query memory usage. The instrumentation stats
20808    /// are added by instrumenting specific piece of code which tracks memory
20809    /// allocations and deallocations made by a small sub-system within the
20810    /// application.
20811    /// The system stats of the global memory snapshot are recorded as part of
20812    /// ProcessStats and SmapsPacket fields in trace packet with the same
20813    /// timestamp.
20814    #[derive(Clone, PartialEq, ::prost::Message)]
20815    pub struct ProcessSnapshot {
20816        /// Process ID of the process
20817        #[prost(int32, optional, tag="1")]
20818        pub pid: ::core::option::Option<i32>,
20819        #[prost(message, repeated, tag="2")]
20820        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
20821        #[prost(message, repeated, tag="3")]
20822        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
20823    }
20824    /// Nested message and enum types in `ProcessSnapshot`.
20825    pub mod process_snapshot {
20826        // Memory dumps are represented as a graph of memory nodes which contain
20827        // statistics. To avoid double counting the same memory across different
20828        // nodes, edges are used to mark nodes that account for the same memory. See
20829        // this doc for examples of the usage:
20830        // <https://docs.google.com/document/d/1WGQRJ1sjJrfVkNcgPVY6frm64UqPc94tsxUOXImZUZI>
20831
20832        /// A single node in the memory graph.
20833        #[derive(Clone, PartialEq, ::prost::Message)]
20834        pub struct MemoryNode {
20835            /// Unique ID of the node across all processes involved in the global
20836            /// memory dump. The ID is only unique within this particular global dump
20837            /// identified by GlobalMemoryDumpPacket.global_dump_id.
20838            #[prost(uint64, optional, tag="1")]
20839            pub id: ::core::option::Option<u64>,
20840            /// Absolute name is a unique name for the memory node within the process
20841            /// with ProcessMemoryDump.pid. The name can contain multiple parts
20842            /// separated by '/', which traces the edges of the node from the root
20843            /// node.
20844            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
20845            /// node "buffer1" in a graph structure of:
20846            ///    root -> partition_allocator -> array_buffers -> buffer1.
20847            #[prost(string, optional, tag="2")]
20848            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
20849            /// A weak node means that the instrumentation that added the current node
20850            /// is unsure about the existence of the actual memory. Unless a "strong"
20851            /// (non-weak is default) node that has an edge to the current node exists
20852            /// in the current global dump, the current node will be discarded.
20853            #[prost(bool, optional, tag="3")]
20854            pub weak: ::core::option::Option<bool>,
20855            /// Size of the node in bytes, used to compute the effective size of the
20856            /// nodes without double counting.
20857            #[prost(uint64, optional, tag="4")]
20858            pub size_bytes: ::core::option::Option<u64>,
20859            #[prost(message, repeated, tag="5")]
20860            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
20861        }
20862        /// Nested message and enum types in `MemoryNode`.
20863        pub mod memory_node {
20864            /// Entries in the memory node that contain statistics and additional
20865            /// debuggable information about the memory. The size of the node is
20866            /// tracked separately in the |size_bytes| field.
20867            #[derive(Clone, PartialEq, ::prost::Message)]
20868            pub struct MemoryNodeEntry {
20869                #[prost(string, optional, tag="1")]
20870                pub name: ::core::option::Option<::prost::alloc::string::String>,
20871                #[prost(enumeration="memory_node_entry::Units", optional, tag="2")]
20872                pub units: ::core::option::Option<i32>,
20873                /// Contains either one of uint64 or string value.
20874                #[prost(uint64, optional, tag="3")]
20875                pub value_uint64: ::core::option::Option<u64>,
20876                #[prost(string, optional, tag="4")]
20877                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
20878            }
20879            /// Nested message and enum types in `MemoryNodeEntry`.
20880            pub mod memory_node_entry {
20881                #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20882                #[repr(i32)]
20883                pub enum Units {
20884                    Unspecified = 0,
20885                    Bytes = 1,
20886                    Count = 2,
20887                }
20888                impl Units {
20889                    /// String value of the enum field names used in the ProtoBuf definition.
20890                    ///
20891                    /// The values are not transformed in any way and thus are considered stable
20892                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20893                    pub fn as_str_name(&self) -> &'static str {
20894                        match self {
20895                            Units::Unspecified => "UNSPECIFIED",
20896                            Units::Bytes => "BYTES",
20897                            Units::Count => "COUNT",
20898                        }
20899                    }
20900                }
20901            }
20902        }
20903        /// A directed edge that connects any 2 nodes in the graph above. These are
20904        /// in addition to the inherent edges added due to the tree structure of the
20905        /// node's absolute names.
20906        /// Node with id |source_id| owns the node with id |target_id|, and has the
20907        /// effect of attributing the memory usage of target to source. |importance|
20908        /// is optional and relevant only for the cases of co-ownership, where it
20909        /// acts as a z-index: the owner with the highest importance will be
20910        /// attributed target's memory.
20911        #[derive(Clone, PartialEq, ::prost::Message)]
20912        pub struct MemoryEdge {
20913            #[prost(uint64, optional, tag="1")]
20914            pub source_id: ::core::option::Option<u64>,
20915            #[prost(uint64, optional, tag="2")]
20916            pub target_id: ::core::option::Option<u64>,
20917            #[prost(uint32, optional, tag="3")]
20918            pub importance: ::core::option::Option<u32>,
20919            #[prost(bool, optional, tag="4")]
20920            pub overridable: ::core::option::Option<bool>,
20921        }
20922    }
20923    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20924    #[repr(i32)]
20925    pub enum LevelOfDetail {
20926        DetailFull = 0,
20927        DetailLight = 1,
20928        DetailBackground = 2,
20929    }
20930    impl LevelOfDetail {
20931        /// String value of the enum field names used in the ProtoBuf definition.
20932        ///
20933        /// The values are not transformed in any way and thus are considered stable
20934        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20935        pub fn as_str_name(&self) -> &'static str {
20936            match self {
20937                LevelOfDetail::DetailFull => "DETAIL_FULL",
20938                LevelOfDetail::DetailLight => "DETAIL_LIGHT",
20939                LevelOfDetail::DetailBackground => "DETAIL_BACKGROUND",
20940            }
20941        }
20942    }
20943}
20944// End of protos/perfetto/trace/memory_graph.proto
20945
20946// Begin of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
20947
20948/// Used to trace the execution of perfetto itself.
20949#[derive(Clone, PartialEq, ::prost::Message)]
20950pub struct PerfettoMetatrace {
20951    /// Only when using |event_id|.
20952    #[prost(uint64, optional, tag="3")]
20953    pub event_duration_ns: ::core::option::Option<u64>,
20954    /// Only when using |counter_id|.
20955    #[prost(int32, optional, tag="4")]
20956    pub counter_value: ::core::option::Option<i32>,
20957    /// ID of the thread that emitted the event.
20958    #[prost(uint32, optional, tag="5")]
20959    pub thread_id: ::core::option::Option<u32>,
20960    /// If true the meta-tracing ring buffer had overruns and hence some data is
20961    /// missing from this point.
20962    #[prost(bool, optional, tag="6")]
20963    pub has_overruns: ::core::option::Option<bool>,
20964    /// Args for the event.
20965    #[prost(message, repeated, tag="7")]
20966    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
20967    #[prost(message, repeated, tag="10")]
20968    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
20969    /// See base/metatrace_events.h for definitions.
20970    #[prost(oneof="perfetto_metatrace::RecordType", tags="1, 2, 8, 11, 9")]
20971    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
20972}
20973/// Nested message and enum types in `PerfettoMetatrace`.
20974pub mod perfetto_metatrace {
20975    #[derive(Clone, PartialEq, ::prost::Message)]
20976    pub struct Arg {
20977        #[prost(oneof="arg::KeyOrInternedKey", tags="1, 3")]
20978        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
20979        #[prost(oneof="arg::ValueOrInternedValue", tags="2, 4")]
20980        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
20981    }
20982    /// Nested message and enum types in `Arg`.
20983    pub mod arg {
20984        #[derive(Clone, PartialEq, ::prost::Oneof)]
20985        pub enum KeyOrInternedKey {
20986            #[prost(string, tag="1")]
20987            Key(::prost::alloc::string::String),
20988            #[prost(uint64, tag="3")]
20989            KeyIid(u64),
20990        }
20991        #[derive(Clone, PartialEq, ::prost::Oneof)]
20992        pub enum ValueOrInternedValue {
20993            #[prost(string, tag="2")]
20994            Value(::prost::alloc::string::String),
20995            #[prost(uint64, tag="4")]
20996            ValueIid(u64),
20997        }
20998    }
20999    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
21000    /// |value_iid| above.
21001    #[derive(Clone, PartialEq, ::prost::Message)]
21002    pub struct InternedString {
21003        #[prost(uint64, optional, tag="1")]
21004        pub iid: ::core::option::Option<u64>,
21005        #[prost(string, optional, tag="2")]
21006        pub value: ::core::option::Option<::prost::alloc::string::String>,
21007    }
21008    /// See base/metatrace_events.h for definitions.
21009    #[derive(Clone, PartialEq, ::prost::Oneof)]
21010    pub enum RecordType {
21011        #[prost(uint32, tag="1")]
21012        EventId(u32),
21013        #[prost(uint32, tag="2")]
21014        CounterId(u32),
21015        /// For trace processor metatracing.
21016        #[prost(string, tag="8")]
21017        EventName(::prost::alloc::string::String),
21018        #[prost(uint64, tag="11")]
21019        EventNameIid(u64),
21020        #[prost(string, tag="9")]
21021        CounterName(::prost::alloc::string::String),
21022    }
21023}
21024// End of protos/perfetto/trace/perfetto/perfetto_metatrace.proto
21025
21026// Begin of protos/perfetto/trace/perfetto/tracing_service_event.proto
21027
21028/// Events emitted by the tracing service.
21029/// Next id: 12.
21030#[derive(Clone, PartialEq, ::prost::Message)]
21031pub struct TracingServiceEvent {
21032    /// When each of the following booleans are set to true, they report the
21033    /// point in time (through TracePacket's timestamp) where the condition
21034    /// they describe happened.
21035    /// The order of the booleans below matches the timestamp ordering
21036    /// they would generally be expected to have.
21037    #[prost(oneof="tracing_service_event::EventType", tags="2, 1, 9, 3, 4, 5, 6, 7, 8, 10, 11")]
21038    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
21039}
21040/// Nested message and enum types in `TracingServiceEvent`.
21041pub mod tracing_service_event {
21042    #[derive(Clone, PartialEq, ::prost::Message)]
21043    pub struct DataSources {
21044        #[prost(message, repeated, tag="1")]
21045        pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
21046    }
21047    /// Nested message and enum types in `DataSources`.
21048    pub mod data_sources {
21049        #[derive(Clone, PartialEq, ::prost::Message)]
21050        pub struct DataSource {
21051            #[prost(string, optional, tag="1")]
21052            pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
21053            #[prost(string, optional, tag="2")]
21054            pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
21055        }
21056    }
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    #[derive(Clone, PartialEq, ::prost::Oneof)]
21063    pub enum EventType {
21064        /// Emitted when we start tracing and specifically, this will be before any
21065        /// producer is notified about the existence of this trace. This is always
21066        /// emitted before the all_data_sources_started event. This event is also
21067        /// guaranteed to be seen (byte-offset wise) before any data packets from
21068        /// producers.
21069        #[prost(bool, tag="2")]
21070        TracingStarted(bool),
21071        /// Emitted after all data sources saw the start event and ACKed it.
21072        /// This identifies the point in time when it's safe to assume that all data
21073        /// sources have been recording events.
21074        #[prost(bool, tag="1")]
21075        AllDataSourcesStarted(bool),
21076        /// Emitted when a flush is started.
21077        #[prost(bool, tag="9")]
21078        FlushStarted(bool),
21079        /// Emitted when all data sources have been flushed successfully or with an
21080        /// error (including timeouts). This can generally happen many times over the
21081        /// course of the trace.
21082        #[prost(bool, tag="3")]
21083        AllDataSourcesFlushed(bool),
21084        /// Emitted when reading back the central tracing buffers has been completed.
21085        /// If |write_into_file| is specified, this can happen many times over the
21086        /// course of the trace.
21087        #[prost(bool, tag="4")]
21088        ReadTracingBuffersCompleted(bool),
21089        /// Emitted after tracing has been disabled and specifically, this will be
21090        /// after all packets from producers have been included in the central
21091        /// tracing buffer.
21092        #[prost(bool, tag="5")]
21093        TracingDisabled(bool),
21094        /// Emitted if perfetto --save-for-bugreport was invoked while the current
21095        /// tracing session was running and it had the highest bugreport_score. In
21096        /// this case the original consumer will see a nearly empty trace, because
21097        /// the contents are routed onto the bugreport file. This event flags the
21098        /// situation explicitly. Traces that contain this marker should be discarded
21099        /// by test infrastructures / pipelines.
21100        /// Deprecated since Android U, where --save-for-bugreport uses
21101        /// non-destructive cloning.
21102        #[prost(bool, tag="6")]
21103        SeizedForBugreport(bool),
21104        /// Emitted when not all data sources in all producers reply to a start
21105        /// request after some time.
21106        #[prost(message, tag="7")]
21107        SlowStartingDataSources(DataSources),
21108        /// Emitted when the last flush request has failed. Lists data sources that
21109        /// did not reply on time.
21110        #[prost(message, tag="8")]
21111        LastFlushSlowDataSources(DataSources),
21112        /// If this was a cloned tracing session, emitted when the tracing serice
21113        /// started the clone operation.
21114        #[prost(bool, tag="10")]
21115        CloneStarted(bool),
21116        /// If this was a cloned tracing session, emitted when the tracing service
21117        /// finished the clone operation (for a specific buffer).
21118        #[prost(uint32, tag="11")]
21119        BufferCloned(u32),
21120    }
21121}
21122// End of protos/perfetto/trace/perfetto/tracing_service_event.proto
21123
21124// Begin of protos/perfetto/common/android_energy_consumer_descriptor.proto
21125
21126/// Energy consumer based on aidl class:
21127/// android.hardware.power.stats.EnergyConsumer.
21128#[derive(Clone, PartialEq, ::prost::Message)]
21129pub struct AndroidEnergyConsumer {
21130    /// Unique ID of this energy consumer.  Matches the ID in a
21131    /// AndroidEnergyEstimationBreakdown.
21132    #[prost(int32, optional, tag="1")]
21133    pub energy_consumer_id: ::core::option::Option<i32>,
21134    /// For a group of energy consumers of the same logical type, sorting by
21135    /// ordinal gives their physical order. Ordinals must be consecutive integers
21136    /// starting from 0.
21137    #[prost(int32, optional, tag="2")]
21138    pub ordinal: ::core::option::Option<i32>,
21139    /// Type of this energy consumer.
21140    #[prost(string, optional, tag="3")]
21141    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
21142    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
21143    /// framework.
21144    #[prost(string, optional, tag="4")]
21145    pub name: ::core::option::Option<::prost::alloc::string::String>,
21146}
21147#[derive(Clone, PartialEq, ::prost::Message)]
21148pub struct AndroidEnergyConsumerDescriptor {
21149    #[prost(message, repeated, tag="1")]
21150    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
21151}
21152// End of protos/perfetto/common/android_energy_consumer_descriptor.proto
21153
21154// Begin of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
21155
21156/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
21157/// This proto represents the aidl class:
21158/// android.hardware.power.stats.EnergyConsumerResult.
21159#[derive(Clone, PartialEq, ::prost::Message)]
21160pub struct AndroidEnergyEstimationBreakdown {
21161    /// The first trace packet of each session should include a energy consumer
21162    /// descriptor.
21163    #[prost(message, optional, tag="1")]
21164    pub energy_consumer_descriptor: ::core::option::Option<AndroidEnergyConsumerDescriptor>,
21165    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
21166    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
21167    /// should be sent at the beginning of a trace.
21168    #[prost(int32, optional, tag="2")]
21169    pub energy_consumer_id: ::core::option::Option<i32>,
21170    /// Total accumulated energy since boot in microwatt-seconds (uWs)
21171    #[prost(int64, optional, tag="3")]
21172    pub energy_uws: ::core::option::Option<i64>,
21173    /// Optional attributed energy per Android ID / Linux UID for this
21174    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
21175    /// to total accumulated energy.
21176    #[prost(message, repeated, tag="4")]
21177    pub per_uid_breakdown: ::prost::alloc::vec::Vec<android_energy_estimation_breakdown::EnergyUidBreakdown>,
21178}
21179/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
21180pub mod android_energy_estimation_breakdown {
21181    #[derive(Clone, PartialEq, ::prost::Message)]
21182    pub struct EnergyUidBreakdown {
21183        /// Android ID/Linux UID, the accumulated energy is attributed to.
21184        #[prost(int32, optional, tag="1")]
21185        pub uid: ::core::option::Option<i32>,
21186        /// Accumulated energy since boot in microwatt-seconds (uWs).
21187        #[prost(int64, optional, tag="2")]
21188        pub energy_uws: ::core::option::Option<i64>,
21189    }
21190}
21191// End of protos/perfetto/trace/power/android_energy_estimation_breakdown.proto
21192
21193// Begin of protos/perfetto/trace/power/android_entity_state_residency.proto
21194
21195#[derive(Clone, PartialEq, ::prost::Message)]
21196pub struct EntityStateResidency {
21197    /// This is only emitted at the beginning of the trace.
21198    #[prost(message, repeated, tag="1")]
21199    pub power_entity_state: ::prost::alloc::vec::Vec<entity_state_residency::PowerEntityState>,
21200    #[prost(message, repeated, tag="2")]
21201    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
21202}
21203/// Nested message and enum types in `EntityStateResidency`.
21204pub mod entity_state_residency {
21205    #[derive(Clone, PartialEq, ::prost::Message)]
21206    pub struct PowerEntityState {
21207        /// Index corresponding to the entity
21208        #[prost(int32, optional, tag="1")]
21209        pub entity_index: ::core::option::Option<i32>,
21210        /// Index corresponding to the state
21211        #[prost(int32, optional, tag="2")]
21212        pub state_index: ::core::option::Option<i32>,
21213        /// Name of the entity. This is device-specific, determined by the PowerStats
21214        /// HAL, and cannot be configured by the user. An example would be
21215        /// "Bluetooth".
21216        #[prost(string, optional, tag="3")]
21217        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
21218        /// Name of the state. This is device-specific, determined by the PowerStats
21219        /// HAL, and cannot be configured by the user. An example would be
21220        /// "Active".
21221        #[prost(string, optional, tag="4")]
21222        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
21223    }
21224    #[derive(Clone, PartialEq, ::prost::Message)]
21225    pub struct StateResidency {
21226        /// Index corresponding to PowerEntityState.entity_index
21227        #[prost(int32, optional, tag="1")]
21228        pub entity_index: ::core::option::Option<i32>,
21229        /// Index corresponding to PowerEntityState.state_index
21230        #[prost(int32, optional, tag="2")]
21231        pub state_index: ::core::option::Option<i32>,
21232        /// Time since boot that this entity has been in this state
21233        #[prost(uint64, optional, tag="3")]
21234        pub total_time_in_state_ms: ::core::option::Option<u64>,
21235        /// Total number of times since boot that the entity has entered this state
21236        #[prost(uint64, optional, tag="4")]
21237        pub total_state_entry_count: ::core::option::Option<u64>,
21238        /// Timestamp of the last time the entity entered this state
21239        #[prost(uint64, optional, tag="5")]
21240        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
21241    }
21242}
21243// End of protos/perfetto/trace/power/android_entity_state_residency.proto
21244
21245// Begin of protos/perfetto/trace/power/battery_counters.proto
21246
21247#[derive(Clone, PartialEq, ::prost::Message)]
21248pub struct BatteryCounters {
21249    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
21250    #[prost(int64, optional, tag="1")]
21251    pub charge_counter_uah: ::core::option::Option<i64>,
21252    /// Remaining battery capacity percentage of total capacity
21253    #[prost(float, optional, tag="2")]
21254    pub capacity_percent: ::core::option::Option<f32>,
21255    /// Instantaneous battery current in microamperes(µA).
21256    /// Negative values indicate current being drained from the battery and
21257    /// positive values indicate current feeding the battery from a charge source
21258    /// (USB).
21259    ///
21260    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
21261    #[prost(int64, optional, tag="3")]
21262    pub current_ua: ::core::option::Option<i64>,
21263    /// Instantaneous battery current in microamperes(µA).
21264    #[prost(int64, optional, tag="4")]
21265    pub current_avg_ua: ::core::option::Option<i64>,
21266    /// Battery name, emitted only on multiple batteries.
21267    #[prost(string, optional, tag="5")]
21268    pub name: ::core::option::Option<::prost::alloc::string::String>,
21269    /// Battery capacity in microwatt-hours(µWh).
21270    #[prost(int64, optional, tag="6")]
21271    pub energy_counter_uwh: ::core::option::Option<i64>,
21272    /// Battery voltage in microvolts(µV).
21273    #[prost(int64, optional, tag="7")]
21274    pub voltage_uv: ::core::option::Option<i64>,
21275}
21276// End of protos/perfetto/trace/power/battery_counters.proto
21277
21278// Begin of protos/perfetto/trace/power/power_rails.proto
21279
21280#[derive(Clone, PartialEq, ::prost::Message)]
21281pub struct PowerRails {
21282    /// This is only emitted at the beginning of the trace.
21283    #[prost(message, repeated, tag="1")]
21284    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
21285    #[prost(message, repeated, tag="2")]
21286    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
21287    /// A unique session id that can be used to match energy data to sets of
21288    /// descriptors. The indices used by rail descriptors and energy data packets
21289    /// are meant to be unique to a given session uuid. When multiple data sources
21290    /// are running in parallel, each data source should use a unique id.
21291    #[prost(uint64, optional, tag="3")]
21292    pub session_uuid: ::core::option::Option<u64>,
21293}
21294/// Nested message and enum types in `PowerRails`.
21295pub mod power_rails {
21296    #[derive(Clone, PartialEq, ::prost::Message)]
21297    pub struct RailDescriptor {
21298        /// Index corresponding to the rail
21299        #[prost(uint32, optional, tag="1")]
21300        pub index: ::core::option::Option<u32>,
21301        /// Name of the rail
21302        #[prost(string, optional, tag="2")]
21303        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
21304        /// Name of the subsystem to which this rail belongs
21305        #[prost(string, optional, tag="3")]
21306        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
21307        /// Hardware sampling rate (Hz).
21308        #[prost(uint32, optional, tag="4")]
21309        pub sampling_rate: ::core::option::Option<u32>,
21310    }
21311    #[derive(Clone, PartialEq, ::prost::Message)]
21312    pub struct EnergyData {
21313        /// Index corresponding to RailDescriptor.index
21314        #[prost(uint32, optional, tag="1")]
21315        pub index: ::core::option::Option<u32>,
21316        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
21317        #[prost(uint64, optional, tag="2")]
21318        pub timestamp_ms: ::core::option::Option<u64>,
21319        /// Accumulated energy since device boot in microwatt-seconds (uWs).
21320        #[prost(uint64, optional, tag="3")]
21321        pub energy: ::core::option::Option<u64>,
21322    }
21323}
21324// End of protos/perfetto/trace/power/power_rails.proto
21325
21326// Begin of protos/perfetto/trace/profiling/deobfuscation.proto
21327
21328#[derive(Clone, PartialEq, ::prost::Message)]
21329pub struct ObfuscatedMember {
21330    /// This is the obfuscated field name relative to the class containing the
21331    /// ObfuscatedMember.
21332    #[prost(string, optional, tag="1")]
21333    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21334    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
21335    /// field name including its class. Otherwise, this is this the unqualified
21336    /// deobfuscated field name relative to the class containing this
21337    /// ObfuscatedMember.
21338    #[prost(string, optional, tag="2")]
21339    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21340}
21341#[derive(Clone, PartialEq, ::prost::Message)]
21342pub struct ObfuscatedClass {
21343    #[prost(string, optional, tag="1")]
21344    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21345    #[prost(string, optional, tag="2")]
21346    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
21347    /// fields.
21348    #[prost(message, repeated, tag="3")]
21349    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
21350    #[prost(message, repeated, tag="4")]
21351    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
21352}
21353#[derive(Clone, PartialEq, ::prost::Message)]
21354pub struct DeobfuscationMapping {
21355    #[prost(string, optional, tag="1")]
21356    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
21357    #[prost(int64, optional, tag="2")]
21358    pub version_code: ::core::option::Option<i64>,
21359    #[prost(message, repeated, tag="3")]
21360    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
21361}
21362// Begin of protos/perfetto/trace/profiling/heap_graph.proto
21363
21364#[derive(Clone, PartialEq, ::prost::Message)]
21365pub struct HeapGraphRoot {
21366    /// Objects retained by this root.
21367    #[prost(uint64, repeated, tag="1")]
21368    pub object_ids: ::prost::alloc::vec::Vec<u64>,
21369    #[prost(enumeration="heap_graph_root::Type", optional, tag="2")]
21370    pub root_type: ::core::option::Option<i32>,
21371}
21372/// Nested message and enum types in `HeapGraphRoot`.
21373pub mod heap_graph_root {
21374    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21375    #[repr(i32)]
21376    pub enum Type {
21377        RootUnknown = 0,
21378        RootJniGlobal = 1,
21379        RootJniLocal = 2,
21380        RootJavaFrame = 3,
21381        RootNativeStack = 4,
21382        RootStickyClass = 5,
21383        RootThreadBlock = 6,
21384        RootMonitorUsed = 7,
21385        RootThreadObject = 8,
21386        RootInternedString = 9,
21387        RootFinalizing = 10,
21388        RootDebugger = 11,
21389        RootReferenceCleanup = 12,
21390        RootVmInternal = 13,
21391        RootJniMonitor = 14,
21392    }
21393    impl Type {
21394        /// String value of the enum field names used in the ProtoBuf definition.
21395        ///
21396        /// The values are not transformed in any way and thus are considered stable
21397        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21398        pub fn as_str_name(&self) -> &'static str {
21399            match self {
21400                Type::RootUnknown => "ROOT_UNKNOWN",
21401                Type::RootJniGlobal => "ROOT_JNI_GLOBAL",
21402                Type::RootJniLocal => "ROOT_JNI_LOCAL",
21403                Type::RootJavaFrame => "ROOT_JAVA_FRAME",
21404                Type::RootNativeStack => "ROOT_NATIVE_STACK",
21405                Type::RootStickyClass => "ROOT_STICKY_CLASS",
21406                Type::RootThreadBlock => "ROOT_THREAD_BLOCK",
21407                Type::RootMonitorUsed => "ROOT_MONITOR_USED",
21408                Type::RootThreadObject => "ROOT_THREAD_OBJECT",
21409                Type::RootInternedString => "ROOT_INTERNED_STRING",
21410                Type::RootFinalizing => "ROOT_FINALIZING",
21411                Type::RootDebugger => "ROOT_DEBUGGER",
21412                Type::RootReferenceCleanup => "ROOT_REFERENCE_CLEANUP",
21413                Type::RootVmInternal => "ROOT_VM_INTERNAL",
21414                Type::RootJniMonitor => "ROOT_JNI_MONITOR",
21415            }
21416        }
21417    }
21418}
21419#[derive(Clone, PartialEq, ::prost::Message)]
21420pub struct HeapGraphType {
21421    /// TODO(fmayer): Consider removing this and using the index in the repeaed
21422    /// field to save space.
21423    #[prost(uint64, optional, tag="1")]
21424    pub id: ::core::option::Option<u64>,
21425    #[prost(uint64, optional, tag="2")]
21426    pub location_id: ::core::option::Option<u64>,
21427    #[prost(string, optional, tag="3")]
21428    pub class_name: ::core::option::Option<::prost::alloc::string::String>,
21429    /// Size of objects of this type.
21430    #[prost(uint64, optional, tag="4")]
21431    pub object_size: ::core::option::Option<u64>,
21432    #[prost(uint64, optional, tag="5")]
21433    pub superclass_id: ::core::option::Option<u64>,
21434    /// Indices for InternedData.field_names for the names of the fields of
21435    /// instances of this class. This does NOT include the fields from
21436    /// superclasses. The consumer of this data needs to walk all super
21437    /// classes to get a full lists of fields. Objects always write the
21438    /// fields in order of most specific class to the furthest up superclass.
21439    #[prost(uint64, repeated, tag="6")]
21440    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
21441    #[prost(enumeration="heap_graph_type::Kind", optional, tag="7")]
21442    pub kind: ::core::option::Option<i32>,
21443    #[prost(uint64, optional, tag="8")]
21444    pub classloader_id: ::core::option::Option<u64>,
21445}
21446/// Nested message and enum types in `HeapGraphType`.
21447pub mod heap_graph_type {
21448    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21449    #[repr(i32)]
21450    pub enum Kind {
21451        Unknown = 0,
21452        Normal = 1,
21453        Noreferences = 2,
21454        String = 3,
21455        Array = 4,
21456        Class = 5,
21457        Classloader = 6,
21458        Dexcache = 7,
21459        SoftReference = 8,
21460        WeakReference = 9,
21461        FinalizerReference = 10,
21462        PhantomReference = 11,
21463    }
21464    impl Kind {
21465        /// String value of the enum field names used in the ProtoBuf definition.
21466        ///
21467        /// The values are not transformed in any way and thus are considered stable
21468        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21469        pub fn as_str_name(&self) -> &'static str {
21470            match self {
21471                Kind::Unknown => "KIND_UNKNOWN",
21472                Kind::Normal => "KIND_NORMAL",
21473                Kind::Noreferences => "KIND_NOREFERENCES",
21474                Kind::String => "KIND_STRING",
21475                Kind::Array => "KIND_ARRAY",
21476                Kind::Class => "KIND_CLASS",
21477                Kind::Classloader => "KIND_CLASSLOADER",
21478                Kind::Dexcache => "KIND_DEXCACHE",
21479                Kind::SoftReference => "KIND_SOFT_REFERENCE",
21480                Kind::WeakReference => "KIND_WEAK_REFERENCE",
21481                Kind::FinalizerReference => "KIND_FINALIZER_REFERENCE",
21482                Kind::PhantomReference => "KIND_PHANTOM_REFERENCE",
21483            }
21484        }
21485    }
21486}
21487#[derive(Clone, PartialEq, ::prost::Message)]
21488pub struct HeapGraphObject {
21489    /// Index for InternedData.types for the name of the type of this object.
21490    #[prost(uint64, optional, tag="2")]
21491    pub type_id: ::core::option::Option<u64>,
21492    /// Bytes occupied by this objects.
21493    #[prost(uint64, optional, tag="3")]
21494    pub self_size: ::core::option::Option<u64>,
21495    /// Add this to all non-zero values in reference_object_id. This is used to
21496    /// get more compact varint encoding.
21497    ///
21498    /// The name is confusing, but this has always been used as a base for
21499    /// reference_object_id. The field should be named reference_object_id_base.
21500    #[prost(uint64, optional, tag="6")]
21501    pub reference_field_id_base: ::core::option::Option<u64>,
21502    /// Indices for InternedData.field_names for the name of the field referring
21503    /// to the object. For Android S+ and for instances of normal classes (e.g.
21504    /// not instances of java.lang.Class or arrays), this is instead set in the
21505    /// corresponding HeapGraphType, and this is left empty.
21506    #[prost(uint64, repeated, tag="4")]
21507    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
21508    /// Ids of the Object that is referred to.
21509    #[prost(uint64, repeated, tag="5")]
21510    pub reference_object_id: ::prost::alloc::vec::Vec<u64>,
21511    /// If this object is an instance of `libcore.util.NativeAllocationRegistry`,
21512    /// the value of the `size` field.
21513    ///
21514    /// N.B. This is not the native size of this object.
21515    #[prost(int64, optional, tag="8")]
21516    pub native_allocation_registry_size_field: ::core::option::Option<i64>,
21517    /// To reduce the space required we only emit the heap type if it has changed
21518    /// from the previous object we recorded.
21519    #[prost(enumeration="heap_graph_object::HeapType", optional, tag="9")]
21520    pub heap_type_delta: ::core::option::Option<i32>,
21521    /// Ids of the Objects referred by this object, not via fields, but via
21522    /// internal runtime structures.
21523    #[prost(uint64, repeated, tag="10")]
21524    pub runtime_internal_object_id: ::prost::alloc::vec::Vec<u64>,
21525    #[prost(oneof="heap_graph_object::Identifier", tags="1, 7")]
21526    pub identifier: ::core::option::Option<heap_graph_object::Identifier>,
21527}
21528/// Nested message and enum types in `HeapGraphObject`.
21529pub mod heap_graph_object {
21530    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21531    #[repr(i32)]
21532    pub enum HeapType {
21533        Unknown = 0,
21534        App = 1,
21535        Zygote = 2,
21536        BootImage = 3,
21537    }
21538    impl HeapType {
21539        /// String value of the enum field names used in the ProtoBuf definition.
21540        ///
21541        /// The values are not transformed in any way and thus are considered stable
21542        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21543        pub fn as_str_name(&self) -> &'static str {
21544            match self {
21545                HeapType::Unknown => "HEAP_TYPE_UNKNOWN",
21546                HeapType::App => "HEAP_TYPE_APP",
21547                HeapType::Zygote => "HEAP_TYPE_ZYGOTE",
21548                HeapType::BootImage => "HEAP_TYPE_BOOT_IMAGE",
21549            }
21550        }
21551    }
21552    #[derive(Clone, PartialEq, ::prost::Oneof)]
21553    pub enum Identifier {
21554        #[prost(uint64, tag="1")]
21555        Id(u64),
21556        #[prost(uint64, tag="7")]
21557        IdDelta(u64),
21558    }
21559}
21560#[derive(Clone, PartialEq, ::prost::Message)]
21561pub struct HeapGraph {
21562    #[prost(int32, optional, tag="1")]
21563    pub pid: ::core::option::Option<i32>,
21564    /// This contains all objects at the time this dump was taken. Some of these
21565    /// will be live, some of those unreachable (garbage). To find the live
21566    /// objects, the client needs to build the transitive closure of objects
21567    /// reachable from |roots|.
21568    /// All objects not contained within that transitive closure are garbage that
21569    /// has not yet been collected.
21570    #[prost(message, repeated, tag="2")]
21571    pub objects: ::prost::alloc::vec::Vec<HeapGraphObject>,
21572    /// Roots at the time this dump was taken.
21573    /// All live objects are reachable from the roots. All other objects are
21574    /// garbage.
21575    #[prost(message, repeated, tag="7")]
21576    pub roots: ::prost::alloc::vec::Vec<HeapGraphRoot>,
21577    /// Types used in HeapGraphObjects.
21578    #[prost(message, repeated, tag="9")]
21579    pub types: ::prost::alloc::vec::Vec<HeapGraphType>,
21580    /// Field names for references in managed heap graph.
21581    #[prost(message, repeated, tag="4")]
21582    pub field_names: ::prost::alloc::vec::Vec<InternedString>,
21583    /// Paths of files used in managed heap graph.
21584    #[prost(message, repeated, tag="8")]
21585    pub location_names: ::prost::alloc::vec::Vec<InternedString>,
21586    #[prost(bool, optional, tag="5")]
21587    pub continued: ::core::option::Option<bool>,
21588    #[prost(uint64, optional, tag="6")]
21589    pub index: ::core::option::Option<u64>,
21590}
21591// End of protos/perfetto/trace/profiling/heap_graph.proto
21592
21593// Begin of protos/perfetto/trace/profiling/profile_packet.proto
21594
21595// This file contains a mixture of messages emitted by various sampling
21596// profilers:
21597//
21598// Memory allocator profiling
21599// ----------------
21600// ProfilePacket:
21601//    The packet emitted by heapprofd, which started off as a native heap
21602//    (malloc/free) profiler, but now supports custom allocators as well. Each
21603//    packet contains a preaggregated state of the heap at snapshot time, which
21604//    report the total allocated/free bytes per callstack (plus other info such
21605//    as the number of samples).
21606// StreamingAllocation/StreamingFree:
21607//    Emitted by heapprofd when configured in streaming mode (i.e. when
21608//    stream_allocations = true). This is only for local testing, and doesn't
21609//    report callstacks (only address time and size of each alloc/free). It can
21610//    lead to enormous traces, as it contains the stream of each alloc/free call.
21611//
21612// Callstack sampling
21613// ------------------
21614// StreamingProfilePacket:
21615//    The packet emitted by the chromium in-process sampling profiler, which is
21616//    based on periodically sending a signal to itself, and unwinding the stack
21617//    in the signal handler. Each packet contains a series of individual stack
21618//    samples for a Chromium thread.
21619//
21620// Callstack and performance counter sampling
21621// ---------------------
21622// PerfSample:
21623//    The packet emitted by traced_perf sampling performance profiler based on
21624//    the perf_event_open syscall. Each packet represents an individual sample
21625//    of a performance counter (which might be a timer), and optionally a
21626//    callstack of the process that was scheduled at the time of the sample.
21627//
21628
21629/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
21630/// involve more than one ProfilePacket if the snapshot is big (when |continued|
21631/// is true). The cardinality and grouping is as follows:
21632/// A ProfilePacket contains:
21633///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
21634///     one heap per process (the main malloc/free heap), but there can be more if
21635///     the process is using the heapprofd API to profile custom allocators.
21636///   - Globally interned strings, mappings and frames (to allow de-duplicating
21637///     frames/mapping in common between different processes).
21638/// A ProcessHeapSamples contains:
21639///   - The process and heap identifier.
21640///   - A number of HeapSample, one for each callsite that had some alloc/frees.
21641///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
21642/// A HeapSample contains statistics about callsites:
21643///   - Total number of bytes allocated and freed from that callsite.
21644///   - Total number of alloc/free calls sampled.
21645///   - Stats at the local maximum when dump_at_max = true.
21646/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
21647#[derive(Clone, PartialEq, ::prost::Message)]
21648pub struct ProfilePacket {
21649    /// The following interning tables are only used in Android version Q.
21650    /// In newer versions, these tables are in InternedData
21651    /// (see protos/perfetto/trace/interned_data) and are shared across
21652    /// multiple ProfilePackets.
21653    /// For backwards compatibility, consumers need to first look up interned
21654    /// data in the tables within the ProfilePacket, and then, if they are empty,
21655    /// look up in the InternedData instead.
21656    #[prost(message, repeated, tag="1")]
21657    pub strings: ::prost::alloc::vec::Vec<InternedString>,
21658    #[prost(message, repeated, tag="4")]
21659    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
21660    #[prost(message, repeated, tag="2")]
21661    pub frames: ::prost::alloc::vec::Vec<Frame>,
21662    #[prost(message, repeated, tag="3")]
21663    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
21664    #[prost(message, repeated, tag="5")]
21665    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
21666    /// If this is true, the next ProfilePacket in this package_sequence_id is a
21667    /// continuation of this one.
21668    /// To get all samples for a process, accummulate its
21669    /// ProcessHeapSamples.samples until you see continued=false.
21670    #[prost(bool, optional, tag="6")]
21671    pub continued: ::core::option::Option<bool>,
21672    /// Index of this ProfilePacket on its package_sequence_id. Can be used
21673    /// to detect dropped data.
21674    /// Verify these are consecutive.
21675    #[prost(uint64, optional, tag="7")]
21676    pub index: ::core::option::Option<u64>,
21677}
21678/// Nested message and enum types in `ProfilePacket`.
21679pub mod profile_packet {
21680    /// Next ID: 9
21681    #[derive(Clone, PartialEq, ::prost::Message)]
21682    pub struct HeapSample {
21683        #[prost(uint64, optional, tag="1")]
21684        pub callstack_id: ::core::option::Option<u64>,
21685        /// bytes allocated at this callstack.
21686        #[prost(uint64, optional, tag="2")]
21687        pub self_allocated: ::core::option::Option<u64>,
21688        /// bytes allocated at this callstack that have been freed.
21689        #[prost(uint64, optional, tag="3")]
21690        pub self_freed: ::core::option::Option<u64>,
21691        /// Bytes allocated by this callstack but not freed at the time the malloc
21692        /// heap usage of this process was maximal. This is only set if dump_at_max
21693        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
21694        /// self_idle will not be set.
21695        #[prost(uint64, optional, tag="8")]
21696        pub self_max: ::core::option::Option<u64>,
21697        /// Number of allocations that were sampled at this callstack but not freed
21698        /// at the time the malloc heap usage of this process was maximal. This is
21699        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
21700        /// self_allocated, self_freed and self_idle will not be set.
21701        #[prost(uint64, optional, tag="9")]
21702        pub self_max_count: ::core::option::Option<u64>,
21703        /// timestamp \[opt\]
21704        #[prost(uint64, optional, tag="4")]
21705        pub timestamp: ::core::option::Option<u64>,
21706        /// Number of allocations that were sampled at this callstack.
21707        #[prost(uint64, optional, tag="5")]
21708        pub alloc_count: ::core::option::Option<u64>,
21709        /// Number of allocations that were sampled at this callstack that have been
21710        /// freed.
21711        #[prost(uint64, optional, tag="6")]
21712        pub free_count: ::core::option::Option<u64>,
21713    }
21714    #[derive(Clone, PartialEq, ::prost::Message)]
21715    pub struct Histogram {
21716        #[prost(message, repeated, tag="1")]
21717        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
21718    }
21719    /// Nested message and enum types in `Histogram`.
21720    pub mod histogram {
21721        #[derive(Clone, PartialEq, ::prost::Message)]
21722        pub struct Bucket {
21723            /// This bucket counts values from the previous bucket's (or -infinity if
21724            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
21725            /// (exclusive).
21726            #[prost(uint64, optional, tag="1")]
21727            pub upper_limit: ::core::option::Option<u64>,
21728            /// This is the highest bucket. This is set instead of the upper_limit. Any
21729            /// values larger or equal to the previous bucket's upper_limit are counted
21730            /// in this bucket.
21731            #[prost(bool, optional, tag="2")]
21732            pub max_bucket: ::core::option::Option<bool>,
21733            /// Number of values that fall into this range.
21734            #[prost(uint64, optional, tag="3")]
21735            pub count: ::core::option::Option<u64>,
21736        }
21737    }
21738    #[derive(Clone, PartialEq, ::prost::Message)]
21739    pub struct ProcessStats {
21740        #[prost(uint64, optional, tag="1")]
21741        pub unwinding_errors: ::core::option::Option<u64>,
21742        #[prost(uint64, optional, tag="2")]
21743        pub heap_samples: ::core::option::Option<u64>,
21744        #[prost(uint64, optional, tag="3")]
21745        pub map_reparses: ::core::option::Option<u64>,
21746        #[prost(message, optional, tag="4")]
21747        pub unwinding_time_us: ::core::option::Option<Histogram>,
21748        #[prost(uint64, optional, tag="5")]
21749        pub total_unwinding_time_us: ::core::option::Option<u64>,
21750        #[prost(uint64, optional, tag="6")]
21751        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
21752    }
21753    #[derive(Clone, PartialEq, ::prost::Message)]
21754    pub struct ProcessHeapSamples {
21755        #[prost(uint64, optional, tag="1")]
21756        pub pid: ::core::option::Option<u64>,
21757        /// This process was profiled from startup.
21758        /// If false, this process was already running when profiling started.
21759        #[prost(bool, optional, tag="3")]
21760        pub from_startup: ::core::option::Option<bool>,
21761        /// This process was not profiled because a concurrent session was active.
21762        /// If this is true, samples will be empty.
21763        #[prost(bool, optional, tag="4")]
21764        pub rejected_concurrent: ::core::option::Option<bool>,
21765        /// This process disconnected while it was profiled.
21766        /// If false, the process outlived the profiling session.
21767        #[prost(bool, optional, tag="6")]
21768        pub disconnected: ::core::option::Option<bool>,
21769        /// If disconnected, this disconnect was caused by the client overrunning
21770        /// the buffer.
21771        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
21772        /// on new S builds.
21773        #[prost(bool, optional, tag="7")]
21774        pub buffer_overran: ::core::option::Option<bool>,
21775        #[prost(enumeration="process_heap_samples::ClientError", optional, tag="14")]
21776        pub client_error: ::core::option::Option<i32>,
21777        /// If disconnected, this disconnected was caused by the shared memory
21778        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
21779        /// MEMORY CORRUPTION.
21780        #[prost(bool, optional, tag="8")]
21781        pub buffer_corrupted: ::core::option::Option<bool>,
21782        /// If disconnected, this disconnect was caused by heapprofd exceeding
21783        /// guardrails during this profiling session.
21784        #[prost(bool, optional, tag="10")]
21785        pub hit_guardrail: ::core::option::Option<bool>,
21786        #[prost(string, optional, tag="11")]
21787        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
21788        #[prost(uint64, optional, tag="12")]
21789        pub sampling_interval_bytes: ::core::option::Option<u64>,
21790        #[prost(uint64, optional, tag="13")]
21791        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
21792        /// Timestamp of the state of the target process that this dump represents.
21793        /// This can be different to the timestamp of the TracePackets for various
21794        /// reasons:
21795        /// * If disconnected is set above, this is the timestamp of last state
21796        ///    heapprofd had of the process before it disconnected.
21797        /// * Otherwise, if the rate of events produced by the process is high,
21798        ///    heapprofd might be behind.
21799        ///
21800        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
21801        ///                to have a type enum that we can reuse here.
21802        #[prost(uint64, optional, tag="9")]
21803        pub timestamp: ::core::option::Option<u64>,
21804        /// Metadata about heapprofd.
21805        #[prost(message, optional, tag="5")]
21806        pub stats: ::core::option::Option<ProcessStats>,
21807        #[prost(message, repeated, tag="2")]
21808        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
21809    }
21810    /// Nested message and enum types in `ProcessHeapSamples`.
21811    pub mod process_heap_samples {
21812        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21813        #[repr(i32)]
21814        pub enum ClientError {
21815            None = 0,
21816            HitTimeout = 1,
21817            InvalidStackBounds = 2,
21818        }
21819        impl ClientError {
21820            /// String value of the enum field names used in the ProtoBuf definition.
21821            ///
21822            /// The values are not transformed in any way and thus are considered stable
21823            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21824            pub fn as_str_name(&self) -> &'static str {
21825                match self {
21826                    ClientError::None => "CLIENT_ERROR_NONE",
21827                    ClientError::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
21828                    ClientError::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
21829                }
21830            }
21831        }
21832    }
21833}
21834/// Packet emitted by heapprofd when stream_allocations = true. Only for local
21835/// testing. Doesn't report the callsite.
21836#[derive(Clone, PartialEq, ::prost::Message)]
21837pub struct StreamingAllocation {
21838    /// TODO(fmayer): Add callstack.
21839    #[prost(uint64, repeated, packed="false", tag="1")]
21840    pub address: ::prost::alloc::vec::Vec<u64>,
21841    #[prost(uint64, repeated, packed="false", tag="2")]
21842    pub size: ::prost::alloc::vec::Vec<u64>,
21843    #[prost(uint64, repeated, packed="false", tag="3")]
21844    pub sample_size: ::prost::alloc::vec::Vec<u64>,
21845    #[prost(uint64, repeated, packed="false", tag="4")]
21846    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
21847    #[prost(uint32, repeated, packed="false", tag="5")]
21848    pub heap_id: ::prost::alloc::vec::Vec<u32>,
21849    #[prost(uint64, repeated, packed="false", tag="6")]
21850    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
21851}
21852/// Packet emitted by heapprofd when stream_allocations = true. Only for local
21853/// testing. Doesn't report the callsite.
21854#[derive(Clone, PartialEq, ::prost::Message)]
21855pub struct StreamingFree {
21856    /// TODO(fmayer): Add callstack.
21857    #[prost(uint64, repeated, packed="false", tag="1")]
21858    pub address: ::prost::alloc::vec::Vec<u64>,
21859    #[prost(uint32, repeated, packed="false", tag="2")]
21860    pub heap_id: ::prost::alloc::vec::Vec<u32>,
21861    #[prost(uint64, repeated, packed="false", tag="3")]
21862    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
21863}
21864/// Packet emitted by the chromium in-process signal-based callstack sampler.
21865/// Represents a series of individual stack samples (sampled at discrete points
21866/// in time), rather than aggregated over an interval.
21867#[derive(Clone, PartialEq, ::prost::Message)]
21868pub struct StreamingProfilePacket {
21869    /// Index into InternedData.callstacks
21870    #[prost(uint64, repeated, packed="false", tag="1")]
21871    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
21872    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
21873    /// this with ClockSnapshot-based delta encoding instead.
21874    #[prost(int64, repeated, packed="false", tag="2")]
21875    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
21876    #[prost(int32, optional, tag="3")]
21877    pub process_priority: ::core::option::Option<i32>,
21878}
21879/// Namespace for the contained enums.
21880#[derive(Clone, PartialEq, ::prost::Message)]
21881pub struct Profiling {
21882}
21883/// Nested message and enum types in `Profiling`.
21884pub mod profiling {
21885    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21886    #[repr(i32)]
21887    pub enum CpuMode {
21888        ModeUnknown = 0,
21889        ModeKernel = 1,
21890        ModeUser = 2,
21891        /// The following values aren't expected, but included for completeness:
21892        ModeHypervisor = 3,
21893        ModeGuestKernel = 4,
21894        ModeGuestUser = 5,
21895    }
21896    impl CpuMode {
21897        /// String value of the enum field names used in the ProtoBuf definition.
21898        ///
21899        /// The values are not transformed in any way and thus are considered stable
21900        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21901        pub fn as_str_name(&self) -> &'static str {
21902            match self {
21903                CpuMode::ModeUnknown => "MODE_UNKNOWN",
21904                CpuMode::ModeKernel => "MODE_KERNEL",
21905                CpuMode::ModeUser => "MODE_USER",
21906                CpuMode::ModeHypervisor => "MODE_HYPERVISOR",
21907                CpuMode::ModeGuestKernel => "MODE_GUEST_KERNEL",
21908                CpuMode::ModeGuestUser => "MODE_GUEST_USER",
21909            }
21910        }
21911    }
21912    /// Enumeration of libunwindstack's error codes.
21913    /// NB: the integral representations of the two enums are different.
21914    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21915    #[repr(i32)]
21916    pub enum StackUnwindError {
21917        UnwindErrorUnknown = 0,
21918        UnwindErrorNone = 1,
21919        UnwindErrorMemoryInvalid = 2,
21920        UnwindErrorUnwindInfo = 3,
21921        UnwindErrorUnsupported = 4,
21922        UnwindErrorInvalidMap = 5,
21923        UnwindErrorMaxFramesExceeded = 6,
21924        UnwindErrorRepeatedFrame = 7,
21925        UnwindErrorInvalidElf = 8,
21926        UnwindErrorSystemCall = 9,
21927        UnwindErrorThreadTimeout = 10,
21928        UnwindErrorThreadDoesNotExist = 11,
21929        UnwindErrorBadArch = 12,
21930        UnwindErrorMapsParse = 13,
21931        UnwindErrorInvalidParameter = 14,
21932        UnwindErrorPtraceCall = 15,
21933    }
21934    impl StackUnwindError {
21935        /// String value of the enum field names used in the ProtoBuf definition.
21936        ///
21937        /// The values are not transformed in any way and thus are considered stable
21938        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21939        pub fn as_str_name(&self) -> &'static str {
21940            match self {
21941                StackUnwindError::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
21942                StackUnwindError::UnwindErrorNone => "UNWIND_ERROR_NONE",
21943                StackUnwindError::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
21944                StackUnwindError::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
21945                StackUnwindError::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
21946                StackUnwindError::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
21947                StackUnwindError::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
21948                StackUnwindError::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
21949                StackUnwindError::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
21950                StackUnwindError::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
21951                StackUnwindError::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
21952                StackUnwindError::UnwindErrorThreadDoesNotExist => "UNWIND_ERROR_THREAD_DOES_NOT_EXIST",
21953                StackUnwindError::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
21954                StackUnwindError::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
21955                StackUnwindError::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
21956                StackUnwindError::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
21957            }
21958        }
21959    }
21960}
21961/// Packet emitted by the traced_perf sampling performance profiler, which
21962/// gathers data via the perf_event_open syscall. Each packet contains an
21963/// individual sample with a counter value, and optionally a
21964/// callstack.
21965///
21966/// Timestamps are within the root packet. The config can specify the clock, or
21967/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
21968/// timeframe, the default was CLOCK_BOOTTIME.
21969///
21970/// There are several distinct views of this message:
21971/// * indication of kernel buffer data loss (kernel_records_lost set)
21972/// * indication of skipped samples (sample_skipped_reason set)
21973/// * notable event in the sampling implementation (producer_event set)
21974/// * normal sample (timebase_count set, typically also callstack_iid)
21975#[derive(Clone, PartialEq, ::prost::Message)]
21976pub struct PerfSample {
21977    #[prost(uint32, optional, tag="1")]
21978    pub cpu: ::core::option::Option<u32>,
21979    #[prost(uint32, optional, tag="2")]
21980    pub pid: ::core::option::Option<u32>,
21981    #[prost(uint32, optional, tag="3")]
21982    pub tid: ::core::option::Option<u32>,
21983    /// Execution state that the process was sampled at.
21984    #[prost(enumeration="profiling::CpuMode", optional, tag="5")]
21985    pub cpu_mode: ::core::option::Option<i32>,
21986    /// Value of the timebase counter (since the event was configured, no deltas).
21987    #[prost(uint64, optional, tag="6")]
21988    pub timebase_count: ::core::option::Option<u64>,
21989    /// Value of the followers counter (since the event was configured, no deltas).
21990    #[prost(uint64, repeated, packed="false", tag="7")]
21991    pub follower_counts: ::prost::alloc::vec::Vec<u64>,
21992    /// Unwound callstack. Might be partial, in which case a synthetic "error"
21993    /// frame is appended, and |unwind_error| is set accordingly.
21994    #[prost(uint64, optional, tag="4")]
21995    pub callstack_iid: ::core::option::Option<u64>,
21996    /// If set, indicates that this message is not a sample, but rather an
21997    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
21998    /// loss occurs when the kernel has insufficient ring buffer capacity to write
21999    /// a record (which gets discarded). A record in this context is an individual
22000    /// ring buffer entry, and counts more than just sample records.
22001    ///
22002    /// The |timestamp| of the packet corresponds to the time that the producer
22003    /// wrote the packet for trace-sorting purposes alone, and should not be
22004    /// interpreted relative to the sample timestamps. This field is sufficient to
22005    /// detect that *some* kernel data loss happened within the trace, but not the
22006    /// specific time bounds of that loss (which would require tracking precedessor
22007    /// & successor timestamps, which is not deemed necessary at the moment).
22008    #[prost(uint64, optional, tag="17")]
22009    pub kernel_records_lost: ::core::option::Option<u64>,
22010    #[prost(message, optional, tag="19")]
22011    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
22012    /// If set, stack unwinding was incomplete due to an error.
22013    /// Unset values should be treated as UNWIND_ERROR_NONE.
22014    #[prost(oneof="perf_sample::OptionalUnwindError", tags="16")]
22015    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
22016    #[prost(oneof="perf_sample::OptionalSampleSkippedReason", tags="18")]
22017    pub optional_sample_skipped_reason: ::core::option::Option<perf_sample::OptionalSampleSkippedReason>,
22018}
22019/// Nested message and enum types in `PerfSample`.
22020pub mod perf_sample {
22021    /// A notable event within the sampling implementation.
22022    #[derive(Clone, PartialEq, ::prost::Message)]
22023    pub struct ProducerEvent {
22024        #[prost(oneof="producer_event::OptionalSourceStopReason", tags="1")]
22025        pub optional_source_stop_reason: ::core::option::Option<producer_event::OptionalSourceStopReason>,
22026    }
22027    /// Nested message and enum types in `ProducerEvent`.
22028    pub mod producer_event {
22029        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22030        #[repr(i32)]
22031        pub enum DataSourceStopReason {
22032            ProfilerStopUnknown = 0,
22033            ProfilerStopGuardrail = 1,
22034        }
22035        impl DataSourceStopReason {
22036            /// String value of the enum field names used in the ProtoBuf definition.
22037            ///
22038            /// The values are not transformed in any way and thus are considered stable
22039            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22040            pub fn as_str_name(&self) -> &'static str {
22041                match self {
22042                    DataSourceStopReason::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
22043                    DataSourceStopReason::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
22044                }
22045            }
22046        }
22047        #[derive(Clone, PartialEq, ::prost::Oneof)]
22048        pub enum OptionalSourceStopReason {
22049            #[prost(enumeration="DataSourceStopReason", tag="1")]
22050            SourceStopReason(i32),
22051        }
22052    }
22053    /// If set, indicates that the profiler encountered a sample that was relevant,
22054    /// but was skipped.
22055    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22056    #[repr(i32)]
22057    pub enum SampleSkipReason {
22058        ProfilerSkipUnknown = 0,
22059        ProfilerSkipReadStage = 1,
22060        ProfilerSkipUnwindStage = 2,
22061        ProfilerSkipUnwindEnqueue = 3,
22062        ProfilerSkipNotInScope = 4,
22063    }
22064    impl SampleSkipReason {
22065        /// String value of the enum field names used in the ProtoBuf definition.
22066        ///
22067        /// The values are not transformed in any way and thus are considered stable
22068        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22069        pub fn as_str_name(&self) -> &'static str {
22070            match self {
22071                SampleSkipReason::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
22072                SampleSkipReason::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
22073                SampleSkipReason::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
22074                SampleSkipReason::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
22075                SampleSkipReason::ProfilerSkipNotInScope => "PROFILER_SKIP_NOT_IN_SCOPE",
22076            }
22077        }
22078    }
22079    /// If set, stack unwinding was incomplete due to an error.
22080    /// Unset values should be treated as UNWIND_ERROR_NONE.
22081    #[derive(Clone, PartialEq, ::prost::Oneof)]
22082    pub enum OptionalUnwindError {
22083        #[prost(enumeration="super::profiling::StackUnwindError", tag="16")]
22084        UnwindError(i32),
22085    }
22086    #[derive(Clone, PartialEq, ::prost::Oneof)]
22087    pub enum OptionalSampleSkippedReason {
22088        #[prost(enumeration="SampleSkipReason", tag="18")]
22089        SampleSkippedReason(i32),
22090    }
22091}
22092/// Submessage for TracePacketDefaults.
22093#[derive(Clone, PartialEq, ::prost::Message)]
22094pub struct PerfSampleDefaults {
22095    /// The sampling timebase. Might not be identical to the data source config if
22096    /// the implementation decided to default/override some parameters.
22097    #[prost(message, optional, tag="1")]
22098    pub timebase: ::core::option::Option<perf_events::Timebase>,
22099    /// Description of followers event
22100    #[prost(message, repeated, tag="4")]
22101    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
22102    /// If the config requested process sharding, report back the count and which
22103    /// of those bins was selected. Never changes for the duration of a trace.
22104    #[prost(uint32, optional, tag="2")]
22105    pub process_shard_count: ::core::option::Option<u32>,
22106    #[prost(uint32, optional, tag="3")]
22107    pub chosen_process_shard: ::core::option::Option<u32>,
22108}
22109// End of protos/perfetto/trace/profiling/profile_packet.proto
22110
22111// Begin of protos/perfetto/trace/profiling/smaps.proto
22112
22113#[derive(Clone, PartialEq, ::prost::Message)]
22114pub struct SmapsEntry {
22115    #[prost(string, optional, tag="1")]
22116    pub path: ::core::option::Option<::prost::alloc::string::String>,
22117    #[prost(uint64, optional, tag="2")]
22118    pub size_kb: ::core::option::Option<u64>,
22119    #[prost(uint64, optional, tag="3")]
22120    pub private_dirty_kb: ::core::option::Option<u64>,
22121    #[prost(uint64, optional, tag="4")]
22122    pub swap_kb: ::core::option::Option<u64>,
22123    /// for field upload (instead of path).
22124    #[prost(string, optional, tag="5")]
22125    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
22126    /// TODO(crbug.com/1098746): Consider encoding this as incremental values.
22127    #[prost(uint64, optional, tag="6")]
22128    pub start_address: ::core::option::Option<u64>,
22129    #[prost(uint64, optional, tag="7")]
22130    pub module_timestamp: ::core::option::Option<u64>,
22131    #[prost(string, optional, tag="8")]
22132    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
22133    #[prost(string, optional, tag="9")]
22134    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
22135    #[prost(uint32, optional, tag="10")]
22136    pub protection_flags: ::core::option::Option<u32>,
22137    #[prost(uint64, optional, tag="11")]
22138    pub private_clean_resident_kb: ::core::option::Option<u64>,
22139    #[prost(uint64, optional, tag="12")]
22140    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
22141    #[prost(uint64, optional, tag="13")]
22142    pub shared_clean_resident_kb: ::core::option::Option<u64>,
22143    #[prost(uint64, optional, tag="14")]
22144    pub locked_kb: ::core::option::Option<u64>,
22145    #[prost(uint64, optional, tag="15")]
22146    pub proportional_resident_kb: ::core::option::Option<u64>,
22147}
22148#[derive(Clone, PartialEq, ::prost::Message)]
22149pub struct SmapsPacket {
22150    #[prost(uint32, optional, tag="1")]
22151    pub pid: ::core::option::Option<u32>,
22152    #[prost(message, repeated, tag="2")]
22153    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
22154}
22155// End of protos/perfetto/trace/profiling/smaps.proto
22156
22157// Begin of protos/perfetto/trace/ps/process_stats.proto
22158
22159/// Per-process periodically sampled stats. These samples are wrapped in a
22160/// dedicated message (as opposite to be fields in process_tree.proto) because
22161/// they are dumped at a different rate than cmdline and thread list.
22162/// Note: not all of these stats will be present in every ProcessStats message
22163/// and sometimes processes may be missing. This is because counters are
22164/// cached to reduce emission of counters which do not change.
22165#[derive(Clone, PartialEq, ::prost::Message)]
22166pub struct ProcessStats {
22167    #[prost(message, repeated, tag="1")]
22168    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
22169    /// The time at which we finish collecting this batch of samples;
22170    /// the top-level packet timestamp is the time at which
22171    /// we begin collection.
22172    #[prost(uint64, optional, tag="2")]
22173    pub collection_end_timestamp: ::core::option::Option<u64>,
22174}
22175/// Nested message and enum types in `ProcessStats`.
22176pub mod process_stats {
22177    /// Per-thread periodically sampled stats.
22178    /// Note: not all of these stats will be present in every message. See the note
22179    /// for ProcessStats.
22180    #[derive(Clone, PartialEq, ::prost::Message)]
22181    pub struct Thread {
22182        #[prost(int32, optional, tag="1")]
22183        pub tid: ::core::option::Option<i32>,
22184    }
22185    #[derive(Clone, PartialEq, ::prost::Message)]
22186    pub struct FdInfo {
22187        #[prost(uint64, optional, tag="1")]
22188        pub fd: ::core::option::Option<u64>,
22189        #[prost(string, optional, tag="2")]
22190        pub path: ::core::option::Option<::prost::alloc::string::String>,
22191    }
22192    #[derive(Clone, PartialEq, ::prost::Message)]
22193    pub struct Process {
22194        #[prost(int32, optional, tag="1")]
22195        pub pid: ::core::option::Option<i32>,
22196        #[prost(message, repeated, tag="11")]
22197        pub threads: ::prost::alloc::vec::Vec<Thread>,
22198        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
22199        #[prost(uint64, optional, tag="2")]
22200        pub vm_size_kb: ::core::option::Option<u64>,
22201        #[prost(uint64, optional, tag="3")]
22202        pub vm_rss_kb: ::core::option::Option<u64>,
22203        #[prost(uint64, optional, tag="4")]
22204        pub rss_anon_kb: ::core::option::Option<u64>,
22205        #[prost(uint64, optional, tag="5")]
22206        pub rss_file_kb: ::core::option::Option<u64>,
22207        #[prost(uint64, optional, tag="6")]
22208        pub rss_shmem_kb: ::core::option::Option<u64>,
22209        #[prost(uint64, optional, tag="7")]
22210        pub vm_swap_kb: ::core::option::Option<u64>,
22211        #[prost(uint64, optional, tag="8")]
22212        pub vm_locked_kb: ::core::option::Option<u64>,
22213        /// When adding a new field remember to update kProcMemCounterSize in
22214        /// the trace processor.
22215        #[prost(uint64, optional, tag="9")]
22216        pub vm_hwm_kb: ::core::option::Option<u64>,
22217        #[prost(int64, optional, tag="10")]
22218        pub oom_score_adj: ::core::option::Option<i64>,
22219        /// The peak resident set size is resettable in newer Posix kernels.
22220        /// This field specifies if reset is supported and if the writer had reset
22221        /// the peaks after each process stats recording.
22222        #[prost(bool, optional, tag="12")]
22223        pub is_peak_rss_resettable: ::core::option::Option<bool>,
22224        /// Private, shared and swap footprint of the process as measured by
22225        /// Chrome. To know more about these metrics refer to:
22226        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
22227        #[prost(uint32, optional, tag="13")]
22228        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
22229        #[prost(uint32, optional, tag="14")]
22230        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
22231        #[prost(message, repeated, tag="15")]
22232        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
22233        /// These fields are set only when scan_smaps_rollup=true
22234        #[prost(uint64, optional, tag="16")]
22235        pub smr_rss_kb: ::core::option::Option<u64>,
22236        #[prost(uint64, optional, tag="17")]
22237        pub smr_pss_kb: ::core::option::Option<u64>,
22238        #[prost(uint64, optional, tag="18")]
22239        pub smr_pss_anon_kb: ::core::option::Option<u64>,
22240        #[prost(uint64, optional, tag="19")]
22241        pub smr_pss_file_kb: ::core::option::Option<u64>,
22242        #[prost(uint64, optional, tag="20")]
22243        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
22244        #[prost(uint64, optional, tag="23")]
22245        pub smr_swap_pss_kb: ::core::option::Option<u64>,
22246        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
22247        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
22248        /// Resolution of "clock ticks", usually 10ms.
22249        #[prost(uint64, optional, tag="21")]
22250        pub runtime_user_mode: ::core::option::Option<u64>,
22251        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
22252        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
22253        /// Resolution of "clock ticks", usually 10ms.
22254        #[prost(uint64, optional, tag="22")]
22255        pub runtime_kernel_mode: ::core::option::Option<u64>,
22256        /// The total size of all dmabufs referenced by a process via FDs or VMAs.
22257        #[prost(uint64, optional, tag="24")]
22258        pub dmabuf_rss_kb: ::core::option::Option<u64>,
22259    }
22260}
22261// End of protos/perfetto/trace/ps/process_stats.proto
22262
22263// Begin of protos/perfetto/trace/ps/process_tree.proto
22264
22265/// Metadata about the processes and threads in the trace.
22266/// Note: this proto was designed to be filled in by traced_probes and should
22267/// only be populated with accurate information coming from the system. Other
22268/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
22269/// in TrackDescriptor.
22270#[derive(Clone, PartialEq, ::prost::Message)]
22271pub struct ProcessTree {
22272    /// List of processes and threads in the client. These lists are incremental
22273    /// and not exhaustive. A process and its threads might show up separately in
22274    /// different ProcessTree messages. A thread might event not show up at all, if
22275    /// no sched_switch activity was detected, for instance:
22276    /// #0 { processes: [{pid: 10, ...}], threads: [{pid: 11, tgid: 10}] }
22277    /// #1 { threads: [{pid: 12, tgid: 10}] }
22278    /// #2 { processes: [{pid: 20, ...}], threads: [{pid: 13, tgid: 10}] }
22279    #[prost(message, repeated, tag="1")]
22280    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
22281    #[prost(message, repeated, tag="2")]
22282    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
22283    /// The time at which we finish collecting this process tree;
22284    /// the top-level packet timestamp is the time at which
22285    /// we begin collection.
22286    #[prost(uint64, optional, tag="3")]
22287    pub collection_end_timestamp: ::core::option::Option<u64>,
22288}
22289/// Nested message and enum types in `ProcessTree`.
22290pub mod process_tree {
22291    /// Representation of a thread.
22292    #[derive(Clone, PartialEq, ::prost::Message)]
22293    pub struct Thread {
22294        /// The thread ID (as per gettid()) in the root PID namespace.
22295        #[prost(int32, optional, tag="1")]
22296        pub tid: ::core::option::Option<i32>,
22297        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
22298        #[prost(int32, optional, tag="3")]
22299        pub tgid: ::core::option::Option<i32>,
22300        /// The name of the thread.
22301        #[prost(string, optional, tag="2")]
22302        pub name: ::core::option::Option<::prost::alloc::string::String>,
22303        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
22304        /// from the NSpid entry of /proc/<tid>/status, with the first element (root-
22305        /// level thread ID) omitted.
22306        #[prost(int32, repeated, packed="false", tag="4")]
22307        pub nstid: ::prost::alloc::vec::Vec<i32>,
22308    }
22309    /// Representation of a process.
22310    #[derive(Clone, PartialEq, ::prost::Message)]
22311    pub struct Process {
22312        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
22313        /// PID namespace.
22314        #[prost(int32, optional, tag="1")]
22315        pub pid: ::core::option::Option<i32>,
22316        /// The parent process ID, as per getppid().
22317        #[prost(int32, optional, tag="2")]
22318        pub ppid: ::core::option::Option<i32>,
22319        /// The command line for the process, as per /proc/pid/cmdline, broken up on
22320        /// NUL bytes.
22321        /// If it is a kernel thread or a zombie, there will only be one cmdline
22322        /// field and it will contain /proc/pid/comm.
22323        #[prost(string, repeated, tag="3")]
22324        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22325        /// If true, the |cmdline| field was filled with the main thread's "comm"
22326        /// field instead.
22327        /// Introduced in: perfetto v50.
22328        #[prost(bool, optional, tag="9")]
22329        pub cmdline_is_comm: ::core::option::Option<bool>,
22330        /// The uid for the process, as per /proc/pid/status.
22331        #[prost(int32, optional, tag="5")]
22332        pub uid: ::core::option::Option<i32>,
22333        /// The non-root-level process IDs if the process runs in a PID namespace.
22334        /// Read from the NSpid entry of /proc/<pid>/status, with the first element
22335        /// (root-level process ID) omitted.
22336        #[prost(int32, repeated, packed="false", tag="6")]
22337        pub nspid: ::prost::alloc::vec::Vec<i32>,
22338        /// Timestamp of when the process was created, in nanoseconds
22339        /// from boot. Parsed from starttime in /proc/pid/stat.
22340        /// Recorded if record_process_age config option is set.
22341        /// Resolution of "clock ticks", usually 10ms.
22342        #[prost(uint64, optional, tag="7")]
22343        pub process_start_from_boot: ::core::option::Option<u64>,
22344        /// If true, the process is a kernel thread.
22345        /// Set only on linux v6.4+. For traces from older devices, it is possible to
22346        /// infer most kthreads by checking that they're a descendant of kthreadd
22347        /// (pid=2), or are the idle process (pid=0).
22348        /// Introduced in: perfetto v50.
22349        #[prost(bool, optional, tag="8")]
22350        pub is_kthread: ::core::option::Option<bool>,
22351    }
22352}
22353// End of protos/perfetto/trace/ps/process_tree.proto
22354
22355// Begin of protos/perfetto/trace/remote_clock_sync.proto
22356
22357/// Records the parameters for aligning clock readings between machines.
22358#[derive(Clone, PartialEq, ::prost::Message)]
22359pub struct RemoteClockSync {
22360    #[prost(message, repeated, tag="1")]
22361    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
22362}
22363/// Nested message and enum types in `RemoteClockSync`.
22364pub mod remote_clock_sync {
22365    /// Synchronized clock snapshots taken on both sides of the relay port (the
22366    /// tracing service and the relay service). A round of clock synchronization
22367    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
22368    /// snapshot -> client snapshot -> host snapshot.
22369    #[derive(Clone, PartialEq, ::prost::Message)]
22370    pub struct SyncedClocks {
22371        #[prost(message, optional, tag="2")]
22372        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
22373        #[prost(message, optional, tag="3")]
22374        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
22375    }
22376}
22377// End of protos/perfetto/trace/remote_clock_sync.proto
22378
22379// Begin of protos/perfetto/trace/statsd/statsd_atom.proto
22380
22381/// Deliberate empty message. See comment on StatsdAtom#atom below.
22382#[derive(Clone, PartialEq, ::prost::Message)]
22383pub struct Atom {
22384}
22385/// One or more statsd atoms. This must continue to match:
22386/// perfetto/protos/third_party/statsd/shell_data.proto
22387/// So that we can efficiently add data from statsd directly to the
22388/// trace.
22389#[derive(Clone, PartialEq, ::prost::Message)]
22390pub struct StatsdAtom {
22391    /// Atom should be filled with an Atom proto from:
22392    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
22393    /// We don't reference Atom directly here since we don't want to import
22394    /// Atom.proto and all its transitive dependencies into Perfetto.
22395    /// atom and timestamp_nanos have the same cardinality
22396    #[prost(message, repeated, tag="1")]
22397    pub atom: ::prost::alloc::vec::Vec<Atom>,
22398    #[prost(int64, repeated, packed="false", tag="2")]
22399    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
22400}
22401// End of protos/perfetto/trace/statsd/statsd_atom.proto
22402
22403// Begin of protos/perfetto/trace/sys_stats/sys_stats.proto
22404
22405/// Various Linux system stat counters from /proc.
22406/// The fields in this message can be reported at different rates and with
22407/// different granularity. See sys_stats_config.proto.
22408#[derive(Clone, PartialEq, ::prost::Message)]
22409pub struct SysStats {
22410    #[prost(message, repeated, tag="1")]
22411    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
22412    #[prost(message, repeated, tag="2")]
22413    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
22414    /// One entry per cpu.
22415    #[prost(message, repeated, tag="3")]
22416    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
22417    /// Num processes forked since boot.
22418    /// Populated only if FORK_COUNT in config.stat_counters.
22419    #[prost(uint64, optional, tag="4")]
22420    pub num_forks: ::core::option::Option<u64>,
22421    // Number of interrupts, broken by IRQ number.
22422    // Populated only if IRQ_COUNTS in config.stat_counters.
22423
22424    /// Total num of irqs serviced since boot.
22425    #[prost(uint64, optional, tag="5")]
22426    pub num_irq_total: ::core::option::Option<u64>,
22427    #[prost(message, repeated, tag="6")]
22428    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
22429    // Number of softirqs, broken by softirq number.
22430    // Populated only if SOFTIRQ_COUNTS in config.stat_counters.
22431
22432    /// Total num of softirqs since boot.
22433    #[prost(uint64, optional, tag="7")]
22434    pub num_softirq_total: ::core::option::Option<u64>,
22435    /// Per-softirq count.
22436    #[prost(message, repeated, tag="8")]
22437    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
22438    /// The time at which we finish collecting this set of samples;
22439    /// the top-level packet timestamp is the time at which
22440    /// we begin collection.
22441    #[prost(uint64, optional, tag="9")]
22442    pub collection_end_timestamp: ::core::option::Option<u64>,
22443    /// One entry per device.
22444    #[prost(message, repeated, tag="10")]
22445    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
22446    /// Cpu current frequency from
22447    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
22448    /// One entry per cpu. Report 0 for offline cpu
22449    #[prost(uint32, repeated, packed="false", tag="11")]
22450    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
22451    /// One entry per each node's zones.
22452    #[prost(message, repeated, tag="12")]
22453    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
22454    /// One entry per disk device.
22455    #[prost(message, repeated, tag="13")]
22456    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
22457    /// One entry per PsiResource type.
22458    #[prost(message, repeated, tag="14")]
22459    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
22460    #[prost(message, repeated, tag="15")]
22461    pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
22462    #[prost(message, repeated, tag="16")]
22463    pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
22464    /// Read GPU frequency info on Intel/AMD devices.
22465    #[prost(uint64, repeated, packed="false", tag="17")]
22466    pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
22467}
22468/// Nested message and enum types in `SysStats`.
22469pub mod sys_stats {
22470    /// Counters from /proc/meminfo. Values are in KB.
22471    #[derive(Clone, PartialEq, ::prost::Message)]
22472    pub struct MeminfoValue {
22473        #[prost(enumeration="super::MeminfoCounters", optional, tag="1")]
22474        pub key: ::core::option::Option<i32>,
22475        #[prost(uint64, optional, tag="2")]
22476        pub value: ::core::option::Option<u64>,
22477    }
22478    /// Counter from /proc/vmstat. Units are often pages, not KB.
22479    #[derive(Clone, PartialEq, ::prost::Message)]
22480    pub struct VmstatValue {
22481        #[prost(enumeration="super::VmstatCounters", optional, tag="1")]
22482        pub key: ::core::option::Option<i32>,
22483        #[prost(uint64, optional, tag="2")]
22484        pub value: ::core::option::Option<u64>,
22485    }
22486    /// Times in each mode, since boot. Unit: nanoseconds.
22487    #[derive(Clone, PartialEq, ::prost::Message)]
22488    pub struct CpuTimes {
22489        #[prost(uint32, optional, tag="1")]
22490        pub cpu_id: ::core::option::Option<u32>,
22491        /// Time spent in user mode.
22492        #[prost(uint64, optional, tag="2")]
22493        pub user_ns: ::core::option::Option<u64>,
22494        /// Time spent in user mode (low prio).
22495        #[prost(uint64, optional, tag="3")]
22496        pub user_nice_ns: ::core::option::Option<u64>,
22497        /// Time spent in system mode.
22498        #[prost(uint64, optional, tag="4")]
22499        pub system_mode_ns: ::core::option::Option<u64>,
22500        /// Time spent in the idle task.
22501        #[prost(uint64, optional, tag="5")]
22502        pub idle_ns: ::core::option::Option<u64>,
22503        /// Time spent waiting for I/O.
22504        #[prost(uint64, optional, tag="6")]
22505        pub io_wait_ns: ::core::option::Option<u64>,
22506        /// Time spent servicing interrupts.
22507        #[prost(uint64, optional, tag="7")]
22508        pub irq_ns: ::core::option::Option<u64>,
22509        /// Time spent servicing softirqs.
22510        #[prost(uint64, optional, tag="8")]
22511        pub softirq_ns: ::core::option::Option<u64>,
22512        /// Time spent executing something else on host than this guest.
22513        #[prost(uint64, optional, tag="9")]
22514        pub steal_ns: ::core::option::Option<u64>,
22515    }
22516    #[derive(Clone, PartialEq, ::prost::Message)]
22517    pub struct InterruptCount {
22518        #[prost(int32, optional, tag="1")]
22519        pub irq: ::core::option::Option<i32>,
22520        #[prost(uint64, optional, tag="2")]
22521        pub count: ::core::option::Option<u64>,
22522    }
22523    /// Frequencies for /sys/class/devfreq/ entries in kHz.
22524    #[derive(Clone, PartialEq, ::prost::Message)]
22525    pub struct DevfreqValue {
22526        #[prost(string, optional, tag="1")]
22527        pub key: ::core::option::Option<::prost::alloc::string::String>,
22528        #[prost(uint64, optional, tag="2")]
22529        pub value: ::core::option::Option<u64>,
22530    }
22531    #[derive(Clone, PartialEq, ::prost::Message)]
22532    pub struct BuddyInfo {
22533        #[prost(string, optional, tag="1")]
22534        pub node: ::core::option::Option<::prost::alloc::string::String>,
22535        #[prost(string, optional, tag="2")]
22536        pub zone: ::core::option::Option<::prost::alloc::string::String>,
22537        #[prost(uint32, repeated, packed="false", tag="3")]
22538        pub order_pages: ::prost::alloc::vec::Vec<u32>,
22539    }
22540    /// Counters from /proc/diskstats.
22541    #[derive(Clone, PartialEq, ::prost::Message)]
22542    pub struct DiskStat {
22543        #[prost(string, optional, tag="1")]
22544        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
22545        #[prost(uint64, optional, tag="2")]
22546        pub read_sectors: ::core::option::Option<u64>,
22547        #[prost(uint64, optional, tag="3")]
22548        pub read_time_ms: ::core::option::Option<u64>,
22549        #[prost(uint64, optional, tag="4")]
22550        pub write_sectors: ::core::option::Option<u64>,
22551        #[prost(uint64, optional, tag="5")]
22552        pub write_time_ms: ::core::option::Option<u64>,
22553        #[prost(uint64, optional, tag="6")]
22554        pub discard_sectors: ::core::option::Option<u64>,
22555        #[prost(uint64, optional, tag="7")]
22556        pub discard_time_ms: ::core::option::Option<u64>,
22557        #[prost(uint64, optional, tag="8")]
22558        pub flush_count: ::core::option::Option<u64>,
22559        #[prost(uint64, optional, tag="9")]
22560        pub flush_time_ms: ::core::option::Option<u64>,
22561    }
22562    /// Reading from /proc/pressure/*.
22563    #[derive(Clone, PartialEq, ::prost::Message)]
22564    pub struct PsiSample {
22565        #[prost(enumeration="psi_sample::PsiResource", optional, tag="1")]
22566        pub resource: ::core::option::Option<i32>,
22567        /// Total absolute stall time (in nanos) for a given resource.
22568        /// While PSI readings are in micros, we store in nanos for consistency with
22569        /// most other time-based counters.
22570        #[prost(uint64, optional, tag="2")]
22571        pub total_ns: ::core::option::Option<u64>,
22572    }
22573    /// Nested message and enum types in `PsiSample`.
22574    pub mod psi_sample {
22575        /// Type of resource that may have exhibited pressure stalls.
22576        ///     * _SOME indicates some resource tasks stalled.
22577        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
22578        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22579        #[repr(i32)]
22580        pub enum PsiResource {
22581            Unspecified = 0,
22582            CpuSome = 1,
22583            CpuFull = 2,
22584            IoSome = 3,
22585            IoFull = 4,
22586            MemorySome = 5,
22587            MemoryFull = 6,
22588        }
22589        impl PsiResource {
22590            /// String value of the enum field names used in the ProtoBuf definition.
22591            ///
22592            /// The values are not transformed in any way and thus are considered stable
22593            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22594            pub fn as_str_name(&self) -> &'static str {
22595                match self {
22596                    PsiResource::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
22597                    PsiResource::CpuSome => "PSI_RESOURCE_CPU_SOME",
22598                    PsiResource::CpuFull => "PSI_RESOURCE_CPU_FULL",
22599                    PsiResource::IoSome => "PSI_RESOURCE_IO_SOME",
22600                    PsiResource::IoFull => "PSI_RESOURCE_IO_FULL",
22601                    PsiResource::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
22602                    PsiResource::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
22603                }
22604            }
22605        }
22606    }
22607    /// Reading from /sys/class/thermal/*.
22608    #[derive(Clone, PartialEq, ::prost::Message)]
22609    pub struct ThermalZone {
22610        #[prost(string, optional, tag="1")]
22611        pub name: ::core::option::Option<::prost::alloc::string::String>,
22612        #[prost(uint64, optional, tag="2")]
22613        pub temp: ::core::option::Option<u64>,
22614        #[prost(string, optional, tag="3")]
22615        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
22616    }
22617    /// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
22618    #[derive(Clone, PartialEq, ::prost::Message)]
22619    pub struct CpuIdleStateEntry {
22620        /// Name of the idle state, e.g. C1-C10
22621        #[prost(string, optional, tag="1")]
22622        pub state: ::core::option::Option<::prost::alloc::string::String>,
22623        #[prost(uint64, optional, tag="2")]
22624        pub duration_us: ::core::option::Option<u64>,
22625    }
22626    #[derive(Clone, PartialEq, ::prost::Message)]
22627    pub struct CpuIdleState {
22628        #[prost(uint32, optional, tag="1")]
22629        pub cpu_id: ::core::option::Option<u32>,
22630        #[prost(message, repeated, tag="2")]
22631        pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
22632    }
22633}
22634// End of protos/perfetto/trace/sys_stats/sys_stats.proto
22635
22636// Begin of protos/perfetto/trace/system_info/cpu_info.proto
22637
22638/// Information about CPUs from procfs and sysfs.
22639#[derive(Clone, PartialEq, ::prost::Message)]
22640pub struct CpuInfo {
22641    /// Describes available CPUs, one entry per CPU.
22642    #[prost(message, repeated, tag="1")]
22643    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
22644}
22645/// Nested message and enum types in `CpuInfo`.
22646pub mod cpu_info {
22647    #[derive(Clone, PartialEq, ::prost::Message)]
22648    pub struct ArmCpuIdentifier {
22649        /// Implementer code
22650        #[prost(uint32, optional, tag="1")]
22651        pub implementer: ::core::option::Option<u32>,
22652        /// Architecture code
22653        #[prost(uint32, optional, tag="2")]
22654        pub architecture: ::core::option::Option<u32>,
22655        /// CPU variant
22656        #[prost(uint32, optional, tag="3")]
22657        pub variant: ::core::option::Option<u32>,
22658        /// CPU part
22659        #[prost(uint32, optional, tag="4")]
22660        pub part: ::core::option::Option<u32>,
22661        /// CPU revision
22662        #[prost(uint32, optional, tag="5")]
22663        pub revision: ::core::option::Option<u32>,
22664    }
22665    /// Information about a single CPU.
22666    #[derive(Clone, PartialEq, ::prost::Message)]
22667    pub struct Cpu {
22668        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
22669        /// Example: "AArch64 Processor rev 12 (aarch64)"
22670        #[prost(string, optional, tag="1")]
22671        pub processor: ::core::option::Option<::prost::alloc::string::String>,
22672        /// Frequencies from
22673        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
22674        /// where X is the index of this CPU.
22675        #[prost(uint32, repeated, packed="false", tag="2")]
22676        pub frequencies: ::prost::alloc::vec::Vec<u32>,
22677        /// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
22678        /// the index of this CPU.
22679        #[prost(uint32, optional, tag="3")]
22680        pub capacity: ::core::option::Option<u32>,
22681        /// Features is a bitmap containing a bit set for each feature defined in
22682        /// kCpuInfoFlags (cpu_info_flags_allowlist.h) for the corresponding array
22683        /// index.
22684        #[prost(uint64, optional, tag="5")]
22685        pub features: ::core::option::Option<u64>,
22686        /// Code to identify the CPU
22687        #[prost(oneof="cpu::Identifier", tags="4")]
22688        pub identifier: ::core::option::Option<cpu::Identifier>,
22689    }
22690    /// Nested message and enum types in `Cpu`.
22691    pub mod cpu {
22692        /// Code to identify the CPU
22693        #[derive(Clone, PartialEq, ::prost::Oneof)]
22694        pub enum Identifier {
22695            #[prost(message, tag="4")]
22696            ArmIdentifier(super::ArmCpuIdentifier),
22697        }
22698    }
22699}
22700// End of protos/perfetto/trace/system_info/cpu_info.proto
22701
22702// Begin of protos/perfetto/trace/test_event.proto
22703
22704/// Event used by testing code.
22705#[derive(Clone, PartialEq, ::prost::Message)]
22706pub struct TestEvent {
22707    /// Arbitrary string used in tests.
22708    #[prost(string, optional, tag="1")]
22709    pub str: ::core::option::Option<::prost::alloc::string::String>,
22710    /// The current value of the random number sequence used in tests.
22711    #[prost(uint32, optional, tag="2")]
22712    pub seq_value: ::core::option::Option<u32>,
22713    /// Monotonically increased on each packet.
22714    #[prost(uint64, optional, tag="3")]
22715    pub counter: ::core::option::Option<u64>,
22716    /// No more packets should follow (from the current sequence).
22717    #[prost(bool, optional, tag="4")]
22718    pub is_last: ::core::option::Option<bool>,
22719    #[prost(message, optional, tag="5")]
22720    pub payload: ::core::option::Option<test_event::TestPayload>,
22721}
22722/// Nested message and enum types in `TestEvent`.
22723pub mod test_event {
22724    #[derive(Clone, PartialEq, ::prost::Message)]
22725    pub struct TestPayload {
22726        #[prost(string, repeated, tag="1")]
22727        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22728        #[prost(message, repeated, tag="2")]
22729        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
22730        #[prost(string, optional, tag="4")]
22731        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
22732        #[prost(int32, optional, tag="5")]
22733        pub single_int: ::core::option::Option<i32>,
22734        #[prost(int32, repeated, packed="false", tag="6")]
22735        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
22736        /// When 0 this is the bottom-most nested message.
22737        #[prost(uint32, optional, tag="3")]
22738        pub remaining_nesting_depth: ::core::option::Option<u32>,
22739        #[prost(message, repeated, tag="7")]
22740        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
22741    }
22742}
22743// End of protos/perfetto/trace/test_event.proto
22744
22745// Begin of protos/perfetto/trace/trace_packet_defaults.proto
22746
22747/// Default values for TracePacket fields that hold for a particular TraceWriter
22748/// packet sequence. This message contains a subset of the TracePacket fields
22749/// with matching IDs. When provided, these fields define the default values
22750/// that should be applied, at import time, to all TracePacket(s) with the same
22751/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
22752///
22753/// Should be reemitted whenever incremental state is cleared on the sequence.
22754#[derive(Clone, PartialEq, ::prost::Message)]
22755pub struct TracePacketDefaults {
22756    #[prost(uint32, optional, tag="58")]
22757    pub timestamp_clock_id: ::core::option::Option<u32>,
22758    /// Default values for TrackEvents (e.g. default track).
22759    #[prost(message, optional, tag="11")]
22760    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
22761    /// Defaults for perf profiler packets (PerfSample).
22762    #[prost(message, optional, tag="12")]
22763    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
22764    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
22765    /// V8RegexpCode)
22766    #[prost(message, optional, tag="99")]
22767    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
22768}
22769// Begin of protos/perfetto/trace/trace_uuid.proto
22770
22771/// A random unique ID that identifies the trace.
22772/// This message has been introduced in v32. Prior to that, the UUID was
22773/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
22774/// This has been moved to a standalone packet to deal with new use-cases for
22775/// go/gapless-aot, where the same tracing session can be serialized several
22776/// times, in which case the UUID is changed on each snapshot and does not match
22777/// the one in the TraceConfig.
22778#[derive(Clone, PartialEq, ::prost::Message)]
22779pub struct TraceUuid {
22780    #[prost(int64, optional, tag="1")]
22781    pub msb: ::core::option::Option<i64>,
22782    #[prost(int64, optional, tag="2")]
22783    pub lsb: ::core::option::Option<i64>,
22784}
22785// End of protos/perfetto/trace/trace_uuid.proto
22786
22787// Begin of protos/perfetto/trace/track_event/process_descriptor.proto
22788
22789/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
22790/// usually by the process's main thread.
22791///
22792/// Next id: 9.
22793#[derive(Clone, PartialEq, ::prost::Message)]
22794pub struct ProcessDescriptor {
22795    #[prost(int32, optional, tag="1")]
22796    pub pid: ::core::option::Option<i32>,
22797    #[prost(string, repeated, tag="2")]
22798    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22799    #[prost(string, optional, tag="6")]
22800    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
22801    #[prost(int32, optional, tag="5")]
22802    pub process_priority: ::core::option::Option<i32>,
22803    /// Process start time in nanoseconds.
22804    /// The timestamp refers to the trace clock by default. Other clock IDs
22805    /// provided in TracePacket are not supported.
22806    #[prost(int64, optional, tag="7")]
22807    pub start_timestamp_ns: ::core::option::Option<i64>,
22808    #[prost(enumeration="process_descriptor::ChromeProcessType", optional, tag="4")]
22809    pub chrome_process_type: ::core::option::Option<i32>,
22810    /// To support old UI. New UI should determine default sorting by process_type.
22811    #[prost(int32, optional, tag="3")]
22812    pub legacy_sort_index: ::core::option::Option<i32>,
22813    /// Labels can be used to further describe properties of the work performed by
22814    /// the process. For example, these can be used by Chrome renderer process to
22815    /// provide titles of frames being rendered.
22816    #[prost(string, repeated, tag="8")]
22817    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22818}
22819/// Nested message and enum types in `ProcessDescriptor`.
22820pub mod process_descriptor {
22821    // ---------------------------------------------------------------------------
22822    // Deprecated / legacy fields, which will be removed in the future:
22823    // ---------------------------------------------------------------------------
22824
22825    /// See chromium's content::ProcessType.
22826    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22827    #[repr(i32)]
22828    pub enum ChromeProcessType {
22829        ProcessUnspecified = 0,
22830        ProcessBrowser = 1,
22831        ProcessRenderer = 2,
22832        ProcessUtility = 3,
22833        ProcessZygote = 4,
22834        ProcessSandboxHelper = 5,
22835        ProcessGpu = 6,
22836        ProcessPpapiPlugin = 7,
22837        ProcessPpapiBroker = 8,
22838    }
22839    impl ChromeProcessType {
22840        /// String value of the enum field names used in the ProtoBuf definition.
22841        ///
22842        /// The values are not transformed in any way and thus are considered stable
22843        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22844        pub fn as_str_name(&self) -> &'static str {
22845            match self {
22846                ChromeProcessType::ProcessUnspecified => "PROCESS_UNSPECIFIED",
22847                ChromeProcessType::ProcessBrowser => "PROCESS_BROWSER",
22848                ChromeProcessType::ProcessRenderer => "PROCESS_RENDERER",
22849                ChromeProcessType::ProcessUtility => "PROCESS_UTILITY",
22850                ChromeProcessType::ProcessZygote => "PROCESS_ZYGOTE",
22851                ChromeProcessType::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
22852                ChromeProcessType::ProcessGpu => "PROCESS_GPU",
22853                ChromeProcessType::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
22854                ChromeProcessType::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
22855            }
22856        }
22857    }
22858}
22859// End of protos/perfetto/trace/track_event/process_descriptor.proto
22860
22861// Begin of protos/perfetto/trace/track_event/range_of_interest.proto
22862
22863/// This message specifies the "range of interest" for track events. With the
22864/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
22865/// Trace Processor drops track events outside of this range.
22866#[derive(Clone, PartialEq, ::prost::Message)]
22867pub struct TrackEventRangeOfInterest {
22868    #[prost(int64, optional, tag="1")]
22869    pub start_us: ::core::option::Option<i64>,
22870}
22871// Begin of protos/perfetto/trace/track_event/thread_descriptor.proto
22872
22873/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
22874/// usually by the thread's trace writer.
22875///
22876/// Next id: 9.
22877#[derive(Clone, PartialEq, ::prost::Message)]
22878pub struct ThreadDescriptor {
22879    #[prost(int32, optional, tag="1")]
22880    pub pid: ::core::option::Option<i32>,
22881    #[prost(int32, optional, tag="2")]
22882    pub tid: ::core::option::Option<i32>,
22883    #[prost(string, optional, tag="5")]
22884    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
22885    #[prost(enumeration="thread_descriptor::ChromeThreadType", optional, tag="4")]
22886    pub chrome_thread_type: ::core::option::Option<i32>,
22887    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
22888    /// and timestamp_clock_id fields instead.
22889    #[prost(int64, optional, tag="6")]
22890    pub reference_timestamp_us: ::core::option::Option<i64>,
22891    /// Absolute reference values. Clock values in subsequent TrackEvents can be
22892    /// encoded accumulatively and relative to these. This reduces their var-int
22893    /// encoding size.
22894    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
22895    #[prost(int64, optional, tag="7")]
22896    pub reference_thread_time_us: ::core::option::Option<i64>,
22897    #[prost(int64, optional, tag="8")]
22898    pub reference_thread_instruction_count: ::core::option::Option<i64>,
22899    /// To support old UI. New UI should determine default sorting by thread_type.
22900    #[prost(int32, optional, tag="3")]
22901    pub legacy_sort_index: ::core::option::Option<i32>,
22902}
22903/// Nested message and enum types in `ThreadDescriptor`.
22904pub mod thread_descriptor {
22905    // ---------------------------------------------------------------------------
22906    // Deprecated / legacy fields, which will be removed in the future:
22907    // ---------------------------------------------------------------------------
22908
22909    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22910    #[repr(i32)]
22911    pub enum ChromeThreadType {
22912        ChromeThreadUnspecified = 0,
22913        ChromeThreadMain = 1,
22914        ChromeThreadIo = 2,
22915        /// Scheduler:
22916        ChromeThreadPoolBgWorker = 3,
22917        ChromeThreadPoolFgWorker = 4,
22918        ChromeThreadPoolFbBlocking = 5,
22919        ChromeThreadPoolBgBlocking = 6,
22920        ChromeThreadPoolService = 7,
22921        /// Compositor:
22922        ChromeThreadCompositor = 8,
22923        ChromeThreadVizCompositor = 9,
22924        ChromeThreadCompositorWorker = 10,
22925        /// Renderer:
22926        ChromeThreadServiceWorker = 11,
22927        /// Tracing related threads:
22928        ChromeThreadMemoryInfra = 50,
22929        ChromeThreadSamplingProfiler = 51,
22930    }
22931    impl ChromeThreadType {
22932        /// String value of the enum field names used in the ProtoBuf definition.
22933        ///
22934        /// The values are not transformed in any way and thus are considered stable
22935        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22936        pub fn as_str_name(&self) -> &'static str {
22937            match self {
22938                ChromeThreadType::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
22939                ChromeThreadType::ChromeThreadMain => "CHROME_THREAD_MAIN",
22940                ChromeThreadType::ChromeThreadIo => "CHROME_THREAD_IO",
22941                ChromeThreadType::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
22942                ChromeThreadType::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
22943                ChromeThreadType::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
22944                ChromeThreadType::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
22945                ChromeThreadType::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
22946                ChromeThreadType::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
22947                ChromeThreadType::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
22948                ChromeThreadType::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
22949                ChromeThreadType::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
22950                ChromeThreadType::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
22951                ChromeThreadType::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
22952            }
22953        }
22954    }
22955}
22956// End of protos/perfetto/trace/track_event/thread_descriptor.proto
22957
22958// Begin of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
22959
22960/// Describes the attributes for a Chrome process. Must be paired with a
22961/// ProcessDescriptor in the same TrackDescriptor.
22962///
22963/// Next id: 6.
22964#[derive(Clone, PartialEq, ::prost::Message)]
22965pub struct ChromeProcessDescriptor {
22966    /// This is a chrome_enums::ProcessType from
22967    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
22968    /// be imported here because of a dependency loop.
22969    #[prost(int32, optional, tag="1")]
22970    pub process_type: ::core::option::Option<i32>,
22971    #[prost(int32, optional, tag="2")]
22972    pub process_priority: ::core::option::Option<i32>,
22973    /// To support old UI. New UI should determine default sorting by process_type.
22974    #[prost(int32, optional, tag="3")]
22975    pub legacy_sort_index: ::core::option::Option<i32>,
22976    /// Name of the hosting app for WebView. Used to match renderer processes to
22977    /// their hosting apps.
22978    #[prost(string, optional, tag="4")]
22979    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
22980    /// The ID to link crashes to trace.
22981    /// Notes:
22982    /// * The ID is per process. So, each trace may contain many IDs, and you need
22983    ///    to look for the ID from crashed process to find the crash report.
22984    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
22985    ///    get an uploaded trace, since uploads could have failed.
22986    /// * On the other hand, if there was a crash during the session and trace was
22987    ///    uploaded, it is very likely to find a crash report with the trace ID.
22988    /// * This is not crash ID or trace ID. It is just a random 64-bit number
22989    ///    recorded in both traces and crashes. It is possible to have collisions,
22990    ///    though very rare.
22991    #[prost(uint64, optional, tag="5")]
22992    pub crash_trace_id: ::core::option::Option<u64>,
22993}
22994// End of protos/perfetto/trace/track_event/chrome_process_descriptor.proto
22995
22996// Begin of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
22997
22998/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
22999/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
23000/// in the same TrackDescriptor.
23001///
23002/// Next id: 3.
23003#[derive(Clone, PartialEq, ::prost::Message)]
23004pub struct ChromeThreadDescriptor {
23005    /// This is a chrome_enums::ThreadType from
23006    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
23007    /// be imported here because of a dependency loop.
23008    #[prost(int32, optional, tag="1")]
23009    pub thread_type: ::core::option::Option<i32>,
23010    /// To support old UI. New UI should determine default sorting by thread_type.
23011    #[prost(int32, optional, tag="2")]
23012    pub legacy_sort_index: ::core::option::Option<i32>,
23013    /// Indicates whether the thread's tid specified in the thread descriptor is
23014    /// namespaced by Chromium's sandbox. Only set on Linux, and from Chrome M140.
23015    #[prost(bool, optional, tag="3")]
23016    pub is_sandboxed_tid: ::core::option::Option<bool>,
23017}
23018// End of protos/perfetto/trace/track_event/chrome_thread_descriptor.proto
23019
23020// Begin of protos/perfetto/trace/track_event/counter_descriptor.proto
23021
23022/// Defines properties of a counter track, e.g. for built-in counters (thread
23023/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
23024/// a specific app component).
23025///
23026/// Counter tracks only support TYPE_COUNTER track events, which specify new
23027/// values for the counter. For counters that require per-slice values, counter
23028/// values can instead be provided in a more efficient encoding via TrackEvent's
23029/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
23030/// slice-type events cannot be emitted onto a counter track.
23031///
23032/// Values for counters that are only emitted on a single packet sequence can
23033/// optionally be delta-encoded, see |is_incremental|.
23034///
23035/// Next id: 7.
23036#[derive(Clone, PartialEq, ::prost::Message)]
23037pub struct CounterDescriptor {
23038    /// For built-in counters (e.g. thread time). Custom user-specified counters
23039    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
23040    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
23041    #[prost(enumeration="counter_descriptor::BuiltinCounterType", optional, tag="1")]
23042    pub r#type: ::core::option::Option<i32>,
23043    /// Names of categories of the counter (usually for user-specified counters).
23044    /// In the client library, categories are a way to turn groups of individual
23045    /// counters (or events) on or off.
23046    #[prost(string, repeated, tag="2")]
23047    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23048    /// Type of the counter's values. Built-in counters imply a value for this
23049    /// field.
23050    #[prost(enumeration="counter_descriptor::Unit", optional, tag="3")]
23051    pub unit: ::core::option::Option<i32>,
23052    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
23053    /// name can be used instead.
23054    #[prost(string, optional, tag="6")]
23055    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
23056    /// Multiplication factor of this counter's values, e.g. to supply
23057    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
23058    #[prost(int64, optional, tag="4")]
23059    pub unit_multiplier: ::core::option::Option<i64>,
23060    /// Whether values for this counter are provided as delta values. Only
23061    /// supported for counters that are emitted on a single packet-sequence (e.g.
23062    /// thread time). Counter values in subsequent packets on the current packet
23063    /// sequence will be interpreted as delta values from the sequence's most
23064    /// recent value for the counter. When incremental state is cleared, the
23065    /// counter value is considered to be reset to 0. Thus, the first value after
23066    /// incremental state is cleared is effectively an absolute value.
23067    #[prost(bool, optional, tag="5")]
23068    pub is_incremental: ::core::option::Option<bool>,
23069    // TODO(eseckler): Support arguments describing the counter (?).
23070    // repeated DebugAnnotation debug_annotations;
23071
23072    /// When visualizing multiple counter tracks, it is often useful to have them
23073    /// share the same Y-axis range. This allows for easy comparison of their
23074    /// values.
23075    ///
23076    /// All counter tracks with the same |y_axis_share_key| and the same parent
23077    /// track (e.g. grouped under the same process track) will share their y-axis
23078    /// range in the UI.
23079    #[prost(string, optional, tag="7")]
23080    pub y_axis_share_key: ::core::option::Option<::prost::alloc::string::String>,
23081}
23082/// Nested message and enum types in `CounterDescriptor`.
23083pub mod counter_descriptor {
23084    /// Built-in counters, usually with special meaning in the client library,
23085    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
23086    /// track name from the enum value if none is provided in TrackDescriptor.
23087    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23088    #[repr(i32)]
23089    pub enum BuiltinCounterType {
23090        CounterUnspecified = 0,
23091        // Thread-scoped counters. The thread's track should be specified via
23092        // |parent_uuid| in the TrackDescriptor for such a counter.
23093
23094        /// implies UNIT_TIME_NS.
23095        CounterThreadTimeNs = 1,
23096        /// implies UNIT_COUNT.
23097        CounterThreadInstructionCount = 2,
23098    }
23099    impl BuiltinCounterType {
23100        /// String value of the enum field names used in the ProtoBuf definition.
23101        ///
23102        /// The values are not transformed in any way and thus are considered stable
23103        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23104        pub fn as_str_name(&self) -> &'static str {
23105            match self {
23106                BuiltinCounterType::CounterUnspecified => "COUNTER_UNSPECIFIED",
23107                BuiltinCounterType::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
23108                BuiltinCounterType::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
23109            }
23110        }
23111    }
23112    /// Type of the values for the counters - to supply lower granularity units,
23113    /// see also |unit_multiplier|.
23114    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23115    #[repr(i32)]
23116    pub enum Unit {
23117        Unspecified = 0,
23118        TimeNs = 1,
23119        Count = 2,
23120        /// TODO(eseckler): Support more units as necessary.
23121        SizeBytes = 3,
23122    }
23123    impl Unit {
23124        /// String value of the enum field names used in the ProtoBuf definition.
23125        ///
23126        /// The values are not transformed in any way and thus are considered stable
23127        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23128        pub fn as_str_name(&self) -> &'static str {
23129            match self {
23130                Unit::Unspecified => "UNIT_UNSPECIFIED",
23131                Unit::TimeNs => "UNIT_TIME_NS",
23132                Unit::Count => "UNIT_COUNT",
23133                Unit::SizeBytes => "UNIT_SIZE_BYTES",
23134            }
23135        }
23136    }
23137}
23138// End of protos/perfetto/trace/track_event/counter_descriptor.proto
23139
23140// Begin of protos/perfetto/trace/track_event/track_descriptor.proto
23141
23142/// Defines a track for TrackEvents. Slices and instant events on the same track
23143/// will be nested based on their timestamps, see TrackEvent::Type.
23144///
23145/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
23146/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
23147/// when the ring buffer wraps, it should be reemitted whenever incremental state
23148/// is cleared.
23149///
23150/// As a fallback, TrackEvents emitted without an explicit track association will
23151/// be associated with an implicit trace-global track (uuid = 0), see also
23152/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
23153/// TrackDescriptor for this implicit track.
23154///
23155/// Next id: 18.
23156#[derive(Clone, PartialEq, ::prost::Message)]
23157pub struct TrackDescriptor {
23158    /// Unique ID that identifies this track. This ID is global to the whole trace.
23159    /// Producers should ensure that it is unlikely to clash with IDs emitted by
23160    /// other producers. A value of 0 denotes the implicit trace-global track.
23161    ///
23162    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
23163    /// event id + id_scope, pid, and/or tid to compute this ID.
23164    #[prost(uint64, optional, tag="1")]
23165    pub uuid: ::core::option::Option<u64>,
23166    /// A parent track reference can be used to describe relationships between
23167    /// tracks. For example, to define an asynchronous track which is scoped to a
23168    /// specific process, specify the uuid for that process's process track here.
23169    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
23170    /// thread, specify the uuid for that thread's thread track here. In general,
23171    /// setting a parent will *nest* that track under the parent in the UI and in
23172    /// the trace processor data model (with the important exception noted below).
23173    ///
23174    /// If not specified, the track will be a root track, i.e. not nested under any
23175    /// other track.
23176    ///
23177    /// Note: if the `thread` or `process` fields are set, this value will be
23178    /// *ignored* as priority is given to those fields.
23179    ///
23180    /// Note: if the parent is set to a track with `thread` or `process` fields
23181    /// set, the track will *not* be nested under the parent in the UI and in the
23182    /// trace processor data model. Instead, the track will inherit the parent's
23183    /// thread/process association and will appear as a *sibling* of the parent.
23184    /// This semantic exists for back-compat reasons as the UI used to work this
23185    /// way for years and changing this leads to a lot of traces subtly breaking.
23186    /// If you want to force nesting, create *another* intermediate track to act as
23187    /// the parent.
23188    #[prost(uint64, optional, tag="5")]
23189    pub parent_uuid: ::core::option::Option<u64>,
23190    /// A human-readable description of the track providing more context about its
23191    /// data. In the UI, this is shown in a popup when the track's help button is
23192    /// clicked.
23193    #[prost(string, optional, tag="14")]
23194    pub description: ::core::option::Option<::prost::alloc::string::String>,
23195    /// Associate the track with a process, making it the process-global track.
23196    /// There should only be one such track per process (usually for instant
23197    /// events; trace processor uses this fact to detect pid reuse). If you need
23198    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
23199    ///
23200    /// Trace processor will merge events on a process track with slice-type events
23201    /// from other sources (e.g. ftrace) for the same process into a single
23202    /// timeline view.
23203    #[prost(message, optional, tag="3")]
23204    pub process: ::core::option::Option<ProcessDescriptor>,
23205    #[prost(message, optional, tag="6")]
23206    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
23207    /// Associate the track with a thread, indicating that the track's events
23208    /// describe synchronous code execution on the thread. There should only be one
23209    /// such track per thread (trace processor uses this fact to detect tid reuse).
23210    ///
23211    /// Trace processor will merge events on a thread track with slice-type events
23212    /// from other sources (e.g. ftrace) for the same thread into a single timeline
23213    /// view.
23214    #[prost(message, optional, tag="4")]
23215    pub thread: ::core::option::Option<ThreadDescriptor>,
23216    #[prost(message, optional, tag="7")]
23217    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
23218    /// Descriptor for a counter track. If set, the track will only support
23219    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
23220    /// |extra_counter_values|).
23221    #[prost(message, optional, tag="8")]
23222    pub counter: ::core::option::Option<CounterDescriptor>,
23223    /// If true, forces Trace Processor to use separate tracks for track events
23224    /// and system events for the same thread.
23225    ///
23226    /// Track events timestamps in Chrome have microsecond resolution, while
23227    /// system events use nanoseconds. It results in broken event nesting when
23228    /// track events and system events share a track.
23229    #[prost(bool, optional, tag="9")]
23230    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
23231    #[prost(enumeration="track_descriptor::ChildTracksOrdering", optional, tag="11")]
23232    pub child_ordering: ::core::option::Option<i32>,
23233    /// An opaque value which allows specifying how two sibling tracks should be
23234    /// ordered relative to each other: tracks with lower ranks will appear before
23235    /// tracks with higher ranks. An unspecified rank will be treated as a rank of
23236    /// 0.
23237    ///
23238    /// Note: this option is only relevant for tracks where the parent has
23239    /// `child_ordering` set to `EXPLICIT`. It is ignored otherwise.
23240    ///
23241    /// Note: for tracks where the parent has `thread` or `process` are set, this
23242    /// option is *ignored* (even if the parent's `child_ordering` is `EXPLICIT``).
23243    /// See `parent_uuid` for details.
23244    #[prost(int32, optional, tag="12")]
23245    pub sibling_order_rank: ::core::option::Option<i32>,
23246    #[prost(enumeration="track_descriptor::SiblingMergeBehavior", optional, tag="15")]
23247    pub sibling_merge_behavior: ::core::option::Option<i32>,
23248    /// Name of the track.
23249    ///
23250    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
23251    /// emitted before any `TrackEvent`s on the same track.
23252    ///
23253    /// Note: any name specified here will be *ignored* for the root thread scoped
23254    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
23255    /// case, the name of the track is shared by many different data sources and so
23256    /// is centrally controlled by trace processor.
23257    ///
23258    /// It's strongly recommended to only emit the name for a track uuid *once*. If
23259    /// a descriptor *has* to be emitted multiple times (e.g. between different
23260    /// processes), it's recommended to ensure that the name is consistent across
23261    /// all TrackDescriptors with the same `uuid`.
23262    ///
23263    /// If the the above recommendation is not followed and the same uuid is
23264    /// emitted with different names, it is implementation defined how the final
23265    /// name will be chosen and may change at any time.
23266    ///
23267    /// The current implementation of trace processor chooses the name in the
23268    /// following way, depending on the value of the `sibling_merge_behavior`
23269    /// field:
23270    ///
23271    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
23272    ///    * The *last* non-null name in the whole trace according to trace order
23273    ///      will be used.
23274    ///    * If no non-null name is present in the whole trace, the trace processor
23275    ///      may fall back to other sources to provide a name for the track (e.g.
23276    ///      the first event name for slice tracks, the counter name for counter
23277    ///      tracks). This is implementation defined and may change at any time.
23278    ///
23279    /// 2. If `sibling_merge_behavior` is set to any other value:
23280    ///    * The first non-null name before the first event on the track *or on any
23281    ///      descendant tracks* is processed will be used. For example, consider
23282    ///      the following sequence of events:
23283    ///        ts=100: TrackDescriptor(uuid=A)
23284    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
23285    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
23286    ///        ts=400: TrackEvent(track_uuid=B)
23287    ///      In this case, the name for track A will be "Track A" because the
23288    ///      descriptor with the name was emitted before the first event on a
23289    ///      descendant track (B).
23290    ///    * If no non-null name is present before the event is processed, the trace
23291    ///      processor may fall back to other sources to provide a name for the
23292    ///      track (e.g. the first event name for slice tracks, the counter name for
23293    ///      counter tracks). This is implementation defined and may change at any
23294    ///      time.
23295    ///    * Note on processing order: In the standard trace processor pipeline,
23296    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
23297    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
23298    ///      track, all its descriptors in the trace are processed before its
23299    ///      events. Consequently, the "first non-null name before the first event"
23300    ///      will be the name from the first `TrackDescriptor` for that track in the
23301    ///      trace file that has a non-null name. However, in a streaming parsing
23302    ///      scenario, the timestamp order of descriptors and events is significant,
23303    ///      and a descriptor arriving after an event has been processed will not be
23304    ///      used to name the track.
23305    #[prost(oneof="track_descriptor::StaticOrDynamicName", tags="2, 10, 13")]
23306    pub static_or_dynamic_name: ::core::option::Option<track_descriptor::StaticOrDynamicName>,
23307    /// An opaque value which allows specifying which tracks should be merged
23308    /// together.
23309    ///
23310    /// Only meaningful when `sibling_merge_behavior` is set to
23311    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
23312    #[prost(oneof="track_descriptor::SiblingMergeKeyField", tags="16, 17")]
23313    pub sibling_merge_key_field: ::core::option::Option<track_descriptor::SiblingMergeKeyField>,
23314}
23315/// Nested message and enum types in `TrackDescriptor`.
23316pub mod track_descriptor {
23317    /// Specifies how the UI should display child tracks of this track (i.e. tracks
23318    /// where `parent_uuid` is specified to this track `uuid`). Note that this
23319    /// value is simply a *hint* to the UI: the UI is not guarnateed to respect
23320    /// this if it has a good reason not to do so.
23321    ///
23322    /// Note: for tracks where `thread` or `process` are set, this option is
23323    /// *ignored*. See `parent_uuid` for details.
23324    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23325    #[repr(i32)]
23326    pub enum ChildTracksOrdering {
23327        /// The default ordering, with no bearing on how the UI will visualise the
23328        /// tracks.
23329        Unknown = 0,
23330        /// Order tracks by `name` or `static_name` depending on which one has been
23331        /// specified.
23332        Lexicographic = 1,
23333        /// Order tracks by the first `ts` event in a track.
23334        Chronological = 2,
23335        /// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
23336        /// the lower values will be shown before tracks with higher values. Tracks
23337        /// with no value will be treated as having 0 rank.
23338        Explicit = 3,
23339    }
23340    impl ChildTracksOrdering {
23341        /// String value of the enum field names used in the ProtoBuf definition.
23342        ///
23343        /// The values are not transformed in any way and thus are considered stable
23344        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23345        pub fn as_str_name(&self) -> &'static str {
23346            match self {
23347                ChildTracksOrdering::Unknown => "UNKNOWN",
23348                ChildTracksOrdering::Lexicographic => "LEXICOGRAPHIC",
23349                ChildTracksOrdering::Chronological => "CHRONOLOGICAL",
23350                ChildTracksOrdering::Explicit => "EXPLICIT",
23351            }
23352        }
23353    }
23354    /// Specifies how the analysis tools should "merge" different sibling
23355    /// TrackEvent tracks.
23356    ///
23357    /// For two or more tracks to be merged, they must be "eligible" siblings.
23358    /// Eligibility is determined by the following rules:
23359    /// 1. All tracks must have the same parent.
23360    /// 2. All tracks must have the same `sibling_merge_behavior`. The only
23361    ///     exception is `SIBLING_MERGE_BEHAVIOR_UNSPECIFIED` which is treated as
23362    ///     `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
23363    /// 3. Depending on the behavior, the corresponding key must match (e.g. `name`
23364    ///     for `BY_TRACK_NAME`, `sibling_merge_key` for `BY_SIBLING_MERGE_KEY`).
23365    ///
23366    /// Specifically:
23367    ///    - in the UI, all tracks which are merged together will be
23368    ///      displayed as a single "visual" track.
23369    ///    - in the trace processor, all tracks which are merged together will be
23370    ///      "multiplexed" into n "analysis" tracks where n is the maximum number
23371    ///      of tracks which have an active event at the same time.
23372    ///
23373    /// When tracks are merged togther, the properties for the merged track will be
23374    /// chosen from the source tracks based on the following rules:
23375    ///    - for `sibling_order_rank`: the rank of the merged track will be the
23376    ///      smallest rank among the source tracks.
23377    ///    - for all other properties: the property taken is unspecified and can
23378    ///      be any value provided by one of the source tracks. This can lead to
23379    ///      non-deterministic behavior.
23380    ///       - examples of other properties include `name`, `child_ordering` etc.
23381    ///       - because of this, it's strongly recommended to ensure that all source
23382    ///         tracks have the same value for these properties.
23383    ///       - the trace processor will also emit an error stat if it detects
23384    ///         that the properties are not the same across all source tracks.
23385    ///
23386    /// Note: merging is done *recursively* so entire trees of tracks can be merged
23387    /// together. To make this clearer, consider an example track hierarchy (in
23388    /// the diagrams: "smk" refers to "sibling_merge_key", the first word on a
23389    /// track line, like "Updater", is its 'name' property):
23390    ///
23391    ///    Initial track hierarchy:
23392    ///      SystemActivity
23393    ///      ├── AuthService (smk: "auth_main_cluster")
23394    ///      │   └── LoginOp (smk: "login_v1")
23395    ///      ├── AuthService (smk: "auth_main_cluster")
23396    ///      │   └── LoginOp (smk: "login_v1")
23397    ///      ├── AuthService (smk: "auth_backup_cluster")
23398    ///      │   └── GuestOp (smk: "guest_v1")
23399    ///      └── UserProfileService (smk: "profile_cluster")
23400    ///          └── GetProfileOp (smk: "getprofile_v1")
23401    ///
23402    /// Merging outcomes:
23403    ///
23404    /// Scenario 1: Merging by `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`
23405    ///    - The first two "AuthService" tracks merge because they share
23406    ///      `smk: "auth_main_cluster"`. Their names are consistent ("AuthService"),
23407    ///      aligning with recommendations. The merged track is named "AuthService".
23408    ///    - The third "AuthService" track (with `smk: "auth_backup_cluster"`)
23409    ///      remains separate, as its `sibling_merge_key` is different.
23410    ///    - "UserProfileService" also remains separate.
23411    ///    - Within the merged "AuthService" (from "auth_main_cluster"):
23412    ///      "LoginOp" get merged as they have the same sibling merge key.
23413    ///
23414    ///    Resulting UI (when merging by SIBLING_MERGE_KEY):
23415    ///      SystemActivity
23416    ///      ├── AuthService (merged by smk: "auth_main_cluster")
23417    ///      │   ├── LoginOp (merged by smk: "login_v1")
23418    ///      ├── AuthService (smk: "auth_backup_cluster")
23419    ///      │   └── GuestOp (smk: "guest_v1")
23420    ///      └── UserProfileService (smk: "profile_cluster")
23421    ///          └── GetProfileOp (smk: "getprofile_v1")
23422    ///
23423    /// Scenario 2: Merging by `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`
23424    ///    - All three tracks named "AuthService" merge because they share the same
23425    ///      name. The merged track is named "AuthService". The `sibling_merge_key`
23426    ///      for this merged track would be taken from one of the source tracks
23427    ///      (e.g., "auth_main_cluster" or "auth_backup_cluster"), which could be
23428    ///      relevant if its children had key-based merge behaviors.
23429    ///    - "UserProfileService" remains separate due to its different name.
23430    ///    - Within the single merged "AuthService" track:
23431    ///      "LoginOp", "GuestOp" become siblings. "LoginOp" tracks gets merged as
23432    ///      they have the same name.
23433    ///
23434    ///    Resulting UI (when merging by SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME):
23435    ///      SystemActivity
23436    ///      ├── AuthService (merged from 3 "AuthService" tracks)
23437    ///      │   ├── LoginOp (smk: "login_v1")
23438    ///      │   └── GuestOp (smk: "guest_v1")
23439    ///      └── UserProfileService (smk: "profile_cluster")
23440    ///          └── GetProfileOp (smk: "getprofile_v1")
23441    ///
23442    /// Note: for tracks where `thread` or `process` are set, this option is
23443    /// *ignored*. See `parent_uuid` for details.
23444    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23445    #[repr(i32)]
23446    pub enum SiblingMergeBehavior {
23447        /// When unspecified or not set, defaults to
23448        /// `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
23449        Unspecified = 0,
23450        /// Merge this track with eligible siblings which have the same `name`.
23451        ///
23452        /// This is the default behavior.option.
23453        ///
23454        /// Fun fact: this is the default beahavior for legacy reasons as the UI has
23455        /// worked this way for years and inherited this behavior from
23456        /// chrome://tracing which has worked this way for even longer
23457        ByTrackName = 1,
23458        /// Never merge this track with any siblings. Useful if if this track has a
23459        /// specific meaning and you want to see separately from any others.
23460        None = 2,
23461        /// Merge this track with eligible siblings which have the same
23462        /// `sibling_merge_key`.
23463        BySiblingMergeKey = 3,
23464    }
23465    impl SiblingMergeBehavior {
23466        /// String value of the enum field names used in the ProtoBuf definition.
23467        ///
23468        /// The values are not transformed in any way and thus are considered stable
23469        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23470        pub fn as_str_name(&self) -> &'static str {
23471            match self {
23472                SiblingMergeBehavior::Unspecified => "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED",
23473                SiblingMergeBehavior::ByTrackName => "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME",
23474                SiblingMergeBehavior::None => "SIBLING_MERGE_BEHAVIOR_NONE",
23475                SiblingMergeBehavior::BySiblingMergeKey => "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY",
23476            }
23477        }
23478    }
23479    /// Name of the track.
23480    ///
23481    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
23482    /// emitted before any `TrackEvent`s on the same track.
23483    ///
23484    /// Note: any name specified here will be *ignored* for the root thread scoped
23485    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
23486    /// case, the name of the track is shared by many different data sources and so
23487    /// is centrally controlled by trace processor.
23488    ///
23489    /// It's strongly recommended to only emit the name for a track uuid *once*. If
23490    /// a descriptor *has* to be emitted multiple times (e.g. between different
23491    /// processes), it's recommended to ensure that the name is consistent across
23492    /// all TrackDescriptors with the same `uuid`.
23493    ///
23494    /// If the the above recommendation is not followed and the same uuid is
23495    /// emitted with different names, it is implementation defined how the final
23496    /// name will be chosen and may change at any time.
23497    ///
23498    /// The current implementation of trace processor chooses the name in the
23499    /// following way, depending on the value of the `sibling_merge_behavior`
23500    /// field:
23501    ///
23502    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
23503    ///    * The *last* non-null name in the whole trace according to trace order
23504    ///      will be used.
23505    ///    * If no non-null name is present in the whole trace, the trace processor
23506    ///      may fall back to other sources to provide a name for the track (e.g.
23507    ///      the first event name for slice tracks, the counter name for counter
23508    ///      tracks). This is implementation defined and may change at any time.
23509    ///
23510    /// 2. If `sibling_merge_behavior` is set to any other value:
23511    ///    * The first non-null name before the first event on the track *or on any
23512    ///      descendant tracks* is processed will be used. For example, consider
23513    ///      the following sequence of events:
23514    ///        ts=100: TrackDescriptor(uuid=A)
23515    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
23516    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
23517    ///        ts=400: TrackEvent(track_uuid=B)
23518    ///      In this case, the name for track A will be "Track A" because the
23519    ///      descriptor with the name was emitted before the first event on a
23520    ///      descendant track (B).
23521    ///    * If no non-null name is present before the event is processed, the trace
23522    ///      processor may fall back to other sources to provide a name for the
23523    ///      track (e.g. the first event name for slice tracks, the counter name for
23524    ///      counter tracks). This is implementation defined and may change at any
23525    ///      time.
23526    ///    * Note on processing order: In the standard trace processor pipeline,
23527    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
23528    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
23529    ///      track, all its descriptors in the trace are processed before its
23530    ///      events. Consequently, the "first non-null name before the first event"
23531    ///      will be the name from the first `TrackDescriptor` for that track in the
23532    ///      trace file that has a non-null name. However, in a streaming parsing
23533    ///      scenario, the timestamp order of descriptors and events is significant,
23534    ///      and a descriptor arriving after an event has been processed will not be
23535    ///      used to name the track.
23536    #[derive(Clone, PartialEq, ::prost::Oneof)]
23537    pub enum StaticOrDynamicName {
23538        #[prost(string, tag="2")]
23539        Name(::prost::alloc::string::String),
23540        /// This field is only set by the SDK when perfetto::StaticString is
23541        /// provided.
23542        #[prost(string, tag="10")]
23543        StaticName(::prost::alloc::string::String),
23544        /// Equivalent to name, used just to mark that the data is coming from
23545        /// android.os.Trace.
23546        #[prost(string, tag="13")]
23547        AtraceName(::prost::alloc::string::String),
23548    }
23549    /// An opaque value which allows specifying which tracks should be merged
23550    /// together.
23551    ///
23552    /// Only meaningful when `sibling_merge_behavior` is set to
23553    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
23554    #[derive(Clone, PartialEq, ::prost::Oneof)]
23555    pub enum SiblingMergeKeyField {
23556        #[prost(string, tag="16")]
23557        SiblingMergeKey(::prost::alloc::string::String),
23558        #[prost(uint64, tag="17")]
23559        SiblingMergeKeyInt(u64),
23560    }
23561}
23562// End of protos/perfetto/trace/track_event/track_descriptor.proto
23563
23564// Begin of protos/perfetto/trace/translation/translation_table.proto
23565
23566/// Translation rules for the trace processor.
23567/// See the comments for each rule type for specific meaning.
23568#[derive(Clone, PartialEq, ::prost::Message)]
23569pub struct TranslationTable {
23570    #[prost(oneof="translation_table::Table", tags="1, 2, 3, 4, 5, 6")]
23571    pub table: ::core::option::Option<translation_table::Table>,
23572}
23573/// Nested message and enum types in `TranslationTable`.
23574pub mod translation_table {
23575    #[derive(Clone, PartialEq, ::prost::Oneof)]
23576    pub enum Table {
23577        #[prost(message, tag="1")]
23578        ChromeHistogram(super::ChromeHistorgramTranslationTable),
23579        #[prost(message, tag="2")]
23580        ChromeUserEvent(super::ChromeUserEventTranslationTable),
23581        #[prost(message, tag="3")]
23582        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
23583        #[prost(message, tag="4")]
23584        SliceName(super::SliceNameTranslationTable),
23585        #[prost(message, tag="5")]
23586        ProcessTrackName(super::ProcessTrackNameTranslationTable),
23587        #[prost(message, tag="6")]
23588        ChromeStudy(super::ChromeStudyTranslationTable),
23589    }
23590}
23591/// Chrome histogram sample hash -> name translation rules.
23592#[derive(Clone, PartialEq, ::prost::Message)]
23593pub struct ChromeHistorgramTranslationTable {
23594    #[prost(map="uint64, string", tag="1")]
23595    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
23596}
23597/// Chrome user event action hash -> name translation rules.
23598#[derive(Clone, PartialEq, ::prost::Message)]
23599pub struct ChromeUserEventTranslationTable {
23600    #[prost(map="uint64, string", tag="1")]
23601    pub action_hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
23602}
23603/// Chrome performance mark translation rules.
23604#[derive(Clone, PartialEq, ::prost::Message)]
23605pub struct ChromePerformanceMarkTranslationTable {
23606    #[prost(map="uint32, string", tag="1")]
23607    pub site_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
23608    #[prost(map="uint32, string", tag="2")]
23609    pub mark_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
23610}
23611/// Raw -> deobfuscated slice name translation rules.
23612#[derive(Clone, PartialEq, ::prost::Message)]
23613pub struct SliceNameTranslationTable {
23614    #[prost(map="string, string", tag="1")]
23615    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
23616}
23617/// Raw -> deobfuscated process track name translation rules.
23618#[derive(Clone, PartialEq, ::prost::Message)]
23619pub struct ProcessTrackNameTranslationTable {
23620    #[prost(map="string, string", tag="1")]
23621    pub raw_to_deobfuscated_name: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
23622}
23623/// Chrome study hash -> name translation rules.
23624#[derive(Clone, PartialEq, ::prost::Message)]
23625pub struct ChromeStudyTranslationTable {
23626    #[prost(map="uint64, string", tag="1")]
23627    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
23628}
23629// End of protos/perfetto/trace/translation/translation_table.proto
23630
23631// Begin of protos/perfetto/trace/trigger.proto
23632
23633/// When a TracingSession receives a trigger it records the boot time nanoseconds
23634/// in the TracePacket's timestamp field as well as the name of the producer that
23635/// triggered it. We emit this data so filtering can be done on triggers received
23636/// in the trace.
23637#[derive(Clone, PartialEq, ::prost::Message)]
23638pub struct Trigger {
23639    /// Name of the trigger which was received.
23640    #[prost(string, optional, tag="1")]
23641    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
23642    /// The actual producer that activated |trigger|.
23643    #[prost(string, optional, tag="2")]
23644    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
23645    /// The verified UID of the producer.
23646    #[prost(int32, optional, tag="3")]
23647    pub trusted_producer_uid: ::core::option::Option<i32>,
23648    /// The value of stop_delay_ms from the configuration.
23649    #[prost(uint64, optional, tag="4")]
23650    pub stop_delay_ms: ::core::option::Option<u64>,
23651}
23652// End of protos/perfetto/trace/trigger.proto
23653
23654// Begin of protos/perfetto/trace/ui_state.proto
23655
23656/// Common state for UIs visualizing Perfetto traces.
23657/// This message can be appended as a TracePacket by UIs to save the
23658/// visible state (e.g. scroll position/zoom state) for future opening
23659/// of the trace.
23660/// Design doc: go/trace-ui-state.
23661#[derive(Clone, PartialEq, ::prost::Message)]
23662pub struct UiState {
23663    /// The start and end bounds of the viewport of the UI in nanoseconds.
23664    ///
23665    /// This is the absolute time associated to slices and other events in
23666    /// trace processor tables (i.e. the |ts| column of most tables)
23667    #[prost(int64, optional, tag="1")]
23668    pub timeline_start_ts: ::core::option::Option<i64>,
23669    #[prost(int64, optional, tag="2")]
23670    pub timeline_end_ts: ::core::option::Option<i64>,
23671    #[prost(message, optional, tag="3")]
23672    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
23673}
23674/// Nested message and enum types in `UiState`.
23675pub mod ui_state {
23676    /// Indicates that the given process should be highlighted by the UI.
23677    #[derive(Clone, PartialEq, ::prost::Message)]
23678    pub struct HighlightProcess {
23679        #[prost(oneof="highlight_process::Selector", tags="1, 2")]
23680        pub selector: ::core::option::Option<highlight_process::Selector>,
23681    }
23682    /// Nested message and enum types in `HighlightProcess`.
23683    pub mod highlight_process {
23684        #[derive(Clone, PartialEq, ::prost::Oneof)]
23685        pub enum Selector {
23686            /// The pid of the process to highlight. This is useful for UIs to focus
23687            /// on tracks of a particular process in the trace.
23688            ///
23689            /// If more than one process in a trace has the same pid, it is UI
23690            /// implementation specific how the process to be focused will be
23691            /// chosen.
23692            #[prost(uint32, tag="1")]
23693            Pid(u32),
23694            /// The command line of the process to highlight; for most Android apps,
23695            /// this is the package name of the app. This is useful for UIs to focus
23696            /// on a particular app in the trace.
23697            ///
23698            /// If more than one process hasthe same cmdline, it is UI implementation
23699            /// specific how the process to be focused will be chosen.
23700            #[prost(string, tag="2")]
23701            Cmdline(::prost::alloc::string::String),
23702        }
23703    }
23704}
23705// Begin of protos/perfetto/trace/trace_packet.proto
23706
23707/// TracePacket is the root object of a Perfetto trace.
23708/// A Perfetto trace is a linear sequence of TracePacket(s).
23709///
23710/// The tracing service guarantees that all TracePacket(s) written by a given
23711/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
23712/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
23713/// to the Consumer (or written into the trace file).
23714/// TracePacket(s) written by different TraceWriter(s), hence even different
23715/// data sources, can be seen in arbitrary order.
23716/// The consumer can re-establish a total order, if interested, using the packet
23717/// timestamps, after having synchronized the different clocks onto a global
23718/// clock.
23719///
23720/// The tracing service is agnostic of the content of TracePacket, with the
23721/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
23722/// the service itself.
23723///
23724/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
23725///
23726/// Next reserved id: 14 (up to 15).
23727/// Next id: 124.
23728#[derive(Clone, PartialEq, ::prost::Message)]
23729pub struct TracePacket {
23730    /// The timestamp of the TracePacket.
23731    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
23732    /// Android). It can be overridden using a different timestamp_clock_id.
23733    /// The clock domain definition in ClockSnapshot can also override:
23734    /// - The unit (default: 1ns).
23735    /// - The absolute vs delta encoding (default: absolute timestamp).
23736    #[prost(uint64, optional, tag="8")]
23737    pub timestamp: ::core::option::Option<u64>,
23738    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
23739    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
23740    /// producer-defined clock id.
23741    /// If unspecified and if no default per-sequence value has been provided via
23742    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
23743    #[prost(uint32, optional, tag="58")]
23744    pub timestamp_clock_id: ::core::option::Option<u32>,
23745    /// Trusted process id of the producer which generated this packet, written by
23746    /// the service.
23747    #[prost(int32, optional, tag="79")]
23748    pub trusted_pid: ::core::option::Option<i32>,
23749    /// Incrementally emitted interned data, valid only on the packet's sequence
23750    /// (packets with the same |trusted_packet_sequence_id|). The writer will
23751    /// usually emit new interned data in the same TracePacket that first refers to
23752    /// it (since the last reset of interning state). It may also be emitted
23753    /// proactively in advance of referring to them in later packets.
23754    #[prost(message, optional, tag="12")]
23755    pub interned_data: ::core::option::Option<InternedData>,
23756    #[prost(uint32, optional, tag="13")]
23757    pub sequence_flags: ::core::option::Option<u32>,
23758    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
23759    #[prost(bool, optional, tag="41")]
23760    pub incremental_state_cleared: ::core::option::Option<bool>,
23761    /// Default values for fields of later TracePackets emitted on this packet's
23762    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
23763    /// It must be reemitted when incremental state is cleared (see
23764    /// |incremental_state_cleared|).
23765    /// Requires that any future packet emitted on the same sequence specifies
23766    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
23767    /// TracePacketDefaults always override the global defaults for any future
23768    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
23769    #[prost(message, optional, tag="59")]
23770    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
23771    /// Flag set by the service if, for the current packet sequence (see
23772    /// |trusted_packet_sequence_id|), either:
23773    /// * this is the first packet, or
23774    /// * one or multiple packets were dropped since the last packet that the
23775    ///    consumer read from the sequence. This can happen if chunks in the trace
23776    ///    buffer are overridden before the consumer could read them when the trace
23777    ///    is configured in ring buffer mode.
23778    ///
23779    /// When packet loss occurs, incrementally emitted data (including interned
23780    /// data) on the sequence should be considered invalid up until the next packet
23781    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
23782    #[prost(bool, optional, tag="42")]
23783    pub previous_packet_dropped: ::core::option::Option<bool>,
23784    /// Flag set by a producer (starting from SDK v29) if, for the current packet
23785    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
23786    ///
23787    /// This flag can be used for distinguishing the two situations when
23788    /// processing the trace:
23789    /// 1. There are no prior events for the sequence because of data loss, e.g.
23790    ///     due to ring buffer wrapping.
23791    /// 2. There are no prior events for the sequence because it didn't start
23792    ///     before this packet (= there's definitely no preceding data loss).
23793    ///
23794    /// Given that older SDK versions do not support this flag, this flag not
23795    /// being present for a particular sequence does not necessarily imply data
23796    /// loss.
23797    #[prost(bool, optional, tag="87")]
23798    pub first_packet_on_sequence: ::core::option::Option<bool>,
23799    /// The machine ID for identifying trace packets in a multi-machine tracing
23800    /// session. Is emitted by the tracing service for producers running on a
23801    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
23802    #[prost(uint32, optional, tag="98")]
23803    pub machine_id: ::core::option::Option<u32>,
23804    #[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")]
23805    pub data: ::core::option::Option<trace_packet::Data>,
23806    /// Trusted user id of the producer which generated this packet. Keep in sync
23807    /// with TrustedPacket.trusted_uid.
23808    ///
23809    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
23810    /// instead.
23811    #[prost(oneof="trace_packet::OptionalTrustedUid", tags="3")]
23812    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
23813    /// Service-assigned identifier of the packet sequence this packet belongs to.
23814    /// Uniquely identifies a producer + writer pair within the tracing session. A
23815    /// value of zero denotes an invalid ID. Keep in sync with
23816    /// TrustedPacket.trusted_packet_sequence_id.
23817    #[prost(oneof="trace_packet::OptionalTrustedPacketSequenceId", tags="10")]
23818    pub optional_trusted_packet_sequence_id: ::core::option::Option<trace_packet::OptionalTrustedPacketSequenceId>,
23819}
23820/// Nested message and enum types in `TracePacket`.
23821pub mod trace_packet {
23822    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23823    #[repr(i32)]
23824    pub enum SequenceFlags {
23825        SeqUnspecified = 0,
23826        /// Set by the writer to indicate that it will re-emit any incremental data
23827        /// for the packet's sequence before referring to it again. This includes
23828        /// interned data as well as periodically emitted data like
23829        /// Process/ThreadDescriptors. This flag only affects the current packet
23830        /// sequence (see |trusted_packet_sequence_id|).
23831        ///
23832        /// When set, this TracePacket and subsequent TracePackets on the same
23833        /// sequence will not refer to any incremental data emitted before this
23834        /// TracePacket. For example, previously emitted interned data will be
23835        /// re-emitted if it is referred to again.
23836        ///
23837        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
23838        /// to skip packets in the sequence until the next one with this flag set, to
23839        /// ensure intact incremental data.
23840        SeqIncrementalStateCleared = 1,
23841        /// This packet requires incremental state, such as TracePacketDefaults or
23842        /// InternedData, to be parsed correctly. The trace reader should skip this
23843        /// packet if incremental state is not valid on this sequence, i.e. if no
23844        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
23845        /// current |trusted_packet_sequence_id|.
23846        SeqNeedsIncrementalState = 2,
23847    }
23848    impl SequenceFlags {
23849        /// String value of the enum field names used in the ProtoBuf definition.
23850        ///
23851        /// The values are not transformed in any way and thus are considered stable
23852        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23853        pub fn as_str_name(&self) -> &'static str {
23854            match self {
23855                SequenceFlags::SeqUnspecified => "SEQ_UNSPECIFIED",
23856                SequenceFlags::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
23857                SequenceFlags::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
23858            }
23859        }
23860    }
23861    #[derive(Clone, PartialEq, ::prost::Oneof)]
23862    pub enum Data {
23863        #[prost(message, tag="2")]
23864        ProcessTree(super::ProcessTree),
23865        #[prost(message, tag="9")]
23866        ProcessStats(super::ProcessStats),
23867        #[prost(message, tag="4")]
23868        InodeFileMap(super::InodeFileMap),
23869        #[prost(message, tag="5")]
23870        ChromeEvents(super::ChromeEventBundle),
23871        #[prost(message, tag="6")]
23872        ClockSnapshot(super::ClockSnapshot),
23873        #[prost(message, tag="7")]
23874        SysStats(super::SysStats),
23875        #[prost(message, tag="11")]
23876        TrackEvent(super::TrackEvent),
23877        // IDs up to 15 are reserved. They take only one byte to encode their
23878        // preamble so should be used for frequent events.
23879
23880        #[prost(message, tag="89")]
23881        TraceUuid(super::TraceUuid),
23882        #[prost(message, tag="33")]
23883        TraceConfig(super::TraceConfig),
23884        #[prost(message, tag="34")]
23885        FtraceStats(super::FtraceStats),
23886        #[prost(message, tag="35")]
23887        TraceStats(super::TraceStats),
23888        #[prost(message, tag="37")]
23889        ProfilePacket(super::ProfilePacket),
23890        #[prost(message, tag="74")]
23891        StreamingAllocation(super::StreamingAllocation),
23892        #[prost(message, tag="75")]
23893        StreamingFree(super::StreamingFree),
23894        #[prost(message, tag="38")]
23895        Battery(super::BatteryCounters),
23896        #[prost(message, tag="40")]
23897        PowerRails(super::PowerRails),
23898        #[prost(message, tag="39")]
23899        AndroidLog(super::AndroidLogPacket),
23900        #[prost(message, tag="45")]
23901        SystemInfo(super::SystemInfo),
23902        #[prost(message, tag="46")]
23903        Trigger(super::Trigger),
23904        #[prost(message, tag="109")]
23905        ChromeTrigger(super::ChromeTrigger),
23906        #[prost(message, tag="47")]
23907        PackagesList(super::PackagesList),
23908        #[prost(message, tag="48")]
23909        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
23910        #[prost(message, tag="49")]
23911        PerfettoMetatrace(super::PerfettoMetatrace),
23912        #[prost(message, tag="51")]
23913        ChromeMetadata(super::ChromeMetadataPacket),
23914        #[prost(message, tag="52")]
23915        GpuCounterEvent(super::GpuCounterEvent),
23916        #[prost(message, tag="53")]
23917        GpuRenderStageEvent(super::GpuRenderStageEvent),
23918        #[prost(message, tag="54")]
23919        StreamingProfilePacket(super::StreamingProfilePacket),
23920        #[prost(message, tag="56")]
23921        HeapGraph(super::HeapGraph),
23922        #[prost(message, tag="57")]
23923        GraphicsFrameEvent(super::GraphicsFrameEvent),
23924        #[prost(message, tag="62")]
23925        VulkanMemoryEvent(super::VulkanMemoryEvent),
23926        #[prost(message, tag="63")]
23927        GpuLog(super::GpuLog),
23928        #[prost(message, tag="65")]
23929        VulkanApiEvent(super::VulkanApiEvent),
23930        #[prost(message, tag="66")]
23931        PerfSample(super::PerfSample),
23932        #[prost(message, tag="67")]
23933        CpuInfo(super::CpuInfo),
23934        #[prost(message, tag="68")]
23935        SmapsPacket(super::SmapsPacket),
23936        #[prost(message, tag="69")]
23937        ServiceEvent(super::TracingServiceEvent),
23938        #[prost(message, tag="70")]
23939        InitialDisplayState(super::InitialDisplayState),
23940        #[prost(message, tag="71")]
23941        GpuMemTotalEvent(super::GpuMemTotalEvent),
23942        #[prost(message, tag="73")]
23943        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
23944        #[prost(message, tag="76")]
23945        FrameTimelineEvent(super::FrameTimelineEvent),
23946        #[prost(message, tag="77")]
23947        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
23948        #[prost(message, tag="78")]
23949        UiState(super::UiState),
23950        #[prost(message, tag="80")]
23951        AndroidCameraFrameEvent(super::AndroidCameraFrameEvent),
23952        #[prost(message, tag="81")]
23953        AndroidCameraSessionStats(super::AndroidCameraSessionStats),
23954        #[prost(message, tag="82")]
23955        TranslationTable(super::TranslationTable),
23956        #[prost(message, tag="83")]
23957        AndroidGameInterventionList(super::AndroidGameInterventionList),
23958        #[prost(message, tag="84")]
23959        StatsdAtom(super::StatsdAtom),
23960        #[prost(message, tag="86")]
23961        AndroidSystemProperty(super::AndroidSystemProperty),
23962        #[prost(message, tag="91")]
23963        EntityStateResidency(super::EntityStateResidency),
23964        /// Only used in profile packets.
23965        #[prost(message, tag="61")]
23966        ModuleSymbols(super::ModuleSymbols),
23967        #[prost(message, tag="64")]
23968        DeobfuscationMapping(super::DeobfuscationMapping),
23969        /// Only used by TrackEvent.
23970        #[prost(message, tag="60")]
23971        TrackDescriptor(super::TrackDescriptor),
23972        /// Deprecated, use TrackDescriptor instead.
23973        #[prost(message, tag="43")]
23974        ProcessDescriptor(super::ProcessDescriptor),
23975        /// Deprecated, use TrackDescriptor instead.
23976        #[prost(message, tag="44")]
23977        ThreadDescriptor(super::ThreadDescriptor),
23978        /// Events from the Linux kernel ftrace infrastructure.
23979        #[prost(message, tag="1")]
23980        FtraceEvents(super::FtraceEventBundle),
23981        /// This field is emitted at periodic intervals (~10s) and
23982        /// contains always the binary representation of the UUID
23983        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
23984        /// efficiently partition long traces without having to fully parse them.
23985        #[prost(bytes, tag="36")]
23986        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
23987        /// Zero or more proto encoded trace packets compressed using deflate.
23988        /// Each compressed_packets TracePacket (including the two field ids and
23989        /// sizes) should be less than 512KB.
23990        #[prost(bytes, tag="50")]
23991        CompressedPackets(::prost::alloc::vec::Vec<u8>),
23992        /// Data sources can extend the trace proto with custom extension protos (see
23993        /// docs/design-docs/extensions.md). When they do that, the descriptor of
23994        /// their extension proto descriptor is serialized in this packet. This
23995        /// allows trace_processor to deserialize extended messages using reflection
23996        /// even if the extension proto is not checked in the Perfetto repo.
23997        #[prost(message, tag="72")]
23998        ExtensionDescriptor(super::ExtensionDescriptor),
23999        /// Represents a single packet sent or received by the network.
24000        #[prost(message, tag="88")]
24001        NetworkPacket(super::NetworkPacketEvent),
24002        /// Represents one or more packets sent or received by the network.
24003        #[prost(message, tag="92")]
24004        NetworkPacketBundle(super::NetworkPacketBundle),
24005        /// The "range of interest" for track events. See the message definition
24006        /// comments for more details.
24007        #[prost(message, tag="90")]
24008        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
24009        /// Winscope traces
24010        #[prost(message, tag="93")]
24011        SurfaceflingerLayersSnapshot(super::LayersSnapshotProto),
24012        #[prost(message, tag="94")]
24013        SurfaceflingerTransactions(super::TransactionTraceEntry),
24014        #[prost(message, tag="96")]
24015        ShellTransition(super::ShellTransition),
24016        #[prost(message, tag="97")]
24017        ShellHandlerMappings(super::ShellHandlerMappings),
24018        #[prost(message, tag="104")]
24019        ProtologMessage(super::ProtoLogMessage),
24020        #[prost(message, tag="105")]
24021        ProtologViewerConfig(super::ProtoLogViewerConfig),
24022        #[prost(message, tag="112")]
24023        WinscopeExtensions(super::WinscopeExtensions),
24024        /// Events from the Windows etw infrastructure.
24025        #[prost(message, tag="95")]
24026        EtwEvents(super::EtwTraceEventBundle),
24027        #[prost(message, tag="99")]
24028        V8JsCode(super::V8JsCode),
24029        #[prost(message, tag="100")]
24030        V8InternalCode(super::V8InternalCode),
24031        #[prost(message, tag="101")]
24032        V8WasmCode(super::V8WasmCode),
24033        #[prost(message, tag="102")]
24034        V8RegExpCode(super::V8RegExpCode),
24035        #[prost(message, tag="103")]
24036        V8CodeMove(super::V8CodeMove),
24037        /// Clock synchronization with remote machines.
24038        #[prost(message, tag="107")]
24039        RemoteClockSync(super::RemoteClockSync),
24040        #[prost(message, tag="110")]
24041        PixelModemEvents(super::PixelModemEvents),
24042        #[prost(message, tag="111")]
24043        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
24044        #[prost(message, tag="113")]
24045        CloneSnapshotTrigger(super::Trigger),
24046        #[prost(message, tag="114")]
24047        BluetoothTraceEvent(super::BluetoothTraceEvent),
24048        #[prost(message, tag="115")]
24049        KernelWakelockData(super::KernelWakelockData),
24050        #[prost(message, tag="116")]
24051        AppWakelockBundle(super::AppWakelockBundle),
24052        /// Generic events for a standard kernel implementation
24053        #[prost(message, tag="117")]
24054        GenericKernelTaskStateEvent(super::GenericKernelTaskStateEvent),
24055        #[prost(message, tag="118")]
24056        GenericKernelCpuFreqEvent(super::GenericKernelCpuFrequencyEvent),
24057        #[prost(message, tag="120")]
24058        GenericKernelTaskRenameEvent(super::GenericKernelTaskRenameEvent),
24059        #[prost(message, tag="122")]
24060        GenericKernelProcessTree(super::GenericKernelProcessTree),
24061        #[prost(message, tag="119")]
24062        CpuPerUidData(super::CpuPerUidData),
24063        #[prost(message, tag="121")]
24064        EvdevEvent(super::EvdevEvent),
24065        #[prost(message, tag="123")]
24066        UserList(super::AndroidUserList),
24067        /// This field is only used for testing.
24068        /// In previous versions of this proto this field had the id 268435455
24069        /// This caused many problems:
24070        /// - protozero decoder does not handle field ids larger than 999.
24071        /// - old versions of protoc produce Java bindings with syntax errors when
24072        ///    the field id is large enough.
24073        #[prost(message, tag="900")]
24074        ForTesting(super::TestEvent),
24075    }
24076    /// Trusted user id of the producer which generated this packet. Keep in sync
24077    /// with TrustedPacket.trusted_uid.
24078    ///
24079    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
24080    /// instead.
24081    #[derive(Clone, PartialEq, ::prost::Oneof)]
24082    pub enum OptionalTrustedUid {
24083        #[prost(int32, tag="3")]
24084        TrustedUid(i32),
24085    }
24086    /// Service-assigned identifier of the packet sequence this packet belongs to.
24087    /// Uniquely identifies a producer + writer pair within the tracing session. A
24088    /// value of zero denotes an invalid ID. Keep in sync with
24089    /// TrustedPacket.trusted_packet_sequence_id.
24090    #[derive(Clone, PartialEq, ::prost::Oneof)]
24091    pub enum OptionalTrustedPacketSequenceId {
24092        #[prost(uint32, tag="10")]
24093        TrustedPacketSequenceId(u32),
24094    }
24095}
24096// End of protos/perfetto/trace/trace_packet.proto
24097
24098// Begin of protos/perfetto/trace/trace.proto
24099
24100#[derive(Clone, PartialEq, ::prost::Message)]
24101pub struct Trace {
24102    #[prost(message, repeated, tag="1")]
24103    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
24104}
24105// End of protos/perfetto/common/tracing_service_state.proto
24106
24107// Begin of protos/perfetto/common/builtin_clock.proto
24108
24109#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24110#[repr(i32)]
24111pub enum BuiltinClock {
24112    Unknown = 0,
24113    Realtime = 1,
24114    RealtimeCoarse = 2,
24115    Monotonic = 3,
24116    MonotonicCoarse = 4,
24117    MonotonicRaw = 5,
24118    Boottime = 6,
24119    Tsc = 9,
24120    Perf = 10,
24121    MaxId = 63,
24122}
24123impl BuiltinClock {
24124    /// String value of the enum field names used in the ProtoBuf definition.
24125    ///
24126    /// The values are not transformed in any way and thus are considered stable
24127    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24128    pub fn as_str_name(&self) -> &'static str {
24129        match self {
24130            BuiltinClock::Unknown => "BUILTIN_CLOCK_UNKNOWN",
24131            BuiltinClock::Realtime => "BUILTIN_CLOCK_REALTIME",
24132            BuiltinClock::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
24133            BuiltinClock::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
24134            BuiltinClock::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
24135            BuiltinClock::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
24136            BuiltinClock::Boottime => "BUILTIN_CLOCK_BOOTTIME",
24137            BuiltinClock::Tsc => "BUILTIN_CLOCK_TSC",
24138            BuiltinClock::Perf => "BUILTIN_CLOCK_PERF",
24139            BuiltinClock::MaxId => "BUILTIN_CLOCK_MAX_ID",
24140        }
24141    }
24142}
24143// End of protos/perfetto/config/android/android_input_event_config.proto
24144
24145// Begin of protos/perfetto/common/android_log_constants.proto
24146
24147/// Values from NDK's android/log.h.
24148#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24149#[repr(i32)]
24150pub enum AndroidLogId {
24151    /// MAIN.
24152    LidDefault = 0,
24153    LidRadio = 1,
24154    LidEvents = 2,
24155    LidSystem = 3,
24156    LidCrash = 4,
24157    LidStats = 5,
24158    LidSecurity = 6,
24159    LidKernel = 7,
24160}
24161impl AndroidLogId {
24162    /// String value of the enum field names used in the ProtoBuf definition.
24163    ///
24164    /// The values are not transformed in any way and thus are considered stable
24165    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24166    pub fn as_str_name(&self) -> &'static str {
24167        match self {
24168            AndroidLogId::LidDefault => "LID_DEFAULT",
24169            AndroidLogId::LidRadio => "LID_RADIO",
24170            AndroidLogId::LidEvents => "LID_EVENTS",
24171            AndroidLogId::LidSystem => "LID_SYSTEM",
24172            AndroidLogId::LidCrash => "LID_CRASH",
24173            AndroidLogId::LidStats => "LID_STATS",
24174            AndroidLogId::LidSecurity => "LID_SECURITY",
24175            AndroidLogId::LidKernel => "LID_KERNEL",
24176        }
24177    }
24178}
24179#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24180#[repr(i32)]
24181pub enum AndroidLogPriority {
24182    PrioUnspecified = 0,
24183    /// _DEFAULT, but should never be seen in logs.
24184    PrioUnused = 1,
24185    PrioVerbose = 2,
24186    PrioDebug = 3,
24187    PrioInfo = 4,
24188    PrioWarn = 5,
24189    PrioError = 6,
24190    PrioFatal = 7,
24191}
24192impl AndroidLogPriority {
24193    /// String value of the enum field names used in the ProtoBuf definition.
24194    ///
24195    /// The values are not transformed in any way and thus are considered stable
24196    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24197    pub fn as_str_name(&self) -> &'static str {
24198        match self {
24199            AndroidLogPriority::PrioUnspecified => "PRIO_UNSPECIFIED",
24200            AndroidLogPriority::PrioUnused => "PRIO_UNUSED",
24201            AndroidLogPriority::PrioVerbose => "PRIO_VERBOSE",
24202            AndroidLogPriority::PrioDebug => "PRIO_DEBUG",
24203            AndroidLogPriority::PrioInfo => "PRIO_INFO",
24204            AndroidLogPriority::PrioWarn => "PRIO_WARN",
24205            AndroidLogPriority::PrioError => "PRIO_ERROR",
24206            AndroidLogPriority::PrioFatal => "PRIO_FATAL",
24207        }
24208    }
24209}
24210// End of protos/perfetto/config/android/pixel_modem_config.proto
24211
24212// Begin of protos/perfetto/common/protolog_common.proto
24213
24214#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24215#[repr(i32)]
24216pub enum ProtoLogLevel {
24217    ProtologLevelUndefined = 0,
24218    ProtologLevelDebug = 1,
24219    ProtologLevelVerbose = 2,
24220    ProtologLevelInfo = 3,
24221    ProtologLevelWarn = 4,
24222    ProtologLevelError = 5,
24223    ProtologLevelWtf = 6,
24224}
24225impl ProtoLogLevel {
24226    /// String value of the enum field names used in the ProtoBuf definition.
24227    ///
24228    /// The values are not transformed in any way and thus are considered stable
24229    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24230    pub fn as_str_name(&self) -> &'static str {
24231        match self {
24232            ProtoLogLevel::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
24233            ProtoLogLevel::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
24234            ProtoLogLevel::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
24235            ProtoLogLevel::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
24236            ProtoLogLevel::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
24237            ProtoLogLevel::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
24238            ProtoLogLevel::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
24239        }
24240    }
24241}
24242// End of protos/perfetto/config/profiling/perf_event_config.proto
24243
24244// Begin of protos/perfetto/config/statsd/atom_ids.proto
24245
24246/// This enum is obtained by post-processing
24247/// AOSP/frameworks/proto_logging/stats/atoms.proto through
24248/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
24249/// enum value for each proto field defined in the upstream atoms.proto.
24250#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24251#[repr(i32)]
24252pub enum AtomId {
24253    AtomUnspecified = 0,
24254    AtomBleScanStateChanged = 2,
24255    AtomProcessStateChanged = 3,
24256    AtomBleScanResultReceived = 4,
24257    AtomSensorStateChanged = 5,
24258    AtomGpsScanStateChanged = 6,
24259    AtomSyncStateChanged = 7,
24260    AtomScheduledJobStateChanged = 8,
24261    AtomScreenBrightnessChanged = 9,
24262    AtomWakelockStateChanged = 10,
24263    AtomLongPartialWakelockStateChanged = 11,
24264    AtomMobileRadioPowerStateChanged = 12,
24265    AtomWifiRadioPowerStateChanged = 13,
24266    AtomActivityManagerSleepStateChanged = 14,
24267    AtomMemoryFactorStateChanged = 15,
24268    AtomExcessiveCpuUsageReported = 16,
24269    AtomCachedKillReported = 17,
24270    AtomProcessMemoryStatReported = 18,
24271    AtomLauncherEvent = 19,
24272    AtomBatterySaverModeStateChanged = 20,
24273    AtomDeviceIdleModeStateChanged = 21,
24274    AtomDeviceIdlingModeStateChanged = 22,
24275    AtomAudioStateChanged = 23,
24276    AtomMediaCodecStateChanged = 24,
24277    AtomCameraStateChanged = 25,
24278    AtomFlashlightStateChanged = 26,
24279    AtomUidProcessStateChanged = 27,
24280    AtomProcessLifeCycleStateChanged = 28,
24281    AtomScreenStateChanged = 29,
24282    AtomBatteryLevelChanged = 30,
24283    AtomChargingStateChanged = 31,
24284    AtomPluggedStateChanged = 32,
24285    AtomInteractiveStateChanged = 33,
24286    AtomTouchEventReported = 34,
24287    AtomWakeupAlarmOccurred = 35,
24288    AtomKernelWakeupReported = 36,
24289    AtomWifiLockStateChanged = 37,
24290    AtomWifiSignalStrengthChanged = 38,
24291    AtomWifiScanStateChanged = 39,
24292    AtomPhoneSignalStrengthChanged = 40,
24293    AtomSettingChanged = 41,
24294    AtomActivityForegroundStateChanged = 42,
24295    AtomIsolatedUidChanged = 43,
24296    AtomPacketWakeupOccurred = 44,
24297    AtomWallClockTimeShifted = 45,
24298    AtomAnomalyDetected = 46,
24299    AtomAppBreadcrumbReported = 47,
24300    AtomAppStartOccurred = 48,
24301    AtomAppStartCanceled = 49,
24302    AtomAppStartFullyDrawn = 50,
24303    AtomLmkKillOccurred = 51,
24304    AtomPictureInPictureStateChanged = 52,
24305    AtomWifiMulticastLockStateChanged = 53,
24306    AtomAppStartMemoryStateCaptured = 55,
24307    AtomShutdownSequenceReported = 56,
24308    AtomBootSequenceReported = 57,
24309    AtomOverlayStateChanged = 59,
24310    AtomForegroundServiceStateChanged = 60,
24311    AtomCallStateChanged = 61,
24312    AtomKeyguardStateChanged = 62,
24313    AtomKeyguardBouncerStateChanged = 63,
24314    AtomKeyguardBouncerPasswordEntered = 64,
24315    AtomAppDied = 65,
24316    AtomResourceConfigurationChanged = 66,
24317    AtomBluetoothEnabledStateChanged = 67,
24318    AtomBluetoothConnectionStateChanged = 68,
24319    AtomGpsSignalQualityChanged = 69,
24320    AtomUsbConnectorStateChanged = 70,
24321    AtomSpeakerImpedanceReported = 71,
24322    AtomHardwareFailed = 72,
24323    AtomPhysicalDropDetected = 73,
24324    AtomChargeCyclesReported = 74,
24325    AtomMobileConnectionStateChanged = 75,
24326    AtomMobileRadioTechnologyChanged = 76,
24327    AtomUsbDeviceAttached = 77,
24328    AtomAppCrashOccurred = 78,
24329    AtomAnrOccurred = 79,
24330    AtomWtfOccurred = 80,
24331    AtomLowMemReported = 81,
24332    AtomGenericAtom = 82,
24333    AtomVibratorStateChanged = 84,
24334    AtomDeferredJobStatsReported = 85,
24335    AtomThermalThrottling = 86,
24336    AtomBiometricAcquired = 87,
24337    AtomBiometricAuthenticated = 88,
24338    AtomBiometricErrorOccurred = 89,
24339    AtomUiEventReported = 90,
24340    AtomBatteryHealthSnapshot = 91,
24341    AtomSlowIo = 92,
24342    AtomBatteryCausedShutdown = 93,
24343    AtomPhoneServiceStateChanged = 94,
24344    AtomPhoneStateChanged = 95,
24345    AtomUserRestrictionChanged = 96,
24346    AtomSettingsUiChanged = 97,
24347    AtomConnectivityStateChanged = 98,
24348    AtomServiceStateChanged = 99,
24349    AtomServiceLaunchReported = 100,
24350    AtomFlagFlipUpdateOccurred = 101,
24351    AtomBinaryPushStateChanged = 102,
24352    AtomDevicePolicyEvent = 103,
24353    AtomDocsUiFileOpCanceled = 104,
24354    AtomDocsUiFileOpCopyMoveModeReported = 105,
24355    AtomDocsUiFileOpFailure = 106,
24356    AtomDocsUiProviderFileOp = 107,
24357    AtomDocsUiInvalidScopedAccessRequest = 108,
24358    AtomDocsUiLaunchReported = 109,
24359    AtomDocsUiRootVisited = 110,
24360    AtomDocsUiStartupMs = 111,
24361    AtomDocsUiUserActionReported = 112,
24362    AtomWifiEnabledStateChanged = 113,
24363    AtomWifiRunningStateChanged = 114,
24364    AtomAppCompacted = 115,
24365    AtomNetworkDnsEventReported = 116,
24366    AtomDocsUiPickerLaunchedFromReported = 117,
24367    AtomDocsUiPickResultReported = 118,
24368    AtomDocsUiSearchModeReported = 119,
24369    AtomDocsUiSearchTypeReported = 120,
24370    AtomDataStallEvent = 121,
24371    AtomRescuePartyResetReported = 122,
24372    AtomSignedConfigReported = 123,
24373    AtomGnssNiEventReported = 124,
24374    AtomBluetoothLinkLayerConnectionEvent = 125,
24375    AtomBluetoothAclConnectionStateChanged = 126,
24376    AtomBluetoothScoConnectionStateChanged = 127,
24377    AtomAppDowngraded = 128,
24378    AtomAppOptimizedAfterDowngraded = 129,
24379    AtomLowStorageStateChanged = 130,
24380    AtomGnssNfwNotificationReported = 131,
24381    AtomGnssConfigurationReported = 132,
24382    AtomUsbPortOverheatEventReported = 133,
24383    AtomNfcErrorOccurred = 134,
24384    AtomNfcStateChanged = 135,
24385    AtomNfcBeamOccurred = 136,
24386    AtomNfcCardemulationOccurred = 137,
24387    AtomNfcTagOccurred = 138,
24388    AtomNfcHceTransactionOccurred = 139,
24389    AtomSeStateChanged = 140,
24390    AtomSeOmapiReported = 141,
24391    AtomBroadcastDispatchLatencyReported = 142,
24392    AtomAttentionManagerServiceResultReported = 143,
24393    AtomAdbConnectionChanged = 144,
24394    AtomSpeechDspStatReported = 145,
24395    AtomUsbContaminantReported = 146,
24396    AtomWatchdogRollbackOccurred = 147,
24397    AtomBiometricSystemHealthIssueDetected = 148,
24398    AtomBubbleUiChanged = 149,
24399    AtomScheduledJobConstraintChanged = 150,
24400    AtomBluetoothActiveDeviceChanged = 151,
24401    AtomBluetoothA2dpPlaybackStateChanged = 152,
24402    AtomBluetoothA2dpCodecConfigChanged = 153,
24403    AtomBluetoothA2dpCodecCapabilityChanged = 154,
24404    AtomBluetoothA2dpAudioUnderrunReported = 155,
24405    AtomBluetoothA2dpAudioOverrunReported = 156,
24406    AtomBluetoothDeviceRssiReported = 157,
24407    AtomBluetoothDeviceFailedContactCounterReported = 158,
24408    AtomBluetoothDeviceTxPowerLevelReported = 159,
24409    AtomBluetoothHciTimeoutReported = 160,
24410    AtomBluetoothQualityReportReported = 161,
24411    AtomBluetoothDeviceInfoReported = 162,
24412    AtomBluetoothRemoteVersionInfoReported = 163,
24413    AtomBluetoothSdpAttributeReported = 164,
24414    AtomBluetoothBondStateChanged = 165,
24415    AtomBluetoothClassicPairingEventReported = 166,
24416    AtomBluetoothSmpPairingEventReported = 167,
24417    AtomScreenTimeoutExtensionReported = 168,
24418    AtomProcessStartTime = 169,
24419    AtomPermissionGrantRequestResultReported = 170,
24420    AtomBluetoothSocketConnectionStateChanged = 171,
24421    AtomDeviceIdentifierAccessDenied = 172,
24422    AtomBubbleDeveloperErrorReported = 173,
24423    AtomAssistGestureStageReported = 174,
24424    AtomAssistGestureFeedbackReported = 175,
24425    AtomAssistGestureProgressReported = 176,
24426    AtomTouchGestureClassified = 177,
24427    AtomHiddenApiUsed = 178,
24428    AtomStyleUiChanged = 179,
24429    AtomPrivacyIndicatorsInteracted = 180,
24430    AtomAppInstallOnExternalStorageReported = 181,
24431    AtomNetworkStackReported = 182,
24432    AtomAppMovedStorageReported = 183,
24433    AtomBiometricEnrolled = 184,
24434    AtomSystemServerWatchdogOccurred = 185,
24435    AtomTombStoneOccurred = 186,
24436    AtomBluetoothClassOfDeviceReported = 187,
24437    AtomIntelligenceEventReported = 188,
24438    AtomThermalThrottlingSeverityStateChanged = 189,
24439    AtomRoleRequestResultReported = 190,
24440    AtomMediametricsAudiopolicyReported = 191,
24441    AtomMediametricsAudiorecordReported = 192,
24442    AtomMediametricsAudiothreadReported = 193,
24443    AtomMediametricsAudiotrackReported = 194,
24444    AtomMediametricsCodecReported = 195,
24445    AtomMediametricsDrmWidevineReported = 196,
24446    AtomMediametricsExtractorReported = 197,
24447    AtomMediametricsMediadrmReported = 198,
24448    AtomMediametricsNuplayerReported = 199,
24449    AtomMediametricsRecorderReported = 200,
24450    AtomMediametricsDrmmanagerReported = 201,
24451    AtomCarPowerStateChanged = 203,
24452    AtomGarageModeInfo = 204,
24453    AtomTestAtomReported = 205,
24454    AtomContentCaptureCallerMismatchReported = 206,
24455    AtomContentCaptureServiceEvents = 207,
24456    AtomContentCaptureSessionEvents = 208,
24457    AtomContentCaptureFlushed = 209,
24458    AtomLocationManagerApiUsageReported = 210,
24459    AtomReviewPermissionsFragmentResultReported = 211,
24460    AtomRuntimePermissionsUpgradeResult = 212,
24461    AtomGrantPermissionsActivityButtonActions = 213,
24462    AtomLocationAccessCheckNotificationAction = 214,
24463    AtomAppPermissionFragmentActionReported = 215,
24464    AtomAppPermissionFragmentViewed = 216,
24465    AtomAppPermissionsFragmentViewed = 217,
24466    AtomPermissionAppsFragmentViewed = 218,
24467    AtomTextSelectionEvent = 219,
24468    AtomTextLinkifyEvent = 220,
24469    AtomConversationActionsEvent = 221,
24470    AtomLanguageDetectionEvent = 222,
24471    AtomExclusionRectStateChanged = 223,
24472    AtomBackGestureReportedReported = 224,
24473    AtomUpdateEngineUpdateAttemptReported = 225,
24474    AtomUpdateEngineSuccessfulUpdateReported = 226,
24475    AtomCameraActionEvent = 227,
24476    AtomAppCompatibilityChangeReported = 228,
24477    AtomPerfettoUploaded = 229,
24478    AtomVmsClientConnectionStateChanged = 230,
24479    AtomMediaProviderScanOccurred = 233,
24480    AtomMediaContentDeleted = 234,
24481    AtomMediaProviderPermissionRequested = 235,
24482    AtomMediaProviderSchemaChanged = 236,
24483    AtomMediaProviderIdleMaintenanceFinished = 237,
24484    AtomRebootEscrowRecoveryReported = 238,
24485    AtomBootTimeEventDurationReported = 239,
24486    AtomBootTimeEventElapsedTimeReported = 240,
24487    AtomBootTimeEventUtcTimeReported = 241,
24488    AtomBootTimeEventErrorCodeReported = 242,
24489    AtomUserspaceRebootReported = 243,
24490    AtomNotificationReported = 244,
24491    AtomNotificationPanelReported = 245,
24492    AtomNotificationChannelModified = 246,
24493    AtomIntegrityCheckResultReported = 247,
24494    AtomIntegrityRulesPushed = 248,
24495    AtomCbMessageReported = 249,
24496    AtomCbMessageError = 250,
24497    AtomWifiHealthStatReported = 251,
24498    AtomWifiFailureStatReported = 252,
24499    AtomWifiConnectionResultReported = 253,
24500    AtomAppFreezeChanged = 254,
24501    AtomSnapshotMergeReported = 255,
24502    AtomForegroundServiceAppOpSessionEnded = 256,
24503    AtomDisplayJankReported = 257,
24504    AtomAppStandbyBucketChanged = 258,
24505    AtomSharesheetStarted = 259,
24506    AtomRankingSelected = 260,
24507    AtomTvsettingsUiInteracted = 261,
24508    AtomLauncherSnapshot = 262,
24509    AtomPackageInstallerV2Reported = 263,
24510    AtomUserLifecycleJourneyReported = 264,
24511    AtomUserLifecycleEventOccurred = 265,
24512    AtomAccessibilityShortcutReported = 266,
24513    AtomAccessibilityServiceReported = 267,
24514    AtomDocsUiDragAndDropReported = 268,
24515    AtomAppUsageEventOccurred = 269,
24516    AtomAutoRevokeNotificationClicked = 270,
24517    AtomAutoRevokeFragmentAppViewed = 271,
24518    AtomAutoRevokedAppInteraction = 272,
24519    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
24520    AtomEvsUsageStatsReported = 274,
24521    AtomAudioPowerUsageDataReported = 275,
24522    AtomTvTunerStateChanged = 276,
24523    AtomMediaoutputOpSwitchReported = 277,
24524    AtomCbMessageFiltered = 278,
24525    AtomTvTunerDvrStatus = 279,
24526    AtomTvCasSessionOpenStatus = 280,
24527    AtomAssistantInvocationReported = 281,
24528    AtomDisplayWakeReported = 282,
24529    AtomCarUserHalModifyUserRequestReported = 283,
24530    AtomCarUserHalModifyUserResponseReported = 284,
24531    AtomCarUserHalPostSwitchResponseReported = 285,
24532    AtomCarUserHalInitialUserInfoRequestReported = 286,
24533    AtomCarUserHalInitialUserInfoResponseReported = 287,
24534    AtomCarUserHalUserAssociationRequestReported = 288,
24535    AtomCarUserHalSetUserAssociationResponseReported = 289,
24536    AtomNetworkIpProvisioningReported = 290,
24537    AtomNetworkDhcpRenewReported = 291,
24538    AtomNetworkValidationReported = 292,
24539    AtomNetworkStackQuirkReported = 293,
24540    AtomMediametricsAudiorecorddeviceusageReported = 294,
24541    AtomMediametricsAudiothreaddeviceusageReported = 295,
24542    AtomMediametricsAudiotrackdeviceusageReported = 296,
24543    AtomMediametricsAudiodeviceconnectionReported = 297,
24544    AtomBlobCommitted = 298,
24545    AtomBlobLeased = 299,
24546    AtomBlobOpened = 300,
24547    AtomContactsProviderStatusReported = 301,
24548    AtomKeystoreKeyEventReported = 302,
24549    AtomNetworkTetheringReported = 303,
24550    AtomImeTouchReported = 304,
24551    AtomUiInteractionFrameInfoReported = 305,
24552    AtomUiActionLatencyReported = 306,
24553    AtomWifiDisconnectReported = 307,
24554    AtomWifiConnectionStateChanged = 308,
24555    AtomHdmiCecActiveSourceChanged = 309,
24556    AtomHdmiCecMessageReported = 310,
24557    AtomAirplaneMode = 311,
24558    AtomModemRestart = 312,
24559    AtomCarrierIdMismatchReported = 313,
24560    AtomCarrierIdTableUpdated = 314,
24561    AtomDataStallRecoveryReported = 315,
24562    AtomMediametricsMediaparserReported = 316,
24563    AtomTlsHandshakeReported = 317,
24564    AtomTextClassifierApiUsageReported = 318,
24565    AtomCarWatchdogKillStatsReported = 319,
24566    AtomMediametricsPlaybackReported = 320,
24567    AtomMediaNetworkInfoChanged = 321,
24568    AtomMediaPlaybackStateChanged = 322,
24569    AtomMediaPlaybackErrorReported = 323,
24570    AtomMediaPlaybackTrackChanged = 324,
24571    AtomWifiScanReported = 325,
24572    AtomWifiPnoScanReported = 326,
24573    AtomTifTuneChanged = 327,
24574    AtomAutoRotateReported = 328,
24575    AtomPerfettoTrigger = 329,
24576    AtomTranscodingData = 330,
24577    AtomImsServiceEntitlementUpdated = 331,
24578    AtomDeviceRotated = 333,
24579    AtomSimSpecificSettingsRestored = 334,
24580    AtomTextClassifierDownloadReported = 335,
24581    AtomPinStorageEvent = 336,
24582    AtomFaceDownReported = 337,
24583    AtomBluetoothHalCrashReasonReported = 338,
24584    AtomRebootEscrowPreparationReported = 339,
24585    AtomRebootEscrowLskfCaptureReported = 340,
24586    AtomRebootEscrowRebootReported = 341,
24587    AtomBinderLatencyReported = 342,
24588    AtomMediametricsAaudiostreamReported = 343,
24589    AtomMediaTranscodingSessionEnded = 344,
24590    AtomMagnificationUsageReported = 345,
24591    AtomMagnificationModeWithImeOnReported = 346,
24592    AtomAppSearchCallStatsReported = 347,
24593    AtomAppSearchPutDocumentStatsReported = 348,
24594    AtomDeviceControlChanged = 349,
24595    AtomDeviceStateChanged = 350,
24596    AtomInputdeviceRegistered = 351,
24597    AtomSmartspaceCardReported = 352,
24598    AtomAuthPromptAuthenticateInvoked = 353,
24599    AtomAuthManagerCanAuthenticateInvoked = 354,
24600    AtomAuthEnrollActionInvoked = 355,
24601    AtomAuthDeprecatedApiUsed = 356,
24602    AtomUnattendedRebootOccurred = 357,
24603    AtomLongRebootBlockingReported = 358,
24604    AtomLocationTimeZoneProviderStateChanged = 359,
24605    AtomFdtrackEventOccurred = 364,
24606    AtomTimeoutAutoExtendedReported = 365,
24607    AtomAlarmBatchDelivered = 367,
24608    AtomAlarmScheduled = 368,
24609    AtomCarWatchdogIoOveruseStatsReported = 369,
24610    AtomUserLevelHibernationStateChanged = 370,
24611    AtomAppSearchInitializeStatsReported = 371,
24612    AtomAppSearchQueryStatsReported = 372,
24613    AtomAppProcessDied = 373,
24614    AtomNetworkIpReachabilityMonitorReported = 374,
24615    AtomSlowInputEventReported = 375,
24616    AtomAnrOccurredProcessingStarted = 376,
24617    AtomAppSearchRemoveStatsReported = 377,
24618    AtomMediaCodecReported = 378,
24619    AtomPermissionUsageFragmentInteraction = 379,
24620    AtomPermissionDetailsInteraction = 380,
24621    AtomPrivacySensorToggleInteraction = 381,
24622    AtomPrivacyToggleDialogInteraction = 382,
24623    AtomAppSearchOptimizeStatsReported = 383,
24624    AtomNonA11yToolServiceWarningReport = 384,
24625    AtomAppCompatStateChanged = 386,
24626    AtomSizeCompatRestartButtonEventReported = 387,
24627    AtomSplitscreenUiChanged = 388,
24628    AtomNetworkDnsHandshakeReported = 389,
24629    AtomBluetoothCodePathCounter = 390,
24630    AtomBluetoothLeBatchScanReportDelay = 392,
24631    AtomAccessibilityFloatingMenuUiChanged = 393,
24632    AtomNeuralnetworksCompilationCompleted = 394,
24633    AtomNeuralnetworksExecutionCompleted = 395,
24634    AtomNeuralnetworksCompilationFailed = 396,
24635    AtomNeuralnetworksExecutionFailed = 397,
24636    AtomContextHubBooted = 398,
24637    AtomContextHubRestarted = 399,
24638    AtomContextHubLoadedNanoappSnapshotReported = 400,
24639    AtomChreCodeDownloadTransacted = 401,
24640    AtomUwbSessionInited = 402,
24641    AtomUwbSessionClosed = 403,
24642    AtomUwbFirstRangingReceived = 404,
24643    AtomUwbRangingMeasurementReceived = 405,
24644    AtomTextClassifierDownloadWorkScheduled = 406,
24645    AtomTextClassifierDownloadWorkCompleted = 407,
24646    AtomClipboardCleared = 408,
24647    AtomVmCreationRequested = 409,
24648    AtomNearbyDeviceScanStateChanged = 410,
24649    AtomApplicationLocalesChanged = 412,
24650    AtomMediametricsAudiotrackstatusReported = 413,
24651    AtomFoldStateDurationReported = 414,
24652    AtomLocationTimeZoneProviderControllerStateChanged = 415,
24653    AtomDisplayHbmStateChanged = 416,
24654    AtomDisplayHbmBrightnessChanged = 417,
24655    AtomPersistentUriPermissionsFlushed = 418,
24656    AtomEarlyBootCompOsArtifactsCheckReported = 419,
24657    AtomVbmetaDigestReported = 420,
24658    AtomApexInfoGathered = 421,
24659    AtomPvmInfoGathered = 422,
24660    AtomWearSettingsUiInteracted = 423,
24661    AtomTracingServiceReportEvent = 424,
24662    AtomMediametricsAudiorecordstatusReported = 425,
24663    AtomLauncherLatency = 426,
24664    AtomDropboxEntryDropped = 427,
24665    AtomWifiP2pConnectionReported = 428,
24666    AtomGameStateChanged = 429,
24667    AtomHotwordDetectorCreateRequested = 430,
24668    AtomHotwordDetectionServiceInitResultReported = 431,
24669    AtomHotwordDetectionServiceRestarted = 432,
24670    AtomHotwordDetectorKeyphraseTriggered = 433,
24671    AtomHotwordDetectorEvents = 434,
24672    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
24673    AtomContactsIndexerUpdateStatsReported = 440,
24674    AtomAppBackgroundRestrictionsInfo = 441,
24675    AtomMmsSmsProviderGetThreadIdFailed = 442,
24676    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
24677    AtomPermissionReminderNotificationInteracted = 444,
24678    AtomRecentPermissionDecisionsInteracted = 445,
24679    AtomGnssPsdsDownloadReported = 446,
24680    AtomLeAudioConnectionSessionReported = 447,
24681    AtomLeAudioBroadcastSessionReported = 448,
24682    AtomDreamUiEventReported = 449,
24683    AtomTaskManagerEventReported = 450,
24684    AtomCdmAssociationAction = 451,
24685    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
24686    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
24687    AtomAccessibilityTextReadingOptionsChanged = 454,
24688    AtomWifiSetupFailureCrashReported = 455,
24689    AtomUwbDeviceErrorReported = 456,
24690    AtomIsolatedCompilationScheduled = 457,
24691    AtomIsolatedCompilationEnded = 458,
24692    AtomOnsOpportunisticEsimProvisioningComplete = 459,
24693    AtomSystemServerPreWatchdogOccurred = 460,
24694    AtomTelephonyAnomalyDetected = 461,
24695    AtomLetterboxPositionChanged = 462,
24696    AtomRemoteKeyProvisioningAttempt = 463,
24697    AtomRemoteKeyProvisioningNetworkInfo = 464,
24698    AtomRemoteKeyProvisioningTiming = 465,
24699    AtomMediaoutputOpInteractionReport = 466,
24700    AtomSyncExemptionOccurred = 468,
24701    AtomAutofillPresentationEventReported = 469,
24702    AtomDockStateChanged = 470,
24703    AtomSafetySourceStateCollected = 471,
24704    AtomSafetyCenterSystemEventReported = 472,
24705    AtomSafetyCenterInteractionReported = 473,
24706    AtomSettingsProviderSettingChanged = 474,
24707    AtomBroadcastDeliveryEventReported = 475,
24708    AtomServiceRequestEventReported = 476,
24709    AtomProviderAcquisitionEventReported = 477,
24710    AtomBluetoothDeviceNameReported = 478,
24711    AtomCbConfigUpdated = 479,
24712    AtomCbModuleErrorReported = 480,
24713    AtomCbServiceFeatureChanged = 481,
24714    AtomCbReceiverFeatureChanged = 482,
24715    AtomPrivacySignalNotificationInteraction = 484,
24716    AtomPrivacySignalIssueCardInteraction = 485,
24717    AtomPrivacySignalsJobFailure = 486,
24718    AtomVibrationReported = 487,
24719    AtomUwbRangingStart = 489,
24720    AtomAppCompactedV2 = 491,
24721    AtomDisplayBrightnessChanged = 494,
24722    AtomActivityActionBlocked = 495,
24723    AtomNetworkDnsServerSupportReported = 504,
24724    AtomVmBooted = 505,
24725    AtomVmExited = 506,
24726    AtomAmbientBrightnessStatsReported = 507,
24727    AtomMediametricsSpatializercapabilitiesReported = 508,
24728    AtomMediametricsSpatializerdeviceenabledReported = 509,
24729    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
24730    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
24731    AtomHearingAidInfoReported = 513,
24732    AtomDeviceWideJobConstraintChanged = 514,
24733    AtomAmbientModeChanged = 515,
24734    AtomAnrLatencyReported = 516,
24735    AtomResourceApiInfo = 517,
24736    AtomSystemDefaultNetworkChanged = 518,
24737    AtomIwlanSetupDataCallResultReported = 519,
24738    AtomIwlanPdnDisconnectedReasonReported = 520,
24739    AtomAirplaneModeSessionReported = 521,
24740    AtomVmCpuStatusReported = 522,
24741    AtomVmMemStatusReported = 523,
24742    AtomPackageInstallationSessionReported = 524,
24743    AtomDefaultNetworkRematchInfo = 525,
24744    AtomNetworkSelectionPerformance = 526,
24745    AtomNetworkNsdReported = 527,
24746    AtomBluetoothDisconnectionReasonReported = 529,
24747    AtomBluetoothLocalVersionsReported = 530,
24748    AtomBluetoothRemoteSupportedFeaturesReported = 531,
24749    AtomBluetoothLocalSupportedFeaturesReported = 532,
24750    AtomBluetoothGattAppInfo = 533,
24751    AtomBrightnessConfigurationUpdated = 534,
24752    AtomWearMediaOutputSwitcherLaunched = 538,
24753    AtomWearMediaOutputSwitcherFinished = 539,
24754    AtomWearMediaOutputSwitcherConnectionReported = 540,
24755    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
24756    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
24757    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
24758    AtomPackageManagerSnapshotReported = 544,
24759    AtomPackageManagerAppsFilterCacheBuildReported = 545,
24760    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
24761    AtomLauncherImpressionEvent = 547,
24762    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
24763    AtomWsWatchFaceEdited = 551,
24764    AtomWsWatchFaceFavoriteActionReported = 552,
24765    AtomWsWatchFaceSetActionReported = 553,
24766    AtomPackageUninstallationReported = 554,
24767    AtomGameModeChanged = 555,
24768    AtomGameModeConfigurationChanged = 556,
24769    AtomBedtimeModeStateChanged = 557,
24770    AtomNetworkSliceSessionEnded = 558,
24771    AtomNetworkSliceDailyDataUsageReported = 559,
24772    AtomNfcTagTypeOccurred = 560,
24773    AtomNfcAidConflictOccurred = 561,
24774    AtomNfcReaderConflictOccurred = 562,
24775    AtomWsTileListChanged = 563,
24776    AtomGetTypeAccessedWithoutPermission = 564,
24777    AtomMobileBundledAppInfoGathered = 566,
24778    AtomWsWatchFaceComplicationSetChanged = 567,
24779    AtomMediaDrmCreated = 568,
24780    AtomMediaDrmErrored = 569,
24781    AtomMediaDrmSessionOpened = 570,
24782    AtomMediaDrmSessionClosed = 571,
24783    AtomUserSelectedResolution = 572,
24784    AtomUnsafeIntentEventReported = 573,
24785    AtomPerformanceHintSessionReported = 574,
24786    AtomMediametricsMidiDeviceCloseReported = 576,
24787    AtomBiometricTouchReported = 577,
24788    AtomHotwordAudioEgressEventReported = 578,
24789    AtomLocationEnabledStateChanged = 580,
24790    AtomImeRequestFinished = 581,
24791    AtomUsbComplianceWarningsReported = 582,
24792    AtomAppSupportedLocalesChanged = 583,
24793    AtomMediaProviderVolumeRecoveryReported = 586,
24794    AtomBiometricPropertiesCollected = 587,
24795    AtomKernelWakeupAttributed = 588,
24796    AtomScreenStateChangedV2 = 589,
24797    AtomWsBackupActionReported = 590,
24798    AtomWsRestoreActionReported = 591,
24799    AtomDeviceLogAccessEventReported = 592,
24800    AtomMediaSessionUpdated = 594,
24801    AtomWearOobeStateChanged = 595,
24802    AtomWsNotificationUpdated = 596,
24803    AtomNetworkValidationFailureStatsDailyReported = 601,
24804    AtomWsComplicationTapped = 602,
24805    AtomWsNotificationBlocking = 780,
24806    AtomWsNotificationBridgemodeUpdated = 822,
24807    AtomWsNotificationDismissalActioned = 823,
24808    AtomWsNotificationActioned = 824,
24809    AtomWsNotificationLatency = 880,
24810    AtomWifiBytesTransfer = 10000,
24811    AtomWifiBytesTransferByFgBg = 10001,
24812    AtomMobileBytesTransfer = 10002,
24813    AtomMobileBytesTransferByFgBg = 10003,
24814    AtomBluetoothBytesTransfer = 10006,
24815    AtomKernelWakelock = 10004,
24816    AtomSubsystemSleepState = 10005,
24817    AtomCpuTimePerUid = 10009,
24818    AtomCpuTimePerUidFreq = 10010,
24819    AtomWifiActivityInfo = 10011,
24820    AtomModemActivityInfo = 10012,
24821    AtomBluetoothActivityInfo = 10007,
24822    AtomProcessMemoryState = 10013,
24823    AtomSystemElapsedRealtime = 10014,
24824    AtomSystemUptime = 10015,
24825    AtomCpuActiveTime = 10016,
24826    AtomCpuClusterTime = 10017,
24827    AtomDiskSpace = 10018,
24828    AtomRemainingBatteryCapacity = 10019,
24829    AtomFullBatteryCapacity = 10020,
24830    AtomTemperature = 10021,
24831    AtomBinderCalls = 10022,
24832    AtomBinderCallsExceptions = 10023,
24833    AtomLooperStats = 10024,
24834    AtomDiskStats = 10025,
24835    AtomDirectoryUsage = 10026,
24836    AtomAppSize = 10027,
24837    AtomCategorySize = 10028,
24838    AtomProcStats = 10029,
24839    AtomBatteryVoltage = 10030,
24840    AtomNumFingerprintsEnrolled = 10031,
24841    AtomDiskIo = 10032,
24842    AtomPowerProfile = 10033,
24843    AtomProcStatsPkgProc = 10034,
24844    AtomProcessCpuTime = 10035,
24845    AtomCpuTimePerThreadFreq = 10037,
24846    AtomOnDevicePowerMeasurement = 10038,
24847    AtomDeviceCalculatedPowerUse = 10039,
24848    AtomProcessMemoryHighWaterMark = 10042,
24849    AtomBatteryLevel = 10043,
24850    AtomBuildInformation = 10044,
24851    AtomBatteryCycleCount = 10045,
24852    AtomDebugElapsedClock = 10046,
24853    AtomDebugFailingElapsedClock = 10047,
24854    AtomNumFacesEnrolled = 10048,
24855    AtomRoleHolder = 10049,
24856    AtomDangerousPermissionState = 10050,
24857    AtomTrainInfo = 10051,
24858    AtomTimeZoneDataInfo = 10052,
24859    AtomExternalStorageInfo = 10053,
24860    AtomGpuStatsGlobalInfo = 10054,
24861    AtomGpuStatsAppInfo = 10055,
24862    AtomSystemIonHeapSize = 10056,
24863    AtomAppsOnExternalStorageInfo = 10057,
24864    AtomFaceSettings = 10058,
24865    AtomCoolingDevice = 10059,
24866    AtomAppOps = 10060,
24867    AtomProcessSystemIonHeapSize = 10061,
24868    AtomSurfaceflingerStatsGlobalInfo = 10062,
24869    AtomSurfaceflingerStatsLayerInfo = 10063,
24870    AtomProcessMemorySnapshot = 10064,
24871    AtomVmsClientStats = 10065,
24872    AtomNotificationRemoteViews = 10066,
24873    AtomDangerousPermissionStateSampled = 10067,
24874    AtomGraphicsStats = 10068,
24875    AtomRuntimeAppOpAccess = 10069,
24876    AtomIonHeapSize = 10070,
24877    AtomPackageNotificationPreferences = 10071,
24878    AtomPackageNotificationChannelPreferences = 10072,
24879    AtomPackageNotificationChannelGroupPreferences = 10073,
24880    AtomGnssStats = 10074,
24881    AtomAttributedAppOps = 10075,
24882    AtomVoiceCallSession = 10076,
24883    AtomVoiceCallRatUsage = 10077,
24884    AtomSimSlotState = 10078,
24885    AtomSupportedRadioAccessFamily = 10079,
24886    AtomSettingSnapshot = 10080,
24887    AtomBlobInfo = 10081,
24888    AtomDataUsageBytesTransfer = 10082,
24889    AtomBytesTransferByTagAndMetered = 10083,
24890    AtomDndModeRule = 10084,
24891    AtomGeneralExternalStorageAccessStats = 10085,
24892    AtomIncomingSms = 10086,
24893    AtomOutgoingSms = 10087,
24894    AtomCarrierIdTableVersion = 10088,
24895    AtomDataCallSession = 10089,
24896    AtomCellularServiceState = 10090,
24897    AtomCellularDataServiceSwitch = 10091,
24898    AtomSystemMemory = 10092,
24899    AtomImsRegistrationTermination = 10093,
24900    AtomImsRegistrationStats = 10094,
24901    AtomCpuTimePerClusterFreq = 10095,
24902    AtomCpuCyclesPerUidCluster = 10096,
24903    AtomDeviceRotatedData = 10097,
24904    AtomCpuCyclesPerThreadGroupCluster = 10098,
24905    AtomMediaDrmActivityInfo = 10099,
24906    AtomOemManagedBytesTransfer = 10100,
24907    AtomGnssPowerStats = 10101,
24908    AtomTimeZoneDetectorState = 10102,
24909    AtomKeystore2StorageStats = 10103,
24910    AtomRkpPoolStats = 10104,
24911    AtomProcessDmabufMemory = 10105,
24912    AtomPendingAlarmInfo = 10106,
24913    AtomUserLevelHibernatedApps = 10107,
24914    AtomLauncherLayoutSnapshot = 10108,
24915    AtomGlobalHibernatedApps = 10109,
24916    AtomInputEventLatencySketch = 10110,
24917    AtomBatteryUsageStatsBeforeReset = 10111,
24918    AtomBatteryUsageStatsSinceReset = 10112,
24919    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
24920    AtomInstalledIncrementalPackage = 10114,
24921    AtomTelephonyNetworkRequests = 10115,
24922    AtomAppSearchStorageInfo = 10116,
24923    AtomVmstat = 10117,
24924    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
24925    AtomKeystore2KeyCreationWithAuthInfo = 10119,
24926    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
24927    AtomKeystore2AtomWithOverflow = 10121,
24928    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
24929    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
24930    AtomRkpErrorStats = 10124,
24931    AtomKeystore2CrashStats = 10125,
24932    AtomVendorApexInfo = 10126,
24933    AtomAccessibilityShortcutStats = 10127,
24934    AtomAccessibilityFloatingMenuStats = 10128,
24935    AtomDataUsageBytesTransferV2 = 10129,
24936    AtomMediaCapabilities = 10130,
24937    AtomCarWatchdogSystemIoUsageSummary = 10131,
24938    AtomCarWatchdogUidIoUsageSummary = 10132,
24939    AtomImsRegistrationFeatureTagStats = 10133,
24940    AtomRcsClientProvisioningStats = 10134,
24941    AtomRcsAcsProvisioningStats = 10135,
24942    AtomSipDelegateStats = 10136,
24943    AtomSipTransportFeatureTagStats = 10137,
24944    AtomSipMessageResponse = 10138,
24945    AtomSipTransportSession = 10139,
24946    AtomImsDedicatedBearerListenerEvent = 10140,
24947    AtomImsDedicatedBearerEvent = 10141,
24948    AtomImsRegistrationServiceDescStats = 10142,
24949    AtomUceEventStats = 10143,
24950    AtomPresenceNotifyEvent = 10144,
24951    AtomGbaEvent = 10145,
24952    AtomPerSimStatus = 10146,
24953    AtomGpuWorkPerUid = 10147,
24954    AtomPersistentUriPermissionsAmountPerPackage = 10148,
24955    AtomSignedPartitionInfo = 10149,
24956    AtomPinnedFileSizesPerPackage = 10150,
24957    AtomPendingIntentsPerPackage = 10151,
24958    AtomUserInfo = 10152,
24959    AtomTelephonyNetworkRequestsV2 = 10153,
24960    AtomDeviceTelephonyProperties = 10154,
24961    AtomRemoteKeyProvisioningErrorCounts = 10155,
24962    AtomSafetyState = 10156,
24963    AtomIncomingMms = 10157,
24964    AtomOutgoingMms = 10158,
24965    AtomMultiUserInfo = 10160,
24966    AtomNetworkBpfMapInfo = 10161,
24967    AtomOutgoingShortCodeSms = 10162,
24968    AtomConnectivityStateSample = 10163,
24969    AtomNetworkSelectionRematchReasonsInfo = 10164,
24970    AtomGameModeInfo = 10165,
24971    AtomGameModeConfiguration = 10166,
24972    AtomGameModeListener = 10167,
24973    AtomNetworkSliceRequestCount = 10168,
24974    AtomWsTileSnapshot = 10169,
24975    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
24976    AtomProcessState = 10171,
24977    AtomProcessAssociation = 10172,
24978    AtomAdpfSystemComponentInfo = 10173,
24979    AtomNotificationMemoryUse = 10174,
24980    AtomHdrCapabilities = 10175,
24981    AtomWsFavouriteWatchFaceListSnapshot = 10176,
24982    AtomAccessibilityCheckResultReported = 910,
24983    AtomAdaptiveAuthUnlockAfterLockReported = 820,
24984    AtomThermalStatusCalled = 772,
24985    AtomThermalHeadroomCalled = 773,
24986    AtomThermalHeadroomThresholdsCalled = 774,
24987    AtomAdpfHintSessionTidCleanup = 839,
24988    AtomThermalHeadroomThresholds = 10201,
24989    AtomAdpfSessionSnapshot = 10218,
24990    AtomJsscriptengineLatencyReported = 483,
24991    AtomAdServicesApiCalled = 435,
24992    AtomAdServicesMesurementReportsUploaded = 436,
24993    AtomMobileDataDownloadFileGroupStatusReported = 490,
24994    AtomMobileDataDownloadDownloadResultReported = 502,
24995    AtomAdServicesSettingsUsageReported = 493,
24996    AtomBackgroundFetchProcessReported = 496,
24997    AtomUpdateCustomAudienceProcessReported = 497,
24998    AtomRunAdBiddingProcessReported = 498,
24999    AtomRunAdScoringProcessReported = 499,
25000    AtomRunAdSelectionProcessReported = 500,
25001    AtomRunAdBiddingPerCaProcessReported = 501,
25002    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
25003    AtomAdServicesMeasurementRegistrations = 512,
25004    AtomAdServicesGetTopicsReported = 535,
25005    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
25006    AtomAdServicesEpochComputationClassifierReported = 537,
25007    AtomAdServicesBackCompatGetTopicsReported = 598,
25008    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
25009    AtomAdServicesMeasurementDebugKeys = 640,
25010    AtomAdServicesErrorReported = 662,
25011    AtomAdServicesBackgroundJobsExecutionReported = 663,
25012    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
25013    AtomAdServicesMeasurementAttribution = 674,
25014    AtomAdServicesMeasurementJobs = 675,
25015    AtomAdServicesMeasurementWipeout = 676,
25016    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
25017    AtomAdServicesEnrollmentDataStored = 697,
25018    AtomAdServicesEnrollmentFileDownloaded = 698,
25019    AtomAdServicesEnrollmentMatched = 699,
25020    AtomAdServicesConsentMigrated = 702,
25021    AtomAdServicesEnrollmentFailed = 714,
25022    AtomAdServicesMeasurementClickVerification = 756,
25023    AtomAdServicesEncryptionKeyFetched = 765,
25024    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
25025    AtomDestinationRegisteredBeacons = 767,
25026    AtomReportInteractionApiCalled = 768,
25027    AtomInteractionReportingTableCleared = 769,
25028    AtomAppManifestConfigHelperCalled = 788,
25029    AtomAdFilteringProcessJoinCaReported = 793,
25030    AtomAdFilteringProcessAdSelectionReported = 794,
25031    AtomAdCounterHistogramUpdaterReported = 795,
25032    AtomSignatureVerification = 807,
25033    AtomKAnonImmediateSignJoinStatusReported = 808,
25034    AtomKAnonBackgroundJobStatusReported = 809,
25035    AtomKAnonInitializeStatusReported = 810,
25036    AtomKAnonSignStatusReported = 811,
25037    AtomKAnonJoinStatusReported = 812,
25038    AtomKAnonKeyAttestationStatusReported = 813,
25039    AtomGetAdSelectionDataApiCalled = 814,
25040    AtomGetAdSelectionDataBuyerInputGenerated = 815,
25041    AtomBackgroundJobSchedulingReported = 834,
25042    AtomTopicsEncryptionEpochComputationReported = 840,
25043    AtomTopicsEncryptionGetTopicsReported = 841,
25044    AtomAdservicesShellCommandCalled = 842,
25045    AtomUpdateSignalsApiCalled = 843,
25046    AtomEncodingJobRun = 844,
25047    AtomEncodingJsFetch = 845,
25048    AtomEncodingJsExecution = 846,
25049    AtomPersistAdSelectionResultCalled = 847,
25050    AtomServerAuctionKeyFetchCalled = 848,
25051    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
25052    AtomAdServicesMeasurementProcessOdpRegistration = 864,
25053    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
25054    AtomSelectAdsFromOutcomesApiCalled = 876,
25055    AtomReportImpressionApiCalled = 877,
25056    AtomAdServicesEnrollmentTransactionStats = 885,
25057    AtomAdServicesCobaltLoggerEventReported = 902,
25058    AtomAdServicesCobaltPeriodicJobEventReported = 903,
25059    AtomUpdateSignalsProcessReported = 905,
25060    AtomTopicsScheduleEpochJobSettingReported = 930,
25061    AtomAiWallpapersButtonPressed = 706,
25062    AtomAiWallpapersTemplateSelected = 707,
25063    AtomAiWallpapersTermSelected = 708,
25064    AtomAiWallpapersWallpaperSet = 709,
25065    AtomAiWallpapersSessionSummary = 710,
25066    AtomApexInstallationRequested = 732,
25067    AtomApexInstallationStaged = 733,
25068    AtomApexInstallationEnded = 734,
25069    AtomAppSearchSetSchemaStatsReported = 385,
25070    AtomAppSearchSchemaMigrationStatsReported = 579,
25071    AtomAppSearchUsageSearchIntentStatsReported = 825,
25072    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
25073    AtomAppSearchAppsIndexerStatsReported = 909,
25074    AtomArtDatumReported = 332,
25075    AtomArtDeviceDatumReported = 550,
25076    AtomArtDatumDeltaReported = 565,
25077    AtomArtDex2oatReported = 929,
25078    AtomArtDeviceStatus = 10205,
25079    AtomBackgroundDexoptJobEnded = 467,
25080    AtomPrerebootDexoptJobEnded = 883,
25081    AtomOdrefreshReported = 366,
25082    AtomOdsignReported = 548,
25083    AtomAutofillUiEventReported = 603,
25084    AtomAutofillFillRequestReported = 604,
25085    AtomAutofillFillResponseReported = 605,
25086    AtomAutofillSaveEventReported = 606,
25087    AtomAutofillSessionCommitted = 607,
25088    AtomAutofillFieldClassificationEventReported = 659,
25089    AtomCarRecentsEventReported = 770,
25090    AtomCarCalmModeEventReported = 797,
25091    AtomCarWakeupFromSuspendReported = 852,
25092    AtomPluginInitialized = 655,
25093    AtomBluetoothHashedDeviceNameReported = 613,
25094    AtomBluetoothL2capCocClientConnection = 614,
25095    AtomBluetoothL2capCocServerConnection = 615,
25096    AtomBluetoothLeSessionConnected = 656,
25097    AtomRestrictedBluetoothDeviceNameReported = 666,
25098    AtomBluetoothProfileConnectionAttempted = 696,
25099    AtomBluetoothContentProfileErrorReported = 781,
25100    AtomBluetoothRfcommConnectionAttempted = 782,
25101    AtomRemoteDeviceInformationWithMetricId = 862,
25102    AtomLeAppScanStateChanged = 870,
25103    AtomLeRadioScanStopped = 871,
25104    AtomLeScanResultReceived = 872,
25105    AtomLeScanAbused = 873,
25106    AtomLeAdvStateChanged = 874,
25107    AtomLeAdvErrorReported = 875,
25108    AtomA2dpSessionReported = 904,
25109    AtomBluetoothCrossLayerEventReported = 916,
25110    AtomBroadcastAudioSessionReported = 927,
25111    AtomBroadcastAudioSyncReported = 928,
25112    AtomBluetoothRfcommConnectionReportedAtClose = 982,
25113    AtomBluetoothLeConnection = 988,
25114    AtomBroadcastSent = 922,
25115    AtomCameraFeatureCombinationQueryEvent = 900,
25116    AtomCertificateTransparencyLogListStateChanged = 934,
25117    AtomCertificateTransparencyLogListUpdateFailed = 972,
25118    AtomDailyKeepaliveInfoReported = 650,
25119    AtomNetworkRequestStateChanged = 779,
25120    AtomTetheringActiveSessionsReported = 925,
25121    AtomNetworkStatsRecorderFileOperated = 783,
25122    AtomCoreNetworkingTerribleErrorOccurred = 979,
25123    AtomApfSessionInfoReported = 777,
25124    AtomIpClientRaInfoReported = 778,
25125    AtomVpnConnectionStateChanged = 850,
25126    AtomVpnConnectionReported = 851,
25127    AtomCpuPolicy = 10199,
25128    AtomCredentialManagerApiCalled = 585,
25129    AtomCredentialManagerInitPhaseReported = 651,
25130    AtomCredentialManagerCandidatePhaseReported = 652,
25131    AtomCredentialManagerFinalPhaseReported = 653,
25132    AtomCredentialManagerTotalReported = 667,
25133    AtomCredentialManagerFinalnouidReported = 668,
25134    AtomCredentialManagerGetReported = 669,
25135    AtomCredentialManagerAuthClickReported = 670,
25136    AtomCredentialManagerApiv2Called = 671,
25137    AtomCronetEngineCreated = 703,
25138    AtomCronetTrafficReported = 704,
25139    AtomCronetEngineBuilderInitialized = 762,
25140    AtomCronetHttpFlagsInitialized = 763,
25141    AtomCronetInitialized = 764,
25142    AtomDesktopModeUiChanged = 818,
25143    AtomDesktopModeSessionTaskUpdate = 819,
25144    AtomDesktopModeTaskSizeUpdated = 935,
25145    AtomDeviceLockCheckInRequestReported = 726,
25146    AtomDeviceLockProvisioningCompleteReported = 727,
25147    AtomDeviceLockKioskAppRequestReported = 728,
25148    AtomDeviceLockCheckInRetryReported = 789,
25149    AtomDeviceLockProvisionFailureReported = 790,
25150    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
25151    AtomDevicePolicyManagementMode = 10216,
25152    AtomDevicePolicyState = 10217,
25153    AtomDisplayModeDirectorVoteChanged = 792,
25154    AtomExternalDisplayStateChanged = 806,
25155    AtomDndStateChanged = 657,
25156    AtomDreamSettingChanged = 705,
25157    AtomDreamSettingSnapshot = 10192,
25158    AtomExpressEventReported = 528,
25159    AtomExpressHistogramSampleReported = 593,
25160    AtomExpressUidEventReported = 644,
25161    AtomExpressUidHistogramSampleReported = 658,
25162    AtomFederatedComputeApiCalled = 712,
25163    AtomFederatedComputeTrainingEventReported = 771,
25164    AtomExampleIteratorNextLatencyReported = 838,
25165    AtomFullScreenIntentLaunched = 631,
25166    AtomBalAllowed = 632,
25167    AtomInTaskActivityStarted = 685,
25168    AtomDeviceOrientationChanged = 906,
25169    AtomCachedAppsHighWatermark = 10189,
25170    AtomStylusPredictionMetricsReported = 718,
25171    AtomUserRiskEventReported = 725,
25172    AtomMediaProjectionStateChanged = 729,
25173    AtomMediaProjectionTargetChanged = 730,
25174    AtomExcessiveBinderProxyCountReported = 853,
25175    AtomProxyBytesTransferByFgBg = 10200,
25176    AtomMobileBytesTransferByProcState = 10204,
25177    AtomBiometricFrrNotification = 817,
25178    AtomSensitiveContentMediaProjectionSession = 830,
25179    AtomSensitiveNotificationAppProtectionSession = 831,
25180    AtomSensitiveNotificationAppProtectionApplied = 832,
25181    AtomSensitiveNotificationRedaction = 833,
25182    AtomSensitiveContentAppProtection = 835,
25183    AtomAppRestrictionStateChanged = 866,
25184    AtomBatteryUsageStatsPerUid = 10209,
25185    AtomPostgcMemorySnapshot = 924,
25186    AtomPowerSaveTempAllowlistChanged = 926,
25187    AtomAppOpAccessTracked = 931,
25188    AtomContentOrFileUriEventReported = 933,
25189    AtomApplicationGrammaticalInflectionChanged = 584,
25190    AtomSystemGrammaticalInflectionChanged = 816,
25191    AtomBatteryHealth = 10220,
25192    AtomHdmiEarcStatusReported = 701,
25193    AtomHdmiSoundbarModeStatusReported = 724,
25194    AtomHealthConnectApiCalled = 616,
25195    AtomHealthConnectUsageStats = 617,
25196    AtomHealthConnectStorageStats = 618,
25197    AtomHealthConnectApiInvoked = 643,
25198    AtomExerciseRouteApiCalled = 654,
25199    AtomHealthConnectExportInvoked = 907,
25200    AtomHealthConnectImportInvoked = 918,
25201    AtomHealthConnectExportImportStatsReported = 919,
25202    AtomHealthConnectUiImpression = 623,
25203    AtomHealthConnectUiInteraction = 624,
25204    AtomHealthConnectAppOpenedReported = 625,
25205    AtomHotwordEgressSizeAtomReported = 761,
25206    AtomIkeSessionTerminated = 678,
25207    AtomIkeLivenessCheckSessionValidated = 760,
25208    AtomNegotiatedSecurityAssociation = 821,
25209    AtomKeyboardConfigured = 682,
25210    AtomKeyboardSystemsEventReported = 683,
25211    AtomInputdeviceUsageReported = 686,
25212    AtomInputEventLatencyReported = 932,
25213    AtomTouchpadUsage = 10191,
25214    AtomKernelOomKillOccurred = 754,
25215    AtomEmergencyStateChanged = 633,
25216    AtomChreSignificantMotionStateChanged = 868,
25217    AtomPopulationDensityProviderLoadingReported = 1002,
25218    AtomDensityBasedCoarseLocationsUsageReported = 1003,
25219    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
25220    AtomMediaCodecReclaimRequestCompleted = 600,
25221    AtomMediaCodecStarted = 641,
25222    AtomMediaCodecStopped = 642,
25223    AtomMediaCodecRendered = 684,
25224    AtomMediaEditingEndedReported = 798,
25225    AtomMteState = 10181,
25226    AtomMicroxrDeviceBootCompleteReported = 901,
25227    AtomNfcObserveModeStateChanged = 855,
25228    AtomNfcFieldChanged = 856,
25229    AtomNfcPollingLoopNotificationReported = 857,
25230    AtomNfcProprietaryCapabilitiesReported = 858,
25231    AtomOndevicepersonalizationApiCalled = 711,
25232    AtomComponentStateChangedReported = 863,
25233    AtomPdfLoadReported = 859,
25234    AtomPdfApiUsageReported = 860,
25235    AtomPdfSearchReported = 861,
25236    AtomPressureStallInformation = 10229,
25237    AtomPermissionRationaleDialogViewed = 645,
25238    AtomPermissionRationaleDialogActionReported = 646,
25239    AtomAppDataSharingUpdatesNotificationInteraction = 647,
25240    AtomAppDataSharingUpdatesFragmentViewed = 648,
25241    AtomAppDataSharingUpdatesFragmentActionReported = 649,
25242    AtomEnhancedConfirmationDialogResultReported = 827,
25243    AtomEnhancedConfirmationRestrictionCleared = 828,
25244    AtomPhotopickerSessionInfoReported = 886,
25245    AtomPhotopickerApiInfoReported = 887,
25246    AtomPhotopickerUiEventLogged = 888,
25247    AtomPhotopickerMediaItemStatusReported = 889,
25248    AtomPhotopickerPreviewInfoLogged = 890,
25249    AtomPhotopickerMenuInteractionLogged = 891,
25250    AtomPhotopickerBannerInteractionLogged = 892,
25251    AtomPhotopickerMediaLibraryInfoLogged = 893,
25252    AtomPhotopickerPageInfoLogged = 894,
25253    AtomPhotopickerMediaGridSyncInfoReported = 895,
25254    AtomPhotopickerAlbumSyncInfoReported = 896,
25255    AtomPhotopickerSearchInfoReported = 897,
25256    AtomSearchDataExtractionDetailsReported = 898,
25257    AtomEmbeddedPhotopickerInfoReported = 899,
25258    AtomAtom9999 = 9999,
25259    AtomAtom99999 = 99999,
25260    AtomScreenOffReported = 776,
25261    AtomScreenTimeoutOverrideReported = 836,
25262    AtomScreenInteractiveSessionReported = 837,
25263    AtomScreenDimReported = 867,
25264    AtomMediaProviderDatabaseRollbackReported = 784,
25265    AtomBackupSetupStatusReported = 785,
25266    AtomRangingSessionConfigured = 993,
25267    AtomRangingSessionStarted = 994,
25268    AtomRangingSessionClosed = 995,
25269    AtomRangingTechnologyStarted = 996,
25270    AtomRangingTechnologyStopped = 997,
25271    AtomRkpdPoolStats = 664,
25272    AtomRkpdClientOperation = 665,
25273    AtomSandboxApiCalled = 488,
25274    AtomSandboxActivityEventOccurred = 735,
25275    AtomSdkSandboxRestrictedAccessInSession = 796,
25276    AtomSandboxSdkStorage = 10159,
25277    AtomSelinuxAuditLog = 799,
25278    AtomSettingsSpaReported = 622,
25279    AtomTestExtensionAtomReported = 660,
25280    AtomTestRestrictedAtomReported = 672,
25281    AtomStatsSocketLossReported = 752,
25282    AtomLockscreenShortcutSelected = 611,
25283    AtomLockscreenShortcutTriggered = 612,
25284    AtomLauncherImpressionEventV2 = 716,
25285    AtomDisplaySwitchLatencyTracked = 753,
25286    AtomNotificationListenerService = 829,
25287    AtomNavHandleTouchPoints = 869,
25288    AtomCommunalHubWidgetEventReported = 908,
25289    AtomCommunalHubSnapshot = 10226,
25290    AtomEmergencyNumberDialed = 637,
25291    AtomCallStats = 10221,
25292    AtomCallAudioRouteStats = 10222,
25293    AtomTelecomApiStats = 10223,
25294    AtomTelecomErrorStats = 10224,
25295    AtomCellularRadioPowerStateChanged = 713,
25296    AtomEmergencyNumbersInfo = 10180,
25297    AtomDataNetworkValidation = 10207,
25298    AtomDataRatStateChanged = 854,
25299    AtomConnectedChannelChanged = 882,
25300    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
25301    AtomQualifiedRatListChanged = 634,
25302    AtomQnsImsCallDropStats = 635,
25303    AtomQnsFallbackRestrictionChanged = 636,
25304    AtomQnsRatPreferenceMismatchInfo = 10177,
25305    AtomQnsHandoverTimeMillis = 10178,
25306    AtomQnsHandoverPingpong = 10179,
25307    AtomSatelliteController = 10182,
25308    AtomSatelliteSession = 10183,
25309    AtomSatelliteIncomingDatagram = 10184,
25310    AtomSatelliteOutgoingDatagram = 10185,
25311    AtomSatelliteProvision = 10186,
25312    AtomSatelliteSosMessageRecommender = 10187,
25313    AtomCarrierRoamingSatelliteSession = 10211,
25314    AtomCarrierRoamingSatelliteControllerStats = 10212,
25315    AtomControllerStatsPerPackage = 10213,
25316    AtomSatelliteEntitlement = 10214,
25317    AtomSatelliteConfigUpdater = 10215,
25318    AtomSatelliteAccessController = 10219,
25319    AtomCellularIdentifierDisclosed = 800,
25320    AtomThreadnetworkTelemetryDataReported = 738,
25321    AtomThreadnetworkTopoEntryRepeated = 739,
25322    AtomThreadnetworkDeviceInfoReported = 740,
25323    AtomBootIntegrityInfoReported = 775,
25324    AtomTvLowPowerStandbyPolicy = 679,
25325    AtomExternalTvInputEvent = 717,
25326    AtomTestUprobestatsAtomReported = 915,
25327    AtomUwbActivityInfo = 10188,
25328    AtomMediatorUpdated = 721,
25329    AtomSysproxyBluetoothBytesTransfer = 10196,
25330    AtomSysproxyConnectionUpdated = 786,
25331    AtomWearCompanionConnectionState = 921,
25332    AtomMediaActionReported = 608,
25333    AtomMediaControlsLaunched = 609,
25334    AtomMediaSessionStateChanged = 677,
25335    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
25336    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
25337    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
25338    AtomWearModeStateChanged = 715,
25339    AtomRendererInitialized = 736,
25340    AtomSchemaVersionReceived = 737,
25341    AtomLayoutInspected = 741,
25342    AtomLayoutExpressionInspected = 742,
25343    AtomLayoutAnimationsInspected = 743,
25344    AtomMaterialComponentsInspected = 744,
25345    AtomTileRequested = 745,
25346    AtomStateResponseReceived = 746,
25347    AtomTileResponseReceived = 747,
25348    AtomInflationFinished = 748,
25349    AtomInflationFailed = 749,
25350    AtomIgnoredInflationFailuresReported = 750,
25351    AtomDrawableRendered = 751,
25352    AtomWearTimeSyncRequested = 911,
25353    AtomWearTimeUpdateStarted = 912,
25354    AtomWearTimeSyncAttemptCompleted = 913,
25355    AtomWearTimeChanged = 914,
25356    AtomWearAdaptiveSuspendStatsReported = 619,
25357    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
25358    AtomWearPowerAnomalyServiceEventStatsReported = 621,
25359    AtomWsWearTimeSession = 610,
25360    AtomWsIncomingCallActionReported = 626,
25361    AtomWsCallDisconnectionReported = 627,
25362    AtomWsCallDurationReported = 628,
25363    AtomWsCallUserExperienceLatencyReported = 629,
25364    AtomWsCallInteractionReported = 630,
25365    AtomWsOnBodyStateChanged = 787,
25366    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
25367    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
25368    AtomWsComplicationsImpactedNotificationEventReported = 804,
25369    AtomWsRemoteEventUsageReported = 920,
25370    AtomWsBugreportRequested = 936,
25371    AtomWsBugreportTriggered = 937,
25372    AtomWsBugreportFinished = 938,
25373    AtomWsBugreportResultReceived = 939,
25374    AtomWsStandaloneModeSnapshot = 10197,
25375    AtomWsFavoriteWatchFaceSnapshot = 10206,
25376    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
25377    AtomWsWatchFaceCustomizationSnapshot = 10227,
25378    AtomWearPowerMenuOpened = 731,
25379    AtomWearAssistantOpened = 755,
25380    AtomFirstOverlayStateChanged = 917,
25381    AtomWifiAwareNdpReported = 638,
25382    AtomWifiAwareAttachReported = 639,
25383    AtomWifiSelfRecoveryTriggered = 661,
25384    AtomSoftApStarted = 680,
25385    AtomSoftApStopped = 681,
25386    AtomWifiLockReleased = 687,
25387    AtomWifiLockDeactivated = 688,
25388    AtomWifiConfigSaved = 689,
25389    AtomWifiAwareResourceUsingChanged = 690,
25390    AtomWifiAwareHalApiCalled = 691,
25391    AtomWifiLocalOnlyRequestReceived = 692,
25392    AtomWifiLocalOnlyRequestScanTriggered = 693,
25393    AtomWifiThreadTaskExecuted = 694,
25394    AtomWifiStateChanged = 700,
25395    AtomPnoScanStarted = 719,
25396    AtomPnoScanStopped = 720,
25397    AtomWifiIsUnusableReported = 722,
25398    AtomWifiApCapabilitiesReported = 723,
25399    AtomSoftApStateChanged = 805,
25400    AtomScorerPredictionResultReported = 884,
25401    AtomWifiAwareCapabilities = 10190,
25402    AtomWifiModuleInfo = 10193,
25403    AtomWifiSettingInfo = 10194,
25404    AtomWifiComplexSettingInfo = 10195,
25405    AtomWifiConfiguredNetworkInfo = 10198,
25406}
25407impl AtomId {
25408    /// String value of the enum field names used in the ProtoBuf definition.
25409    ///
25410    /// The values are not transformed in any way and thus are considered stable
25411    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25412    pub fn as_str_name(&self) -> &'static str {
25413        match self {
25414            AtomId::AtomUnspecified => "ATOM_UNSPECIFIED",
25415            AtomId::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
25416            AtomId::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
25417            AtomId::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
25418            AtomId::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
25419            AtomId::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
25420            AtomId::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
25421            AtomId::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
25422            AtomId::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
25423            AtomId::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
25424            AtomId::AtomLongPartialWakelockStateChanged => "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED",
25425            AtomId::AtomMobileRadioPowerStateChanged => "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED",
25426            AtomId::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
25427            AtomId::AtomActivityManagerSleepStateChanged => "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED",
25428            AtomId::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
25429            AtomId::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
25430            AtomId::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
25431            AtomId::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
25432            AtomId::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
25433            AtomId::AtomBatterySaverModeStateChanged => "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED",
25434            AtomId::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
25435            AtomId::AtomDeviceIdlingModeStateChanged => "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED",
25436            AtomId::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
25437            AtomId::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
25438            AtomId::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
25439            AtomId::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
25440            AtomId::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
25441            AtomId::AtomProcessLifeCycleStateChanged => "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED",
25442            AtomId::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
25443            AtomId::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
25444            AtomId::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
25445            AtomId::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
25446            AtomId::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
25447            AtomId::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
25448            AtomId::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
25449            AtomId::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
25450            AtomId::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
25451            AtomId::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
25452            AtomId::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
25453            AtomId::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
25454            AtomId::AtomSettingChanged => "ATOM_SETTING_CHANGED",
25455            AtomId::AtomActivityForegroundStateChanged => "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED",
25456            AtomId::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
25457            AtomId::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
25458            AtomId::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
25459            AtomId::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
25460            AtomId::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
25461            AtomId::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
25462            AtomId::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
25463            AtomId::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
25464            AtomId::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
25465            AtomId::AtomPictureInPictureStateChanged => "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED",
25466            AtomId::AtomWifiMulticastLockStateChanged => "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED",
25467            AtomId::AtomAppStartMemoryStateCaptured => "ATOM_APP_START_MEMORY_STATE_CAPTURED",
25468            AtomId::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
25469            AtomId::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
25470            AtomId::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
25471            AtomId::AtomForegroundServiceStateChanged => "ATOM_FOREGROUND_SERVICE_STATE_CHANGED",
25472            AtomId::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
25473            AtomId::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
25474            AtomId::AtomKeyguardBouncerStateChanged => "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED",
25475            AtomId::AtomKeyguardBouncerPasswordEntered => "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED",
25476            AtomId::AtomAppDied => "ATOM_APP_DIED",
25477            AtomId::AtomResourceConfigurationChanged => "ATOM_RESOURCE_CONFIGURATION_CHANGED",
25478            AtomId::AtomBluetoothEnabledStateChanged => "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED",
25479            AtomId::AtomBluetoothConnectionStateChanged => "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED",
25480            AtomId::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
25481            AtomId::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
25482            AtomId::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
25483            AtomId::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
25484            AtomId::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
25485            AtomId::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
25486            AtomId::AtomMobileConnectionStateChanged => "ATOM_MOBILE_CONNECTION_STATE_CHANGED",
25487            AtomId::AtomMobileRadioTechnologyChanged => "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED",
25488            AtomId::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
25489            AtomId::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
25490            AtomId::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
25491            AtomId::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
25492            AtomId::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
25493            AtomId::AtomGenericAtom => "ATOM_GENERIC_ATOM",
25494            AtomId::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
25495            AtomId::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
25496            AtomId::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
25497            AtomId::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
25498            AtomId::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
25499            AtomId::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
25500            AtomId::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
25501            AtomId::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
25502            AtomId::AtomSlowIo => "ATOM_SLOW_IO",
25503            AtomId::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
25504            AtomId::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
25505            AtomId::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
25506            AtomId::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
25507            AtomId::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
25508            AtomId::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
25509            AtomId::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
25510            AtomId::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
25511            AtomId::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
25512            AtomId::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
25513            AtomId::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
25514            AtomId::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
25515            AtomId::AtomDocsUiFileOpCopyMoveModeReported => "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED",
25516            AtomId::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
25517            AtomId::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
25518            AtomId::AtomDocsUiInvalidScopedAccessRequest => "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST",
25519            AtomId::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
25520            AtomId::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
25521            AtomId::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
25522            AtomId::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
25523            AtomId::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
25524            AtomId::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
25525            AtomId::AtomAppCompacted => "ATOM_APP_COMPACTED",
25526            AtomId::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
25527            AtomId::AtomDocsUiPickerLaunchedFromReported => "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED",
25528            AtomId::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
25529            AtomId::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
25530            AtomId::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
25531            AtomId::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
25532            AtomId::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
25533            AtomId::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
25534            AtomId::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
25535            AtomId::AtomBluetoothLinkLayerConnectionEvent => "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT",
25536            AtomId::AtomBluetoothAclConnectionStateChanged => "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED",
25537            AtomId::AtomBluetoothScoConnectionStateChanged => "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED",
25538            AtomId::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
25539            AtomId::AtomAppOptimizedAfterDowngraded => "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED",
25540            AtomId::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
25541            AtomId::AtomGnssNfwNotificationReported => "ATOM_GNSS_NFW_NOTIFICATION_REPORTED",
25542            AtomId::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
25543            AtomId::AtomUsbPortOverheatEventReported => "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED",
25544            AtomId::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
25545            AtomId::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
25546            AtomId::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
25547            AtomId::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
25548            AtomId::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
25549            AtomId::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
25550            AtomId::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
25551            AtomId::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
25552            AtomId::AtomBroadcastDispatchLatencyReported => "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED",
25553            AtomId::AtomAttentionManagerServiceResultReported => "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED",
25554            AtomId::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
25555            AtomId::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
25556            AtomId::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
25557            AtomId::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
25558            AtomId::AtomBiometricSystemHealthIssueDetected => "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED",
25559            AtomId::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
25560            AtomId::AtomScheduledJobConstraintChanged => "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED",
25561            AtomId::AtomBluetoothActiveDeviceChanged => "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED",
25562            AtomId::AtomBluetoothA2dpPlaybackStateChanged => "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED",
25563            AtomId::AtomBluetoothA2dpCodecConfigChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED",
25564            AtomId::AtomBluetoothA2dpCodecCapabilityChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED",
25565            AtomId::AtomBluetoothA2dpAudioUnderrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED",
25566            AtomId::AtomBluetoothA2dpAudioOverrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED",
25567            AtomId::AtomBluetoothDeviceRssiReported => "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED",
25568            AtomId::AtomBluetoothDeviceFailedContactCounterReported => "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED",
25569            AtomId::AtomBluetoothDeviceTxPowerLevelReported => "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED",
25570            AtomId::AtomBluetoothHciTimeoutReported => "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED",
25571            AtomId::AtomBluetoothQualityReportReported => "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED",
25572            AtomId::AtomBluetoothDeviceInfoReported => "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED",
25573            AtomId::AtomBluetoothRemoteVersionInfoReported => "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED",
25574            AtomId::AtomBluetoothSdpAttributeReported => "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED",
25575            AtomId::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
25576            AtomId::AtomBluetoothClassicPairingEventReported => "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED",
25577            AtomId::AtomBluetoothSmpPairingEventReported => "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED",
25578            AtomId::AtomScreenTimeoutExtensionReported => "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED",
25579            AtomId::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
25580            AtomId::AtomPermissionGrantRequestResultReported => "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED",
25581            AtomId::AtomBluetoothSocketConnectionStateChanged => "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED",
25582            AtomId::AtomDeviceIdentifierAccessDenied => "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED",
25583            AtomId::AtomBubbleDeveloperErrorReported => "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED",
25584            AtomId::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
25585            AtomId::AtomAssistGestureFeedbackReported => "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED",
25586            AtomId::AtomAssistGestureProgressReported => "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED",
25587            AtomId::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
25588            AtomId::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
25589            AtomId::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
25590            AtomId::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
25591            AtomId::AtomAppInstallOnExternalStorageReported => "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED",
25592            AtomId::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
25593            AtomId::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
25594            AtomId::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
25595            AtomId::AtomSystemServerWatchdogOccurred => "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED",
25596            AtomId::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
25597            AtomId::AtomBluetoothClassOfDeviceReported => "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED",
25598            AtomId::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
25599            AtomId::AtomThermalThrottlingSeverityStateChanged => "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED",
25600            AtomId::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
25601            AtomId::AtomMediametricsAudiopolicyReported => "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED",
25602            AtomId::AtomMediametricsAudiorecordReported => "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED",
25603            AtomId::AtomMediametricsAudiothreadReported => "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED",
25604            AtomId::AtomMediametricsAudiotrackReported => "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED",
25605            AtomId::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
25606            AtomId::AtomMediametricsDrmWidevineReported => "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED",
25607            AtomId::AtomMediametricsExtractorReported => "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED",
25608            AtomId::AtomMediametricsMediadrmReported => "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED",
25609            AtomId::AtomMediametricsNuplayerReported => "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED",
25610            AtomId::AtomMediametricsRecorderReported => "ATOM_MEDIAMETRICS_RECORDER_REPORTED",
25611            AtomId::AtomMediametricsDrmmanagerReported => "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED",
25612            AtomId::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
25613            AtomId::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
25614            AtomId::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
25615            AtomId::AtomContentCaptureCallerMismatchReported => "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED",
25616            AtomId::AtomContentCaptureServiceEvents => "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS",
25617            AtomId::AtomContentCaptureSessionEvents => "ATOM_CONTENT_CAPTURE_SESSION_EVENTS",
25618            AtomId::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
25619            AtomId::AtomLocationManagerApiUsageReported => "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED",
25620            AtomId::AtomReviewPermissionsFragmentResultReported => "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED",
25621            AtomId::AtomRuntimePermissionsUpgradeResult => "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT",
25622            AtomId::AtomGrantPermissionsActivityButtonActions => "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS",
25623            AtomId::AtomLocationAccessCheckNotificationAction => "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION",
25624            AtomId::AtomAppPermissionFragmentActionReported => "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED",
25625            AtomId::AtomAppPermissionFragmentViewed => "ATOM_APP_PERMISSION_FRAGMENT_VIEWED",
25626            AtomId::AtomAppPermissionsFragmentViewed => "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED",
25627            AtomId::AtomPermissionAppsFragmentViewed => "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED",
25628            AtomId::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
25629            AtomId::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
25630            AtomId::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
25631            AtomId::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
25632            AtomId::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
25633            AtomId::AtomBackGestureReportedReported => "ATOM_BACK_GESTURE_REPORTED_REPORTED",
25634            AtomId::AtomUpdateEngineUpdateAttemptReported => "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED",
25635            AtomId::AtomUpdateEngineSuccessfulUpdateReported => "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED",
25636            AtomId::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
25637            AtomId::AtomAppCompatibilityChangeReported => "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED",
25638            AtomId::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
25639            AtomId::AtomVmsClientConnectionStateChanged => "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED",
25640            AtomId::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
25641            AtomId::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
25642            AtomId::AtomMediaProviderPermissionRequested => "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED",
25643            AtomId::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
25644            AtomId::AtomMediaProviderIdleMaintenanceFinished => "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED",
25645            AtomId::AtomRebootEscrowRecoveryReported => "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED",
25646            AtomId::AtomBootTimeEventDurationReported => "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED",
25647            AtomId::AtomBootTimeEventElapsedTimeReported => "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED",
25648            AtomId::AtomBootTimeEventUtcTimeReported => "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED",
25649            AtomId::AtomBootTimeEventErrorCodeReported => "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED",
25650            AtomId::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
25651            AtomId::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
25652            AtomId::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
25653            AtomId::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
25654            AtomId::AtomIntegrityCheckResultReported => "ATOM_INTEGRITY_CHECK_RESULT_REPORTED",
25655            AtomId::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
25656            AtomId::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
25657            AtomId::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
25658            AtomId::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
25659            AtomId::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
25660            AtomId::AtomWifiConnectionResultReported => "ATOM_WIFI_CONNECTION_RESULT_REPORTED",
25661            AtomId::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
25662            AtomId::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
25663            AtomId::AtomForegroundServiceAppOpSessionEnded => "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED",
25664            AtomId::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
25665            AtomId::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
25666            AtomId::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
25667            AtomId::AtomRankingSelected => "ATOM_RANKING_SELECTED",
25668            AtomId::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
25669            AtomId::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
25670            AtomId::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
25671            AtomId::AtomUserLifecycleJourneyReported => "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED",
25672            AtomId::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
25673            AtomId::AtomAccessibilityShortcutReported => "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED",
25674            AtomId::AtomAccessibilityServiceReported => "ATOM_ACCESSIBILITY_SERVICE_REPORTED",
25675            AtomId::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
25676            AtomId::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
25677            AtomId::AtomAutoRevokeNotificationClicked => "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED",
25678            AtomId::AtomAutoRevokeFragmentAppViewed => "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED",
25679            AtomId::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
25680            AtomId::AtomAppPermissionGroupsFragmentAutoRevokeAction => "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION",
25681            AtomId::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
25682            AtomId::AtomAudioPowerUsageDataReported => "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED",
25683            AtomId::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
25684            AtomId::AtomMediaoutputOpSwitchReported => "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED",
25685            AtomId::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
25686            AtomId::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
25687            AtomId::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
25688            AtomId::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
25689            AtomId::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
25690            AtomId::AtomCarUserHalModifyUserRequestReported => "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED",
25691            AtomId::AtomCarUserHalModifyUserResponseReported => "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED",
25692            AtomId::AtomCarUserHalPostSwitchResponseReported => "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED",
25693            AtomId::AtomCarUserHalInitialUserInfoRequestReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED",
25694            AtomId::AtomCarUserHalInitialUserInfoResponseReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED",
25695            AtomId::AtomCarUserHalUserAssociationRequestReported => "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED",
25696            AtomId::AtomCarUserHalSetUserAssociationResponseReported => "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED",
25697            AtomId::AtomNetworkIpProvisioningReported => "ATOM_NETWORK_IP_PROVISIONING_REPORTED",
25698            AtomId::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
25699            AtomId::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
25700            AtomId::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
25701            AtomId::AtomMediametricsAudiorecorddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED",
25702            AtomId::AtomMediametricsAudiothreaddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED",
25703            AtomId::AtomMediametricsAudiotrackdeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED",
25704            AtomId::AtomMediametricsAudiodeviceconnectionReported => "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED",
25705            AtomId::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
25706            AtomId::AtomBlobLeased => "ATOM_BLOB_LEASED",
25707            AtomId::AtomBlobOpened => "ATOM_BLOB_OPENED",
25708            AtomId::AtomContactsProviderStatusReported => "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED",
25709            AtomId::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
25710            AtomId::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
25711            AtomId::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
25712            AtomId::AtomUiInteractionFrameInfoReported => "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED",
25713            AtomId::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
25714            AtomId::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
25715            AtomId::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
25716            AtomId::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
25717            AtomId::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
25718            AtomId::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
25719            AtomId::AtomModemRestart => "ATOM_MODEM_RESTART",
25720            AtomId::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
25721            AtomId::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
25722            AtomId::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
25723            AtomId::AtomMediametricsMediaparserReported => "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED",
25724            AtomId::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
25725            AtomId::AtomTextClassifierApiUsageReported => "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED",
25726            AtomId::AtomCarWatchdogKillStatsReported => "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED",
25727            AtomId::AtomMediametricsPlaybackReported => "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED",
25728            AtomId::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
25729            AtomId::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
25730            AtomId::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
25731            AtomId::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
25732            AtomId::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
25733            AtomId::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
25734            AtomId::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
25735            AtomId::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
25736            AtomId::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
25737            AtomId::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
25738            AtomId::AtomImsServiceEntitlementUpdated => "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED",
25739            AtomId::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
25740            AtomId::AtomSimSpecificSettingsRestored => "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED",
25741            AtomId::AtomTextClassifierDownloadReported => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED",
25742            AtomId::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
25743            AtomId::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
25744            AtomId::AtomBluetoothHalCrashReasonReported => "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED",
25745            AtomId::AtomRebootEscrowPreparationReported => "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED",
25746            AtomId::AtomRebootEscrowLskfCaptureReported => "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED",
25747            AtomId::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
25748            AtomId::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
25749            AtomId::AtomMediametricsAaudiostreamReported => "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED",
25750            AtomId::AtomMediaTranscodingSessionEnded => "ATOM_MEDIA_TRANSCODING_SESSION_ENDED",
25751            AtomId::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
25752            AtomId::AtomMagnificationModeWithImeOnReported => "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED",
25753            AtomId::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
25754            AtomId::AtomAppSearchPutDocumentStatsReported => "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED",
25755            AtomId::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
25756            AtomId::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
25757            AtomId::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
25758            AtomId::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
25759            AtomId::AtomAuthPromptAuthenticateInvoked => "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED",
25760            AtomId::AtomAuthManagerCanAuthenticateInvoked => "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED",
25761            AtomId::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
25762            AtomId::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
25763            AtomId::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
25764            AtomId::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
25765            AtomId::AtomLocationTimeZoneProviderStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED",
25766            AtomId::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
25767            AtomId::AtomTimeoutAutoExtendedReported => "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED",
25768            AtomId::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
25769            AtomId::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
25770            AtomId::AtomCarWatchdogIoOveruseStatsReported => "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED",
25771            AtomId::AtomUserLevelHibernationStateChanged => "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED",
25772            AtomId::AtomAppSearchInitializeStatsReported => "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED",
25773            AtomId::AtomAppSearchQueryStatsReported => "ATOM_APP_SEARCH_QUERY_STATS_REPORTED",
25774            AtomId::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
25775            AtomId::AtomNetworkIpReachabilityMonitorReported => "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED",
25776            AtomId::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
25777            AtomId::AtomAnrOccurredProcessingStarted => "ATOM_ANR_OCCURRED_PROCESSING_STARTED",
25778            AtomId::AtomAppSearchRemoveStatsReported => "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED",
25779            AtomId::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
25780            AtomId::AtomPermissionUsageFragmentInteraction => "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION",
25781            AtomId::AtomPermissionDetailsInteraction => "ATOM_PERMISSION_DETAILS_INTERACTION",
25782            AtomId::AtomPrivacySensorToggleInteraction => "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION",
25783            AtomId::AtomPrivacyToggleDialogInteraction => "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION",
25784            AtomId::AtomAppSearchOptimizeStatsReported => "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED",
25785            AtomId::AtomNonA11yToolServiceWarningReport => "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT",
25786            AtomId::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
25787            AtomId::AtomSizeCompatRestartButtonEventReported => "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED",
25788            AtomId::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
25789            AtomId::AtomNetworkDnsHandshakeReported => "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED",
25790            AtomId::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
25791            AtomId::AtomBluetoothLeBatchScanReportDelay => "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY",
25792            AtomId::AtomAccessibilityFloatingMenuUiChanged => "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED",
25793            AtomId::AtomNeuralnetworksCompilationCompleted => "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED",
25794            AtomId::AtomNeuralnetworksExecutionCompleted => "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED",
25795            AtomId::AtomNeuralnetworksCompilationFailed => "ATOM_NEURALNETWORKS_COMPILATION_FAILED",
25796            AtomId::AtomNeuralnetworksExecutionFailed => "ATOM_NEURALNETWORKS_EXECUTION_FAILED",
25797            AtomId::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
25798            AtomId::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
25799            AtomId::AtomContextHubLoadedNanoappSnapshotReported => "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED",
25800            AtomId::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
25801            AtomId::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
25802            AtomId::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
25803            AtomId::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
25804            AtomId::AtomUwbRangingMeasurementReceived => "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED",
25805            AtomId::AtomTextClassifierDownloadWorkScheduled => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED",
25806            AtomId::AtomTextClassifierDownloadWorkCompleted => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED",
25807            AtomId::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
25808            AtomId::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
25809            AtomId::AtomNearbyDeviceScanStateChanged => "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED",
25810            AtomId::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
25811            AtomId::AtomMediametricsAudiotrackstatusReported => "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED",
25812            AtomId::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
25813            AtomId::AtomLocationTimeZoneProviderControllerStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED",
25814            AtomId::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
25815            AtomId::AtomDisplayHbmBrightnessChanged => "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED",
25816            AtomId::AtomPersistentUriPermissionsFlushed => "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED",
25817            AtomId::AtomEarlyBootCompOsArtifactsCheckReported => "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED",
25818            AtomId::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
25819            AtomId::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
25820            AtomId::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
25821            AtomId::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
25822            AtomId::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
25823            AtomId::AtomMediametricsAudiorecordstatusReported => "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED",
25824            AtomId::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
25825            AtomId::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
25826            AtomId::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
25827            AtomId::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
25828            AtomId::AtomHotwordDetectorCreateRequested => "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED",
25829            AtomId::AtomHotwordDetectionServiceInitResultReported => "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED",
25830            AtomId::AtomHotwordDetectionServiceRestarted => "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED",
25831            AtomId::AtomHotwordDetectorKeyphraseTriggered => "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED",
25832            AtomId::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
25833            AtomId::AtomBootCompletedBroadcastCompletionLatencyReported => "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED",
25834            AtomId::AtomContactsIndexerUpdateStatsReported => "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED",
25835            AtomId::AtomAppBackgroundRestrictionsInfo => "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO",
25836            AtomId::AtomMmsSmsProviderGetThreadIdFailed => "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED",
25837            AtomId::AtomMmsSmsDatabaseHelperOnUpgradeFailed => "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED",
25838            AtomId::AtomPermissionReminderNotificationInteracted => "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED",
25839            AtomId::AtomRecentPermissionDecisionsInteracted => "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED",
25840            AtomId::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
25841            AtomId::AtomLeAudioConnectionSessionReported => "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED",
25842            AtomId::AtomLeAudioBroadcastSessionReported => "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED",
25843            AtomId::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
25844            AtomId::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
25845            AtomId::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
25846            AtomId::AtomMagnificationTripleTapAndHoldActivatedSessionReported => "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED",
25847            AtomId::AtomMagnificationFollowTypingFocusActivatedSessionReported => "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED",
25848            AtomId::AtomAccessibilityTextReadingOptionsChanged => "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED",
25849            AtomId::AtomWifiSetupFailureCrashReported => "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED",
25850            AtomId::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
25851            AtomId::AtomIsolatedCompilationScheduled => "ATOM_ISOLATED_COMPILATION_SCHEDULED",
25852            AtomId::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
25853            AtomId::AtomOnsOpportunisticEsimProvisioningComplete => "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE",
25854            AtomId::AtomSystemServerPreWatchdogOccurred => "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED",
25855            AtomId::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
25856            AtomId::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
25857            AtomId::AtomRemoteKeyProvisioningAttempt => "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT",
25858            AtomId::AtomRemoteKeyProvisioningNetworkInfo => "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO",
25859            AtomId::AtomRemoteKeyProvisioningTiming => "ATOM_REMOTE_KEY_PROVISIONING_TIMING",
25860            AtomId::AtomMediaoutputOpInteractionReport => "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT",
25861            AtomId::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
25862            AtomId::AtomAutofillPresentationEventReported => "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED",
25863            AtomId::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
25864            AtomId::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
25865            AtomId::AtomSafetyCenterSystemEventReported => "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED",
25866            AtomId::AtomSafetyCenterInteractionReported => "ATOM_SAFETY_CENTER_INTERACTION_REPORTED",
25867            AtomId::AtomSettingsProviderSettingChanged => "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED",
25868            AtomId::AtomBroadcastDeliveryEventReported => "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED",
25869            AtomId::AtomServiceRequestEventReported => "ATOM_SERVICE_REQUEST_EVENT_REPORTED",
25870            AtomId::AtomProviderAcquisitionEventReported => "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED",
25871            AtomId::AtomBluetoothDeviceNameReported => "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED",
25872            AtomId::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
25873            AtomId::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
25874            AtomId::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
25875            AtomId::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
25876            AtomId::AtomPrivacySignalNotificationInteraction => "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION",
25877            AtomId::AtomPrivacySignalIssueCardInteraction => "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION",
25878            AtomId::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
25879            AtomId::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
25880            AtomId::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
25881            AtomId::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
25882            AtomId::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
25883            AtomId::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
25884            AtomId::AtomNetworkDnsServerSupportReported => "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED",
25885            AtomId::AtomVmBooted => "ATOM_VM_BOOTED",
25886            AtomId::AtomVmExited => "ATOM_VM_EXITED",
25887            AtomId::AtomAmbientBrightnessStatsReported => "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED",
25888            AtomId::AtomMediametricsSpatializercapabilitiesReported => "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED",
25889            AtomId::AtomMediametricsSpatializerdeviceenabledReported => "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED",
25890            AtomId::AtomMediametricsHeadtrackerdeviceenabledReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED",
25891            AtomId::AtomMediametricsHeadtrackerdevicesupportedReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED",
25892            AtomId::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
25893            AtomId::AtomDeviceWideJobConstraintChanged => "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED",
25894            AtomId::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
25895            AtomId::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
25896            AtomId::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
25897            AtomId::AtomSystemDefaultNetworkChanged => "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED",
25898            AtomId::AtomIwlanSetupDataCallResultReported => "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED",
25899            AtomId::AtomIwlanPdnDisconnectedReasonReported => "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED",
25900            AtomId::AtomAirplaneModeSessionReported => "ATOM_AIRPLANE_MODE_SESSION_REPORTED",
25901            AtomId::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
25902            AtomId::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
25903            AtomId::AtomPackageInstallationSessionReported => "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED",
25904            AtomId::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
25905            AtomId::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
25906            AtomId::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
25907            AtomId::AtomBluetoothDisconnectionReasonReported => "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED",
25908            AtomId::AtomBluetoothLocalVersionsReported => "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED",
25909            AtomId::AtomBluetoothRemoteSupportedFeaturesReported => "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED",
25910            AtomId::AtomBluetoothLocalSupportedFeaturesReported => "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED",
25911            AtomId::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
25912            AtomId::AtomBrightnessConfigurationUpdated => "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED",
25913            AtomId::AtomWearMediaOutputSwitcherLaunched => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED",
25914            AtomId::AtomWearMediaOutputSwitcherFinished => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED",
25915            AtomId::AtomWearMediaOutputSwitcherConnectionReported => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED",
25916            AtomId::AtomWearMediaOutputSwitcherDeviceScanTriggered => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED",
25917            AtomId::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY",
25918            AtomId::AtomWearMediaOutputSwitcherConnectDeviceLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY",
25919            AtomId::AtomPackageManagerSnapshotReported => "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED",
25920            AtomId::AtomPackageManagerAppsFilterCacheBuildReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED",
25921            AtomId::AtomPackageManagerAppsFilterCacheUpdateReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED",
25922            AtomId::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
25923            AtomId::AtomWearMediaOutputSwitcherAllDevicesScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY",
25924            AtomId::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
25925            AtomId::AtomWsWatchFaceFavoriteActionReported => "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED",
25926            AtomId::AtomWsWatchFaceSetActionReported => "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED",
25927            AtomId::AtomPackageUninstallationReported => "ATOM_PACKAGE_UNINSTALLATION_REPORTED",
25928            AtomId::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
25929            AtomId::AtomGameModeConfigurationChanged => "ATOM_GAME_MODE_CONFIGURATION_CHANGED",
25930            AtomId::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
25931            AtomId::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
25932            AtomId::AtomNetworkSliceDailyDataUsageReported => "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED",
25933            AtomId::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
25934            AtomId::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
25935            AtomId::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
25936            AtomId::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
25937            AtomId::AtomGetTypeAccessedWithoutPermission => "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION",
25938            AtomId::AtomMobileBundledAppInfoGathered => "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED",
25939            AtomId::AtomWsWatchFaceComplicationSetChanged => "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED",
25940            AtomId::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
25941            AtomId::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
25942            AtomId::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
25943            AtomId::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
25944            AtomId::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
25945            AtomId::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
25946            AtomId::AtomPerformanceHintSessionReported => "ATOM_PERFORMANCE_HINT_SESSION_REPORTED",
25947            AtomId::AtomMediametricsMidiDeviceCloseReported => "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED",
25948            AtomId::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
25949            AtomId::AtomHotwordAudioEgressEventReported => "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED",
25950            AtomId::AtomLocationEnabledStateChanged => "ATOM_LOCATION_ENABLED_STATE_CHANGED",
25951            AtomId::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
25952            AtomId::AtomUsbComplianceWarningsReported => "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED",
25953            AtomId::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
25954            AtomId::AtomMediaProviderVolumeRecoveryReported => "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED",
25955            AtomId::AtomBiometricPropertiesCollected => "ATOM_BIOMETRIC_PROPERTIES_COLLECTED",
25956            AtomId::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
25957            AtomId::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
25958            AtomId::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
25959            AtomId::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
25960            AtomId::AtomDeviceLogAccessEventReported => "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED",
25961            AtomId::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
25962            AtomId::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
25963            AtomId::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
25964            AtomId::AtomNetworkValidationFailureStatsDailyReported => "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED",
25965            AtomId::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
25966            AtomId::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
25967            AtomId::AtomWsNotificationBridgemodeUpdated => "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED",
25968            AtomId::AtomWsNotificationDismissalActioned => "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED",
25969            AtomId::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
25970            AtomId::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
25971            AtomId::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
25972            AtomId::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
25973            AtomId::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
25974            AtomId::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
25975            AtomId::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
25976            AtomId::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
25977            AtomId::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
25978            AtomId::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
25979            AtomId::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
25980            AtomId::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
25981            AtomId::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
25982            AtomId::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
25983            AtomId::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
25984            AtomId::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
25985            AtomId::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
25986            AtomId::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
25987            AtomId::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
25988            AtomId::AtomDiskSpace => "ATOM_DISK_SPACE",
25989            AtomId::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
25990            AtomId::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
25991            AtomId::AtomTemperature => "ATOM_TEMPERATURE",
25992            AtomId::AtomBinderCalls => "ATOM_BINDER_CALLS",
25993            AtomId::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
25994            AtomId::AtomLooperStats => "ATOM_LOOPER_STATS",
25995            AtomId::AtomDiskStats => "ATOM_DISK_STATS",
25996            AtomId::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
25997            AtomId::AtomAppSize => "ATOM_APP_SIZE",
25998            AtomId::AtomCategorySize => "ATOM_CATEGORY_SIZE",
25999            AtomId::AtomProcStats => "ATOM_PROC_STATS",
26000            AtomId::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
26001            AtomId::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
26002            AtomId::AtomDiskIo => "ATOM_DISK_IO",
26003            AtomId::AtomPowerProfile => "ATOM_POWER_PROFILE",
26004            AtomId::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
26005            AtomId::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
26006            AtomId::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
26007            AtomId::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
26008            AtomId::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
26009            AtomId::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
26010            AtomId::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
26011            AtomId::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
26012            AtomId::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
26013            AtomId::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
26014            AtomId::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
26015            AtomId::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
26016            AtomId::AtomRoleHolder => "ATOM_ROLE_HOLDER",
26017            AtomId::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
26018            AtomId::AtomTrainInfo => "ATOM_TRAIN_INFO",
26019            AtomId::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
26020            AtomId::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
26021            AtomId::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
26022            AtomId::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
26023            AtomId::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
26024            AtomId::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
26025            AtomId::AtomFaceSettings => "ATOM_FACE_SETTINGS",
26026            AtomId::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
26027            AtomId::AtomAppOps => "ATOM_APP_OPS",
26028            AtomId::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
26029            AtomId::AtomSurfaceflingerStatsGlobalInfo => "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO",
26030            AtomId::AtomSurfaceflingerStatsLayerInfo => "ATOM_SURFACEFLINGER_STATS_LAYER_INFO",
26031            AtomId::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
26032            AtomId::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
26033            AtomId::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
26034            AtomId::AtomDangerousPermissionStateSampled => "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED",
26035            AtomId::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
26036            AtomId::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
26037            AtomId::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
26038            AtomId::AtomPackageNotificationPreferences => "ATOM_PACKAGE_NOTIFICATION_PREFERENCES",
26039            AtomId::AtomPackageNotificationChannelPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES",
26040            AtomId::AtomPackageNotificationChannelGroupPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES",
26041            AtomId::AtomGnssStats => "ATOM_GNSS_STATS",
26042            AtomId::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
26043            AtomId::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
26044            AtomId::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
26045            AtomId::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
26046            AtomId::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
26047            AtomId::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
26048            AtomId::AtomBlobInfo => "ATOM_BLOB_INFO",
26049            AtomId::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
26050            AtomId::AtomBytesTransferByTagAndMetered => "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED",
26051            AtomId::AtomDndModeRule => "ATOM_DND_MODE_RULE",
26052            AtomId::AtomGeneralExternalStorageAccessStats => "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS",
26053            AtomId::AtomIncomingSms => "ATOM_INCOMING_SMS",
26054            AtomId::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
26055            AtomId::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
26056            AtomId::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
26057            AtomId::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
26058            AtomId::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
26059            AtomId::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
26060            AtomId::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
26061            AtomId::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
26062            AtomId::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
26063            AtomId::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
26064            AtomId::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
26065            AtomId::AtomCpuCyclesPerThreadGroupCluster => "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER",
26066            AtomId::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
26067            AtomId::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
26068            AtomId::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
26069            AtomId::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
26070            AtomId::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
26071            AtomId::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
26072            AtomId::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
26073            AtomId::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
26074            AtomId::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
26075            AtomId::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
26076            AtomId::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
26077            AtomId::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
26078            AtomId::AtomBatteryUsageStatsBeforeReset => "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET",
26079            AtomId::AtomBatteryUsageStatsSinceReset => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET",
26080            AtomId::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL",
26081            AtomId::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
26082            AtomId::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
26083            AtomId::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
26084            AtomId::AtomVmstat => "ATOM_VMSTAT",
26085            AtomId::AtomKeystore2KeyCreationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO",
26086            AtomId::AtomKeystore2KeyCreationWithAuthInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO",
26087            AtomId::AtomKeystore2KeyCreationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO",
26088            AtomId::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
26089            AtomId::AtomKeystore2KeyOperationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO",
26090            AtomId::AtomKeystore2KeyOperationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO",
26091            AtomId::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
26092            AtomId::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
26093            AtomId::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
26094            AtomId::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
26095            AtomId::AtomAccessibilityFloatingMenuStats => "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS",
26096            AtomId::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
26097            AtomId::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
26098            AtomId::AtomCarWatchdogSystemIoUsageSummary => "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY",
26099            AtomId::AtomCarWatchdogUidIoUsageSummary => "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY",
26100            AtomId::AtomImsRegistrationFeatureTagStats => "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS",
26101            AtomId::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
26102            AtomId::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
26103            AtomId::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
26104            AtomId::AtomSipTransportFeatureTagStats => "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS",
26105            AtomId::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
26106            AtomId::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
26107            AtomId::AtomImsDedicatedBearerListenerEvent => "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT",
26108            AtomId::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
26109            AtomId::AtomImsRegistrationServiceDescStats => "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS",
26110            AtomId::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
26111            AtomId::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
26112            AtomId::AtomGbaEvent => "ATOM_GBA_EVENT",
26113            AtomId::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
26114            AtomId::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
26115            AtomId::AtomPersistentUriPermissionsAmountPerPackage => "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE",
26116            AtomId::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
26117            AtomId::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
26118            AtomId::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
26119            AtomId::AtomUserInfo => "ATOM_USER_INFO",
26120            AtomId::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
26121            AtomId::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
26122            AtomId::AtomRemoteKeyProvisioningErrorCounts => "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS",
26123            AtomId::AtomSafetyState => "ATOM_SAFETY_STATE",
26124            AtomId::AtomIncomingMms => "ATOM_INCOMING_MMS",
26125            AtomId::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
26126            AtomId::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
26127            AtomId::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
26128            AtomId::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
26129            AtomId::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
26130            AtomId::AtomNetworkSelectionRematchReasonsInfo => "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO",
26131            AtomId::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
26132            AtomId::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
26133            AtomId::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
26134            AtomId::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
26135            AtomId::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
26136            AtomId::AtomWsActiveWatchFaceComplicationSetSnapshot => "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT",
26137            AtomId::AtomProcessState => "ATOM_PROCESS_STATE",
26138            AtomId::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
26139            AtomId::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
26140            AtomId::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
26141            AtomId::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
26142            AtomId::AtomWsFavouriteWatchFaceListSnapshot => "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT",
26143            AtomId::AtomAccessibilityCheckResultReported => "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED",
26144            AtomId::AtomAdaptiveAuthUnlockAfterLockReported => "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED",
26145            AtomId::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
26146            AtomId::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
26147            AtomId::AtomThermalHeadroomThresholdsCalled => "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED",
26148            AtomId::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
26149            AtomId::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
26150            AtomId::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
26151            AtomId::AtomJsscriptengineLatencyReported => "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED",
26152            AtomId::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
26153            AtomId::AtomAdServicesMesurementReportsUploaded => "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED",
26154            AtomId::AtomMobileDataDownloadFileGroupStatusReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED",
26155            AtomId::AtomMobileDataDownloadDownloadResultReported => "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED",
26156            AtomId::AtomAdServicesSettingsUsageReported => "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED",
26157            AtomId::AtomBackgroundFetchProcessReported => "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED",
26158            AtomId::AtomUpdateCustomAudienceProcessReported => "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED",
26159            AtomId::AtomRunAdBiddingProcessReported => "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED",
26160            AtomId::AtomRunAdScoringProcessReported => "ATOM_RUN_AD_SCORING_PROCESS_REPORTED",
26161            AtomId::AtomRunAdSelectionProcessReported => "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED",
26162            AtomId::AtomRunAdBiddingPerCaProcessReported => "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED",
26163            AtomId::AtomMobileDataDownloadFileGroupStorageStatsReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED",
26164            AtomId::AtomAdServicesMeasurementRegistrations => "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS",
26165            AtomId::AtomAdServicesGetTopicsReported => "ATOM_AD_SERVICES_GET_TOPICS_REPORTED",
26166            AtomId::AtomAdServicesEpochComputationGetTopTopicsReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED",
26167            AtomId::AtomAdServicesEpochComputationClassifierReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
26168            AtomId::AtomAdServicesBackCompatGetTopicsReported => "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED",
26169            AtomId::AtomAdServicesBackCompatEpochComputationClassifierReported => "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
26170            AtomId::AtomAdServicesMeasurementDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS",
26171            AtomId::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
26172            AtomId::AtomAdServicesBackgroundJobsExecutionReported => "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED",
26173            AtomId::AtomAdServicesMeasurementDelayedSourceRegistration => "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION",
26174            AtomId::AtomAdServicesMeasurementAttribution => "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION",
26175            AtomId::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
26176            AtomId::AtomAdServicesMeasurementWipeout => "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT",
26177            AtomId::AtomAdServicesMeasurementAdIdMatchForDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS",
26178            AtomId::AtomAdServicesEnrollmentDataStored => "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED",
26179            AtomId::AtomAdServicesEnrollmentFileDownloaded => "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED",
26180            AtomId::AtomAdServicesEnrollmentMatched => "ATOM_AD_SERVICES_ENROLLMENT_MATCHED",
26181            AtomId::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
26182            AtomId::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
26183            AtomId::AtomAdServicesMeasurementClickVerification => "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION",
26184            AtomId::AtomAdServicesEncryptionKeyFetched => "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED",
26185            AtomId::AtomAdServicesEncryptionKeyDbTransactionEnded => "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED",
26186            AtomId::AtomDestinationRegisteredBeacons => "ATOM_DESTINATION_REGISTERED_BEACONS",
26187            AtomId::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
26188            AtomId::AtomInteractionReportingTableCleared => "ATOM_INTERACTION_REPORTING_TABLE_CLEARED",
26189            AtomId::AtomAppManifestConfigHelperCalled => "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED",
26190            AtomId::AtomAdFilteringProcessJoinCaReported => "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED",
26191            AtomId::AtomAdFilteringProcessAdSelectionReported => "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED",
26192            AtomId::AtomAdCounterHistogramUpdaterReported => "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED",
26193            AtomId::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
26194            AtomId::AtomKAnonImmediateSignJoinStatusReported => "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED",
26195            AtomId::AtomKAnonBackgroundJobStatusReported => "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED",
26196            AtomId::AtomKAnonInitializeStatusReported => "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED",
26197            AtomId::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
26198            AtomId::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
26199            AtomId::AtomKAnonKeyAttestationStatusReported => "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED",
26200            AtomId::AtomGetAdSelectionDataApiCalled => "ATOM_GET_AD_SELECTION_DATA_API_CALLED",
26201            AtomId::AtomGetAdSelectionDataBuyerInputGenerated => "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED",
26202            AtomId::AtomBackgroundJobSchedulingReported => "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED",
26203            AtomId::AtomTopicsEncryptionEpochComputationReported => "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED",
26204            AtomId::AtomTopicsEncryptionGetTopicsReported => "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED",
26205            AtomId::AtomAdservicesShellCommandCalled => "ATOM_ADSERVICES_SHELL_COMMAND_CALLED",
26206            AtomId::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
26207            AtomId::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
26208            AtomId::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
26209            AtomId::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
26210            AtomId::AtomPersistAdSelectionResultCalled => "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED",
26211            AtomId::AtomServerAuctionKeyFetchCalled => "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED",
26212            AtomId::AtomServerAuctionBackgroundKeyFetchEnabled => "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED",
26213            AtomId::AtomAdServicesMeasurementProcessOdpRegistration => "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION",
26214            AtomId::AtomAdServicesMeasurementNotifyRegistrationToOdp => "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP",
26215            AtomId::AtomSelectAdsFromOutcomesApiCalled => "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED",
26216            AtomId::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
26217            AtomId::AtomAdServicesEnrollmentTransactionStats => "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS",
26218            AtomId::AtomAdServicesCobaltLoggerEventReported => "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED",
26219            AtomId::AtomAdServicesCobaltPeriodicJobEventReported => "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED",
26220            AtomId::AtomUpdateSignalsProcessReported => "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED",
26221            AtomId::AtomTopicsScheduleEpochJobSettingReported => "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED",
26222            AtomId::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
26223            AtomId::AtomAiWallpapersTemplateSelected => "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED",
26224            AtomId::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
26225            AtomId::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
26226            AtomId::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
26227            AtomId::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
26228            AtomId::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
26229            AtomId::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
26230            AtomId::AtomAppSearchSetSchemaStatsReported => "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED",
26231            AtomId::AtomAppSearchSchemaMigrationStatsReported => "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED",
26232            AtomId::AtomAppSearchUsageSearchIntentStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED",
26233            AtomId::AtomAppSearchUsageSearchIntentRawQueryStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED",
26234            AtomId::AtomAppSearchAppsIndexerStatsReported => "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED",
26235            AtomId::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
26236            AtomId::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
26237            AtomId::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
26238            AtomId::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
26239            AtomId::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
26240            AtomId::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
26241            AtomId::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
26242            AtomId::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
26243            AtomId::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
26244            AtomId::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
26245            AtomId::AtomAutofillFillRequestReported => "ATOM_AUTOFILL_FILL_REQUEST_REPORTED",
26246            AtomId::AtomAutofillFillResponseReported => "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED",
26247            AtomId::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
26248            AtomId::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
26249            AtomId::AtomAutofillFieldClassificationEventReported => "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED",
26250            AtomId::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
26251            AtomId::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
26252            AtomId::AtomCarWakeupFromSuspendReported => "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED",
26253            AtomId::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
26254            AtomId::AtomBluetoothHashedDeviceNameReported => "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED",
26255            AtomId::AtomBluetoothL2capCocClientConnection => "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION",
26256            AtomId::AtomBluetoothL2capCocServerConnection => "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION",
26257            AtomId::AtomBluetoothLeSessionConnected => "ATOM_BLUETOOTH_LE_SESSION_CONNECTED",
26258            AtomId::AtomRestrictedBluetoothDeviceNameReported => "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED",
26259            AtomId::AtomBluetoothProfileConnectionAttempted => "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED",
26260            AtomId::AtomBluetoothContentProfileErrorReported => "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED",
26261            AtomId::AtomBluetoothRfcommConnectionAttempted => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED",
26262            AtomId::AtomRemoteDeviceInformationWithMetricId => "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID",
26263            AtomId::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
26264            AtomId::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
26265            AtomId::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
26266            AtomId::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
26267            AtomId::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
26268            AtomId::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
26269            AtomId::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
26270            AtomId::AtomBluetoothCrossLayerEventReported => "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED",
26271            AtomId::AtomBroadcastAudioSessionReported => "ATOM_BROADCAST_AUDIO_SESSION_REPORTED",
26272            AtomId::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
26273            AtomId::AtomBluetoothRfcommConnectionReportedAtClose => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE",
26274            AtomId::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
26275            AtomId::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
26276            AtomId::AtomCameraFeatureCombinationQueryEvent => "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT",
26277            AtomId::AtomCertificateTransparencyLogListStateChanged => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED",
26278            AtomId::AtomCertificateTransparencyLogListUpdateFailed => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED",
26279            AtomId::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
26280            AtomId::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
26281            AtomId::AtomTetheringActiveSessionsReported => "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED",
26282            AtomId::AtomNetworkStatsRecorderFileOperated => "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED",
26283            AtomId::AtomCoreNetworkingTerribleErrorOccurred => "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED",
26284            AtomId::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
26285            AtomId::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
26286            AtomId::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
26287            AtomId::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
26288            AtomId::AtomCpuPolicy => "ATOM_CPU_POLICY",
26289            AtomId::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
26290            AtomId::AtomCredentialManagerInitPhaseReported => "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED",
26291            AtomId::AtomCredentialManagerCandidatePhaseReported => "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED",
26292            AtomId::AtomCredentialManagerFinalPhaseReported => "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED",
26293            AtomId::AtomCredentialManagerTotalReported => "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED",
26294            AtomId::AtomCredentialManagerFinalnouidReported => "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED",
26295            AtomId::AtomCredentialManagerGetReported => "ATOM_CREDENTIAL_MANAGER_GET_REPORTED",
26296            AtomId::AtomCredentialManagerAuthClickReported => "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED",
26297            AtomId::AtomCredentialManagerApiv2Called => "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED",
26298            AtomId::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
26299            AtomId::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
26300            AtomId::AtomCronetEngineBuilderInitialized => "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED",
26301            AtomId::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
26302            AtomId::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
26303            AtomId::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
26304            AtomId::AtomDesktopModeSessionTaskUpdate => "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE",
26305            AtomId::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
26306            AtomId::AtomDeviceLockCheckInRequestReported => "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED",
26307            AtomId::AtomDeviceLockProvisioningCompleteReported => "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED",
26308            AtomId::AtomDeviceLockKioskAppRequestReported => "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED",
26309            AtomId::AtomDeviceLockCheckInRetryReported => "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED",
26310            AtomId::AtomDeviceLockProvisionFailureReported => "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED",
26311            AtomId::AtomDeviceLockLockUnlockDeviceFailureReported => "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED",
26312            AtomId::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
26313            AtomId::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
26314            AtomId::AtomDisplayModeDirectorVoteChanged => "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED",
26315            AtomId::AtomExternalDisplayStateChanged => "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED",
26316            AtomId::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
26317            AtomId::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
26318            AtomId::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
26319            AtomId::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
26320            AtomId::AtomExpressHistogramSampleReported => "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED",
26321            AtomId::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
26322            AtomId::AtomExpressUidHistogramSampleReported => "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED",
26323            AtomId::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
26324            AtomId::AtomFederatedComputeTrainingEventReported => "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED",
26325            AtomId::AtomExampleIteratorNextLatencyReported => "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED",
26326            AtomId::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
26327            AtomId::AtomBalAllowed => "ATOM_BAL_ALLOWED",
26328            AtomId::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
26329            AtomId::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
26330            AtomId::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
26331            AtomId::AtomStylusPredictionMetricsReported => "ATOM_STYLUS_PREDICTION_METRICS_REPORTED",
26332            AtomId::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
26333            AtomId::AtomMediaProjectionStateChanged => "ATOM_MEDIA_PROJECTION_STATE_CHANGED",
26334            AtomId::AtomMediaProjectionTargetChanged => "ATOM_MEDIA_PROJECTION_TARGET_CHANGED",
26335            AtomId::AtomExcessiveBinderProxyCountReported => "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED",
26336            AtomId::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
26337            AtomId::AtomMobileBytesTransferByProcState => "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE",
26338            AtomId::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
26339            AtomId::AtomSensitiveContentMediaProjectionSession => "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION",
26340            AtomId::AtomSensitiveNotificationAppProtectionSession => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION",
26341            AtomId::AtomSensitiveNotificationAppProtectionApplied => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED",
26342            AtomId::AtomSensitiveNotificationRedaction => "ATOM_SENSITIVE_NOTIFICATION_REDACTION",
26343            AtomId::AtomSensitiveContentAppProtection => "ATOM_SENSITIVE_CONTENT_APP_PROTECTION",
26344            AtomId::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
26345            AtomId::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
26346            AtomId::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
26347            AtomId::AtomPowerSaveTempAllowlistChanged => "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED",
26348            AtomId::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
26349            AtomId::AtomContentOrFileUriEventReported => "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED",
26350            AtomId::AtomApplicationGrammaticalInflectionChanged => "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED",
26351            AtomId::AtomSystemGrammaticalInflectionChanged => "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED",
26352            AtomId::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
26353            AtomId::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
26354            AtomId::AtomHdmiSoundbarModeStatusReported => "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED",
26355            AtomId::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
26356            AtomId::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
26357            AtomId::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
26358            AtomId::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
26359            AtomId::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
26360            AtomId::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
26361            AtomId::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
26362            AtomId::AtomHealthConnectExportImportStatsReported => "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED",
26363            AtomId::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
26364            AtomId::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
26365            AtomId::AtomHealthConnectAppOpenedReported => "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED",
26366            AtomId::AtomHotwordEgressSizeAtomReported => "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED",
26367            AtomId::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
26368            AtomId::AtomIkeLivenessCheckSessionValidated => "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED",
26369            AtomId::AtomNegotiatedSecurityAssociation => "ATOM_NEGOTIATED_SECURITY_ASSOCIATION",
26370            AtomId::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
26371            AtomId::AtomKeyboardSystemsEventReported => "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED",
26372            AtomId::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
26373            AtomId::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
26374            AtomId::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
26375            AtomId::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
26376            AtomId::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
26377            AtomId::AtomChreSignificantMotionStateChanged => "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED",
26378            AtomId::AtomPopulationDensityProviderLoadingReported => "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED",
26379            AtomId::AtomDensityBasedCoarseLocationsUsageReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED",
26380            AtomId::AtomDensityBasedCoarseLocationsProviderQueryReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED",
26381            AtomId::AtomMediaCodecReclaimRequestCompleted => "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED",
26382            AtomId::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
26383            AtomId::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
26384            AtomId::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
26385            AtomId::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
26386            AtomId::AtomMteState => "ATOM_MTE_STATE",
26387            AtomId::AtomMicroxrDeviceBootCompleteReported => "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED",
26388            AtomId::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
26389            AtomId::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
26390            AtomId::AtomNfcPollingLoopNotificationReported => "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED",
26391            AtomId::AtomNfcProprietaryCapabilitiesReported => "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED",
26392            AtomId::AtomOndevicepersonalizationApiCalled => "ATOM_ONDEVICEPERSONALIZATION_API_CALLED",
26393            AtomId::AtomComponentStateChangedReported => "ATOM_COMPONENT_STATE_CHANGED_REPORTED",
26394            AtomId::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
26395            AtomId::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
26396            AtomId::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
26397            AtomId::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
26398            AtomId::AtomPermissionRationaleDialogViewed => "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED",
26399            AtomId::AtomPermissionRationaleDialogActionReported => "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED",
26400            AtomId::AtomAppDataSharingUpdatesNotificationInteraction => "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION",
26401            AtomId::AtomAppDataSharingUpdatesFragmentViewed => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED",
26402            AtomId::AtomAppDataSharingUpdatesFragmentActionReported => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED",
26403            AtomId::AtomEnhancedConfirmationDialogResultReported => "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED",
26404            AtomId::AtomEnhancedConfirmationRestrictionCleared => "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED",
26405            AtomId::AtomPhotopickerSessionInfoReported => "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED",
26406            AtomId::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
26407            AtomId::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
26408            AtomId::AtomPhotopickerMediaItemStatusReported => "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED",
26409            AtomId::AtomPhotopickerPreviewInfoLogged => "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED",
26410            AtomId::AtomPhotopickerMenuInteractionLogged => "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED",
26411            AtomId::AtomPhotopickerBannerInteractionLogged => "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED",
26412            AtomId::AtomPhotopickerMediaLibraryInfoLogged => "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED",
26413            AtomId::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
26414            AtomId::AtomPhotopickerMediaGridSyncInfoReported => "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED",
26415            AtomId::AtomPhotopickerAlbumSyncInfoReported => "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED",
26416            AtomId::AtomPhotopickerSearchInfoReported => "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED",
26417            AtomId::AtomSearchDataExtractionDetailsReported => "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED",
26418            AtomId::AtomEmbeddedPhotopickerInfoReported => "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED",
26419            AtomId::AtomAtom9999 => "ATOM_ATOM_9999",
26420            AtomId::AtomAtom99999 => "ATOM_ATOM_99999",
26421            AtomId::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
26422            AtomId::AtomScreenTimeoutOverrideReported => "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED",
26423            AtomId::AtomScreenInteractiveSessionReported => "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED",
26424            AtomId::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
26425            AtomId::AtomMediaProviderDatabaseRollbackReported => "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED",
26426            AtomId::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
26427            AtomId::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
26428            AtomId::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
26429            AtomId::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
26430            AtomId::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
26431            AtomId::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
26432            AtomId::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
26433            AtomId::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
26434            AtomId::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
26435            AtomId::AtomSandboxActivityEventOccurred => "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED",
26436            AtomId::AtomSdkSandboxRestrictedAccessInSession => "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION",
26437            AtomId::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
26438            AtomId::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
26439            AtomId::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
26440            AtomId::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
26441            AtomId::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
26442            AtomId::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
26443            AtomId::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
26444            AtomId::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
26445            AtomId::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
26446            AtomId::AtomDisplaySwitchLatencyTracked => "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED",
26447            AtomId::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
26448            AtomId::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
26449            AtomId::AtomCommunalHubWidgetEventReported => "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED",
26450            AtomId::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
26451            AtomId::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
26452            AtomId::AtomCallStats => "ATOM_CALL_STATS",
26453            AtomId::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
26454            AtomId::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
26455            AtomId::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
26456            AtomId::AtomCellularRadioPowerStateChanged => "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED",
26457            AtomId::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
26458            AtomId::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
26459            AtomId::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
26460            AtomId::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
26461            AtomId::AtomIwlanUnderlyingNetworkValidationResultReported => "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED",
26462            AtomId::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
26463            AtomId::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
26464            AtomId::AtomQnsFallbackRestrictionChanged => "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED",
26465            AtomId::AtomQnsRatPreferenceMismatchInfo => "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO",
26466            AtomId::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
26467            AtomId::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
26468            AtomId::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
26469            AtomId::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
26470            AtomId::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
26471            AtomId::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
26472            AtomId::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
26473            AtomId::AtomSatelliteSosMessageRecommender => "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER",
26474            AtomId::AtomCarrierRoamingSatelliteSession => "ATOM_CARRIER_ROAMING_SATELLITE_SESSION",
26475            AtomId::AtomCarrierRoamingSatelliteControllerStats => "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS",
26476            AtomId::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
26477            AtomId::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
26478            AtomId::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
26479            AtomId::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
26480            AtomId::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
26481            AtomId::AtomThreadnetworkTelemetryDataReported => "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED",
26482            AtomId::AtomThreadnetworkTopoEntryRepeated => "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED",
26483            AtomId::AtomThreadnetworkDeviceInfoReported => "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED",
26484            AtomId::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
26485            AtomId::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
26486            AtomId::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
26487            AtomId::AtomTestUprobestatsAtomReported => "ATOM_TEST_UPROBESTATS_ATOM_REPORTED",
26488            AtomId::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
26489            AtomId::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
26490            AtomId::AtomSysproxyBluetoothBytesTransfer => "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER",
26491            AtomId::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
26492            AtomId::AtomWearCompanionConnectionState => "ATOM_WEAR_COMPANION_CONNECTION_STATE",
26493            AtomId::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
26494            AtomId::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
26495            AtomId::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
26496            AtomId::AtomWearMediaOutputSwitcherDeviceScanApiLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY",
26497            AtomId::AtomWearMediaOutputSwitcherSassDeviceUnavailable => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE",
26498            AtomId::AtomWearMediaOutputSwitcherFastpairApiTimeout => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT",
26499            AtomId::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
26500            AtomId::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
26501            AtomId::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
26502            AtomId::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
26503            AtomId::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
26504            AtomId::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
26505            AtomId::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
26506            AtomId::AtomTileRequested => "ATOM_TILE_REQUESTED",
26507            AtomId::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
26508            AtomId::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
26509            AtomId::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
26510            AtomId::AtomInflationFailed => "ATOM_INFLATION_FAILED",
26511            AtomId::AtomIgnoredInflationFailuresReported => "ATOM_IGNORED_INFLATION_FAILURES_REPORTED",
26512            AtomId::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
26513            AtomId::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
26514            AtomId::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
26515            AtomId::AtomWearTimeSyncAttemptCompleted => "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED",
26516            AtomId::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
26517            AtomId::AtomWearAdaptiveSuspendStatsReported => "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED",
26518            AtomId::AtomWearPowerAnomalyServiceOperationalStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED",
26519            AtomId::AtomWearPowerAnomalyServiceEventStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED",
26520            AtomId::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
26521            AtomId::AtomWsIncomingCallActionReported => "ATOM_WS_INCOMING_CALL_ACTION_REPORTED",
26522            AtomId::AtomWsCallDisconnectionReported => "ATOM_WS_CALL_DISCONNECTION_REPORTED",
26523            AtomId::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
26524            AtomId::AtomWsCallUserExperienceLatencyReported => "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED",
26525            AtomId::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
26526            AtomId::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
26527            AtomId::AtomWsWatchFaceRestrictedComplicationsImpacted => "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED",
26528            AtomId::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED",
26529            AtomId::AtomWsComplicationsImpactedNotificationEventReported => "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED",
26530            AtomId::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
26531            AtomId::AtomWsBugreportRequested => "ATOM_WS_BUGREPORT_REQUESTED",
26532            AtomId::AtomWsBugreportTriggered => "ATOM_WS_BUGREPORT_TRIGGERED",
26533            AtomId::AtomWsBugreportFinished => "ATOM_WS_BUGREPORT_FINISHED",
26534            AtomId::AtomWsBugreportResultReceived => "ATOM_WS_BUGREPORT_RESULT_RECEIVED",
26535            AtomId::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
26536            AtomId::AtomWsFavoriteWatchFaceSnapshot => "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT",
26537            AtomId::AtomWsPhotosWatchFaceFeatureSnapshot => "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT",
26538            AtomId::AtomWsWatchFaceCustomizationSnapshot => "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT",
26539            AtomId::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
26540            AtomId::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
26541            AtomId::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
26542            AtomId::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
26543            AtomId::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
26544            AtomId::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
26545            AtomId::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
26546            AtomId::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
26547            AtomId::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
26548            AtomId::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
26549            AtomId::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
26550            AtomId::AtomWifiAwareResourceUsingChanged => "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED",
26551            AtomId::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
26552            AtomId::AtomWifiLocalOnlyRequestReceived => "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED",
26553            AtomId::AtomWifiLocalOnlyRequestScanTriggered => "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED",
26554            AtomId::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
26555            AtomId::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
26556            AtomId::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
26557            AtomId::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
26558            AtomId::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
26559            AtomId::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
26560            AtomId::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
26561            AtomId::AtomScorerPredictionResultReported => "ATOM_SCORER_PREDICTION_RESULT_REPORTED",
26562            AtomId::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
26563            AtomId::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
26564            AtomId::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
26565            AtomId::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
26566            AtomId::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
26567        }
26568    }
26569}
26570// End of protos/perfetto/config/statsd/statsd_tracing_config.proto
26571
26572// Begin of protos/perfetto/common/sys_stats_counters.proto
26573
26574// When editing entries here remember also to update "sys_stats_counters.h" with
26575// the corresponding string definitions for the actual /proc files parser.
26576
26577/// Counter definitions for Linux's /proc/meminfo.
26578#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26579#[repr(i32)]
26580pub enum MeminfoCounters {
26581    MeminfoUnspecified = 0,
26582    MeminfoMemTotal = 1,
26583    MeminfoMemFree = 2,
26584    MeminfoMemAvailable = 3,
26585    MeminfoBuffers = 4,
26586    MeminfoCached = 5,
26587    MeminfoSwapCached = 6,
26588    MeminfoActive = 7,
26589    MeminfoInactive = 8,
26590    MeminfoActiveAnon = 9,
26591    MeminfoInactiveAnon = 10,
26592    MeminfoActiveFile = 11,
26593    MeminfoInactiveFile = 12,
26594    MeminfoUnevictable = 13,
26595    MeminfoMlocked = 14,
26596    MeminfoSwapTotal = 15,
26597    MeminfoSwapFree = 16,
26598    MeminfoDirty = 17,
26599    MeminfoWriteback = 18,
26600    MeminfoAnonPages = 19,
26601    MeminfoMapped = 20,
26602    MeminfoShmem = 21,
26603    MeminfoSlab = 22,
26604    MeminfoSlabReclaimable = 23,
26605    MeminfoSlabUnreclaimable = 24,
26606    MeminfoKernelStack = 25,
26607    MeminfoPageTables = 26,
26608    MeminfoCommitLimit = 27,
26609    MeminfoCommitedAs = 28,
26610    MeminfoVmallocTotal = 29,
26611    MeminfoVmallocUsed = 30,
26612    MeminfoVmallocChunk = 31,
26613    MeminfoCmaTotal = 32,
26614    MeminfoCmaFree = 33,
26615    MeminfoGpu = 34,
26616    MeminfoZram = 35,
26617    MeminfoMisc = 36,
26618    MeminfoIonHeap = 37,
26619    MeminfoIonHeapPool = 38,
26620}
26621impl MeminfoCounters {
26622    /// String value of the enum field names used in the ProtoBuf definition.
26623    ///
26624    /// The values are not transformed in any way and thus are considered stable
26625    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26626    pub fn as_str_name(&self) -> &'static str {
26627        match self {
26628            MeminfoCounters::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
26629            MeminfoCounters::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
26630            MeminfoCounters::MeminfoMemFree => "MEMINFO_MEM_FREE",
26631            MeminfoCounters::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
26632            MeminfoCounters::MeminfoBuffers => "MEMINFO_BUFFERS",
26633            MeminfoCounters::MeminfoCached => "MEMINFO_CACHED",
26634            MeminfoCounters::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
26635            MeminfoCounters::MeminfoActive => "MEMINFO_ACTIVE",
26636            MeminfoCounters::MeminfoInactive => "MEMINFO_INACTIVE",
26637            MeminfoCounters::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
26638            MeminfoCounters::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
26639            MeminfoCounters::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
26640            MeminfoCounters::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
26641            MeminfoCounters::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
26642            MeminfoCounters::MeminfoMlocked => "MEMINFO_MLOCKED",
26643            MeminfoCounters::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
26644            MeminfoCounters::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
26645            MeminfoCounters::MeminfoDirty => "MEMINFO_DIRTY",
26646            MeminfoCounters::MeminfoWriteback => "MEMINFO_WRITEBACK",
26647            MeminfoCounters::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
26648            MeminfoCounters::MeminfoMapped => "MEMINFO_MAPPED",
26649            MeminfoCounters::MeminfoShmem => "MEMINFO_SHMEM",
26650            MeminfoCounters::MeminfoSlab => "MEMINFO_SLAB",
26651            MeminfoCounters::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
26652            MeminfoCounters::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
26653            MeminfoCounters::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
26654            MeminfoCounters::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
26655            MeminfoCounters::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
26656            MeminfoCounters::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
26657            MeminfoCounters::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
26658            MeminfoCounters::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
26659            MeminfoCounters::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
26660            MeminfoCounters::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
26661            MeminfoCounters::MeminfoCmaFree => "MEMINFO_CMA_FREE",
26662            MeminfoCounters::MeminfoGpu => "MEMINFO_GPU",
26663            MeminfoCounters::MeminfoZram => "MEMINFO_ZRAM",
26664            MeminfoCounters::MeminfoMisc => "MEMINFO_MISC",
26665            MeminfoCounters::MeminfoIonHeap => "MEMINFO_ION_HEAP",
26666            MeminfoCounters::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
26667        }
26668    }
26669}
26670/// Counter definitions for Linux's /proc/vmstat.
26671#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26672#[repr(i32)]
26673pub enum VmstatCounters {
26674    VmstatUnspecified = 0,
26675    VmstatNrFreePages = 1,
26676    VmstatNrAllocBatch = 2,
26677    VmstatNrInactiveAnon = 3,
26678    VmstatNrActiveAnon = 4,
26679    VmstatNrInactiveFile = 5,
26680    VmstatNrActiveFile = 6,
26681    VmstatNrUnevictable = 7,
26682    VmstatNrMlock = 8,
26683    VmstatNrAnonPages = 9,
26684    VmstatNrMapped = 10,
26685    VmstatNrFilePages = 11,
26686    VmstatNrDirty = 12,
26687    VmstatNrWriteback = 13,
26688    VmstatNrSlabReclaimable = 14,
26689    VmstatNrSlabUnreclaimable = 15,
26690    VmstatNrPageTablePages = 16,
26691    VmstatNrKernelStack = 17,
26692    VmstatNrOverhead = 18,
26693    VmstatNrUnstable = 19,
26694    VmstatNrBounce = 20,
26695    VmstatNrVmscanWrite = 21,
26696    VmstatNrVmscanImmediateReclaim = 22,
26697    VmstatNrWritebackTemp = 23,
26698    VmstatNrIsolatedAnon = 24,
26699    VmstatNrIsolatedFile = 25,
26700    VmstatNrShmem = 26,
26701    VmstatNrDirtied = 27,
26702    VmstatNrWritten = 28,
26703    VmstatNrPagesScanned = 29,
26704    VmstatWorkingsetRefault = 30,
26705    VmstatWorkingsetActivate = 31,
26706    VmstatWorkingsetNodereclaim = 32,
26707    VmstatNrAnonTransparentHugepages = 33,
26708    VmstatNrFreeCma = 34,
26709    VmstatNrSwapcache = 35,
26710    VmstatNrDirtyThreshold = 36,
26711    VmstatNrDirtyBackgroundThreshold = 37,
26712    VmstatPgpgin = 38,
26713    VmstatPgpgout = 39,
26714    VmstatPgpgoutclean = 40,
26715    VmstatPswpin = 41,
26716    VmstatPswpout = 42,
26717    VmstatPgallocDma = 43,
26718    VmstatPgallocNormal = 44,
26719    VmstatPgallocMovable = 45,
26720    VmstatPgfree = 46,
26721    VmstatPgactivate = 47,
26722    VmstatPgdeactivate = 48,
26723    VmstatPgfault = 49,
26724    VmstatPgmajfault = 50,
26725    VmstatPgrefillDma = 51,
26726    VmstatPgrefillNormal = 52,
26727    VmstatPgrefillMovable = 53,
26728    VmstatPgstealKswapdDma = 54,
26729    VmstatPgstealKswapdNormal = 55,
26730    VmstatPgstealKswapdMovable = 56,
26731    VmstatPgstealDirectDma = 57,
26732    VmstatPgstealDirectNormal = 58,
26733    VmstatPgstealDirectMovable = 59,
26734    VmstatPgscanKswapdDma = 60,
26735    VmstatPgscanKswapdNormal = 61,
26736    VmstatPgscanKswapdMovable = 62,
26737    VmstatPgscanDirectDma = 63,
26738    VmstatPgscanDirectNormal = 64,
26739    VmstatPgscanDirectMovable = 65,
26740    VmstatPgscanDirectThrottle = 66,
26741    VmstatPginodesteal = 67,
26742    VmstatSlabsScanned = 68,
26743    VmstatKswapdInodesteal = 69,
26744    VmstatKswapdLowWmarkHitQuickly = 70,
26745    VmstatKswapdHighWmarkHitQuickly = 71,
26746    VmstatPageoutrun = 72,
26747    VmstatAllocstall = 73,
26748    VmstatPgrotated = 74,
26749    VmstatDropPagecache = 75,
26750    VmstatDropSlab = 76,
26751    VmstatPgmigrateSuccess = 77,
26752    VmstatPgmigrateFail = 78,
26753    VmstatCompactMigrateScanned = 79,
26754    VmstatCompactFreeScanned = 80,
26755    VmstatCompactIsolated = 81,
26756    VmstatCompactStall = 82,
26757    VmstatCompactFail = 83,
26758    VmstatCompactSuccess = 84,
26759    VmstatCompactDaemonWake = 85,
26760    VmstatUnevictablePgsCulled = 86,
26761    VmstatUnevictablePgsScanned = 87,
26762    VmstatUnevictablePgsRescued = 88,
26763    VmstatUnevictablePgsMlocked = 89,
26764    VmstatUnevictablePgsMunlocked = 90,
26765    VmstatUnevictablePgsCleared = 91,
26766    VmstatUnevictablePgsStranded = 92,
26767    VmstatNrZspages = 93,
26768    VmstatNrIonHeap = 94,
26769    VmstatNrGpuHeap = 95,
26770    VmstatAllocstallDma = 96,
26771    VmstatAllocstallMovable = 97,
26772    VmstatAllocstallNormal = 98,
26773    VmstatCompactDaemonFreeScanned = 99,
26774    VmstatCompactDaemonMigrateScanned = 100,
26775    VmstatNrFastrpc = 101,
26776    VmstatNrIndirectlyReclaimable = 102,
26777    VmstatNrIonHeapPool = 103,
26778    VmstatNrKernelMiscReclaimable = 104,
26779    VmstatNrShadowCallStackBytes = 105,
26780    VmstatNrShmemHugepages = 106,
26781    VmstatNrShmemPmdmapped = 107,
26782    VmstatNrUnreclaimablePages = 108,
26783    VmstatNrZoneActiveAnon = 109,
26784    VmstatNrZoneActiveFile = 110,
26785    VmstatNrZoneInactiveAnon = 111,
26786    VmstatNrZoneInactiveFile = 112,
26787    VmstatNrZoneUnevictable = 113,
26788    VmstatNrZoneWritePending = 114,
26789    VmstatOomKill = 115,
26790    VmstatPglazyfree = 116,
26791    VmstatPglazyfreed = 117,
26792    VmstatPgrefill = 118,
26793    VmstatPgscanDirect = 119,
26794    VmstatPgscanKswapd = 120,
26795    VmstatPgskipDma = 121,
26796    VmstatPgskipMovable = 122,
26797    VmstatPgskipNormal = 123,
26798    VmstatPgstealDirect = 124,
26799    VmstatPgstealKswapd = 125,
26800    VmstatSwapRa = 126,
26801    VmstatSwapRaHit = 127,
26802    VmstatWorkingsetRestore = 128,
26803    VmstatAllocstallDevice = 129,
26804    VmstatAllocstallDma32 = 130,
26805    VmstatBalloonDeflate = 131,
26806    VmstatBalloonInflate = 132,
26807    VmstatBalloonMigrate = 133,
26808    VmstatCmaAllocFail = 134,
26809    VmstatCmaAllocSuccess = 135,
26810    VmstatNrFileHugepages = 136,
26811    VmstatNrFilePmdmapped = 137,
26812    VmstatNrFollPinAcquired = 138,
26813    VmstatNrFollPinReleased = 139,
26814    VmstatNrSecPageTablePages = 140,
26815    VmstatNrShadowCallStack = 141,
26816    VmstatNrSwapcached = 142,
26817    VmstatNrThrottledWritten = 143,
26818    VmstatPgallocDevice = 144,
26819    VmstatPgallocDma32 = 145,
26820    VmstatPgdemoteDirect = 146,
26821    VmstatPgdemoteKswapd = 147,
26822    VmstatPgreuse = 148,
26823    VmstatPgscanAnon = 149,
26824    VmstatPgscanFile = 150,
26825    VmstatPgskipDevice = 151,
26826    VmstatPgskipDma32 = 152,
26827    VmstatPgstealAnon = 153,
26828    VmstatPgstealFile = 154,
26829    VmstatThpCollapseAlloc = 155,
26830    VmstatThpCollapseAllocFailed = 156,
26831    VmstatThpDeferredSplitPage = 157,
26832    VmstatThpFaultAlloc = 158,
26833    VmstatThpFaultFallback = 159,
26834    VmstatThpFaultFallbackCharge = 160,
26835    VmstatThpFileAlloc = 161,
26836    VmstatThpFileFallback = 162,
26837    VmstatThpFileFallbackCharge = 163,
26838    VmstatThpFileMapped = 164,
26839    VmstatThpMigrationFail = 165,
26840    VmstatThpMigrationSplit = 166,
26841    VmstatThpMigrationSuccess = 167,
26842    VmstatThpScanExceedNonePte = 168,
26843    VmstatThpScanExceedSharePte = 169,
26844    VmstatThpScanExceedSwapPte = 170,
26845    VmstatThpSplitPage = 171,
26846    VmstatThpSplitPageFailed = 172,
26847    VmstatThpSplitPmd = 173,
26848    VmstatThpSwpout = 174,
26849    VmstatThpSwpoutFallback = 175,
26850    VmstatThpZeroPageAlloc = 176,
26851    VmstatThpZeroPageAllocFailed = 177,
26852    VmstatVmaLockAbort = 178,
26853    VmstatVmaLockMiss = 179,
26854    VmstatVmaLockRetry = 180,
26855    VmstatVmaLockSuccess = 181,
26856    VmstatWorkingsetActivateAnon = 182,
26857    VmstatWorkingsetActivateFile = 183,
26858    VmstatWorkingsetNodes = 184,
26859    VmstatWorkingsetRefaultAnon = 185,
26860    VmstatWorkingsetRefaultFile = 186,
26861    VmstatWorkingsetRestoreAnon = 187,
26862    VmstatWorkingsetRestoreFile = 188,
26863}
26864impl VmstatCounters {
26865    /// String value of the enum field names used in the ProtoBuf definition.
26866    ///
26867    /// The values are not transformed in any way and thus are considered stable
26868    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26869    pub fn as_str_name(&self) -> &'static str {
26870        match self {
26871            VmstatCounters::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
26872            VmstatCounters::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
26873            VmstatCounters::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
26874            VmstatCounters::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
26875            VmstatCounters::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
26876            VmstatCounters::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
26877            VmstatCounters::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
26878            VmstatCounters::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
26879            VmstatCounters::VmstatNrMlock => "VMSTAT_NR_MLOCK",
26880            VmstatCounters::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
26881            VmstatCounters::VmstatNrMapped => "VMSTAT_NR_MAPPED",
26882            VmstatCounters::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
26883            VmstatCounters::VmstatNrDirty => "VMSTAT_NR_DIRTY",
26884            VmstatCounters::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
26885            VmstatCounters::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
26886            VmstatCounters::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
26887            VmstatCounters::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
26888            VmstatCounters::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
26889            VmstatCounters::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
26890            VmstatCounters::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
26891            VmstatCounters::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
26892            VmstatCounters::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
26893            VmstatCounters::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
26894            VmstatCounters::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
26895            VmstatCounters::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
26896            VmstatCounters::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
26897            VmstatCounters::VmstatNrShmem => "VMSTAT_NR_SHMEM",
26898            VmstatCounters::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
26899            VmstatCounters::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
26900            VmstatCounters::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
26901            VmstatCounters::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
26902            VmstatCounters::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
26903            VmstatCounters::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
26904            VmstatCounters::VmstatNrAnonTransparentHugepages => "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES",
26905            VmstatCounters::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
26906            VmstatCounters::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
26907            VmstatCounters::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
26908            VmstatCounters::VmstatNrDirtyBackgroundThreshold => "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD",
26909            VmstatCounters::VmstatPgpgin => "VMSTAT_PGPGIN",
26910            VmstatCounters::VmstatPgpgout => "VMSTAT_PGPGOUT",
26911            VmstatCounters::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
26912            VmstatCounters::VmstatPswpin => "VMSTAT_PSWPIN",
26913            VmstatCounters::VmstatPswpout => "VMSTAT_PSWPOUT",
26914            VmstatCounters::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
26915            VmstatCounters::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
26916            VmstatCounters::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
26917            VmstatCounters::VmstatPgfree => "VMSTAT_PGFREE",
26918            VmstatCounters::VmstatPgactivate => "VMSTAT_PGACTIVATE",
26919            VmstatCounters::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
26920            VmstatCounters::VmstatPgfault => "VMSTAT_PGFAULT",
26921            VmstatCounters::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
26922            VmstatCounters::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
26923            VmstatCounters::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
26924            VmstatCounters::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
26925            VmstatCounters::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
26926            VmstatCounters::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
26927            VmstatCounters::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
26928            VmstatCounters::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
26929            VmstatCounters::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
26930            VmstatCounters::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
26931            VmstatCounters::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
26932            VmstatCounters::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
26933            VmstatCounters::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
26934            VmstatCounters::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
26935            VmstatCounters::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
26936            VmstatCounters::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
26937            VmstatCounters::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
26938            VmstatCounters::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
26939            VmstatCounters::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
26940            VmstatCounters::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
26941            VmstatCounters::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
26942            VmstatCounters::VmstatKswapdHighWmarkHitQuickly => "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY",
26943            VmstatCounters::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
26944            VmstatCounters::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
26945            VmstatCounters::VmstatPgrotated => "VMSTAT_PGROTATED",
26946            VmstatCounters::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
26947            VmstatCounters::VmstatDropSlab => "VMSTAT_DROP_SLAB",
26948            VmstatCounters::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
26949            VmstatCounters::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
26950            VmstatCounters::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
26951            VmstatCounters::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
26952            VmstatCounters::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
26953            VmstatCounters::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
26954            VmstatCounters::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
26955            VmstatCounters::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
26956            VmstatCounters::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
26957            VmstatCounters::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
26958            VmstatCounters::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
26959            VmstatCounters::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
26960            VmstatCounters::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
26961            VmstatCounters::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
26962            VmstatCounters::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
26963            VmstatCounters::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
26964            VmstatCounters::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
26965            VmstatCounters::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
26966            VmstatCounters::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
26967            VmstatCounters::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
26968            VmstatCounters::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
26969            VmstatCounters::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
26970            VmstatCounters::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
26971            VmstatCounters::VmstatCompactDaemonMigrateScanned => "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED",
26972            VmstatCounters::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
26973            VmstatCounters::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
26974            VmstatCounters::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
26975            VmstatCounters::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
26976            VmstatCounters::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
26977            VmstatCounters::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
26978            VmstatCounters::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
26979            VmstatCounters::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
26980            VmstatCounters::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
26981            VmstatCounters::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
26982            VmstatCounters::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
26983            VmstatCounters::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
26984            VmstatCounters::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
26985            VmstatCounters::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
26986            VmstatCounters::VmstatOomKill => "VMSTAT_OOM_KILL",
26987            VmstatCounters::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
26988            VmstatCounters::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
26989            VmstatCounters::VmstatPgrefill => "VMSTAT_PGREFILL",
26990            VmstatCounters::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
26991            VmstatCounters::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
26992            VmstatCounters::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
26993            VmstatCounters::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
26994            VmstatCounters::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
26995            VmstatCounters::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
26996            VmstatCounters::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
26997            VmstatCounters::VmstatSwapRa => "VMSTAT_SWAP_RA",
26998            VmstatCounters::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
26999            VmstatCounters::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
27000            VmstatCounters::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
27001            VmstatCounters::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
27002            VmstatCounters::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
27003            VmstatCounters::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
27004            VmstatCounters::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
27005            VmstatCounters::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
27006            VmstatCounters::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
27007            VmstatCounters::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
27008            VmstatCounters::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
27009            VmstatCounters::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
27010            VmstatCounters::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
27011            VmstatCounters::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
27012            VmstatCounters::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
27013            VmstatCounters::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
27014            VmstatCounters::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
27015            VmstatCounters::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
27016            VmstatCounters::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
27017            VmstatCounters::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
27018            VmstatCounters::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
27019            VmstatCounters::VmstatPgreuse => "VMSTAT_PGREUSE",
27020            VmstatCounters::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
27021            VmstatCounters::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
27022            VmstatCounters::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
27023            VmstatCounters::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
27024            VmstatCounters::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
27025            VmstatCounters::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
27026            VmstatCounters::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
27027            VmstatCounters::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
27028            VmstatCounters::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
27029            VmstatCounters::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
27030            VmstatCounters::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
27031            VmstatCounters::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
27032            VmstatCounters::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
27033            VmstatCounters::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
27034            VmstatCounters::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
27035            VmstatCounters::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
27036            VmstatCounters::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
27037            VmstatCounters::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
27038            VmstatCounters::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
27039            VmstatCounters::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
27040            VmstatCounters::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
27041            VmstatCounters::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
27042            VmstatCounters::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
27043            VmstatCounters::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
27044            VmstatCounters::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
27045            VmstatCounters::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
27046            VmstatCounters::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
27047            VmstatCounters::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
27048            VmstatCounters::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
27049            VmstatCounters::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
27050            VmstatCounters::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
27051            VmstatCounters::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
27052            VmstatCounters::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
27053            VmstatCounters::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
27054            VmstatCounters::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
27055            VmstatCounters::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
27056            VmstatCounters::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
27057            VmstatCounters::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
27058            VmstatCounters::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
27059            VmstatCounters::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
27060        }
27061    }
27062}
27063// End of protos/perfetto/trace/android/app_wakelock_data.proto
27064
27065// Begin of protos/perfetto/trace/android/bluetooth_trace.proto
27066
27067/// Describes the packet type and direction. CMD and EVT are unidirectional, so
27068/// no need to differentiate the direction.
27069#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27070#[repr(i32)]
27071pub enum BluetoothTracePacketType {
27072    HciCmd = 1,
27073    HciEvt = 2,
27074    HciAclRx = 3,
27075    HciAclTx = 4,
27076    HciScoRx = 5,
27077    HciScoTx = 6,
27078    HciIsoRx = 7,
27079    HciIsoTx = 8,
27080}
27081impl BluetoothTracePacketType {
27082    /// String value of the enum field names used in the ProtoBuf definition.
27083    ///
27084    /// The values are not transformed in any way and thus are considered stable
27085    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27086    pub fn as_str_name(&self) -> &'static str {
27087        match self {
27088            BluetoothTracePacketType::HciCmd => "HCI_CMD",
27089            BluetoothTracePacketType::HciEvt => "HCI_EVT",
27090            BluetoothTracePacketType::HciAclRx => "HCI_ACL_RX",
27091            BluetoothTracePacketType::HciAclTx => "HCI_ACL_TX",
27092            BluetoothTracePacketType::HciScoRx => "HCI_SCO_RX",
27093            BluetoothTracePacketType::HciScoTx => "HCI_SCO_TX",
27094            BluetoothTracePacketType::HciIsoRx => "HCI_ISO_RX",
27095            BluetoothTracePacketType::HciIsoTx => "HCI_ISO_TX",
27096        }
27097    }
27098}
27099// End of protos/perfetto/trace/android/kernel_wakelock_data.proto
27100
27101// Begin of protos/perfetto/trace/android/network_trace.proto
27102
27103#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27104#[repr(i32)]
27105pub enum TrafficDirection {
27106    DirUnspecified = 0,
27107    DirIngress = 1,
27108    DirEgress = 2,
27109}
27110impl TrafficDirection {
27111    /// String value of the enum field names used in the ProtoBuf definition.
27112    ///
27113    /// The values are not transformed in any way and thus are considered stable
27114    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27115    pub fn as_str_name(&self) -> &'static str {
27116        match self {
27117            TrafficDirection::DirUnspecified => "DIR_UNSPECIFIED",
27118            TrafficDirection::DirIngress => "DIR_INGRESS",
27119            TrafficDirection::DirEgress => "DIR_EGRESS",
27120        }
27121    }
27122}
27123#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27124#[repr(i32)]
27125pub enum TrustedOverlay {
27126    Unset = 0,
27127    Disabled = 1,
27128    Enabled = 2,
27129}
27130impl TrustedOverlay {
27131    /// String value of the enum field names used in the ProtoBuf definition.
27132    ///
27133    /// The values are not transformed in any way and thus are considered stable
27134    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27135    pub fn as_str_name(&self) -> &'static str {
27136        match self {
27137            TrustedOverlay::Unset => "UNSET",
27138            TrustedOverlay::Disabled => "DISABLED",
27139            TrustedOverlay::Enabled => "ENABLED",
27140        }
27141    }
27142}
27143/// Must match definition in the IComposerClient HAL
27144#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27145#[repr(i32)]
27146pub enum HwcCompositionType {
27147    /// Invalid composition type
27148    HwcTypeUnspecified = 0,
27149    /// Layer was composited by the client into the client target buffer
27150    HwcTypeClient = 1,
27151    /// Layer was composited by the device through hardware overlays
27152    HwcTypeDevice = 2,
27153    /// Layer was composited by the device using a color
27154    HwcTypeSolidColor = 3,
27155    /// Similar to DEVICE, but the layer position may have been asynchronously set
27156    /// through setCursorPosition
27157    HwcTypeCursor = 4,
27158    /// Layer was composited by the device via a sideband stream
27159    HwcTypeSideband = 5,
27160    /// Layer was composited by hardware optimized for display decoration
27161    HwcTypeDisplayDecoration = 6,
27162}
27163impl HwcCompositionType {
27164    /// String value of the enum field names used in the ProtoBuf definition.
27165    ///
27166    /// The values are not transformed in any way and thus are considered stable
27167    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27168    pub fn as_str_name(&self) -> &'static str {
27169        match self {
27170            HwcCompositionType::HwcTypeUnspecified => "HWC_TYPE_UNSPECIFIED",
27171            HwcCompositionType::HwcTypeClient => "HWC_TYPE_CLIENT",
27172            HwcCompositionType::HwcTypeDevice => "HWC_TYPE_DEVICE",
27173            HwcCompositionType::HwcTypeSolidColor => "HWC_TYPE_SOLID_COLOR",
27174            HwcCompositionType::HwcTypeCursor => "HWC_TYPE_CURSOR",
27175            HwcCompositionType::HwcTypeSideband => "HWC_TYPE_SIDEBAND",
27176            HwcCompositionType::HwcTypeDisplayDecoration => "HWC_TYPE_DISPLAY_DECORATION",
27177        }
27178    }
27179}
27180#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27181#[repr(i32)]
27182pub enum FtraceParseStatus {
27183    FtraceStatusUnspecified = 0,
27184    /// Not written, used for convenience of implementation:
27185    FtraceStatusOk = 1,
27186    /// Issues with reading data out of the ftrace ring buffer:
27187    FtraceStatusUnexpectedReadError = 2,
27188    FtraceStatusPartialPageRead = 3,
27189    /// Ring buffer binary data not matching our understanding of the layout:
27190    FtraceStatusAbiInvalidPageHeader = 4,
27191    FtraceStatusAbiShortEventHeader = 5,
27192    FtraceStatusAbiNullPadding = 6,
27193    FtraceStatusAbiShortPaddingLength = 7,
27194    FtraceStatusAbiInvalidPaddingLength = 8,
27195    FtraceStatusAbiShortTimeExtend = 9,
27196    FtraceStatusAbiShortTimeStamp = 10,
27197    FtraceStatusAbiShortDataLength = 11,
27198    FtraceStatusAbiZeroDataLength = 12,
27199    FtraceStatusAbiInvalidDataLength = 13,
27200    FtraceStatusAbiShortEventId = 14,
27201    FtraceStatusAbiEndOverflow = 15,
27202    /// Issues with parsing the event payload:
27203    FtraceStatusShortCompactEvent = 16,
27204    FtraceStatusInvalidEvent = 17,
27205}
27206impl FtraceParseStatus {
27207    /// String value of the enum field names used in the ProtoBuf definition.
27208    ///
27209    /// The values are not transformed in any way and thus are considered stable
27210    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27211    pub fn as_str_name(&self) -> &'static str {
27212        match self {
27213            FtraceParseStatus::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
27214            FtraceParseStatus::FtraceStatusOk => "FTRACE_STATUS_OK",
27215            FtraceParseStatus::FtraceStatusUnexpectedReadError => "FTRACE_STATUS_UNEXPECTED_READ_ERROR",
27216            FtraceParseStatus::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
27217            FtraceParseStatus::FtraceStatusAbiInvalidPageHeader => "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER",
27218            FtraceParseStatus::FtraceStatusAbiShortEventHeader => "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER",
27219            FtraceParseStatus::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
27220            FtraceParseStatus::FtraceStatusAbiShortPaddingLength => "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH",
27221            FtraceParseStatus::FtraceStatusAbiInvalidPaddingLength => "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH",
27222            FtraceParseStatus::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
27223            FtraceParseStatus::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
27224            FtraceParseStatus::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
27225            FtraceParseStatus::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
27226            FtraceParseStatus::FtraceStatusAbiInvalidDataLength => "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH",
27227            FtraceParseStatus::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
27228            FtraceParseStatus::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
27229            FtraceParseStatus::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
27230            FtraceParseStatus::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
27231        }
27232    }
27233}
27234#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27235#[repr(i32)]
27236pub enum FtraceClock {
27237    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
27238    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
27239    Unspecified = 0,
27240    Unknown = 1,
27241    Global = 2,
27242    Local = 3,
27243    MonoRaw = 4,
27244}
27245impl FtraceClock {
27246    /// String value of the enum field names used in the ProtoBuf definition.
27247    ///
27248    /// The values are not transformed in any way and thus are considered stable
27249    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27250    pub fn as_str_name(&self) -> &'static str {
27251        match self {
27252            FtraceClock::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
27253            FtraceClock::Unknown => "FTRACE_CLOCK_UNKNOWN",
27254            FtraceClock::Global => "FTRACE_CLOCK_GLOBAL",
27255            FtraceClock::Local => "FTRACE_CLOCK_LOCAL",
27256            FtraceClock::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
27257        }
27258    }
27259}
27260// End of protos/perfetto/trace/track_event/chrome_application_state_info.proto
27261
27262// Begin of protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.proto
27263
27264// Describes Chrome's Compositor scheduler's current state and associated
27265// variables.
27266//
27267// These protos and enums were adapted from the corresponding original JSON
27268// trace event for the scheduler state. In contrast to the JSON, we use strongly
27269// typed enum values instead of strings for many fields, and
27270// microsecond-granularity timestamps.
27271//
27272// The original format was generated in JSON by the code at
27273// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?l=870&rcl=5e15eabc9c0eec8daf94fdf78e93f13b6e3b63dd>
27274//
27275// And is now generated as protozero:
27276// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?q=Scheduler::AsPro>
27277//
27278// All non-delta-timestamps are absolute CLOCK_MONOTONIC timestamps.
27279
27280#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27281#[repr(i32)]
27282pub enum ChromeCompositorSchedulerAction {
27283    CcSchedulerActionUnspecified = 0,
27284    CcSchedulerActionNone = 1,
27285    CcSchedulerActionSendBeginMainFrame = 2,
27286    CcSchedulerActionCommit = 3,
27287    CcSchedulerActionActivateSyncTree = 4,
27288    CcSchedulerActionDrawIfPossible = 5,
27289    CcSchedulerActionDrawForced = 6,
27290    CcSchedulerActionDrawAbort = 7,
27291    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
27292    CcSchedulerActionPrepareTiles = 9,
27293    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
27294    CcSchedulerActionPerformImplSideInvalidation = 11,
27295    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
27296    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
27297}
27298impl ChromeCompositorSchedulerAction {
27299    /// String value of the enum field names used in the ProtoBuf definition.
27300    ///
27301    /// The values are not transformed in any way and thus are considered stable
27302    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27303    pub fn as_str_name(&self) -> &'static str {
27304        match self {
27305            ChromeCompositorSchedulerAction::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
27306            ChromeCompositorSchedulerAction::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
27307            ChromeCompositorSchedulerAction::CcSchedulerActionSendBeginMainFrame => "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME",
27308            ChromeCompositorSchedulerAction::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
27309            ChromeCompositorSchedulerAction::CcSchedulerActionActivateSyncTree => "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE",
27310            ChromeCompositorSchedulerAction::CcSchedulerActionDrawIfPossible => "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE",
27311            ChromeCompositorSchedulerAction::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
27312            ChromeCompositorSchedulerAction::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
27313            ChromeCompositorSchedulerAction::CcSchedulerActionBeginLayerTreeFrameSinkCreation => "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION",
27314            ChromeCompositorSchedulerAction::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
27315            ChromeCompositorSchedulerAction::CcSchedulerActionInvalidateLayerTreeFrameSink => "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK",
27316            ChromeCompositorSchedulerAction::CcSchedulerActionPerformImplSideInvalidation => "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION",
27317            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL",
27318            ChromeCompositorSchedulerAction::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON",
27319        }
27320    }
27321}
27322// End of protos/perfetto/trace/track_event/chrome_mojo_event_info.proto
27323
27324// Begin of protos/perfetto/trace/track_event/chrome_renderer_scheduler_state.proto
27325
27326// Describes the state of the RendererScheduler for a given Renderer Process.
27327
27328/// RAIL Mode is an indication of the kind of work that a Renderer is currently
27329/// performing which is in turn used to prioritise work accordingly.
27330/// A fuller description of these modes can be found <https://web.dev/rail/>
27331#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27332#[repr(i32)]
27333pub enum ChromeRailMode {
27334    RailModeNone = 0,
27335    RailModeResponse = 1,
27336    RailModeAnimation = 2,
27337    RailModeIdle = 3,
27338    RailModeLoad = 4,
27339}
27340impl ChromeRailMode {
27341    /// String value of the enum field names used in the ProtoBuf definition.
27342    ///
27343    /// The values are not transformed in any way and thus are considered stable
27344    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27345    pub fn as_str_name(&self) -> &'static str {
27346        match self {
27347            ChromeRailMode::RailModeNone => "RAIL_MODE_NONE",
27348            ChromeRailMode::RailModeResponse => "RAIL_MODE_RESPONSE",
27349            ChromeRailMode::RailModeAnimation => "RAIL_MODE_ANIMATION",
27350            ChromeRailMode::RailModeIdle => "RAIL_MODE_IDLE",
27351            ChromeRailMode::RailModeLoad => "RAIL_MODE_LOAD",
27352        }
27353    }
27354}