micromegas_perfetto/
perfetto.protos.rs

1// This file is @generated by prost-build.
2/// Statistics for the internals of the tracing service.
3///
4/// Next id: 19.
5#[derive(Clone, PartialEq, ::prost::Message)]
6pub struct TraceStats {
7    /// Stats for the TraceBuffer(s) of the current trace session.
8    #[prost(message, repeated, tag = "1")]
9    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
10    /// The thresholds of each the `writer_stats` histogram buckets. This is
11    /// emitted only once as all WriterStats share the same bucket layout.
12    /// This field has the same cardinality of the
13    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
14    /// (The -1 is because the last overflow bucket is not reported in the _def).
15    /// An array of values \[10, 100, 1000\] in the _def array means that there are
16    /// four buckets (3 + the implicit overflow bucket):
17    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
18    #[prost(int64, repeated, packed = "false", tag = "17")]
19    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
20    #[prost(message, repeated, tag = "18")]
21    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
22    /// Num. producers connected (whether they are involved in the current tracing
23    /// session or not).
24    #[prost(uint32, optional, tag = "2")]
25    pub producers_connected: ::core::option::Option<u32>,
26    /// Num. producers ever seen for all trace sessions since startup (it's a good
27    /// proxy for inferring num. producers crashed / killed).
28    #[prost(uint64, optional, tag = "3")]
29    pub producers_seen: ::core::option::Option<u64>,
30    /// Num. data sources registered for all trace sessions.
31    #[prost(uint32, optional, tag = "4")]
32    pub data_sources_registered: ::core::option::Option<u32>,
33    /// Num. data sources ever seen for all trace sessions since startup.
34    #[prost(uint64, optional, tag = "5")]
35    pub data_sources_seen: ::core::option::Option<u64>,
36    /// Num. concurrently active tracing sessions.
37    #[prost(uint32, optional, tag = "6")]
38    pub tracing_sessions: ::core::option::Option<u32>,
39    /// Num. buffers for all tracing session (not just the current one). This will
40    /// be >= buffer_stats.size(), because the latter is only about the current
41    /// session.
42    #[prost(uint32, optional, tag = "7")]
43    pub total_buffers: ::core::option::Option<u32>,
44    /// Num. chunks that were discarded by the service before attempting to commit
45    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
46    #[prost(uint64, optional, tag = "8")]
47    pub chunks_discarded: ::core::option::Option<u64>,
48    /// Num. patches that were discarded by the service before attempting to apply
49    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
50    #[prost(uint64, optional, tag = "9")]
51    pub patches_discarded: ::core::option::Option<u64>,
52    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
53    /// is a bug in the producer.
54    #[prost(uint64, optional, tag = "10")]
55    pub invalid_packets: ::core::option::Option<u64>,
56    #[prost(message, optional, tag = "11")]
57    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
58    /// Count of Flush() requests (either from the Consumer, or self-induced
59    /// periodic flushes). The final Flush() is also included in the count.
60    #[prost(uint64, optional, tag = "12")]
61    pub flushes_requested: ::core::option::Option<u64>,
62    /// The count of the Flush() requests that were completed successfully.
63    /// In a well behaving trace this should always be == `flush_requests`.
64    #[prost(uint64, optional, tag = "13")]
65    pub flushes_succeeded: ::core::option::Option<u64>,
66    /// The count of the Flush() requests that failed (in most timed out).
67    /// In a well behaving trace this should always be == 0.
68    #[prost(uint64, optional, tag = "14")]
69    pub flushes_failed: ::core::option::Option<u64>,
70    #[prost(enumeration = "trace_stats::FinalFlushOutcome", optional, tag = "15")]
71    pub final_flush_outcome: ::core::option::Option<i32>,
72}
73/// Nested message and enum types in `TraceStats`.
74pub mod trace_stats {
75    /// From TraceBuffer::Stats.
76    ///
77    /// Next id: 21.
78    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
79    pub struct BufferStats {
80        /// Size of the circular buffer in bytes.
81        #[prost(uint64, optional, tag = "12")]
82        pub buffer_size: ::core::option::Option<u64>,
83        /// Num. bytes written into the circular buffer, including chunk headers.
84        #[prost(uint64, optional, tag = "1")]
85        pub bytes_written: ::core::option::Option<u64>,
86        /// Num. bytes overwritten before they have been read (i.e. loss of data).
87        #[prost(uint64, optional, tag = "13")]
88        pub bytes_overwritten: ::core::option::Option<u64>,
89        /// Total size of chunks that were fully read from the circular buffer by the
90        /// consumer. This may not be equal to |bytes_written| either in the middle
91        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
92        /// size of the chunks read from the buffer, including chunk headers, which
93        /// will be different from the total size of packets returned to the
94        /// consumer.
95        ///
96        /// The current utilization of the trace buffer (mid-tracing) can be obtained
97        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
98        /// adding the difference of |padding_bytes_written| and
99        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
100        /// Note that this represents the total size of buffered data in the buffer,
101        /// yet this data may be spread non-contiguously through the buffer and may
102        /// be overridden before the utilization reaches 100%.
103        #[prost(uint64, optional, tag = "14")]
104        pub bytes_read: ::core::option::Option<u64>,
105        /// Num. bytes that were allocated as padding between chunks in the circular
106        /// buffer.
107        #[prost(uint64, optional, tag = "15")]
108        pub padding_bytes_written: ::core::option::Option<u64>,
109        /// Num. of padding bytes that were removed from the circular buffer when
110        /// they were overwritten.
111        ///
112        /// The difference between |padding_bytes_written| and
113        /// |padding_bytes_cleared| denotes the total size of padding currently
114        /// present in the buffer.
115        #[prost(uint64, optional, tag = "16")]
116        pub padding_bytes_cleared: ::core::option::Option<u64>,
117        /// Num. chunks (!= packets) written into the buffer.
118        #[prost(uint64, optional, tag = "2")]
119        pub chunks_written: ::core::option::Option<u64>,
120        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
121        /// the same chunk with additional packets appended to the end.
122        #[prost(uint64, optional, tag = "10")]
123        pub chunks_rewritten: ::core::option::Option<u64>,
124        /// Num. chunks overwritten before they have been read (i.e. loss of data).
125        #[prost(uint64, optional, tag = "3")]
126        pub chunks_overwritten: ::core::option::Option<u64>,
127        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
128        /// is configured with FillPolicy == DISCARD.
129        #[prost(uint64, optional, tag = "18")]
130        pub chunks_discarded: ::core::option::Option<u64>,
131        /// Num. chunks (!= packets) that were fully read from the circular buffer by
132        /// the consumer. This may not be equal to |chunks_written| either in the
133        /// middle of tracing, or if |chunks_overwritten| is non-zero.
134        #[prost(uint64, optional, tag = "17")]
135        pub chunks_read: ::core::option::Option<u64>,
136        /// Num. chunks that were committed out of order.
137        #[prost(uint64, optional, tag = "11")]
138        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
139        /// Num. times the ring buffer wrapped around.
140        #[prost(uint64, optional, tag = "4")]
141        pub write_wrap_count: ::core::option::Option<u64>,
142        /// Num. out-of-band (OOB) patches that succeeded.
143        #[prost(uint64, optional, tag = "5")]
144        pub patches_succeeded: ::core::option::Option<u64>,
145        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
146        #[prost(uint64, optional, tag = "6")]
147        pub patches_failed: ::core::option::Option<u64>,
148        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
149        /// successful packet read.
150        #[prost(uint64, optional, tag = "7")]
151        pub readaheads_succeeded: ::core::option::Option<u64>,
152        /// Num. readaheads aborted because of missing chunks in the sequence stream.
153        /// Note that a small number > 0 is totally expected: occasionally, when
154        /// issuing a read, the very last packet in a sequence might be incomplete
155        /// (because the producer is still writing it while we read). The read will
156        /// stop at that point, for that sequence, increasing this counter.
157        #[prost(uint64, optional, tag = "8")]
158        pub readaheads_failed: ::core::option::Option<u64>,
159        /// Num. of violations of the SharedMemoryABI found while writing or reading
160        /// the buffer. This is an indication of either a bug in the producer(s) or
161        /// malicious producer(s).
162        #[prost(uint64, optional, tag = "9")]
163        pub abi_violations: ::core::option::Option<u64>,
164        /// Num. of times the service detected packet loss on a trace writer
165        /// sequence. This is usually caused by exhaustion of available chunks in the
166        /// writer process's SMB. Note that this relies on the client's TraceWriter
167        /// indicating this loss to the service -- packets lost for other reasons are
168        /// not reflected in this stat.
169        #[prost(uint64, optional, tag = "19")]
170        pub trace_writer_packet_loss: ::core::option::Option<u64>,
171    }
172    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
173    /// visible as a unique sequence ID in the trace.
174    #[derive(Clone, PartialEq, ::prost::Message)]
175    pub struct WriterStats {
176        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
177        /// correlate the stats with the actual packet types.
178        #[prost(uint64, optional, tag = "1")]
179        pub sequence_id: ::core::option::Option<u64>,
180        /// The buffer index (0..N, as defined in the TraceConfig).
181        #[prost(uint32, optional, tag = "4")]
182        pub buffer: ::core::option::Option<u32>,
183        /// These two arrays have the same cardinality and match the cardinality of
184        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
185        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
186        /// for each bucket.
187        #[prost(uint64, repeated, tag = "2")]
188        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
189        #[prost(int64, repeated, tag = "3")]
190        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
191    }
192    /// This is set only when the TraceConfig specifies a TraceFilter.
193    #[derive(Clone, PartialEq, ::prost::Message)]
194    pub struct FilterStats {
195        #[prost(uint64, optional, tag = "1")]
196        pub input_packets: ::core::option::Option<u64>,
197        #[prost(uint64, optional, tag = "2")]
198        pub input_bytes: ::core::option::Option<u64>,
199        #[prost(uint64, optional, tag = "3")]
200        pub output_bytes: ::core::option::Option<u64>,
201        #[prost(uint64, optional, tag = "4")]
202        pub errors: ::core::option::Option<u64>,
203        #[prost(uint64, optional, tag = "5")]
204        pub time_taken_ns: ::core::option::Option<u64>,
205        /// The number of bytes discarded by the filter (i.e. output - input).
206        /// The array has one entry for each buffer defined in the config (unless no
207        /// packets for that buffer were seen and hence filtered).
208        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
209        /// (output_bytes - input_bytes) because the filter might also discard
210        /// server-generated synthetic packets, that have no buffer index.
211        #[prost(uint64, repeated, packed = "false", tag = "20")]
212        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
213    }
214    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
215    #[repr(i32)]
216    pub enum FinalFlushOutcome {
217        FinalFlushUnspecified = 0,
218        FinalFlushSucceeded = 1,
219        FinalFlushFailed = 2,
220    }
221    impl FinalFlushOutcome {
222        /// String value of the enum field names used in the ProtoBuf definition.
223        ///
224        /// The values are not transformed in any way and thus are considered stable
225        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
226        pub fn as_str_name(&self) -> &'static str {
227            match self {
228                Self::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
229                Self::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
230                Self::FinalFlushFailed => "FINAL_FLUSH_FAILED",
231            }
232        }
233        /// Creates an enum from field names used in the ProtoBuf definition.
234        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
235            match value {
236                "FINAL_FLUSH_UNSPECIFIED" => Some(Self::FinalFlushUnspecified),
237                "FINAL_FLUSH_SUCCEEDED" => Some(Self::FinalFlushSucceeded),
238                "FINAL_FLUSH_FAILED" => Some(Self::FinalFlushFailed),
239                _ => None,
240            }
241        }
242    }
243}
244#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
245#[repr(i32)]
246pub enum BuiltinClock {
247    Unknown = 0,
248    Realtime = 1,
249    RealtimeCoarse = 2,
250    Monotonic = 3,
251    MonotonicCoarse = 4,
252    MonotonicRaw = 5,
253    Boottime = 6,
254    Tsc = 9,
255    MaxId = 63,
256}
257impl BuiltinClock {
258    /// String value of the enum field names used in the ProtoBuf definition.
259    ///
260    /// The values are not transformed in any way and thus are considered stable
261    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
262    pub fn as_str_name(&self) -> &'static str {
263        match self {
264            Self::Unknown => "BUILTIN_CLOCK_UNKNOWN",
265            Self::Realtime => "BUILTIN_CLOCK_REALTIME",
266            Self::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
267            Self::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
268            Self::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
269            Self::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
270            Self::Boottime => "BUILTIN_CLOCK_BOOTTIME",
271            Self::Tsc => "BUILTIN_CLOCK_TSC",
272            Self::MaxId => "BUILTIN_CLOCK_MAX_ID",
273        }
274    }
275    /// Creates an enum from field names used in the ProtoBuf definition.
276    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
277        match value {
278            "BUILTIN_CLOCK_UNKNOWN" => Some(Self::Unknown),
279            "BUILTIN_CLOCK_REALTIME" => Some(Self::Realtime),
280            "BUILTIN_CLOCK_REALTIME_COARSE" => Some(Self::RealtimeCoarse),
281            "BUILTIN_CLOCK_MONOTONIC" => Some(Self::Monotonic),
282            "BUILTIN_CLOCK_MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
283            "BUILTIN_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
284            "BUILTIN_CLOCK_BOOTTIME" => Some(Self::Boottime),
285            "BUILTIN_CLOCK_TSC" => Some(Self::Tsc),
286            "BUILTIN_CLOCK_MAX_ID" => Some(Self::MaxId),
287            _ => None,
288        }
289    }
290}
291/// Data source that lists game modes and game interventions of games
292/// on an Android device.
293#[derive(Clone, PartialEq, ::prost::Message)]
294pub struct AndroidGameInterventionListConfig {
295    /// If not empty, emit info about only the following list of package names
296    /// (exact match, no regex). Otherwise, emit info about all packages.
297    #[prost(string, repeated, tag = "1")]
298    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
299}
300/// Custom configuration for the "android.input.inputevent" data source.
301///
302/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
303///
304/// Next ID: 5
305#[derive(Clone, PartialEq, ::prost::Message)]
306pub struct AndroidInputEventConfig {
307    /// The tracing mode to use. If unspecified, it will default to
308    /// TRACE_MODE_USE_RULES.
309    #[prost(
310        enumeration = "android_input_event_config::TraceMode",
311        optional,
312        tag = "1"
313    )]
314    pub mode: ::core::option::Option<i32>,
315    /// The list of rules to use to determine the trace level of events.
316    /// Each event will be traced using the TraceLevel of the first rule that it
317    /// triggers from this list. The rules are evaluated in the order in which they
318    /// are specified. If an event does not match any of the rules,
319    /// TRACE_LEVEL_NONE will be used by default.
320    #[prost(message, repeated, tag = "2")]
321    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
322    /// Trace input events processed by the system as they are being dispatched
323    /// to application windows. All trace rules will apply.
324    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
325    ///    it will
326    ///      trace InputDispatcher's inbound events (which does not include events
327    ///      synthesized within InputDispatcher) that match the rules.
328    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
329    ///    events
330    ///      matching the rules, including all events synthesized within
331    ///      InputDispatcher, will be traced.
332    #[prost(bool, optional, tag = "3")]
333    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
334    /// Trace details about which windows the system is sending each input event
335    /// to. All trace rules will apply.
336    #[prost(bool, optional, tag = "4")]
337    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
338}
339/// Nested message and enum types in `AndroidInputEventConfig`.
340pub mod android_input_event_config {
341    /// A rule that specifies the TraceLevel for an event based on matching
342    /// conditions. All matchers in the rule are optional. To trigger this rule, an
343    /// event must match all of its specified matchers (i.e. the matchers function
344    /// like a series of conditions connected by a logical 'AND' operator). A rule
345    /// with no specified matchers will match all events. Next ID: 6
346    #[derive(Clone, PartialEq, ::prost::Message)]
347    pub struct TraceRule {
348        /// The trace level to be used for events that trigger this rule.
349        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
350        #[prost(enumeration = "TraceLevel", optional, tag = "1")]
351        pub trace_level: ::core::option::Option<i32>,
352        /// Package matchers
353        ///
354        /// Respectively matches if all or any of the target apps for this event are
355        /// contained in the specified list of package names.
356        ///
357        /// Intended usage:
358        ///    - Use match_all_packages to selectively allow tracing for the listed
359        ///    packages.
360        ///    - Use match_any_packages to selectively deny tracing for certain
361        ///    packages.
362        ///
363        /// WARNING: Great care must be taken when designing rules for field tracing!
364        ///           This is because each event is almost always sent to more than
365        ///           one app.
366        ///               For example, when allowing tracing for a package that has a
367        ///               spy window
368        ///           over the display (e.g. SystemUI) using match_any_packages,
369        ///           essentially all input will be recorded on that display. This is
370        ///           because the events will be sent to the spy as well as the
371        ///           foreground app, and regardless of what the foreground app is,
372        ///           the event will end up being traced.
373        ///               Alternatively, when attempting to block tracing for specific
374        ///               packages using
375        ///           match_all_packages, no events will likely be blocked. This is
376        ///           because the event will also be sent to other apps (such as, but
377        ///           not limited to, ones with spy windows), so the matcher will not
378        ///           match unless all other targets are also listed under the
379        ///           match_all_packages list.
380        #[prost(string, repeated, tag = "2")]
381        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
382        #[prost(string, repeated, tag = "3")]
383        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
384        /// Matches if the event is secure, which means that at least one of the
385        /// targets of this event is using the window flag FLAG_SECURE.
386        #[prost(bool, optional, tag = "4")]
387        pub match_secure: ::core::option::Option<bool>,
388        /// Matches if there was an active IME connection while this event was being
389        /// processed.
390        #[prost(bool, optional, tag = "5")]
391        pub match_ime_connection_active: ::core::option::Option<bool>,
392    }
393    /// Trace modes are tracing presets that are included in the system.
394    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
395    #[repr(i32)]
396    pub enum TraceMode {
397        /// Preset mode for maximal tracing.
398        /// WARNING: This will bypass all privacy measures on debuggable builds, and
399        /// will record all
400        ///           input events processed by the system, regardless of the context
401        ///           in which they were processed. It should only be used for tracing
402        ///           on a local device or for tests. It should NEVER be used for
403        ///           field tracing.
404        TraceAll = 0,
405        /// Use the tracing rules defined in this config to specify what events to
406        /// trace.
407        UseRules = 1,
408    }
409    impl TraceMode {
410        /// String value of the enum field names used in the ProtoBuf definition.
411        ///
412        /// The values are not transformed in any way and thus are considered stable
413        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
414        pub fn as_str_name(&self) -> &'static str {
415            match self {
416                Self::TraceAll => "TRACE_MODE_TRACE_ALL",
417                Self::UseRules => "TRACE_MODE_USE_RULES",
418            }
419        }
420        /// Creates an enum from field names used in the ProtoBuf definition.
421        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
422            match value {
423                "TRACE_MODE_TRACE_ALL" => Some(Self::TraceAll),
424                "TRACE_MODE_USE_RULES" => Some(Self::UseRules),
425                _ => None,
426            }
427        }
428    }
429    /// The level of tracing that should be applied to an event.
430    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
431    #[repr(i32)]
432    pub enum TraceLevel {
433        /// Do not trace the input event.
434        None = 0,
435        /// Trace the event as a redacted event, where certain sensitive fields are
436        /// omitted from the trace, including the coordinates of pointer events and
437        /// the key/scan codes of key events.
438        Redacted = 1,
439        /// Trace the complete event.
440        Complete = 2,
441    }
442    impl TraceLevel {
443        /// String value of the enum field names used in the ProtoBuf definition.
444        ///
445        /// The values are not transformed in any way and thus are considered stable
446        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
447        pub fn as_str_name(&self) -> &'static str {
448            match self {
449                Self::None => "TRACE_LEVEL_NONE",
450                Self::Redacted => "TRACE_LEVEL_REDACTED",
451                Self::Complete => "TRACE_LEVEL_COMPLETE",
452            }
453        }
454        /// Creates an enum from field names used in the ProtoBuf definition.
455        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
456            match value {
457                "TRACE_LEVEL_NONE" => Some(Self::None),
458                "TRACE_LEVEL_REDACTED" => Some(Self::Redacted),
459                "TRACE_LEVEL_COMPLETE" => Some(Self::Complete),
460                _ => None,
461            }
462        }
463    }
464}
465/// Values from NDK's android/log.h.
466#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
467#[repr(i32)]
468pub enum AndroidLogId {
469    /// MAIN.
470    LidDefault = 0,
471    LidRadio = 1,
472    LidEvents = 2,
473    LidSystem = 3,
474    LidCrash = 4,
475    LidStats = 5,
476    LidSecurity = 6,
477    LidKernel = 7,
478}
479impl AndroidLogId {
480    /// String value of the enum field names used in the ProtoBuf definition.
481    ///
482    /// The values are not transformed in any way and thus are considered stable
483    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
484    pub fn as_str_name(&self) -> &'static str {
485        match self {
486            Self::LidDefault => "LID_DEFAULT",
487            Self::LidRadio => "LID_RADIO",
488            Self::LidEvents => "LID_EVENTS",
489            Self::LidSystem => "LID_SYSTEM",
490            Self::LidCrash => "LID_CRASH",
491            Self::LidStats => "LID_STATS",
492            Self::LidSecurity => "LID_SECURITY",
493            Self::LidKernel => "LID_KERNEL",
494        }
495    }
496    /// Creates an enum from field names used in the ProtoBuf definition.
497    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
498        match value {
499            "LID_DEFAULT" => Some(Self::LidDefault),
500            "LID_RADIO" => Some(Self::LidRadio),
501            "LID_EVENTS" => Some(Self::LidEvents),
502            "LID_SYSTEM" => Some(Self::LidSystem),
503            "LID_CRASH" => Some(Self::LidCrash),
504            "LID_STATS" => Some(Self::LidStats),
505            "LID_SECURITY" => Some(Self::LidSecurity),
506            "LID_KERNEL" => Some(Self::LidKernel),
507            _ => None,
508        }
509    }
510}
511#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
512#[repr(i32)]
513pub enum AndroidLogPriority {
514    PrioUnspecified = 0,
515    /// _DEFAULT, but should never be seen in logs.
516    PrioUnused = 1,
517    PrioVerbose = 2,
518    PrioDebug = 3,
519    PrioInfo = 4,
520    PrioWarn = 5,
521    PrioError = 6,
522    PrioFatal = 7,
523}
524impl AndroidLogPriority {
525    /// String value of the enum field names used in the ProtoBuf definition.
526    ///
527    /// The values are not transformed in any way and thus are considered stable
528    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
529    pub fn as_str_name(&self) -> &'static str {
530        match self {
531            Self::PrioUnspecified => "PRIO_UNSPECIFIED",
532            Self::PrioUnused => "PRIO_UNUSED",
533            Self::PrioVerbose => "PRIO_VERBOSE",
534            Self::PrioDebug => "PRIO_DEBUG",
535            Self::PrioInfo => "PRIO_INFO",
536            Self::PrioWarn => "PRIO_WARN",
537            Self::PrioError => "PRIO_ERROR",
538            Self::PrioFatal => "PRIO_FATAL",
539        }
540    }
541    /// Creates an enum from field names used in the ProtoBuf definition.
542    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
543        match value {
544            "PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
545            "PRIO_UNUSED" => Some(Self::PrioUnused),
546            "PRIO_VERBOSE" => Some(Self::PrioVerbose),
547            "PRIO_DEBUG" => Some(Self::PrioDebug),
548            "PRIO_INFO" => Some(Self::PrioInfo),
549            "PRIO_WARN" => Some(Self::PrioWarn),
550            "PRIO_ERROR" => Some(Self::PrioError),
551            "PRIO_FATAL" => Some(Self::PrioFatal),
552            _ => None,
553        }
554    }
555}
556#[derive(Clone, PartialEq, ::prost::Message)]
557pub struct AndroidLogConfig {
558    #[prost(enumeration = "AndroidLogId", repeated, packed = "false", tag = "1")]
559    pub log_ids: ::prost::alloc::vec::Vec<i32>,
560    /// If set ignores all log messages whose prio is < the given value.
561    #[prost(enumeration = "AndroidLogPriority", optional, tag = "3")]
562    pub min_prio: ::core::option::Option<i32>,
563    /// If non-empty ignores all log messages whose tag doesn't match one of the
564    /// specified values.
565    #[prost(string, repeated, tag = "4")]
566    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
567}
568/// Data source that polls for display state. This should only be used for
569/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
570#[derive(Clone, Copy, PartialEq, ::prost::Message)]
571pub struct AndroidPolledStateConfig {
572    /// Frequency of polling. If absent the state will be recorded once, at the
573    /// start of the trace.
574    /// This is required to be > 100ms to avoid excessive CPU usage.
575    #[prost(uint32, optional, tag = "1")]
576    pub poll_ms: ::core::option::Option<u32>,
577}
578/// Data source that polls for system properties.
579#[derive(Clone, PartialEq, ::prost::Message)]
580pub struct AndroidSystemPropertyConfig {
581    /// Frequency of polling. If absent the state will be recorded once, at the
582    /// start of the trace.
583    /// This is required to be > 100ms to avoid excessive CPU usage.
584    #[prost(uint32, optional, tag = "1")]
585    pub poll_ms: ::core::option::Option<u32>,
586    /// Properties to poll. All property names must start with "debug.tracing.".
587    #[prost(string, repeated, tag = "2")]
588    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
589}
590/// Data source that controls the system properties used to guard initialization
591/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
592/// processes like SurfaceFlinger.
593///
594/// This data source only tells Skia to initialized the Perfetto SDK and start
595/// routing data to the Track Event system instead of ATrace. For those events
596/// to actually show up in a trace, the track_event data source must be used as
597/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
598/// processes may need to be restarted for Skia to revert to using ATrace if
599/// Track Events are no longer desired.
600///
601/// In addition to switching Skia to use Perfetto's track_event data source,
602/// this "guard" also controls Skia's "broad tracing", which removes Skia's
603/// internal tracing constraints and allows the track_event config to specify
604/// which categories should be traced. Filtering to the "skia.always" category
605/// *tag* in a track_event config can be used to re-enable the standard
606/// constraints typically used with ATrace.
607///
608/// Data source name: android.sdk_sysprop_guard
609/// Introduced in Android 14 (U) QPR1.
610/// Next id: 4
611#[derive(Clone, PartialEq, ::prost::Message)]
612pub struct AndroidSdkSyspropGuardConfig {
613    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
614    /// integration with the track_event data source in RenderEngine.
615    /// If false or omitted, the simpler ATrace fallback is used.
616    ///
617    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
618    /// restarted.
619    ///
620    /// Specifically this sets the following system properties:
621    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
622    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
623    ///
624    /// Does not affect actual track_event data *collection*, which must be
625    /// configured seperately.
626    #[prost(bool, optional, tag = "1")]
627    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
628    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
629    /// with the track_event data source. hwui_package_name_filter
630    /// can be used to control which apps are affected.
631    /// If false or omitted, the simpler ATrace fallback is used.
632    ///
633    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
634    /// restarted.
635    ///
636    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
637    /// If filtering is NOT set, this controls these GLOBAL system properties:
638    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
639    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
640    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
641    /// for each package listed in the filter:
642    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
643    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
644    ///
645    /// Does not affect actual track_event data *collection*, which must be
646    /// configured seperately.
647    #[prost(bool, optional, tag = "2")]
648    pub hwui_skia_track_events: ::core::option::Option<bool>,
649    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
650    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
651    #[prost(string, repeated, tag = "3")]
652    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
653}
654/// Network tracing data source that records details on all packets sent or
655/// received by the network.
656#[derive(Clone, Copy, PartialEq, ::prost::Message)]
657pub struct NetworkPacketTraceConfig {
658    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
659    /// ring buffer. The polling interval should be such that the ring buffer is
660    /// unlikely to fill in that interval (or that filling is an acceptable risk).
661    /// The minimum polling rate is 100ms (values below this are ignored).
662    /// Introduced in Android 14 (U).
663    #[prost(uint32, optional, tag = "1")]
664    pub poll_ms: ::core::option::Option<u32>,
665    /// The aggregation_threshold is the number of packets at which an event will
666    /// switch from per-packet details to aggregate details. For example, a value
667    /// of 50 means that if a particular event (grouped by the unique combinations
668    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
669    /// packets, the exact timestamp and length are recorded for each packet. If
670    /// there were 50 or more packets in an event, it would only record the total
671    /// duration, packets, and length. A value of zero or unspecified will always
672    /// / record per-packet details. A value of 1 always records aggregate details.
673    #[prost(uint32, optional, tag = "2")]
674    pub aggregation_threshold: ::core::option::Option<u32>,
675    /// Specifies the maximum number of packet contexts to intern at a time. This
676    /// prevents the interning table from growing too large and controls whether
677    /// interning is enabled or disabled (a value of zero disables interning and
678    /// is the default). When a data sources interning table reaches this amount,
679    /// packet contexts will be inlined into NetworkPacketEvents.
680    #[prost(uint32, optional, tag = "3")]
681    pub intern_limit: ::core::option::Option<u32>,
682    /// The following fields specify whether certain fields should be dropped from
683    /// the output. Dropping fields improves normalization results, reduces the
684    /// size of the interning table, and slightly reduces event size.
685    #[prost(bool, optional, tag = "4")]
686    pub drop_local_port: ::core::option::Option<bool>,
687    #[prost(bool, optional, tag = "5")]
688    pub drop_remote_port: ::core::option::Option<bool>,
689    #[prost(bool, optional, tag = "6")]
690    pub drop_tcp_flags: ::core::option::Option<bool>,
691}
692/// Data source that lists details (such as version code) about packages on an
693/// Android device.
694#[derive(Clone, PartialEq, ::prost::Message)]
695pub struct PackagesListConfig {
696    /// If not empty, emit info about only the following list of package names
697    /// (exact match, no regex). Otherwise, emit info about all packages.
698    #[prost(string, repeated, tag = "1")]
699    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
700}
701/// Data source that records events from the modem.
702#[derive(Clone, PartialEq, ::prost::Message)]
703pub struct PixelModemConfig {
704    #[prost(enumeration = "pixel_modem_config::EventGroup", optional, tag = "1")]
705    pub event_group: ::core::option::Option<i32>,
706    /// If set, record only events with these hashes.
707    #[prost(int64, repeated, packed = "false", tag = "2")]
708    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
709    /// If set and allow_list is not set, deny events with these hashes.
710    #[prost(int64, repeated, packed = "false", tag = "3")]
711    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
712}
713/// Nested message and enum types in `PixelModemConfig`.
714pub mod pixel_modem_config {
715    /// Event group to record, as defined by the modem.
716    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
717    #[repr(i32)]
718    pub enum EventGroup {
719        Unknown = 0,
720        /// Events suitable for low bandwidth tracing only.
721        LowBandwidth = 1,
722        /// Events suitable for high and low bandwidth tracing.
723        HighAndLowBandwidth = 2,
724    }
725    impl EventGroup {
726        /// String value of the enum field names used in the ProtoBuf definition.
727        ///
728        /// The values are not transformed in any way and thus are considered stable
729        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
730        pub fn as_str_name(&self) -> &'static str {
731            match self {
732                Self::Unknown => "EVENT_GROUP_UNKNOWN",
733                Self::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
734                Self::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
735            }
736        }
737        /// Creates an enum from field names used in the ProtoBuf definition.
738        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
739            match value {
740                "EVENT_GROUP_UNKNOWN" => Some(Self::Unknown),
741                "EVENT_GROUP_LOW_BANDWIDTH" => Some(Self::LowBandwidth),
742                "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH" => Some(Self::HighAndLowBandwidth),
743                _ => None,
744            }
745        }
746    }
747}
748#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
749#[repr(i32)]
750pub enum ProtoLogLevel {
751    ProtologLevelUndefined = 0,
752    ProtologLevelDebug = 1,
753    ProtologLevelVerbose = 2,
754    ProtologLevelInfo = 3,
755    ProtologLevelWarn = 4,
756    ProtologLevelError = 5,
757    ProtologLevelWtf = 6,
758}
759impl ProtoLogLevel {
760    /// String value of the enum field names used in the ProtoBuf definition.
761    ///
762    /// The values are not transformed in any way and thus are considered stable
763    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
764    pub fn as_str_name(&self) -> &'static str {
765        match self {
766            Self::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
767            Self::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
768            Self::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
769            Self::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
770            Self::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
771            Self::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
772            Self::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
773        }
774    }
775    /// Creates an enum from field names used in the ProtoBuf definition.
776    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
777        match value {
778            "PROTOLOG_LEVEL_UNDEFINED" => Some(Self::ProtologLevelUndefined),
779            "PROTOLOG_LEVEL_DEBUG" => Some(Self::ProtologLevelDebug),
780            "PROTOLOG_LEVEL_VERBOSE" => Some(Self::ProtologLevelVerbose),
781            "PROTOLOG_LEVEL_INFO" => Some(Self::ProtologLevelInfo),
782            "PROTOLOG_LEVEL_WARN" => Some(Self::ProtologLevelWarn),
783            "PROTOLOG_LEVEL_ERROR" => Some(Self::ProtologLevelError),
784            "PROTOLOG_LEVEL_WTF" => Some(Self::ProtologLevelWtf),
785            _ => None,
786        }
787    }
788}
789/// Custom configuration for the "android.protolog" data source.
790/// ProtoLog is a logging mechanism that is intented to be more efficient than
791/// logcat. This configures what logs to capture in the tracing instance.
792#[derive(Clone, PartialEq, ::prost::Message)]
793pub struct ProtoLogConfig {
794    /// Specified the configurations for each of the logging groups. If none is
795    /// specified for a group the defaults will be used.
796    #[prost(message, repeated, tag = "1")]
797    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
798    /// Specified what tracing mode to use for the tracing instance.
799    #[prost(enumeration = "proto_log_config::TracingMode", optional, tag = "2")]
800    pub tracing_mode: ::core::option::Option<i32>,
801}
802/// Nested message and enum types in `ProtoLogConfig`.
803pub mod proto_log_config {
804    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
805    #[repr(i32)]
806    pub enum TracingMode {
807        /// When using the DEFAULT tracing mode, only log groups and levels specified
808        /// in the group_overrides are traced.
809        Default = 0,
810        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
811        /// traced, unless specified in the group_overrides.
812        EnableAll = 1,
813    }
814    impl TracingMode {
815        /// String value of the enum field names used in the ProtoBuf definition.
816        ///
817        /// The values are not transformed in any way and thus are considered stable
818        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
819        pub fn as_str_name(&self) -> &'static str {
820            match self {
821                Self::Default => "DEFAULT",
822                Self::EnableAll => "ENABLE_ALL",
823            }
824        }
825        /// Creates an enum from field names used in the ProtoBuf definition.
826        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
827            match value {
828                "DEFAULT" => Some(Self::Default),
829                "ENABLE_ALL" => Some(Self::EnableAll),
830                _ => None,
831            }
832        }
833    }
834}
835#[derive(Clone, PartialEq, ::prost::Message)]
836pub struct ProtoLogGroup {
837    /// The ProtoLog group name this configuration entry applies to.
838    #[prost(string, optional, tag = "1")]
839    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
840    /// Specify the level from which to start capturing protologs.
841    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
842    /// message will be traced.
843    #[prost(enumeration = "ProtoLogLevel", optional, tag = "2")]
844    pub log_from: ::core::option::Option<i32>,
845    /// When set to true we will collect the stacktrace for each protolog message
846    /// in this group that we are tracing.
847    #[prost(bool, optional, tag = "3")]
848    pub collect_stacktrace: ::core::option::Option<bool>,
849}
850/// Custom configuration for the "android.surfaceflinger.layers" data source.
851#[derive(Clone, PartialEq, ::prost::Message)]
852pub struct SurfaceFlingerLayersConfig {
853    #[prost(
854        enumeration = "surface_flinger_layers_config::Mode",
855        optional,
856        tag = "1"
857    )]
858    pub mode: ::core::option::Option<i32>,
859    #[prost(
860        enumeration = "surface_flinger_layers_config::TraceFlag",
861        repeated,
862        packed = "false",
863        tag = "2"
864    )]
865    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
866}
867/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
868pub mod surface_flinger_layers_config {
869    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
870    #[repr(i32)]
871    pub enum Mode {
872        Unspecified = 0,
873        /// Trace layers snapshots. A snapshot is taken every time a layers change
874        /// occurs.
875        Active = 1,
876        /// Generate layers snapshots from the transactions kept in the
877        /// SurfaceFlinger's internal ring buffer.
878        /// The layers snapshots generation occurs when this data source is flushed.
879        Generated = 2,
880        /// Trace a single layers snapshot.
881        Dump = 3,
882        /// Default mode (applied by SurfaceFlinger if no mode is specified).
883        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only when a bugreport
884        /// is taken.
885        GeneratedBugreportOnly = 4,
886    }
887    impl Mode {
888        /// String value of the enum field names used in the ProtoBuf definition.
889        ///
890        /// The values are not transformed in any way and thus are considered stable
891        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
892        pub fn as_str_name(&self) -> &'static str {
893            match self {
894                Self::Unspecified => "MODE_UNSPECIFIED",
895                Self::Active => "MODE_ACTIVE",
896                Self::Generated => "MODE_GENERATED",
897                Self::Dump => "MODE_DUMP",
898                Self::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
899            }
900        }
901        /// Creates an enum from field names used in the ProtoBuf definition.
902        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
903            match value {
904                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
905                "MODE_ACTIVE" => Some(Self::Active),
906                "MODE_GENERATED" => Some(Self::Generated),
907                "MODE_DUMP" => Some(Self::Dump),
908                "MODE_GENERATED_BUGREPORT_ONLY" => Some(Self::GeneratedBugreportOnly),
909                _ => None,
910            }
911        }
912    }
913    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
914    #[repr(i32)]
915    pub enum TraceFlag {
916        Unspecified = 0,
917        Input = 2,
918        Composition = 4,
919        Extra = 8,
920        Hwc = 16,
921        Buffers = 32,
922        VirtualDisplays = 64,
923        /// INPUT | COMPOSITION | EXTRA
924        All = 14,
925    }
926    impl TraceFlag {
927        /// String value of the enum field names used in the ProtoBuf definition.
928        ///
929        /// The values are not transformed in any way and thus are considered stable
930        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
931        pub fn as_str_name(&self) -> &'static str {
932            match self {
933                Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
934                Self::Input => "TRACE_FLAG_INPUT",
935                Self::Composition => "TRACE_FLAG_COMPOSITION",
936                Self::Extra => "TRACE_FLAG_EXTRA",
937                Self::Hwc => "TRACE_FLAG_HWC",
938                Self::Buffers => "TRACE_FLAG_BUFFERS",
939                Self::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
940                Self::All => "TRACE_FLAG_ALL",
941            }
942        }
943        /// Creates an enum from field names used in the ProtoBuf definition.
944        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
945            match value {
946                "TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
947                "TRACE_FLAG_INPUT" => Some(Self::Input),
948                "TRACE_FLAG_COMPOSITION" => Some(Self::Composition),
949                "TRACE_FLAG_EXTRA" => Some(Self::Extra),
950                "TRACE_FLAG_HWC" => Some(Self::Hwc),
951                "TRACE_FLAG_BUFFERS" => Some(Self::Buffers),
952                "TRACE_FLAG_VIRTUAL_DISPLAYS" => Some(Self::VirtualDisplays),
953                "TRACE_FLAG_ALL" => Some(Self::All),
954                _ => None,
955            }
956        }
957    }
958}
959/// Custom configuration for the "android.surfaceflinger.transactions" data
960/// source.
961#[derive(Clone, Copy, PartialEq, ::prost::Message)]
962pub struct SurfaceFlingerTransactionsConfig {
963    #[prost(
964        enumeration = "surface_flinger_transactions_config::Mode",
965        optional,
966        tag = "1"
967    )]
968    pub mode: ::core::option::Option<i32>,
969}
970/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
971pub mod surface_flinger_transactions_config {
972    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
973    #[repr(i32)]
974    pub enum Mode {
975        Unspecified = 0,
976        /// Default mode (applied by SurfaceFlinger if no mode is specified).
977        /// SurfaceFlinger writes its internal ring buffer of transactions every time
978        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
979        /// initial state and the latest transactions.
980        Continuous = 1,
981        /// SurfaceFlinger writes the initial state and then each incoming
982        /// transaction until the data source is stopped.
983        Active = 2,
984    }
985    impl Mode {
986        /// String value of the enum field names used in the ProtoBuf definition.
987        ///
988        /// The values are not transformed in any way and thus are considered stable
989        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
990        pub fn as_str_name(&self) -> &'static str {
991            match self {
992                Self::Unspecified => "MODE_UNSPECIFIED",
993                Self::Continuous => "MODE_CONTINUOUS",
994                Self::Active => "MODE_ACTIVE",
995            }
996        }
997        /// Creates an enum from field names used in the ProtoBuf definition.
998        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
999            match value {
1000                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
1001                "MODE_CONTINUOUS" => Some(Self::Continuous),
1002                "MODE_ACTIVE" => Some(Self::Active),
1003                _ => None,
1004            }
1005        }
1006    }
1007}
1008#[derive(Clone, PartialEq, ::prost::Message)]
1009pub struct ChromeConfig {
1010    #[prost(string, optional, tag = "1")]
1011    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1012    /// When enabled, the data source should only fill in fields in the output that
1013    /// are not potentially privacy sensitive.
1014    #[prost(bool, optional, tag = "2")]
1015    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1016    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1017    /// JSON format. Note that the trace data will still be returned as a series of
1018    /// TracePackets, but the embedded data will be JSON instead of serialized
1019    /// protobuf.
1020    #[prost(bool, optional, tag = "3")]
1021    pub convert_to_legacy_json: ::core::option::Option<bool>,
1022    #[prost(enumeration = "chrome_config::ClientPriority", optional, tag = "4")]
1023    pub client_priority: ::core::option::Option<i32>,
1024    /// Applicable only when using legacy JSON format.
1025    /// If |json_agent_label_filter| is not empty, only data pertaining to
1026    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1027    #[prost(string, optional, tag = "5")]
1028    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1029}
1030/// Nested message and enum types in `ChromeConfig`.
1031pub mod chrome_config {
1032    /// Priority of the tracing session client. A higher priority session may
1033    /// preempt a lower priority one in configurations where concurrent sessions
1034    /// aren't supported.
1035    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1036    #[repr(i32)]
1037    pub enum ClientPriority {
1038        Unknown = 0,
1039        Background = 1,
1040        UserInitiated = 2,
1041    }
1042    impl ClientPriority {
1043        /// String value of the enum field names used in the ProtoBuf definition.
1044        ///
1045        /// The values are not transformed in any way and thus are considered stable
1046        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1047        pub fn as_str_name(&self) -> &'static str {
1048            match self {
1049                Self::Unknown => "UNKNOWN",
1050                Self::Background => "BACKGROUND",
1051                Self::UserInitiated => "USER_INITIATED",
1052            }
1053        }
1054        /// Creates an enum from field names used in the ProtoBuf definition.
1055        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1056            match value {
1057                "UNKNOWN" => Some(Self::Unknown),
1058                "BACKGROUND" => Some(Self::Background),
1059                "USER_INITIATED" => Some(Self::UserInitiated),
1060                _ => None,
1061            }
1062        }
1063    }
1064}
1065#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1066pub struct V8Config {
1067    /// Whether to log the actual content of scripts (e.g. content of the JS file
1068    /// that was compiled to generate code).
1069    /// ATTENTION: This could considerably increase the size of the resuling trace
1070    ///             file.
1071    #[prost(bool, optional, tag = "1")]
1072    pub log_script_sources: ::core::option::Option<bool>,
1073    /// Whether to log the generated code for jitted functions (machine code or
1074    /// bytecode).
1075    /// ATTENTION: This could considerably increase the size of the resuling trace
1076    ///             file.
1077    #[prost(bool, optional, tag = "2")]
1078    pub log_instructions: ::core::option::Option<bool>,
1079}
1080/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1081/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1082/// ns-evntrace-event_trace_properties
1083#[derive(Clone, PartialEq, ::prost::Message)]
1084pub struct EtwConfig {
1085    /// The kernel_flags determines the flags that will be used by the etw tracing
1086    /// session. These kernel flags have been built to expose the useful events
1087    /// captured from the kernel mode only.
1088    #[prost(
1089        enumeration = "etw_config::KernelFlag",
1090        repeated,
1091        packed = "false",
1092        tag = "1"
1093    )]
1094    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1095}
1096/// Nested message and enum types in `EtwConfig`.
1097pub mod etw_config {
1098    /// The KernelFlag represent list of kernel flags that we are intrested in.
1099    /// To get a more extensive list run 'xperf -providers k'.
1100    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1101    #[repr(i32)]
1102    pub enum KernelFlag {
1103        Cswitch = 0,
1104        Dispatcher = 1,
1105    }
1106    impl KernelFlag {
1107        /// String value of the enum field names used in the ProtoBuf definition.
1108        ///
1109        /// The values are not transformed in any way and thus are considered stable
1110        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1111        pub fn as_str_name(&self) -> &'static str {
1112            match self {
1113                Self::Cswitch => "CSWITCH",
1114                Self::Dispatcher => "DISPATCHER",
1115            }
1116        }
1117        /// Creates an enum from field names used in the ProtoBuf definition.
1118        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1119            match value {
1120                "CSWITCH" => Some(Self::Cswitch),
1121                "DISPATCHER" => Some(Self::Dispatcher),
1122                _ => None,
1123            }
1124        }
1125    }
1126}
1127/// Next id: 28
1128#[derive(Clone, PartialEq, ::prost::Message)]
1129pub struct FtraceConfig {
1130    /// Ftrace events to record, example: "sched/sched_switch".
1131    #[prost(string, repeated, tag = "1")]
1132    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1133    /// Android-specific event categories:
1134    #[prost(string, repeated, tag = "2")]
1135    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1136    #[prost(string, repeated, tag = "3")]
1137    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1138    /// Size of each per-cpu kernel ftrace ring buffer.
1139    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
1140    /// buffers cannot be resized without pausing recording in the kernel.
1141    #[prost(uint32, optional, tag = "10")]
1142    pub buffer_size_kb: ::core::option::Option<u32>,
1143    /// If set, specifies how often the tracing daemon reads from the kernel ring
1144    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
1145    /// Leave unset unless you're fine-tuning a local config.
1146    #[prost(uint32, optional, tag = "11")]
1147    pub drain_period_ms: ::core::option::Option<u32>,
1148    /// If set, the tracing daemon will read kernel ring buffers as soon as
1149    /// they're filled past this percentage of occupancy. In other words, a value
1150    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
1151    /// half-full. Not guaranteed if there are multiple concurrent tracing
1152    /// sessions.
1153    /// Currently does nothing on Linux kernels below v6.1.
1154    /// Introduced in: perfetto v43.
1155    #[prost(uint32, optional, tag = "26")]
1156    pub drain_buffer_percent: ::core::option::Option<u32>,
1157    #[prost(message, optional, tag = "12")]
1158    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
1159    #[prost(message, optional, tag = "22")]
1160    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
1161    /// Enables symbol name resolution against /proc/kallsyms.
1162    /// It requires that either traced_probes is running as root or that
1163    /// kptr_restrict has been manually lowered.
1164    /// It does not disclose KASLR, symbol addresses are mangled.
1165    #[prost(bool, optional, tag = "13")]
1166    pub symbolize_ksyms: ::core::option::Option<bool>,
1167    #[prost(enumeration = "ftrace_config::KsymsMemPolicy", optional, tag = "17")]
1168    pub ksyms_mem_policy: ::core::option::Option<i32>,
1169    /// By default the kernel symbolizer is lazily initialized on a deferred task
1170    /// to reduce ftrace's time-to-start-recording. Unfortunately that makes
1171    /// ksyms integration tests hard. This flag forces the kernel symbolizer to be
1172    /// initialized synchronously on the data source start and hence avoiding
1173    /// timing races in tests.
1174    /// DEPRECATED in v28 / Android U. This is now the default behavior, setting it
1175    /// to true is a no-op.
1176    #[deprecated]
1177    #[prost(bool, optional, tag = "14")]
1178    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
1179    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
1180    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
1181    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
1182    /// The historical context for this is the following:
1183    /// - Up to Android S (12), the rss_stat was internally throttled in its
1184    ///    kernel implementation.
1185    /// - A change introduced in the kernels after S has introduced a new
1186    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
1187    ///    (hence very spammy).
1188    /// - Not all Android T/13 devices will receive a new kernel though, hence we
1189    ///    need to deal with both cases.
1190    /// For more context: go/rss-stat-throttled.
1191    #[prost(bool, optional, tag = "15")]
1192    pub throttle_rss_stat: ::core::option::Option<bool>,
1193    /// If true, avoid enabling events that aren't statically known by
1194    /// traced_probes. Otherwise, the default is to emit such events as
1195    /// GenericFtraceEvent protos.
1196    /// Prefer to keep this flag at its default. This was added for Android
1197    /// tracing, where atrace categories and/or atrace HAL requested events can
1198    /// expand to events that aren't of interest to the tracing user.
1199    /// Introduced in: Android T.
1200    #[prost(bool, optional, tag = "16")]
1201    pub disable_generic_events: ::core::option::Option<bool>,
1202    /// The subset of syscalls to record. To record all syscalls, leave this unset
1203    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
1204    /// * before perfetto v43, requires the config to also enable
1205    ///    raw_syscalls/sys_{enter,exit}.
1206    /// * perfetto v43+ does the right thing if you set only this field.
1207    /// Example: \["sys_read", "sys_open"\].
1208    /// Introduced in: Android U.
1209    #[prost(string, repeated, tag = "18")]
1210    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1211    /// If true, enable the "function_graph" kernel tracer that emits events
1212    /// whenever a kernel function is entered and exited
1213    /// (funcgraph_entry/funcgraph_exit).
1214    /// Notes on use:
1215    /// * Requires |symbolize_ksyms| for function name resolution.
1216    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
1217    ///    set of functions, otherwise the event bandwidth will be too high for
1218    ///    practical use.
1219    /// * The data source might be rejected if there is already a concurrent
1220    ///    ftrace data source that does not use function graph itself, as we do not
1221    ///    support switching kernel tracers mid-trace.
1222    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
1223    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
1224    ///    "function_graph".
1225    /// Android:
1226    /// * Available only on debuggable builds.
1227    /// * Introduced in: Android U.
1228    #[prost(bool, optional, tag = "19")]
1229    pub enable_function_graph: ::core::option::Option<bool>,
1230    /// Constrains the set of functions traced when |enable_function_graph| is
1231    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
1232    /// in which case all matching functions will be traced. See kernel
1233    /// documentation on ftrace "set_ftrace_filter" file for more details.
1234    /// Android:
1235    /// * Available only on debuggable builds.
1236    /// * Introduced in: Android U.
1237    #[prost(string, repeated, tag = "20")]
1238    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1239    /// If |enable_function_graph| is true, trace this set of functions *and* all
1240    /// of its callees. Supports globs. Can be set together with
1241    /// |function_filters|, in which case only callees matching the filter will be
1242    /// traced. If setting both, you most likely want all roots to also be
1243    /// included in |function_filters|.
1244    /// Android:
1245    /// * Available only on debuggable builds.
1246    /// * Introduced in: Android U.
1247    #[prost(string, repeated, tag = "21")]
1248    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1249    /// If true, does not clear ftrace buffers before the start of the program.
1250    /// This makes sense only if this is the first ftrace data source instance
1251    /// created after the daemon has been started. Can be useful for gathering boot
1252    /// traces, if ftrace has been separately configured (e.g. via kernel
1253    /// commandline).
1254    #[prost(bool, optional, tag = "23")]
1255    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
1256    /// If true, overrides the default timestamp clock and uses a raw hardware
1257    /// based monotonic clock for getting timestamps.
1258    /// * Introduced in: Android U.
1259    #[prost(bool, optional, tag = "24")]
1260    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
1261    /// If |instance_name| is not empty, then attempt to use that tracefs instance
1262    /// for event recording. Normally, this means
1263    /// `/sys/kernel/tracing/instances/$instance_name`.
1264    ///
1265    /// The name "hyp" is reserved.
1266    ///
1267    /// The instance must already exist, the tracing daemon *will not* create it
1268    /// for you as it typically doesn't have such permissions.
1269    /// Only a subset of features is guaranteed to work with non-default instances,
1270    /// at the time of writing:
1271    ///   * ftrace_events
1272    ///   * buffer_size_kb
1273    #[prost(string, optional, tag = "25")]
1274    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1275    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
1276    /// implementation to choose a bigger buffer size.
1277    ///
1278    /// Most configs for perfetto v43+ should simply leave both fields unset.
1279    ///
1280    /// If you need a config compatible with a range of perfetto builds and you
1281    /// used to set a non-default buffer_size_kb, consider setting both fields.
1282    /// Example:
1283    ///    buffer_size_kb: 4096
1284    ///    buffer_size_lower_bound: true
1285    /// On older builds, the per-cpu buffers will be exactly 4 MB.
1286    /// On v43+, buffers will be at least 4 MB.
1287    /// In both cases, neither is guaranteed if there are other concurrent
1288    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
1289    /// the recording in the kernel.
1290    /// Introduced in: perfetto v43.
1291    #[prost(bool, optional, tag = "27")]
1292    pub buffer_size_lower_bound: ::core::option::Option<bool>,
1293}
1294/// Nested message and enum types in `FtraceConfig`.
1295pub mod ftrace_config {
1296    /// Configuration for compact encoding of scheduler events. When enabled (and
1297    /// recording the relevant ftrace events), specific high-volume events are
1298    /// encoded in a denser format than normal.
1299    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1300    pub struct CompactSchedConfig {
1301        /// If true, and sched_switch or sched_waking ftrace events are enabled,
1302        /// record those events in the compact format.
1303        ///
1304        /// If the field is unset, the default is:
1305        /// * perfetto v42.0+: enabled
1306        /// * before: disabled
1307        #[prost(bool, optional, tag = "1")]
1308        pub enabled: ::core::option::Option<bool>,
1309    }
1310    /// Optional filter for "ftrace/print" events.
1311    ///
1312    /// The filter consists of multiple rules. As soon as a rule matches (the rules
1313    /// are processed in order), its `allow` field will be used as the outcome: if
1314    /// `allow` is true, the event will be included in the trace, otherwise it will
1315    /// be discarded. If an event does not match any rule, it will be allowed by
1316    /// default (a rule with an empty prefix and allow=false, disallows everything
1317    /// by default).
1318    #[derive(Clone, PartialEq, ::prost::Message)]
1319    pub struct PrintFilter {
1320        #[prost(message, repeated, tag = "1")]
1321        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
1322    }
1323    /// Nested message and enum types in `PrintFilter`.
1324    pub mod print_filter {
1325        #[derive(Clone, PartialEq, ::prost::Message)]
1326        pub struct Rule {
1327            #[prost(bool, optional, tag = "2")]
1328            pub allow: ::core::option::Option<bool>,
1329            #[prost(oneof = "rule::Match", tags = "1, 3")]
1330            pub r#match: ::core::option::Option<rule::Match>,
1331        }
1332        /// Nested message and enum types in `Rule`.
1333        pub mod rule {
1334            /// Matches an atrace message of the form:
1335            /// `type`|`pid`|`prefix`...
1336            #[derive(Clone, PartialEq, ::prost::Message)]
1337            pub struct AtraceMessage {
1338                #[prost(string, optional, tag = "1")]
1339                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
1340                #[prost(string, optional, tag = "2")]
1341                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
1342            }
1343            #[derive(Clone, PartialEq, ::prost::Oneof)]
1344            pub enum Match {
1345                /// This rule matches if `prefix` matches exactly with the beginning of
1346                /// the "ftrace/print" "buf" field.
1347                #[prost(string, tag = "1")]
1348                Prefix(::prost::alloc::string::String),
1349                /// This rule matches if the "buf" field contains an atrace-style print
1350                /// message as specified in `atrace_msg`.
1351                #[prost(message, tag = "3")]
1352                AtraceMsg(AtraceMessage),
1353            }
1354        }
1355    }
1356    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
1357    /// should keep the symbol map in memory (and reuse it for future tracing
1358    /// sessions) or clear it (saving memory) and re-create it on each tracing
1359    /// session (wasting cpu and wall time).
1360    /// The tradeoff is roughly:
1361    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
1362    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
1363    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
1364    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1365    #[repr(i32)]
1366    pub enum KsymsMemPolicy {
1367        KsymsUnspecified = 0,
1368        KsymsCleanupOnStop = 1,
1369        KsymsRetain = 2,
1370    }
1371    impl KsymsMemPolicy {
1372        /// String value of the enum field names used in the ProtoBuf definition.
1373        ///
1374        /// The values are not transformed in any way and thus are considered stable
1375        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1376        pub fn as_str_name(&self) -> &'static str {
1377            match self {
1378                Self::KsymsUnspecified => "KSYMS_UNSPECIFIED",
1379                Self::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
1380                Self::KsymsRetain => "KSYMS_RETAIN",
1381            }
1382        }
1383        /// Creates an enum from field names used in the ProtoBuf definition.
1384        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1385            match value {
1386                "KSYMS_UNSPECIFIED" => Some(Self::KsymsUnspecified),
1387                "KSYMS_CLEANUP_ON_STOP" => Some(Self::KsymsCleanupOnStop),
1388                "KSYMS_RETAIN" => Some(Self::KsymsRetain),
1389                _ => None,
1390            }
1391        }
1392    }
1393}
1394#[derive(Clone, PartialEq, ::prost::Message)]
1395pub struct GpuCounterConfig {
1396    /// Desired sampling interval for counters.
1397    #[prost(uint64, optional, tag = "1")]
1398    pub counter_period_ns: ::core::option::Option<u64>,
1399    /// List of counters to be sampled. Counter IDs correspond to the ones
1400    /// described in GpuCounterSpec in the data source descriptor.
1401    #[prost(uint32, repeated, packed = "false", tag = "2")]
1402    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
1403    /// Sample counters by instrumenting command buffers.
1404    #[prost(bool, optional, tag = "3")]
1405    pub instrumented_sampling: ::core::option::Option<bool>,
1406    /// Fix gpu clock rate during trace session.
1407    #[prost(bool, optional, tag = "4")]
1408    pub fix_gpu_clock: ::core::option::Option<bool>,
1409}
1410#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1411pub struct VulkanMemoryConfig {
1412    /// Tracking driver memory usage events
1413    #[prost(bool, optional, tag = "1")]
1414    pub track_driver_memory_usage: ::core::option::Option<bool>,
1415    /// Tracking device memory usage events
1416    #[prost(bool, optional, tag = "2")]
1417    pub track_device_memory_usage: ::core::option::Option<bool>,
1418}
1419#[derive(Clone, PartialEq, ::prost::Message)]
1420pub struct InodeFileConfig {
1421    /// How long to pause between batches.
1422    #[prost(uint32, optional, tag = "1")]
1423    pub scan_interval_ms: ::core::option::Option<u32>,
1424    /// How long to wait before the first scan in order to accumulate inodes.
1425    #[prost(uint32, optional, tag = "2")]
1426    pub scan_delay_ms: ::core::option::Option<u32>,
1427    /// How many inodes to scan in one batch.
1428    #[prost(uint32, optional, tag = "3")]
1429    pub scan_batch_size: ::core::option::Option<u32>,
1430    /// Do not scan for inodes not found in the static map.
1431    #[prost(bool, optional, tag = "4")]
1432    pub do_not_scan: ::core::option::Option<bool>,
1433    /// If non-empty, only scan inodes corresponding to block devices named in
1434    /// this list.
1435    #[prost(string, repeated, tag = "5")]
1436    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1437    /// When encountering an inode belonging to a block device corresponding
1438    /// to one of the mount points in this map, scan its scan_roots instead.
1439    #[prost(message, repeated, tag = "6")]
1440    pub mount_point_mapping: ::prost::alloc::vec::Vec<inode_file_config::MountPointMappingEntry>,
1441}
1442/// Nested message and enum types in `InodeFileConfig`.
1443pub mod inode_file_config {
1444    #[derive(Clone, PartialEq, ::prost::Message)]
1445    pub struct MountPointMappingEntry {
1446        #[prost(string, optional, tag = "1")]
1447        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
1448        #[prost(string, repeated, tag = "2")]
1449        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1450    }
1451}
1452#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1453pub struct ConsoleConfig {
1454    #[prost(enumeration = "console_config::Output", optional, tag = "1")]
1455    pub output: ::core::option::Option<i32>,
1456    #[prost(bool, optional, tag = "2")]
1457    pub enable_colors: ::core::option::Option<bool>,
1458}
1459/// Nested message and enum types in `ConsoleConfig`.
1460pub mod console_config {
1461    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1462    #[repr(i32)]
1463    pub enum Output {
1464        Unspecified = 0,
1465        Stdout = 1,
1466        Stderr = 2,
1467    }
1468    impl Output {
1469        /// String value of the enum field names used in the ProtoBuf definition.
1470        ///
1471        /// The values are not transformed in any way and thus are considered stable
1472        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1473        pub fn as_str_name(&self) -> &'static str {
1474            match self {
1475                Self::Unspecified => "OUTPUT_UNSPECIFIED",
1476                Self::Stdout => "OUTPUT_STDOUT",
1477                Self::Stderr => "OUTPUT_STDERR",
1478            }
1479        }
1480        /// Creates an enum from field names used in the ProtoBuf definition.
1481        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1482            match value {
1483                "OUTPUT_UNSPECIFIED" => Some(Self::Unspecified),
1484                "OUTPUT_STDOUT" => Some(Self::Stdout),
1485                "OUTPUT_STDERR" => Some(Self::Stderr),
1486                _ => None,
1487            }
1488        }
1489    }
1490}
1491/// Configuration for trace packet interception. Used for diverting trace data to
1492/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
1493/// Perfetto SDK.
1494#[derive(Clone, PartialEq, ::prost::Message)]
1495pub struct InterceptorConfig {
1496    /// Matches the name given to RegisterInterceptor().
1497    #[prost(string, optional, tag = "1")]
1498    pub name: ::core::option::Option<::prost::alloc::string::String>,
1499    #[prost(message, optional, tag = "100")]
1500    pub console_config: ::core::option::Option<ConsoleConfig>,
1501}
1502#[derive(Clone, PartialEq, ::prost::Message)]
1503pub struct AndroidPowerConfig {
1504    #[prost(uint32, optional, tag = "1")]
1505    pub battery_poll_ms: ::core::option::Option<u32>,
1506    #[prost(
1507        enumeration = "android_power_config::BatteryCounters",
1508        repeated,
1509        packed = "false",
1510        tag = "2"
1511    )]
1512    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
1513    /// Where available enables per-power-rail measurements.
1514    #[prost(bool, optional, tag = "3")]
1515    pub collect_power_rails: ::core::option::Option<bool>,
1516    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
1517    /// Available from Android S.
1518    #[prost(bool, optional, tag = "4")]
1519    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
1520    /// Provides a breakdown of time in state for various subsystems.
1521    /// Available from Android U.
1522    #[prost(bool, optional, tag = "5")]
1523    pub collect_entity_state_residency: ::core::option::Option<bool>,
1524}
1525/// Nested message and enum types in `AndroidPowerConfig`.
1526pub mod android_power_config {
1527    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1528    #[repr(i32)]
1529    pub enum BatteryCounters {
1530        BatteryCounterUnspecified = 0,
1531        /// Coulomb counter.
1532        BatteryCounterCharge = 1,
1533        /// Charge (%).
1534        BatteryCounterCapacityPercent = 2,
1535        /// Instantaneous current.
1536        BatteryCounterCurrent = 3,
1537        /// Avg current.
1538        BatteryCounterCurrentAvg = 4,
1539        /// Instantaneous voltage.
1540        BatteryCounterVoltage = 5,
1541    }
1542    impl BatteryCounters {
1543        /// String value of the enum field names used in the ProtoBuf definition.
1544        ///
1545        /// The values are not transformed in any way and thus are considered stable
1546        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1547        pub fn as_str_name(&self) -> &'static str {
1548            match self {
1549                Self::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
1550                Self::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
1551                Self::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
1552                Self::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
1553                Self::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
1554                Self::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
1555            }
1556        }
1557        /// Creates an enum from field names used in the ProtoBuf definition.
1558        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1559            match value {
1560                "BATTERY_COUNTER_UNSPECIFIED" => Some(Self::BatteryCounterUnspecified),
1561                "BATTERY_COUNTER_CHARGE" => Some(Self::BatteryCounterCharge),
1562                "BATTERY_COUNTER_CAPACITY_PERCENT" => Some(Self::BatteryCounterCapacityPercent),
1563                "BATTERY_COUNTER_CURRENT" => Some(Self::BatteryCounterCurrent),
1564                "BATTERY_COUNTER_CURRENT_AVG" => Some(Self::BatteryCounterCurrentAvg),
1565                "BATTERY_COUNTER_VOLTAGE" => Some(Self::BatteryCounterVoltage),
1566                _ => None,
1567            }
1568        }
1569    }
1570}
1571/// This enum is obtained by post-processing
1572/// AOSP/frameworks/proto_logging/stats/atoms.proto through
1573/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
1574/// enum value for each proto field defined in the upstream atoms.proto.
1575#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1576#[repr(i32)]
1577pub enum AtomId {
1578    AtomUnspecified = 0,
1579    AtomBleScanStateChanged = 2,
1580    AtomProcessStateChanged = 3,
1581    AtomBleScanResultReceived = 4,
1582    AtomSensorStateChanged = 5,
1583    AtomGpsScanStateChanged = 6,
1584    AtomSyncStateChanged = 7,
1585    AtomScheduledJobStateChanged = 8,
1586    AtomScreenBrightnessChanged = 9,
1587    AtomWakelockStateChanged = 10,
1588    AtomLongPartialWakelockStateChanged = 11,
1589    AtomMobileRadioPowerStateChanged = 12,
1590    AtomWifiRadioPowerStateChanged = 13,
1591    AtomActivityManagerSleepStateChanged = 14,
1592    AtomMemoryFactorStateChanged = 15,
1593    AtomExcessiveCpuUsageReported = 16,
1594    AtomCachedKillReported = 17,
1595    AtomProcessMemoryStatReported = 18,
1596    AtomLauncherEvent = 19,
1597    AtomBatterySaverModeStateChanged = 20,
1598    AtomDeviceIdleModeStateChanged = 21,
1599    AtomDeviceIdlingModeStateChanged = 22,
1600    AtomAudioStateChanged = 23,
1601    AtomMediaCodecStateChanged = 24,
1602    AtomCameraStateChanged = 25,
1603    AtomFlashlightStateChanged = 26,
1604    AtomUidProcessStateChanged = 27,
1605    AtomProcessLifeCycleStateChanged = 28,
1606    AtomScreenStateChanged = 29,
1607    AtomBatteryLevelChanged = 30,
1608    AtomChargingStateChanged = 31,
1609    AtomPluggedStateChanged = 32,
1610    AtomInteractiveStateChanged = 33,
1611    AtomTouchEventReported = 34,
1612    AtomWakeupAlarmOccurred = 35,
1613    AtomKernelWakeupReported = 36,
1614    AtomWifiLockStateChanged = 37,
1615    AtomWifiSignalStrengthChanged = 38,
1616    AtomWifiScanStateChanged = 39,
1617    AtomPhoneSignalStrengthChanged = 40,
1618    AtomSettingChanged = 41,
1619    AtomActivityForegroundStateChanged = 42,
1620    AtomIsolatedUidChanged = 43,
1621    AtomPacketWakeupOccurred = 44,
1622    AtomWallClockTimeShifted = 45,
1623    AtomAnomalyDetected = 46,
1624    AtomAppBreadcrumbReported = 47,
1625    AtomAppStartOccurred = 48,
1626    AtomAppStartCanceled = 49,
1627    AtomAppStartFullyDrawn = 50,
1628    AtomLmkKillOccurred = 51,
1629    AtomPictureInPictureStateChanged = 52,
1630    AtomWifiMulticastLockStateChanged = 53,
1631    AtomLmkStateChanged = 54,
1632    AtomAppStartMemoryStateCaptured = 55,
1633    AtomShutdownSequenceReported = 56,
1634    AtomBootSequenceReported = 57,
1635    AtomDaveyOccurred = 58,
1636    AtomOverlayStateChanged = 59,
1637    AtomForegroundServiceStateChanged = 60,
1638    AtomCallStateChanged = 61,
1639    AtomKeyguardStateChanged = 62,
1640    AtomKeyguardBouncerStateChanged = 63,
1641    AtomKeyguardBouncerPasswordEntered = 64,
1642    AtomAppDied = 65,
1643    AtomResourceConfigurationChanged = 66,
1644    AtomBluetoothEnabledStateChanged = 67,
1645    AtomBluetoothConnectionStateChanged = 68,
1646    AtomGpsSignalQualityChanged = 69,
1647    AtomUsbConnectorStateChanged = 70,
1648    AtomSpeakerImpedanceReported = 71,
1649    AtomHardwareFailed = 72,
1650    AtomPhysicalDropDetected = 73,
1651    AtomChargeCyclesReported = 74,
1652    AtomMobileConnectionStateChanged = 75,
1653    AtomMobileRadioTechnologyChanged = 76,
1654    AtomUsbDeviceAttached = 77,
1655    AtomAppCrashOccurred = 78,
1656    AtomAnrOccurred = 79,
1657    AtomWtfOccurred = 80,
1658    AtomLowMemReported = 81,
1659    AtomGenericAtom = 82,
1660    AtomVibratorStateChanged = 84,
1661    AtomDeferredJobStatsReported = 85,
1662    AtomThermalThrottling = 86,
1663    AtomBiometricAcquired = 87,
1664    AtomBiometricAuthenticated = 88,
1665    AtomBiometricErrorOccurred = 89,
1666    AtomUiEventReported = 90,
1667    AtomBatteryHealthSnapshot = 91,
1668    AtomSlowIo = 92,
1669    AtomBatteryCausedShutdown = 93,
1670    AtomPhoneServiceStateChanged = 94,
1671    AtomPhoneStateChanged = 95,
1672    AtomUserRestrictionChanged = 96,
1673    AtomSettingsUiChanged = 97,
1674    AtomConnectivityStateChanged = 98,
1675    AtomServiceStateChanged = 99,
1676    AtomServiceLaunchReported = 100,
1677    AtomFlagFlipUpdateOccurred = 101,
1678    AtomBinaryPushStateChanged = 102,
1679    AtomDevicePolicyEvent = 103,
1680    AtomDocsUiFileOpCanceled = 104,
1681    AtomDocsUiFileOpCopyMoveModeReported = 105,
1682    AtomDocsUiFileOpFailure = 106,
1683    AtomDocsUiProviderFileOp = 107,
1684    AtomDocsUiInvalidScopedAccessRequest = 108,
1685    AtomDocsUiLaunchReported = 109,
1686    AtomDocsUiRootVisited = 110,
1687    AtomDocsUiStartupMs = 111,
1688    AtomDocsUiUserActionReported = 112,
1689    AtomWifiEnabledStateChanged = 113,
1690    AtomWifiRunningStateChanged = 114,
1691    AtomAppCompacted = 115,
1692    AtomNetworkDnsEventReported = 116,
1693    AtomDocsUiPickerLaunchedFromReported = 117,
1694    AtomDocsUiPickResultReported = 118,
1695    AtomDocsUiSearchModeReported = 119,
1696    AtomDocsUiSearchTypeReported = 120,
1697    AtomDataStallEvent = 121,
1698    AtomRescuePartyResetReported = 122,
1699    AtomSignedConfigReported = 123,
1700    AtomGnssNiEventReported = 124,
1701    AtomBluetoothLinkLayerConnectionEvent = 125,
1702    AtomBluetoothAclConnectionStateChanged = 126,
1703    AtomBluetoothScoConnectionStateChanged = 127,
1704    AtomAppDowngraded = 128,
1705    AtomAppOptimizedAfterDowngraded = 129,
1706    AtomLowStorageStateChanged = 130,
1707    AtomGnssNfwNotificationReported = 131,
1708    AtomGnssConfigurationReported = 132,
1709    AtomUsbPortOverheatEventReported = 133,
1710    AtomNfcErrorOccurred = 134,
1711    AtomNfcStateChanged = 135,
1712    AtomNfcBeamOccurred = 136,
1713    AtomNfcCardemulationOccurred = 137,
1714    AtomNfcTagOccurred = 138,
1715    AtomNfcHceTransactionOccurred = 139,
1716    AtomSeStateChanged = 140,
1717    AtomSeOmapiReported = 141,
1718    AtomBroadcastDispatchLatencyReported = 142,
1719    AtomAttentionManagerServiceResultReported = 143,
1720    AtomAdbConnectionChanged = 144,
1721    AtomSpeechDspStatReported = 145,
1722    AtomUsbContaminantReported = 146,
1723    AtomWatchdogRollbackOccurred = 147,
1724    AtomBiometricSystemHealthIssueDetected = 148,
1725    AtomBubbleUiChanged = 149,
1726    AtomScheduledJobConstraintChanged = 150,
1727    AtomBluetoothActiveDeviceChanged = 151,
1728    AtomBluetoothA2dpPlaybackStateChanged = 152,
1729    AtomBluetoothA2dpCodecConfigChanged = 153,
1730    AtomBluetoothA2dpCodecCapabilityChanged = 154,
1731    AtomBluetoothA2dpAudioUnderrunReported = 155,
1732    AtomBluetoothA2dpAudioOverrunReported = 156,
1733    AtomBluetoothDeviceRssiReported = 157,
1734    AtomBluetoothDeviceFailedContactCounterReported = 158,
1735    AtomBluetoothDeviceTxPowerLevelReported = 159,
1736    AtomBluetoothHciTimeoutReported = 160,
1737    AtomBluetoothQualityReportReported = 161,
1738    AtomBluetoothDeviceInfoReported = 162,
1739    AtomBluetoothRemoteVersionInfoReported = 163,
1740    AtomBluetoothSdpAttributeReported = 164,
1741    AtomBluetoothBondStateChanged = 165,
1742    AtomBluetoothClassicPairingEventReported = 166,
1743    AtomBluetoothSmpPairingEventReported = 167,
1744    AtomScreenTimeoutExtensionReported = 168,
1745    AtomProcessStartTime = 169,
1746    AtomPermissionGrantRequestResultReported = 170,
1747    AtomBluetoothSocketConnectionStateChanged = 171,
1748    AtomDeviceIdentifierAccessDenied = 172,
1749    AtomBubbleDeveloperErrorReported = 173,
1750    AtomAssistGestureStageReported = 174,
1751    AtomAssistGestureFeedbackReported = 175,
1752    AtomAssistGestureProgressReported = 176,
1753    AtomTouchGestureClassified = 177,
1754    AtomHiddenApiUsed = 178,
1755    AtomStyleUiChanged = 179,
1756    AtomPrivacyIndicatorsInteracted = 180,
1757    AtomAppInstallOnExternalStorageReported = 181,
1758    AtomNetworkStackReported = 182,
1759    AtomAppMovedStorageReported = 183,
1760    AtomBiometricEnrolled = 184,
1761    AtomSystemServerWatchdogOccurred = 185,
1762    AtomTombStoneOccurred = 186,
1763    AtomBluetoothClassOfDeviceReported = 187,
1764    AtomIntelligenceEventReported = 188,
1765    AtomThermalThrottlingSeverityStateChanged = 189,
1766    AtomRoleRequestResultReported = 190,
1767    AtomMediametricsAudiopolicyReported = 191,
1768    AtomMediametricsAudiorecordReported = 192,
1769    AtomMediametricsAudiothreadReported = 193,
1770    AtomMediametricsAudiotrackReported = 194,
1771    AtomMediametricsCodecReported = 195,
1772    AtomMediametricsDrmWidevineReported = 196,
1773    AtomMediametricsExtractorReported = 197,
1774    AtomMediametricsMediadrmReported = 198,
1775    AtomMediametricsNuplayerReported = 199,
1776    AtomMediametricsRecorderReported = 200,
1777    AtomMediametricsDrmmanagerReported = 201,
1778    AtomCarPowerStateChanged = 203,
1779    AtomGarageModeInfo = 204,
1780    AtomTestAtomReported = 205,
1781    AtomContentCaptureCallerMismatchReported = 206,
1782    AtomContentCaptureServiceEvents = 207,
1783    AtomContentCaptureSessionEvents = 208,
1784    AtomContentCaptureFlushed = 209,
1785    AtomLocationManagerApiUsageReported = 210,
1786    AtomReviewPermissionsFragmentResultReported = 211,
1787    AtomRuntimePermissionsUpgradeResult = 212,
1788    AtomGrantPermissionsActivityButtonActions = 213,
1789    AtomLocationAccessCheckNotificationAction = 214,
1790    AtomAppPermissionFragmentActionReported = 215,
1791    AtomAppPermissionFragmentViewed = 216,
1792    AtomAppPermissionsFragmentViewed = 217,
1793    AtomPermissionAppsFragmentViewed = 218,
1794    AtomTextSelectionEvent = 219,
1795    AtomTextLinkifyEvent = 220,
1796    AtomConversationActionsEvent = 221,
1797    AtomLanguageDetectionEvent = 222,
1798    AtomExclusionRectStateChanged = 223,
1799    AtomBackGestureReportedReported = 224,
1800    AtomUpdateEngineUpdateAttemptReported = 225,
1801    AtomUpdateEngineSuccessfulUpdateReported = 226,
1802    AtomCameraActionEvent = 227,
1803    AtomAppCompatibilityChangeReported = 228,
1804    AtomPerfettoUploaded = 229,
1805    AtomVmsClientConnectionStateChanged = 230,
1806    AtomMediaProviderScanOccurred = 233,
1807    AtomMediaContentDeleted = 234,
1808    AtomMediaProviderPermissionRequested = 235,
1809    AtomMediaProviderSchemaChanged = 236,
1810    AtomMediaProviderIdleMaintenanceFinished = 237,
1811    AtomRebootEscrowRecoveryReported = 238,
1812    AtomBootTimeEventDurationReported = 239,
1813    AtomBootTimeEventElapsedTimeReported = 240,
1814    AtomBootTimeEventUtcTimeReported = 241,
1815    AtomBootTimeEventErrorCodeReported = 242,
1816    AtomUserspaceRebootReported = 243,
1817    AtomNotificationReported = 244,
1818    AtomNotificationPanelReported = 245,
1819    AtomNotificationChannelModified = 246,
1820    AtomIntegrityCheckResultReported = 247,
1821    AtomIntegrityRulesPushed = 248,
1822    AtomCbMessageReported = 249,
1823    AtomCbMessageError = 250,
1824    AtomWifiHealthStatReported = 251,
1825    AtomWifiFailureStatReported = 252,
1826    AtomWifiConnectionResultReported = 253,
1827    AtomAppFreezeChanged = 254,
1828    AtomSnapshotMergeReported = 255,
1829    AtomForegroundServiceAppOpSessionEnded = 256,
1830    AtomDisplayJankReported = 257,
1831    AtomAppStandbyBucketChanged = 258,
1832    AtomSharesheetStarted = 259,
1833    AtomRankingSelected = 260,
1834    AtomTvsettingsUiInteracted = 261,
1835    AtomLauncherSnapshot = 262,
1836    AtomPackageInstallerV2Reported = 263,
1837    AtomUserLifecycleJourneyReported = 264,
1838    AtomUserLifecycleEventOccurred = 265,
1839    AtomAccessibilityShortcutReported = 266,
1840    AtomAccessibilityServiceReported = 267,
1841    AtomDocsUiDragAndDropReported = 268,
1842    AtomAppUsageEventOccurred = 269,
1843    AtomAutoRevokeNotificationClicked = 270,
1844    AtomAutoRevokeFragmentAppViewed = 271,
1845    AtomAutoRevokedAppInteraction = 272,
1846    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
1847    AtomEvsUsageStatsReported = 274,
1848    AtomAudioPowerUsageDataReported = 275,
1849    AtomTvTunerStateChanged = 276,
1850    AtomMediaoutputOpSwitchReported = 277,
1851    AtomCbMessageFiltered = 278,
1852    AtomTvTunerDvrStatus = 279,
1853    AtomTvCasSessionOpenStatus = 280,
1854    AtomAssistantInvocationReported = 281,
1855    AtomDisplayWakeReported = 282,
1856    AtomCarUserHalModifyUserRequestReported = 283,
1857    AtomCarUserHalModifyUserResponseReported = 284,
1858    AtomCarUserHalPostSwitchResponseReported = 285,
1859    AtomCarUserHalInitialUserInfoRequestReported = 286,
1860    AtomCarUserHalInitialUserInfoResponseReported = 287,
1861    AtomCarUserHalUserAssociationRequestReported = 288,
1862    AtomCarUserHalSetUserAssociationResponseReported = 289,
1863    AtomNetworkIpProvisioningReported = 290,
1864    AtomNetworkDhcpRenewReported = 291,
1865    AtomNetworkValidationReported = 292,
1866    AtomNetworkStackQuirkReported = 293,
1867    AtomMediametricsAudiorecorddeviceusageReported = 294,
1868    AtomMediametricsAudiothreaddeviceusageReported = 295,
1869    AtomMediametricsAudiotrackdeviceusageReported = 296,
1870    AtomMediametricsAudiodeviceconnectionReported = 297,
1871    AtomBlobCommitted = 298,
1872    AtomBlobLeased = 299,
1873    AtomBlobOpened = 300,
1874    AtomContactsProviderStatusReported = 301,
1875    AtomKeystoreKeyEventReported = 302,
1876    AtomNetworkTetheringReported = 303,
1877    AtomImeTouchReported = 304,
1878    AtomUiInteractionFrameInfoReported = 305,
1879    AtomUiActionLatencyReported = 306,
1880    AtomWifiDisconnectReported = 307,
1881    AtomWifiConnectionStateChanged = 308,
1882    AtomHdmiCecActiveSourceChanged = 309,
1883    AtomHdmiCecMessageReported = 310,
1884    AtomAirplaneMode = 311,
1885    AtomModemRestart = 312,
1886    AtomCarrierIdMismatchReported = 313,
1887    AtomCarrierIdTableUpdated = 314,
1888    AtomDataStallRecoveryReported = 315,
1889    AtomMediametricsMediaparserReported = 316,
1890    AtomTlsHandshakeReported = 317,
1891    AtomTextClassifierApiUsageReported = 318,
1892    AtomCarWatchdogKillStatsReported = 319,
1893    AtomMediametricsPlaybackReported = 320,
1894    AtomMediaNetworkInfoChanged = 321,
1895    AtomMediaPlaybackStateChanged = 322,
1896    AtomMediaPlaybackErrorReported = 323,
1897    AtomMediaPlaybackTrackChanged = 324,
1898    AtomWifiScanReported = 325,
1899    AtomWifiPnoScanReported = 326,
1900    AtomTifTuneChanged = 327,
1901    AtomAutoRotateReported = 328,
1902    AtomPerfettoTrigger = 329,
1903    AtomTranscodingData = 330,
1904    AtomImsServiceEntitlementUpdated = 331,
1905    AtomDeviceRotated = 333,
1906    AtomSimSpecificSettingsRestored = 334,
1907    AtomTextClassifierDownloadReported = 335,
1908    AtomPinStorageEvent = 336,
1909    AtomFaceDownReported = 337,
1910    AtomBluetoothHalCrashReasonReported = 338,
1911    AtomRebootEscrowPreparationReported = 339,
1912    AtomRebootEscrowLskfCaptureReported = 340,
1913    AtomRebootEscrowRebootReported = 341,
1914    AtomBinderLatencyReported = 342,
1915    AtomMediametricsAaudiostreamReported = 343,
1916    AtomMediaTranscodingSessionEnded = 344,
1917    AtomMagnificationUsageReported = 345,
1918    AtomMagnificationModeWithImeOnReported = 346,
1919    AtomAppSearchCallStatsReported = 347,
1920    AtomAppSearchPutDocumentStatsReported = 348,
1921    AtomDeviceControlChanged = 349,
1922    AtomDeviceStateChanged = 350,
1923    AtomInputdeviceRegistered = 351,
1924    AtomSmartspaceCardReported = 352,
1925    AtomAuthPromptAuthenticateInvoked = 353,
1926    AtomAuthManagerCanAuthenticateInvoked = 354,
1927    AtomAuthEnrollActionInvoked = 355,
1928    AtomAuthDeprecatedApiUsed = 356,
1929    AtomUnattendedRebootOccurred = 357,
1930    AtomLongRebootBlockingReported = 358,
1931    AtomLocationTimeZoneProviderStateChanged = 359,
1932    AtomFdtrackEventOccurred = 364,
1933    AtomTimeoutAutoExtendedReported = 365,
1934    AtomAlarmBatchDelivered = 367,
1935    AtomAlarmScheduled = 368,
1936    AtomCarWatchdogIoOveruseStatsReported = 369,
1937    AtomUserLevelHibernationStateChanged = 370,
1938    AtomAppSearchInitializeStatsReported = 371,
1939    AtomAppSearchQueryStatsReported = 372,
1940    AtomAppProcessDied = 373,
1941    AtomNetworkIpReachabilityMonitorReported = 374,
1942    AtomSlowInputEventReported = 375,
1943    AtomAnrOccurredProcessingStarted = 376,
1944    AtomAppSearchRemoveStatsReported = 377,
1945    AtomMediaCodecReported = 378,
1946    AtomPermissionUsageFragmentInteraction = 379,
1947    AtomPermissionDetailsInteraction = 380,
1948    AtomPrivacySensorToggleInteraction = 381,
1949    AtomPrivacyToggleDialogInteraction = 382,
1950    AtomAppSearchOptimizeStatsReported = 383,
1951    AtomNonA11yToolServiceWarningReport = 384,
1952    AtomAppSearchSetSchemaStatsReported = 385,
1953    AtomAppCompatStateChanged = 386,
1954    AtomSizeCompatRestartButtonEventReported = 387,
1955    AtomSplitscreenUiChanged = 388,
1956    AtomNetworkDnsHandshakeReported = 389,
1957    AtomBluetoothCodePathCounter = 390,
1958    AtomBluetoothLeBatchScanReportDelay = 392,
1959    AtomAccessibilityFloatingMenuUiChanged = 393,
1960    AtomNeuralnetworksCompilationCompleted = 394,
1961    AtomNeuralnetworksExecutionCompleted = 395,
1962    AtomNeuralnetworksCompilationFailed = 396,
1963    AtomNeuralnetworksExecutionFailed = 397,
1964    AtomContextHubBooted = 398,
1965    AtomContextHubRestarted = 399,
1966    AtomContextHubLoadedNanoappSnapshotReported = 400,
1967    AtomChreCodeDownloadTransacted = 401,
1968    AtomUwbSessionInited = 402,
1969    AtomUwbSessionClosed = 403,
1970    AtomUwbFirstRangingReceived = 404,
1971    AtomUwbRangingMeasurementReceived = 405,
1972    AtomTextClassifierDownloadWorkScheduled = 406,
1973    AtomTextClassifierDownloadWorkCompleted = 407,
1974    AtomClipboardCleared = 408,
1975    AtomVmCreationRequested = 409,
1976    AtomNearbyDeviceScanStateChanged = 410,
1977    AtomCameraCompatControlEventReported = 411,
1978    AtomApplicationLocalesChanged = 412,
1979    AtomMediametricsAudiotrackstatusReported = 413,
1980    AtomFoldStateDurationReported = 414,
1981    AtomLocationTimeZoneProviderControllerStateChanged = 415,
1982    AtomDisplayHbmStateChanged = 416,
1983    AtomDisplayHbmBrightnessChanged = 417,
1984    AtomPersistentUriPermissionsFlushed = 418,
1985    AtomEarlyBootCompOsArtifactsCheckReported = 419,
1986    AtomVbmetaDigestReported = 420,
1987    AtomApexInfoGathered = 421,
1988    AtomPvmInfoGathered = 422,
1989    AtomWearSettingsUiInteracted = 423,
1990    AtomTracingServiceReportEvent = 424,
1991    AtomMediametricsAudiorecordstatusReported = 425,
1992    AtomLauncherLatency = 426,
1993    AtomDropboxEntryDropped = 427,
1994    AtomWifiP2pConnectionReported = 428,
1995    AtomGameStateChanged = 429,
1996    AtomHotwordDetectorCreateRequested = 430,
1997    AtomHotwordDetectionServiceInitResultReported = 431,
1998    AtomHotwordDetectionServiceRestarted = 432,
1999    AtomHotwordDetectorKeyphraseTriggered = 433,
2000    AtomHotwordDetectorEvents = 434,
2001    AtomAdServicesApiCalled = 435,
2002    AtomAdServicesMesurementReportsUploaded = 436,
2003    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
2004    AtomContactsIndexerUpdateStatsReported = 440,
2005    AtomAppBackgroundRestrictionsInfo = 441,
2006    AtomMmsSmsProviderGetThreadIdFailed = 442,
2007    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
2008    AtomPermissionReminderNotificationInteracted = 444,
2009    AtomRecentPermissionDecisionsInteracted = 445,
2010    AtomGnssPsdsDownloadReported = 446,
2011    AtomLeAudioConnectionSessionReported = 447,
2012    AtomLeAudioBroadcastSessionReported = 448,
2013    AtomDreamUiEventReported = 449,
2014    AtomTaskManagerEventReported = 450,
2015    AtomCdmAssociationAction = 451,
2016    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
2017    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
2018    AtomAccessibilityTextReadingOptionsChanged = 454,
2019    AtomWifiSetupFailureCrashReported = 455,
2020    AtomUwbDeviceErrorReported = 456,
2021    AtomIsolatedCompilationScheduled = 457,
2022    AtomIsolatedCompilationEnded = 458,
2023    AtomOnsOpportunisticEsimProvisioningComplete = 459,
2024    AtomSystemServerPreWatchdogOccurred = 460,
2025    AtomTelephonyAnomalyDetected = 461,
2026    AtomLetterboxPositionChanged = 462,
2027    AtomRemoteKeyProvisioningAttempt = 463,
2028    AtomRemoteKeyProvisioningNetworkInfo = 464,
2029    AtomRemoteKeyProvisioningTiming = 465,
2030    AtomMediaoutputOpInteractionReport = 466,
2031    AtomSyncExemptionOccurred = 468,
2032    AtomAutofillPresentationEventReported = 469,
2033    AtomDockStateChanged = 470,
2034    AtomSafetySourceStateCollected = 471,
2035    AtomSafetyCenterSystemEventReported = 472,
2036    AtomSafetyCenterInteractionReported = 473,
2037    AtomSettingsProviderSettingChanged = 474,
2038    AtomBroadcastDeliveryEventReported = 475,
2039    AtomServiceRequestEventReported = 476,
2040    AtomProviderAcquisitionEventReported = 477,
2041    AtomBluetoothDeviceNameReported = 478,
2042    AtomCbConfigUpdated = 479,
2043    AtomCbModuleErrorReported = 480,
2044    AtomCbServiceFeatureChanged = 481,
2045    AtomCbReceiverFeatureChanged = 482,
2046    AtomJsscriptengineLatencyReported = 483,
2047    AtomPrivacySignalNotificationInteraction = 484,
2048    AtomPrivacySignalIssueCardInteraction = 485,
2049    AtomPrivacySignalsJobFailure = 486,
2050    AtomVibrationReported = 487,
2051    AtomUwbRangingStart = 489,
2052    AtomMobileDataDownloadFileGroupStatusReported = 490,
2053    AtomAppCompactedV2 = 491,
2054    AtomAdServicesSettingsUsageReported = 493,
2055    AtomDisplayBrightnessChanged = 494,
2056    AtomActivityActionBlocked = 495,
2057    AtomBackgroundFetchProcessReported = 496,
2058    AtomUpdateCustomAudienceProcessReported = 497,
2059    AtomRunAdBiddingProcessReported = 498,
2060    AtomRunAdScoringProcessReported = 499,
2061    AtomRunAdSelectionProcessReported = 500,
2062    AtomRunAdBiddingPerCaProcessReported = 501,
2063    AtomMobileDataDownloadDownloadResultReported = 502,
2064    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
2065    AtomNetworkDnsServerSupportReported = 504,
2066    AtomVmBooted = 505,
2067    AtomVmExited = 506,
2068    AtomAmbientBrightnessStatsReported = 507,
2069    AtomMediametricsSpatializercapabilitiesReported = 508,
2070    AtomMediametricsSpatializerdeviceenabledReported = 509,
2071    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
2072    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
2073    AtomAdServicesMeasurementRegistrations = 512,
2074    AtomHearingAidInfoReported = 513,
2075    AtomDeviceWideJobConstraintChanged = 514,
2076    AtomAmbientModeChanged = 515,
2077    AtomAnrLatencyReported = 516,
2078    AtomResourceApiInfo = 517,
2079    AtomSystemDefaultNetworkChanged = 518,
2080    AtomIwlanSetupDataCallResultReported = 519,
2081    AtomIwlanPdnDisconnectedReasonReported = 520,
2082    AtomAirplaneModeSessionReported = 521,
2083    AtomVmCpuStatusReported = 522,
2084    AtomVmMemStatusReported = 523,
2085    AtomPackageInstallationSessionReported = 524,
2086    AtomDefaultNetworkRematchInfo = 525,
2087    AtomNetworkSelectionPerformance = 526,
2088    AtomNetworkNsdReported = 527,
2089    AtomBluetoothDisconnectionReasonReported = 529,
2090    AtomBluetoothLocalVersionsReported = 530,
2091    AtomBluetoothRemoteSupportedFeaturesReported = 531,
2092    AtomBluetoothLocalSupportedFeaturesReported = 532,
2093    AtomBluetoothGattAppInfo = 533,
2094    AtomBrightnessConfigurationUpdated = 534,
2095    AtomAdServicesGetTopicsReported = 535,
2096    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
2097    AtomAdServicesEpochComputationClassifierReported = 537,
2098    AtomWearMediaOutputSwitcherLaunched = 538,
2099    AtomWearMediaOutputSwitcherFinished = 539,
2100    AtomWearMediaOutputSwitcherConnectionReported = 540,
2101    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
2102    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
2103    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
2104    AtomPackageManagerSnapshotReported = 544,
2105    AtomPackageManagerAppsFilterCacheBuildReported = 545,
2106    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
2107    AtomLauncherImpressionEvent = 547,
2108    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
2109    AtomWsWatchFaceEdited = 551,
2110    AtomWsWatchFaceFavoriteActionReported = 552,
2111    AtomWsWatchFaceSetActionReported = 553,
2112    AtomPackageUninstallationReported = 554,
2113    AtomGameModeChanged = 555,
2114    AtomGameModeConfigurationChanged = 556,
2115    AtomBedtimeModeStateChanged = 557,
2116    AtomNetworkSliceSessionEnded = 558,
2117    AtomNetworkSliceDailyDataUsageReported = 559,
2118    AtomNfcTagTypeOccurred = 560,
2119    AtomNfcAidConflictOccurred = 561,
2120    AtomNfcReaderConflictOccurred = 562,
2121    AtomWsTileListChanged = 563,
2122    AtomGetTypeAccessedWithoutPermission = 564,
2123    AtomMobileBundledAppInfoGathered = 566,
2124    AtomWsWatchFaceComplicationSetChanged = 567,
2125    AtomMediaDrmCreated = 568,
2126    AtomMediaDrmErrored = 569,
2127    AtomMediaDrmSessionOpened = 570,
2128    AtomMediaDrmSessionClosed = 571,
2129    AtomUserSelectedResolution = 572,
2130    AtomUnsafeIntentEventReported = 573,
2131    AtomPerformanceHintSessionReported = 574,
2132    AtomMediametricsMidiDeviceCloseReported = 576,
2133    AtomBiometricTouchReported = 577,
2134    AtomHotwordAudioEgressEventReported = 578,
2135    AtomAppSearchSchemaMigrationStatsReported = 579,
2136    AtomLocationEnabledStateChanged = 580,
2137    AtomImeRequestFinished = 581,
2138    AtomUsbComplianceWarningsReported = 582,
2139    AtomAppSupportedLocalesChanged = 583,
2140    AtomGrammaticalInflectionChanged = 584,
2141    AtomMediaProviderVolumeRecoveryReported = 586,
2142    AtomBiometricPropertiesCollected = 587,
2143    AtomKernelWakeupAttributed = 588,
2144    AtomScreenStateChangedV2 = 589,
2145    AtomWsBackupActionReported = 590,
2146    AtomWsRestoreActionReported = 591,
2147    AtomDeviceLogAccessEventReported = 592,
2148    AtomMediaSessionUpdated = 594,
2149    AtomWearOobeStateChanged = 595,
2150    AtomWsNotificationUpdated = 596,
2151    AtomNetworkValidationFailureStatsDailyReported = 601,
2152    AtomWsComplicationTapped = 602,
2153    AtomWsWearTimeSession = 610,
2154    AtomWifiBytesTransfer = 10000,
2155    AtomWifiBytesTransferByFgBg = 10001,
2156    AtomMobileBytesTransfer = 10002,
2157    AtomMobileBytesTransferByFgBg = 10003,
2158    AtomBluetoothBytesTransfer = 10006,
2159    AtomKernelWakelock = 10004,
2160    AtomSubsystemSleepState = 10005,
2161    AtomCpuTimePerUid = 10009,
2162    AtomCpuTimePerUidFreq = 10010,
2163    AtomWifiActivityInfo = 10011,
2164    AtomModemActivityInfo = 10012,
2165    AtomBluetoothActivityInfo = 10007,
2166    AtomProcessMemoryState = 10013,
2167    AtomSystemElapsedRealtime = 10014,
2168    AtomSystemUptime = 10015,
2169    AtomCpuActiveTime = 10016,
2170    AtomCpuClusterTime = 10017,
2171    AtomDiskSpace = 10018,
2172    AtomRemainingBatteryCapacity = 10019,
2173    AtomFullBatteryCapacity = 10020,
2174    AtomTemperature = 10021,
2175    AtomBinderCalls = 10022,
2176    AtomBinderCallsExceptions = 10023,
2177    AtomLooperStats = 10024,
2178    AtomDiskStats = 10025,
2179    AtomDirectoryUsage = 10026,
2180    AtomAppSize = 10027,
2181    AtomCategorySize = 10028,
2182    AtomProcStats = 10029,
2183    AtomBatteryVoltage = 10030,
2184    AtomNumFingerprintsEnrolled = 10031,
2185    AtomDiskIo = 10032,
2186    AtomPowerProfile = 10033,
2187    AtomProcStatsPkgProc = 10034,
2188    AtomProcessCpuTime = 10035,
2189    AtomCpuTimePerThreadFreq = 10037,
2190    AtomOnDevicePowerMeasurement = 10038,
2191    AtomDeviceCalculatedPowerUse = 10039,
2192    AtomProcessMemoryHighWaterMark = 10042,
2193    AtomBatteryLevel = 10043,
2194    AtomBuildInformation = 10044,
2195    AtomBatteryCycleCount = 10045,
2196    AtomDebugElapsedClock = 10046,
2197    AtomDebugFailingElapsedClock = 10047,
2198    AtomNumFacesEnrolled = 10048,
2199    AtomRoleHolder = 10049,
2200    AtomDangerousPermissionState = 10050,
2201    AtomTrainInfo = 10051,
2202    AtomTimeZoneDataInfo = 10052,
2203    AtomExternalStorageInfo = 10053,
2204    AtomGpuStatsGlobalInfo = 10054,
2205    AtomGpuStatsAppInfo = 10055,
2206    AtomSystemIonHeapSize = 10056,
2207    AtomAppsOnExternalStorageInfo = 10057,
2208    AtomFaceSettings = 10058,
2209    AtomCoolingDevice = 10059,
2210    AtomAppOps = 10060,
2211    AtomProcessSystemIonHeapSize = 10061,
2212    AtomSurfaceflingerStatsGlobalInfo = 10062,
2213    AtomSurfaceflingerStatsLayerInfo = 10063,
2214    AtomProcessMemorySnapshot = 10064,
2215    AtomVmsClientStats = 10065,
2216    AtomNotificationRemoteViews = 10066,
2217    AtomDangerousPermissionStateSampled = 10067,
2218    AtomGraphicsStats = 10068,
2219    AtomRuntimeAppOpAccess = 10069,
2220    AtomIonHeapSize = 10070,
2221    AtomPackageNotificationPreferences = 10071,
2222    AtomPackageNotificationChannelPreferences = 10072,
2223    AtomPackageNotificationChannelGroupPreferences = 10073,
2224    AtomGnssStats = 10074,
2225    AtomAttributedAppOps = 10075,
2226    AtomVoiceCallSession = 10076,
2227    AtomVoiceCallRatUsage = 10077,
2228    AtomSimSlotState = 10078,
2229    AtomSupportedRadioAccessFamily = 10079,
2230    AtomSettingSnapshot = 10080,
2231    AtomBlobInfo = 10081,
2232    AtomDataUsageBytesTransfer = 10082,
2233    AtomBytesTransferByTagAndMetered = 10083,
2234    AtomDndModeRule = 10084,
2235    AtomGeneralExternalStorageAccessStats = 10085,
2236    AtomIncomingSms = 10086,
2237    AtomOutgoingSms = 10087,
2238    AtomCarrierIdTableVersion = 10088,
2239    AtomDataCallSession = 10089,
2240    AtomCellularServiceState = 10090,
2241    AtomCellularDataServiceSwitch = 10091,
2242    AtomSystemMemory = 10092,
2243    AtomImsRegistrationTermination = 10093,
2244    AtomImsRegistrationStats = 10094,
2245    AtomCpuTimePerClusterFreq = 10095,
2246    AtomCpuCyclesPerUidCluster = 10096,
2247    AtomDeviceRotatedData = 10097,
2248    AtomCpuCyclesPerThreadGroupCluster = 10098,
2249    AtomMediaDrmActivityInfo = 10099,
2250    AtomOemManagedBytesTransfer = 10100,
2251    AtomGnssPowerStats = 10101,
2252    AtomTimeZoneDetectorState = 10102,
2253    AtomKeystore2StorageStats = 10103,
2254    AtomRkpPoolStats = 10104,
2255    AtomProcessDmabufMemory = 10105,
2256    AtomPendingAlarmInfo = 10106,
2257    AtomUserLevelHibernatedApps = 10107,
2258    AtomLauncherLayoutSnapshot = 10108,
2259    AtomGlobalHibernatedApps = 10109,
2260    AtomInputEventLatencySketch = 10110,
2261    AtomBatteryUsageStatsBeforeReset = 10111,
2262    AtomBatteryUsageStatsSinceReset = 10112,
2263    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
2264    AtomInstalledIncrementalPackage = 10114,
2265    AtomTelephonyNetworkRequests = 10115,
2266    AtomAppSearchStorageInfo = 10116,
2267    AtomVmstat = 10117,
2268    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
2269    AtomKeystore2KeyCreationWithAuthInfo = 10119,
2270    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
2271    AtomKeystore2AtomWithOverflow = 10121,
2272    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
2273    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
2274    AtomRkpErrorStats = 10124,
2275    AtomKeystore2CrashStats = 10125,
2276    AtomVendorApexInfo = 10126,
2277    AtomAccessibilityShortcutStats = 10127,
2278    AtomAccessibilityFloatingMenuStats = 10128,
2279    AtomDataUsageBytesTransferV2 = 10129,
2280    AtomMediaCapabilities = 10130,
2281    AtomCarWatchdogSystemIoUsageSummary = 10131,
2282    AtomCarWatchdogUidIoUsageSummary = 10132,
2283    AtomImsRegistrationFeatureTagStats = 10133,
2284    AtomRcsClientProvisioningStats = 10134,
2285    AtomRcsAcsProvisioningStats = 10135,
2286    AtomSipDelegateStats = 10136,
2287    AtomSipTransportFeatureTagStats = 10137,
2288    AtomSipMessageResponse = 10138,
2289    AtomSipTransportSession = 10139,
2290    AtomImsDedicatedBearerListenerEvent = 10140,
2291    AtomImsDedicatedBearerEvent = 10141,
2292    AtomImsRegistrationServiceDescStats = 10142,
2293    AtomUceEventStats = 10143,
2294    AtomPresenceNotifyEvent = 10144,
2295    AtomGbaEvent = 10145,
2296    AtomPerSimStatus = 10146,
2297    AtomGpuWorkPerUid = 10147,
2298    AtomPersistentUriPermissionsAmountPerPackage = 10148,
2299    AtomSignedPartitionInfo = 10149,
2300    AtomPinnedFileSizesPerPackage = 10150,
2301    AtomPendingIntentsPerPackage = 10151,
2302    AtomUserInfo = 10152,
2303    AtomTelephonyNetworkRequestsV2 = 10153,
2304    AtomDeviceTelephonyProperties = 10154,
2305    AtomRemoteKeyProvisioningErrorCounts = 10155,
2306    AtomSafetyState = 10156,
2307    AtomIncomingMms = 10157,
2308    AtomOutgoingMms = 10158,
2309    AtomMultiUserInfo = 10160,
2310    AtomNetworkBpfMapInfo = 10161,
2311    AtomOutgoingShortCodeSms = 10162,
2312    AtomConnectivityStateSample = 10163,
2313    AtomNetworkSelectionRematchReasonsInfo = 10164,
2314    AtomGameModeInfo = 10165,
2315    AtomGameModeConfiguration = 10166,
2316    AtomGameModeListener = 10167,
2317    AtomNetworkSliceRequestCount = 10168,
2318    AtomWsTileSnapshot = 10169,
2319    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
2320    AtomProcessState = 10171,
2321    AtomProcessAssociation = 10172,
2322    AtomAdpfSystemComponentInfo = 10173,
2323    AtomNotificationMemoryUse = 10174,
2324    AtomHdrCapabilities = 10175,
2325    AtomWsFavouriteWatchFaceListSnapshot = 10176,
2326    AtomWifiAwareNdpReported = 638,
2327    AtomWifiAwareAttachReported = 639,
2328    AtomWifiSelfRecoveryTriggered = 661,
2329    AtomSoftApStarted = 680,
2330    AtomSoftApStopped = 681,
2331    AtomWifiLockReleased = 687,
2332    AtomWifiLockDeactivated = 688,
2333    AtomWifiConfigSaved = 689,
2334    AtomWifiAwareResourceUsingChanged = 690,
2335    AtomWifiAwareHalApiCalled = 691,
2336    AtomWifiLocalOnlyRequestReceived = 692,
2337    AtomWifiLocalOnlyRequestScanTriggered = 693,
2338    AtomWifiThreadTaskExecuted = 694,
2339    AtomWifiStateChanged = 700,
2340    AtomWifiAwareCapabilities = 10190,
2341    AtomWifiModuleInfo = 10193,
2342    AtomSettingsSpaReported = 622,
2343    AtomExpressEventReported = 528,
2344    AtomExpressHistogramSampleReported = 593,
2345    AtomExpressUidEventReported = 644,
2346    AtomExpressUidHistogramSampleReported = 658,
2347    AtomPermissionRationaleDialogViewed = 645,
2348    AtomPermissionRationaleDialogActionReported = 646,
2349    AtomAppDataSharingUpdatesNotificationInteraction = 647,
2350    AtomAppDataSharingUpdatesFragmentViewed = 648,
2351    AtomAppDataSharingUpdatesFragmentActionReported = 649,
2352    AtomWsIncomingCallActionReported = 626,
2353    AtomWsCallDisconnectionReported = 627,
2354    AtomWsCallDurationReported = 628,
2355    AtomWsCallUserExperienceLatencyReported = 629,
2356    AtomWsCallInteractionReported = 630,
2357    AtomFullScreenIntentLaunched = 631,
2358    AtomBalAllowed = 632,
2359    AtomInTaskActivityStarted = 685,
2360    AtomCachedAppsHighWatermark = 10189,
2361    AtomOdrefreshReported = 366,
2362    AtomOdsignReported = 548,
2363    AtomArtDatumReported = 332,
2364    AtomArtDeviceDatumReported = 550,
2365    AtomArtDatumDeltaReported = 565,
2366    AtomBackgroundDexoptJobEnded = 467,
2367    AtomWearAdaptiveSuspendStatsReported = 619,
2368    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
2369    AtomWearPowerAnomalyServiceEventStatsReported = 621,
2370    AtomEmergencyStateChanged = 633,
2371    AtomDndStateChanged = 657,
2372    AtomMteState = 10181,
2373    AtomAdServicesBackCompatGetTopicsReported = 598,
2374    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
2375    AtomAdServicesMeasurementDebugKeys = 640,
2376    AtomAdServicesErrorReported = 662,
2377    AtomAdServicesBackgroundJobsExecutionReported = 663,
2378    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
2379    AtomAdServicesMeasurementAttribution = 674,
2380    AtomAdServicesMeasurementJobs = 675,
2381    AtomAdServicesMeasurementWipeout = 676,
2382    AtomAdServicesConsentMigrated = 702,
2383    AtomRkpdPoolStats = 664,
2384    AtomRkpdClientOperation = 665,
2385    AtomAutofillUiEventReported = 603,
2386    AtomAutofillFillRequestReported = 604,
2387    AtomAutofillFillResponseReported = 605,
2388    AtomAutofillSaveEventReported = 606,
2389    AtomAutofillSessionCommitted = 607,
2390    AtomAutofillFieldClassificationEventReported = 659,
2391    AtomTestExtensionAtomReported = 660,
2392    AtomTestRestrictedAtomReported = 672,
2393    AtomStatsSocketLossReported = 752,
2394    AtomPluginInitialized = 655,
2395    AtomTvLowPowerStandbyPolicy = 679,
2396    AtomLockscreenShortcutSelected = 611,
2397    AtomLockscreenShortcutTriggered = 612,
2398    AtomEmergencyNumbersInfo = 10180,
2399    AtomQualifiedRatListChanged = 634,
2400    AtomQnsImsCallDropStats = 635,
2401    AtomQnsFallbackRestrictionChanged = 636,
2402    AtomQnsRatPreferenceMismatchInfo = 10177,
2403    AtomQnsHandoverTimeMillis = 10178,
2404    AtomQnsHandoverPingpong = 10179,
2405    AtomSatelliteController = 10182,
2406    AtomSatelliteSession = 10183,
2407    AtomSatelliteIncomingDatagram = 10184,
2408    AtomSatelliteOutgoingDatagram = 10185,
2409    AtomSatelliteProvision = 10186,
2410    AtomSatelliteSosMessageRecommender = 10187,
2411    AtomIkeSessionTerminated = 678,
2412    AtomIkeLivenessCheckSessionValidated = 760,
2413    AtomBluetoothHashedDeviceNameReported = 613,
2414    AtomBluetoothL2capCocClientConnection = 614,
2415    AtomBluetoothL2capCocServerConnection = 615,
2416    AtomBluetoothLeSessionConnected = 656,
2417    AtomRestrictedBluetoothDeviceNameReported = 666,
2418    AtomBluetoothProfileConnectionAttempted = 696,
2419    AtomHealthConnectUiImpression = 623,
2420    AtomHealthConnectUiInteraction = 624,
2421    AtomHealthConnectAppOpenedReported = 625,
2422    AtomHealthConnectApiCalled = 616,
2423    AtomHealthConnectUsageStats = 617,
2424    AtomHealthConnectStorageStats = 618,
2425    AtomHealthConnectApiInvoked = 643,
2426    AtomExerciseRouteApiCalled = 654,
2427    AtomAtom9999 = 9999,
2428    AtomAtom99999 = 99999,
2429    AtomThreadnetworkTelemetryDataReported = 738,
2430    AtomThreadnetworkTopoEntryRepeated = 739,
2431    AtomThreadnetworkDeviceInfoReported = 740,
2432    AtomEmergencyNumberDialed = 637,
2433    AtomSandboxApiCalled = 488,
2434    AtomSandboxActivityEventOccurred = 735,
2435    AtomSandboxSdkStorage = 10159,
2436    AtomCronetEngineCreated = 703,
2437    AtomCronetTrafficReported = 704,
2438    AtomCronetEngineBuilderInitialized = 762,
2439    AtomCronetHttpFlagsInitialized = 763,
2440    AtomCronetInitialized = 764,
2441    AtomDailyKeepaliveInfoReported = 650,
2442    AtomIpClientRaInfoReported = 778,
2443    AtomApfSessionInfoReported = 777,
2444    AtomCredentialManagerApiCalled = 585,
2445    AtomCredentialManagerInitPhaseReported = 651,
2446    AtomCredentialManagerCandidatePhaseReported = 652,
2447    AtomCredentialManagerFinalPhaseReported = 653,
2448    AtomCredentialManagerTotalReported = 667,
2449    AtomCredentialManagerFinalnouidReported = 668,
2450    AtomCredentialManagerGetReported = 669,
2451    AtomCredentialManagerAuthClickReported = 670,
2452    AtomCredentialManagerApiv2Called = 671,
2453    AtomUwbActivityInfo = 10188,
2454    AtomMediaActionReported = 608,
2455    AtomMediaControlsLaunched = 609,
2456    AtomMediaCodecReclaimRequestCompleted = 600,
2457    AtomMediaCodecStarted = 641,
2458    AtomMediaCodecStopped = 642,
2459    AtomMediaCodecRendered = 684,
2460}
2461impl AtomId {
2462    /// String value of the enum field names used in the ProtoBuf definition.
2463    ///
2464    /// The values are not transformed in any way and thus are considered stable
2465    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2466    pub fn as_str_name(&self) -> &'static str {
2467        match self {
2468            Self::AtomUnspecified => "ATOM_UNSPECIFIED",
2469            Self::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
2470            Self::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
2471            Self::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
2472            Self::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
2473            Self::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
2474            Self::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
2475            Self::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
2476            Self::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
2477            Self::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
2478            Self::AtomLongPartialWakelockStateChanged => "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED",
2479            Self::AtomMobileRadioPowerStateChanged => "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED",
2480            Self::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
2481            Self::AtomActivityManagerSleepStateChanged => {
2482                "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED"
2483            }
2484            Self::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
2485            Self::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
2486            Self::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
2487            Self::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
2488            Self::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
2489            Self::AtomBatterySaverModeStateChanged => "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED",
2490            Self::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
2491            Self::AtomDeviceIdlingModeStateChanged => "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED",
2492            Self::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
2493            Self::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
2494            Self::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
2495            Self::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
2496            Self::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
2497            Self::AtomProcessLifeCycleStateChanged => "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED",
2498            Self::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
2499            Self::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
2500            Self::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
2501            Self::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
2502            Self::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
2503            Self::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
2504            Self::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
2505            Self::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
2506            Self::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
2507            Self::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
2508            Self::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
2509            Self::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
2510            Self::AtomSettingChanged => "ATOM_SETTING_CHANGED",
2511            Self::AtomActivityForegroundStateChanged => "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED",
2512            Self::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
2513            Self::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
2514            Self::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
2515            Self::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
2516            Self::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
2517            Self::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
2518            Self::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
2519            Self::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
2520            Self::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
2521            Self::AtomPictureInPictureStateChanged => "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED",
2522            Self::AtomWifiMulticastLockStateChanged => "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED",
2523            Self::AtomLmkStateChanged => "ATOM_LMK_STATE_CHANGED",
2524            Self::AtomAppStartMemoryStateCaptured => "ATOM_APP_START_MEMORY_STATE_CAPTURED",
2525            Self::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
2526            Self::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
2527            Self::AtomDaveyOccurred => "ATOM_DAVEY_OCCURRED",
2528            Self::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
2529            Self::AtomForegroundServiceStateChanged => "ATOM_FOREGROUND_SERVICE_STATE_CHANGED",
2530            Self::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
2531            Self::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
2532            Self::AtomKeyguardBouncerStateChanged => "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED",
2533            Self::AtomKeyguardBouncerPasswordEntered => "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED",
2534            Self::AtomAppDied => "ATOM_APP_DIED",
2535            Self::AtomResourceConfigurationChanged => "ATOM_RESOURCE_CONFIGURATION_CHANGED",
2536            Self::AtomBluetoothEnabledStateChanged => "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED",
2537            Self::AtomBluetoothConnectionStateChanged => "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED",
2538            Self::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
2539            Self::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
2540            Self::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
2541            Self::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
2542            Self::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
2543            Self::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
2544            Self::AtomMobileConnectionStateChanged => "ATOM_MOBILE_CONNECTION_STATE_CHANGED",
2545            Self::AtomMobileRadioTechnologyChanged => "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED",
2546            Self::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
2547            Self::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
2548            Self::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
2549            Self::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
2550            Self::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
2551            Self::AtomGenericAtom => "ATOM_GENERIC_ATOM",
2552            Self::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
2553            Self::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
2554            Self::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
2555            Self::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
2556            Self::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
2557            Self::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
2558            Self::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
2559            Self::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
2560            Self::AtomSlowIo => "ATOM_SLOW_IO",
2561            Self::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
2562            Self::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
2563            Self::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
2564            Self::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
2565            Self::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
2566            Self::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
2567            Self::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
2568            Self::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
2569            Self::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
2570            Self::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
2571            Self::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
2572            Self::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
2573            Self::AtomDocsUiFileOpCopyMoveModeReported => {
2574                "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED"
2575            }
2576            Self::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
2577            Self::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
2578            Self::AtomDocsUiInvalidScopedAccessRequest => {
2579                "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST"
2580            }
2581            Self::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
2582            Self::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
2583            Self::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
2584            Self::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
2585            Self::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
2586            Self::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
2587            Self::AtomAppCompacted => "ATOM_APP_COMPACTED",
2588            Self::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
2589            Self::AtomDocsUiPickerLaunchedFromReported => {
2590                "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED"
2591            }
2592            Self::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
2593            Self::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
2594            Self::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
2595            Self::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
2596            Self::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
2597            Self::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
2598            Self::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
2599            Self::AtomBluetoothLinkLayerConnectionEvent => {
2600                "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT"
2601            }
2602            Self::AtomBluetoothAclConnectionStateChanged => {
2603                "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED"
2604            }
2605            Self::AtomBluetoothScoConnectionStateChanged => {
2606                "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED"
2607            }
2608            Self::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
2609            Self::AtomAppOptimizedAfterDowngraded => "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED",
2610            Self::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
2611            Self::AtomGnssNfwNotificationReported => "ATOM_GNSS_NFW_NOTIFICATION_REPORTED",
2612            Self::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
2613            Self::AtomUsbPortOverheatEventReported => "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED",
2614            Self::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
2615            Self::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
2616            Self::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
2617            Self::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
2618            Self::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
2619            Self::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
2620            Self::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
2621            Self::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
2622            Self::AtomBroadcastDispatchLatencyReported => {
2623                "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED"
2624            }
2625            Self::AtomAttentionManagerServiceResultReported => {
2626                "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED"
2627            }
2628            Self::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
2629            Self::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
2630            Self::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
2631            Self::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
2632            Self::AtomBiometricSystemHealthIssueDetected => {
2633                "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED"
2634            }
2635            Self::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
2636            Self::AtomScheduledJobConstraintChanged => "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED",
2637            Self::AtomBluetoothActiveDeviceChanged => "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED",
2638            Self::AtomBluetoothA2dpPlaybackStateChanged => {
2639                "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED"
2640            }
2641            Self::AtomBluetoothA2dpCodecConfigChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED",
2642            Self::AtomBluetoothA2dpCodecCapabilityChanged => {
2643                "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED"
2644            }
2645            Self::AtomBluetoothA2dpAudioUnderrunReported => {
2646                "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED"
2647            }
2648            Self::AtomBluetoothA2dpAudioOverrunReported => {
2649                "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED"
2650            }
2651            Self::AtomBluetoothDeviceRssiReported => "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED",
2652            Self::AtomBluetoothDeviceFailedContactCounterReported => {
2653                "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED"
2654            }
2655            Self::AtomBluetoothDeviceTxPowerLevelReported => {
2656                "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED"
2657            }
2658            Self::AtomBluetoothHciTimeoutReported => "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED",
2659            Self::AtomBluetoothQualityReportReported => "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED",
2660            Self::AtomBluetoothDeviceInfoReported => "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED",
2661            Self::AtomBluetoothRemoteVersionInfoReported => {
2662                "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED"
2663            }
2664            Self::AtomBluetoothSdpAttributeReported => "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED",
2665            Self::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
2666            Self::AtomBluetoothClassicPairingEventReported => {
2667                "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED"
2668            }
2669            Self::AtomBluetoothSmpPairingEventReported => {
2670                "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED"
2671            }
2672            Self::AtomScreenTimeoutExtensionReported => "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED",
2673            Self::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
2674            Self::AtomPermissionGrantRequestResultReported => {
2675                "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED"
2676            }
2677            Self::AtomBluetoothSocketConnectionStateChanged => {
2678                "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED"
2679            }
2680            Self::AtomDeviceIdentifierAccessDenied => "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED",
2681            Self::AtomBubbleDeveloperErrorReported => "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED",
2682            Self::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
2683            Self::AtomAssistGestureFeedbackReported => "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED",
2684            Self::AtomAssistGestureProgressReported => "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED",
2685            Self::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
2686            Self::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
2687            Self::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
2688            Self::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
2689            Self::AtomAppInstallOnExternalStorageReported => {
2690                "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED"
2691            }
2692            Self::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
2693            Self::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
2694            Self::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
2695            Self::AtomSystemServerWatchdogOccurred => "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED",
2696            Self::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
2697            Self::AtomBluetoothClassOfDeviceReported => "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED",
2698            Self::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
2699            Self::AtomThermalThrottlingSeverityStateChanged => {
2700                "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED"
2701            }
2702            Self::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
2703            Self::AtomMediametricsAudiopolicyReported => "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED",
2704            Self::AtomMediametricsAudiorecordReported => "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED",
2705            Self::AtomMediametricsAudiothreadReported => "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED",
2706            Self::AtomMediametricsAudiotrackReported => "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED",
2707            Self::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
2708            Self::AtomMediametricsDrmWidevineReported => "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED",
2709            Self::AtomMediametricsExtractorReported => "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED",
2710            Self::AtomMediametricsMediadrmReported => "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED",
2711            Self::AtomMediametricsNuplayerReported => "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED",
2712            Self::AtomMediametricsRecorderReported => "ATOM_MEDIAMETRICS_RECORDER_REPORTED",
2713            Self::AtomMediametricsDrmmanagerReported => "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED",
2714            Self::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
2715            Self::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
2716            Self::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
2717            Self::AtomContentCaptureCallerMismatchReported => {
2718                "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED"
2719            }
2720            Self::AtomContentCaptureServiceEvents => "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS",
2721            Self::AtomContentCaptureSessionEvents => "ATOM_CONTENT_CAPTURE_SESSION_EVENTS",
2722            Self::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
2723            Self::AtomLocationManagerApiUsageReported => "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED",
2724            Self::AtomReviewPermissionsFragmentResultReported => {
2725                "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED"
2726            }
2727            Self::AtomRuntimePermissionsUpgradeResult => "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT",
2728            Self::AtomGrantPermissionsActivityButtonActions => {
2729                "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS"
2730            }
2731            Self::AtomLocationAccessCheckNotificationAction => {
2732                "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION"
2733            }
2734            Self::AtomAppPermissionFragmentActionReported => {
2735                "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED"
2736            }
2737            Self::AtomAppPermissionFragmentViewed => "ATOM_APP_PERMISSION_FRAGMENT_VIEWED",
2738            Self::AtomAppPermissionsFragmentViewed => "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED",
2739            Self::AtomPermissionAppsFragmentViewed => "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED",
2740            Self::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
2741            Self::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
2742            Self::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
2743            Self::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
2744            Self::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
2745            Self::AtomBackGestureReportedReported => "ATOM_BACK_GESTURE_REPORTED_REPORTED",
2746            Self::AtomUpdateEngineUpdateAttemptReported => {
2747                "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED"
2748            }
2749            Self::AtomUpdateEngineSuccessfulUpdateReported => {
2750                "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED"
2751            }
2752            Self::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
2753            Self::AtomAppCompatibilityChangeReported => "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED",
2754            Self::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
2755            Self::AtomVmsClientConnectionStateChanged => "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED",
2756            Self::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
2757            Self::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
2758            Self::AtomMediaProviderPermissionRequested => {
2759                "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED"
2760            }
2761            Self::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
2762            Self::AtomMediaProviderIdleMaintenanceFinished => {
2763                "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED"
2764            }
2765            Self::AtomRebootEscrowRecoveryReported => "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED",
2766            Self::AtomBootTimeEventDurationReported => "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED",
2767            Self::AtomBootTimeEventElapsedTimeReported => {
2768                "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED"
2769            }
2770            Self::AtomBootTimeEventUtcTimeReported => "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED",
2771            Self::AtomBootTimeEventErrorCodeReported => "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED",
2772            Self::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
2773            Self::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
2774            Self::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
2775            Self::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
2776            Self::AtomIntegrityCheckResultReported => "ATOM_INTEGRITY_CHECK_RESULT_REPORTED",
2777            Self::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
2778            Self::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
2779            Self::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
2780            Self::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
2781            Self::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
2782            Self::AtomWifiConnectionResultReported => "ATOM_WIFI_CONNECTION_RESULT_REPORTED",
2783            Self::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
2784            Self::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
2785            Self::AtomForegroundServiceAppOpSessionEnded => {
2786                "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED"
2787            }
2788            Self::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
2789            Self::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
2790            Self::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
2791            Self::AtomRankingSelected => "ATOM_RANKING_SELECTED",
2792            Self::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
2793            Self::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
2794            Self::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
2795            Self::AtomUserLifecycleJourneyReported => "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED",
2796            Self::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
2797            Self::AtomAccessibilityShortcutReported => "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED",
2798            Self::AtomAccessibilityServiceReported => "ATOM_ACCESSIBILITY_SERVICE_REPORTED",
2799            Self::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
2800            Self::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
2801            Self::AtomAutoRevokeNotificationClicked => "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED",
2802            Self::AtomAutoRevokeFragmentAppViewed => "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED",
2803            Self::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
2804            Self::AtomAppPermissionGroupsFragmentAutoRevokeAction => {
2805                "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION"
2806            }
2807            Self::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
2808            Self::AtomAudioPowerUsageDataReported => "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED",
2809            Self::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
2810            Self::AtomMediaoutputOpSwitchReported => "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED",
2811            Self::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
2812            Self::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
2813            Self::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
2814            Self::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
2815            Self::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
2816            Self::AtomCarUserHalModifyUserRequestReported => {
2817                "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED"
2818            }
2819            Self::AtomCarUserHalModifyUserResponseReported => {
2820                "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED"
2821            }
2822            Self::AtomCarUserHalPostSwitchResponseReported => {
2823                "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED"
2824            }
2825            Self::AtomCarUserHalInitialUserInfoRequestReported => {
2826                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED"
2827            }
2828            Self::AtomCarUserHalInitialUserInfoResponseReported => {
2829                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED"
2830            }
2831            Self::AtomCarUserHalUserAssociationRequestReported => {
2832                "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED"
2833            }
2834            Self::AtomCarUserHalSetUserAssociationResponseReported => {
2835                "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED"
2836            }
2837            Self::AtomNetworkIpProvisioningReported => "ATOM_NETWORK_IP_PROVISIONING_REPORTED",
2838            Self::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
2839            Self::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
2840            Self::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
2841            Self::AtomMediametricsAudiorecorddeviceusageReported => {
2842                "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED"
2843            }
2844            Self::AtomMediametricsAudiothreaddeviceusageReported => {
2845                "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED"
2846            }
2847            Self::AtomMediametricsAudiotrackdeviceusageReported => {
2848                "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED"
2849            }
2850            Self::AtomMediametricsAudiodeviceconnectionReported => {
2851                "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED"
2852            }
2853            Self::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
2854            Self::AtomBlobLeased => "ATOM_BLOB_LEASED",
2855            Self::AtomBlobOpened => "ATOM_BLOB_OPENED",
2856            Self::AtomContactsProviderStatusReported => "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED",
2857            Self::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
2858            Self::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
2859            Self::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
2860            Self::AtomUiInteractionFrameInfoReported => "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED",
2861            Self::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
2862            Self::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
2863            Self::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
2864            Self::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
2865            Self::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
2866            Self::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
2867            Self::AtomModemRestart => "ATOM_MODEM_RESTART",
2868            Self::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
2869            Self::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
2870            Self::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
2871            Self::AtomMediametricsMediaparserReported => "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED",
2872            Self::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
2873            Self::AtomTextClassifierApiUsageReported => "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED",
2874            Self::AtomCarWatchdogKillStatsReported => "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED",
2875            Self::AtomMediametricsPlaybackReported => "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED",
2876            Self::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
2877            Self::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
2878            Self::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
2879            Self::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
2880            Self::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
2881            Self::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
2882            Self::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
2883            Self::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
2884            Self::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
2885            Self::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
2886            Self::AtomImsServiceEntitlementUpdated => "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED",
2887            Self::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
2888            Self::AtomSimSpecificSettingsRestored => "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED",
2889            Self::AtomTextClassifierDownloadReported => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED",
2890            Self::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
2891            Self::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
2892            Self::AtomBluetoothHalCrashReasonReported => "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED",
2893            Self::AtomRebootEscrowPreparationReported => "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED",
2894            Self::AtomRebootEscrowLskfCaptureReported => "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED",
2895            Self::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
2896            Self::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
2897            Self::AtomMediametricsAaudiostreamReported => "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED",
2898            Self::AtomMediaTranscodingSessionEnded => "ATOM_MEDIA_TRANSCODING_SESSION_ENDED",
2899            Self::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
2900            Self::AtomMagnificationModeWithImeOnReported => {
2901                "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED"
2902            }
2903            Self::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
2904            Self::AtomAppSearchPutDocumentStatsReported => {
2905                "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED"
2906            }
2907            Self::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
2908            Self::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
2909            Self::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
2910            Self::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
2911            Self::AtomAuthPromptAuthenticateInvoked => "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED",
2912            Self::AtomAuthManagerCanAuthenticateInvoked => {
2913                "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED"
2914            }
2915            Self::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
2916            Self::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
2917            Self::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
2918            Self::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
2919            Self::AtomLocationTimeZoneProviderStateChanged => {
2920                "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED"
2921            }
2922            Self::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
2923            Self::AtomTimeoutAutoExtendedReported => "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED",
2924            Self::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
2925            Self::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
2926            Self::AtomCarWatchdogIoOveruseStatsReported => {
2927                "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED"
2928            }
2929            Self::AtomUserLevelHibernationStateChanged => {
2930                "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED"
2931            }
2932            Self::AtomAppSearchInitializeStatsReported => {
2933                "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED"
2934            }
2935            Self::AtomAppSearchQueryStatsReported => "ATOM_APP_SEARCH_QUERY_STATS_REPORTED",
2936            Self::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
2937            Self::AtomNetworkIpReachabilityMonitorReported => {
2938                "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED"
2939            }
2940            Self::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
2941            Self::AtomAnrOccurredProcessingStarted => "ATOM_ANR_OCCURRED_PROCESSING_STARTED",
2942            Self::AtomAppSearchRemoveStatsReported => "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED",
2943            Self::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
2944            Self::AtomPermissionUsageFragmentInteraction => {
2945                "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION"
2946            }
2947            Self::AtomPermissionDetailsInteraction => "ATOM_PERMISSION_DETAILS_INTERACTION",
2948            Self::AtomPrivacySensorToggleInteraction => "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION",
2949            Self::AtomPrivacyToggleDialogInteraction => "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION",
2950            Self::AtomAppSearchOptimizeStatsReported => "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED",
2951            Self::AtomNonA11yToolServiceWarningReport => {
2952                "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT"
2953            }
2954            Self::AtomAppSearchSetSchemaStatsReported => {
2955                "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED"
2956            }
2957            Self::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
2958            Self::AtomSizeCompatRestartButtonEventReported => {
2959                "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED"
2960            }
2961            Self::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
2962            Self::AtomNetworkDnsHandshakeReported => "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED",
2963            Self::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
2964            Self::AtomBluetoothLeBatchScanReportDelay => {
2965                "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY"
2966            }
2967            Self::AtomAccessibilityFloatingMenuUiChanged => {
2968                "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED"
2969            }
2970            Self::AtomNeuralnetworksCompilationCompleted => {
2971                "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED"
2972            }
2973            Self::AtomNeuralnetworksExecutionCompleted => "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED",
2974            Self::AtomNeuralnetworksCompilationFailed => "ATOM_NEURALNETWORKS_COMPILATION_FAILED",
2975            Self::AtomNeuralnetworksExecutionFailed => "ATOM_NEURALNETWORKS_EXECUTION_FAILED",
2976            Self::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
2977            Self::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
2978            Self::AtomContextHubLoadedNanoappSnapshotReported => {
2979                "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED"
2980            }
2981            Self::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
2982            Self::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
2983            Self::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
2984            Self::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
2985            Self::AtomUwbRangingMeasurementReceived => "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED",
2986            Self::AtomTextClassifierDownloadWorkScheduled => {
2987                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED"
2988            }
2989            Self::AtomTextClassifierDownloadWorkCompleted => {
2990                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED"
2991            }
2992            Self::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
2993            Self::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
2994            Self::AtomNearbyDeviceScanStateChanged => "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED",
2995            Self::AtomCameraCompatControlEventReported => {
2996                "ATOM_CAMERA_COMPAT_CONTROL_EVENT_REPORTED"
2997            }
2998            Self::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
2999            Self::AtomMediametricsAudiotrackstatusReported => {
3000                "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED"
3001            }
3002            Self::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
3003            Self::AtomLocationTimeZoneProviderControllerStateChanged => {
3004                "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED"
3005            }
3006            Self::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
3007            Self::AtomDisplayHbmBrightnessChanged => "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED",
3008            Self::AtomPersistentUriPermissionsFlushed => "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED",
3009            Self::AtomEarlyBootCompOsArtifactsCheckReported => {
3010                "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED"
3011            }
3012            Self::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
3013            Self::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
3014            Self::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
3015            Self::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
3016            Self::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
3017            Self::AtomMediametricsAudiorecordstatusReported => {
3018                "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED"
3019            }
3020            Self::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
3021            Self::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
3022            Self::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
3023            Self::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
3024            Self::AtomHotwordDetectorCreateRequested => "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED",
3025            Self::AtomHotwordDetectionServiceInitResultReported => {
3026                "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED"
3027            }
3028            Self::AtomHotwordDetectionServiceRestarted => {
3029                "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED"
3030            }
3031            Self::AtomHotwordDetectorKeyphraseTriggered => {
3032                "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED"
3033            }
3034            Self::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
3035            Self::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
3036            Self::AtomAdServicesMesurementReportsUploaded => {
3037                "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED"
3038            }
3039            Self::AtomBootCompletedBroadcastCompletionLatencyReported => {
3040                "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED"
3041            }
3042            Self::AtomContactsIndexerUpdateStatsReported => {
3043                "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED"
3044            }
3045            Self::AtomAppBackgroundRestrictionsInfo => "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO",
3046            Self::AtomMmsSmsProviderGetThreadIdFailed => {
3047                "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED"
3048            }
3049            Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed => {
3050                "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED"
3051            }
3052            Self::AtomPermissionReminderNotificationInteracted => {
3053                "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED"
3054            }
3055            Self::AtomRecentPermissionDecisionsInteracted => {
3056                "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED"
3057            }
3058            Self::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
3059            Self::AtomLeAudioConnectionSessionReported => {
3060                "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED"
3061            }
3062            Self::AtomLeAudioBroadcastSessionReported => "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED",
3063            Self::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
3064            Self::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
3065            Self::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
3066            Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported => {
3067                "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED"
3068            }
3069            Self::AtomMagnificationFollowTypingFocusActivatedSessionReported => {
3070                "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED"
3071            }
3072            Self::AtomAccessibilityTextReadingOptionsChanged => {
3073                "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED"
3074            }
3075            Self::AtomWifiSetupFailureCrashReported => "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED",
3076            Self::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
3077            Self::AtomIsolatedCompilationScheduled => "ATOM_ISOLATED_COMPILATION_SCHEDULED",
3078            Self::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
3079            Self::AtomOnsOpportunisticEsimProvisioningComplete => {
3080                "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE"
3081            }
3082            Self::AtomSystemServerPreWatchdogOccurred => "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED",
3083            Self::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
3084            Self::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
3085            Self::AtomRemoteKeyProvisioningAttempt => "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT",
3086            Self::AtomRemoteKeyProvisioningNetworkInfo => {
3087                "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO"
3088            }
3089            Self::AtomRemoteKeyProvisioningTiming => "ATOM_REMOTE_KEY_PROVISIONING_TIMING",
3090            Self::AtomMediaoutputOpInteractionReport => "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT",
3091            Self::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
3092            Self::AtomAutofillPresentationEventReported => {
3093                "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED"
3094            }
3095            Self::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
3096            Self::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
3097            Self::AtomSafetyCenterSystemEventReported => "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED",
3098            Self::AtomSafetyCenterInteractionReported => "ATOM_SAFETY_CENTER_INTERACTION_REPORTED",
3099            Self::AtomSettingsProviderSettingChanged => "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED",
3100            Self::AtomBroadcastDeliveryEventReported => "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED",
3101            Self::AtomServiceRequestEventReported => "ATOM_SERVICE_REQUEST_EVENT_REPORTED",
3102            Self::AtomProviderAcquisitionEventReported => {
3103                "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED"
3104            }
3105            Self::AtomBluetoothDeviceNameReported => "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED",
3106            Self::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
3107            Self::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
3108            Self::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
3109            Self::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
3110            Self::AtomJsscriptengineLatencyReported => "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED",
3111            Self::AtomPrivacySignalNotificationInteraction => {
3112                "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION"
3113            }
3114            Self::AtomPrivacySignalIssueCardInteraction => {
3115                "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION"
3116            }
3117            Self::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
3118            Self::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
3119            Self::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
3120            Self::AtomMobileDataDownloadFileGroupStatusReported => {
3121                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED"
3122            }
3123            Self::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
3124            Self::AtomAdServicesSettingsUsageReported => "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED",
3125            Self::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
3126            Self::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
3127            Self::AtomBackgroundFetchProcessReported => "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED",
3128            Self::AtomUpdateCustomAudienceProcessReported => {
3129                "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED"
3130            }
3131            Self::AtomRunAdBiddingProcessReported => "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED",
3132            Self::AtomRunAdScoringProcessReported => "ATOM_RUN_AD_SCORING_PROCESS_REPORTED",
3133            Self::AtomRunAdSelectionProcessReported => "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED",
3134            Self::AtomRunAdBiddingPerCaProcessReported => {
3135                "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED"
3136            }
3137            Self::AtomMobileDataDownloadDownloadResultReported => {
3138                "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED"
3139            }
3140            Self::AtomMobileDataDownloadFileGroupStorageStatsReported => {
3141                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED"
3142            }
3143            Self::AtomNetworkDnsServerSupportReported => "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED",
3144            Self::AtomVmBooted => "ATOM_VM_BOOTED",
3145            Self::AtomVmExited => "ATOM_VM_EXITED",
3146            Self::AtomAmbientBrightnessStatsReported => "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED",
3147            Self::AtomMediametricsSpatializercapabilitiesReported => {
3148                "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED"
3149            }
3150            Self::AtomMediametricsSpatializerdeviceenabledReported => {
3151                "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED"
3152            }
3153            Self::AtomMediametricsHeadtrackerdeviceenabledReported => {
3154                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED"
3155            }
3156            Self::AtomMediametricsHeadtrackerdevicesupportedReported => {
3157                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED"
3158            }
3159            Self::AtomAdServicesMeasurementRegistrations => {
3160                "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS"
3161            }
3162            Self::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
3163            Self::AtomDeviceWideJobConstraintChanged => "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED",
3164            Self::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
3165            Self::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
3166            Self::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
3167            Self::AtomSystemDefaultNetworkChanged => "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED",
3168            Self::AtomIwlanSetupDataCallResultReported => {
3169                "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED"
3170            }
3171            Self::AtomIwlanPdnDisconnectedReasonReported => {
3172                "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED"
3173            }
3174            Self::AtomAirplaneModeSessionReported => "ATOM_AIRPLANE_MODE_SESSION_REPORTED",
3175            Self::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
3176            Self::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
3177            Self::AtomPackageInstallationSessionReported => {
3178                "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED"
3179            }
3180            Self::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
3181            Self::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
3182            Self::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
3183            Self::AtomBluetoothDisconnectionReasonReported => {
3184                "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED"
3185            }
3186            Self::AtomBluetoothLocalVersionsReported => "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED",
3187            Self::AtomBluetoothRemoteSupportedFeaturesReported => {
3188                "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED"
3189            }
3190            Self::AtomBluetoothLocalSupportedFeaturesReported => {
3191                "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED"
3192            }
3193            Self::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
3194            Self::AtomBrightnessConfigurationUpdated => "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED",
3195            Self::AtomAdServicesGetTopicsReported => "ATOM_AD_SERVICES_GET_TOPICS_REPORTED",
3196            Self::AtomAdServicesEpochComputationGetTopTopicsReported => {
3197                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED"
3198            }
3199            Self::AtomAdServicesEpochComputationClassifierReported => {
3200                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
3201            }
3202            Self::AtomWearMediaOutputSwitcherLaunched => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED",
3203            Self::AtomWearMediaOutputSwitcherFinished => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED",
3204            Self::AtomWearMediaOutputSwitcherConnectionReported => {
3205                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED"
3206            }
3207            Self::AtomWearMediaOutputSwitcherDeviceScanTriggered => {
3208                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED"
3209            }
3210            Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => {
3211                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY"
3212            }
3213            Self::AtomWearMediaOutputSwitcherConnectDeviceLatency => {
3214                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY"
3215            }
3216            Self::AtomPackageManagerSnapshotReported => "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED",
3217            Self::AtomPackageManagerAppsFilterCacheBuildReported => {
3218                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED"
3219            }
3220            Self::AtomPackageManagerAppsFilterCacheUpdateReported => {
3221                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED"
3222            }
3223            Self::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
3224            Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency => {
3225                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY"
3226            }
3227            Self::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
3228            Self::AtomWsWatchFaceFavoriteActionReported => {
3229                "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED"
3230            }
3231            Self::AtomWsWatchFaceSetActionReported => "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED",
3232            Self::AtomPackageUninstallationReported => "ATOM_PACKAGE_UNINSTALLATION_REPORTED",
3233            Self::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
3234            Self::AtomGameModeConfigurationChanged => "ATOM_GAME_MODE_CONFIGURATION_CHANGED",
3235            Self::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
3236            Self::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
3237            Self::AtomNetworkSliceDailyDataUsageReported => {
3238                "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED"
3239            }
3240            Self::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
3241            Self::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
3242            Self::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
3243            Self::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
3244            Self::AtomGetTypeAccessedWithoutPermission => {
3245                "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION"
3246            }
3247            Self::AtomMobileBundledAppInfoGathered => "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED",
3248            Self::AtomWsWatchFaceComplicationSetChanged => {
3249                "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED"
3250            }
3251            Self::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
3252            Self::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
3253            Self::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
3254            Self::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
3255            Self::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
3256            Self::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
3257            Self::AtomPerformanceHintSessionReported => "ATOM_PERFORMANCE_HINT_SESSION_REPORTED",
3258            Self::AtomMediametricsMidiDeviceCloseReported => {
3259                "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED"
3260            }
3261            Self::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
3262            Self::AtomHotwordAudioEgressEventReported => "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED",
3263            Self::AtomAppSearchSchemaMigrationStatsReported => {
3264                "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED"
3265            }
3266            Self::AtomLocationEnabledStateChanged => "ATOM_LOCATION_ENABLED_STATE_CHANGED",
3267            Self::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
3268            Self::AtomUsbComplianceWarningsReported => "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED",
3269            Self::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
3270            Self::AtomGrammaticalInflectionChanged => "ATOM_GRAMMATICAL_INFLECTION_CHANGED",
3271            Self::AtomMediaProviderVolumeRecoveryReported => {
3272                "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED"
3273            }
3274            Self::AtomBiometricPropertiesCollected => "ATOM_BIOMETRIC_PROPERTIES_COLLECTED",
3275            Self::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
3276            Self::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
3277            Self::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
3278            Self::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
3279            Self::AtomDeviceLogAccessEventReported => "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED",
3280            Self::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
3281            Self::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
3282            Self::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
3283            Self::AtomNetworkValidationFailureStatsDailyReported => {
3284                "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED"
3285            }
3286            Self::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
3287            Self::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
3288            Self::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
3289            Self::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
3290            Self::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
3291            Self::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
3292            Self::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
3293            Self::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
3294            Self::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
3295            Self::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
3296            Self::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
3297            Self::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
3298            Self::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
3299            Self::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
3300            Self::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
3301            Self::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
3302            Self::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
3303            Self::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
3304            Self::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
3305            Self::AtomDiskSpace => "ATOM_DISK_SPACE",
3306            Self::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
3307            Self::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
3308            Self::AtomTemperature => "ATOM_TEMPERATURE",
3309            Self::AtomBinderCalls => "ATOM_BINDER_CALLS",
3310            Self::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
3311            Self::AtomLooperStats => "ATOM_LOOPER_STATS",
3312            Self::AtomDiskStats => "ATOM_DISK_STATS",
3313            Self::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
3314            Self::AtomAppSize => "ATOM_APP_SIZE",
3315            Self::AtomCategorySize => "ATOM_CATEGORY_SIZE",
3316            Self::AtomProcStats => "ATOM_PROC_STATS",
3317            Self::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
3318            Self::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
3319            Self::AtomDiskIo => "ATOM_DISK_IO",
3320            Self::AtomPowerProfile => "ATOM_POWER_PROFILE",
3321            Self::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
3322            Self::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
3323            Self::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
3324            Self::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
3325            Self::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
3326            Self::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
3327            Self::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
3328            Self::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
3329            Self::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
3330            Self::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
3331            Self::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
3332            Self::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
3333            Self::AtomRoleHolder => "ATOM_ROLE_HOLDER",
3334            Self::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
3335            Self::AtomTrainInfo => "ATOM_TRAIN_INFO",
3336            Self::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
3337            Self::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
3338            Self::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
3339            Self::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
3340            Self::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
3341            Self::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
3342            Self::AtomFaceSettings => "ATOM_FACE_SETTINGS",
3343            Self::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
3344            Self::AtomAppOps => "ATOM_APP_OPS",
3345            Self::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
3346            Self::AtomSurfaceflingerStatsGlobalInfo => "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO",
3347            Self::AtomSurfaceflingerStatsLayerInfo => "ATOM_SURFACEFLINGER_STATS_LAYER_INFO",
3348            Self::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
3349            Self::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
3350            Self::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
3351            Self::AtomDangerousPermissionStateSampled => "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED",
3352            Self::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
3353            Self::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
3354            Self::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
3355            Self::AtomPackageNotificationPreferences => "ATOM_PACKAGE_NOTIFICATION_PREFERENCES",
3356            Self::AtomPackageNotificationChannelPreferences => {
3357                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES"
3358            }
3359            Self::AtomPackageNotificationChannelGroupPreferences => {
3360                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES"
3361            }
3362            Self::AtomGnssStats => "ATOM_GNSS_STATS",
3363            Self::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
3364            Self::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
3365            Self::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
3366            Self::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
3367            Self::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
3368            Self::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
3369            Self::AtomBlobInfo => "ATOM_BLOB_INFO",
3370            Self::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
3371            Self::AtomBytesTransferByTagAndMetered => "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED",
3372            Self::AtomDndModeRule => "ATOM_DND_MODE_RULE",
3373            Self::AtomGeneralExternalStorageAccessStats => {
3374                "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS"
3375            }
3376            Self::AtomIncomingSms => "ATOM_INCOMING_SMS",
3377            Self::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
3378            Self::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
3379            Self::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
3380            Self::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
3381            Self::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
3382            Self::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
3383            Self::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
3384            Self::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
3385            Self::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
3386            Self::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
3387            Self::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
3388            Self::AtomCpuCyclesPerThreadGroupCluster => "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER",
3389            Self::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
3390            Self::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
3391            Self::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
3392            Self::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
3393            Self::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
3394            Self::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
3395            Self::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
3396            Self::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
3397            Self::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
3398            Self::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
3399            Self::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
3400            Self::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
3401            Self::AtomBatteryUsageStatsBeforeReset => "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET",
3402            Self::AtomBatteryUsageStatsSinceReset => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET",
3403            Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => {
3404                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL"
3405            }
3406            Self::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
3407            Self::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
3408            Self::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
3409            Self::AtomVmstat => "ATOM_VMSTAT",
3410            Self::AtomKeystore2KeyCreationWithGeneralInfo => {
3411                "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO"
3412            }
3413            Self::AtomKeystore2KeyCreationWithAuthInfo => {
3414                "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO"
3415            }
3416            Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo => {
3417                "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO"
3418            }
3419            Self::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
3420            Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo => {
3421                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO"
3422            }
3423            Self::AtomKeystore2KeyOperationWithGeneralInfo => {
3424                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO"
3425            }
3426            Self::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
3427            Self::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
3428            Self::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
3429            Self::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
3430            Self::AtomAccessibilityFloatingMenuStats => "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS",
3431            Self::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
3432            Self::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
3433            Self::AtomCarWatchdogSystemIoUsageSummary => {
3434                "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY"
3435            }
3436            Self::AtomCarWatchdogUidIoUsageSummary => "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY",
3437            Self::AtomImsRegistrationFeatureTagStats => "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS",
3438            Self::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
3439            Self::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
3440            Self::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
3441            Self::AtomSipTransportFeatureTagStats => "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS",
3442            Self::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
3443            Self::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
3444            Self::AtomImsDedicatedBearerListenerEvent => "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT",
3445            Self::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
3446            Self::AtomImsRegistrationServiceDescStats => "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS",
3447            Self::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
3448            Self::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
3449            Self::AtomGbaEvent => "ATOM_GBA_EVENT",
3450            Self::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
3451            Self::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
3452            Self::AtomPersistentUriPermissionsAmountPerPackage => {
3453                "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE"
3454            }
3455            Self::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
3456            Self::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
3457            Self::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
3458            Self::AtomUserInfo => "ATOM_USER_INFO",
3459            Self::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
3460            Self::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
3461            Self::AtomRemoteKeyProvisioningErrorCounts => {
3462                "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS"
3463            }
3464            Self::AtomSafetyState => "ATOM_SAFETY_STATE",
3465            Self::AtomIncomingMms => "ATOM_INCOMING_MMS",
3466            Self::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
3467            Self::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
3468            Self::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
3469            Self::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
3470            Self::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
3471            Self::AtomNetworkSelectionRematchReasonsInfo => {
3472                "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO"
3473            }
3474            Self::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
3475            Self::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
3476            Self::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
3477            Self::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
3478            Self::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
3479            Self::AtomWsActiveWatchFaceComplicationSetSnapshot => {
3480                "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT"
3481            }
3482            Self::AtomProcessState => "ATOM_PROCESS_STATE",
3483            Self::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
3484            Self::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
3485            Self::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
3486            Self::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
3487            Self::AtomWsFavouriteWatchFaceListSnapshot => {
3488                "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT"
3489            }
3490            Self::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
3491            Self::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
3492            Self::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
3493            Self::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
3494            Self::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
3495            Self::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
3496            Self::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
3497            Self::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
3498            Self::AtomWifiAwareResourceUsingChanged => "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED",
3499            Self::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
3500            Self::AtomWifiLocalOnlyRequestReceived => "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED",
3501            Self::AtomWifiLocalOnlyRequestScanTriggered => {
3502                "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED"
3503            }
3504            Self::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
3505            Self::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
3506            Self::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
3507            Self::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
3508            Self::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
3509            Self::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
3510            Self::AtomExpressHistogramSampleReported => "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED",
3511            Self::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
3512            Self::AtomExpressUidHistogramSampleReported => {
3513                "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED"
3514            }
3515            Self::AtomPermissionRationaleDialogViewed => "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED",
3516            Self::AtomPermissionRationaleDialogActionReported => {
3517                "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED"
3518            }
3519            Self::AtomAppDataSharingUpdatesNotificationInteraction => {
3520                "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION"
3521            }
3522            Self::AtomAppDataSharingUpdatesFragmentViewed => {
3523                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED"
3524            }
3525            Self::AtomAppDataSharingUpdatesFragmentActionReported => {
3526                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED"
3527            }
3528            Self::AtomWsIncomingCallActionReported => "ATOM_WS_INCOMING_CALL_ACTION_REPORTED",
3529            Self::AtomWsCallDisconnectionReported => "ATOM_WS_CALL_DISCONNECTION_REPORTED",
3530            Self::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
3531            Self::AtomWsCallUserExperienceLatencyReported => {
3532                "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED"
3533            }
3534            Self::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
3535            Self::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
3536            Self::AtomBalAllowed => "ATOM_BAL_ALLOWED",
3537            Self::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
3538            Self::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
3539            Self::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
3540            Self::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
3541            Self::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
3542            Self::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
3543            Self::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
3544            Self::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
3545            Self::AtomWearAdaptiveSuspendStatsReported => {
3546                "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED"
3547            }
3548            Self::AtomWearPowerAnomalyServiceOperationalStatsReported => {
3549                "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED"
3550            }
3551            Self::AtomWearPowerAnomalyServiceEventStatsReported => {
3552                "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED"
3553            }
3554            Self::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
3555            Self::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
3556            Self::AtomMteState => "ATOM_MTE_STATE",
3557            Self::AtomAdServicesBackCompatGetTopicsReported => {
3558                "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED"
3559            }
3560            Self::AtomAdServicesBackCompatEpochComputationClassifierReported => {
3561                "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
3562            }
3563            Self::AtomAdServicesMeasurementDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS",
3564            Self::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
3565            Self::AtomAdServicesBackgroundJobsExecutionReported => {
3566                "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED"
3567            }
3568            Self::AtomAdServicesMeasurementDelayedSourceRegistration => {
3569                "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION"
3570            }
3571            Self::AtomAdServicesMeasurementAttribution => {
3572                "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION"
3573            }
3574            Self::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
3575            Self::AtomAdServicesMeasurementWipeout => "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT",
3576            Self::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
3577            Self::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
3578            Self::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
3579            Self::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
3580            Self::AtomAutofillFillRequestReported => "ATOM_AUTOFILL_FILL_REQUEST_REPORTED",
3581            Self::AtomAutofillFillResponseReported => "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED",
3582            Self::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
3583            Self::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
3584            Self::AtomAutofillFieldClassificationEventReported => {
3585                "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED"
3586            }
3587            Self::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
3588            Self::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
3589            Self::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
3590            Self::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
3591            Self::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
3592            Self::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
3593            Self::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
3594            Self::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
3595            Self::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
3596            Self::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
3597            Self::AtomQnsFallbackRestrictionChanged => "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED",
3598            Self::AtomQnsRatPreferenceMismatchInfo => "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO",
3599            Self::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
3600            Self::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
3601            Self::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
3602            Self::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
3603            Self::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
3604            Self::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
3605            Self::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
3606            Self::AtomSatelliteSosMessageRecommender => "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER",
3607            Self::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
3608            Self::AtomIkeLivenessCheckSessionValidated => {
3609                "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED"
3610            }
3611            Self::AtomBluetoothHashedDeviceNameReported => {
3612                "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED"
3613            }
3614            Self::AtomBluetoothL2capCocClientConnection => {
3615                "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION"
3616            }
3617            Self::AtomBluetoothL2capCocServerConnection => {
3618                "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION"
3619            }
3620            Self::AtomBluetoothLeSessionConnected => "ATOM_BLUETOOTH_LE_SESSION_CONNECTED",
3621            Self::AtomRestrictedBluetoothDeviceNameReported => {
3622                "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED"
3623            }
3624            Self::AtomBluetoothProfileConnectionAttempted => {
3625                "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED"
3626            }
3627            Self::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
3628            Self::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
3629            Self::AtomHealthConnectAppOpenedReported => "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED",
3630            Self::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
3631            Self::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
3632            Self::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
3633            Self::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
3634            Self::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
3635            Self::AtomAtom9999 => "ATOM_ATOM_9999",
3636            Self::AtomAtom99999 => "ATOM_ATOM_99999",
3637            Self::AtomThreadnetworkTelemetryDataReported => {
3638                "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED"
3639            }
3640            Self::AtomThreadnetworkTopoEntryRepeated => "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED",
3641            Self::AtomThreadnetworkDeviceInfoReported => "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED",
3642            Self::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
3643            Self::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
3644            Self::AtomSandboxActivityEventOccurred => "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED",
3645            Self::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
3646            Self::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
3647            Self::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
3648            Self::AtomCronetEngineBuilderInitialized => "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED",
3649            Self::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
3650            Self::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
3651            Self::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
3652            Self::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
3653            Self::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
3654            Self::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
3655            Self::AtomCredentialManagerInitPhaseReported => {
3656                "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED"
3657            }
3658            Self::AtomCredentialManagerCandidatePhaseReported => {
3659                "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED"
3660            }
3661            Self::AtomCredentialManagerFinalPhaseReported => {
3662                "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED"
3663            }
3664            Self::AtomCredentialManagerTotalReported => "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED",
3665            Self::AtomCredentialManagerFinalnouidReported => {
3666                "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED"
3667            }
3668            Self::AtomCredentialManagerGetReported => "ATOM_CREDENTIAL_MANAGER_GET_REPORTED",
3669            Self::AtomCredentialManagerAuthClickReported => {
3670                "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED"
3671            }
3672            Self::AtomCredentialManagerApiv2Called => "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED",
3673            Self::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
3674            Self::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
3675            Self::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
3676            Self::AtomMediaCodecReclaimRequestCompleted => {
3677                "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED"
3678            }
3679            Self::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
3680            Self::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
3681            Self::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
3682        }
3683    }
3684    /// Creates an enum from field names used in the ProtoBuf definition.
3685    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3686        match value {
3687            "ATOM_UNSPECIFIED" => Some(Self::AtomUnspecified),
3688            "ATOM_BLE_SCAN_STATE_CHANGED" => Some(Self::AtomBleScanStateChanged),
3689            "ATOM_PROCESS_STATE_CHANGED" => Some(Self::AtomProcessStateChanged),
3690            "ATOM_BLE_SCAN_RESULT_RECEIVED" => Some(Self::AtomBleScanResultReceived),
3691            "ATOM_SENSOR_STATE_CHANGED" => Some(Self::AtomSensorStateChanged),
3692            "ATOM_GPS_SCAN_STATE_CHANGED" => Some(Self::AtomGpsScanStateChanged),
3693            "ATOM_SYNC_STATE_CHANGED" => Some(Self::AtomSyncStateChanged),
3694            "ATOM_SCHEDULED_JOB_STATE_CHANGED" => Some(Self::AtomScheduledJobStateChanged),
3695            "ATOM_SCREEN_BRIGHTNESS_CHANGED" => Some(Self::AtomScreenBrightnessChanged),
3696            "ATOM_WAKELOCK_STATE_CHANGED" => Some(Self::AtomWakelockStateChanged),
3697            "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED" => {
3698                Some(Self::AtomLongPartialWakelockStateChanged)
3699            }
3700            "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED" => Some(Self::AtomMobileRadioPowerStateChanged),
3701            "ATOM_WIFI_RADIO_POWER_STATE_CHANGED" => Some(Self::AtomWifiRadioPowerStateChanged),
3702            "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED" => {
3703                Some(Self::AtomActivityManagerSleepStateChanged)
3704            }
3705            "ATOM_MEMORY_FACTOR_STATE_CHANGED" => Some(Self::AtomMemoryFactorStateChanged),
3706            "ATOM_EXCESSIVE_CPU_USAGE_REPORTED" => Some(Self::AtomExcessiveCpuUsageReported),
3707            "ATOM_CACHED_KILL_REPORTED" => Some(Self::AtomCachedKillReported),
3708            "ATOM_PROCESS_MEMORY_STAT_REPORTED" => Some(Self::AtomProcessMemoryStatReported),
3709            "ATOM_LAUNCHER_EVENT" => Some(Self::AtomLauncherEvent),
3710            "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED" => Some(Self::AtomBatterySaverModeStateChanged),
3711            "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED" => Some(Self::AtomDeviceIdleModeStateChanged),
3712            "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED" => Some(Self::AtomDeviceIdlingModeStateChanged),
3713            "ATOM_AUDIO_STATE_CHANGED" => Some(Self::AtomAudioStateChanged),
3714            "ATOM_MEDIA_CODEC_STATE_CHANGED" => Some(Self::AtomMediaCodecStateChanged),
3715            "ATOM_CAMERA_STATE_CHANGED" => Some(Self::AtomCameraStateChanged),
3716            "ATOM_FLASHLIGHT_STATE_CHANGED" => Some(Self::AtomFlashlightStateChanged),
3717            "ATOM_UID_PROCESS_STATE_CHANGED" => Some(Self::AtomUidProcessStateChanged),
3718            "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED" => Some(Self::AtomProcessLifeCycleStateChanged),
3719            "ATOM_SCREEN_STATE_CHANGED" => Some(Self::AtomScreenStateChanged),
3720            "ATOM_BATTERY_LEVEL_CHANGED" => Some(Self::AtomBatteryLevelChanged),
3721            "ATOM_CHARGING_STATE_CHANGED" => Some(Self::AtomChargingStateChanged),
3722            "ATOM_PLUGGED_STATE_CHANGED" => Some(Self::AtomPluggedStateChanged),
3723            "ATOM_INTERACTIVE_STATE_CHANGED" => Some(Self::AtomInteractiveStateChanged),
3724            "ATOM_TOUCH_EVENT_REPORTED" => Some(Self::AtomTouchEventReported),
3725            "ATOM_WAKEUP_ALARM_OCCURRED" => Some(Self::AtomWakeupAlarmOccurred),
3726            "ATOM_KERNEL_WAKEUP_REPORTED" => Some(Self::AtomKernelWakeupReported),
3727            "ATOM_WIFI_LOCK_STATE_CHANGED" => Some(Self::AtomWifiLockStateChanged),
3728            "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED" => Some(Self::AtomWifiSignalStrengthChanged),
3729            "ATOM_WIFI_SCAN_STATE_CHANGED" => Some(Self::AtomWifiScanStateChanged),
3730            "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED" => Some(Self::AtomPhoneSignalStrengthChanged),
3731            "ATOM_SETTING_CHANGED" => Some(Self::AtomSettingChanged),
3732            "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED" => {
3733                Some(Self::AtomActivityForegroundStateChanged)
3734            }
3735            "ATOM_ISOLATED_UID_CHANGED" => Some(Self::AtomIsolatedUidChanged),
3736            "ATOM_PACKET_WAKEUP_OCCURRED" => Some(Self::AtomPacketWakeupOccurred),
3737            "ATOM_WALL_CLOCK_TIME_SHIFTED" => Some(Self::AtomWallClockTimeShifted),
3738            "ATOM_ANOMALY_DETECTED" => Some(Self::AtomAnomalyDetected),
3739            "ATOM_APP_BREADCRUMB_REPORTED" => Some(Self::AtomAppBreadcrumbReported),
3740            "ATOM_APP_START_OCCURRED" => Some(Self::AtomAppStartOccurred),
3741            "ATOM_APP_START_CANCELED" => Some(Self::AtomAppStartCanceled),
3742            "ATOM_APP_START_FULLY_DRAWN" => Some(Self::AtomAppStartFullyDrawn),
3743            "ATOM_LMK_KILL_OCCURRED" => Some(Self::AtomLmkKillOccurred),
3744            "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED" => Some(Self::AtomPictureInPictureStateChanged),
3745            "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED" => {
3746                Some(Self::AtomWifiMulticastLockStateChanged)
3747            }
3748            "ATOM_LMK_STATE_CHANGED" => Some(Self::AtomLmkStateChanged),
3749            "ATOM_APP_START_MEMORY_STATE_CAPTURED" => Some(Self::AtomAppStartMemoryStateCaptured),
3750            "ATOM_SHUTDOWN_SEQUENCE_REPORTED" => Some(Self::AtomShutdownSequenceReported),
3751            "ATOM_BOOT_SEQUENCE_REPORTED" => Some(Self::AtomBootSequenceReported),
3752            "ATOM_DAVEY_OCCURRED" => Some(Self::AtomDaveyOccurred),
3753            "ATOM_OVERLAY_STATE_CHANGED" => Some(Self::AtomOverlayStateChanged),
3754            "ATOM_FOREGROUND_SERVICE_STATE_CHANGED" => {
3755                Some(Self::AtomForegroundServiceStateChanged)
3756            }
3757            "ATOM_CALL_STATE_CHANGED" => Some(Self::AtomCallStateChanged),
3758            "ATOM_KEYGUARD_STATE_CHANGED" => Some(Self::AtomKeyguardStateChanged),
3759            "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED" => Some(Self::AtomKeyguardBouncerStateChanged),
3760            "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED" => {
3761                Some(Self::AtomKeyguardBouncerPasswordEntered)
3762            }
3763            "ATOM_APP_DIED" => Some(Self::AtomAppDied),
3764            "ATOM_RESOURCE_CONFIGURATION_CHANGED" => Some(Self::AtomResourceConfigurationChanged),
3765            "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED" => Some(Self::AtomBluetoothEnabledStateChanged),
3766            "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED" => {
3767                Some(Self::AtomBluetoothConnectionStateChanged)
3768            }
3769            "ATOM_GPS_SIGNAL_QUALITY_CHANGED" => Some(Self::AtomGpsSignalQualityChanged),
3770            "ATOM_USB_CONNECTOR_STATE_CHANGED" => Some(Self::AtomUsbConnectorStateChanged),
3771            "ATOM_SPEAKER_IMPEDANCE_REPORTED" => Some(Self::AtomSpeakerImpedanceReported),
3772            "ATOM_HARDWARE_FAILED" => Some(Self::AtomHardwareFailed),
3773            "ATOM_PHYSICAL_DROP_DETECTED" => Some(Self::AtomPhysicalDropDetected),
3774            "ATOM_CHARGE_CYCLES_REPORTED" => Some(Self::AtomChargeCyclesReported),
3775            "ATOM_MOBILE_CONNECTION_STATE_CHANGED" => Some(Self::AtomMobileConnectionStateChanged),
3776            "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED" => Some(Self::AtomMobileRadioTechnologyChanged),
3777            "ATOM_USB_DEVICE_ATTACHED" => Some(Self::AtomUsbDeviceAttached),
3778            "ATOM_APP_CRASH_OCCURRED" => Some(Self::AtomAppCrashOccurred),
3779            "ATOM_ANR_OCCURRED" => Some(Self::AtomAnrOccurred),
3780            "ATOM_WTF_OCCURRED" => Some(Self::AtomWtfOccurred),
3781            "ATOM_LOW_MEM_REPORTED" => Some(Self::AtomLowMemReported),
3782            "ATOM_GENERIC_ATOM" => Some(Self::AtomGenericAtom),
3783            "ATOM_VIBRATOR_STATE_CHANGED" => Some(Self::AtomVibratorStateChanged),
3784            "ATOM_DEFERRED_JOB_STATS_REPORTED" => Some(Self::AtomDeferredJobStatsReported),
3785            "ATOM_THERMAL_THROTTLING" => Some(Self::AtomThermalThrottling),
3786            "ATOM_BIOMETRIC_ACQUIRED" => Some(Self::AtomBiometricAcquired),
3787            "ATOM_BIOMETRIC_AUTHENTICATED" => Some(Self::AtomBiometricAuthenticated),
3788            "ATOM_BIOMETRIC_ERROR_OCCURRED" => Some(Self::AtomBiometricErrorOccurred),
3789            "ATOM_UI_EVENT_REPORTED" => Some(Self::AtomUiEventReported),
3790            "ATOM_BATTERY_HEALTH_SNAPSHOT" => Some(Self::AtomBatteryHealthSnapshot),
3791            "ATOM_SLOW_IO" => Some(Self::AtomSlowIo),
3792            "ATOM_BATTERY_CAUSED_SHUTDOWN" => Some(Self::AtomBatteryCausedShutdown),
3793            "ATOM_PHONE_SERVICE_STATE_CHANGED" => Some(Self::AtomPhoneServiceStateChanged),
3794            "ATOM_PHONE_STATE_CHANGED" => Some(Self::AtomPhoneStateChanged),
3795            "ATOM_USER_RESTRICTION_CHANGED" => Some(Self::AtomUserRestrictionChanged),
3796            "ATOM_SETTINGS_UI_CHANGED" => Some(Self::AtomSettingsUiChanged),
3797            "ATOM_CONNECTIVITY_STATE_CHANGED" => Some(Self::AtomConnectivityStateChanged),
3798            "ATOM_SERVICE_STATE_CHANGED" => Some(Self::AtomServiceStateChanged),
3799            "ATOM_SERVICE_LAUNCH_REPORTED" => Some(Self::AtomServiceLaunchReported),
3800            "ATOM_FLAG_FLIP_UPDATE_OCCURRED" => Some(Self::AtomFlagFlipUpdateOccurred),
3801            "ATOM_BINARY_PUSH_STATE_CHANGED" => Some(Self::AtomBinaryPushStateChanged),
3802            "ATOM_DEVICE_POLICY_EVENT" => Some(Self::AtomDevicePolicyEvent),
3803            "ATOM_DOCS_UI_FILE_OP_CANCELED" => Some(Self::AtomDocsUiFileOpCanceled),
3804            "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED" => {
3805                Some(Self::AtomDocsUiFileOpCopyMoveModeReported)
3806            }
3807            "ATOM_DOCS_UI_FILE_OP_FAILURE" => Some(Self::AtomDocsUiFileOpFailure),
3808            "ATOM_DOCS_UI_PROVIDER_FILE_OP" => Some(Self::AtomDocsUiProviderFileOp),
3809            "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST" => {
3810                Some(Self::AtomDocsUiInvalidScopedAccessRequest)
3811            }
3812            "ATOM_DOCS_UI_LAUNCH_REPORTED" => Some(Self::AtomDocsUiLaunchReported),
3813            "ATOM_DOCS_UI_ROOT_VISITED" => Some(Self::AtomDocsUiRootVisited),
3814            "ATOM_DOCS_UI_STARTUP_MS" => Some(Self::AtomDocsUiStartupMs),
3815            "ATOM_DOCS_UI_USER_ACTION_REPORTED" => Some(Self::AtomDocsUiUserActionReported),
3816            "ATOM_WIFI_ENABLED_STATE_CHANGED" => Some(Self::AtomWifiEnabledStateChanged),
3817            "ATOM_WIFI_RUNNING_STATE_CHANGED" => Some(Self::AtomWifiRunningStateChanged),
3818            "ATOM_APP_COMPACTED" => Some(Self::AtomAppCompacted),
3819            "ATOM_NETWORK_DNS_EVENT_REPORTED" => Some(Self::AtomNetworkDnsEventReported),
3820            "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED" => {
3821                Some(Self::AtomDocsUiPickerLaunchedFromReported)
3822            }
3823            "ATOM_DOCS_UI_PICK_RESULT_REPORTED" => Some(Self::AtomDocsUiPickResultReported),
3824            "ATOM_DOCS_UI_SEARCH_MODE_REPORTED" => Some(Self::AtomDocsUiSearchModeReported),
3825            "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED" => Some(Self::AtomDocsUiSearchTypeReported),
3826            "ATOM_DATA_STALL_EVENT" => Some(Self::AtomDataStallEvent),
3827            "ATOM_RESCUE_PARTY_RESET_REPORTED" => Some(Self::AtomRescuePartyResetReported),
3828            "ATOM_SIGNED_CONFIG_REPORTED" => Some(Self::AtomSignedConfigReported),
3829            "ATOM_GNSS_NI_EVENT_REPORTED" => Some(Self::AtomGnssNiEventReported),
3830            "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT" => {
3831                Some(Self::AtomBluetoothLinkLayerConnectionEvent)
3832            }
3833            "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED" => {
3834                Some(Self::AtomBluetoothAclConnectionStateChanged)
3835            }
3836            "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED" => {
3837                Some(Self::AtomBluetoothScoConnectionStateChanged)
3838            }
3839            "ATOM_APP_DOWNGRADED" => Some(Self::AtomAppDowngraded),
3840            "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED" => Some(Self::AtomAppOptimizedAfterDowngraded),
3841            "ATOM_LOW_STORAGE_STATE_CHANGED" => Some(Self::AtomLowStorageStateChanged),
3842            "ATOM_GNSS_NFW_NOTIFICATION_REPORTED" => Some(Self::AtomGnssNfwNotificationReported),
3843            "ATOM_GNSS_CONFIGURATION_REPORTED" => Some(Self::AtomGnssConfigurationReported),
3844            "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED" => Some(Self::AtomUsbPortOverheatEventReported),
3845            "ATOM_NFC_ERROR_OCCURRED" => Some(Self::AtomNfcErrorOccurred),
3846            "ATOM_NFC_STATE_CHANGED" => Some(Self::AtomNfcStateChanged),
3847            "ATOM_NFC_BEAM_OCCURRED" => Some(Self::AtomNfcBeamOccurred),
3848            "ATOM_NFC_CARDEMULATION_OCCURRED" => Some(Self::AtomNfcCardemulationOccurred),
3849            "ATOM_NFC_TAG_OCCURRED" => Some(Self::AtomNfcTagOccurred),
3850            "ATOM_NFC_HCE_TRANSACTION_OCCURRED" => Some(Self::AtomNfcHceTransactionOccurred),
3851            "ATOM_SE_STATE_CHANGED" => Some(Self::AtomSeStateChanged),
3852            "ATOM_SE_OMAPI_REPORTED" => Some(Self::AtomSeOmapiReported),
3853            "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED" => {
3854                Some(Self::AtomBroadcastDispatchLatencyReported)
3855            }
3856            "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED" => {
3857                Some(Self::AtomAttentionManagerServiceResultReported)
3858            }
3859            "ATOM_ADB_CONNECTION_CHANGED" => Some(Self::AtomAdbConnectionChanged),
3860            "ATOM_SPEECH_DSP_STAT_REPORTED" => Some(Self::AtomSpeechDspStatReported),
3861            "ATOM_USB_CONTAMINANT_REPORTED" => Some(Self::AtomUsbContaminantReported),
3862            "ATOM_WATCHDOG_ROLLBACK_OCCURRED" => Some(Self::AtomWatchdogRollbackOccurred),
3863            "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED" => {
3864                Some(Self::AtomBiometricSystemHealthIssueDetected)
3865            }
3866            "ATOM_BUBBLE_UI_CHANGED" => Some(Self::AtomBubbleUiChanged),
3867            "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED" => {
3868                Some(Self::AtomScheduledJobConstraintChanged)
3869            }
3870            "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED" => Some(Self::AtomBluetoothActiveDeviceChanged),
3871            "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED" => {
3872                Some(Self::AtomBluetoothA2dpPlaybackStateChanged)
3873            }
3874            "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED" => {
3875                Some(Self::AtomBluetoothA2dpCodecConfigChanged)
3876            }
3877            "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED" => {
3878                Some(Self::AtomBluetoothA2dpCodecCapabilityChanged)
3879            }
3880            "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED" => {
3881                Some(Self::AtomBluetoothA2dpAudioUnderrunReported)
3882            }
3883            "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED" => {
3884                Some(Self::AtomBluetoothA2dpAudioOverrunReported)
3885            }
3886            "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED" => Some(Self::AtomBluetoothDeviceRssiReported),
3887            "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED" => {
3888                Some(Self::AtomBluetoothDeviceFailedContactCounterReported)
3889            }
3890            "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED" => {
3891                Some(Self::AtomBluetoothDeviceTxPowerLevelReported)
3892            }
3893            "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED" => Some(Self::AtomBluetoothHciTimeoutReported),
3894            "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED" => {
3895                Some(Self::AtomBluetoothQualityReportReported)
3896            }
3897            "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED" => Some(Self::AtomBluetoothDeviceInfoReported),
3898            "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED" => {
3899                Some(Self::AtomBluetoothRemoteVersionInfoReported)
3900            }
3901            "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED" => {
3902                Some(Self::AtomBluetoothSdpAttributeReported)
3903            }
3904            "ATOM_BLUETOOTH_BOND_STATE_CHANGED" => Some(Self::AtomBluetoothBondStateChanged),
3905            "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED" => {
3906                Some(Self::AtomBluetoothClassicPairingEventReported)
3907            }
3908            "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED" => {
3909                Some(Self::AtomBluetoothSmpPairingEventReported)
3910            }
3911            "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED" => {
3912                Some(Self::AtomScreenTimeoutExtensionReported)
3913            }
3914            "ATOM_PROCESS_START_TIME" => Some(Self::AtomProcessStartTime),
3915            "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED" => {
3916                Some(Self::AtomPermissionGrantRequestResultReported)
3917            }
3918            "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED" => {
3919                Some(Self::AtomBluetoothSocketConnectionStateChanged)
3920            }
3921            "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED" => Some(Self::AtomDeviceIdentifierAccessDenied),
3922            "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED" => Some(Self::AtomBubbleDeveloperErrorReported),
3923            "ATOM_ASSIST_GESTURE_STAGE_REPORTED" => Some(Self::AtomAssistGestureStageReported),
3924            "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED" => {
3925                Some(Self::AtomAssistGestureFeedbackReported)
3926            }
3927            "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED" => {
3928                Some(Self::AtomAssistGestureProgressReported)
3929            }
3930            "ATOM_TOUCH_GESTURE_CLASSIFIED" => Some(Self::AtomTouchGestureClassified),
3931            "ATOM_HIDDEN_API_USED" => Some(Self::AtomHiddenApiUsed),
3932            "ATOM_STYLE_UI_CHANGED" => Some(Self::AtomStyleUiChanged),
3933            "ATOM_PRIVACY_INDICATORS_INTERACTED" => Some(Self::AtomPrivacyIndicatorsInteracted),
3934            "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED" => {
3935                Some(Self::AtomAppInstallOnExternalStorageReported)
3936            }
3937            "ATOM_NETWORK_STACK_REPORTED" => Some(Self::AtomNetworkStackReported),
3938            "ATOM_APP_MOVED_STORAGE_REPORTED" => Some(Self::AtomAppMovedStorageReported),
3939            "ATOM_BIOMETRIC_ENROLLED" => Some(Self::AtomBiometricEnrolled),
3940            "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED" => Some(Self::AtomSystemServerWatchdogOccurred),
3941            "ATOM_TOMB_STONE_OCCURRED" => Some(Self::AtomTombStoneOccurred),
3942            "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED" => {
3943                Some(Self::AtomBluetoothClassOfDeviceReported)
3944            }
3945            "ATOM_INTELLIGENCE_EVENT_REPORTED" => Some(Self::AtomIntelligenceEventReported),
3946            "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED" => {
3947                Some(Self::AtomThermalThrottlingSeverityStateChanged)
3948            }
3949            "ATOM_ROLE_REQUEST_RESULT_REPORTED" => Some(Self::AtomRoleRequestResultReported),
3950            "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED" => {
3951                Some(Self::AtomMediametricsAudiopolicyReported)
3952            }
3953            "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED" => {
3954                Some(Self::AtomMediametricsAudiorecordReported)
3955            }
3956            "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED" => {
3957                Some(Self::AtomMediametricsAudiothreadReported)
3958            }
3959            "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED" => {
3960                Some(Self::AtomMediametricsAudiotrackReported)
3961            }
3962            "ATOM_MEDIAMETRICS_CODEC_REPORTED" => Some(Self::AtomMediametricsCodecReported),
3963            "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED" => {
3964                Some(Self::AtomMediametricsDrmWidevineReported)
3965            }
3966            "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED" => Some(Self::AtomMediametricsExtractorReported),
3967            "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED" => Some(Self::AtomMediametricsMediadrmReported),
3968            "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED" => Some(Self::AtomMediametricsNuplayerReported),
3969            "ATOM_MEDIAMETRICS_RECORDER_REPORTED" => Some(Self::AtomMediametricsRecorderReported),
3970            "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED" => {
3971                Some(Self::AtomMediametricsDrmmanagerReported)
3972            }
3973            "ATOM_CAR_POWER_STATE_CHANGED" => Some(Self::AtomCarPowerStateChanged),
3974            "ATOM_GARAGE_MODE_INFO" => Some(Self::AtomGarageModeInfo),
3975            "ATOM_TEST_ATOM_REPORTED" => Some(Self::AtomTestAtomReported),
3976            "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED" => {
3977                Some(Self::AtomContentCaptureCallerMismatchReported)
3978            }
3979            "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS" => Some(Self::AtomContentCaptureServiceEvents),
3980            "ATOM_CONTENT_CAPTURE_SESSION_EVENTS" => Some(Self::AtomContentCaptureSessionEvents),
3981            "ATOM_CONTENT_CAPTURE_FLUSHED" => Some(Self::AtomContentCaptureFlushed),
3982            "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED" => {
3983                Some(Self::AtomLocationManagerApiUsageReported)
3984            }
3985            "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED" => {
3986                Some(Self::AtomReviewPermissionsFragmentResultReported)
3987            }
3988            "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT" => {
3989                Some(Self::AtomRuntimePermissionsUpgradeResult)
3990            }
3991            "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS" => {
3992                Some(Self::AtomGrantPermissionsActivityButtonActions)
3993            }
3994            "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION" => {
3995                Some(Self::AtomLocationAccessCheckNotificationAction)
3996            }
3997            "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED" => {
3998                Some(Self::AtomAppPermissionFragmentActionReported)
3999            }
4000            "ATOM_APP_PERMISSION_FRAGMENT_VIEWED" => Some(Self::AtomAppPermissionFragmentViewed),
4001            "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED" => Some(Self::AtomAppPermissionsFragmentViewed),
4002            "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED" => Some(Self::AtomPermissionAppsFragmentViewed),
4003            "ATOM_TEXT_SELECTION_EVENT" => Some(Self::AtomTextSelectionEvent),
4004            "ATOM_TEXT_LINKIFY_EVENT" => Some(Self::AtomTextLinkifyEvent),
4005            "ATOM_CONVERSATION_ACTIONS_EVENT" => Some(Self::AtomConversationActionsEvent),
4006            "ATOM_LANGUAGE_DETECTION_EVENT" => Some(Self::AtomLanguageDetectionEvent),
4007            "ATOM_EXCLUSION_RECT_STATE_CHANGED" => Some(Self::AtomExclusionRectStateChanged),
4008            "ATOM_BACK_GESTURE_REPORTED_REPORTED" => Some(Self::AtomBackGestureReportedReported),
4009            "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED" => {
4010                Some(Self::AtomUpdateEngineUpdateAttemptReported)
4011            }
4012            "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED" => {
4013                Some(Self::AtomUpdateEngineSuccessfulUpdateReported)
4014            }
4015            "ATOM_CAMERA_ACTION_EVENT" => Some(Self::AtomCameraActionEvent),
4016            "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED" => {
4017                Some(Self::AtomAppCompatibilityChangeReported)
4018            }
4019            "ATOM_PERFETTO_UPLOADED" => Some(Self::AtomPerfettoUploaded),
4020            "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED" => {
4021                Some(Self::AtomVmsClientConnectionStateChanged)
4022            }
4023            "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED" => Some(Self::AtomMediaProviderScanOccurred),
4024            "ATOM_MEDIA_CONTENT_DELETED" => Some(Self::AtomMediaContentDeleted),
4025            "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED" => {
4026                Some(Self::AtomMediaProviderPermissionRequested)
4027            }
4028            "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED" => Some(Self::AtomMediaProviderSchemaChanged),
4029            "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED" => {
4030                Some(Self::AtomMediaProviderIdleMaintenanceFinished)
4031            }
4032            "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED" => Some(Self::AtomRebootEscrowRecoveryReported),
4033            "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED" => {
4034                Some(Self::AtomBootTimeEventDurationReported)
4035            }
4036            "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED" => {
4037                Some(Self::AtomBootTimeEventElapsedTimeReported)
4038            }
4039            "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED" => {
4040                Some(Self::AtomBootTimeEventUtcTimeReported)
4041            }
4042            "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED" => {
4043                Some(Self::AtomBootTimeEventErrorCodeReported)
4044            }
4045            "ATOM_USERSPACE_REBOOT_REPORTED" => Some(Self::AtomUserspaceRebootReported),
4046            "ATOM_NOTIFICATION_REPORTED" => Some(Self::AtomNotificationReported),
4047            "ATOM_NOTIFICATION_PANEL_REPORTED" => Some(Self::AtomNotificationPanelReported),
4048            "ATOM_NOTIFICATION_CHANNEL_MODIFIED" => Some(Self::AtomNotificationChannelModified),
4049            "ATOM_INTEGRITY_CHECK_RESULT_REPORTED" => Some(Self::AtomIntegrityCheckResultReported),
4050            "ATOM_INTEGRITY_RULES_PUSHED" => Some(Self::AtomIntegrityRulesPushed),
4051            "ATOM_CB_MESSAGE_REPORTED" => Some(Self::AtomCbMessageReported),
4052            "ATOM_CB_MESSAGE_ERROR" => Some(Self::AtomCbMessageError),
4053            "ATOM_WIFI_HEALTH_STAT_REPORTED" => Some(Self::AtomWifiHealthStatReported),
4054            "ATOM_WIFI_FAILURE_STAT_REPORTED" => Some(Self::AtomWifiFailureStatReported),
4055            "ATOM_WIFI_CONNECTION_RESULT_REPORTED" => Some(Self::AtomWifiConnectionResultReported),
4056            "ATOM_APP_FREEZE_CHANGED" => Some(Self::AtomAppFreezeChanged),
4057            "ATOM_SNAPSHOT_MERGE_REPORTED" => Some(Self::AtomSnapshotMergeReported),
4058            "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED" => {
4059                Some(Self::AtomForegroundServiceAppOpSessionEnded)
4060            }
4061            "ATOM_DISPLAY_JANK_REPORTED" => Some(Self::AtomDisplayJankReported),
4062            "ATOM_APP_STANDBY_BUCKET_CHANGED" => Some(Self::AtomAppStandbyBucketChanged),
4063            "ATOM_SHARESHEET_STARTED" => Some(Self::AtomSharesheetStarted),
4064            "ATOM_RANKING_SELECTED" => Some(Self::AtomRankingSelected),
4065            "ATOM_TVSETTINGS_UI_INTERACTED" => Some(Self::AtomTvsettingsUiInteracted),
4066            "ATOM_LAUNCHER_SNAPSHOT" => Some(Self::AtomLauncherSnapshot),
4067            "ATOM_PACKAGE_INSTALLER_V2_REPORTED" => Some(Self::AtomPackageInstallerV2Reported),
4068            "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED" => Some(Self::AtomUserLifecycleJourneyReported),
4069            "ATOM_USER_LIFECYCLE_EVENT_OCCURRED" => Some(Self::AtomUserLifecycleEventOccurred),
4070            "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED" => Some(Self::AtomAccessibilityShortcutReported),
4071            "ATOM_ACCESSIBILITY_SERVICE_REPORTED" => Some(Self::AtomAccessibilityServiceReported),
4072            "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED" => Some(Self::AtomDocsUiDragAndDropReported),
4073            "ATOM_APP_USAGE_EVENT_OCCURRED" => Some(Self::AtomAppUsageEventOccurred),
4074            "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED" => {
4075                Some(Self::AtomAutoRevokeNotificationClicked)
4076            }
4077            "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED" => Some(Self::AtomAutoRevokeFragmentAppViewed),
4078            "ATOM_AUTO_REVOKED_APP_INTERACTION" => Some(Self::AtomAutoRevokedAppInteraction),
4079            "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION" => {
4080                Some(Self::AtomAppPermissionGroupsFragmentAutoRevokeAction)
4081            }
4082            "ATOM_EVS_USAGE_STATS_REPORTED" => Some(Self::AtomEvsUsageStatsReported),
4083            "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED" => Some(Self::AtomAudioPowerUsageDataReported),
4084            "ATOM_TV_TUNER_STATE_CHANGED" => Some(Self::AtomTvTunerStateChanged),
4085            "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED" => Some(Self::AtomMediaoutputOpSwitchReported),
4086            "ATOM_CB_MESSAGE_FILTERED" => Some(Self::AtomCbMessageFiltered),
4087            "ATOM_TV_TUNER_DVR_STATUS" => Some(Self::AtomTvTunerDvrStatus),
4088            "ATOM_TV_CAS_SESSION_OPEN_STATUS" => Some(Self::AtomTvCasSessionOpenStatus),
4089            "ATOM_ASSISTANT_INVOCATION_REPORTED" => Some(Self::AtomAssistantInvocationReported),
4090            "ATOM_DISPLAY_WAKE_REPORTED" => Some(Self::AtomDisplayWakeReported),
4091            "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED" => {
4092                Some(Self::AtomCarUserHalModifyUserRequestReported)
4093            }
4094            "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED" => {
4095                Some(Self::AtomCarUserHalModifyUserResponseReported)
4096            }
4097            "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED" => {
4098                Some(Self::AtomCarUserHalPostSwitchResponseReported)
4099            }
4100            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED" => {
4101                Some(Self::AtomCarUserHalInitialUserInfoRequestReported)
4102            }
4103            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED" => {
4104                Some(Self::AtomCarUserHalInitialUserInfoResponseReported)
4105            }
4106            "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED" => {
4107                Some(Self::AtomCarUserHalUserAssociationRequestReported)
4108            }
4109            "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED" => {
4110                Some(Self::AtomCarUserHalSetUserAssociationResponseReported)
4111            }
4112            "ATOM_NETWORK_IP_PROVISIONING_REPORTED" => {
4113                Some(Self::AtomNetworkIpProvisioningReported)
4114            }
4115            "ATOM_NETWORK_DHCP_RENEW_REPORTED" => Some(Self::AtomNetworkDhcpRenewReported),
4116            "ATOM_NETWORK_VALIDATION_REPORTED" => Some(Self::AtomNetworkValidationReported),
4117            "ATOM_NETWORK_STACK_QUIRK_REPORTED" => Some(Self::AtomNetworkStackQuirkReported),
4118            "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED" => {
4119                Some(Self::AtomMediametricsAudiorecorddeviceusageReported)
4120            }
4121            "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED" => {
4122                Some(Self::AtomMediametricsAudiothreaddeviceusageReported)
4123            }
4124            "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED" => {
4125                Some(Self::AtomMediametricsAudiotrackdeviceusageReported)
4126            }
4127            "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED" => {
4128                Some(Self::AtomMediametricsAudiodeviceconnectionReported)
4129            }
4130            "ATOM_BLOB_COMMITTED" => Some(Self::AtomBlobCommitted),
4131            "ATOM_BLOB_LEASED" => Some(Self::AtomBlobLeased),
4132            "ATOM_BLOB_OPENED" => Some(Self::AtomBlobOpened),
4133            "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED" => {
4134                Some(Self::AtomContactsProviderStatusReported)
4135            }
4136            "ATOM_KEYSTORE_KEY_EVENT_REPORTED" => Some(Self::AtomKeystoreKeyEventReported),
4137            "ATOM_NETWORK_TETHERING_REPORTED" => Some(Self::AtomNetworkTetheringReported),
4138            "ATOM_IME_TOUCH_REPORTED" => Some(Self::AtomImeTouchReported),
4139            "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED" => {
4140                Some(Self::AtomUiInteractionFrameInfoReported)
4141            }
4142            "ATOM_UI_ACTION_LATENCY_REPORTED" => Some(Self::AtomUiActionLatencyReported),
4143            "ATOM_WIFI_DISCONNECT_REPORTED" => Some(Self::AtomWifiDisconnectReported),
4144            "ATOM_WIFI_CONNECTION_STATE_CHANGED" => Some(Self::AtomWifiConnectionStateChanged),
4145            "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED" => Some(Self::AtomHdmiCecActiveSourceChanged),
4146            "ATOM_HDMI_CEC_MESSAGE_REPORTED" => Some(Self::AtomHdmiCecMessageReported),
4147            "ATOM_AIRPLANE_MODE" => Some(Self::AtomAirplaneMode),
4148            "ATOM_MODEM_RESTART" => Some(Self::AtomModemRestart),
4149            "ATOM_CARRIER_ID_MISMATCH_REPORTED" => Some(Self::AtomCarrierIdMismatchReported),
4150            "ATOM_CARRIER_ID_TABLE_UPDATED" => Some(Self::AtomCarrierIdTableUpdated),
4151            "ATOM_DATA_STALL_RECOVERY_REPORTED" => Some(Self::AtomDataStallRecoveryReported),
4152            "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED" => {
4153                Some(Self::AtomMediametricsMediaparserReported)
4154            }
4155            "ATOM_TLS_HANDSHAKE_REPORTED" => Some(Self::AtomTlsHandshakeReported),
4156            "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED" => {
4157                Some(Self::AtomTextClassifierApiUsageReported)
4158            }
4159            "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED" => Some(Self::AtomCarWatchdogKillStatsReported),
4160            "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED" => Some(Self::AtomMediametricsPlaybackReported),
4161            "ATOM_MEDIA_NETWORK_INFO_CHANGED" => Some(Self::AtomMediaNetworkInfoChanged),
4162            "ATOM_MEDIA_PLAYBACK_STATE_CHANGED" => Some(Self::AtomMediaPlaybackStateChanged),
4163            "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED" => Some(Self::AtomMediaPlaybackErrorReported),
4164            "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED" => Some(Self::AtomMediaPlaybackTrackChanged),
4165            "ATOM_WIFI_SCAN_REPORTED" => Some(Self::AtomWifiScanReported),
4166            "ATOM_WIFI_PNO_SCAN_REPORTED" => Some(Self::AtomWifiPnoScanReported),
4167            "ATOM_TIF_TUNE_CHANGED" => Some(Self::AtomTifTuneChanged),
4168            "ATOM_AUTO_ROTATE_REPORTED" => Some(Self::AtomAutoRotateReported),
4169            "ATOM_PERFETTO_TRIGGER" => Some(Self::AtomPerfettoTrigger),
4170            "ATOM_TRANSCODING_DATA" => Some(Self::AtomTranscodingData),
4171            "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED" => Some(Self::AtomImsServiceEntitlementUpdated),
4172            "ATOM_DEVICE_ROTATED" => Some(Self::AtomDeviceRotated),
4173            "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED" => Some(Self::AtomSimSpecificSettingsRestored),
4174            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED" => {
4175                Some(Self::AtomTextClassifierDownloadReported)
4176            }
4177            "ATOM_PIN_STORAGE_EVENT" => Some(Self::AtomPinStorageEvent),
4178            "ATOM_FACE_DOWN_REPORTED" => Some(Self::AtomFaceDownReported),
4179            "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED" => {
4180                Some(Self::AtomBluetoothHalCrashReasonReported)
4181            }
4182            "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED" => {
4183                Some(Self::AtomRebootEscrowPreparationReported)
4184            }
4185            "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED" => {
4186                Some(Self::AtomRebootEscrowLskfCaptureReported)
4187            }
4188            "ATOM_REBOOT_ESCROW_REBOOT_REPORTED" => Some(Self::AtomRebootEscrowRebootReported),
4189            "ATOM_BINDER_LATENCY_REPORTED" => Some(Self::AtomBinderLatencyReported),
4190            "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED" => {
4191                Some(Self::AtomMediametricsAaudiostreamReported)
4192            }
4193            "ATOM_MEDIA_TRANSCODING_SESSION_ENDED" => Some(Self::AtomMediaTranscodingSessionEnded),
4194            "ATOM_MAGNIFICATION_USAGE_REPORTED" => Some(Self::AtomMagnificationUsageReported),
4195            "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED" => {
4196                Some(Self::AtomMagnificationModeWithImeOnReported)
4197            }
4198            "ATOM_APP_SEARCH_CALL_STATS_REPORTED" => Some(Self::AtomAppSearchCallStatsReported),
4199            "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED" => {
4200                Some(Self::AtomAppSearchPutDocumentStatsReported)
4201            }
4202            "ATOM_DEVICE_CONTROL_CHANGED" => Some(Self::AtomDeviceControlChanged),
4203            "ATOM_DEVICE_STATE_CHANGED" => Some(Self::AtomDeviceStateChanged),
4204            "ATOM_INPUTDEVICE_REGISTERED" => Some(Self::AtomInputdeviceRegistered),
4205            "ATOM_SMARTSPACE_CARD_REPORTED" => Some(Self::AtomSmartspaceCardReported),
4206            "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED" => {
4207                Some(Self::AtomAuthPromptAuthenticateInvoked)
4208            }
4209            "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED" => {
4210                Some(Self::AtomAuthManagerCanAuthenticateInvoked)
4211            }
4212            "ATOM_AUTH_ENROLL_ACTION_INVOKED" => Some(Self::AtomAuthEnrollActionInvoked),
4213            "ATOM_AUTH_DEPRECATED_API_USED" => Some(Self::AtomAuthDeprecatedApiUsed),
4214            "ATOM_UNATTENDED_REBOOT_OCCURRED" => Some(Self::AtomUnattendedRebootOccurred),
4215            "ATOM_LONG_REBOOT_BLOCKING_REPORTED" => Some(Self::AtomLongRebootBlockingReported),
4216            "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED" => {
4217                Some(Self::AtomLocationTimeZoneProviderStateChanged)
4218            }
4219            "ATOM_FDTRACK_EVENT_OCCURRED" => Some(Self::AtomFdtrackEventOccurred),
4220            "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED" => Some(Self::AtomTimeoutAutoExtendedReported),
4221            "ATOM_ALARM_BATCH_DELIVERED" => Some(Self::AtomAlarmBatchDelivered),
4222            "ATOM_ALARM_SCHEDULED" => Some(Self::AtomAlarmScheduled),
4223            "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED" => {
4224                Some(Self::AtomCarWatchdogIoOveruseStatsReported)
4225            }
4226            "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED" => {
4227                Some(Self::AtomUserLevelHibernationStateChanged)
4228            }
4229            "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED" => {
4230                Some(Self::AtomAppSearchInitializeStatsReported)
4231            }
4232            "ATOM_APP_SEARCH_QUERY_STATS_REPORTED" => Some(Self::AtomAppSearchQueryStatsReported),
4233            "ATOM_APP_PROCESS_DIED" => Some(Self::AtomAppProcessDied),
4234            "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED" => {
4235                Some(Self::AtomNetworkIpReachabilityMonitorReported)
4236            }
4237            "ATOM_SLOW_INPUT_EVENT_REPORTED" => Some(Self::AtomSlowInputEventReported),
4238            "ATOM_ANR_OCCURRED_PROCESSING_STARTED" => Some(Self::AtomAnrOccurredProcessingStarted),
4239            "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED" => Some(Self::AtomAppSearchRemoveStatsReported),
4240            "ATOM_MEDIA_CODEC_REPORTED" => Some(Self::AtomMediaCodecReported),
4241            "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION" => {
4242                Some(Self::AtomPermissionUsageFragmentInteraction)
4243            }
4244            "ATOM_PERMISSION_DETAILS_INTERACTION" => Some(Self::AtomPermissionDetailsInteraction),
4245            "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION" => {
4246                Some(Self::AtomPrivacySensorToggleInteraction)
4247            }
4248            "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION" => {
4249                Some(Self::AtomPrivacyToggleDialogInteraction)
4250            }
4251            "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED" => {
4252                Some(Self::AtomAppSearchOptimizeStatsReported)
4253            }
4254            "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT" => {
4255                Some(Self::AtomNonA11yToolServiceWarningReport)
4256            }
4257            "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED" => {
4258                Some(Self::AtomAppSearchSetSchemaStatsReported)
4259            }
4260            "ATOM_APP_COMPAT_STATE_CHANGED" => Some(Self::AtomAppCompatStateChanged),
4261            "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED" => {
4262                Some(Self::AtomSizeCompatRestartButtonEventReported)
4263            }
4264            "ATOM_SPLITSCREEN_UI_CHANGED" => Some(Self::AtomSplitscreenUiChanged),
4265            "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED" => Some(Self::AtomNetworkDnsHandshakeReported),
4266            "ATOM_BLUETOOTH_CODE_PATH_COUNTER" => Some(Self::AtomBluetoothCodePathCounter),
4267            "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY" => {
4268                Some(Self::AtomBluetoothLeBatchScanReportDelay)
4269            }
4270            "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED" => {
4271                Some(Self::AtomAccessibilityFloatingMenuUiChanged)
4272            }
4273            "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED" => {
4274                Some(Self::AtomNeuralnetworksCompilationCompleted)
4275            }
4276            "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED" => {
4277                Some(Self::AtomNeuralnetworksExecutionCompleted)
4278            }
4279            "ATOM_NEURALNETWORKS_COMPILATION_FAILED" => {
4280                Some(Self::AtomNeuralnetworksCompilationFailed)
4281            }
4282            "ATOM_NEURALNETWORKS_EXECUTION_FAILED" => Some(Self::AtomNeuralnetworksExecutionFailed),
4283            "ATOM_CONTEXT_HUB_BOOTED" => Some(Self::AtomContextHubBooted),
4284            "ATOM_CONTEXT_HUB_RESTARTED" => Some(Self::AtomContextHubRestarted),
4285            "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED" => {
4286                Some(Self::AtomContextHubLoadedNanoappSnapshotReported)
4287            }
4288            "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED" => Some(Self::AtomChreCodeDownloadTransacted),
4289            "ATOM_UWB_SESSION_INITED" => Some(Self::AtomUwbSessionInited),
4290            "ATOM_UWB_SESSION_CLOSED" => Some(Self::AtomUwbSessionClosed),
4291            "ATOM_UWB_FIRST_RANGING_RECEIVED" => Some(Self::AtomUwbFirstRangingReceived),
4292            "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED" => {
4293                Some(Self::AtomUwbRangingMeasurementReceived)
4294            }
4295            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED" => {
4296                Some(Self::AtomTextClassifierDownloadWorkScheduled)
4297            }
4298            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED" => {
4299                Some(Self::AtomTextClassifierDownloadWorkCompleted)
4300            }
4301            "ATOM_CLIPBOARD_CLEARED" => Some(Self::AtomClipboardCleared),
4302            "ATOM_VM_CREATION_REQUESTED" => Some(Self::AtomVmCreationRequested),
4303            "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED" => Some(Self::AtomNearbyDeviceScanStateChanged),
4304            "ATOM_CAMERA_COMPAT_CONTROL_EVENT_REPORTED" => {
4305                Some(Self::AtomCameraCompatControlEventReported)
4306            }
4307            "ATOM_APPLICATION_LOCALES_CHANGED" => Some(Self::AtomApplicationLocalesChanged),
4308            "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED" => {
4309                Some(Self::AtomMediametricsAudiotrackstatusReported)
4310            }
4311            "ATOM_FOLD_STATE_DURATION_REPORTED" => Some(Self::AtomFoldStateDurationReported),
4312            "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED" => {
4313                Some(Self::AtomLocationTimeZoneProviderControllerStateChanged)
4314            }
4315            "ATOM_DISPLAY_HBM_STATE_CHANGED" => Some(Self::AtomDisplayHbmStateChanged),
4316            "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED" => Some(Self::AtomDisplayHbmBrightnessChanged),
4317            "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED" => {
4318                Some(Self::AtomPersistentUriPermissionsFlushed)
4319            }
4320            "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED" => {
4321                Some(Self::AtomEarlyBootCompOsArtifactsCheckReported)
4322            }
4323            "ATOM_VBMETA_DIGEST_REPORTED" => Some(Self::AtomVbmetaDigestReported),
4324            "ATOM_APEX_INFO_GATHERED" => Some(Self::AtomApexInfoGathered),
4325            "ATOM_PVM_INFO_GATHERED" => Some(Self::AtomPvmInfoGathered),
4326            "ATOM_WEAR_SETTINGS_UI_INTERACTED" => Some(Self::AtomWearSettingsUiInteracted),
4327            "ATOM_TRACING_SERVICE_REPORT_EVENT" => Some(Self::AtomTracingServiceReportEvent),
4328            "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED" => {
4329                Some(Self::AtomMediametricsAudiorecordstatusReported)
4330            }
4331            "ATOM_LAUNCHER_LATENCY" => Some(Self::AtomLauncherLatency),
4332            "ATOM_DROPBOX_ENTRY_DROPPED" => Some(Self::AtomDropboxEntryDropped),
4333            "ATOM_WIFI_P2P_CONNECTION_REPORTED" => Some(Self::AtomWifiP2pConnectionReported),
4334            "ATOM_GAME_STATE_CHANGED" => Some(Self::AtomGameStateChanged),
4335            "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED" => {
4336                Some(Self::AtomHotwordDetectorCreateRequested)
4337            }
4338            "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED" => {
4339                Some(Self::AtomHotwordDetectionServiceInitResultReported)
4340            }
4341            "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED" => {
4342                Some(Self::AtomHotwordDetectionServiceRestarted)
4343            }
4344            "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED" => {
4345                Some(Self::AtomHotwordDetectorKeyphraseTriggered)
4346            }
4347            "ATOM_HOTWORD_DETECTOR_EVENTS" => Some(Self::AtomHotwordDetectorEvents),
4348            "ATOM_AD_SERVICES_API_CALLED" => Some(Self::AtomAdServicesApiCalled),
4349            "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED" => {
4350                Some(Self::AtomAdServicesMesurementReportsUploaded)
4351            }
4352            "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED" => {
4353                Some(Self::AtomBootCompletedBroadcastCompletionLatencyReported)
4354            }
4355            "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED" => {
4356                Some(Self::AtomContactsIndexerUpdateStatsReported)
4357            }
4358            "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO" => {
4359                Some(Self::AtomAppBackgroundRestrictionsInfo)
4360            }
4361            "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED" => {
4362                Some(Self::AtomMmsSmsProviderGetThreadIdFailed)
4363            }
4364            "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED" => {
4365                Some(Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed)
4366            }
4367            "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED" => {
4368                Some(Self::AtomPermissionReminderNotificationInteracted)
4369            }
4370            "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED" => {
4371                Some(Self::AtomRecentPermissionDecisionsInteracted)
4372            }
4373            "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED" => Some(Self::AtomGnssPsdsDownloadReported),
4374            "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED" => {
4375                Some(Self::AtomLeAudioConnectionSessionReported)
4376            }
4377            "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED" => {
4378                Some(Self::AtomLeAudioBroadcastSessionReported)
4379            }
4380            "ATOM_DREAM_UI_EVENT_REPORTED" => Some(Self::AtomDreamUiEventReported),
4381            "ATOM_TASK_MANAGER_EVENT_REPORTED" => Some(Self::AtomTaskManagerEventReported),
4382            "ATOM_CDM_ASSOCIATION_ACTION" => Some(Self::AtomCdmAssociationAction),
4383            "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED" => {
4384                Some(Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported)
4385            }
4386            "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED" => {
4387                Some(Self::AtomMagnificationFollowTypingFocusActivatedSessionReported)
4388            }
4389            "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED" => {
4390                Some(Self::AtomAccessibilityTextReadingOptionsChanged)
4391            }
4392            "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED" => {
4393                Some(Self::AtomWifiSetupFailureCrashReported)
4394            }
4395            "ATOM_UWB_DEVICE_ERROR_REPORTED" => Some(Self::AtomUwbDeviceErrorReported),
4396            "ATOM_ISOLATED_COMPILATION_SCHEDULED" => Some(Self::AtomIsolatedCompilationScheduled),
4397            "ATOM_ISOLATED_COMPILATION_ENDED" => Some(Self::AtomIsolatedCompilationEnded),
4398            "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE" => {
4399                Some(Self::AtomOnsOpportunisticEsimProvisioningComplete)
4400            }
4401            "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED" => {
4402                Some(Self::AtomSystemServerPreWatchdogOccurred)
4403            }
4404            "ATOM_TELEPHONY_ANOMALY_DETECTED" => Some(Self::AtomTelephonyAnomalyDetected),
4405            "ATOM_LETTERBOX_POSITION_CHANGED" => Some(Self::AtomLetterboxPositionChanged),
4406            "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT" => Some(Self::AtomRemoteKeyProvisioningAttempt),
4407            "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO" => {
4408                Some(Self::AtomRemoteKeyProvisioningNetworkInfo)
4409            }
4410            "ATOM_REMOTE_KEY_PROVISIONING_TIMING" => Some(Self::AtomRemoteKeyProvisioningTiming),
4411            "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT" => {
4412                Some(Self::AtomMediaoutputOpInteractionReport)
4413            }
4414            "ATOM_SYNC_EXEMPTION_OCCURRED" => Some(Self::AtomSyncExemptionOccurred),
4415            "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED" => {
4416                Some(Self::AtomAutofillPresentationEventReported)
4417            }
4418            "ATOM_DOCK_STATE_CHANGED" => Some(Self::AtomDockStateChanged),
4419            "ATOM_SAFETY_SOURCE_STATE_COLLECTED" => Some(Self::AtomSafetySourceStateCollected),
4420            "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED" => {
4421                Some(Self::AtomSafetyCenterSystemEventReported)
4422            }
4423            "ATOM_SAFETY_CENTER_INTERACTION_REPORTED" => {
4424                Some(Self::AtomSafetyCenterInteractionReported)
4425            }
4426            "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED" => {
4427                Some(Self::AtomSettingsProviderSettingChanged)
4428            }
4429            "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED" => {
4430                Some(Self::AtomBroadcastDeliveryEventReported)
4431            }
4432            "ATOM_SERVICE_REQUEST_EVENT_REPORTED" => Some(Self::AtomServiceRequestEventReported),
4433            "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED" => {
4434                Some(Self::AtomProviderAcquisitionEventReported)
4435            }
4436            "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED" => Some(Self::AtomBluetoothDeviceNameReported),
4437            "ATOM_CB_CONFIG_UPDATED" => Some(Self::AtomCbConfigUpdated),
4438            "ATOM_CB_MODULE_ERROR_REPORTED" => Some(Self::AtomCbModuleErrorReported),
4439            "ATOM_CB_SERVICE_FEATURE_CHANGED" => Some(Self::AtomCbServiceFeatureChanged),
4440            "ATOM_CB_RECEIVER_FEATURE_CHANGED" => Some(Self::AtomCbReceiverFeatureChanged),
4441            "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED" => Some(Self::AtomJsscriptengineLatencyReported),
4442            "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION" => {
4443                Some(Self::AtomPrivacySignalNotificationInteraction)
4444            }
4445            "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION" => {
4446                Some(Self::AtomPrivacySignalIssueCardInteraction)
4447            }
4448            "ATOM_PRIVACY_SIGNALS_JOB_FAILURE" => Some(Self::AtomPrivacySignalsJobFailure),
4449            "ATOM_VIBRATION_REPORTED" => Some(Self::AtomVibrationReported),
4450            "ATOM_UWB_RANGING_START" => Some(Self::AtomUwbRangingStart),
4451            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED" => {
4452                Some(Self::AtomMobileDataDownloadFileGroupStatusReported)
4453            }
4454            "ATOM_APP_COMPACTED_V2" => Some(Self::AtomAppCompactedV2),
4455            "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED" => {
4456                Some(Self::AtomAdServicesSettingsUsageReported)
4457            }
4458            "ATOM_DISPLAY_BRIGHTNESS_CHANGED" => Some(Self::AtomDisplayBrightnessChanged),
4459            "ATOM_ACTIVITY_ACTION_BLOCKED" => Some(Self::AtomActivityActionBlocked),
4460            "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED" => {
4461                Some(Self::AtomBackgroundFetchProcessReported)
4462            }
4463            "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED" => {
4464                Some(Self::AtomUpdateCustomAudienceProcessReported)
4465            }
4466            "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED" => Some(Self::AtomRunAdBiddingProcessReported),
4467            "ATOM_RUN_AD_SCORING_PROCESS_REPORTED" => Some(Self::AtomRunAdScoringProcessReported),
4468            "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED" => {
4469                Some(Self::AtomRunAdSelectionProcessReported)
4470            }
4471            "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED" => {
4472                Some(Self::AtomRunAdBiddingPerCaProcessReported)
4473            }
4474            "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED" => {
4475                Some(Self::AtomMobileDataDownloadDownloadResultReported)
4476            }
4477            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED" => {
4478                Some(Self::AtomMobileDataDownloadFileGroupStorageStatsReported)
4479            }
4480            "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED" => {
4481                Some(Self::AtomNetworkDnsServerSupportReported)
4482            }
4483            "ATOM_VM_BOOTED" => Some(Self::AtomVmBooted),
4484            "ATOM_VM_EXITED" => Some(Self::AtomVmExited),
4485            "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED" => {
4486                Some(Self::AtomAmbientBrightnessStatsReported)
4487            }
4488            "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED" => {
4489                Some(Self::AtomMediametricsSpatializercapabilitiesReported)
4490            }
4491            "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED" => {
4492                Some(Self::AtomMediametricsSpatializerdeviceenabledReported)
4493            }
4494            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED" => {
4495                Some(Self::AtomMediametricsHeadtrackerdeviceenabledReported)
4496            }
4497            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED" => {
4498                Some(Self::AtomMediametricsHeadtrackerdevicesupportedReported)
4499            }
4500            "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS" => {
4501                Some(Self::AtomAdServicesMeasurementRegistrations)
4502            }
4503            "ATOM_HEARING_AID_INFO_REPORTED" => Some(Self::AtomHearingAidInfoReported),
4504            "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED" => {
4505                Some(Self::AtomDeviceWideJobConstraintChanged)
4506            }
4507            "ATOM_AMBIENT_MODE_CHANGED" => Some(Self::AtomAmbientModeChanged),
4508            "ATOM_ANR_LATENCY_REPORTED" => Some(Self::AtomAnrLatencyReported),
4509            "ATOM_RESOURCE_API_INFO" => Some(Self::AtomResourceApiInfo),
4510            "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED" => Some(Self::AtomSystemDefaultNetworkChanged),
4511            "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED" => {
4512                Some(Self::AtomIwlanSetupDataCallResultReported)
4513            }
4514            "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED" => {
4515                Some(Self::AtomIwlanPdnDisconnectedReasonReported)
4516            }
4517            "ATOM_AIRPLANE_MODE_SESSION_REPORTED" => Some(Self::AtomAirplaneModeSessionReported),
4518            "ATOM_VM_CPU_STATUS_REPORTED" => Some(Self::AtomVmCpuStatusReported),
4519            "ATOM_VM_MEM_STATUS_REPORTED" => Some(Self::AtomVmMemStatusReported),
4520            "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED" => {
4521                Some(Self::AtomPackageInstallationSessionReported)
4522            }
4523            "ATOM_DEFAULT_NETWORK_REMATCH_INFO" => Some(Self::AtomDefaultNetworkRematchInfo),
4524            "ATOM_NETWORK_SELECTION_PERFORMANCE" => Some(Self::AtomNetworkSelectionPerformance),
4525            "ATOM_NETWORK_NSD_REPORTED" => Some(Self::AtomNetworkNsdReported),
4526            "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED" => {
4527                Some(Self::AtomBluetoothDisconnectionReasonReported)
4528            }
4529            "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED" => {
4530                Some(Self::AtomBluetoothLocalVersionsReported)
4531            }
4532            "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED" => {
4533                Some(Self::AtomBluetoothRemoteSupportedFeaturesReported)
4534            }
4535            "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED" => {
4536                Some(Self::AtomBluetoothLocalSupportedFeaturesReported)
4537            }
4538            "ATOM_BLUETOOTH_GATT_APP_INFO" => Some(Self::AtomBluetoothGattAppInfo),
4539            "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED" => {
4540                Some(Self::AtomBrightnessConfigurationUpdated)
4541            }
4542            "ATOM_AD_SERVICES_GET_TOPICS_REPORTED" => Some(Self::AtomAdServicesGetTopicsReported),
4543            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED" => {
4544                Some(Self::AtomAdServicesEpochComputationGetTopTopicsReported)
4545            }
4546            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
4547                Some(Self::AtomAdServicesEpochComputationClassifierReported)
4548            }
4549            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED" => {
4550                Some(Self::AtomWearMediaOutputSwitcherLaunched)
4551            }
4552            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED" => {
4553                Some(Self::AtomWearMediaOutputSwitcherFinished)
4554            }
4555            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED" => {
4556                Some(Self::AtomWearMediaOutputSwitcherConnectionReported)
4557            }
4558            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED" => {
4559                Some(Self::AtomWearMediaOutputSwitcherDeviceScanTriggered)
4560            }
4561            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY" => {
4562                Some(Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency)
4563            }
4564            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY" => {
4565                Some(Self::AtomWearMediaOutputSwitcherConnectDeviceLatency)
4566            }
4567            "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED" => {
4568                Some(Self::AtomPackageManagerSnapshotReported)
4569            }
4570            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED" => {
4571                Some(Self::AtomPackageManagerAppsFilterCacheBuildReported)
4572            }
4573            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED" => {
4574                Some(Self::AtomPackageManagerAppsFilterCacheUpdateReported)
4575            }
4576            "ATOM_LAUNCHER_IMPRESSION_EVENT" => Some(Self::AtomLauncherImpressionEvent),
4577            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY" => {
4578                Some(Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency)
4579            }
4580            "ATOM_WS_WATCH_FACE_EDITED" => Some(Self::AtomWsWatchFaceEdited),
4581            "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED" => {
4582                Some(Self::AtomWsWatchFaceFavoriteActionReported)
4583            }
4584            "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED" => {
4585                Some(Self::AtomWsWatchFaceSetActionReported)
4586            }
4587            "ATOM_PACKAGE_UNINSTALLATION_REPORTED" => Some(Self::AtomPackageUninstallationReported),
4588            "ATOM_GAME_MODE_CHANGED" => Some(Self::AtomGameModeChanged),
4589            "ATOM_GAME_MODE_CONFIGURATION_CHANGED" => Some(Self::AtomGameModeConfigurationChanged),
4590            "ATOM_BEDTIME_MODE_STATE_CHANGED" => Some(Self::AtomBedtimeModeStateChanged),
4591            "ATOM_NETWORK_SLICE_SESSION_ENDED" => Some(Self::AtomNetworkSliceSessionEnded),
4592            "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED" => {
4593                Some(Self::AtomNetworkSliceDailyDataUsageReported)
4594            }
4595            "ATOM_NFC_TAG_TYPE_OCCURRED" => Some(Self::AtomNfcTagTypeOccurred),
4596            "ATOM_NFC_AID_CONFLICT_OCCURRED" => Some(Self::AtomNfcAidConflictOccurred),
4597            "ATOM_NFC_READER_CONFLICT_OCCURRED" => Some(Self::AtomNfcReaderConflictOccurred),
4598            "ATOM_WS_TILE_LIST_CHANGED" => Some(Self::AtomWsTileListChanged),
4599            "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION" => {
4600                Some(Self::AtomGetTypeAccessedWithoutPermission)
4601            }
4602            "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED" => Some(Self::AtomMobileBundledAppInfoGathered),
4603            "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED" => {
4604                Some(Self::AtomWsWatchFaceComplicationSetChanged)
4605            }
4606            "ATOM_MEDIA_DRM_CREATED" => Some(Self::AtomMediaDrmCreated),
4607            "ATOM_MEDIA_DRM_ERRORED" => Some(Self::AtomMediaDrmErrored),
4608            "ATOM_MEDIA_DRM_SESSION_OPENED" => Some(Self::AtomMediaDrmSessionOpened),
4609            "ATOM_MEDIA_DRM_SESSION_CLOSED" => Some(Self::AtomMediaDrmSessionClosed),
4610            "ATOM_USER_SELECTED_RESOLUTION" => Some(Self::AtomUserSelectedResolution),
4611            "ATOM_UNSAFE_INTENT_EVENT_REPORTED" => Some(Self::AtomUnsafeIntentEventReported),
4612            "ATOM_PERFORMANCE_HINT_SESSION_REPORTED" => {
4613                Some(Self::AtomPerformanceHintSessionReported)
4614            }
4615            "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED" => {
4616                Some(Self::AtomMediametricsMidiDeviceCloseReported)
4617            }
4618            "ATOM_BIOMETRIC_TOUCH_REPORTED" => Some(Self::AtomBiometricTouchReported),
4619            "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED" => {
4620                Some(Self::AtomHotwordAudioEgressEventReported)
4621            }
4622            "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED" => {
4623                Some(Self::AtomAppSearchSchemaMigrationStatsReported)
4624            }
4625            "ATOM_LOCATION_ENABLED_STATE_CHANGED" => Some(Self::AtomLocationEnabledStateChanged),
4626            "ATOM_IME_REQUEST_FINISHED" => Some(Self::AtomImeRequestFinished),
4627            "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED" => {
4628                Some(Self::AtomUsbComplianceWarningsReported)
4629            }
4630            "ATOM_APP_SUPPORTED_LOCALES_CHANGED" => Some(Self::AtomAppSupportedLocalesChanged),
4631            "ATOM_GRAMMATICAL_INFLECTION_CHANGED" => Some(Self::AtomGrammaticalInflectionChanged),
4632            "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED" => {
4633                Some(Self::AtomMediaProviderVolumeRecoveryReported)
4634            }
4635            "ATOM_BIOMETRIC_PROPERTIES_COLLECTED" => Some(Self::AtomBiometricPropertiesCollected),
4636            "ATOM_KERNEL_WAKEUP_ATTRIBUTED" => Some(Self::AtomKernelWakeupAttributed),
4637            "ATOM_SCREEN_STATE_CHANGED_V2" => Some(Self::AtomScreenStateChangedV2),
4638            "ATOM_WS_BACKUP_ACTION_REPORTED" => Some(Self::AtomWsBackupActionReported),
4639            "ATOM_WS_RESTORE_ACTION_REPORTED" => Some(Self::AtomWsRestoreActionReported),
4640            "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED" => Some(Self::AtomDeviceLogAccessEventReported),
4641            "ATOM_MEDIA_SESSION_UPDATED" => Some(Self::AtomMediaSessionUpdated),
4642            "ATOM_WEAR_OOBE_STATE_CHANGED" => Some(Self::AtomWearOobeStateChanged),
4643            "ATOM_WS_NOTIFICATION_UPDATED" => Some(Self::AtomWsNotificationUpdated),
4644            "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED" => {
4645                Some(Self::AtomNetworkValidationFailureStatsDailyReported)
4646            }
4647            "ATOM_WS_COMPLICATION_TAPPED" => Some(Self::AtomWsComplicationTapped),
4648            "ATOM_WS_WEAR_TIME_SESSION" => Some(Self::AtomWsWearTimeSession),
4649            "ATOM_WIFI_BYTES_TRANSFER" => Some(Self::AtomWifiBytesTransfer),
4650            "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG" => Some(Self::AtomWifiBytesTransferByFgBg),
4651            "ATOM_MOBILE_BYTES_TRANSFER" => Some(Self::AtomMobileBytesTransfer),
4652            "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG" => Some(Self::AtomMobileBytesTransferByFgBg),
4653            "ATOM_BLUETOOTH_BYTES_TRANSFER" => Some(Self::AtomBluetoothBytesTransfer),
4654            "ATOM_KERNEL_WAKELOCK" => Some(Self::AtomKernelWakelock),
4655            "ATOM_SUBSYSTEM_SLEEP_STATE" => Some(Self::AtomSubsystemSleepState),
4656            "ATOM_CPU_TIME_PER_UID" => Some(Self::AtomCpuTimePerUid),
4657            "ATOM_CPU_TIME_PER_UID_FREQ" => Some(Self::AtomCpuTimePerUidFreq),
4658            "ATOM_WIFI_ACTIVITY_INFO" => Some(Self::AtomWifiActivityInfo),
4659            "ATOM_MODEM_ACTIVITY_INFO" => Some(Self::AtomModemActivityInfo),
4660            "ATOM_BLUETOOTH_ACTIVITY_INFO" => Some(Self::AtomBluetoothActivityInfo),
4661            "ATOM_PROCESS_MEMORY_STATE" => Some(Self::AtomProcessMemoryState),
4662            "ATOM_SYSTEM_ELAPSED_REALTIME" => Some(Self::AtomSystemElapsedRealtime),
4663            "ATOM_SYSTEM_UPTIME" => Some(Self::AtomSystemUptime),
4664            "ATOM_CPU_ACTIVE_TIME" => Some(Self::AtomCpuActiveTime),
4665            "ATOM_CPU_CLUSTER_TIME" => Some(Self::AtomCpuClusterTime),
4666            "ATOM_DISK_SPACE" => Some(Self::AtomDiskSpace),
4667            "ATOM_REMAINING_BATTERY_CAPACITY" => Some(Self::AtomRemainingBatteryCapacity),
4668            "ATOM_FULL_BATTERY_CAPACITY" => Some(Self::AtomFullBatteryCapacity),
4669            "ATOM_TEMPERATURE" => Some(Self::AtomTemperature),
4670            "ATOM_BINDER_CALLS" => Some(Self::AtomBinderCalls),
4671            "ATOM_BINDER_CALLS_EXCEPTIONS" => Some(Self::AtomBinderCallsExceptions),
4672            "ATOM_LOOPER_STATS" => Some(Self::AtomLooperStats),
4673            "ATOM_DISK_STATS" => Some(Self::AtomDiskStats),
4674            "ATOM_DIRECTORY_USAGE" => Some(Self::AtomDirectoryUsage),
4675            "ATOM_APP_SIZE" => Some(Self::AtomAppSize),
4676            "ATOM_CATEGORY_SIZE" => Some(Self::AtomCategorySize),
4677            "ATOM_PROC_STATS" => Some(Self::AtomProcStats),
4678            "ATOM_BATTERY_VOLTAGE" => Some(Self::AtomBatteryVoltage),
4679            "ATOM_NUM_FINGERPRINTS_ENROLLED" => Some(Self::AtomNumFingerprintsEnrolled),
4680            "ATOM_DISK_IO" => Some(Self::AtomDiskIo),
4681            "ATOM_POWER_PROFILE" => Some(Self::AtomPowerProfile),
4682            "ATOM_PROC_STATS_PKG_PROC" => Some(Self::AtomProcStatsPkgProc),
4683            "ATOM_PROCESS_CPU_TIME" => Some(Self::AtomProcessCpuTime),
4684            "ATOM_CPU_TIME_PER_THREAD_FREQ" => Some(Self::AtomCpuTimePerThreadFreq),
4685            "ATOM_ON_DEVICE_POWER_MEASUREMENT" => Some(Self::AtomOnDevicePowerMeasurement),
4686            "ATOM_DEVICE_CALCULATED_POWER_USE" => Some(Self::AtomDeviceCalculatedPowerUse),
4687            "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK" => Some(Self::AtomProcessMemoryHighWaterMark),
4688            "ATOM_BATTERY_LEVEL" => Some(Self::AtomBatteryLevel),
4689            "ATOM_BUILD_INFORMATION" => Some(Self::AtomBuildInformation),
4690            "ATOM_BATTERY_CYCLE_COUNT" => Some(Self::AtomBatteryCycleCount),
4691            "ATOM_DEBUG_ELAPSED_CLOCK" => Some(Self::AtomDebugElapsedClock),
4692            "ATOM_DEBUG_FAILING_ELAPSED_CLOCK" => Some(Self::AtomDebugFailingElapsedClock),
4693            "ATOM_NUM_FACES_ENROLLED" => Some(Self::AtomNumFacesEnrolled),
4694            "ATOM_ROLE_HOLDER" => Some(Self::AtomRoleHolder),
4695            "ATOM_DANGEROUS_PERMISSION_STATE" => Some(Self::AtomDangerousPermissionState),
4696            "ATOM_TRAIN_INFO" => Some(Self::AtomTrainInfo),
4697            "ATOM_TIME_ZONE_DATA_INFO" => Some(Self::AtomTimeZoneDataInfo),
4698            "ATOM_EXTERNAL_STORAGE_INFO" => Some(Self::AtomExternalStorageInfo),
4699            "ATOM_GPU_STATS_GLOBAL_INFO" => Some(Self::AtomGpuStatsGlobalInfo),
4700            "ATOM_GPU_STATS_APP_INFO" => Some(Self::AtomGpuStatsAppInfo),
4701            "ATOM_SYSTEM_ION_HEAP_SIZE" => Some(Self::AtomSystemIonHeapSize),
4702            "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO" => Some(Self::AtomAppsOnExternalStorageInfo),
4703            "ATOM_FACE_SETTINGS" => Some(Self::AtomFaceSettings),
4704            "ATOM_COOLING_DEVICE" => Some(Self::AtomCoolingDevice),
4705            "ATOM_APP_OPS" => Some(Self::AtomAppOps),
4706            "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE" => Some(Self::AtomProcessSystemIonHeapSize),
4707            "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO" => {
4708                Some(Self::AtomSurfaceflingerStatsGlobalInfo)
4709            }
4710            "ATOM_SURFACEFLINGER_STATS_LAYER_INFO" => Some(Self::AtomSurfaceflingerStatsLayerInfo),
4711            "ATOM_PROCESS_MEMORY_SNAPSHOT" => Some(Self::AtomProcessMemorySnapshot),
4712            "ATOM_VMS_CLIENT_STATS" => Some(Self::AtomVmsClientStats),
4713            "ATOM_NOTIFICATION_REMOTE_VIEWS" => Some(Self::AtomNotificationRemoteViews),
4714            "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED" => {
4715                Some(Self::AtomDangerousPermissionStateSampled)
4716            }
4717            "ATOM_GRAPHICS_STATS" => Some(Self::AtomGraphicsStats),
4718            "ATOM_RUNTIME_APP_OP_ACCESS" => Some(Self::AtomRuntimeAppOpAccess),
4719            "ATOM_ION_HEAP_SIZE" => Some(Self::AtomIonHeapSize),
4720            "ATOM_PACKAGE_NOTIFICATION_PREFERENCES" => {
4721                Some(Self::AtomPackageNotificationPreferences)
4722            }
4723            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES" => {
4724                Some(Self::AtomPackageNotificationChannelPreferences)
4725            }
4726            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES" => {
4727                Some(Self::AtomPackageNotificationChannelGroupPreferences)
4728            }
4729            "ATOM_GNSS_STATS" => Some(Self::AtomGnssStats),
4730            "ATOM_ATTRIBUTED_APP_OPS" => Some(Self::AtomAttributedAppOps),
4731            "ATOM_VOICE_CALL_SESSION" => Some(Self::AtomVoiceCallSession),
4732            "ATOM_VOICE_CALL_RAT_USAGE" => Some(Self::AtomVoiceCallRatUsage),
4733            "ATOM_SIM_SLOT_STATE" => Some(Self::AtomSimSlotState),
4734            "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY" => Some(Self::AtomSupportedRadioAccessFamily),
4735            "ATOM_SETTING_SNAPSHOT" => Some(Self::AtomSettingSnapshot),
4736            "ATOM_BLOB_INFO" => Some(Self::AtomBlobInfo),
4737            "ATOM_DATA_USAGE_BYTES_TRANSFER" => Some(Self::AtomDataUsageBytesTransfer),
4738            "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED" => {
4739                Some(Self::AtomBytesTransferByTagAndMetered)
4740            }
4741            "ATOM_DND_MODE_RULE" => Some(Self::AtomDndModeRule),
4742            "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS" => {
4743                Some(Self::AtomGeneralExternalStorageAccessStats)
4744            }
4745            "ATOM_INCOMING_SMS" => Some(Self::AtomIncomingSms),
4746            "ATOM_OUTGOING_SMS" => Some(Self::AtomOutgoingSms),
4747            "ATOM_CARRIER_ID_TABLE_VERSION" => Some(Self::AtomCarrierIdTableVersion),
4748            "ATOM_DATA_CALL_SESSION" => Some(Self::AtomDataCallSession),
4749            "ATOM_CELLULAR_SERVICE_STATE" => Some(Self::AtomCellularServiceState),
4750            "ATOM_CELLULAR_DATA_SERVICE_SWITCH" => Some(Self::AtomCellularDataServiceSwitch),
4751            "ATOM_SYSTEM_MEMORY" => Some(Self::AtomSystemMemory),
4752            "ATOM_IMS_REGISTRATION_TERMINATION" => Some(Self::AtomImsRegistrationTermination),
4753            "ATOM_IMS_REGISTRATION_STATS" => Some(Self::AtomImsRegistrationStats),
4754            "ATOM_CPU_TIME_PER_CLUSTER_FREQ" => Some(Self::AtomCpuTimePerClusterFreq),
4755            "ATOM_CPU_CYCLES_PER_UID_CLUSTER" => Some(Self::AtomCpuCyclesPerUidCluster),
4756            "ATOM_DEVICE_ROTATED_DATA" => Some(Self::AtomDeviceRotatedData),
4757            "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER" => {
4758                Some(Self::AtomCpuCyclesPerThreadGroupCluster)
4759            }
4760            "ATOM_MEDIA_DRM_ACTIVITY_INFO" => Some(Self::AtomMediaDrmActivityInfo),
4761            "ATOM_OEM_MANAGED_BYTES_TRANSFER" => Some(Self::AtomOemManagedBytesTransfer),
4762            "ATOM_GNSS_POWER_STATS" => Some(Self::AtomGnssPowerStats),
4763            "ATOM_TIME_ZONE_DETECTOR_STATE" => Some(Self::AtomTimeZoneDetectorState),
4764            "ATOM_KEYSTORE2_STORAGE_STATS" => Some(Self::AtomKeystore2StorageStats),
4765            "ATOM_RKP_POOL_STATS" => Some(Self::AtomRkpPoolStats),
4766            "ATOM_PROCESS_DMABUF_MEMORY" => Some(Self::AtomProcessDmabufMemory),
4767            "ATOM_PENDING_ALARM_INFO" => Some(Self::AtomPendingAlarmInfo),
4768            "ATOM_USER_LEVEL_HIBERNATED_APPS" => Some(Self::AtomUserLevelHibernatedApps),
4769            "ATOM_LAUNCHER_LAYOUT_SNAPSHOT" => Some(Self::AtomLauncherLayoutSnapshot),
4770            "ATOM_GLOBAL_HIBERNATED_APPS" => Some(Self::AtomGlobalHibernatedApps),
4771            "ATOM_INPUT_EVENT_LATENCY_SKETCH" => Some(Self::AtomInputEventLatencySketch),
4772            "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET" => Some(Self::AtomBatteryUsageStatsBeforeReset),
4773            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET" => Some(Self::AtomBatteryUsageStatsSinceReset),
4774            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL" => {
4775                Some(Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel)
4776            }
4777            "ATOM_INSTALLED_INCREMENTAL_PACKAGE" => Some(Self::AtomInstalledIncrementalPackage),
4778            "ATOM_TELEPHONY_NETWORK_REQUESTS" => Some(Self::AtomTelephonyNetworkRequests),
4779            "ATOM_APP_SEARCH_STORAGE_INFO" => Some(Self::AtomAppSearchStorageInfo),
4780            "ATOM_VMSTAT" => Some(Self::AtomVmstat),
4781            "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO" => {
4782                Some(Self::AtomKeystore2KeyCreationWithGeneralInfo)
4783            }
4784            "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO" => {
4785                Some(Self::AtomKeystore2KeyCreationWithAuthInfo)
4786            }
4787            "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO" => {
4788                Some(Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo)
4789            }
4790            "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW" => Some(Self::AtomKeystore2AtomWithOverflow),
4791            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO" => {
4792                Some(Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo)
4793            }
4794            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO" => {
4795                Some(Self::AtomKeystore2KeyOperationWithGeneralInfo)
4796            }
4797            "ATOM_RKP_ERROR_STATS" => Some(Self::AtomRkpErrorStats),
4798            "ATOM_KEYSTORE2_CRASH_STATS" => Some(Self::AtomKeystore2CrashStats),
4799            "ATOM_VENDOR_APEX_INFO" => Some(Self::AtomVendorApexInfo),
4800            "ATOM_ACCESSIBILITY_SHORTCUT_STATS" => Some(Self::AtomAccessibilityShortcutStats),
4801            "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS" => {
4802                Some(Self::AtomAccessibilityFloatingMenuStats)
4803            }
4804            "ATOM_DATA_USAGE_BYTES_TRANSFER_V2" => Some(Self::AtomDataUsageBytesTransferV2),
4805            "ATOM_MEDIA_CAPABILITIES" => Some(Self::AtomMediaCapabilities),
4806            "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY" => {
4807                Some(Self::AtomCarWatchdogSystemIoUsageSummary)
4808            }
4809            "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY" => {
4810                Some(Self::AtomCarWatchdogUidIoUsageSummary)
4811            }
4812            "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS" => {
4813                Some(Self::AtomImsRegistrationFeatureTagStats)
4814            }
4815            "ATOM_RCS_CLIENT_PROVISIONING_STATS" => Some(Self::AtomRcsClientProvisioningStats),
4816            "ATOM_RCS_ACS_PROVISIONING_STATS" => Some(Self::AtomRcsAcsProvisioningStats),
4817            "ATOM_SIP_DELEGATE_STATS" => Some(Self::AtomSipDelegateStats),
4818            "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS" => Some(Self::AtomSipTransportFeatureTagStats),
4819            "ATOM_SIP_MESSAGE_RESPONSE" => Some(Self::AtomSipMessageResponse),
4820            "ATOM_SIP_TRANSPORT_SESSION" => Some(Self::AtomSipTransportSession),
4821            "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT" => {
4822                Some(Self::AtomImsDedicatedBearerListenerEvent)
4823            }
4824            "ATOM_IMS_DEDICATED_BEARER_EVENT" => Some(Self::AtomImsDedicatedBearerEvent),
4825            "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS" => {
4826                Some(Self::AtomImsRegistrationServiceDescStats)
4827            }
4828            "ATOM_UCE_EVENT_STATS" => Some(Self::AtomUceEventStats),
4829            "ATOM_PRESENCE_NOTIFY_EVENT" => Some(Self::AtomPresenceNotifyEvent),
4830            "ATOM_GBA_EVENT" => Some(Self::AtomGbaEvent),
4831            "ATOM_PER_SIM_STATUS" => Some(Self::AtomPerSimStatus),
4832            "ATOM_GPU_WORK_PER_UID" => Some(Self::AtomGpuWorkPerUid),
4833            "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE" => {
4834                Some(Self::AtomPersistentUriPermissionsAmountPerPackage)
4835            }
4836            "ATOM_SIGNED_PARTITION_INFO" => Some(Self::AtomSignedPartitionInfo),
4837            "ATOM_PINNED_FILE_SIZES_PER_PACKAGE" => Some(Self::AtomPinnedFileSizesPerPackage),
4838            "ATOM_PENDING_INTENTS_PER_PACKAGE" => Some(Self::AtomPendingIntentsPerPackage),
4839            "ATOM_USER_INFO" => Some(Self::AtomUserInfo),
4840            "ATOM_TELEPHONY_NETWORK_REQUESTS_V2" => Some(Self::AtomTelephonyNetworkRequestsV2),
4841            "ATOM_DEVICE_TELEPHONY_PROPERTIES" => Some(Self::AtomDeviceTelephonyProperties),
4842            "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS" => {
4843                Some(Self::AtomRemoteKeyProvisioningErrorCounts)
4844            }
4845            "ATOM_SAFETY_STATE" => Some(Self::AtomSafetyState),
4846            "ATOM_INCOMING_MMS" => Some(Self::AtomIncomingMms),
4847            "ATOM_OUTGOING_MMS" => Some(Self::AtomOutgoingMms),
4848            "ATOM_MULTI_USER_INFO" => Some(Self::AtomMultiUserInfo),
4849            "ATOM_NETWORK_BPF_MAP_INFO" => Some(Self::AtomNetworkBpfMapInfo),
4850            "ATOM_OUTGOING_SHORT_CODE_SMS" => Some(Self::AtomOutgoingShortCodeSms),
4851            "ATOM_CONNECTIVITY_STATE_SAMPLE" => Some(Self::AtomConnectivityStateSample),
4852            "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO" => {
4853                Some(Self::AtomNetworkSelectionRematchReasonsInfo)
4854            }
4855            "ATOM_GAME_MODE_INFO" => Some(Self::AtomGameModeInfo),
4856            "ATOM_GAME_MODE_CONFIGURATION" => Some(Self::AtomGameModeConfiguration),
4857            "ATOM_GAME_MODE_LISTENER" => Some(Self::AtomGameModeListener),
4858            "ATOM_NETWORK_SLICE_REQUEST_COUNT" => Some(Self::AtomNetworkSliceRequestCount),
4859            "ATOM_WS_TILE_SNAPSHOT" => Some(Self::AtomWsTileSnapshot),
4860            "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT" => {
4861                Some(Self::AtomWsActiveWatchFaceComplicationSetSnapshot)
4862            }
4863            "ATOM_PROCESS_STATE" => Some(Self::AtomProcessState),
4864            "ATOM_PROCESS_ASSOCIATION" => Some(Self::AtomProcessAssociation),
4865            "ATOM_ADPF_SYSTEM_COMPONENT_INFO" => Some(Self::AtomAdpfSystemComponentInfo),
4866            "ATOM_NOTIFICATION_MEMORY_USE" => Some(Self::AtomNotificationMemoryUse),
4867            "ATOM_HDR_CAPABILITIES" => Some(Self::AtomHdrCapabilities),
4868            "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT" => {
4869                Some(Self::AtomWsFavouriteWatchFaceListSnapshot)
4870            }
4871            "ATOM_WIFI_AWARE_NDP_REPORTED" => Some(Self::AtomWifiAwareNdpReported),
4872            "ATOM_WIFI_AWARE_ATTACH_REPORTED" => Some(Self::AtomWifiAwareAttachReported),
4873            "ATOM_WIFI_SELF_RECOVERY_TRIGGERED" => Some(Self::AtomWifiSelfRecoveryTriggered),
4874            "ATOM_SOFT_AP_STARTED" => Some(Self::AtomSoftApStarted),
4875            "ATOM_SOFT_AP_STOPPED" => Some(Self::AtomSoftApStopped),
4876            "ATOM_WIFI_LOCK_RELEASED" => Some(Self::AtomWifiLockReleased),
4877            "ATOM_WIFI_LOCK_DEACTIVATED" => Some(Self::AtomWifiLockDeactivated),
4878            "ATOM_WIFI_CONFIG_SAVED" => Some(Self::AtomWifiConfigSaved),
4879            "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED" => {
4880                Some(Self::AtomWifiAwareResourceUsingChanged)
4881            }
4882            "ATOM_WIFI_AWARE_HAL_API_CALLED" => Some(Self::AtomWifiAwareHalApiCalled),
4883            "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED" => Some(Self::AtomWifiLocalOnlyRequestReceived),
4884            "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED" => {
4885                Some(Self::AtomWifiLocalOnlyRequestScanTriggered)
4886            }
4887            "ATOM_WIFI_THREAD_TASK_EXECUTED" => Some(Self::AtomWifiThreadTaskExecuted),
4888            "ATOM_WIFI_STATE_CHANGED" => Some(Self::AtomWifiStateChanged),
4889            "ATOM_WIFI_AWARE_CAPABILITIES" => Some(Self::AtomWifiAwareCapabilities),
4890            "ATOM_WIFI_MODULE_INFO" => Some(Self::AtomWifiModuleInfo),
4891            "ATOM_SETTINGS_SPA_REPORTED" => Some(Self::AtomSettingsSpaReported),
4892            "ATOM_EXPRESS_EVENT_REPORTED" => Some(Self::AtomExpressEventReported),
4893            "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED" => {
4894                Some(Self::AtomExpressHistogramSampleReported)
4895            }
4896            "ATOM_EXPRESS_UID_EVENT_REPORTED" => Some(Self::AtomExpressUidEventReported),
4897            "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED" => {
4898                Some(Self::AtomExpressUidHistogramSampleReported)
4899            }
4900            "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED" => {
4901                Some(Self::AtomPermissionRationaleDialogViewed)
4902            }
4903            "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED" => {
4904                Some(Self::AtomPermissionRationaleDialogActionReported)
4905            }
4906            "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION" => {
4907                Some(Self::AtomAppDataSharingUpdatesNotificationInteraction)
4908            }
4909            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED" => {
4910                Some(Self::AtomAppDataSharingUpdatesFragmentViewed)
4911            }
4912            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED" => {
4913                Some(Self::AtomAppDataSharingUpdatesFragmentActionReported)
4914            }
4915            "ATOM_WS_INCOMING_CALL_ACTION_REPORTED" => Some(Self::AtomWsIncomingCallActionReported),
4916            "ATOM_WS_CALL_DISCONNECTION_REPORTED" => Some(Self::AtomWsCallDisconnectionReported),
4917            "ATOM_WS_CALL_DURATION_REPORTED" => Some(Self::AtomWsCallDurationReported),
4918            "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED" => {
4919                Some(Self::AtomWsCallUserExperienceLatencyReported)
4920            }
4921            "ATOM_WS_CALL_INTERACTION_REPORTED" => Some(Self::AtomWsCallInteractionReported),
4922            "ATOM_FULL_SCREEN_INTENT_LAUNCHED" => Some(Self::AtomFullScreenIntentLaunched),
4923            "ATOM_BAL_ALLOWED" => Some(Self::AtomBalAllowed),
4924            "ATOM_IN_TASK_ACTIVITY_STARTED" => Some(Self::AtomInTaskActivityStarted),
4925            "ATOM_CACHED_APPS_HIGH_WATERMARK" => Some(Self::AtomCachedAppsHighWatermark),
4926            "ATOM_ODREFRESH_REPORTED" => Some(Self::AtomOdrefreshReported),
4927            "ATOM_ODSIGN_REPORTED" => Some(Self::AtomOdsignReported),
4928            "ATOM_ART_DATUM_REPORTED" => Some(Self::AtomArtDatumReported),
4929            "ATOM_ART_DEVICE_DATUM_REPORTED" => Some(Self::AtomArtDeviceDatumReported),
4930            "ATOM_ART_DATUM_DELTA_REPORTED" => Some(Self::AtomArtDatumDeltaReported),
4931            "ATOM_BACKGROUND_DEXOPT_JOB_ENDED" => Some(Self::AtomBackgroundDexoptJobEnded),
4932            "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED" => {
4933                Some(Self::AtomWearAdaptiveSuspendStatsReported)
4934            }
4935            "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED" => {
4936                Some(Self::AtomWearPowerAnomalyServiceOperationalStatsReported)
4937            }
4938            "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED" => {
4939                Some(Self::AtomWearPowerAnomalyServiceEventStatsReported)
4940            }
4941            "ATOM_EMERGENCY_STATE_CHANGED" => Some(Self::AtomEmergencyStateChanged),
4942            "ATOM_DND_STATE_CHANGED" => Some(Self::AtomDndStateChanged),
4943            "ATOM_MTE_STATE" => Some(Self::AtomMteState),
4944            "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED" => {
4945                Some(Self::AtomAdServicesBackCompatGetTopicsReported)
4946            }
4947            "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
4948                Some(Self::AtomAdServicesBackCompatEpochComputationClassifierReported)
4949            }
4950            "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS" => {
4951                Some(Self::AtomAdServicesMeasurementDebugKeys)
4952            }
4953            "ATOM_AD_SERVICES_ERROR_REPORTED" => Some(Self::AtomAdServicesErrorReported),
4954            "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED" => {
4955                Some(Self::AtomAdServicesBackgroundJobsExecutionReported)
4956            }
4957            "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION" => {
4958                Some(Self::AtomAdServicesMeasurementDelayedSourceRegistration)
4959            }
4960            "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION" => {
4961                Some(Self::AtomAdServicesMeasurementAttribution)
4962            }
4963            "ATOM_AD_SERVICES_MEASUREMENT_JOBS" => Some(Self::AtomAdServicesMeasurementJobs),
4964            "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT" => Some(Self::AtomAdServicesMeasurementWipeout),
4965            "ATOM_AD_SERVICES_CONSENT_MIGRATED" => Some(Self::AtomAdServicesConsentMigrated),
4966            "ATOM_RKPD_POOL_STATS" => Some(Self::AtomRkpdPoolStats),
4967            "ATOM_RKPD_CLIENT_OPERATION" => Some(Self::AtomRkpdClientOperation),
4968            "ATOM_AUTOFILL_UI_EVENT_REPORTED" => Some(Self::AtomAutofillUiEventReported),
4969            "ATOM_AUTOFILL_FILL_REQUEST_REPORTED" => Some(Self::AtomAutofillFillRequestReported),
4970            "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED" => Some(Self::AtomAutofillFillResponseReported),
4971            "ATOM_AUTOFILL_SAVE_EVENT_REPORTED" => Some(Self::AtomAutofillSaveEventReported),
4972            "ATOM_AUTOFILL_SESSION_COMMITTED" => Some(Self::AtomAutofillSessionCommitted),
4973            "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED" => {
4974                Some(Self::AtomAutofillFieldClassificationEventReported)
4975            }
4976            "ATOM_TEST_EXTENSION_ATOM_REPORTED" => Some(Self::AtomTestExtensionAtomReported),
4977            "ATOM_TEST_RESTRICTED_ATOM_REPORTED" => Some(Self::AtomTestRestrictedAtomReported),
4978            "ATOM_STATS_SOCKET_LOSS_REPORTED" => Some(Self::AtomStatsSocketLossReported),
4979            "ATOM_PLUGIN_INITIALIZED" => Some(Self::AtomPluginInitialized),
4980            "ATOM_TV_LOW_POWER_STANDBY_POLICY" => Some(Self::AtomTvLowPowerStandbyPolicy),
4981            "ATOM_LOCKSCREEN_SHORTCUT_SELECTED" => Some(Self::AtomLockscreenShortcutSelected),
4982            "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED" => Some(Self::AtomLockscreenShortcutTriggered),
4983            "ATOM_EMERGENCY_NUMBERS_INFO" => Some(Self::AtomEmergencyNumbersInfo),
4984            "ATOM_QUALIFIED_RAT_LIST_CHANGED" => Some(Self::AtomQualifiedRatListChanged),
4985            "ATOM_QNS_IMS_CALL_DROP_STATS" => Some(Self::AtomQnsImsCallDropStats),
4986            "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED" => {
4987                Some(Self::AtomQnsFallbackRestrictionChanged)
4988            }
4989            "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO" => Some(Self::AtomQnsRatPreferenceMismatchInfo),
4990            "ATOM_QNS_HANDOVER_TIME_MILLIS" => Some(Self::AtomQnsHandoverTimeMillis),
4991            "ATOM_QNS_HANDOVER_PINGPONG" => Some(Self::AtomQnsHandoverPingpong),
4992            "ATOM_SATELLITE_CONTROLLER" => Some(Self::AtomSatelliteController),
4993            "ATOM_SATELLITE_SESSION" => Some(Self::AtomSatelliteSession),
4994            "ATOM_SATELLITE_INCOMING_DATAGRAM" => Some(Self::AtomSatelliteIncomingDatagram),
4995            "ATOM_SATELLITE_OUTGOING_DATAGRAM" => Some(Self::AtomSatelliteOutgoingDatagram),
4996            "ATOM_SATELLITE_PROVISION" => Some(Self::AtomSatelliteProvision),
4997            "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER" => {
4998                Some(Self::AtomSatelliteSosMessageRecommender)
4999            }
5000            "ATOM_IKE_SESSION_TERMINATED" => Some(Self::AtomIkeSessionTerminated),
5001            "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED" => {
5002                Some(Self::AtomIkeLivenessCheckSessionValidated)
5003            }
5004            "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED" => {
5005                Some(Self::AtomBluetoothHashedDeviceNameReported)
5006            }
5007            "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION" => {
5008                Some(Self::AtomBluetoothL2capCocClientConnection)
5009            }
5010            "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION" => {
5011                Some(Self::AtomBluetoothL2capCocServerConnection)
5012            }
5013            "ATOM_BLUETOOTH_LE_SESSION_CONNECTED" => Some(Self::AtomBluetoothLeSessionConnected),
5014            "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED" => {
5015                Some(Self::AtomRestrictedBluetoothDeviceNameReported)
5016            }
5017            "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED" => {
5018                Some(Self::AtomBluetoothProfileConnectionAttempted)
5019            }
5020            "ATOM_HEALTH_CONNECT_UI_IMPRESSION" => Some(Self::AtomHealthConnectUiImpression),
5021            "ATOM_HEALTH_CONNECT_UI_INTERACTION" => Some(Self::AtomHealthConnectUiInteraction),
5022            "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED" => {
5023                Some(Self::AtomHealthConnectAppOpenedReported)
5024            }
5025            "ATOM_HEALTH_CONNECT_API_CALLED" => Some(Self::AtomHealthConnectApiCalled),
5026            "ATOM_HEALTH_CONNECT_USAGE_STATS" => Some(Self::AtomHealthConnectUsageStats),
5027            "ATOM_HEALTH_CONNECT_STORAGE_STATS" => Some(Self::AtomHealthConnectStorageStats),
5028            "ATOM_HEALTH_CONNECT_API_INVOKED" => Some(Self::AtomHealthConnectApiInvoked),
5029            "ATOM_EXERCISE_ROUTE_API_CALLED" => Some(Self::AtomExerciseRouteApiCalled),
5030            "ATOM_ATOM_9999" => Some(Self::AtomAtom9999),
5031            "ATOM_ATOM_99999" => Some(Self::AtomAtom99999),
5032            "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED" => {
5033                Some(Self::AtomThreadnetworkTelemetryDataReported)
5034            }
5035            "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED" => {
5036                Some(Self::AtomThreadnetworkTopoEntryRepeated)
5037            }
5038            "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED" => {
5039                Some(Self::AtomThreadnetworkDeviceInfoReported)
5040            }
5041            "ATOM_EMERGENCY_NUMBER_DIALED" => Some(Self::AtomEmergencyNumberDialed),
5042            "ATOM_SANDBOX_API_CALLED" => Some(Self::AtomSandboxApiCalled),
5043            "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED" => Some(Self::AtomSandboxActivityEventOccurred),
5044            "ATOM_SANDBOX_SDK_STORAGE" => Some(Self::AtomSandboxSdkStorage),
5045            "ATOM_CRONET_ENGINE_CREATED" => Some(Self::AtomCronetEngineCreated),
5046            "ATOM_CRONET_TRAFFIC_REPORTED" => Some(Self::AtomCronetTrafficReported),
5047            "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED" => {
5048                Some(Self::AtomCronetEngineBuilderInitialized)
5049            }
5050            "ATOM_CRONET_HTTP_FLAGS_INITIALIZED" => Some(Self::AtomCronetHttpFlagsInitialized),
5051            "ATOM_CRONET_INITIALIZED" => Some(Self::AtomCronetInitialized),
5052            "ATOM_DAILY_KEEPALIVE_INFO_REPORTED" => Some(Self::AtomDailyKeepaliveInfoReported),
5053            "ATOM_IP_CLIENT_RA_INFO_REPORTED" => Some(Self::AtomIpClientRaInfoReported),
5054            "ATOM_APF_SESSION_INFO_REPORTED" => Some(Self::AtomApfSessionInfoReported),
5055            "ATOM_CREDENTIAL_MANAGER_API_CALLED" => Some(Self::AtomCredentialManagerApiCalled),
5056            "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED" => {
5057                Some(Self::AtomCredentialManagerInitPhaseReported)
5058            }
5059            "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED" => {
5060                Some(Self::AtomCredentialManagerCandidatePhaseReported)
5061            }
5062            "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED" => {
5063                Some(Self::AtomCredentialManagerFinalPhaseReported)
5064            }
5065            "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED" => {
5066                Some(Self::AtomCredentialManagerTotalReported)
5067            }
5068            "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED" => {
5069                Some(Self::AtomCredentialManagerFinalnouidReported)
5070            }
5071            "ATOM_CREDENTIAL_MANAGER_GET_REPORTED" => Some(Self::AtomCredentialManagerGetReported),
5072            "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED" => {
5073                Some(Self::AtomCredentialManagerAuthClickReported)
5074            }
5075            "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED" => Some(Self::AtomCredentialManagerApiv2Called),
5076            "ATOM_UWB_ACTIVITY_INFO" => Some(Self::AtomUwbActivityInfo),
5077            "ATOM_MEDIA_ACTION_REPORTED" => Some(Self::AtomMediaActionReported),
5078            "ATOM_MEDIA_CONTROLS_LAUNCHED" => Some(Self::AtomMediaControlsLaunched),
5079            "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED" => {
5080                Some(Self::AtomMediaCodecReclaimRequestCompleted)
5081            }
5082            "ATOM_MEDIA_CODEC_STARTED" => Some(Self::AtomMediaCodecStarted),
5083            "ATOM_MEDIA_CODEC_STOPPED" => Some(Self::AtomMediaCodecStopped),
5084            "ATOM_MEDIA_CODEC_RENDERED" => Some(Self::AtomMediaCodecRendered),
5085            _ => None,
5086        }
5087    }
5088}
5089/// This file is named 'statsd_tracing_config.proto' rather than
5090/// 'statsd_config.proto' (which would be more consistent with the other
5091/// config protos) so it doesn't show up and confuse folks looking for
5092/// the existing statsd_config.proto for configuring statsd itself.
5093/// Same for the config proto itself.
5094#[derive(Clone, PartialEq, ::prost::Message)]
5095pub struct StatsdTracingConfig {
5096    /// This is for the common case of the atom id being known in the enum AtomId.
5097    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
5098    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
5099    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
5100    /// (e.g. non-upstream atoms that don't exist in AOSP).
5101    #[prost(int32, repeated, packed = "false", tag = "2")]
5102    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
5103    #[prost(message, repeated, tag = "3")]
5104    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
5105}
5106#[derive(Clone, PartialEq, ::prost::Message)]
5107pub struct StatsdPullAtomConfig {
5108    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
5109    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
5110    #[prost(int32, repeated, packed = "false", tag = "2")]
5111    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
5112    #[prost(int32, optional, tag = "3")]
5113    pub pull_frequency_ms: ::core::option::Option<i32>,
5114    #[prost(string, repeated, tag = "4")]
5115    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5116}
5117#[derive(Clone, PartialEq, ::prost::Message)]
5118pub struct ProcessStatsConfig {
5119    #[prost(
5120        enumeration = "process_stats_config::Quirks",
5121        repeated,
5122        packed = "false",
5123        tag = "1"
5124    )]
5125    pub quirks: ::prost::alloc::vec::Vec<i32>,
5126    /// If enabled all processes will be scanned and dumped when the trace starts.
5127    #[prost(bool, optional, tag = "2")]
5128    pub scan_all_processes_on_start: ::core::option::Option<bool>,
5129    /// If enabled thread names are also recoded (this is redundant if sched_switch
5130    /// is enabled).
5131    #[prost(bool, optional, tag = "3")]
5132    pub record_thread_names: ::core::option::Option<bool>,
5133    /// If > 0 samples counters (see process_stats.proto) from
5134    /// /proc/pid/status and oom_score_adj every X ms.
5135    /// It will also sample /proc/pid/smaps_rollup if scan_smaps_rollup = true.
5136    /// This is required to be > 100ms to avoid excessive CPU usage.
5137    #[prost(uint32, optional, tag = "4")]
5138    pub proc_stats_poll_ms: ::core::option::Option<u32>,
5139    /// This is required to be either = 0 or a multiple of |proc_stats_poll_ms|
5140    /// (default: |proc_stats_poll_ms|). If = 0, will be set to
5141    /// |proc_stats_poll_ms|. Non-multiples will be rounded down to the nearest
5142    /// multiple.
5143    #[prost(uint32, optional, tag = "6")]
5144    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
5145    /// Niche feature: If true this will resolve file descriptors for each process
5146    /// so these can be mapped to their actual device or file.
5147    /// Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled or
5148    /// new fds opened after initially scanning a process will not be
5149    /// recognized.
5150    #[prost(bool, optional, tag = "9")]
5151    pub resolve_process_fds: ::core::option::Option<bool>,
5152    /// If true, output will include memory stats from /proc/pid/smaps_rollup.
5153    #[prost(bool, optional, tag = "10")]
5154    pub scan_smaps_rollup: ::core::option::Option<bool>,
5155    /// If true: process descriptions will include process age (starttime in
5156    /// /proc/pid/stat).
5157    /// Introduced in: perfetto v44.
5158    #[prost(bool, optional, tag = "11")]
5159    pub record_process_age: ::core::option::Option<bool>,
5160    /// If true and |proc_stats_poll_ms| is true, process stats will include time
5161    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
5162    /// Introduced in: perfetto v44.
5163    #[prost(bool, optional, tag = "12")]
5164    pub record_process_runtime: ::core::option::Option<bool>,
5165}
5166/// Nested message and enum types in `ProcessStatsConfig`.
5167pub mod process_stats_config {
5168    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5169    #[repr(i32)]
5170    pub enum Quirks {
5171        Unspecified = 0,
5172        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
5173        /// startup is now disabled by default and can be re-enabled using the
5174        /// |scan_all_processes_on_start| arg.
5175        DisableInitialDump = 1,
5176        DisableOnDemand = 2,
5177    }
5178    impl Quirks {
5179        /// String value of the enum field names used in the ProtoBuf definition.
5180        ///
5181        /// The values are not transformed in any way and thus are considered stable
5182        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5183        pub fn as_str_name(&self) -> &'static str {
5184            match self {
5185                Self::Unspecified => "QUIRKS_UNSPECIFIED",
5186                Self::DisableInitialDump => "DISABLE_INITIAL_DUMP",
5187                Self::DisableOnDemand => "DISABLE_ON_DEMAND",
5188            }
5189        }
5190        /// Creates an enum from field names used in the ProtoBuf definition.
5191        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5192            match value {
5193                "QUIRKS_UNSPECIFIED" => Some(Self::Unspecified),
5194                "DISABLE_INITIAL_DUMP" => Some(Self::DisableInitialDump),
5195                "DISABLE_ON_DEMAND" => Some(Self::DisableOnDemand),
5196                _ => None,
5197            }
5198        }
5199    }
5200}
5201/// Configuration for go/heapprofd.
5202/// Next id: 28
5203#[derive(Clone, PartialEq, ::prost::Message)]
5204pub struct HeapprofdConfig {
5205    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
5206    ///
5207    /// These are:
5208    /// * All heaps if heap_sampling_intervals is empty.
5209    /// * Those profiled due to all_heaps and not named in heaps if
5210    ///    heap_sampling_intervals is not empty.
5211    /// * The implicit libc.malloc heap if heaps is empty.
5212    ///
5213    /// Set to 1 for perfect accuracy.
5214    /// Otherwise, sample every sample_interval_bytes on average.
5215    ///
5216    /// See
5217    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
5218    /// for more details.
5219    ///
5220    /// BUGS
5221    /// Before Android 12, setting this to 0 would crash the target process.
5222    ///
5223    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
5224    /// this field or with heap_sampling_intervals), otherwise the producer will
5225    /// not start.
5226    #[prost(uint64, optional, tag = "1")]
5227    pub sampling_interval_bytes: ::core::option::Option<u64>,
5228    /// If less than the given numbers of bytes are left free in the shared
5229    /// memory buffer, increase sampling interval by a factor of two.
5230    /// Adaptive sampling is disabled when set to 0.
5231    #[prost(uint64, optional, tag = "24")]
5232    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
5233    /// Stop doubling the sampling_interval once the sampling interval has reached
5234    /// this value.
5235    #[prost(uint64, optional, tag = "25")]
5236    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
5237    /// E.g. surfaceflinger, com.android.phone
5238    /// This input is normalized in the following way: if it contains slashes,
5239    /// everything up to the last slash is discarded. If it contains "@",
5240    /// everything after the first @ is discared.
5241    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
5242    /// This transformation is also applied to the processes' command lines when
5243    /// matching.
5244    #[prost(string, repeated, tag = "2")]
5245    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5246    /// For watermark based triggering or local debugging.
5247    #[prost(uint64, repeated, packed = "false", tag = "4")]
5248    pub pid: ::prost::alloc::vec::Vec<u64>,
5249    /// Only profile target if it was installed by one of the packages given.
5250    /// Special values are:
5251    /// * @system: installed on the system partition
5252    /// * @product: installed on the product partition
5253    /// * @null: sideloaded
5254    /// Supported on Android 12+.
5255    #[prost(string, repeated, tag = "26")]
5256    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5257    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
5258    /// "malloc".
5259    ///
5260    /// Introduced in Android 12.
5261    #[prost(string, repeated, tag = "20")]
5262    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5263    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
5264    /// combination with all_heaps;
5265    ///
5266    /// Introduced in Android 12.
5267    #[prost(string, repeated, tag = "27")]
5268    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5269    #[prost(bool, optional, tag = "23")]
5270    pub stream_allocations: ::core::option::Option<bool>,
5271    /// If given, needs to be the same length as heaps and gives the sampling
5272    /// interval for the respective entry in heaps.
5273    ///
5274    /// Otherwise, sampling_interval_bytes is used.
5275    ///
5276    /// It is recommended to set sampling_interval_bytes to a reasonable default
5277    /// value when using this, as a value of 0 for sampling_interval_bytes will
5278    /// crash the target process before Android 12.
5279    ///
5280    /// Introduced in Android 12.
5281    ///
5282    /// All values must be non-zero or the producer will not start.
5283    #[prost(uint64, repeated, packed = "false", tag = "22")]
5284    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
5285    /// Sample all heaps registered by target process. Introduced in Android 12.
5286    #[prost(bool, optional, tag = "21")]
5287    pub all_heaps: ::core::option::Option<bool>,
5288    /// Profile all processes eligible for profiling on the system.
5289    /// See
5290    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
5291    /// for which processes are eligible.
5292    ///
5293    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
5294    /// will crash when trying to launch a new process as it will have an
5295    /// unexpected open socket to heapprofd.
5296    ///
5297    /// heapprofd will likely be overloaded by the amount of data for low
5298    /// sampling intervals.
5299    #[prost(bool, optional, tag = "5")]
5300    pub all: ::core::option::Option<bool>,
5301    /// Do not profile processes whose anon RSS + swap < given value.
5302    /// Introduced in Android 11.
5303    #[prost(uint32, optional, tag = "15")]
5304    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
5305    /// Stop profile if heapprofd memory usage goes beyond the given value.
5306    /// Introduced in Android 11.
5307    #[prost(uint32, optional, tag = "16")]
5308    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
5309    /// Stop profile if heapprofd CPU time since start of this data-source
5310    /// goes beyond given value.
5311    /// Introduced in Android 11.
5312    #[prost(uint64, optional, tag = "17")]
5313    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
5314    /// Do not emit function names for mappings starting with this prefix.
5315    /// E.g. /system to not emit symbols for any system libraries.
5316    #[prost(string, repeated, tag = "7")]
5317    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5318    /// Dump at a predefined interval.
5319    #[prost(message, optional, tag = "6")]
5320    pub continuous_dump_config: ::core::option::Option<heapprofd_config::ContinuousDumpConfig>,
5321    /// Size of the shared memory buffer between the profiled processes and
5322    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
5323    /// MiB.
5324    ///
5325    /// Needs to be:
5326    /// * at least 8192,
5327    /// * a power of two,
5328    /// * a multiple of 4096.
5329    #[prost(uint64, optional, tag = "8")]
5330    pub shmem_size_bytes: ::core::option::Option<u64>,
5331    /// When the shmem buffer is full, block the client instead of ending the
5332    /// trace. Use with caution as this will significantly slow down the target
5333    /// process.
5334    #[prost(bool, optional, tag = "9")]
5335    pub block_client: ::core::option::Option<bool>,
5336    /// If set, stop the trace session after blocking the client for this
5337    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
5338    /// Introduced in Android 11.
5339    #[prost(uint32, optional, tag = "14")]
5340    pub block_client_timeout_us: ::core::option::Option<u32>,
5341    /// Do not profile processes from startup, only match already running
5342    /// processes.
5343    ///
5344    /// Can not be set at the same time as no_running.
5345    /// Introduced in Android 11.
5346    #[prost(bool, optional, tag = "10")]
5347    pub no_startup: ::core::option::Option<bool>,
5348    /// Do not profile running processes. Only match processes on startup.
5349    ///
5350    /// Can not be set at the same time as no_startup.
5351    /// Introduced in Android 11.
5352    #[prost(bool, optional, tag = "11")]
5353    pub no_running: ::core::option::Option<bool>,
5354    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
5355    /// at the point in time when the sampled heap usage of the process was at its
5356    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
5357    /// self_allocated and self_freed to not be set.
5358    /// Introduced in Android 11.
5359    #[prost(bool, optional, tag = "13")]
5360    pub dump_at_max: ::core::option::Option<bool>,
5361    /// Escape hatch if the session is being torn down because of a forked child
5362    /// that shares memory space, but is not correctly identified as a vforked
5363    /// child.
5364    /// Introduced in Android 11.
5365    #[prost(bool, optional, tag = "18")]
5366    pub disable_fork_teardown: ::core::option::Option<bool>,
5367    /// We try to automatically detect when a target applicatation vforks but then
5368    /// does a memory allocation (or free). This auto-detection can be disabled
5369    /// with this.
5370    /// Introduced in Android 11.
5371    #[prost(bool, optional, tag = "19")]
5372    pub disable_vfork_detection: ::core::option::Option<bool>,
5373}
5374/// Nested message and enum types in `HeapprofdConfig`.
5375pub mod heapprofd_config {
5376    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
5377    pub struct ContinuousDumpConfig {
5378        /// ms to wait before first dump.
5379        #[prost(uint32, optional, tag = "5")]
5380        pub dump_phase_ms: ::core::option::Option<u32>,
5381        /// ms to wait between following dumps.
5382        #[prost(uint32, optional, tag = "6")]
5383        pub dump_interval_ms: ::core::option::Option<u32>,
5384    }
5385}
5386/// Configuration for managed app heap graph snapshots.
5387#[derive(Clone, PartialEq, ::prost::Message)]
5388pub struct JavaHprofConfig {
5389    /// Command line allowlist, matched against the /proc/pid/cmdline (not the
5390    /// comm string). The semantics of this field were changed since its original
5391    /// introduction.
5392    ///
5393    /// On Android T+ (13+), this field can specify a single wildcard (*), and
5394    /// the profiler will attempt to match it in two possible ways:
5395    /// * if the pattern starts with a '/', then it is matched against the first
5396    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
5397    ///    "/bin/echo".
5398    /// * otherwise the pattern is matched against the part of argv0
5399    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
5400    ///    For example "echo" would match "/bin/echo".
5401    ///
5402    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
5403    /// normalized prior to an exact string comparison. Normalization is as
5404    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
5405    /// the string contains forward slashes, trim everything up to and including
5406    /// the last one.
5407    ///
5408    /// Implementation note: in either case, at most 511 characters of cmdline
5409    /// are considered.
5410    #[prost(string, repeated, tag = "1")]
5411    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5412    /// For watermark based triggering or local debugging.
5413    #[prost(uint64, repeated, packed = "false", tag = "2")]
5414    pub pid: ::prost::alloc::vec::Vec<u64>,
5415    /// Only profile target if it was installed by one of the packages given.
5416    /// Special values are:
5417    /// * @system: installed on the system partition
5418    /// * @product: installed on the product partition
5419    /// * @null: sideloaded
5420    /// Supported on Android 12+.
5421    #[prost(string, repeated, tag = "7")]
5422    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5423    /// Dump at a predefined interval.
5424    #[prost(message, optional, tag = "3")]
5425    pub continuous_dump_config: ::core::option::Option<java_hprof_config::ContinuousDumpConfig>,
5426    /// Do not profile processes whose anon RSS + swap < given value.
5427    #[prost(uint32, optional, tag = "4")]
5428    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
5429    /// Include the process' /proc/self/smaps.
5430    /// This only shows maps that:
5431    /// * start with /system
5432    /// * start with /vendor
5433    /// * start with /data/app
5434    /// * contain "extracted in memory from Y", where Y matches any of the above
5435    #[prost(bool, optional, tag = "5")]
5436    pub dump_smaps: ::core::option::Option<bool>,
5437    /// Exclude objects of the following types from the profile. This can be
5438    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
5439    #[prost(string, repeated, tag = "6")]
5440    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5441}
5442/// Nested message and enum types in `JavaHprofConfig`.
5443pub mod java_hprof_config {
5444    /// If dump_interval_ms != 0, the following configuration is used.
5445    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
5446    pub struct ContinuousDumpConfig {
5447        /// ms to wait before first continuous dump.
5448        /// A dump is always created at the beginning of the trace.
5449        #[prost(uint32, optional, tag = "1")]
5450        pub dump_phase_ms: ::core::option::Option<u32>,
5451        /// ms to wait between following dumps.
5452        #[prost(uint32, optional, tag = "2")]
5453        pub dump_interval_ms: ::core::option::Option<u32>,
5454        /// If true, scans all the processes to find `process_cmdline` and filter by
5455        /// `min_anonymous_memory_kb` only at data source start. Default on Android
5456        /// S-.
5457        ///
5458        /// If false, rescans all the processes to find on every dump. Default on
5459        /// Android T+.
5460        #[prost(bool, optional, tag = "3")]
5461        pub scan_pids_only_on_start: ::core::option::Option<bool>,
5462    }
5463}
5464/// Next id: 12
5465#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5466pub struct PerfEvents {}
5467/// Nested message and enum types in `PerfEvents`.
5468pub mod perf_events {
5469    /// What event to sample on, and how often. Commented from the perspective of
5470    /// its use in |PerfEventConfig|.
5471    #[derive(Clone, PartialEq, ::prost::Message)]
5472    pub struct Timebase {
5473        /// If set, samples will be timestamped with the given clock.
5474        /// If unset, the clock is chosen by the implementation.
5475        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
5476        /// used for hardware events (due to interrupt safety), for which the
5477        /// recommendation is to use one of the monotonic clocks.
5478        #[prost(enumeration = "PerfClock", optional, tag = "11")]
5479        pub timestamp_clock: ::core::option::Option<i32>,
5480        /// Optional arbitrary name for the event, to identify it in the parsed
5481        /// trace. Does *not* affect the profiling itself. If unset, the trace
5482        /// parser will choose a suitable name.
5483        #[prost(string, optional, tag = "10")]
5484        pub name: ::core::option::Option<::prost::alloc::string::String>,
5485        /// How often the per-cpu sampling will occur. Not guaranteed to be honored
5486        /// as the kernel can throttle the sampling rate if it's too high.
5487        /// If unset, an implementation-defined default is used.
5488        #[prost(oneof = "timebase::Interval", tags = "2, 1")]
5489        pub interval: ::core::option::Option<timebase::Interval>,
5490        /// Counting event to use as a timebase for the sampling.
5491        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
5492        /// which is what you usually want.
5493        /// See common/perf_events.proto for the definitions.
5494        #[prost(oneof = "timebase::Event", tags = "4, 3, 5")]
5495        pub event: ::core::option::Option<timebase::Event>,
5496    }
5497    /// Nested message and enum types in `Timebase`.
5498    pub mod timebase {
5499        /// How often the per-cpu sampling will occur. Not guaranteed to be honored
5500        /// as the kernel can throttle the sampling rate if it's too high.
5501        /// If unset, an implementation-defined default is used.
5502        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
5503        pub enum Interval {
5504            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
5505            /// same as 1/period.
5506            /// Details: the actual sampling will still be based on a period, but the
5507            /// kernel will dynamically adjust it based on the observed event rate, to
5508            /// approximate this frequency. Works best with steady-rate events like
5509            /// timers.
5510            #[prost(uint64, tag = "2")]
5511            Frequency(u64),
5512            /// Per-cpu sampling will occur every |period| counts of |event|.
5513            /// Prefer |frequency| by default, as it's easier to oversample with a
5514            /// fixed period.
5515            #[prost(uint64, tag = "1")]
5516            Period(u64),
5517        }
5518        /// Counting event to use as a timebase for the sampling.
5519        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
5520        /// which is what you usually want.
5521        /// See common/perf_events.proto for the definitions.
5522        #[derive(Clone, PartialEq, ::prost::Oneof)]
5523        pub enum Event {
5524            #[prost(enumeration = "super::Counter", tag = "4")]
5525            Counter(i32),
5526            #[prost(message, tag = "3")]
5527            Tracepoint(super::Tracepoint),
5528            #[prost(message, tag = "5")]
5529            RawEvent(super::RawEvent),
5530        }
5531    }
5532    #[derive(Clone, PartialEq, ::prost::Message)]
5533    pub struct Tracepoint {
5534        /// Group and name for the tracepoint, acceptable forms:
5535        /// * "sched/sched_switch"
5536        /// * "sched:sched_switch"
5537        #[prost(string, optional, tag = "1")]
5538        pub name: ::core::option::Option<::prost::alloc::string::String>,
5539        /// Optional field-level filter for the tracepoint. Only events matching this
5540        /// filter will be counted (and therefore contribute to the sampling period).
5541        /// Example: "prev_pid >= 42 && next_pid == 0".
5542        /// For full syntax, see kernel documentation on "Event filtering":
5543        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
5544        #[prost(string, optional, tag = "2")]
5545        pub filter: ::core::option::Option<::prost::alloc::string::String>,
5546    }
5547    /// Syscall-level description of the event, propagated to the perf_event_attr
5548    /// struct. Primarily for local use-cases, since the event availability and
5549    /// encoding is hardware-specific.
5550    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
5551    pub struct RawEvent {
5552        #[prost(uint32, optional, tag = "1")]
5553        pub r#type: ::core::option::Option<u32>,
5554        #[prost(uint64, optional, tag = "2")]
5555        pub config: ::core::option::Option<u64>,
5556        #[prost(uint64, optional, tag = "3")]
5557        pub config1: ::core::option::Option<u64>,
5558        #[prost(uint64, optional, tag = "4")]
5559        pub config2: ::core::option::Option<u64>,
5560    }
5561    /// Builtin counter names from the uapi header. Commented with their perf tool
5562    /// aliases.
5563    /// TODO(rsavitski): consider generating enums for cache events (should be
5564    /// finite), and generally make this list as extensive as possible. Excluding
5565    /// things like dynamic PMUs since those don't fit into a static enum.
5566    /// Next id: 21
5567    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5568    #[repr(i32)]
5569    pub enum Counter {
5570        UnknownCounter = 0,
5571        /// cpu-clock
5572        SwCpuClock = 1,
5573        /// page-faults, faults
5574        SwPageFaults = 2,
5575        /// task-clock
5576        SwTaskClock = 3,
5577        /// context-switches, cs
5578        SwContextSwitches = 4,
5579        /// cpu-migrations, migrations
5580        SwCpuMigrations = 5,
5581        /// minor-faults
5582        SwPageFaultsMin = 6,
5583        /// major-faults
5584        SwPageFaultsMaj = 7,
5585        /// alignment-faults
5586        SwAlignmentFaults = 8,
5587        /// emulation-faults
5588        SwEmulationFaults = 9,
5589        /// dummy
5590        SwDummy = 20,
5591        /// cpu-cycles, cycles
5592        HwCpuCycles = 10,
5593        /// instructions
5594        HwInstructions = 11,
5595        /// cache-references
5596        HwCacheReferences = 12,
5597        /// cache-misses
5598        HwCacheMisses = 13,
5599        /// branch-instructions, branches
5600        HwBranchInstructions = 14,
5601        /// branch-misses
5602        HwBranchMisses = 15,
5603        /// bus-cycles
5604        HwBusCycles = 16,
5605        /// stalled-cycles-frontend, idle-cycles-frontend
5606        HwStalledCyclesFrontend = 17,
5607        /// stalled-cycles-backend, idle-cycles-backend
5608        HwStalledCyclesBackend = 18,
5609        /// ref-cycles
5610        HwRefCpuCycles = 19,
5611    }
5612    impl Counter {
5613        /// String value of the enum field names used in the ProtoBuf definition.
5614        ///
5615        /// The values are not transformed in any way and thus are considered stable
5616        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5617        pub fn as_str_name(&self) -> &'static str {
5618            match self {
5619                Self::UnknownCounter => "UNKNOWN_COUNTER",
5620                Self::SwCpuClock => "SW_CPU_CLOCK",
5621                Self::SwPageFaults => "SW_PAGE_FAULTS",
5622                Self::SwTaskClock => "SW_TASK_CLOCK",
5623                Self::SwContextSwitches => "SW_CONTEXT_SWITCHES",
5624                Self::SwCpuMigrations => "SW_CPU_MIGRATIONS",
5625                Self::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
5626                Self::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
5627                Self::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
5628                Self::SwEmulationFaults => "SW_EMULATION_FAULTS",
5629                Self::SwDummy => "SW_DUMMY",
5630                Self::HwCpuCycles => "HW_CPU_CYCLES",
5631                Self::HwInstructions => "HW_INSTRUCTIONS",
5632                Self::HwCacheReferences => "HW_CACHE_REFERENCES",
5633                Self::HwCacheMisses => "HW_CACHE_MISSES",
5634                Self::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
5635                Self::HwBranchMisses => "HW_BRANCH_MISSES",
5636                Self::HwBusCycles => "HW_BUS_CYCLES",
5637                Self::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
5638                Self::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
5639                Self::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
5640            }
5641        }
5642        /// Creates an enum from field names used in the ProtoBuf definition.
5643        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5644            match value {
5645                "UNKNOWN_COUNTER" => Some(Self::UnknownCounter),
5646                "SW_CPU_CLOCK" => Some(Self::SwCpuClock),
5647                "SW_PAGE_FAULTS" => Some(Self::SwPageFaults),
5648                "SW_TASK_CLOCK" => Some(Self::SwTaskClock),
5649                "SW_CONTEXT_SWITCHES" => Some(Self::SwContextSwitches),
5650                "SW_CPU_MIGRATIONS" => Some(Self::SwCpuMigrations),
5651                "SW_PAGE_FAULTS_MIN" => Some(Self::SwPageFaultsMin),
5652                "SW_PAGE_FAULTS_MAJ" => Some(Self::SwPageFaultsMaj),
5653                "SW_ALIGNMENT_FAULTS" => Some(Self::SwAlignmentFaults),
5654                "SW_EMULATION_FAULTS" => Some(Self::SwEmulationFaults),
5655                "SW_DUMMY" => Some(Self::SwDummy),
5656                "HW_CPU_CYCLES" => Some(Self::HwCpuCycles),
5657                "HW_INSTRUCTIONS" => Some(Self::HwInstructions),
5658                "HW_CACHE_REFERENCES" => Some(Self::HwCacheReferences),
5659                "HW_CACHE_MISSES" => Some(Self::HwCacheMisses),
5660                "HW_BRANCH_INSTRUCTIONS" => Some(Self::HwBranchInstructions),
5661                "HW_BRANCH_MISSES" => Some(Self::HwBranchMisses),
5662                "HW_BUS_CYCLES" => Some(Self::HwBusCycles),
5663                "HW_STALLED_CYCLES_FRONTEND" => Some(Self::HwStalledCyclesFrontend),
5664                "HW_STALLED_CYCLES_BACKEND" => Some(Self::HwStalledCyclesBackend),
5665                "HW_REF_CPU_CYCLES" => Some(Self::HwRefCpuCycles),
5666                _ => None,
5667            }
5668        }
5669    }
5670    /// Subset of clocks that is supported by perf timestamping.
5671    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
5672    /// would require additions to the trace clock synchronisation logic.
5673    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5674    #[repr(i32)]
5675    pub enum PerfClock {
5676        UnknownPerfClock = 0,
5677        Realtime = 1,
5678        Monotonic = 2,
5679        MonotonicRaw = 3,
5680        Boottime = 4,
5681    }
5682    impl PerfClock {
5683        /// String value of the enum field names used in the ProtoBuf definition.
5684        ///
5685        /// The values are not transformed in any way and thus are considered stable
5686        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5687        pub fn as_str_name(&self) -> &'static str {
5688            match self {
5689                Self::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
5690                Self::Realtime => "PERF_CLOCK_REALTIME",
5691                Self::Monotonic => "PERF_CLOCK_MONOTONIC",
5692                Self::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
5693                Self::Boottime => "PERF_CLOCK_BOOTTIME",
5694            }
5695        }
5696        /// Creates an enum from field names used in the ProtoBuf definition.
5697        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5698            match value {
5699                "UNKNOWN_PERF_CLOCK" => Some(Self::UnknownPerfClock),
5700                "PERF_CLOCK_REALTIME" => Some(Self::Realtime),
5701                "PERF_CLOCK_MONOTONIC" => Some(Self::Monotonic),
5702                "PERF_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
5703                "PERF_CLOCK_BOOTTIME" => Some(Self::Boottime),
5704                _ => None,
5705            }
5706        }
5707    }
5708}
5709/// Configuration for the traced_perf profiler.
5710///
5711/// Example config for basic cpu profiling:
5712///    perf_event_config {
5713///      timebase {
5714///        frequency: 80
5715///      }
5716///      callstack_sampling {
5717///        scope {
5718///          target_cmdline: "surfaceflinger"
5719///          target_cmdline: "system_server"
5720///        }
5721///        kernel_frames: true
5722///      }
5723///    }
5724///
5725/// Next id: 19
5726#[derive(Clone, PartialEq, ::prost::Message)]
5727pub struct PerfEventConfig {
5728    /// What event to sample on, and how often.
5729    /// Defined in common/perf_events.proto.
5730    #[prost(message, optional, tag = "15")]
5731    pub timebase: ::core::option::Option<perf_events::Timebase>,
5732    /// If set, the profiler will sample userspace processes' callstacks at the
5733    /// interval specified by the |timebase|.
5734    /// If unset, the profiler will record only the event counts.
5735    #[prost(message, optional, tag = "16")]
5736    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
5737    /// How often the per-cpu ring buffers are read by the producer.
5738    /// If unset, an implementation-defined default is used.
5739    #[prost(uint32, optional, tag = "8")]
5740    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
5741    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
5742    /// kernel. If set, must be a power of two.
5743    /// If unset, an implementation-defined default is used.
5744    #[prost(uint32, optional, tag = "3")]
5745    pub ring_buffer_pages: ::core::option::Option<u32>,
5746    /// Drop samples if the heap memory held by the samples in the unwinder queue
5747    /// is above the given limit. This counts the memory across all concurrent data
5748    /// sources (not just this one's), and there is no fairness guarantee - the
5749    /// whole quota might be used up by a concurrent source.
5750    #[prost(uint64, optional, tag = "17")]
5751    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
5752    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
5753    /// footprint exceeds this value.
5754    #[prost(uint32, optional, tag = "13")]
5755    pub max_daemon_memory_kb: ::core::option::Option<u32>,
5756    /// Timeout for the remote /proc/pid/{maps,mem} file descriptors for a
5757    /// sampled process. This is primarily for Android, where this lookup is
5758    /// asynchronous. As long as the producer is waiting, the associated samples
5759    /// will be kept enqueued (putting pressure on the capacity of the shared
5760    /// unwinding queue). Once a lookup for a process expires, all associated
5761    /// samples are discarded. However, if the lookup still succeeds after the
5762    /// timeout, future samples will be handled normally.
5763    /// If unset, an implementation-defined default is used.
5764    #[prost(uint32, optional, tag = "9")]
5765    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
5766    /// Optional period for clearing state cached by the unwinder. This is a heavy
5767    /// operation that is only necessary for traces that target a wide set of
5768    /// processes, and require the memory footprint to be reset periodically.
5769    /// If unset, the cached state will not be cleared.
5770    #[prost(uint32, optional, tag = "10")]
5771    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
5772    /// If set, only profile target if it was installed by a package with one of
5773    /// these names. Special values:
5774    /// * "@system": installed on the system partition
5775    /// * "@product": installed on the product partition
5776    /// * "@null": sideloaded
5777    /// Supported on Android 12+.
5778    #[prost(string, repeated, tag = "18")]
5779    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5780    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
5781    /// We rely on this to detect such configs.
5782    #[prost(bool, optional, tag = "1")]
5783    pub all_cpus: ::core::option::Option<bool>,
5784    #[prost(uint32, optional, tag = "2")]
5785    pub sampling_frequency: ::core::option::Option<u32>,
5786    #[prost(bool, optional, tag = "12")]
5787    pub kernel_frames: ::core::option::Option<bool>,
5788    #[prost(int32, repeated, packed = "false", tag = "4")]
5789    pub target_pid: ::prost::alloc::vec::Vec<i32>,
5790    #[prost(string, repeated, tag = "5")]
5791    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5792    #[prost(int32, repeated, packed = "false", tag = "6")]
5793    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
5794    #[prost(string, repeated, tag = "7")]
5795    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5796    #[prost(uint32, optional, tag = "11")]
5797    pub additional_cmdline_count: ::core::option::Option<u32>,
5798}
5799/// Nested message and enum types in `PerfEventConfig`.
5800pub mod perf_event_config {
5801    #[derive(Clone, PartialEq, ::prost::Message)]
5802    pub struct CallstackSampling {
5803        /// Defines a set of processes for which samples are retained/skipped. If
5804        /// unset, all samples are kept, but beware that it will be very heavy on the
5805        /// stack unwinder, which might start dropping samples due to overload.
5806        #[prost(message, optional, tag = "1")]
5807        pub scope: ::core::option::Option<Scope>,
5808        /// If true, callstacks will include the kernel-space frames. Such frames can
5809        /// be identified by a magical "kernel" string as their mapping name.
5810        /// Requires traced_perf to be running as root, or kptr_restrict to have been
5811        /// manually unrestricted. On Android, the platform should do the right thing
5812        /// on debug builds.
5813        /// This does *not* disclose KASLR, as only the function names are emitted.
5814        #[prost(bool, optional, tag = "2")]
5815        pub kernel_frames: ::core::option::Option<bool>,
5816        /// Whether to record and unwind userspace callstacks. If unset, defaults to
5817        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
5818        /// as the most common default (this defaulting is only applicable if the
5819        /// outer CallstackSampling message is explicitly set).
5820        #[prost(enumeration = "UnwindMode", optional, tag = "3")]
5821        pub user_frames: ::core::option::Option<i32>,
5822    }
5823    #[derive(Clone, PartialEq, ::prost::Message)]
5824    pub struct Scope {
5825        /// Process ID (TGID) allowlist. If this list is not empty, only matching
5826        /// samples will be retained. If multiple allow/deny-lists are
5827        /// specified by the config, then all of them are evaluated for each sampled
5828        /// process.
5829        #[prost(int32, repeated, packed = "false", tag = "1")]
5830        pub target_pid: ::prost::alloc::vec::Vec<i32>,
5831        /// Command line allowlist, matched against the /proc/pid/cmdline (not the
5832        /// comm string). The semantics of this field were changed since its original
5833        /// introduction.
5834        ///
5835        /// On Android T+ (13+), this field can specify a single wildcard (*), and
5836        /// the profiler will attempt to match it in two possible ways:
5837        /// * if the pattern starts with a '/', then it is matched against the first
5838        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
5839        ///    "/bin/echo".
5840        /// * otherwise the pattern is matched against the part of argv0
5841        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
5842        ///    For example "echo" would match "/bin/echo".
5843        ///
5844        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
5845        /// normalized prior to an exact string comparison. Normalization is as
5846        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
5847        /// the string contains forward slashes, trim everything up to and including
5848        /// the last one.
5849        ///
5850        /// Implementation note: in either case, at most 511 characters of cmdline
5851        /// are considered.
5852        #[prost(string, repeated, tag = "2")]
5853        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5854        /// List of excluded pids.
5855        #[prost(int32, repeated, packed = "false", tag = "3")]
5856        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
5857        /// List of excluded cmdlines. See description of |target_cmdline| for how
5858        /// this is handled.
5859        #[prost(string, repeated, tag = "4")]
5860        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5861        /// Number of additional command lines to sample. Only those which are
5862        /// neither explicitly included nor excluded will be considered. Processes
5863        /// are accepted on a first come, first served basis.
5864        #[prost(uint32, optional, tag = "5")]
5865        pub additional_cmdline_count: ::core::option::Option<u32>,
5866        /// If set to N, all encountered processes will be put into one of the N
5867        /// possible bins, and only one randomly-chosen bin will be selected for
5868        /// unwinding. The binning is simply "pid % N", under the assumption that
5869        /// low-order bits of pids are roughly uniformly distributed. Other explicit
5870        /// inclusions/exclusions in this |Scope| message are still respected.
5871        ///
5872        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
5873        /// values will be queryable in trace processor under the "stats" table as
5874        /// "perf_process_shard_count" and "perf_chosen_process_shard".
5875        ///
5876        /// NB: all data sources in a config that set |process_shard_count| must set
5877        /// it to the same value. The profiler will choose one bin for all those data
5878        /// sources.
5879        #[prost(uint32, optional, tag = "6")]
5880        pub process_shard_count: ::core::option::Option<u32>,
5881    }
5882    /// Userspace unwinding mode. A possible future addition is kernel-unwound
5883    /// callchains for frame pointer based systems.
5884    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5885    #[repr(i32)]
5886    pub enum UnwindMode {
5887        UnwindUnknown = 0,
5888        /// Do not unwind userspace:
5889        UnwindSkip = 1,
5890        /// Use libunwindstack (default):
5891        UnwindDwarf = 2,
5892    }
5893    impl UnwindMode {
5894        /// String value of the enum field names used in the ProtoBuf definition.
5895        ///
5896        /// The values are not transformed in any way and thus are considered stable
5897        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5898        pub fn as_str_name(&self) -> &'static str {
5899            match self {
5900                Self::UnwindUnknown => "UNWIND_UNKNOWN",
5901                Self::UnwindSkip => "UNWIND_SKIP",
5902                Self::UnwindDwarf => "UNWIND_DWARF",
5903            }
5904        }
5905        /// Creates an enum from field names used in the ProtoBuf definition.
5906        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5907            match value {
5908                "UNWIND_UNKNOWN" => Some(Self::UnwindUnknown),
5909                "UNWIND_SKIP" => Some(Self::UnwindSkip),
5910                "UNWIND_DWARF" => Some(Self::UnwindDwarf),
5911                _ => None,
5912            }
5913        }
5914    }
5915}
5916/// Counter definitions for Linux's /proc/meminfo.
5917#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5918#[repr(i32)]
5919pub enum MeminfoCounters {
5920    MeminfoUnspecified = 0,
5921    MeminfoMemTotal = 1,
5922    MeminfoMemFree = 2,
5923    MeminfoMemAvailable = 3,
5924    MeminfoBuffers = 4,
5925    MeminfoCached = 5,
5926    MeminfoSwapCached = 6,
5927    MeminfoActive = 7,
5928    MeminfoInactive = 8,
5929    MeminfoActiveAnon = 9,
5930    MeminfoInactiveAnon = 10,
5931    MeminfoActiveFile = 11,
5932    MeminfoInactiveFile = 12,
5933    MeminfoUnevictable = 13,
5934    MeminfoMlocked = 14,
5935    MeminfoSwapTotal = 15,
5936    MeminfoSwapFree = 16,
5937    MeminfoDirty = 17,
5938    MeminfoWriteback = 18,
5939    MeminfoAnonPages = 19,
5940    MeminfoMapped = 20,
5941    MeminfoShmem = 21,
5942    MeminfoSlab = 22,
5943    MeminfoSlabReclaimable = 23,
5944    MeminfoSlabUnreclaimable = 24,
5945    MeminfoKernelStack = 25,
5946    MeminfoPageTables = 26,
5947    MeminfoCommitLimit = 27,
5948    MeminfoCommitedAs = 28,
5949    MeminfoVmallocTotal = 29,
5950    MeminfoVmallocUsed = 30,
5951    MeminfoVmallocChunk = 31,
5952    MeminfoCmaTotal = 32,
5953    MeminfoCmaFree = 33,
5954}
5955impl MeminfoCounters {
5956    /// String value of the enum field names used in the ProtoBuf definition.
5957    ///
5958    /// The values are not transformed in any way and thus are considered stable
5959    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5960    pub fn as_str_name(&self) -> &'static str {
5961        match self {
5962            Self::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
5963            Self::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
5964            Self::MeminfoMemFree => "MEMINFO_MEM_FREE",
5965            Self::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
5966            Self::MeminfoBuffers => "MEMINFO_BUFFERS",
5967            Self::MeminfoCached => "MEMINFO_CACHED",
5968            Self::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
5969            Self::MeminfoActive => "MEMINFO_ACTIVE",
5970            Self::MeminfoInactive => "MEMINFO_INACTIVE",
5971            Self::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
5972            Self::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
5973            Self::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
5974            Self::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
5975            Self::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
5976            Self::MeminfoMlocked => "MEMINFO_MLOCKED",
5977            Self::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
5978            Self::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
5979            Self::MeminfoDirty => "MEMINFO_DIRTY",
5980            Self::MeminfoWriteback => "MEMINFO_WRITEBACK",
5981            Self::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
5982            Self::MeminfoMapped => "MEMINFO_MAPPED",
5983            Self::MeminfoShmem => "MEMINFO_SHMEM",
5984            Self::MeminfoSlab => "MEMINFO_SLAB",
5985            Self::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
5986            Self::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
5987            Self::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
5988            Self::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
5989            Self::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
5990            Self::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
5991            Self::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
5992            Self::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
5993            Self::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
5994            Self::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
5995            Self::MeminfoCmaFree => "MEMINFO_CMA_FREE",
5996        }
5997    }
5998    /// Creates an enum from field names used in the ProtoBuf definition.
5999    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6000        match value {
6001            "MEMINFO_UNSPECIFIED" => Some(Self::MeminfoUnspecified),
6002            "MEMINFO_MEM_TOTAL" => Some(Self::MeminfoMemTotal),
6003            "MEMINFO_MEM_FREE" => Some(Self::MeminfoMemFree),
6004            "MEMINFO_MEM_AVAILABLE" => Some(Self::MeminfoMemAvailable),
6005            "MEMINFO_BUFFERS" => Some(Self::MeminfoBuffers),
6006            "MEMINFO_CACHED" => Some(Self::MeminfoCached),
6007            "MEMINFO_SWAP_CACHED" => Some(Self::MeminfoSwapCached),
6008            "MEMINFO_ACTIVE" => Some(Self::MeminfoActive),
6009            "MEMINFO_INACTIVE" => Some(Self::MeminfoInactive),
6010            "MEMINFO_ACTIVE_ANON" => Some(Self::MeminfoActiveAnon),
6011            "MEMINFO_INACTIVE_ANON" => Some(Self::MeminfoInactiveAnon),
6012            "MEMINFO_ACTIVE_FILE" => Some(Self::MeminfoActiveFile),
6013            "MEMINFO_INACTIVE_FILE" => Some(Self::MeminfoInactiveFile),
6014            "MEMINFO_UNEVICTABLE" => Some(Self::MeminfoUnevictable),
6015            "MEMINFO_MLOCKED" => Some(Self::MeminfoMlocked),
6016            "MEMINFO_SWAP_TOTAL" => Some(Self::MeminfoSwapTotal),
6017            "MEMINFO_SWAP_FREE" => Some(Self::MeminfoSwapFree),
6018            "MEMINFO_DIRTY" => Some(Self::MeminfoDirty),
6019            "MEMINFO_WRITEBACK" => Some(Self::MeminfoWriteback),
6020            "MEMINFO_ANON_PAGES" => Some(Self::MeminfoAnonPages),
6021            "MEMINFO_MAPPED" => Some(Self::MeminfoMapped),
6022            "MEMINFO_SHMEM" => Some(Self::MeminfoShmem),
6023            "MEMINFO_SLAB" => Some(Self::MeminfoSlab),
6024            "MEMINFO_SLAB_RECLAIMABLE" => Some(Self::MeminfoSlabReclaimable),
6025            "MEMINFO_SLAB_UNRECLAIMABLE" => Some(Self::MeminfoSlabUnreclaimable),
6026            "MEMINFO_KERNEL_STACK" => Some(Self::MeminfoKernelStack),
6027            "MEMINFO_PAGE_TABLES" => Some(Self::MeminfoPageTables),
6028            "MEMINFO_COMMIT_LIMIT" => Some(Self::MeminfoCommitLimit),
6029            "MEMINFO_COMMITED_AS" => Some(Self::MeminfoCommitedAs),
6030            "MEMINFO_VMALLOC_TOTAL" => Some(Self::MeminfoVmallocTotal),
6031            "MEMINFO_VMALLOC_USED" => Some(Self::MeminfoVmallocUsed),
6032            "MEMINFO_VMALLOC_CHUNK" => Some(Self::MeminfoVmallocChunk),
6033            "MEMINFO_CMA_TOTAL" => Some(Self::MeminfoCmaTotal),
6034            "MEMINFO_CMA_FREE" => Some(Self::MeminfoCmaFree),
6035            _ => None,
6036        }
6037    }
6038}
6039/// Counter definitions for Linux's /proc/vmstat.
6040#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6041#[repr(i32)]
6042pub enum VmstatCounters {
6043    VmstatUnspecified = 0,
6044    VmstatNrFreePages = 1,
6045    VmstatNrAllocBatch = 2,
6046    VmstatNrInactiveAnon = 3,
6047    VmstatNrActiveAnon = 4,
6048    VmstatNrInactiveFile = 5,
6049    VmstatNrActiveFile = 6,
6050    VmstatNrUnevictable = 7,
6051    VmstatNrMlock = 8,
6052    VmstatNrAnonPages = 9,
6053    VmstatNrMapped = 10,
6054    VmstatNrFilePages = 11,
6055    VmstatNrDirty = 12,
6056    VmstatNrWriteback = 13,
6057    VmstatNrSlabReclaimable = 14,
6058    VmstatNrSlabUnreclaimable = 15,
6059    VmstatNrPageTablePages = 16,
6060    VmstatNrKernelStack = 17,
6061    VmstatNrOverhead = 18,
6062    VmstatNrUnstable = 19,
6063    VmstatNrBounce = 20,
6064    VmstatNrVmscanWrite = 21,
6065    VmstatNrVmscanImmediateReclaim = 22,
6066    VmstatNrWritebackTemp = 23,
6067    VmstatNrIsolatedAnon = 24,
6068    VmstatNrIsolatedFile = 25,
6069    VmstatNrShmem = 26,
6070    VmstatNrDirtied = 27,
6071    VmstatNrWritten = 28,
6072    VmstatNrPagesScanned = 29,
6073    VmstatWorkingsetRefault = 30,
6074    VmstatWorkingsetActivate = 31,
6075    VmstatWorkingsetNodereclaim = 32,
6076    VmstatNrAnonTransparentHugepages = 33,
6077    VmstatNrFreeCma = 34,
6078    VmstatNrSwapcache = 35,
6079    VmstatNrDirtyThreshold = 36,
6080    VmstatNrDirtyBackgroundThreshold = 37,
6081    VmstatPgpgin = 38,
6082    VmstatPgpgout = 39,
6083    VmstatPgpgoutclean = 40,
6084    VmstatPswpin = 41,
6085    VmstatPswpout = 42,
6086    VmstatPgallocDma = 43,
6087    VmstatPgallocNormal = 44,
6088    VmstatPgallocMovable = 45,
6089    VmstatPgfree = 46,
6090    VmstatPgactivate = 47,
6091    VmstatPgdeactivate = 48,
6092    VmstatPgfault = 49,
6093    VmstatPgmajfault = 50,
6094    VmstatPgrefillDma = 51,
6095    VmstatPgrefillNormal = 52,
6096    VmstatPgrefillMovable = 53,
6097    VmstatPgstealKswapdDma = 54,
6098    VmstatPgstealKswapdNormal = 55,
6099    VmstatPgstealKswapdMovable = 56,
6100    VmstatPgstealDirectDma = 57,
6101    VmstatPgstealDirectNormal = 58,
6102    VmstatPgstealDirectMovable = 59,
6103    VmstatPgscanKswapdDma = 60,
6104    VmstatPgscanKswapdNormal = 61,
6105    VmstatPgscanKswapdMovable = 62,
6106    VmstatPgscanDirectDma = 63,
6107    VmstatPgscanDirectNormal = 64,
6108    VmstatPgscanDirectMovable = 65,
6109    VmstatPgscanDirectThrottle = 66,
6110    VmstatPginodesteal = 67,
6111    VmstatSlabsScanned = 68,
6112    VmstatKswapdInodesteal = 69,
6113    VmstatKswapdLowWmarkHitQuickly = 70,
6114    VmstatKswapdHighWmarkHitQuickly = 71,
6115    VmstatPageoutrun = 72,
6116    VmstatAllocstall = 73,
6117    VmstatPgrotated = 74,
6118    VmstatDropPagecache = 75,
6119    VmstatDropSlab = 76,
6120    VmstatPgmigrateSuccess = 77,
6121    VmstatPgmigrateFail = 78,
6122    VmstatCompactMigrateScanned = 79,
6123    VmstatCompactFreeScanned = 80,
6124    VmstatCompactIsolated = 81,
6125    VmstatCompactStall = 82,
6126    VmstatCompactFail = 83,
6127    VmstatCompactSuccess = 84,
6128    VmstatCompactDaemonWake = 85,
6129    VmstatUnevictablePgsCulled = 86,
6130    VmstatUnevictablePgsScanned = 87,
6131    VmstatUnevictablePgsRescued = 88,
6132    VmstatUnevictablePgsMlocked = 89,
6133    VmstatUnevictablePgsMunlocked = 90,
6134    VmstatUnevictablePgsCleared = 91,
6135    VmstatUnevictablePgsStranded = 92,
6136    VmstatNrZspages = 93,
6137    VmstatNrIonHeap = 94,
6138    VmstatNrGpuHeap = 95,
6139    VmstatAllocstallDma = 96,
6140    VmstatAllocstallMovable = 97,
6141    VmstatAllocstallNormal = 98,
6142    VmstatCompactDaemonFreeScanned = 99,
6143    VmstatCompactDaemonMigrateScanned = 100,
6144    VmstatNrFastrpc = 101,
6145    VmstatNrIndirectlyReclaimable = 102,
6146    VmstatNrIonHeapPool = 103,
6147    VmstatNrKernelMiscReclaimable = 104,
6148    VmstatNrShadowCallStackBytes = 105,
6149    VmstatNrShmemHugepages = 106,
6150    VmstatNrShmemPmdmapped = 107,
6151    VmstatNrUnreclaimablePages = 108,
6152    VmstatNrZoneActiveAnon = 109,
6153    VmstatNrZoneActiveFile = 110,
6154    VmstatNrZoneInactiveAnon = 111,
6155    VmstatNrZoneInactiveFile = 112,
6156    VmstatNrZoneUnevictable = 113,
6157    VmstatNrZoneWritePending = 114,
6158    VmstatOomKill = 115,
6159    VmstatPglazyfree = 116,
6160    VmstatPglazyfreed = 117,
6161    VmstatPgrefill = 118,
6162    VmstatPgscanDirect = 119,
6163    VmstatPgscanKswapd = 120,
6164    VmstatPgskipDma = 121,
6165    VmstatPgskipMovable = 122,
6166    VmstatPgskipNormal = 123,
6167    VmstatPgstealDirect = 124,
6168    VmstatPgstealKswapd = 125,
6169    VmstatSwapRa = 126,
6170    VmstatSwapRaHit = 127,
6171    VmstatWorkingsetRestore = 128,
6172    VmstatAllocstallDevice = 129,
6173    VmstatAllocstallDma32 = 130,
6174    VmstatBalloonDeflate = 131,
6175    VmstatBalloonInflate = 132,
6176    VmstatBalloonMigrate = 133,
6177    VmstatCmaAllocFail = 134,
6178    VmstatCmaAllocSuccess = 135,
6179    VmstatNrFileHugepages = 136,
6180    VmstatNrFilePmdmapped = 137,
6181    VmstatNrFollPinAcquired = 138,
6182    VmstatNrFollPinReleased = 139,
6183    VmstatNrSecPageTablePages = 140,
6184    VmstatNrShadowCallStack = 141,
6185    VmstatNrSwapcached = 142,
6186    VmstatNrThrottledWritten = 143,
6187    VmstatPgallocDevice = 144,
6188    VmstatPgallocDma32 = 145,
6189    VmstatPgdemoteDirect = 146,
6190    VmstatPgdemoteKswapd = 147,
6191    VmstatPgreuse = 148,
6192    VmstatPgscanAnon = 149,
6193    VmstatPgscanFile = 150,
6194    VmstatPgskipDevice = 151,
6195    VmstatPgskipDma32 = 152,
6196    VmstatPgstealAnon = 153,
6197    VmstatPgstealFile = 154,
6198    VmstatThpCollapseAlloc = 155,
6199    VmstatThpCollapseAllocFailed = 156,
6200    VmstatThpDeferredSplitPage = 157,
6201    VmstatThpFaultAlloc = 158,
6202    VmstatThpFaultFallback = 159,
6203    VmstatThpFaultFallbackCharge = 160,
6204    VmstatThpFileAlloc = 161,
6205    VmstatThpFileFallback = 162,
6206    VmstatThpFileFallbackCharge = 163,
6207    VmstatThpFileMapped = 164,
6208    VmstatThpMigrationFail = 165,
6209    VmstatThpMigrationSplit = 166,
6210    VmstatThpMigrationSuccess = 167,
6211    VmstatThpScanExceedNonePte = 168,
6212    VmstatThpScanExceedSharePte = 169,
6213    VmstatThpScanExceedSwapPte = 170,
6214    VmstatThpSplitPage = 171,
6215    VmstatThpSplitPageFailed = 172,
6216    VmstatThpSplitPmd = 173,
6217    VmstatThpSwpout = 174,
6218    VmstatThpSwpoutFallback = 175,
6219    VmstatThpZeroPageAlloc = 176,
6220    VmstatThpZeroPageAllocFailed = 177,
6221    VmstatVmaLockAbort = 178,
6222    VmstatVmaLockMiss = 179,
6223    VmstatVmaLockRetry = 180,
6224    VmstatVmaLockSuccess = 181,
6225    VmstatWorkingsetActivateAnon = 182,
6226    VmstatWorkingsetActivateFile = 183,
6227    VmstatWorkingsetNodes = 184,
6228    VmstatWorkingsetRefaultAnon = 185,
6229    VmstatWorkingsetRefaultFile = 186,
6230    VmstatWorkingsetRestoreAnon = 187,
6231    VmstatWorkingsetRestoreFile = 188,
6232}
6233impl VmstatCounters {
6234    /// String value of the enum field names used in the ProtoBuf definition.
6235    ///
6236    /// The values are not transformed in any way and thus are considered stable
6237    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6238    pub fn as_str_name(&self) -> &'static str {
6239        match self {
6240            Self::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
6241            Self::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
6242            Self::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
6243            Self::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
6244            Self::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
6245            Self::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
6246            Self::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
6247            Self::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
6248            Self::VmstatNrMlock => "VMSTAT_NR_MLOCK",
6249            Self::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
6250            Self::VmstatNrMapped => "VMSTAT_NR_MAPPED",
6251            Self::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
6252            Self::VmstatNrDirty => "VMSTAT_NR_DIRTY",
6253            Self::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
6254            Self::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
6255            Self::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
6256            Self::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
6257            Self::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
6258            Self::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
6259            Self::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
6260            Self::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
6261            Self::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
6262            Self::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
6263            Self::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
6264            Self::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
6265            Self::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
6266            Self::VmstatNrShmem => "VMSTAT_NR_SHMEM",
6267            Self::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
6268            Self::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
6269            Self::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
6270            Self::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
6271            Self::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
6272            Self::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
6273            Self::VmstatNrAnonTransparentHugepages => "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES",
6274            Self::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
6275            Self::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
6276            Self::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
6277            Self::VmstatNrDirtyBackgroundThreshold => "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD",
6278            Self::VmstatPgpgin => "VMSTAT_PGPGIN",
6279            Self::VmstatPgpgout => "VMSTAT_PGPGOUT",
6280            Self::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
6281            Self::VmstatPswpin => "VMSTAT_PSWPIN",
6282            Self::VmstatPswpout => "VMSTAT_PSWPOUT",
6283            Self::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
6284            Self::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
6285            Self::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
6286            Self::VmstatPgfree => "VMSTAT_PGFREE",
6287            Self::VmstatPgactivate => "VMSTAT_PGACTIVATE",
6288            Self::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
6289            Self::VmstatPgfault => "VMSTAT_PGFAULT",
6290            Self::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
6291            Self::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
6292            Self::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
6293            Self::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
6294            Self::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
6295            Self::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
6296            Self::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
6297            Self::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
6298            Self::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
6299            Self::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
6300            Self::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
6301            Self::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
6302            Self::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
6303            Self::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
6304            Self::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
6305            Self::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
6306            Self::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
6307            Self::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
6308            Self::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
6309            Self::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
6310            Self::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
6311            Self::VmstatKswapdHighWmarkHitQuickly => "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY",
6312            Self::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
6313            Self::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
6314            Self::VmstatPgrotated => "VMSTAT_PGROTATED",
6315            Self::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
6316            Self::VmstatDropSlab => "VMSTAT_DROP_SLAB",
6317            Self::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
6318            Self::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
6319            Self::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
6320            Self::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
6321            Self::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
6322            Self::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
6323            Self::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
6324            Self::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
6325            Self::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
6326            Self::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
6327            Self::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
6328            Self::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
6329            Self::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
6330            Self::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
6331            Self::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
6332            Self::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
6333            Self::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
6334            Self::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
6335            Self::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
6336            Self::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
6337            Self::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
6338            Self::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
6339            Self::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
6340            Self::VmstatCompactDaemonMigrateScanned => "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED",
6341            Self::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
6342            Self::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
6343            Self::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
6344            Self::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
6345            Self::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
6346            Self::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
6347            Self::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
6348            Self::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
6349            Self::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
6350            Self::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
6351            Self::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
6352            Self::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
6353            Self::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
6354            Self::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
6355            Self::VmstatOomKill => "VMSTAT_OOM_KILL",
6356            Self::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
6357            Self::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
6358            Self::VmstatPgrefill => "VMSTAT_PGREFILL",
6359            Self::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
6360            Self::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
6361            Self::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
6362            Self::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
6363            Self::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
6364            Self::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
6365            Self::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
6366            Self::VmstatSwapRa => "VMSTAT_SWAP_RA",
6367            Self::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
6368            Self::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
6369            Self::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
6370            Self::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
6371            Self::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
6372            Self::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
6373            Self::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
6374            Self::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
6375            Self::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
6376            Self::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
6377            Self::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
6378            Self::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
6379            Self::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
6380            Self::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
6381            Self::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
6382            Self::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
6383            Self::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
6384            Self::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
6385            Self::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
6386            Self::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
6387            Self::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
6388            Self::VmstatPgreuse => "VMSTAT_PGREUSE",
6389            Self::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
6390            Self::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
6391            Self::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
6392            Self::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
6393            Self::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
6394            Self::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
6395            Self::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
6396            Self::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
6397            Self::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
6398            Self::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
6399            Self::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
6400            Self::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
6401            Self::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
6402            Self::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
6403            Self::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
6404            Self::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
6405            Self::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
6406            Self::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
6407            Self::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
6408            Self::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
6409            Self::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
6410            Self::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
6411            Self::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
6412            Self::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
6413            Self::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
6414            Self::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
6415            Self::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
6416            Self::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
6417            Self::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
6418            Self::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
6419            Self::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
6420            Self::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
6421            Self::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
6422            Self::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
6423            Self::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
6424            Self::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
6425            Self::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
6426            Self::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
6427            Self::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
6428            Self::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
6429        }
6430    }
6431    /// Creates an enum from field names used in the ProtoBuf definition.
6432    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6433        match value {
6434            "VMSTAT_UNSPECIFIED" => Some(Self::VmstatUnspecified),
6435            "VMSTAT_NR_FREE_PAGES" => Some(Self::VmstatNrFreePages),
6436            "VMSTAT_NR_ALLOC_BATCH" => Some(Self::VmstatNrAllocBatch),
6437            "VMSTAT_NR_INACTIVE_ANON" => Some(Self::VmstatNrInactiveAnon),
6438            "VMSTAT_NR_ACTIVE_ANON" => Some(Self::VmstatNrActiveAnon),
6439            "VMSTAT_NR_INACTIVE_FILE" => Some(Self::VmstatNrInactiveFile),
6440            "VMSTAT_NR_ACTIVE_FILE" => Some(Self::VmstatNrActiveFile),
6441            "VMSTAT_NR_UNEVICTABLE" => Some(Self::VmstatNrUnevictable),
6442            "VMSTAT_NR_MLOCK" => Some(Self::VmstatNrMlock),
6443            "VMSTAT_NR_ANON_PAGES" => Some(Self::VmstatNrAnonPages),
6444            "VMSTAT_NR_MAPPED" => Some(Self::VmstatNrMapped),
6445            "VMSTAT_NR_FILE_PAGES" => Some(Self::VmstatNrFilePages),
6446            "VMSTAT_NR_DIRTY" => Some(Self::VmstatNrDirty),
6447            "VMSTAT_NR_WRITEBACK" => Some(Self::VmstatNrWriteback),
6448            "VMSTAT_NR_SLAB_RECLAIMABLE" => Some(Self::VmstatNrSlabReclaimable),
6449            "VMSTAT_NR_SLAB_UNRECLAIMABLE" => Some(Self::VmstatNrSlabUnreclaimable),
6450            "VMSTAT_NR_PAGE_TABLE_PAGES" => Some(Self::VmstatNrPageTablePages),
6451            "VMSTAT_NR_KERNEL_STACK" => Some(Self::VmstatNrKernelStack),
6452            "VMSTAT_NR_OVERHEAD" => Some(Self::VmstatNrOverhead),
6453            "VMSTAT_NR_UNSTABLE" => Some(Self::VmstatNrUnstable),
6454            "VMSTAT_NR_BOUNCE" => Some(Self::VmstatNrBounce),
6455            "VMSTAT_NR_VMSCAN_WRITE" => Some(Self::VmstatNrVmscanWrite),
6456            "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM" => Some(Self::VmstatNrVmscanImmediateReclaim),
6457            "VMSTAT_NR_WRITEBACK_TEMP" => Some(Self::VmstatNrWritebackTemp),
6458            "VMSTAT_NR_ISOLATED_ANON" => Some(Self::VmstatNrIsolatedAnon),
6459            "VMSTAT_NR_ISOLATED_FILE" => Some(Self::VmstatNrIsolatedFile),
6460            "VMSTAT_NR_SHMEM" => Some(Self::VmstatNrShmem),
6461            "VMSTAT_NR_DIRTIED" => Some(Self::VmstatNrDirtied),
6462            "VMSTAT_NR_WRITTEN" => Some(Self::VmstatNrWritten),
6463            "VMSTAT_NR_PAGES_SCANNED" => Some(Self::VmstatNrPagesScanned),
6464            "VMSTAT_WORKINGSET_REFAULT" => Some(Self::VmstatWorkingsetRefault),
6465            "VMSTAT_WORKINGSET_ACTIVATE" => Some(Self::VmstatWorkingsetActivate),
6466            "VMSTAT_WORKINGSET_NODERECLAIM" => Some(Self::VmstatWorkingsetNodereclaim),
6467            "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES" => Some(Self::VmstatNrAnonTransparentHugepages),
6468            "VMSTAT_NR_FREE_CMA" => Some(Self::VmstatNrFreeCma),
6469            "VMSTAT_NR_SWAPCACHE" => Some(Self::VmstatNrSwapcache),
6470            "VMSTAT_NR_DIRTY_THRESHOLD" => Some(Self::VmstatNrDirtyThreshold),
6471            "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD" => Some(Self::VmstatNrDirtyBackgroundThreshold),
6472            "VMSTAT_PGPGIN" => Some(Self::VmstatPgpgin),
6473            "VMSTAT_PGPGOUT" => Some(Self::VmstatPgpgout),
6474            "VMSTAT_PGPGOUTCLEAN" => Some(Self::VmstatPgpgoutclean),
6475            "VMSTAT_PSWPIN" => Some(Self::VmstatPswpin),
6476            "VMSTAT_PSWPOUT" => Some(Self::VmstatPswpout),
6477            "VMSTAT_PGALLOC_DMA" => Some(Self::VmstatPgallocDma),
6478            "VMSTAT_PGALLOC_NORMAL" => Some(Self::VmstatPgallocNormal),
6479            "VMSTAT_PGALLOC_MOVABLE" => Some(Self::VmstatPgallocMovable),
6480            "VMSTAT_PGFREE" => Some(Self::VmstatPgfree),
6481            "VMSTAT_PGACTIVATE" => Some(Self::VmstatPgactivate),
6482            "VMSTAT_PGDEACTIVATE" => Some(Self::VmstatPgdeactivate),
6483            "VMSTAT_PGFAULT" => Some(Self::VmstatPgfault),
6484            "VMSTAT_PGMAJFAULT" => Some(Self::VmstatPgmajfault),
6485            "VMSTAT_PGREFILL_DMA" => Some(Self::VmstatPgrefillDma),
6486            "VMSTAT_PGREFILL_NORMAL" => Some(Self::VmstatPgrefillNormal),
6487            "VMSTAT_PGREFILL_MOVABLE" => Some(Self::VmstatPgrefillMovable),
6488            "VMSTAT_PGSTEAL_KSWAPD_DMA" => Some(Self::VmstatPgstealKswapdDma),
6489            "VMSTAT_PGSTEAL_KSWAPD_NORMAL" => Some(Self::VmstatPgstealKswapdNormal),
6490            "VMSTAT_PGSTEAL_KSWAPD_MOVABLE" => Some(Self::VmstatPgstealKswapdMovable),
6491            "VMSTAT_PGSTEAL_DIRECT_DMA" => Some(Self::VmstatPgstealDirectDma),
6492            "VMSTAT_PGSTEAL_DIRECT_NORMAL" => Some(Self::VmstatPgstealDirectNormal),
6493            "VMSTAT_PGSTEAL_DIRECT_MOVABLE" => Some(Self::VmstatPgstealDirectMovable),
6494            "VMSTAT_PGSCAN_KSWAPD_DMA" => Some(Self::VmstatPgscanKswapdDma),
6495            "VMSTAT_PGSCAN_KSWAPD_NORMAL" => Some(Self::VmstatPgscanKswapdNormal),
6496            "VMSTAT_PGSCAN_KSWAPD_MOVABLE" => Some(Self::VmstatPgscanKswapdMovable),
6497            "VMSTAT_PGSCAN_DIRECT_DMA" => Some(Self::VmstatPgscanDirectDma),
6498            "VMSTAT_PGSCAN_DIRECT_NORMAL" => Some(Self::VmstatPgscanDirectNormal),
6499            "VMSTAT_PGSCAN_DIRECT_MOVABLE" => Some(Self::VmstatPgscanDirectMovable),
6500            "VMSTAT_PGSCAN_DIRECT_THROTTLE" => Some(Self::VmstatPgscanDirectThrottle),
6501            "VMSTAT_PGINODESTEAL" => Some(Self::VmstatPginodesteal),
6502            "VMSTAT_SLABS_SCANNED" => Some(Self::VmstatSlabsScanned),
6503            "VMSTAT_KSWAPD_INODESTEAL" => Some(Self::VmstatKswapdInodesteal),
6504            "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY" => Some(Self::VmstatKswapdLowWmarkHitQuickly),
6505            "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY" => Some(Self::VmstatKswapdHighWmarkHitQuickly),
6506            "VMSTAT_PAGEOUTRUN" => Some(Self::VmstatPageoutrun),
6507            "VMSTAT_ALLOCSTALL" => Some(Self::VmstatAllocstall),
6508            "VMSTAT_PGROTATED" => Some(Self::VmstatPgrotated),
6509            "VMSTAT_DROP_PAGECACHE" => Some(Self::VmstatDropPagecache),
6510            "VMSTAT_DROP_SLAB" => Some(Self::VmstatDropSlab),
6511            "VMSTAT_PGMIGRATE_SUCCESS" => Some(Self::VmstatPgmigrateSuccess),
6512            "VMSTAT_PGMIGRATE_FAIL" => Some(Self::VmstatPgmigrateFail),
6513            "VMSTAT_COMPACT_MIGRATE_SCANNED" => Some(Self::VmstatCompactMigrateScanned),
6514            "VMSTAT_COMPACT_FREE_SCANNED" => Some(Self::VmstatCompactFreeScanned),
6515            "VMSTAT_COMPACT_ISOLATED" => Some(Self::VmstatCompactIsolated),
6516            "VMSTAT_COMPACT_STALL" => Some(Self::VmstatCompactStall),
6517            "VMSTAT_COMPACT_FAIL" => Some(Self::VmstatCompactFail),
6518            "VMSTAT_COMPACT_SUCCESS" => Some(Self::VmstatCompactSuccess),
6519            "VMSTAT_COMPACT_DAEMON_WAKE" => Some(Self::VmstatCompactDaemonWake),
6520            "VMSTAT_UNEVICTABLE_PGS_CULLED" => Some(Self::VmstatUnevictablePgsCulled),
6521            "VMSTAT_UNEVICTABLE_PGS_SCANNED" => Some(Self::VmstatUnevictablePgsScanned),
6522            "VMSTAT_UNEVICTABLE_PGS_RESCUED" => Some(Self::VmstatUnevictablePgsRescued),
6523            "VMSTAT_UNEVICTABLE_PGS_MLOCKED" => Some(Self::VmstatUnevictablePgsMlocked),
6524            "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED" => Some(Self::VmstatUnevictablePgsMunlocked),
6525            "VMSTAT_UNEVICTABLE_PGS_CLEARED" => Some(Self::VmstatUnevictablePgsCleared),
6526            "VMSTAT_UNEVICTABLE_PGS_STRANDED" => Some(Self::VmstatUnevictablePgsStranded),
6527            "VMSTAT_NR_ZSPAGES" => Some(Self::VmstatNrZspages),
6528            "VMSTAT_NR_ION_HEAP" => Some(Self::VmstatNrIonHeap),
6529            "VMSTAT_NR_GPU_HEAP" => Some(Self::VmstatNrGpuHeap),
6530            "VMSTAT_ALLOCSTALL_DMA" => Some(Self::VmstatAllocstallDma),
6531            "VMSTAT_ALLOCSTALL_MOVABLE" => Some(Self::VmstatAllocstallMovable),
6532            "VMSTAT_ALLOCSTALL_NORMAL" => Some(Self::VmstatAllocstallNormal),
6533            "VMSTAT_COMPACT_DAEMON_FREE_SCANNED" => Some(Self::VmstatCompactDaemonFreeScanned),
6534            "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED" => {
6535                Some(Self::VmstatCompactDaemonMigrateScanned)
6536            }
6537            "VMSTAT_NR_FASTRPC" => Some(Self::VmstatNrFastrpc),
6538            "VMSTAT_NR_INDIRECTLY_RECLAIMABLE" => Some(Self::VmstatNrIndirectlyReclaimable),
6539            "VMSTAT_NR_ION_HEAP_POOL" => Some(Self::VmstatNrIonHeapPool),
6540            "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE" => Some(Self::VmstatNrKernelMiscReclaimable),
6541            "VMSTAT_NR_SHADOW_CALL_STACK_BYTES" => Some(Self::VmstatNrShadowCallStackBytes),
6542            "VMSTAT_NR_SHMEM_HUGEPAGES" => Some(Self::VmstatNrShmemHugepages),
6543            "VMSTAT_NR_SHMEM_PMDMAPPED" => Some(Self::VmstatNrShmemPmdmapped),
6544            "VMSTAT_NR_UNRECLAIMABLE_PAGES" => Some(Self::VmstatNrUnreclaimablePages),
6545            "VMSTAT_NR_ZONE_ACTIVE_ANON" => Some(Self::VmstatNrZoneActiveAnon),
6546            "VMSTAT_NR_ZONE_ACTIVE_FILE" => Some(Self::VmstatNrZoneActiveFile),
6547            "VMSTAT_NR_ZONE_INACTIVE_ANON" => Some(Self::VmstatNrZoneInactiveAnon),
6548            "VMSTAT_NR_ZONE_INACTIVE_FILE" => Some(Self::VmstatNrZoneInactiveFile),
6549            "VMSTAT_NR_ZONE_UNEVICTABLE" => Some(Self::VmstatNrZoneUnevictable),
6550            "VMSTAT_NR_ZONE_WRITE_PENDING" => Some(Self::VmstatNrZoneWritePending),
6551            "VMSTAT_OOM_KILL" => Some(Self::VmstatOomKill),
6552            "VMSTAT_PGLAZYFREE" => Some(Self::VmstatPglazyfree),
6553            "VMSTAT_PGLAZYFREED" => Some(Self::VmstatPglazyfreed),
6554            "VMSTAT_PGREFILL" => Some(Self::VmstatPgrefill),
6555            "VMSTAT_PGSCAN_DIRECT" => Some(Self::VmstatPgscanDirect),
6556            "VMSTAT_PGSCAN_KSWAPD" => Some(Self::VmstatPgscanKswapd),
6557            "VMSTAT_PGSKIP_DMA" => Some(Self::VmstatPgskipDma),
6558            "VMSTAT_PGSKIP_MOVABLE" => Some(Self::VmstatPgskipMovable),
6559            "VMSTAT_PGSKIP_NORMAL" => Some(Self::VmstatPgskipNormal),
6560            "VMSTAT_PGSTEAL_DIRECT" => Some(Self::VmstatPgstealDirect),
6561            "VMSTAT_PGSTEAL_KSWAPD" => Some(Self::VmstatPgstealKswapd),
6562            "VMSTAT_SWAP_RA" => Some(Self::VmstatSwapRa),
6563            "VMSTAT_SWAP_RA_HIT" => Some(Self::VmstatSwapRaHit),
6564            "VMSTAT_WORKINGSET_RESTORE" => Some(Self::VmstatWorkingsetRestore),
6565            "VMSTAT_ALLOCSTALL_DEVICE" => Some(Self::VmstatAllocstallDevice),
6566            "VMSTAT_ALLOCSTALL_DMA32" => Some(Self::VmstatAllocstallDma32),
6567            "VMSTAT_BALLOON_DEFLATE" => Some(Self::VmstatBalloonDeflate),
6568            "VMSTAT_BALLOON_INFLATE" => Some(Self::VmstatBalloonInflate),
6569            "VMSTAT_BALLOON_MIGRATE" => Some(Self::VmstatBalloonMigrate),
6570            "VMSTAT_CMA_ALLOC_FAIL" => Some(Self::VmstatCmaAllocFail),
6571            "VMSTAT_CMA_ALLOC_SUCCESS" => Some(Self::VmstatCmaAllocSuccess),
6572            "VMSTAT_NR_FILE_HUGEPAGES" => Some(Self::VmstatNrFileHugepages),
6573            "VMSTAT_NR_FILE_PMDMAPPED" => Some(Self::VmstatNrFilePmdmapped),
6574            "VMSTAT_NR_FOLL_PIN_ACQUIRED" => Some(Self::VmstatNrFollPinAcquired),
6575            "VMSTAT_NR_FOLL_PIN_RELEASED" => Some(Self::VmstatNrFollPinReleased),
6576            "VMSTAT_NR_SEC_PAGE_TABLE_PAGES" => Some(Self::VmstatNrSecPageTablePages),
6577            "VMSTAT_NR_SHADOW_CALL_STACK" => Some(Self::VmstatNrShadowCallStack),
6578            "VMSTAT_NR_SWAPCACHED" => Some(Self::VmstatNrSwapcached),
6579            "VMSTAT_NR_THROTTLED_WRITTEN" => Some(Self::VmstatNrThrottledWritten),
6580            "VMSTAT_PGALLOC_DEVICE" => Some(Self::VmstatPgallocDevice),
6581            "VMSTAT_PGALLOC_DMA32" => Some(Self::VmstatPgallocDma32),
6582            "VMSTAT_PGDEMOTE_DIRECT" => Some(Self::VmstatPgdemoteDirect),
6583            "VMSTAT_PGDEMOTE_KSWAPD" => Some(Self::VmstatPgdemoteKswapd),
6584            "VMSTAT_PGREUSE" => Some(Self::VmstatPgreuse),
6585            "VMSTAT_PGSCAN_ANON" => Some(Self::VmstatPgscanAnon),
6586            "VMSTAT_PGSCAN_FILE" => Some(Self::VmstatPgscanFile),
6587            "VMSTAT_PGSKIP_DEVICE" => Some(Self::VmstatPgskipDevice),
6588            "VMSTAT_PGSKIP_DMA32" => Some(Self::VmstatPgskipDma32),
6589            "VMSTAT_PGSTEAL_ANON" => Some(Self::VmstatPgstealAnon),
6590            "VMSTAT_PGSTEAL_FILE" => Some(Self::VmstatPgstealFile),
6591            "VMSTAT_THP_COLLAPSE_ALLOC" => Some(Self::VmstatThpCollapseAlloc),
6592            "VMSTAT_THP_COLLAPSE_ALLOC_FAILED" => Some(Self::VmstatThpCollapseAllocFailed),
6593            "VMSTAT_THP_DEFERRED_SPLIT_PAGE" => Some(Self::VmstatThpDeferredSplitPage),
6594            "VMSTAT_THP_FAULT_ALLOC" => Some(Self::VmstatThpFaultAlloc),
6595            "VMSTAT_THP_FAULT_FALLBACK" => Some(Self::VmstatThpFaultFallback),
6596            "VMSTAT_THP_FAULT_FALLBACK_CHARGE" => Some(Self::VmstatThpFaultFallbackCharge),
6597            "VMSTAT_THP_FILE_ALLOC" => Some(Self::VmstatThpFileAlloc),
6598            "VMSTAT_THP_FILE_FALLBACK" => Some(Self::VmstatThpFileFallback),
6599            "VMSTAT_THP_FILE_FALLBACK_CHARGE" => Some(Self::VmstatThpFileFallbackCharge),
6600            "VMSTAT_THP_FILE_MAPPED" => Some(Self::VmstatThpFileMapped),
6601            "VMSTAT_THP_MIGRATION_FAIL" => Some(Self::VmstatThpMigrationFail),
6602            "VMSTAT_THP_MIGRATION_SPLIT" => Some(Self::VmstatThpMigrationSplit),
6603            "VMSTAT_THP_MIGRATION_SUCCESS" => Some(Self::VmstatThpMigrationSuccess),
6604            "VMSTAT_THP_SCAN_EXCEED_NONE_PTE" => Some(Self::VmstatThpScanExceedNonePte),
6605            "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE" => Some(Self::VmstatThpScanExceedSharePte),
6606            "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE" => Some(Self::VmstatThpScanExceedSwapPte),
6607            "VMSTAT_THP_SPLIT_PAGE" => Some(Self::VmstatThpSplitPage),
6608            "VMSTAT_THP_SPLIT_PAGE_FAILED" => Some(Self::VmstatThpSplitPageFailed),
6609            "VMSTAT_THP_SPLIT_PMD" => Some(Self::VmstatThpSplitPmd),
6610            "VMSTAT_THP_SWPOUT" => Some(Self::VmstatThpSwpout),
6611            "VMSTAT_THP_SWPOUT_FALLBACK" => Some(Self::VmstatThpSwpoutFallback),
6612            "VMSTAT_THP_ZERO_PAGE_ALLOC" => Some(Self::VmstatThpZeroPageAlloc),
6613            "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED" => Some(Self::VmstatThpZeroPageAllocFailed),
6614            "VMSTAT_VMA_LOCK_ABORT" => Some(Self::VmstatVmaLockAbort),
6615            "VMSTAT_VMA_LOCK_MISS" => Some(Self::VmstatVmaLockMiss),
6616            "VMSTAT_VMA_LOCK_RETRY" => Some(Self::VmstatVmaLockRetry),
6617            "VMSTAT_VMA_LOCK_SUCCESS" => Some(Self::VmstatVmaLockSuccess),
6618            "VMSTAT_WORKINGSET_ACTIVATE_ANON" => Some(Self::VmstatWorkingsetActivateAnon),
6619            "VMSTAT_WORKINGSET_ACTIVATE_FILE" => Some(Self::VmstatWorkingsetActivateFile),
6620            "VMSTAT_WORKINGSET_NODES" => Some(Self::VmstatWorkingsetNodes),
6621            "VMSTAT_WORKINGSET_REFAULT_ANON" => Some(Self::VmstatWorkingsetRefaultAnon),
6622            "VMSTAT_WORKINGSET_REFAULT_FILE" => Some(Self::VmstatWorkingsetRefaultFile),
6623            "VMSTAT_WORKINGSET_RESTORE_ANON" => Some(Self::VmstatWorkingsetRestoreAnon),
6624            "VMSTAT_WORKINGSET_RESTORE_FILE" => Some(Self::VmstatWorkingsetRestoreFile),
6625            _ => None,
6626        }
6627    }
6628}
6629/// This file defines the configuration for the Linux /proc poller data source,
6630/// which injects counters in the trace.
6631/// Counters that are needed in the trace must be explicitly listed in the
6632/// *_counters fields. This is to avoid spamming the trace with all counters
6633/// at all times.
6634/// The sampling rate is configurable. All polling rates (*_period_ms) need
6635/// to be integer multiples of each other.
6636/// OK:     \[10ms, 10ms, 10ms\],  \[10ms, 20ms, 10ms\],  \[10ms, 20ms, 60ms\]
6637/// Not OK: \[10ms, 10ms, 11ms\],  \[10ms, 15ms, 20ms\]
6638#[derive(Clone, PartialEq, ::prost::Message)]
6639pub struct SysStatsConfig {
6640    /// Polls /proc/meminfo every X ms, if non-zero.
6641    /// This is required to be > 10ms to avoid excessive CPU usage.
6642    /// Cost: 0.3 ms \[read\] + 0.07 ms \[parse + trace injection\]
6643    #[prost(uint32, optional, tag = "1")]
6644    pub meminfo_period_ms: ::core::option::Option<u32>,
6645    /// If empty all known counters are reported. Otherwise, only the counters
6646    /// specified below are reported.
6647    #[prost(enumeration = "MeminfoCounters", repeated, packed = "false", tag = "2")]
6648    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
6649    /// Polls /proc/vmstat every X ms, if non-zero.
6650    /// This is required to be > 10ms to avoid excessive CPU usage.
6651    /// Cost: 0.2 ms \[read\] + 0.3 ms \[parse + trace injection\]
6652    #[prost(uint32, optional, tag = "3")]
6653    pub vmstat_period_ms: ::core::option::Option<u32>,
6654    #[prost(enumeration = "VmstatCounters", repeated, packed = "false", tag = "4")]
6655    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
6656    /// Pols /proc/stat every X ms, if non-zero.
6657    /// This is required to be > 10ms to avoid excessive CPU usage.
6658    /// Cost: 4.1 ms \[read\] + 1.9 ms \[parse + trace injection\]
6659    #[prost(uint32, optional, tag = "5")]
6660    pub stat_period_ms: ::core::option::Option<u32>,
6661    #[prost(
6662        enumeration = "sys_stats_config::StatCounters",
6663        repeated,
6664        packed = "false",
6665        tag = "6"
6666    )]
6667    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
6668    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
6669    /// This is required to be > 10ms to avoid excessive CPU usage.
6670    /// This option can be used to record unchanging values.
6671    /// Updates from frequency changes can come from ftrace/set_clock_rate.
6672    #[prost(uint32, optional, tag = "7")]
6673    pub devfreq_period_ms: ::core::option::Option<u32>,
6674    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
6675    /// This is required to be > 10ms to avoid excessive CPU usage.
6676    #[prost(uint32, optional, tag = "8")]
6677    pub cpufreq_period_ms: ::core::option::Option<u32>,
6678    /// Polls /proc/buddyinfo every X ms, if non-zero.
6679    /// This is required to be > 10ms to avoid excessive CPU usage.
6680    #[prost(uint32, optional, tag = "9")]
6681    pub buddyinfo_period_ms: ::core::option::Option<u32>,
6682    /// Polls /proc/diskstats every X ms, if non-zero.
6683    /// This is required to be > 10ms to avoid excessive CPU usage.
6684    #[prost(uint32, optional, tag = "10")]
6685    pub diskstat_period_ms: ::core::option::Option<u32>,
6686    /// Polls /proc/pressure/* every X ms, if non-zero.
6687    /// This is required to be > 10ms to avoid excessive CPU usage.
6688    #[prost(uint32, optional, tag = "11")]
6689    pub psi_period_ms: ::core::option::Option<u32>,
6690}
6691/// Nested message and enum types in `SysStatsConfig`.
6692pub mod sys_stats_config {
6693    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6694    #[repr(i32)]
6695    pub enum StatCounters {
6696        StatUnspecified = 0,
6697        StatCpuTimes = 1,
6698        StatIrqCounts = 2,
6699        StatSoftirqCounts = 3,
6700        StatForkCount = 4,
6701    }
6702    impl StatCounters {
6703        /// String value of the enum field names used in the ProtoBuf definition.
6704        ///
6705        /// The values are not transformed in any way and thus are considered stable
6706        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6707        pub fn as_str_name(&self) -> &'static str {
6708            match self {
6709                Self::StatUnspecified => "STAT_UNSPECIFIED",
6710                Self::StatCpuTimes => "STAT_CPU_TIMES",
6711                Self::StatIrqCounts => "STAT_IRQ_COUNTS",
6712                Self::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
6713                Self::StatForkCount => "STAT_FORK_COUNT",
6714            }
6715        }
6716        /// Creates an enum from field names used in the ProtoBuf definition.
6717        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6718            match value {
6719                "STAT_UNSPECIFIED" => Some(Self::StatUnspecified),
6720                "STAT_CPU_TIMES" => Some(Self::StatCpuTimes),
6721                "STAT_IRQ_COUNTS" => Some(Self::StatIrqCounts),
6722                "STAT_SOFTIRQ_COUNTS" => Some(Self::StatSoftirqCounts),
6723                "STAT_FORK_COUNT" => Some(Self::StatForkCount),
6724                _ => None,
6725            }
6726        }
6727    }
6728}
6729/// The configuration for a fake producer used in tests.
6730#[derive(Clone, PartialEq, ::prost::Message)]
6731pub struct TestConfig {
6732    /// The number of messages the fake producer should send.
6733    #[prost(uint32, optional, tag = "1")]
6734    pub message_count: ::core::option::Option<u32>,
6735    /// The maximum number of messages which should be sent each second.
6736    /// The actual obserced speed may be lower if the producer is unable to
6737    /// work fast enough.
6738    /// If this is zero or unset, the producer will send as fast as possible.
6739    #[prost(uint32, optional, tag = "2")]
6740    pub max_messages_per_second: ::core::option::Option<u32>,
6741    /// The seed value for a simple multiplicative congruential pseudo-random
6742    /// number sequence.
6743    #[prost(uint32, optional, tag = "3")]
6744    pub seed: ::core::option::Option<u32>,
6745    /// The size of each message in bytes. Should be greater than or equal 5 to
6746    /// account for the number of bytes needed to encode the random number and a
6747    /// null byte for the string.
6748    #[prost(uint32, optional, tag = "4")]
6749    pub message_size: ::core::option::Option<u32>,
6750    /// Whether the producer should send a event batch when the data source is
6751    /// is initially registered.
6752    #[prost(bool, optional, tag = "5")]
6753    pub send_batch_on_register: ::core::option::Option<bool>,
6754    #[prost(message, optional, tag = "6")]
6755    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
6756}
6757/// Nested message and enum types in `TestConfig`.
6758pub mod test_config {
6759    #[derive(Clone, PartialEq, ::prost::Message)]
6760    pub struct DummyFields {
6761        #[prost(uint32, optional, tag = "1")]
6762        pub field_uint32: ::core::option::Option<u32>,
6763        #[prost(int32, optional, tag = "2")]
6764        pub field_int32: ::core::option::Option<i32>,
6765        #[prost(uint64, optional, tag = "3")]
6766        pub field_uint64: ::core::option::Option<u64>,
6767        #[prost(int64, optional, tag = "4")]
6768        pub field_int64: ::core::option::Option<i64>,
6769        #[prost(fixed64, optional, tag = "5")]
6770        pub field_fixed64: ::core::option::Option<u64>,
6771        #[prost(sfixed64, optional, tag = "6")]
6772        pub field_sfixed64: ::core::option::Option<i64>,
6773        #[prost(fixed32, optional, tag = "7")]
6774        pub field_fixed32: ::core::option::Option<u32>,
6775        #[prost(sfixed32, optional, tag = "8")]
6776        pub field_sfixed32: ::core::option::Option<i32>,
6777        #[prost(double, optional, tag = "9")]
6778        pub field_double: ::core::option::Option<f64>,
6779        #[prost(float, optional, tag = "10")]
6780        pub field_float: ::core::option::Option<f32>,
6781        #[prost(sint64, optional, tag = "11")]
6782        pub field_sint64: ::core::option::Option<i64>,
6783        #[prost(sint32, optional, tag = "12")]
6784        pub field_sint32: ::core::option::Option<i32>,
6785        #[prost(string, optional, tag = "13")]
6786        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
6787        #[prost(bytes = "vec", optional, tag = "14")]
6788        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6789    }
6790}
6791/// The following fields define the set of enabled trace categories. Each list
6792/// item is a glob.
6793///
6794/// To determine if category is enabled, it is checked against the filters in
6795/// the following order:
6796///
6797///    1. Exact matches in enabled categories.
6798///    2. Exact matches in enabled tags.
6799///    3. Exact matches in disabled categories.
6800///    4. Exact matches in disabled tags.
6801///    5. Pattern matches in enabled categories.
6802///    6. Pattern matches in enabled tags.
6803///    7. Pattern matches in disabled categories.
6804///    8. Pattern matches in disabled tags.
6805///
6806/// If none of the steps produced a match:
6807///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
6808///   default.
6809///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
6810///
6811/// Examples:
6812///
6813///   - To enable all non-slow/debug categories:
6814///
6815///        enabled_categories: "*"
6816///
6817///   - To enable specific categories:
6818///
6819///        disabled_categories: "*"
6820///        enabled_categories: "my_category"
6821///        enabled_categories: "my_category2"
6822///
6823///   - To enable only categories with a specific tag:
6824///
6825///        disabled_tags: "*"
6826///        enabled_tags: "my_tag"
6827///
6828#[derive(Clone, PartialEq, ::prost::Message)]
6829pub struct TrackEventConfig {
6830    /// Default: \[\]
6831    #[prost(string, repeated, tag = "1")]
6832    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6833    /// Default: \[\]
6834    #[prost(string, repeated, tag = "2")]
6835    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6836    /// Default: \["slow", "debug"\]
6837    #[prost(string, repeated, tag = "3")]
6838    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6839    /// Default: \[\]
6840    #[prost(string, repeated, tag = "4")]
6841    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6842    /// Default: false (i.e. enabled by default)
6843    #[prost(bool, optional, tag = "5")]
6844    pub disable_incremental_timestamps: ::core::option::Option<bool>,
6845    /// Allows to specify a custom unit different than the default (ns).
6846    /// Also affects thread timestamps if enable_thread_time_sampling = true.
6847    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
6848    /// 3000 ns = 3 us.
6849    /// Default: 1 (if unset, it should be read as 1).
6850    #[prost(uint64, optional, tag = "6")]
6851    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
6852    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
6853    /// When true, any debug annotations provided as arguments to the
6854    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
6855    /// still be emitted even if set to true.
6856    #[prost(bool, optional, tag = "7")]
6857    pub filter_debug_annotations: ::core::option::Option<bool>,
6858    /// Default : false (i.e. disabled)
6859    /// When true, the SDK samples and emits the current thread time counter value
6860    /// for each event on the current thread's track. This value represents the
6861    /// total CPU time consumed by that thread since its creation. Note that if a
6862    /// thread is not scheduled by OS for some duration, that time won't be
6863    /// included in thread_time.
6864    /// Learn more : "CLOCK_THREAD_CPUTIME_ID" flag at
6865    /// <https://linux.die.net/man/3/clock_gettime>
6866    #[prost(bool, optional, tag = "8")]
6867    pub enable_thread_time_sampling: ::core::option::Option<bool>,
6868    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
6869    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
6870    /// out.
6871    #[prost(bool, optional, tag = "9")]
6872    pub filter_dynamic_event_names: ::core::option::Option<bool>,
6873}
6874/// This data-source does a one-off recording of system information when
6875/// the trace starts.
6876/// Currently this includes:
6877/// - Values of
6878/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
6879/// datasource has no configuration options at present.
6880#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6881pub struct SystemInfoConfig {}
6882/// The configuration that is passed to each data source when starting tracing.
6883/// Next id: 130
6884#[derive(Clone, PartialEq, ::prost::Message)]
6885pub struct DataSourceConfig {
6886    /// Data source unique name, e.g., "linux.ftrace". This must match
6887    /// the name passed by the data source when it registers (see
6888    /// RegisterDataSource()).
6889    #[prost(string, optional, tag = "1")]
6890    pub name: ::core::option::Option<::prost::alloc::string::String>,
6891    /// The index of the logging buffer where TracePacket(s) will be stored.
6892    /// This field doesn't make a major difference for the Producer(s). The final
6893    /// logging buffers, in fact, are completely owned by the Service. We just ask
6894    /// the Producer to copy this number into the chunk headers it emits, so that
6895    /// the Service can quickly identify the buffer where to move the chunks into
6896    /// without expensive lookups on its fastpath.
6897    #[prost(uint32, optional, tag = "2")]
6898    pub target_buffer: ::core::option::Option<u32>,
6899    /// Set by the service to indicate the duration of the trace.
6900    /// DO NOT SET in consumer as this will be overridden by the service.
6901    #[prost(uint32, optional, tag = "3")]
6902    pub trace_duration_ms: ::core::option::Option<u32>,
6903    /// If true, |trace_duration_ms| should count also time in suspend. This
6904    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
6905    #[prost(bool, optional, tag = "122")]
6906    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
6907    /// Set by the service to indicate how long it waits after StopDataSource.
6908    /// DO NOT SET in consumer as this will be overridden by the service.
6909    #[prost(uint32, optional, tag = "7")]
6910    pub stop_timeout_ms: ::core::option::Option<u32>,
6911    /// Set by the service to indicate whether this tracing session has extra
6912    /// guardrails.
6913    /// DO NOT SET in consumer as this will be overridden by the service.
6914    #[prost(bool, optional, tag = "6")]
6915    pub enable_extra_guardrails: ::core::option::Option<bool>,
6916    /// Set by the service to indicate which user initiated this trace.
6917    /// DO NOT SET in consumer as this will be overridden by the service.
6918    #[prost(
6919        enumeration = "data_source_config::SessionInitiator",
6920        optional,
6921        tag = "8"
6922    )]
6923    pub session_initiator: ::core::option::Option<i32>,
6924    /// Set by the service to indicate which tracing session the data source
6925    /// belongs to. The intended use case for this is checking if two data sources,
6926    /// one of which produces metadata for the other one, belong to the same trace
6927    /// session and hence should be linked together.
6928    /// This field was introduced in Aug 2018 after Android P.
6929    /// DO NOT SET in consumer as this will be overridden by the service.
6930    #[prost(uint64, optional, tag = "4")]
6931    pub tracing_session_id: ::core::option::Option<u64>,
6932    /// Data source name: linux.ftrace
6933    #[prost(message, optional, tag = "100")]
6934    pub ftrace_config: ::core::option::Option<FtraceConfig>,
6935    /// Data source name: linux.inode_file_map
6936    #[prost(message, optional, tag = "102")]
6937    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
6938    /// Data source name: linux.process_stats
6939    #[prost(message, optional, tag = "103")]
6940    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
6941    /// Data source name: linux.sys_stats
6942    #[prost(message, optional, tag = "104")]
6943    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
6944    /// Data source name: android.heapprofd
6945    /// Introduced in Android 10.
6946    #[prost(message, optional, tag = "105")]
6947    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
6948    /// Data source name: android.java_hprof
6949    /// Introduced in Android 11.
6950    #[prost(message, optional, tag = "110")]
6951    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
6952    /// Data source name: android.power
6953    #[prost(message, optional, tag = "106")]
6954    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
6955    /// Data source name: android.log
6956    #[prost(message, optional, tag = "107")]
6957    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
6958    /// TODO(fmayer): Add data source name for this.
6959    #[prost(message, optional, tag = "108")]
6960    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
6961    /// Data source name: android.game_interventions
6962    #[prost(message, optional, tag = "116")]
6963    pub android_game_intervention_list_config:
6964        ::core::option::Option<AndroidGameInterventionListConfig>,
6965    /// Data source name: android.packages_list
6966    #[prost(message, optional, tag = "109")]
6967    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
6968    /// Data source name: linux.perf
6969    #[prost(message, optional, tag = "111")]
6970    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
6971    /// Data source name: vulkan.memory_tracker
6972    #[prost(message, optional, tag = "112")]
6973    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
6974    /// Data source name: track_event
6975    #[prost(message, optional, tag = "113")]
6976    pub track_event_config: ::core::option::Option<TrackEventConfig>,
6977    /// Data source name: android.polled_state
6978    #[prost(message, optional, tag = "114")]
6979    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
6980    /// Data source name: android.system_property
6981    #[prost(message, optional, tag = "118")]
6982    pub android_system_property_config: ::core::option::Option<AndroidSystemPropertyConfig>,
6983    /// Data source name: android.statsd
6984    #[prost(message, optional, tag = "117")]
6985    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
6986    /// Data source name: linux.system_info
6987    #[prost(message, optional, tag = "119")]
6988    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
6989    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
6990    /// avoid proto serialization and de-serialization there because that would
6991    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
6992    /// C++ class for it so it can pass around plain C++ objets.
6993    #[prost(message, optional, tag = "101")]
6994    pub chrome_config: ::core::option::Option<ChromeConfig>,
6995    /// Data source name: code.v8.dev
6996    #[prost(message, optional, tag = "127")]
6997    pub v8_config: ::core::option::Option<V8Config>,
6998    /// If an interceptor is specified here, packets for this data source will be
6999    /// rerouted to the interceptor instead of the main trace buffer. This can be
7000    /// used, for example, to write trace data into ETW or for logging trace points
7001    /// to the console.
7002    ///
7003    /// Note that interceptors are only supported by data sources registered
7004    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
7005    /// traced_probes) may not support interception.
7006    #[prost(message, optional, tag = "115")]
7007    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
7008    /// Data source name: android.network_packets.
7009    /// Introduced in Android 14 (U).
7010    #[prost(message, optional, tag = "120")]
7011    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
7012    /// Data source name: android.surfaceflinger.layers
7013    #[prost(message, optional, tag = "121")]
7014    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
7015    /// Data source name: android.surfaceflinger.transactions
7016    #[prost(message, optional, tag = "123")]
7017    pub surfaceflinger_transactions_config:
7018        ::core::option::Option<SurfaceFlingerTransactionsConfig>,
7019    /// Data source name: android.sdk_sysprop_guard
7020    /// Introduced in Android 14 (U) QPR1.
7021    #[prost(message, optional, tag = "124")]
7022    pub android_sdk_sysprop_guard_config: ::core::option::Option<AndroidSdkSyspropGuardConfig>,
7023    /// Data source name: windows.etw
7024    #[prost(message, optional, tag = "125")]
7025    pub etw_config: ::core::option::Option<EtwConfig>,
7026    /// Data source name: android.protolog
7027    #[prost(message, optional, tag = "126")]
7028    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
7029    /// Data source name: android.input.inputevent
7030    #[prost(message, optional, tag = "128")]
7031    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
7032    /// Data source name: android.pixel.modem
7033    #[prost(message, optional, tag = "129")]
7034    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
7035    /// This is a fallback mechanism to send a free-form text config to the
7036    /// producer. In theory this should never be needed. All the code that
7037    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
7038    /// the trace config proto and propagate unknown fields. However, if anything
7039    /// in the pipeline (client or backend) ends up breaking this forward compat
7040    /// plan, this field will become the escape hatch to allow future data sources
7041    /// to get some meaningful configuration.
7042    #[prost(string, optional, tag = "1000")]
7043    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
7044    /// This field is only used for testing.
7045    #[prost(message, optional, tag = "1001")]
7046    pub for_testing: ::core::option::Option<TestConfig>,
7047}
7048/// Nested message and enum types in `DataSourceConfig`.
7049pub mod data_source_config {
7050    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7051    #[repr(i32)]
7052    pub enum SessionInitiator {
7053        Unspecified = 0,
7054        /// This trace was initiated from a trusted system app has DUMP and
7055        /// USAGE_STATS permission. This system app is expected to not expose the
7056        /// trace to the user of the device.
7057        /// This is determined by checking the UID initiating the trace.
7058        TrustedSystem = 1,
7059    }
7060    impl SessionInitiator {
7061        /// String value of the enum field names used in the ProtoBuf definition.
7062        ///
7063        /// The values are not transformed in any way and thus are considered stable
7064        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7065        pub fn as_str_name(&self) -> &'static str {
7066            match self {
7067                Self::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
7068                Self::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
7069            }
7070        }
7071        /// Creates an enum from field names used in the ProtoBuf definition.
7072        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7073            match value {
7074                "SESSION_INITIATOR_UNSPECIFIED" => Some(Self::Unspecified),
7075                "SESSION_INITIATOR_TRUSTED_SYSTEM" => Some(Self::TrustedSystem),
7076                _ => None,
7077            }
7078        }
7079    }
7080}
7081/// The overall config that is used when starting a new tracing session through
7082/// ProducerPort::StartTracing().
7083/// It contains the general config for the logging buffer(s) and the configs for
7084/// all the data source being enabled.
7085///
7086/// Next id: 40.
7087#[derive(Clone, PartialEq, ::prost::Message)]
7088pub struct TraceConfig {
7089    #[prost(message, repeated, tag = "1")]
7090    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
7091    #[prost(message, repeated, tag = "2")]
7092    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
7093    #[prost(message, optional, tag = "20")]
7094    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
7095    /// If specified, the trace will be stopped |duration_ms| after starting.
7096    /// This does *not* count the time the system is suspended, so we will run
7097    /// for duration_ms of system activity, not wall time.
7098    ///
7099    /// However in case of traces with triggers, see
7100    /// TriggerConfig.trigger_timeout_ms instead.
7101    #[prost(uint32, optional, tag = "3")]
7102    pub duration_ms: ::core::option::Option<u32>,
7103    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
7104    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
7105    /// Linux/Android, no-op on other platforms. This is used when dealing with
7106    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
7107    /// wall-time, making them more likely to hit device reboots (and hence loss).
7108    /// This option also changes consistently the semantic of
7109    /// TriggerConfig.stop_delay_ms.
7110    #[prost(bool, optional, tag = "36")]
7111    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
7112    /// This is set when --dropbox is passed to the Perfetto command line client
7113    /// and enables guardrails that limit resource usage for traces requested
7114    /// by statsd.
7115    #[prost(bool, optional, tag = "4")]
7116    pub enable_extra_guardrails: ::core::option::Option<bool>,
7117    /// Reject producers that are not running under the same UID as the tracing
7118    /// service.
7119    #[prost(
7120        enumeration = "trace_config::LockdownModeOperation",
7121        optional,
7122        tag = "5"
7123    )]
7124    pub lockdown_mode: ::core::option::Option<i32>,
7125    #[prost(message, repeated, tag = "6")]
7126    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
7127    /// Statsd-specific metadata.
7128    #[prost(message, optional, tag = "7")]
7129    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
7130    /// When true && |output_path| is empty, the EnableTracing() request must
7131    /// provide a file descriptor. The service will then periodically read packets
7132    /// out of the trace buffer and store it into the passed file.
7133    /// If |output_path| is not empty no fd should be passed, the service
7134    /// will create a new file and write into that (see comment below).
7135    #[prost(bool, optional, tag = "8")]
7136    pub write_into_file: ::core::option::Option<bool>,
7137    /// This must point to a non-existing file. If the file exists the service
7138    /// will NOT overwrite and will fail instead as a security precaution.
7139    /// On Android, when this is used with the system traced, the path must be
7140    /// within /data/misc/perfetto-traces/ or the trace will fail.
7141    /// This option has been introduced in Android R. Before R write_into_file
7142    /// can be used only with the "pass a file descriptor over IPC" mode.
7143    #[prost(string, optional, tag = "29")]
7144    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
7145    /// Optional. If non-zero tunes the write period. A min value of 100ms is
7146    /// enforced (i.e. smaller values are ignored).
7147    #[prost(uint32, optional, tag = "9")]
7148    pub file_write_period_ms: ::core::option::Option<u32>,
7149    /// Optional. When non zero the periodic write stops once at most X bytes
7150    /// have been written into the file. Tracing is disabled when this limit is
7151    /// reached, even if |duration_ms| has not been reached yet.
7152    #[prost(uint64, optional, tag = "10")]
7153    pub max_file_size_bytes: ::core::option::Option<u64>,
7154    #[prost(message, optional, tag = "11")]
7155    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
7156    /// When true, data sources are not started until an explicit call to
7157    /// StartTracing() on the consumer port. This is to support early
7158    /// initialization and fast trace triggering. This can be used only when the
7159    /// Consumer explicitly triggers the StartTracing() method.
7160    /// This should not be used in a remote trace config via statsd, doing so will
7161    /// result in a hung trace session.
7162    #[prost(bool, optional, tag = "12")]
7163    pub deferred_start: ::core::option::Option<bool>,
7164    /// When set, it periodically issues a Flush() to all data source, forcing them
7165    /// to commit their data into the tracing service. This can be used for
7166    /// quasi-real-time streaming mode and to guarantee some partial ordering of
7167    /// events in the trace in windows of X ms.
7168    #[prost(uint32, optional, tag = "13")]
7169    pub flush_period_ms: ::core::option::Option<u32>,
7170    /// Wait for this long for producers to acknowledge flush requests.
7171    /// Default 5s.
7172    #[prost(uint32, optional, tag = "14")]
7173    pub flush_timeout_ms: ::core::option::Option<u32>,
7174    /// Wait for this long for producers to acknowledge stop requests.
7175    /// Default 5s.
7176    #[prost(uint32, optional, tag = "23")]
7177    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
7178    /// Android-only. If set, sends an intent to the Traceur system app when the
7179    /// trace ends to notify it about the trace readiness.
7180    #[prost(bool, optional, tag = "16")]
7181    pub notify_traceur: ::core::option::Option<bool>,
7182    /// This field was introduced in Android S.
7183    /// Android-only. If set to a value > 0, marks the trace session as a candidate
7184    /// for being attached to a bugreport. This field effectively acts as a z-index
7185    /// for bugreports. When Android's dumpstate runs perfetto
7186    /// --save-for-bugreport, traced will pick the tracing session with the highest
7187    /// score (score <= 0 is ignored) and:
7188    /// On Android S, T:  will steal its contents, save the trace into
7189    ///      a known path and stop prematurely.
7190    /// On Android U+: will create a read-only snapshot and save that into a known
7191    ///      path, without stoppin the original tracing session.
7192    /// When this field is set the tracing session becomes eligible to be cloned
7193    /// by other UIDs.
7194    #[prost(int32, optional, tag = "30")]
7195    pub bugreport_score: ::core::option::Option<i32>,
7196    /// When set, defines name of the file that will be saved under
7197    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
7198    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
7199    /// starting from the highest `bugreport_score`.
7200    /// Introduced in v42 / Android V.
7201    #[prost(string, optional, tag = "38")]
7202    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
7203    #[prost(message, optional, tag = "17")]
7204    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
7205    /// When this is non-empty the perfetto command line tool will ignore the rest
7206    /// of this TraceConfig and instead connect to the perfetto service as a
7207    /// producer and send these triggers, potentially stopping or starting traces
7208    /// that were previous configured to use a TriggerConfig.
7209    #[prost(string, repeated, tag = "18")]
7210    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7211    #[prost(message, optional, tag = "21")]
7212    pub incremental_state_config: ::core::option::Option<trace_config::IncrementalStateConfig>,
7213    /// Additional guardrail used by the Perfetto command line client.
7214    /// On user builds when --dropbox is set perfetto will refuse to trace unless
7215    /// this is also set.
7216    /// Added in Q.
7217    #[prost(bool, optional, tag = "19")]
7218    pub allow_user_build_tracing: ::core::option::Option<bool>,
7219    /// If set the tracing service will ensure there is at most one tracing session
7220    /// with this key.
7221    #[prost(string, optional, tag = "22")]
7222    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
7223    #[prost(enumeration = "trace_config::CompressionType", optional, tag = "24")]
7224    pub compression_type: ::core::option::Option<i32>,
7225    #[prost(message, optional, tag = "25")]
7226    pub incident_report_config: ::core::option::Option<trace_config::IncidentReportConfig>,
7227    /// Android-only. Not for general use. If specified, sets the logging to statsd
7228    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
7229    /// this to enabled (if not explicitly set in the config) when specifying
7230    /// --upload.
7231    #[prost(enumeration = "trace_config::StatsdLogging", optional, tag = "31")]
7232    pub statsd_logging: ::core::option::Option<i32>,
7233    /// An identifier clients can use to tie this trace to other logging.
7234    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
7235    /// Trace UUID. If this field is set, the tracing service will respect the
7236    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
7237    /// gap-less snapshotting is not used.
7238    #[deprecated]
7239    #[prost(int64, optional, tag = "27")]
7240    pub trace_uuid_msb: ::core::option::Option<i64>,
7241    #[deprecated]
7242    #[prost(int64, optional, tag = "28")]
7243    pub trace_uuid_lsb: ::core::option::Option<i64>,
7244    #[prost(message, optional, tag = "33")]
7245    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
7246    #[prost(message, optional, tag = "34")]
7247    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
7248    #[prost(message, optional, tag = "35")]
7249    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
7250    #[prost(message, repeated, tag = "39")]
7251    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
7252}
7253/// Nested message and enum types in `TraceConfig`.
7254pub mod trace_config {
7255    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
7256    pub struct BufferConfig {
7257        #[prost(uint32, optional, tag = "1")]
7258        pub size_kb: ::core::option::Option<u32>,
7259        #[prost(enumeration = "buffer_config::FillPolicy", optional, tag = "4")]
7260        pub fill_policy: ::core::option::Option<i32>,
7261        /// When true the buffer is moved (rather than copied) onto the cloned
7262        /// session, and an empty buffer of the same size is allocated in the source
7263        /// tracing session. This feature will likely get deprecated in the future.
7264        /// It been introduced mainly to support the surfaceflinger snapshot dump
7265        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
7266        /// that case we don't want to retain another in-memory copy of the buffer.
7267        #[prost(bool, optional, tag = "5")]
7268        pub transfer_on_clone: ::core::option::Option<bool>,
7269        /// Used in conjuction with transfer_on_clone. When true the buffer is
7270        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
7271        /// that if the data source took too long to write the data in a previous
7272        /// clone-related flush, we don't end up with a mixture of leftovers from
7273        /// the previous write and new data.
7274        #[prost(bool, optional, tag = "6")]
7275        pub clear_before_clone: ::core::option::Option<bool>,
7276    }
7277    /// Nested message and enum types in `BufferConfig`.
7278    pub mod buffer_config {
7279        #[derive(
7280            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
7281        )]
7282        #[repr(i32)]
7283        pub enum FillPolicy {
7284            Unspecified = 0,
7285            /// Default behavior. The buffer operates as a conventional ring buffer.
7286            /// If the writer is faster than the reader (or if the reader reads only
7287            /// after tracing is stopped) newly written packets will overwrite old
7288            /// packets.
7289            RingBuffer = 1,
7290            /// Behaves like RING_BUFFER as long as there is space in the buffer or
7291            /// the reader catches up with the writer. As soon as the writer hits
7292            /// an unread chunk, it stops accepting new data in the buffer.
7293            Discard = 2,
7294        }
7295        impl FillPolicy {
7296            /// String value of the enum field names used in the ProtoBuf definition.
7297            ///
7298            /// The values are not transformed in any way and thus are considered stable
7299            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7300            pub fn as_str_name(&self) -> &'static str {
7301                match self {
7302                    Self::Unspecified => "UNSPECIFIED",
7303                    Self::RingBuffer => "RING_BUFFER",
7304                    Self::Discard => "DISCARD",
7305                }
7306            }
7307            /// Creates an enum from field names used in the ProtoBuf definition.
7308            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7309                match value {
7310                    "UNSPECIFIED" => Some(Self::Unspecified),
7311                    "RING_BUFFER" => Some(Self::RingBuffer),
7312                    "DISCARD" => Some(Self::Discard),
7313                    _ => None,
7314                }
7315            }
7316        }
7317    }
7318    #[derive(Clone, PartialEq, ::prost::Message)]
7319    pub struct DataSource {
7320        /// Filters and data-source specific config. It contains also the unique name
7321        /// of the data source, the one passed in the  DataSourceDescriptor when they
7322        /// register on the service.
7323        #[prost(message, optional, tag = "1")]
7324        pub config: ::core::option::Option<super::DataSourceConfig>,
7325        /// Optional. If multiple producers (~processes) expose the same data source
7326        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
7327        /// the data source is enabled only for producers whose names match any of
7328        /// the filters.
7329        /// |producer_name_filter| has to be an exact match, while
7330        /// |producer_name_regex_filter| is a regular expression.
7331        /// This allows to enable a data source only for specific processes.
7332        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
7333        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
7334        #[prost(string, repeated, tag = "2")]
7335        pub producer_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7336        #[prost(string, repeated, tag = "3")]
7337        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7338    }
7339    /// Config for disabling builtin data sources in the tracing service.
7340    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
7341    pub struct BuiltinDataSource {
7342        /// Disable emitting clock timestamps into the trace.
7343        #[prost(bool, optional, tag = "1")]
7344        pub disable_clock_snapshotting: ::core::option::Option<bool>,
7345        /// Disable echoing the original trace config in the trace.
7346        #[prost(bool, optional, tag = "2")]
7347        pub disable_trace_config: ::core::option::Option<bool>,
7348        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
7349        #[prost(bool, optional, tag = "3")]
7350        pub disable_system_info: ::core::option::Option<bool>,
7351        /// Disable emitting events for data-source state changes (e.g. the marker
7352        /// for all data sources having ACKed the start of the trace).
7353        #[prost(bool, optional, tag = "4")]
7354        pub disable_service_events: ::core::option::Option<bool>,
7355        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
7356        /// also ClockSnapshot's primary_trace_clock. The configured value is written
7357        /// into the trace as part of the ClockSnapshots emitted by the service.
7358        /// Trace processor will attempt to translate packet/event timestamps from
7359        /// various data sources (and their chosen clock domains) to this domain
7360        /// during import. Added in Android R.
7361        #[prost(enumeration = "super::BuiltinClock", optional, tag = "5")]
7362        pub primary_trace_clock: ::core::option::Option<i32>,
7363        /// Time interval in between snapshotting of sync markers, clock snapshots,
7364        /// stats, and other periodic service-emitted events. Note that the service
7365        /// only keeps track of the first and the most recent snapshot until
7366        /// ReadBuffers() is called.
7367        #[prost(uint32, optional, tag = "6")]
7368        pub snapshot_interval_ms: ::core::option::Option<u32>,
7369        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
7370        /// clock should be used for periodic snapshots of service-emitted events.
7371        /// This means, if a snapshot *should* have happened during suspend, it will
7372        /// happen immediately after the device resumes.
7373        ///
7374        /// Choosing a clock like this is done on best-effort basis; not all
7375        /// platforms (e.g. Windows) expose a clock which can be used for periodic
7376        /// tasks counting suspend. If such a clock is not available, the service
7377        /// falls back to the best-available alternative.
7378        ///
7379        /// Introduced in Android S.
7380        /// TODO(lalitm): deprecate this in T and make this the default if nothing
7381        /// crashes in S.
7382        #[prost(bool, optional, tag = "7")]
7383        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
7384        /// Disables the reporting of per-trace-writer histograms in TraceStats.
7385        #[prost(bool, optional, tag = "8")]
7386        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
7387    }
7388    #[derive(Clone, PartialEq, ::prost::Message)]
7389    pub struct ProducerConfig {
7390        /// Identifies the producer for which this config is for.
7391        #[prost(string, optional, tag = "1")]
7392        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
7393        /// Specifies the preferred size of the shared memory buffer. If the size is
7394        /// larger than the max size, the max will be used. If it is smaller than
7395        /// the page size or doesn't fit pages evenly into it, it will fall back to
7396        /// the size specified by the producer or finally the default shared memory
7397        /// size.
7398        #[prost(uint32, optional, tag = "2")]
7399        pub shm_size_kb: ::core::option::Option<u32>,
7400        /// Specifies the preferred size of each page in the shared memory buffer.
7401        /// Must be an integer multiple of 4K.
7402        #[prost(uint32, optional, tag = "3")]
7403        pub page_size_kb: ::core::option::Option<u32>,
7404    }
7405    /// Contains statsd-specific metadata about an alert associated with the trace.
7406    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
7407    pub struct StatsdMetadata {
7408        /// The identifier of the alert which triggered this trace.
7409        #[prost(int64, optional, tag = "1")]
7410        pub triggering_alert_id: ::core::option::Option<i64>,
7411        /// The uid which registered the triggering configuration with statsd.
7412        #[prost(int32, optional, tag = "2")]
7413        pub triggering_config_uid: ::core::option::Option<i32>,
7414        /// The identifier of the config which triggered the alert.
7415        #[prost(int64, optional, tag = "3")]
7416        pub triggering_config_id: ::core::option::Option<i64>,
7417        /// The identifier of the subscription which triggered this trace.
7418        #[prost(int64, optional, tag = "4")]
7419        pub triggering_subscription_id: ::core::option::Option<i64>,
7420    }
7421    /// Contains flags which override the default values of the guardrails inside
7422    /// Perfetto.
7423    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
7424    pub struct GuardrailOverrides {
7425        /// Override the default limit (in bytes) for uploading data to server within
7426        /// a 24 hour period.
7427        /// On R-, this override only affected userdebug builds. Since S, it also
7428        /// affects user builds.
7429        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
7430        /// was removed from Perfetto.
7431        #[deprecated]
7432        #[prost(uint64, optional, tag = "1")]
7433        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
7434        /// Overrides the guardrail for maximum trace buffer size.
7435        /// Available on U+
7436        #[prost(uint32, optional, tag = "2")]
7437        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
7438    }
7439    /// Triggers allow producers to start or stop the tracing session when an event
7440    /// occurs.
7441    ///
7442    /// For example if we are tracing probabilistically, most traces will be
7443    /// uninteresting. Triggers allow us to keep only the interesting ones such as
7444    /// those traces during which the device temperature reached a certain
7445    /// threshold. In this case the producer can activate a trigger to keep
7446    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
7447    /// (START_TRACING) because it knows something is about to happen.
7448    #[derive(Clone, PartialEq, ::prost::Message)]
7449    pub struct TriggerConfig {
7450        #[prost(enumeration = "trigger_config::TriggerMode", optional, tag = "1")]
7451        pub trigger_mode: ::core::option::Option<i32>,
7452        /// This flag is really a workaround for b/274931668. This is needed only
7453        /// when deploying configs to different versions of the tracing service.
7454        /// When this is set to true this has the same effect of setting trigger_mode
7455        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
7456        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
7457        /// versions of Android and fall back to STOP_TRACING on older versions where
7458        /// CLONE_SNAPSHOT did not exist.
7459        /// When using this flag, trigger_mode must be set to STOP_TRACING.
7460        #[prost(bool, optional, tag = "5")]
7461        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
7462        /// A list of triggers which are related to this configuration. If ANY
7463        /// trigger is seen then an action will be performed based on |trigger_mode|.
7464        #[prost(message, repeated, tag = "2")]
7465        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
7466        /// Required and must be positive if a TriggerConfig is specified. This is
7467        /// how long this TraceConfig should wait for a trigger to arrive. After this
7468        /// period of time if no trigger is seen the TracingSession will be cleaned
7469        /// up.
7470        #[prost(uint32, optional, tag = "3")]
7471        pub trigger_timeout_ms: ::core::option::Option<u32>,
7472    }
7473    /// Nested message and enum types in `TriggerConfig`.
7474    pub mod trigger_config {
7475        #[derive(Clone, PartialEq, ::prost::Message)]
7476        pub struct Trigger {
7477            /// The producer must specify this name to activate the trigger.
7478            #[prost(string, optional, tag = "1")]
7479            pub name: ::core::option::Option<::prost::alloc::string::String>,
7480            /// An std::regex that will match the producer that can activate this
7481            /// trigger. This is optional. If unset any producers can activate this
7482            /// trigger.
7483            #[prost(string, optional, tag = "2")]
7484            pub producer_name_regex: ::core::option::Option<::prost::alloc::string::String>,
7485            /// After a trigger is received either in START_TRACING or STOP_TRACING
7486            /// mode then the trace will end |stop_delay_ms| after triggering.
7487            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
7488            /// snapshot.
7489            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
7490            /// based on wall-clock, counting also time in suspend.
7491            #[prost(uint32, optional, tag = "3")]
7492            pub stop_delay_ms: ::core::option::Option<u32>,
7493            /// Limits the number of traces this trigger can start/stop in a rolling
7494            /// 24 hour window. If this field is unset or zero, no limit is applied and
7495            /// activiation of this trigger *always* starts/stops the trace.
7496            #[prost(uint32, optional, tag = "4")]
7497            pub max_per_24_h: ::core::option::Option<u32>,
7498            /// A value between 0 and 1 which encodes the probability of skipping a
7499            /// trigger with this name. This is useful for reducing the probability
7500            /// of high-frequency triggers from dominating trace finaization. If this
7501            /// field is unset or zero, the trigger will *never* be skipped. If this
7502            /// field is greater than or equal to 1, this trigger will *always* be
7503            /// skipped i.e. it will be as if this trigger was never included in the
7504            /// first place.
7505            /// This probability check is applied *before* any other limits. For
7506            /// example, if |max_per_24_h| is also set, first we will check if the
7507            /// probability bar is met and only then will we check the |max_per_24_h|
7508            /// limit.
7509            #[prost(double, optional, tag = "5")]
7510            pub skip_probability: ::core::option::Option<f64>,
7511        }
7512        #[derive(
7513            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
7514        )]
7515        #[repr(i32)]
7516        pub enum TriggerMode {
7517            Unspecified = 0,
7518            /// When this mode is chosen, data sources are not started until one of the
7519            /// |triggers| are received. This supports early initialization and fast
7520            /// starting of the tracing system. On triggering, the session will then
7521            /// record for |stop_delay_ms|. However if no trigger is seen
7522            /// after |trigger_timeout_ms| the session will be stopped and no data will
7523            /// be returned.
7524            StartTracing = 1,
7525            /// When this mode is chosen, the session will be started via the normal
7526            /// EnableTracing() & StartTracing(). If no trigger is ever seen
7527            /// the session will be stopped after |trigger_timeout_ms| and no data will
7528            /// be returned. However if triggered the trace will stop after
7529            /// |stop_delay_ms| and any data in the buffer will be returned to the
7530            /// consumer.
7531            StopTracing = 2,
7532            /// When this mode is chosen, this causes a snapshot of the current tracing
7533            /// session to be created after |stop_delay_ms| while the current tracing
7534            /// session continues undisturbed (% an extra flush). This mode can be
7535            /// used only when the tracing session is handled by the "perfetto" cmdline
7536            /// client (which is true in 90% of cases). Part of the business logic
7537            /// necessary for this behavior, and ensuing file handling, lives in
7538            /// perfetto_cmd.cc . On other consumers, this causes only a notification
7539            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
7540            /// consumer is supposed to call CloneSession() itself after the event.
7541            /// Use use_clone_snapshot_if_available=true when targeting older versions
7542            /// of perfetto.
7543            CloneSnapshot = 4,
7544        }
7545        impl TriggerMode {
7546            /// String value of the enum field names used in the ProtoBuf definition.
7547            ///
7548            /// The values are not transformed in any way and thus are considered stable
7549            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7550            pub fn as_str_name(&self) -> &'static str {
7551                match self {
7552                    Self::Unspecified => "UNSPECIFIED",
7553                    Self::StartTracing => "START_TRACING",
7554                    Self::StopTracing => "STOP_TRACING",
7555                    Self::CloneSnapshot => "CLONE_SNAPSHOT",
7556                }
7557            }
7558            /// Creates an enum from field names used in the ProtoBuf definition.
7559            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7560                match value {
7561                    "UNSPECIFIED" => Some(Self::Unspecified),
7562                    "START_TRACING" => Some(Self::StartTracing),
7563                    "STOP_TRACING" => Some(Self::StopTracing),
7564                    "CLONE_SNAPSHOT" => Some(Self::CloneSnapshot),
7565                    _ => None,
7566                }
7567            }
7568        }
7569    }
7570    /// Configuration for trace contents that reference earlier trace data. For
7571    /// example, a data source might intern strings, and emit packets containing
7572    /// {interned id : string} pairs. Future packets from that data source can then
7573    /// use the interned ids instead of duplicating the raw string contents. The
7574    /// trace parser will then need to use that interning table to fully interpret
7575    /// the rest of the trace.
7576    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
7577    pub struct IncrementalStateConfig {
7578        /// If nonzero, notify eligible data sources to clear their incremental state
7579        /// periodically, with the given period. The notification is sent only to
7580        /// data sources that have |handles_incremental_state_clear| set in their
7581        /// DataSourceDescriptor. The notification requests that the data source
7582        /// stops referring to past trace contents. This is particularly useful when
7583        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
7584        /// trace data.
7585        ///
7586        /// Warning: this time-based global clearing is likely to be removed in the
7587        /// future, to be replaced with a smarter way of sending the notifications
7588        /// only when necessary.
7589        #[prost(uint32, optional, tag = "1")]
7590        pub clear_period_ms: ::core::option::Option<u32>,
7591    }
7592    /// Android-only. Not for general use. If set, saves the trace into an
7593    /// incident. This field is read by perfetto_cmd, rather than the tracing
7594    /// service. This field must be set when passing the --upload flag to
7595    /// perfetto_cmd.
7596    ///
7597    /// In this message, either:
7598    ///   * all of |destination_package|, |destination_class| and |privacy_level|
7599    ///     must be set.
7600    ///   * |skip_incidentd| must be explicitly set to true.
7601    #[derive(Clone, PartialEq, ::prost::Message)]
7602    pub struct IncidentReportConfig {
7603        #[prost(string, optional, tag = "1")]
7604        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
7605        #[prost(string, optional, tag = "2")]
7606        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
7607        /// Level of filtering in the requested incident. See |Destination| in
7608        /// frameworks/base/core/proto/android/privacy.proto.
7609        #[prost(int32, optional, tag = "3")]
7610        pub privacy_level: ::core::option::Option<i32>,
7611        /// If true, then skips saving the trace to incidentd.
7612        ///
7613        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
7614        /// or when we explicitly don't want traces to go to incidentd even when they
7615        /// usually would (e.g. configs deployed using statsd but only used for
7616        /// inclusion in bugreports using |bugreport_score|).
7617        ///
7618        /// The motivation for having this flag, instead of just not setting
7619        /// |incident_report_config|, is prevent accidents where
7620        /// |incident_report_config| is omitted by mistake.
7621        #[prost(bool, optional, tag = "5")]
7622        pub skip_incidentd: ::core::option::Option<bool>,
7623        /// If true, do not write the trace into dropbox (i.e. incident only).
7624        /// Otherwise, write to both dropbox and incident.
7625        /// TODO(lalitm): remove this field as we no longer use Dropbox.
7626        #[deprecated]
7627        #[prost(bool, optional, tag = "4")]
7628        pub skip_dropbox: ::core::option::Option<bool>,
7629    }
7630    /// When set applies a post-filter to the trace contents using the filter
7631    /// provided. The filter is applied at ReadBuffers() time and works both in the
7632    /// case of IPC readback and write_into_file. This filter can be generated
7633    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
7634    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
7635    /// design.
7636    ///
7637    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
7638    /// Android T with a different field number. Updated in Android U with a new
7639    /// bytecode version which supports string filtering.
7640    ///
7641    /// =========================
7642    /// Filter bytecode.
7643    /// =========================
7644    #[derive(Clone, PartialEq, ::prost::Message)]
7645    pub struct TraceFilter {
7646        /// The bytecode as implemented in Android T.
7647        #[prost(bytes = "vec", optional, tag = "1")]
7648        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7649        /// The bytecode as implemented in Android U. Adds support for string
7650        /// filtering.
7651        #[prost(bytes = "vec", optional, tag = "2")]
7652        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7653        #[prost(message, optional, tag = "3")]
7654        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
7655    }
7656    /// Nested message and enum types in `TraceFilter`.
7657    pub mod trace_filter {
7658        /// A rule specifies how strings should be filtered.
7659        #[derive(Clone, PartialEq, ::prost::Message)]
7660        pub struct StringFilterRule {
7661            /// The policy (i.e. algorithm) dictating how strings matching this rule
7662            /// should be handled.
7663            #[prost(enumeration = "StringFilterPolicy", optional, tag = "1")]
7664            pub policy: ::core::option::Option<i32>,
7665            /// The regex pattern used to match against each string.
7666            #[prost(string, optional, tag = "2")]
7667            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
7668            /// The string which should appear after the tgid in atrace tracepoint
7669            /// strings.
7670            #[prost(string, optional, tag = "3")]
7671            pub atrace_payload_starts_with: ::core::option::Option<::prost::alloc::string::String>,
7672        }
7673        /// A chain is a list of rules which string will be sequentially checked
7674        /// against.
7675        #[derive(Clone, PartialEq, ::prost::Message)]
7676        pub struct StringFilterChain {
7677            #[prost(message, repeated, tag = "1")]
7678            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
7679        }
7680        /// A policy specifies which algorithm should be used for filtering the
7681        /// string.
7682        #[derive(
7683            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
7684        )]
7685        #[repr(i32)]
7686        pub enum StringFilterPolicy {
7687            SfpUnspecified = 0,
7688            /// Tries to match the string field against |regex_pattern|. If it
7689            /// matches, all matching groups are "redacted" (i.e. replaced with a
7690            /// constant string) and filtering is terminated (i.e. no further rules are
7691            /// checked). If it doesn't match, the string is left unchanged and the
7692            /// next rule in chain is considered.
7693            SfpMatchRedactGroups = 1,
7694            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
7695            /// checking the regex. Specifically, it tries to parse the string field as
7696            /// an atrace tracepoint and checks if the post-tgid field starts with
7697            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
7698            /// this check succeeds.
7699            SfpAtraceMatchRedactGroups = 2,
7700            /// Tries to match the string field against |regex_pattern|. If it
7701            /// matches, filtering is terminated (i.e. no further rules are checked).
7702            /// If it doesn't match, the string is left unchanged and the next rule in
7703            /// chain is considered.
7704            SfpMatchBreak = 3,
7705            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
7706            /// the regex. Specifically, it tries to parse the string field as an
7707            /// atrace tracepoint and checks if the post-tgid field starts with
7708            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
7709            /// this check succeeds.
7710            SfpAtraceMatchBreak = 4,
7711            /// Tries to repeatedly search (i.e. find substrings of) the string field
7712            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
7713            /// replaced with a constant string). Once there are no further matches,
7714            /// filtering is terminated (i.e. no further rules are checked).
7715            ///
7716            /// Note that this is policy is a "search" policy not a "match" policy
7717            /// unlike the above policies:
7718            ///   * Match policies require matching the full string i.e. there is an
7719            ///     implicit leading `^` and trailing `$`.
7720            ///   * Search policies perform repeated partial matching of the string
7721            ///     e.g.
7722            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
7723            ///       - Pattern: `foo=(\d+)`
7724            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
7725            ///     where P6O is the redaction string
7726            ///
7727            /// All of this is only performed after some pre-work where we try to parse
7728            /// the string field as an atrace tracepoint and check if the post-tgid
7729            /// field starts with |atrace_post_tgid_starts_with|.
7730            ///
7731            /// If there are no partial matches, the string is left unchanged and the
7732            /// next rule in chain is considered.
7733            SfpAtraceRepeatedSearchRedactGroups = 5,
7734        }
7735        impl StringFilterPolicy {
7736            /// String value of the enum field names used in the ProtoBuf definition.
7737            ///
7738            /// The values are not transformed in any way and thus are considered stable
7739            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7740            pub fn as_str_name(&self) -> &'static str {
7741                match self {
7742                    Self::SfpUnspecified => "SFP_UNSPECIFIED",
7743                    Self::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
7744                    Self::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
7745                    Self::SfpMatchBreak => "SFP_MATCH_BREAK",
7746                    Self::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
7747                    Self::SfpAtraceRepeatedSearchRedactGroups => {
7748                        "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS"
7749                    }
7750                }
7751            }
7752            /// Creates an enum from field names used in the ProtoBuf definition.
7753            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7754                match value {
7755                    "SFP_UNSPECIFIED" => Some(Self::SfpUnspecified),
7756                    "SFP_MATCH_REDACT_GROUPS" => Some(Self::SfpMatchRedactGroups),
7757                    "SFP_ATRACE_MATCH_REDACT_GROUPS" => Some(Self::SfpAtraceMatchRedactGroups),
7758                    "SFP_MATCH_BREAK" => Some(Self::SfpMatchBreak),
7759                    "SFP_ATRACE_MATCH_BREAK" => Some(Self::SfpAtraceMatchBreak),
7760                    "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS" => {
7761                        Some(Self::SfpAtraceRepeatedSearchRedactGroups)
7762                    }
7763                    _ => None,
7764                }
7765            }
7766        }
7767    }
7768    /// Android-only. Not for general use. If set, reports the trace to the
7769    /// Android framework. This field is read by perfetto_cmd, rather than the
7770    /// tracing service. This field must be set when passing the --upload flag to
7771    /// perfetto_cmd.
7772    ///
7773    /// In this message, either:
7774    ///   * |reporter_service_package| and |reporter_service_class| must be set.
7775    ///   * |skip_reporting| must be explicitly set to true.
7776    #[derive(Clone, PartialEq, ::prost::Message)]
7777    pub struct AndroidReportConfig {
7778        #[prost(string, optional, tag = "1")]
7779        pub reporter_service_package: ::core::option::Option<::prost::alloc::string::String>,
7780        #[prost(string, optional, tag = "2")]
7781        pub reporter_service_class: ::core::option::Option<::prost::alloc::string::String>,
7782        /// If true, then skips reporting the trace to Android framework.
7783        ///
7784        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
7785        /// or when we explicitly don't want to report traces to the framework even
7786        /// when they usually would (e.g. configs deployed using statsd but only
7787        /// used for inclusion in bugreports using |bugreport_score|).
7788        ///
7789        /// The motivation for having this flag, instead of just not setting
7790        /// |framework_report_config|, is prevent accidents where
7791        /// |framework_report_config| is omitted by mistake.
7792        #[prost(bool, optional, tag = "3")]
7793        pub skip_report: ::core::option::Option<bool>,
7794        /// If true, will direct the Android framework to read the data in trace
7795        /// file and pass it to the reporter class over a pipe instead of passing
7796        /// the file descriptor directly.
7797        ///
7798        /// This flag is needed because the Android test framework does not
7799        /// currently support priv-app helper apps (in terms of SELinux) and we
7800        /// really don't want to add an allow rule for untrusted_app to receive
7801        /// trace fds.
7802        ///
7803        /// Because of this, we instead will direct the framework to create a new
7804        /// pipe and pass this to the reporter process instead. As the pipe is
7805        /// created by the framework, we won't have any problems with SELinux
7806        /// (system_server is already allowed to pass pipe fds, even
7807        /// to untrusted apps).
7808        ///
7809        /// As the name suggests this option *MUST* only be used for testing.
7810        /// Note that the framework will reject (and drop) files which are too
7811        /// large both for simplicity and to be minimize the amount of data we
7812        /// pass to a non-priv app (note that the framework will still check
7813        /// manifest permissions even though SELinux permissions are worked around).
7814        #[prost(bool, optional, tag = "4")]
7815        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
7816    }
7817    /// If set, delays the start of tracing by a random duration. The duration is
7818    /// chosen from a uniform distribution between the specified minimum and
7819    /// maximum.
7820    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
7821    /// not work if you communicate with traced directly over the consumer API.
7822    /// Introduced in Android T.
7823    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
7824    pub struct CmdTraceStartDelay {
7825        #[prost(uint32, optional, tag = "1")]
7826        pub min_delay_ms: ::core::option::Option<u32>,
7827        #[prost(uint32, optional, tag = "2")]
7828        pub max_delay_ms: ::core::option::Option<u32>,
7829    }
7830    /// When non-empty, ensures that for a each semaphore named `name at most
7831    /// `max_other_session_count`` *other* sessions (whose value is taken of the
7832    /// minimum of all values specified by this config or any already-running
7833    /// session) can be be running.
7834    ///
7835    /// If a semaphore "acquisition" fails, EnableTracing will return an error
7836    /// and the tracing session will not be started (or elgible to start in
7837    /// the case of deferred sessions).
7838    ///
7839    /// This is easiest to explain with an example. Suppose the tracing service has
7840    /// the following active tracing sessions:
7841    ///    S1 = [{name=foo, max_other_session_count=2},
7842    ///          {name=bar, max_other_session_count=0}]
7843    ///    S2 = [{name=foo, max_other_session_count=1},
7844    ///          {name=baz, max_other_session_count=1}]
7845    ///
7846    /// Then, for a new session, the following would be the expected behaviour of
7847    /// EnableSession given the state of `session_semaphores`.
7848    ///    Q: session_semaphores = \[\]
7849    ///    A: Allowed because it does not specify any semaphores. Will be allowed
7850    ///       no matter the state of any other tracing session.
7851    ///    Q: session_semaphores = \[{name=baz, max_other_session_count=1}\]
7852    ///    A: Allowed because both S2 and this config specify
7853    ///       max_other_session_count=1 for baz.
7854    ///    Q: session_semaphores = \[{name=foo, max_other_session_count=3}\]
7855    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
7856    ///       takes that slot.
7857    ///    Q: session_semaphores = \[{name=bar, max_other_session_count=0}\]
7858    ///    A: Denied because S1 takes the the slot specified by both S1 and
7859    ///       this config.
7860    ///
7861    /// Introduced in 24Q3 (Android V).
7862    #[derive(Clone, PartialEq, ::prost::Message)]
7863    pub struct SessionSemaphore {
7864        /// The name of the semaphore. Acts as a unique identifier across all
7865        /// tracing sessions (including the one being started).
7866        #[prost(string, optional, tag = "1")]
7867        pub name: ::core::option::Option<::prost::alloc::string::String>,
7868        /// The maximum number of *other* sesssions which specify the same semaphore
7869        /// which can be active. The minimum of this value across all tracing
7870        /// sessions and the value specified by the config is used when deciding
7871        /// whether the tracing session can be started.
7872        #[prost(uint64, optional, tag = "2")]
7873        pub max_other_session_count: ::core::option::Option<u64>,
7874    }
7875    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7876    #[repr(i32)]
7877    pub enum LockdownModeOperation {
7878        LockdownUnchanged = 0,
7879        LockdownClear = 1,
7880        LockdownSet = 2,
7881    }
7882    impl LockdownModeOperation {
7883        /// String value of the enum field names used in the ProtoBuf definition.
7884        ///
7885        /// The values are not transformed in any way and thus are considered stable
7886        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7887        pub fn as_str_name(&self) -> &'static str {
7888            match self {
7889                Self::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
7890                Self::LockdownClear => "LOCKDOWN_CLEAR",
7891                Self::LockdownSet => "LOCKDOWN_SET",
7892            }
7893        }
7894        /// Creates an enum from field names used in the ProtoBuf definition.
7895        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7896            match value {
7897                "LOCKDOWN_UNCHANGED" => Some(Self::LockdownUnchanged),
7898                "LOCKDOWN_CLEAR" => Some(Self::LockdownClear),
7899                "LOCKDOWN_SET" => Some(Self::LockdownSet),
7900                _ => None,
7901            }
7902        }
7903    }
7904    /// Compress trace with the given method. Best effort.
7905    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7906    #[repr(i32)]
7907    pub enum CompressionType {
7908        Unspecified = 0,
7909        Deflate = 1,
7910    }
7911    impl CompressionType {
7912        /// String value of the enum field names used in the ProtoBuf definition.
7913        ///
7914        /// The values are not transformed in any way and thus are considered stable
7915        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7916        pub fn as_str_name(&self) -> &'static str {
7917            match self {
7918                Self::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
7919                Self::Deflate => "COMPRESSION_TYPE_DEFLATE",
7920            }
7921        }
7922        /// Creates an enum from field names used in the ProtoBuf definition.
7923        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7924            match value {
7925                "COMPRESSION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
7926                "COMPRESSION_TYPE_DEFLATE" => Some(Self::Deflate),
7927                _ => None,
7928            }
7929        }
7930    }
7931    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7932    #[repr(i32)]
7933    pub enum StatsdLogging {
7934        Unspecified = 0,
7935        Enabled = 1,
7936        Disabled = 2,
7937    }
7938    impl StatsdLogging {
7939        /// String value of the enum field names used in the ProtoBuf definition.
7940        ///
7941        /// The values are not transformed in any way and thus are considered stable
7942        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7943        pub fn as_str_name(&self) -> &'static str {
7944            match self {
7945                Self::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
7946                Self::Enabled => "STATSD_LOGGING_ENABLED",
7947                Self::Disabled => "STATSD_LOGGING_DISABLED",
7948            }
7949        }
7950        /// Creates an enum from field names used in the ProtoBuf definition.
7951        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7952            match value {
7953                "STATSD_LOGGING_UNSPECIFIED" => Some(Self::Unspecified),
7954                "STATSD_LOGGING_ENABLED" => Some(Self::Enabled),
7955                "STATSD_LOGGING_DISABLED" => Some(Self::Disabled),
7956                _ => None,
7957            }
7958        }
7959    }
7960}
7961/// The protocol compiler can output a FileDescriptorSet containing the .proto
7962/// files it parses.
7963#[derive(Clone, PartialEq, ::prost::Message)]
7964pub struct FileDescriptorSet {
7965    #[prost(message, repeated, tag = "1")]
7966    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
7967}
7968/// Describes a complete .proto file.
7969#[derive(Clone, PartialEq, ::prost::Message)]
7970pub struct FileDescriptorProto {
7971    /// file name, relative to root of source tree
7972    #[prost(string, optional, tag = "1")]
7973    pub name: ::core::option::Option<::prost::alloc::string::String>,
7974    /// e.g. "foo", "foo.bar", etc.
7975    #[prost(string, optional, tag = "2")]
7976    pub package: ::core::option::Option<::prost::alloc::string::String>,
7977    /// Names of files imported by this file.
7978    #[prost(string, repeated, tag = "3")]
7979    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7980    /// Indexes of the public imported files in the dependency list above.
7981    #[prost(int32, repeated, packed = "false", tag = "10")]
7982    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
7983    /// Indexes of the weak imported files in the dependency list.
7984    /// For Google-internal migration only. Do not use.
7985    #[prost(int32, repeated, packed = "false", tag = "11")]
7986    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
7987    /// All top-level definitions in this file.
7988    #[prost(message, repeated, tag = "4")]
7989    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
7990    #[prost(message, repeated, tag = "5")]
7991    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
7992    #[prost(message, repeated, tag = "7")]
7993    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
7994}
7995/// Describes a message type.
7996#[derive(Clone, PartialEq, ::prost::Message)]
7997pub struct DescriptorProto {
7998    #[prost(string, optional, tag = "1")]
7999    pub name: ::core::option::Option<::prost::alloc::string::String>,
8000    #[prost(message, repeated, tag = "2")]
8001    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8002    #[prost(message, repeated, tag = "6")]
8003    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
8004    #[prost(message, repeated, tag = "3")]
8005    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
8006    #[prost(message, repeated, tag = "4")]
8007    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
8008    #[prost(message, repeated, tag = "8")]
8009    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
8010    #[prost(message, repeated, tag = "9")]
8011    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
8012    /// Reserved field names, which may not be used by fields in the same message.
8013    /// A given name may only be reserved once.
8014    #[prost(string, repeated, tag = "10")]
8015    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8016}
8017/// Nested message and enum types in `DescriptorProto`.
8018pub mod descriptor_proto {
8019    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
8020    /// fields or extension ranges in the same message. Reserved ranges may
8021    /// not overlap.
8022    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8023    pub struct ReservedRange {
8024        /// Inclusive.
8025        #[prost(int32, optional, tag = "1")]
8026        pub start: ::core::option::Option<i32>,
8027        /// Exclusive.
8028        #[prost(int32, optional, tag = "2")]
8029        pub end: ::core::option::Option<i32>,
8030    }
8031}
8032/// A message representing a option the parser does not recognize. This only
8033/// appears in options protos created by the compiler::Parser class.
8034/// DescriptorPool resolves these when building Descriptor objects. Therefore,
8035/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
8036/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
8037/// in them.
8038#[derive(Clone, PartialEq, ::prost::Message)]
8039pub struct UninterpretedOption {
8040    #[prost(message, repeated, tag = "2")]
8041    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
8042    /// The value of the uninterpreted option, in whatever type the tokenizer
8043    /// identified it as during parsing. Exactly one of these should be set.
8044    #[prost(string, optional, tag = "3")]
8045    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
8046    #[prost(uint64, optional, tag = "4")]
8047    pub positive_int_value: ::core::option::Option<u64>,
8048    #[prost(int64, optional, tag = "5")]
8049    pub negative_int_value: ::core::option::Option<i64>,
8050    #[prost(double, optional, tag = "6")]
8051    pub double_value: ::core::option::Option<f64>,
8052    #[prost(bytes = "vec", optional, tag = "7")]
8053    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8054    #[prost(string, optional, tag = "8")]
8055    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
8056}
8057/// Nested message and enum types in `UninterpretedOption`.
8058pub mod uninterpreted_option {
8059    /// The name of the uninterpreted option.  Each string represents a segment in
8060    /// a dot-separated name.  is_extension is true iff a segment represents an
8061    /// extension (denoted with parentheses in options specs in .proto files).
8062    /// E.g.,{ \["foo", false\], \["bar.baz", true\], \["moo", false\] } represents
8063    /// "foo.(bar.baz).moo".
8064    #[derive(Clone, PartialEq, ::prost::Message)]
8065    pub struct NamePart {
8066        #[prost(string, optional, tag = "1")]
8067        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
8068        #[prost(bool, optional, tag = "2")]
8069        pub is_extension: ::core::option::Option<bool>,
8070    }
8071}
8072#[derive(Clone, PartialEq, ::prost::Message)]
8073pub struct FieldOptions {
8074    /// The packed option can be enabled for repeated primitive fields to enable
8075    /// a more efficient representation on the wire. Rather than repeatedly
8076    /// writing the tag and type for each element, the entire array is encoded as
8077    /// a single length-delimited blob. In proto3, only explicit setting it to
8078    /// false will avoid using packed encoding.
8079    #[prost(bool, optional, tag = "2")]
8080    pub packed: ::core::option::Option<bool>,
8081    /// The parser stores options it doesn't recognize here. See above.
8082    #[prost(message, repeated, tag = "999")]
8083    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
8084}
8085/// Describes a field within a message.
8086#[derive(Clone, PartialEq, ::prost::Message)]
8087pub struct FieldDescriptorProto {
8088    #[prost(string, optional, tag = "1")]
8089    pub name: ::core::option::Option<::prost::alloc::string::String>,
8090    #[prost(int32, optional, tag = "3")]
8091    pub number: ::core::option::Option<i32>,
8092    #[prost(enumeration = "field_descriptor_proto::Label", optional, tag = "4")]
8093    pub label: ::core::option::Option<i32>,
8094    /// If type_name is set, this need not be set.  If both this and type_name
8095    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
8096    #[prost(enumeration = "field_descriptor_proto::Type", optional, tag = "5")]
8097    pub r#type: ::core::option::Option<i32>,
8098    /// For message and enum types, this is the name of the type.  If the name
8099    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
8100    /// rules are used to find the type (i.e. first the nested types within this
8101    /// message are searched, then within the parent, on up to the root
8102    /// namespace).
8103    #[prost(string, optional, tag = "6")]
8104    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
8105    /// For extensions, this is the name of the type being extended.  It is
8106    /// resolved in the same manner as type_name.
8107    #[prost(string, optional, tag = "2")]
8108    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
8109    /// For numeric types, contains the original text representation of the value.
8110    /// For booleans, "true" or "false".
8111    /// For strings, contains the default text contents (not escaped in any way).
8112    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
8113    /// TODO(kenton):  Base-64 encode?
8114    #[prost(string, optional, tag = "7")]
8115    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
8116    #[prost(message, optional, tag = "8")]
8117    pub options: ::core::option::Option<FieldOptions>,
8118    /// If set, gives the index of a oneof in the containing type's oneof_decl
8119    /// list.  This field is a member of that oneof.
8120    #[prost(int32, optional, tag = "9")]
8121    pub oneof_index: ::core::option::Option<i32>,
8122}
8123/// Nested message and enum types in `FieldDescriptorProto`.
8124pub mod field_descriptor_proto {
8125    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8126    #[repr(i32)]
8127    pub enum Type {
8128        /// 0 is reserved for errors.
8129        /// Order is weird for historical reasons.
8130        Double = 1,
8131        Float = 2,
8132        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
8133        /// negative values are likely.
8134        Int64 = 3,
8135        Uint64 = 4,
8136        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
8137        /// negative values are likely.
8138        Int32 = 5,
8139        Fixed64 = 6,
8140        Fixed32 = 7,
8141        Bool = 8,
8142        String = 9,
8143        /// Tag-delimited aggregate.
8144        /// Group type is deprecated and not supported in proto3. However, Proto3
8145        /// implementations should still be able to parse the group wire format and
8146        /// treat group fields as unknown fields.
8147        Group = 10,
8148        /// Length-delimited aggregate.
8149        Message = 11,
8150        /// New in version 2.
8151        Bytes = 12,
8152        Uint32 = 13,
8153        Enum = 14,
8154        Sfixed32 = 15,
8155        Sfixed64 = 16,
8156        /// Uses ZigZag encoding.
8157        Sint32 = 17,
8158        /// Uses ZigZag encoding.
8159        Sint64 = 18,
8160    }
8161    impl Type {
8162        /// String value of the enum field names used in the ProtoBuf definition.
8163        ///
8164        /// The values are not transformed in any way and thus are considered stable
8165        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8166        pub fn as_str_name(&self) -> &'static str {
8167            match self {
8168                Self::Double => "TYPE_DOUBLE",
8169                Self::Float => "TYPE_FLOAT",
8170                Self::Int64 => "TYPE_INT64",
8171                Self::Uint64 => "TYPE_UINT64",
8172                Self::Int32 => "TYPE_INT32",
8173                Self::Fixed64 => "TYPE_FIXED64",
8174                Self::Fixed32 => "TYPE_FIXED32",
8175                Self::Bool => "TYPE_BOOL",
8176                Self::String => "TYPE_STRING",
8177                Self::Group => "TYPE_GROUP",
8178                Self::Message => "TYPE_MESSAGE",
8179                Self::Bytes => "TYPE_BYTES",
8180                Self::Uint32 => "TYPE_UINT32",
8181                Self::Enum => "TYPE_ENUM",
8182                Self::Sfixed32 => "TYPE_SFIXED32",
8183                Self::Sfixed64 => "TYPE_SFIXED64",
8184                Self::Sint32 => "TYPE_SINT32",
8185                Self::Sint64 => "TYPE_SINT64",
8186            }
8187        }
8188        /// Creates an enum from field names used in the ProtoBuf definition.
8189        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8190            match value {
8191                "TYPE_DOUBLE" => Some(Self::Double),
8192                "TYPE_FLOAT" => Some(Self::Float),
8193                "TYPE_INT64" => Some(Self::Int64),
8194                "TYPE_UINT64" => Some(Self::Uint64),
8195                "TYPE_INT32" => Some(Self::Int32),
8196                "TYPE_FIXED64" => Some(Self::Fixed64),
8197                "TYPE_FIXED32" => Some(Self::Fixed32),
8198                "TYPE_BOOL" => Some(Self::Bool),
8199                "TYPE_STRING" => Some(Self::String),
8200                "TYPE_GROUP" => Some(Self::Group),
8201                "TYPE_MESSAGE" => Some(Self::Message),
8202                "TYPE_BYTES" => Some(Self::Bytes),
8203                "TYPE_UINT32" => Some(Self::Uint32),
8204                "TYPE_ENUM" => Some(Self::Enum),
8205                "TYPE_SFIXED32" => Some(Self::Sfixed32),
8206                "TYPE_SFIXED64" => Some(Self::Sfixed64),
8207                "TYPE_SINT32" => Some(Self::Sint32),
8208                "TYPE_SINT64" => Some(Self::Sint64),
8209                _ => None,
8210            }
8211        }
8212    }
8213    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8214    #[repr(i32)]
8215    pub enum Label {
8216        /// 0 is reserved for errors
8217        Optional = 1,
8218        Required = 2,
8219        Repeated = 3,
8220    }
8221    impl Label {
8222        /// String value of the enum field names used in the ProtoBuf definition.
8223        ///
8224        /// The values are not transformed in any way and thus are considered stable
8225        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8226        pub fn as_str_name(&self) -> &'static str {
8227            match self {
8228                Self::Optional => "LABEL_OPTIONAL",
8229                Self::Required => "LABEL_REQUIRED",
8230                Self::Repeated => "LABEL_REPEATED",
8231            }
8232        }
8233        /// Creates an enum from field names used in the ProtoBuf definition.
8234        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8235            match value {
8236                "LABEL_OPTIONAL" => Some(Self::Optional),
8237                "LABEL_REQUIRED" => Some(Self::Required),
8238                "LABEL_REPEATED" => Some(Self::Repeated),
8239                _ => None,
8240            }
8241        }
8242    }
8243}
8244/// Describes a oneof.
8245#[derive(Clone, PartialEq, ::prost::Message)]
8246pub struct OneofDescriptorProto {
8247    #[prost(string, optional, tag = "1")]
8248    pub name: ::core::option::Option<::prost::alloc::string::String>,
8249    #[prost(message, optional, tag = "2")]
8250    pub options: ::core::option::Option<OneofOptions>,
8251}
8252/// Describes an enum type.
8253#[derive(Clone, PartialEq, ::prost::Message)]
8254pub struct EnumDescriptorProto {
8255    #[prost(string, optional, tag = "1")]
8256    pub name: ::core::option::Option<::prost::alloc::string::String>,
8257    #[prost(message, repeated, tag = "2")]
8258    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
8259    /// Reserved enum value names, which may not be reused. A given name may only
8260    /// be reserved once.
8261    #[prost(string, repeated, tag = "5")]
8262    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8263}
8264/// Describes a value within an enum.
8265#[derive(Clone, PartialEq, ::prost::Message)]
8266pub struct EnumValueDescriptorProto {
8267    #[prost(string, optional, tag = "1")]
8268    pub name: ::core::option::Option<::prost::alloc::string::String>,
8269    #[prost(int32, optional, tag = "2")]
8270    pub number: ::core::option::Option<i32>,
8271}
8272#[derive(Clone, Copy, PartialEq, ::prost::Message)]
8273pub struct OneofOptions {}
8274/// This message contains descriptors used to parse extension fields of
8275/// TrackEvent.
8276///
8277/// See docs/design-docs/extensions.md for more details.
8278#[derive(Clone, PartialEq, ::prost::Message)]
8279pub struct ExtensionDescriptor {
8280    #[prost(message, optional, tag = "1")]
8281    pub extension_set: ::core::option::Option<FileDescriptorSet>,
8282}
8283#[derive(Clone, PartialEq, ::prost::Message)]
8284pub struct AndroidGameInterventionList {
8285    #[prost(message, repeated, tag = "1")]
8286    pub game_packages: ::prost::alloc::vec::Vec<android_game_intervention_list::GamePackageInfo>,
8287    /// True when at least one error occurred when parsing
8288    /// game_mode_intervention.list
8289    #[prost(bool, optional, tag = "2")]
8290    pub parse_error: ::core::option::Option<bool>,
8291    /// Failed to open / read game_mode_intervention.list
8292    #[prost(bool, optional, tag = "3")]
8293    pub read_error: ::core::option::Option<bool>,
8294}
8295/// Nested message and enum types in `AndroidGameInterventionList`.
8296pub mod android_game_intervention_list {
8297    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8298    pub struct GameModeInfo {
8299        #[prost(uint32, optional, tag = "1")]
8300        pub mode: ::core::option::Option<u32>,
8301        #[prost(bool, optional, tag = "2")]
8302        pub use_angle: ::core::option::Option<bool>,
8303        #[prost(float, optional, tag = "3")]
8304        pub resolution_downscale: ::core::option::Option<f32>,
8305        #[prost(float, optional, tag = "4")]
8306        pub fps: ::core::option::Option<f32>,
8307    }
8308    #[derive(Clone, PartialEq, ::prost::Message)]
8309    pub struct GamePackageInfo {
8310        #[prost(string, optional, tag = "1")]
8311        pub name: ::core::option::Option<::prost::alloc::string::String>,
8312        #[prost(uint64, optional, tag = "2")]
8313        pub uid: ::core::option::Option<u64>,
8314        #[prost(uint32, optional, tag = "3")]
8315        pub current_mode: ::core::option::Option<u32>,
8316        #[prost(message, repeated, tag = "4")]
8317        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
8318    }
8319}
8320#[derive(Clone, PartialEq, ::prost::Message)]
8321pub struct AndroidLogPacket {
8322    #[prost(message, repeated, tag = "1")]
8323    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
8324    #[prost(message, optional, tag = "2")]
8325    pub stats: ::core::option::Option<android_log_packet::Stats>,
8326}
8327/// Nested message and enum types in `AndroidLogPacket`.
8328pub mod android_log_packet {
8329    #[derive(Clone, PartialEq, ::prost::Message)]
8330    pub struct LogEvent {
8331        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
8332        #[prost(enumeration = "super::AndroidLogId", optional, tag = "1")]
8333        pub log_id: ::core::option::Option<i32>,
8334        /// PID (TGID), TID and UID of the task that emitted the event.
8335        #[prost(int32, optional, tag = "2")]
8336        pub pid: ::core::option::Option<i32>,
8337        #[prost(int32, optional, tag = "3")]
8338        pub tid: ::core::option::Option<i32>,
8339        #[prost(int32, optional, tag = "4")]
8340        pub uid: ::core::option::Option<i32>,
8341        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
8342        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
8343        /// processor will take care of realigning clocks using the ClockSnapshot(s).
8344        #[prost(uint64, optional, tag = "5")]
8345        pub timestamp: ::core::option::Option<u64>,
8346        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
8347        /// the second column of /system/etc/event-log-tags. For all other events,
8348        /// |tag| is the app-specified argument passed to __android_log_write().
8349        #[prost(string, optional, tag = "6")]
8350        pub tag: ::core::option::Option<::prost::alloc::string::String>,
8351        /// Empty when log_id == LID_EVENTS.
8352        #[prost(enumeration = "super::AndroidLogPriority", optional, tag = "7")]
8353        pub prio: ::core::option::Option<i32>,
8354        /// Empty when log_id == LID_EVENTS.
8355        #[prost(string, optional, tag = "8")]
8356        pub message: ::core::option::Option<::prost::alloc::string::String>,
8357        /// Only populated when log_id == LID_EVENTS.
8358        #[prost(message, repeated, tag = "9")]
8359        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
8360    }
8361    /// Nested message and enum types in `LogEvent`.
8362    pub mod log_event {
8363        #[derive(Clone, PartialEq, ::prost::Message)]
8364        pub struct Arg {
8365            #[prost(string, optional, tag = "1")]
8366            pub name: ::core::option::Option<::prost::alloc::string::String>,
8367            #[prost(oneof = "arg::Value", tags = "2, 3, 4")]
8368            pub value: ::core::option::Option<arg::Value>,
8369        }
8370        /// Nested message and enum types in `Arg`.
8371        pub mod arg {
8372            #[derive(Clone, PartialEq, ::prost::Oneof)]
8373            pub enum Value {
8374                #[prost(int64, tag = "2")]
8375                IntValue(i64),
8376                #[prost(float, tag = "3")]
8377                FloatValue(f32),
8378                #[prost(string, tag = "4")]
8379                StringValue(::prost::alloc::string::String),
8380            }
8381        }
8382    }
8383    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
8384    /// absolute counters since the beginning of the lifetime of the tracing
8385    /// session and NOT relative to the previous Stats snapshot).
8386    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8387    pub struct Stats {
8388        /// Total number of log events seen, including errors and skipped entries
8389        /// (num of events stored in the trace = total - failed - skipped).
8390        #[prost(uint64, optional, tag = "1")]
8391        pub num_total: ::core::option::Option<u64>,
8392        /// Parser failures.
8393        #[prost(uint64, optional, tag = "2")]
8394        pub num_failed: ::core::option::Option<u64>,
8395        /// Messages skipped due to filters.
8396        #[prost(uint64, optional, tag = "3")]
8397        pub num_skipped: ::core::option::Option<u64>,
8398    }
8399}
8400#[derive(Clone, PartialEq, ::prost::Message)]
8401pub struct AndroidSystemProperty {
8402    #[prost(message, repeated, tag = "1")]
8403    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
8404}
8405/// Nested message and enum types in `AndroidSystemProperty`.
8406pub mod android_system_property {
8407    #[derive(Clone, PartialEq, ::prost::Message)]
8408    pub struct PropertyValue {
8409        #[prost(string, optional, tag = "1")]
8410        pub name: ::core::option::Option<::prost::alloc::string::String>,
8411        #[prost(string, optional, tag = "2")]
8412        pub value: ::core::option::Option<::prost::alloc::string::String>,
8413    }
8414}
8415/// A profiling event corresponding to a single camera frame. This message
8416/// collects important details and timestamps involved in producing a single
8417/// camera frame.
8418/// Next ID: 17
8419#[derive(Clone, PartialEq, ::prost::Message)]
8420pub struct AndroidCameraFrameEvent {
8421    /// Identifier for the CameraCaptureSession this frame originates from. See:
8422    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
8423    #[prost(uint64, optional, tag = "1")]
8424    pub session_id: ::core::option::Option<u64>,
8425    /// Identifier for the camera sensor that is the source of this frame. This may
8426    /// be either a physical or logical camera (up to vendor interpretation).
8427    #[prost(uint32, optional, tag = "2")]
8428    pub camera_id: ::core::option::Option<u32>,
8429    /// The frame number identifying this frame on this camera.
8430    #[prost(int64, optional, tag = "3")]
8431    pub frame_number: ::core::option::Option<i64>,
8432    /// Identifier for the CaptureRequest. See:
8433    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest>
8434    ///
8435    /// If multiple cameras are streaming simultaneously, the request_id may be
8436    /// used to identify which frames were captured in service of the same request.
8437    #[prost(int64, optional, tag = "4")]
8438    pub request_id: ::core::option::Option<i64>,
8439    /// The CLOCK_BOOTTIME timestamp at which the camera framework request is
8440    /// received by the camera HAL pipeline. Note that this request may wait for
8441    /// some time before processing actually begins. See also
8442    /// request_processing_started_ns.
8443    #[prost(int64, optional, tag = "5")]
8444    pub request_received_ns: ::core::option::Option<i64>,
8445    /// The CLOCK_BOOTTIME timestamp at which the framework request is accepted for
8446    /// processing by the camera HAL pipeline. This is the time at which the
8447    /// pipeline actually begins to work on the request.
8448    #[prost(int64, optional, tag = "6")]
8449    pub request_processing_started_ns: ::core::option::Option<i64>,
8450    /// The CLOCK_BOOTTIME timestamp at which the sensor begins its exposure.
8451    #[prost(int64, optional, tag = "7")]
8452    pub start_of_exposure_ns: ::core::option::Option<i64>,
8453    /// The CLOCK_BOOTTIME timestamp corresponding to the sensor start of frame
8454    /// event.
8455    #[prost(int64, optional, tag = "8")]
8456    pub start_of_frame_ns: ::core::option::Option<i64>,
8457    /// The CLOCK_BOOTTIME timestamp at which the camera HAL has sent all responses
8458    /// for the frame.
8459    #[prost(int64, optional, tag = "9")]
8460    pub responses_all_sent_ns: ::core::option::Option<i64>,
8461    #[prost(
8462        enumeration = "android_camera_frame_event::CaptureResultStatus",
8463        optional,
8464        tag = "10"
8465    )]
8466    pub capture_result_status: ::core::option::Option<i32>,
8467    /// The number of sensor frames that were skipped between this frame and the
8468    /// previous frame. Under normal operation, this should be zero. Any number
8469    /// greater than zero indicates dropped sensor frames.
8470    #[prost(int32, optional, tag = "11")]
8471    pub skipped_sensor_frames: ::core::option::Option<i32>,
8472    /// The value of CONTROL_CAPTURE_INTENT. See:
8473    /// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#CONTROL_CAPTURE_INTENT>
8474    #[prost(int32, optional, tag = "12")]
8475    pub capture_intent: ::core::option::Option<i32>,
8476    /// The number of streams in the capture request.
8477    #[prost(int32, optional, tag = "13")]
8478    pub num_streams: ::core::option::Option<i32>,
8479    #[prost(message, repeated, tag = "14")]
8480    pub node_processing_details:
8481        ::prost::alloc::vec::Vec<android_camera_frame_event::CameraNodeProcessingDetails>,
8482    /// These fields capture vendor-specific additions to this proto message. In
8483    /// practice `vendor_data` typically contains a serialized message of the
8484    /// vendor's design, and `vendor_data_version` is incremented each time there
8485    /// is a backwards incompatible change made to the message.
8486    #[prost(int32, optional, tag = "15")]
8487    pub vendor_data_version: ::core::option::Option<i32>,
8488    #[prost(bytes = "vec", optional, tag = "16")]
8489    pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8490}
8491/// Nested message and enum types in `AndroidCameraFrameEvent`.
8492pub mod android_camera_frame_event {
8493    /// A profiling event corresponding to a single node processing within the camera
8494    /// pipeline. Intuitively this corresponds to a single stage of processing to
8495    /// produce a camera frame.
8496    /// Next ID: 6
8497    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8498    pub struct CameraNodeProcessingDetails {
8499        #[prost(int64, optional, tag = "1")]
8500        pub node_id: ::core::option::Option<i64>,
8501        /// The timestamp at which node processing begins to run.
8502        #[prost(int64, optional, tag = "2")]
8503        pub start_processing_ns: ::core::option::Option<i64>,
8504        /// The timestamp at which node processing finishes running.
8505        #[prost(int64, optional, tag = "3")]
8506        pub end_processing_ns: ::core::option::Option<i64>,
8507        /// The delay between inputs becoming ready and the node actually beginning to
8508        /// run.
8509        #[prost(int64, optional, tag = "4")]
8510        pub scheduling_latency_ns: ::core::option::Option<i64>,
8511    }
8512    /// The error status, if any, reported to the camera framework. Any status
8513    /// other than STATUS_OK indicates a dropped frame.
8514    /// Next Enum: 6
8515    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8516    #[repr(i32)]
8517    pub enum CaptureResultStatus {
8518        StatusUnspecified = 0,
8519        StatusOk = 1,
8520        /// Early metadata was returned to the camera framework with an error.
8521        StatusEarlyMetadataError = 2,
8522        /// Final metadata was returned to the camera framework with an error.
8523        StatusFinalMetadataError = 3,
8524        /// One or more buffers were returned to the camera framework with an error.
8525        StatusBufferError = 4,
8526        /// The frame was dropped as a result of a flush operation.
8527        StatusFlushError = 5,
8528    }
8529    impl CaptureResultStatus {
8530        /// String value of the enum field names used in the ProtoBuf definition.
8531        ///
8532        /// The values are not transformed in any way and thus are considered stable
8533        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8534        pub fn as_str_name(&self) -> &'static str {
8535            match self {
8536                Self::StatusUnspecified => "STATUS_UNSPECIFIED",
8537                Self::StatusOk => "STATUS_OK",
8538                Self::StatusEarlyMetadataError => "STATUS_EARLY_METADATA_ERROR",
8539                Self::StatusFinalMetadataError => "STATUS_FINAL_METADATA_ERROR",
8540                Self::StatusBufferError => "STATUS_BUFFER_ERROR",
8541                Self::StatusFlushError => "STATUS_FLUSH_ERROR",
8542            }
8543        }
8544        /// Creates an enum from field names used in the ProtoBuf definition.
8545        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8546            match value {
8547                "STATUS_UNSPECIFIED" => Some(Self::StatusUnspecified),
8548                "STATUS_OK" => Some(Self::StatusOk),
8549                "STATUS_EARLY_METADATA_ERROR" => Some(Self::StatusEarlyMetadataError),
8550                "STATUS_FINAL_METADATA_ERROR" => Some(Self::StatusFinalMetadataError),
8551                "STATUS_BUFFER_ERROR" => Some(Self::StatusBufferError),
8552                "STATUS_FLUSH_ERROR" => Some(Self::StatusFlushError),
8553                _ => None,
8554            }
8555        }
8556    }
8557}
8558/// A profiling event that may be emitted periodically (i.e., at a slower rate
8559/// than `AndroidCameraFrameEvent`s) to record fixed and aggregated camera
8560/// session-specific values.
8561#[derive(Clone, PartialEq, ::prost::Message)]
8562pub struct AndroidCameraSessionStats {
8563    /// Identifier for the CameraCaptureSession this frame originates from. See:
8564    /// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
8565    #[prost(uint64, optional, tag = "1")]
8566    pub session_id: ::core::option::Option<u64>,
8567    #[prost(message, optional, tag = "2")]
8568    pub graph: ::core::option::Option<android_camera_session_stats::CameraGraph>,
8569}
8570/// Nested message and enum types in `AndroidCameraSessionStats`.
8571pub mod android_camera_session_stats {
8572    /// Although vendor implementations may vary, camera pipeline processing is
8573    /// typically arranged into a directed graph-like structure. This message is
8574    /// used to record that graph.
8575    #[derive(Clone, PartialEq, ::prost::Message)]
8576    pub struct CameraGraph {
8577        #[prost(message, repeated, tag = "1")]
8578        pub nodes: ::prost::alloc::vec::Vec<camera_graph::CameraNode>,
8579        #[prost(message, repeated, tag = "2")]
8580        pub edges: ::prost::alloc::vec::Vec<camera_graph::CameraEdge>,
8581    }
8582    /// Nested message and enum types in `CameraGraph`.
8583    pub mod camera_graph {
8584        #[derive(Clone, PartialEq, ::prost::Message)]
8585        pub struct CameraNode {
8586            #[prost(int64, optional, tag = "1")]
8587            pub node_id: ::core::option::Option<i64>,
8588            /// A list of inputs consumed by this node.
8589            #[prost(int64, repeated, packed = "false", tag = "2")]
8590            pub input_ids: ::prost::alloc::vec::Vec<i64>,
8591            /// A list of outputs produced by this node.
8592            #[prost(int64, repeated, packed = "false", tag = "3")]
8593            pub output_ids: ::prost::alloc::vec::Vec<i64>,
8594            /// These fields capture vendor-specific additions to this proto message. In
8595            /// practice `vendor_data` typically contains a serialized message of the
8596            /// vendor's design, and `vendor_data_version` is incremented each time there
8597            /// is a backwards incompatible change made to the message.
8598            #[prost(int32, optional, tag = "4")]
8599            pub vendor_data_version: ::core::option::Option<i32>,
8600            #[prost(bytes = "vec", optional, tag = "5")]
8601            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8602        }
8603        /// An adjacency list describing connections between CameraNodes, mapping
8604        /// nodes and their outputs to other nodes that consume them as inputs.
8605        #[derive(Clone, PartialEq, ::prost::Message)]
8606        pub struct CameraEdge {
8607            /// The pair of IDs identifying the node and output connected by this edge.
8608            #[prost(int64, optional, tag = "1")]
8609            pub output_node_id: ::core::option::Option<i64>,
8610            #[prost(int64, optional, tag = "2")]
8611            pub output_id: ::core::option::Option<i64>,
8612            /// The pair of IDs identifying the node and input connected by this edge.
8613            #[prost(int64, optional, tag = "3")]
8614            pub input_node_id: ::core::option::Option<i64>,
8615            #[prost(int64, optional, tag = "4")]
8616            pub input_id: ::core::option::Option<i64>,
8617            /// These fields capture vendor-specific additions to this proto message. In
8618            /// practice `vendor_data` typically contains a serialized message of the
8619            /// vendor's design, and `vendor_data_version` is incremented each time there
8620            /// is a backwards incompatible change made to the message.
8621            #[prost(int32, optional, tag = "5")]
8622            pub vendor_data_version: ::core::option::Option<i32>,
8623            #[prost(bytes = "vec", optional, tag = "6")]
8624            pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8625        }
8626    }
8627}
8628/// Generated by SurfaceFlinger's FrameTimeline (go/adaptive-scheduling-fr).
8629/// Used in comparing the expected timeline of a frame to the actual timeline.
8630/// Key terms:
8631///     1) DisplayFrame - represents SurfaceFlinger's work on a frame(composited)
8632///     2) SurfaceFrame - represents App's work on its frame
8633///     3) Timeline = start to end of a component's(app/SF) work on a frame.
8634/// SurfaceFlinger composites frames from many apps together, so
8635///     One DisplayFrame can map to N SurfaceFrame(s)
8636/// This relationship can be reconstructed by using
8637///     DisplayFrame.token = SurfaceFrame.display_frame_token
8638#[derive(Clone, PartialEq, ::prost::Message)]
8639pub struct FrameTimelineEvent {
8640    #[prost(oneof = "frame_timeline_event::Event", tags = "1, 2, 3, 4, 5")]
8641    pub event: ::core::option::Option<frame_timeline_event::Event>,
8642}
8643/// Nested message and enum types in `FrameTimelineEvent`.
8644pub mod frame_timeline_event {
8645    /// Indicates the start of expected timeline slice for SurfaceFrames.
8646    #[derive(Clone, PartialEq, ::prost::Message)]
8647    pub struct ExpectedSurfaceFrameStart {
8648        /// Cookie used to correlate between the start and end messages of the same
8649        /// frame. Since all values except the ts are same for start and end, cookie
8650        /// helps in preventing redundant data transmission.
8651        /// The same cookie is used only by start and end messages of a single frame
8652        /// and is otherwise unique.
8653        #[prost(int64, optional, tag = "1")]
8654        pub cookie: ::core::option::Option<i64>,
8655        /// Token received by the app for its work. Can be shared between multiple
8656        /// layers of the same app (example: pip mode).
8657        #[prost(int64, optional, tag = "2")]
8658        pub token: ::core::option::Option<i64>,
8659        /// The corresponding DisplayFrame token is required to link the App's work
8660        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
8661        /// DisplayFrame.
8662        /// this.display_frame_token = DisplayFrame.token
8663        #[prost(int64, optional, tag = "3")]
8664        pub display_frame_token: ::core::option::Option<i64>,
8665        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
8666        /// the respective process track group.
8667        #[prost(int32, optional, tag = "4")]
8668        pub pid: ::core::option::Option<i32>,
8669        #[prost(string, optional, tag = "5")]
8670        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
8671    }
8672    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
8673    /// includes the jank information.
8674    #[derive(Clone, PartialEq, ::prost::Message)]
8675    pub struct ActualSurfaceFrameStart {
8676        /// Cookie used to correlate between the start and end messages of the same
8677        /// frame. Since all values except the ts are same for start and end, cookie
8678        /// helps in preventing redundant data transmission.
8679        /// The same cookie is used only by start and end messages of a single frame
8680        /// and is otherwise unique.
8681        #[prost(int64, optional, tag = "1")]
8682        pub cookie: ::core::option::Option<i64>,
8683        /// Token received by the app for its work. Can be shared between multiple
8684        /// layers of the same app (example: pip mode).
8685        #[prost(int64, optional, tag = "2")]
8686        pub token: ::core::option::Option<i64>,
8687        /// The corresponding DisplayFrame token is required to link the App's work
8688        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
8689        /// DisplayFrame.
8690        /// this.display_frame_token = DisplayFrame.token
8691        #[prost(int64, optional, tag = "3")]
8692        pub display_frame_token: ::core::option::Option<i64>,
8693        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
8694        /// the respective process track group.
8695        #[prost(int32, optional, tag = "4")]
8696        pub pid: ::core::option::Option<i32>,
8697        #[prost(string, optional, tag = "5")]
8698        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
8699        #[prost(enumeration = "PresentType", optional, tag = "6")]
8700        pub present_type: ::core::option::Option<i32>,
8701        #[prost(bool, optional, tag = "7")]
8702        pub on_time_finish: ::core::option::Option<bool>,
8703        #[prost(bool, optional, tag = "8")]
8704        pub gpu_composition: ::core::option::Option<bool>,
8705        /// A bitmask of JankType. More than one reason can be attributed to a janky
8706        /// frame.
8707        #[prost(int32, optional, tag = "9")]
8708        pub jank_type: ::core::option::Option<i32>,
8709        #[prost(enumeration = "PredictionType", optional, tag = "10")]
8710        pub prediction_type: ::core::option::Option<i32>,
8711        #[prost(bool, optional, tag = "11")]
8712        pub is_buffer: ::core::option::Option<bool>,
8713        #[prost(enumeration = "JankSeverityType", optional, tag = "12")]
8714        pub jank_severity_type: ::core::option::Option<i32>,
8715    }
8716    /// Indicates the start of expected timeline slice for DisplayFrames.
8717    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8718    pub struct ExpectedDisplayFrameStart {
8719        /// Cookie used to correlate between the start and end messages of the same
8720        /// frame. Since all values except the ts are same for start and end, cookie
8721        /// helps in preventing redundant data transmission.
8722        /// The same cookie is used only by start and end messages of a single frame
8723        /// and is otherwise unique.
8724        #[prost(int64, optional, tag = "1")]
8725        pub cookie: ::core::option::Option<i64>,
8726        /// Token received by SurfaceFlinger for its work
8727        /// this.token = SurfaceFrame.display_frame_token
8728        #[prost(int64, optional, tag = "2")]
8729        pub token: ::core::option::Option<i64>,
8730        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
8731        /// inside the SurfaceFlinger process group.
8732        #[prost(int32, optional, tag = "3")]
8733        pub pid: ::core::option::Option<i32>,
8734    }
8735    /// Indicates the start of actual timeline slice for DisplayFrames. Also
8736    /// includes the jank information.
8737    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8738    pub struct ActualDisplayFrameStart {
8739        /// Cookie used to correlate between the start and end messages of the same
8740        /// frame. Since all values except the ts are same for start and end, cookie
8741        /// helps in preventing redundant data transmission.
8742        /// The same cookie is used only by start and end messages of a single frame
8743        /// and is otherwise unique.
8744        #[prost(int64, optional, tag = "1")]
8745        pub cookie: ::core::option::Option<i64>,
8746        /// Token received by SurfaceFlinger for its work
8747        /// this.token = SurfaceFrame.display_frame_token
8748        #[prost(int64, optional, tag = "2")]
8749        pub token: ::core::option::Option<i64>,
8750        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
8751        /// inside the SurfaceFlinger process group.
8752        #[prost(int32, optional, tag = "3")]
8753        pub pid: ::core::option::Option<i32>,
8754        #[prost(enumeration = "PresentType", optional, tag = "4")]
8755        pub present_type: ::core::option::Option<i32>,
8756        #[prost(bool, optional, tag = "5")]
8757        pub on_time_finish: ::core::option::Option<bool>,
8758        #[prost(bool, optional, tag = "6")]
8759        pub gpu_composition: ::core::option::Option<bool>,
8760        /// A bitmask of JankType. More than one reason can be attributed to a janky
8761        /// frame.
8762        #[prost(int32, optional, tag = "7")]
8763        pub jank_type: ::core::option::Option<i32>,
8764        #[prost(enumeration = "PredictionType", optional, tag = "8")]
8765        pub prediction_type: ::core::option::Option<i32>,
8766        #[prost(enumeration = "JankSeverityType", optional, tag = "9")]
8767        pub jank_severity_type: ::core::option::Option<i32>,
8768    }
8769    /// FrameEnd just sends the cookie to indicate that the corresponding
8770    /// <display/surface>frame slice's end.
8771    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
8772    pub struct FrameEnd {
8773        #[prost(int64, optional, tag = "1")]
8774        pub cookie: ::core::option::Option<i64>,
8775    }
8776    /// Specifies the reason(s) most likely to have caused the jank.
8777    /// Used as a bitmask.
8778    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8779    #[repr(i32)]
8780    pub enum JankType {
8781        JankUnspecified = 0,
8782        JankNone = 1,
8783        JankSfScheduling = 2,
8784        JankPredictionError = 4,
8785        JankDisplayHal = 8,
8786        JankSfCpuDeadlineMissed = 16,
8787        JankSfGpuDeadlineMissed = 32,
8788        JankAppDeadlineMissed = 64,
8789        JankBufferStuffing = 128,
8790        JankUnknown = 256,
8791        JankSfStuffing = 512,
8792        JankDropped = 1024,
8793    }
8794    impl JankType {
8795        /// String value of the enum field names used in the ProtoBuf definition.
8796        ///
8797        /// The values are not transformed in any way and thus are considered stable
8798        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8799        pub fn as_str_name(&self) -> &'static str {
8800            match self {
8801                Self::JankUnspecified => "JANK_UNSPECIFIED",
8802                Self::JankNone => "JANK_NONE",
8803                Self::JankSfScheduling => "JANK_SF_SCHEDULING",
8804                Self::JankPredictionError => "JANK_PREDICTION_ERROR",
8805                Self::JankDisplayHal => "JANK_DISPLAY_HAL",
8806                Self::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
8807                Self::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
8808                Self::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
8809                Self::JankBufferStuffing => "JANK_BUFFER_STUFFING",
8810                Self::JankUnknown => "JANK_UNKNOWN",
8811                Self::JankSfStuffing => "JANK_SF_STUFFING",
8812                Self::JankDropped => "JANK_DROPPED",
8813            }
8814        }
8815        /// Creates an enum from field names used in the ProtoBuf definition.
8816        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8817            match value {
8818                "JANK_UNSPECIFIED" => Some(Self::JankUnspecified),
8819                "JANK_NONE" => Some(Self::JankNone),
8820                "JANK_SF_SCHEDULING" => Some(Self::JankSfScheduling),
8821                "JANK_PREDICTION_ERROR" => Some(Self::JankPredictionError),
8822                "JANK_DISPLAY_HAL" => Some(Self::JankDisplayHal),
8823                "JANK_SF_CPU_DEADLINE_MISSED" => Some(Self::JankSfCpuDeadlineMissed),
8824                "JANK_SF_GPU_DEADLINE_MISSED" => Some(Self::JankSfGpuDeadlineMissed),
8825                "JANK_APP_DEADLINE_MISSED" => Some(Self::JankAppDeadlineMissed),
8826                "JANK_BUFFER_STUFFING" => Some(Self::JankBufferStuffing),
8827                "JANK_UNKNOWN" => Some(Self::JankUnknown),
8828                "JANK_SF_STUFFING" => Some(Self::JankSfStuffing),
8829                "JANK_DROPPED" => Some(Self::JankDropped),
8830                _ => None,
8831            }
8832        }
8833    }
8834    /// Specifies the severity of a jank.
8835    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8836    #[repr(i32)]
8837    pub enum JankSeverityType {
8838        SeverityUnknown = 0,
8839        SeverityNone = 1,
8840        SeverityPartial = 2,
8841        SeverityFull = 3,
8842    }
8843    impl JankSeverityType {
8844        /// String value of the enum field names used in the ProtoBuf definition.
8845        ///
8846        /// The values are not transformed in any way and thus are considered stable
8847        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8848        pub fn as_str_name(&self) -> &'static str {
8849            match self {
8850                Self::SeverityUnknown => "SEVERITY_UNKNOWN",
8851                Self::SeverityNone => "SEVERITY_NONE",
8852                Self::SeverityPartial => "SEVERITY_PARTIAL",
8853                Self::SeverityFull => "SEVERITY_FULL",
8854            }
8855        }
8856        /// Creates an enum from field names used in the ProtoBuf definition.
8857        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8858            match value {
8859                "SEVERITY_UNKNOWN" => Some(Self::SeverityUnknown),
8860                "SEVERITY_NONE" => Some(Self::SeverityNone),
8861                "SEVERITY_PARTIAL" => Some(Self::SeverityPartial),
8862                "SEVERITY_FULL" => Some(Self::SeverityFull),
8863                _ => None,
8864            }
8865        }
8866    }
8867    /// Specifies how a frame was presented on screen w.r.t. timing.
8868    /// Can be different for SurfaceFrame and DisplayFrame.
8869    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8870    #[repr(i32)]
8871    pub enum PresentType {
8872        PresentUnspecified = 0,
8873        PresentOnTime = 1,
8874        PresentLate = 2,
8875        PresentEarly = 3,
8876        PresentDropped = 4,
8877        PresentUnknown = 5,
8878    }
8879    impl PresentType {
8880        /// String value of the enum field names used in the ProtoBuf definition.
8881        ///
8882        /// The values are not transformed in any way and thus are considered stable
8883        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8884        pub fn as_str_name(&self) -> &'static str {
8885            match self {
8886                Self::PresentUnspecified => "PRESENT_UNSPECIFIED",
8887                Self::PresentOnTime => "PRESENT_ON_TIME",
8888                Self::PresentLate => "PRESENT_LATE",
8889                Self::PresentEarly => "PRESENT_EARLY",
8890                Self::PresentDropped => "PRESENT_DROPPED",
8891                Self::PresentUnknown => "PRESENT_UNKNOWN",
8892            }
8893        }
8894        /// Creates an enum from field names used in the ProtoBuf definition.
8895        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8896            match value {
8897                "PRESENT_UNSPECIFIED" => Some(Self::PresentUnspecified),
8898                "PRESENT_ON_TIME" => Some(Self::PresentOnTime),
8899                "PRESENT_LATE" => Some(Self::PresentLate),
8900                "PRESENT_EARLY" => Some(Self::PresentEarly),
8901                "PRESENT_DROPPED" => Some(Self::PresentDropped),
8902                "PRESENT_UNKNOWN" => Some(Self::PresentUnknown),
8903                _ => None,
8904            }
8905        }
8906    }
8907    /// Specifies if the predictions for the frame are still valid, expired or
8908    /// unknown.
8909    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8910    #[repr(i32)]
8911    pub enum PredictionType {
8912        PredictionUnspecified = 0,
8913        PredictionValid = 1,
8914        PredictionExpired = 2,
8915        PredictionUnknown = 3,
8916    }
8917    impl PredictionType {
8918        /// String value of the enum field names used in the ProtoBuf definition.
8919        ///
8920        /// The values are not transformed in any way and thus are considered stable
8921        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8922        pub fn as_str_name(&self) -> &'static str {
8923            match self {
8924                Self::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
8925                Self::PredictionValid => "PREDICTION_VALID",
8926                Self::PredictionExpired => "PREDICTION_EXPIRED",
8927                Self::PredictionUnknown => "PREDICTION_UNKNOWN",
8928            }
8929        }
8930        /// Creates an enum from field names used in the ProtoBuf definition.
8931        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8932            match value {
8933                "PREDICTION_UNSPECIFIED" => Some(Self::PredictionUnspecified),
8934                "PREDICTION_VALID" => Some(Self::PredictionValid),
8935                "PREDICTION_EXPIRED" => Some(Self::PredictionExpired),
8936                "PREDICTION_UNKNOWN" => Some(Self::PredictionUnknown),
8937                _ => None,
8938            }
8939        }
8940    }
8941    #[derive(Clone, PartialEq, ::prost::Oneof)]
8942    pub enum Event {
8943        #[prost(message, tag = "1")]
8944        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
8945        #[prost(message, tag = "2")]
8946        ActualDisplayFrameStart(ActualDisplayFrameStart),
8947        #[prost(message, tag = "3")]
8948        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
8949        #[prost(message, tag = "4")]
8950        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
8951        #[prost(message, tag = "5")]
8952        FrameEnd(FrameEnd),
8953    }
8954}
8955/// Generated by Android's GpuService.
8956#[derive(Clone, Copy, PartialEq, ::prost::Message)]
8957pub struct GpuMemTotalEvent {
8958    #[prost(uint32, optional, tag = "1")]
8959    pub gpu_id: ::core::option::Option<u32>,
8960    #[prost(uint32, optional, tag = "2")]
8961    pub pid: ::core::option::Option<u32>,
8962    #[prost(uint64, optional, tag = "3")]
8963    pub size: ::core::option::Option<u64>,
8964}
8965/// Generated by Android's SurfaceFlinger.
8966#[derive(Clone, PartialEq, ::prost::Message)]
8967pub struct GraphicsFrameEvent {
8968    #[prost(message, optional, tag = "1")]
8969    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
8970}
8971/// Nested message and enum types in `GraphicsFrameEvent`.
8972pub mod graphics_frame_event {
8973    #[derive(Clone, PartialEq, ::prost::Message)]
8974    pub struct BufferEvent {
8975        #[prost(uint32, optional, tag = "1")]
8976        pub frame_number: ::core::option::Option<u32>,
8977        #[prost(enumeration = "BufferEventType", optional, tag = "2")]
8978        pub r#type: ::core::option::Option<i32>,
8979        #[prost(string, optional, tag = "3")]
8980        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
8981        /// If no duration is set, the event is an instant event.
8982        #[prost(uint64, optional, tag = "4")]
8983        pub duration_ns: ::core::option::Option<u64>,
8984        /// Unique buffer identifier.
8985        #[prost(uint32, optional, tag = "5")]
8986        pub buffer_id: ::core::option::Option<u32>,
8987    }
8988    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8989    #[repr(i32)]
8990    pub enum BufferEventType {
8991        Unspecified = 0,
8992        Dequeue = 1,
8993        Queue = 2,
8994        Post = 3,
8995        AcquireFence = 4,
8996        Latch = 5,
8997        /// HWC will compose this buffer
8998        HwcCompositionQueued = 6,
8999        /// renderEngine composition
9000        FallbackComposition = 7,
9001        PresentFence = 8,
9002        ReleaseFence = 9,
9003        Modify = 10,
9004        Detach = 11,
9005        Attach = 12,
9006        Cancel = 13,
9007    }
9008    impl BufferEventType {
9009        /// String value of the enum field names used in the ProtoBuf definition.
9010        ///
9011        /// The values are not transformed in any way and thus are considered stable
9012        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9013        pub fn as_str_name(&self) -> &'static str {
9014            match self {
9015                Self::Unspecified => "UNSPECIFIED",
9016                Self::Dequeue => "DEQUEUE",
9017                Self::Queue => "QUEUE",
9018                Self::Post => "POST",
9019                Self::AcquireFence => "ACQUIRE_FENCE",
9020                Self::Latch => "LATCH",
9021                Self::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
9022                Self::FallbackComposition => "FALLBACK_COMPOSITION",
9023                Self::PresentFence => "PRESENT_FENCE",
9024                Self::ReleaseFence => "RELEASE_FENCE",
9025                Self::Modify => "MODIFY",
9026                Self::Detach => "DETACH",
9027                Self::Attach => "ATTACH",
9028                Self::Cancel => "CANCEL",
9029            }
9030        }
9031        /// Creates an enum from field names used in the ProtoBuf definition.
9032        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9033            match value {
9034                "UNSPECIFIED" => Some(Self::Unspecified),
9035                "DEQUEUE" => Some(Self::Dequeue),
9036                "QUEUE" => Some(Self::Queue),
9037                "POST" => Some(Self::Post),
9038                "ACQUIRE_FENCE" => Some(Self::AcquireFence),
9039                "LATCH" => Some(Self::Latch),
9040                "HWC_COMPOSITION_QUEUED" => Some(Self::HwcCompositionQueued),
9041                "FALLBACK_COMPOSITION" => Some(Self::FallbackComposition),
9042                "PRESENT_FENCE" => Some(Self::PresentFence),
9043                "RELEASE_FENCE" => Some(Self::ReleaseFence),
9044                "MODIFY" => Some(Self::Modify),
9045                "DETACH" => Some(Self::Detach),
9046                "ATTACH" => Some(Self::Attach),
9047                "CANCEL" => Some(Self::Cancel),
9048                _ => None,
9049            }
9050        }
9051    }
9052}
9053#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9054pub struct InitialDisplayState {
9055    /// Same values as android.view.Display.STATE_*
9056    #[prost(int32, optional, tag = "1")]
9057    pub display_state: ::core::option::Option<i32>,
9058    #[prost(double, optional, tag = "2")]
9059    pub brightness: ::core::option::Option<f64>,
9060}
9061/// NetworkPacketEvent records the details of a single packet sent or received
9062/// on the network (in Linux kernel terminology, one sk_buff struct).
9063#[derive(Clone, PartialEq, ::prost::Message)]
9064pub struct NetworkPacketEvent {
9065    /// The direction traffic is flowing for this event.
9066    #[prost(enumeration = "TrafficDirection", optional, tag = "1")]
9067    pub direction: ::core::option::Option<i32>,
9068    /// The name of the interface if available (e.g. 'rmnet0').
9069    #[prost(string, optional, tag = "2")]
9070    pub interface: ::core::option::Option<::prost::alloc::string::String>,
9071    /// The length of the packet in bytes (wire_size - L2_header_size). Ignored
9072    /// when using NetworkPacketEvent as the ctx in either NetworkPacketBundle or
9073    /// NetworkPacketContext.
9074    #[prost(uint32, optional, tag = "3")]
9075    pub length: ::core::option::Option<u32>,
9076    /// The Linux user id associated with the packet's socket.
9077    #[prost(uint32, optional, tag = "4")]
9078    pub uid: ::core::option::Option<u32>,
9079    /// The Android network tag associated with the packet's socket.
9080    #[prost(uint32, optional, tag = "5")]
9081    pub tag: ::core::option::Option<u32>,
9082    /// The packet's IP protocol (TCP=6, UDP=17, etc).
9083    #[prost(uint32, optional, tag = "6")]
9084    pub ip_proto: ::core::option::Option<u32>,
9085    /// The packet's TCP flags as a bitmask (FIN=0x1, SYN=0x2, RST=0x4, etc).
9086    #[prost(uint32, optional, tag = "7")]
9087    pub tcp_flags: ::core::option::Option<u32>,
9088    /// The local udp/tcp port of the packet.
9089    #[prost(uint32, optional, tag = "8")]
9090    pub local_port: ::core::option::Option<u32>,
9091    /// The remote udp/tcp port of the packet.
9092    #[prost(uint32, optional, tag = "9")]
9093    pub remote_port: ::core::option::Option<u32>,
9094    /// The 1-byte ICMP type identifier.
9095    #[prost(uint32, optional, tag = "10")]
9096    pub icmp_type: ::core::option::Option<u32>,
9097    /// The 1-byte ICMP code identifier.
9098    #[prost(uint32, optional, tag = "11")]
9099    pub icmp_code: ::core::option::Option<u32>,
9100}
9101/// NetworkPacketBundle bundles one or more packets sharing the same attributes.
9102#[derive(Clone, PartialEq, ::prost::Message)]
9103pub struct NetworkPacketBundle {
9104    /// The timestamp of the i-th packet encoded as the nanoseconds since the
9105    /// enclosing TracePacket's timestamp.
9106    #[prost(uint64, repeated, tag = "3")]
9107    pub packet_timestamps: ::prost::alloc::vec::Vec<u64>,
9108    /// The length of the i-th packet in bytes (wire_size - L2_header_size).
9109    #[prost(uint32, repeated, tag = "4")]
9110    pub packet_lengths: ::prost::alloc::vec::Vec<u32>,
9111    /// Total number of packets in the bundle (when above aggregation_threshold).
9112    #[prost(uint32, optional, tag = "5")]
9113    pub total_packets: ::core::option::Option<u32>,
9114    /// Duration between first and last packet (when above aggregation_threshold).
9115    #[prost(uint64, optional, tag = "6")]
9116    pub total_duration: ::core::option::Option<u64>,
9117    /// Total packet length in bytes (when above aggregation_threshold).
9118    #[prost(uint64, optional, tag = "7")]
9119    pub total_length: ::core::option::Option<u64>,
9120    #[prost(oneof = "network_packet_bundle::PacketContext", tags = "1, 2")]
9121    pub packet_context: ::core::option::Option<network_packet_bundle::PacketContext>,
9122}
9123/// Nested message and enum types in `NetworkPacketBundle`.
9124pub mod network_packet_bundle {
9125    #[derive(Clone, PartialEq, ::prost::Oneof)]
9126    pub enum PacketContext {
9127        /// The intern id for looking up the associated packet context.
9128        #[prost(uint64, tag = "1")]
9129        Iid(u64),
9130        /// The inlined context for events in this bundle.
9131        #[prost(message, tag = "2")]
9132        Ctx(super::NetworkPacketEvent),
9133    }
9134}
9135/// An internable packet context.
9136#[derive(Clone, PartialEq, ::prost::Message)]
9137pub struct NetworkPacketContext {
9138    #[prost(uint64, optional, tag = "1")]
9139    pub iid: ::core::option::Option<u64>,
9140    #[prost(message, optional, tag = "2")]
9141    pub ctx: ::core::option::Option<NetworkPacketEvent>,
9142}
9143#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9144#[repr(i32)]
9145pub enum TrafficDirection {
9146    DirUnspecified = 0,
9147    DirIngress = 1,
9148    DirEgress = 2,
9149}
9150impl TrafficDirection {
9151    /// String value of the enum field names used in the ProtoBuf definition.
9152    ///
9153    /// The values are not transformed in any way and thus are considered stable
9154    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9155    pub fn as_str_name(&self) -> &'static str {
9156        match self {
9157            Self::DirUnspecified => "DIR_UNSPECIFIED",
9158            Self::DirIngress => "DIR_INGRESS",
9159            Self::DirEgress => "DIR_EGRESS",
9160        }
9161    }
9162    /// Creates an enum from field names used in the ProtoBuf definition.
9163    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9164        match value {
9165            "DIR_UNSPECIFIED" => Some(Self::DirUnspecified),
9166            "DIR_INGRESS" => Some(Self::DirIngress),
9167            "DIR_EGRESS" => Some(Self::DirEgress),
9168            _ => None,
9169        }
9170    }
9171}
9172#[derive(Clone, PartialEq, ::prost::Message)]
9173pub struct PackagesList {
9174    #[prost(message, repeated, tag = "1")]
9175    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
9176    /// At least one error occurred parsing the packages.list.
9177    #[prost(bool, optional, tag = "2")]
9178    pub parse_error: ::core::option::Option<bool>,
9179    /// Failed to open / read packages.list.
9180    #[prost(bool, optional, tag = "3")]
9181    pub read_error: ::core::option::Option<bool>,
9182}
9183/// Nested message and enum types in `PackagesList`.
9184pub mod packages_list {
9185    #[derive(Clone, PartialEq, ::prost::Message)]
9186    pub struct PackageInfo {
9187        #[prost(string, optional, tag = "1")]
9188        pub name: ::core::option::Option<::prost::alloc::string::String>,
9189        #[prost(uint64, optional, tag = "2")]
9190        pub uid: ::core::option::Option<u64>,
9191        #[prost(bool, optional, tag = "3")]
9192        pub debuggable: ::core::option::Option<bool>,
9193        #[prost(bool, optional, tag = "4")]
9194        pub profileable_from_shell: ::core::option::Option<bool>,
9195        #[prost(int64, optional, tag = "5")]
9196        pub version_code: ::core::option::Option<i64>,
9197    }
9198}
9199#[derive(Clone, PartialEq, ::prost::Message)]
9200pub struct PixelModemEvents {
9201    /// Pigweed-format dehydrated events.
9202    #[prost(bytes = "vec", repeated, tag = "1")]
9203    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
9204    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
9205    /// timestamp is the absolute timestamp of the first event. Subsequent
9206    /// timestamps are deltas from the previous timestamp.
9207    /// The nth entry from `events` gets the nth entry here.
9208    #[prost(uint64, repeated, packed = "false", tag = "2")]
9209    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
9210}
9211/// NB: this is not emitted in the trace but can be prepended later.
9212#[derive(Clone, PartialEq, ::prost::Message)]
9213pub struct PixelModemTokenDatabase {
9214    /// Pigweed-format database to allow event rehydration.
9215    #[prost(bytes = "vec", optional, tag = "1")]
9216    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9217}
9218/// represents a single log entry
9219#[derive(Clone, PartialEq, ::prost::Message)]
9220pub struct ProtoLogMessage {
9221    /// log statement identifier, created from message string and log level.
9222    #[prost(fixed64, optional, tag = "1")]
9223    pub message_id: ::core::option::Option<u64>,
9224    /// string parameters passed to the log call that have been interned.
9225    #[prost(uint32, repeated, packed = "false", tag = "2")]
9226    pub str_param_iids: ::prost::alloc::vec::Vec<u32>,
9227    /// integer parameters passed to the log call.
9228    #[prost(sint64, repeated, packed = "false", tag = "3")]
9229    pub sint64_params: ::prost::alloc::vec::Vec<i64>,
9230    /// floating point parameters passed to the log call.
9231    #[prost(double, repeated, packed = "false", tag = "4")]
9232    pub double_params: ::prost::alloc::vec::Vec<f64>,
9233    /// boolean parameters passed to the log call.
9234    #[prost(int32, repeated, packed = "false", tag = "5")]
9235    pub boolean_params: ::prost::alloc::vec::Vec<i32>,
9236    /// id of the interned stacktrace string
9237    /// (only dumped if explicitly confuigured to do so)
9238    #[prost(uint32, optional, tag = "6")]
9239    pub stacktrace_iid: ::core::option::Option<u32>,
9240}
9241/// contains all the data required to fully decode the protolog messages
9242#[derive(Clone, PartialEq, ::prost::Message)]
9243pub struct ProtoLogViewerConfig {
9244    #[prost(message, repeated, tag = "1")]
9245    pub messages: ::prost::alloc::vec::Vec<proto_log_viewer_config::MessageData>,
9246    #[prost(message, repeated, tag = "2")]
9247    pub groups: ::prost::alloc::vec::Vec<proto_log_viewer_config::Group>,
9248}
9249/// Nested message and enum types in `ProtoLogViewerConfig`.
9250pub mod proto_log_viewer_config {
9251    #[derive(Clone, PartialEq, ::prost::Message)]
9252    pub struct MessageData {
9253        /// the id of the message that is logged in a ProtoLogMessage
9254        #[prost(fixed64, optional, tag = "1")]
9255        pub message_id: ::core::option::Option<u64>,
9256        /// the string representation of the message
9257        #[prost(string, optional, tag = "2")]
9258        pub message: ::core::option::Option<::prost::alloc::string::String>,
9259        /// the level of the message
9260        #[prost(enumeration = "super::ProtoLogLevel", optional, tag = "3")]
9261        pub level: ::core::option::Option<i32>,
9262        /// the id of the log group this message belongs to
9263        #[prost(uint32, optional, tag = "4")]
9264        pub group_id: ::core::option::Option<u32>,
9265    }
9266    /// information about a ProtoLog log group
9267    #[derive(Clone, PartialEq, ::prost::Message)]
9268    pub struct Group {
9269        #[prost(uint32, optional, tag = "1")]
9270        pub id: ::core::option::Option<u32>,
9271        #[prost(string, optional, tag = "2")]
9272        pub name: ::core::option::Option<::prost::alloc::string::String>,
9273        #[prost(string, optional, tag = "3")]
9274        pub tag: ::core::option::Option<::prost::alloc::string::String>,
9275    }
9276}
9277/// ShellTransition messages record information about the shell transitions in
9278/// the system. This is used to track the animations that are created and execute
9279/// through the shell transition system.
9280#[derive(Clone, PartialEq, ::prost::Message)]
9281pub struct ShellTransition {
9282    /// The unique identifier of the transition.
9283    #[prost(int32, optional, tag = "1")]
9284    pub id: ::core::option::Option<i32>,
9285    /// The time the transition was created on the WM side
9286    /// (using SystemClock.elapsedRealtimeNanos())
9287    #[prost(int64, optional, tag = "2")]
9288    pub create_time_ns: ::core::option::Option<i64>,
9289    /// The time the transition was sent from the WM side to shell
9290    /// (using SystemClock.elapsedRealtimeNanos())
9291    #[prost(int64, optional, tag = "3")]
9292    pub send_time_ns: ::core::option::Option<i64>,
9293    /// The time the transition was dispatched by shell to execute
9294    /// (using SystemClock.elapsedRealtimeNanos())
9295    #[prost(int64, optional, tag = "4")]
9296    pub dispatch_time_ns: ::core::option::Option<i64>,
9297    /// If the transition merge was accepted by the transition handler, this
9298    /// contains the time the transition was merged into transition with id
9299    /// `merge_target`.
9300    /// (using SystemClock.elapsedRealtimeNanos())
9301    #[prost(int64, optional, tag = "5")]
9302    pub merge_time_ns: ::core::option::Option<i64>,
9303    /// The time shell proposed the transition should be merged to the transition
9304    /// handler into transition with id `merge_target`.
9305    /// (using SystemClock.elapsedRealtimeNanos()).
9306    #[prost(int64, optional, tag = "6")]
9307    pub merge_request_time_ns: ::core::option::Option<i64>,
9308    /// If the transition was aborted on the shell side, this is the time that
9309    /// occurred.
9310    /// (using SystemClock.elapsedRealtimeNanos())
9311    #[prost(int64, optional, tag = "7")]
9312    pub shell_abort_time_ns: ::core::option::Option<i64>,
9313    /// If the transition was aborted on the wm side, this is the time that
9314    /// occurred.
9315    /// (using SystemClock.elapsedRealtimeNanos())
9316    #[prost(int64, optional, tag = "8")]
9317    pub wm_abort_time_ns: ::core::option::Option<i64>,
9318    /// The time WM considers the transition to be complete.
9319    /// (using SystemClock.elapsedRealtimeNanos())
9320    #[prost(int64, optional, tag = "9")]
9321    pub finish_time_ns: ::core::option::Option<i64>,
9322    /// The id of the transaction that WM proposed to use as the starting
9323    /// transaction. It contains all the layer changes required to setup the
9324    /// transition and should be executed right at the start of the transition
9325    /// by the transition handler.
9326    #[prost(uint64, optional, tag = "10")]
9327    pub start_transaction_id: ::core::option::Option<u64>,
9328    /// The if of the transaction that WM proposed to use as the finish
9329    /// transaction. It contains all the layer changes required to set the final
9330    /// state of the transition.
9331    #[prost(uint64, optional, tag = "11")]
9332    pub finish_transaction_id: ::core::option::Option<u64>,
9333    /// The id of the handler that executed the transition. A HandlerMappings
9334    /// message in the trace will contain the mapping of id to a string
9335    /// representation of the handler.
9336    #[prost(int32, optional, tag = "12")]
9337    pub handler: ::core::option::Option<i32>,
9338    /// The transition type of this transition (e.g. TO_FRONT, OPEN, CLOSE).
9339    #[prost(int32, optional, tag = "13")]
9340    pub r#type: ::core::option::Option<i32>,
9341    /// The list of targets that are part of this transition.
9342    #[prost(message, repeated, tag = "14")]
9343    pub targets: ::prost::alloc::vec::Vec<shell_transition::Target>,
9344    /// The id of the transition we have requested to merge or have merged this
9345    /// transition into.
9346    #[prost(int32, optional, tag = "15")]
9347    pub merge_target: ::core::option::Option<i32>,
9348    /// The flags set on this transition.
9349    #[prost(int32, optional, tag = "16")]
9350    pub flags: ::core::option::Option<i32>,
9351    /// The time the starting window was removed. Tracked because this can
9352    /// happen after the transition finishes, but the app may not yet be visible
9353    /// until the starting window is removed. So in a sense the transition is not
9354    /// finished until the starting window is removed. (b/284302118)
9355    /// (using SystemClock.elapsedRealtimeNanos())
9356    #[prost(int64, optional, tag = "17")]
9357    pub starting_window_remove_time_ns: ::core::option::Option<i64>,
9358}
9359/// Nested message and enum types in `ShellTransition`.
9360pub mod shell_transition {
9361    /// Contains the information about the windows targeted in a transition.
9362    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9363    pub struct Target {
9364        /// The transition mode of this target (e.g. TO_FRONT, CLOSE...)
9365        #[prost(int32, optional, tag = "1")]
9366        pub mode: ::core::option::Option<i32>,
9367        /// The layer id of this target.
9368        #[prost(int32, optional, tag = "2")]
9369        pub layer_id: ::core::option::Option<i32>,
9370        /// The window id of this target.
9371        #[prost(int32, optional, tag = "3")]
9372        pub window_id: ::core::option::Option<i32>,
9373        /// The flags set on this target.
9374        #[prost(int32, optional, tag = "4")]
9375        pub flags: ::core::option::Option<i32>,
9376    }
9377}
9378/// Contains mappings from handler ids to string representation of the handlers.
9379#[derive(Clone, PartialEq, ::prost::Message)]
9380pub struct ShellHandlerMappings {
9381    #[prost(message, repeated, tag = "1")]
9382    pub mapping: ::prost::alloc::vec::Vec<ShellHandlerMapping>,
9383}
9384#[derive(Clone, PartialEq, ::prost::Message)]
9385pub struct ShellHandlerMapping {
9386    /// The id of the handler used in the ShellTransition message.
9387    #[prost(int32, optional, tag = "1")]
9388    pub id: ::core::option::Option<i32>,
9389    /// A human readable and meaningful string representation of the handler.
9390    #[prost(string, optional, tag = "2")]
9391    pub name: ::core::option::Option<::prost::alloc::string::String>,
9392}
9393#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9394pub struct RectProto {
9395    #[prost(int32, optional, tag = "1")]
9396    pub left: ::core::option::Option<i32>,
9397    #[prost(int32, optional, tag = "2")]
9398    pub top: ::core::option::Option<i32>,
9399    #[prost(int32, optional, tag = "3")]
9400    pub right: ::core::option::Option<i32>,
9401    #[prost(int32, optional, tag = "4")]
9402    pub bottom: ::core::option::Option<i32>,
9403}
9404#[derive(Clone, PartialEq, ::prost::Message)]
9405pub struct RegionProto {
9406    #[prost(message, repeated, tag = "2")]
9407    pub rect: ::prost::alloc::vec::Vec<RectProto>,
9408}
9409#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9410pub struct SizeProto {
9411    #[prost(int32, optional, tag = "1")]
9412    pub w: ::core::option::Option<i32>,
9413    #[prost(int32, optional, tag = "2")]
9414    pub h: ::core::option::Option<i32>,
9415}
9416#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9417pub struct TransformProto {
9418    #[prost(float, optional, tag = "1")]
9419    pub dsdx: ::core::option::Option<f32>,
9420    #[prost(float, optional, tag = "2")]
9421    pub dtdx: ::core::option::Option<f32>,
9422    #[prost(float, optional, tag = "3")]
9423    pub dsdy: ::core::option::Option<f32>,
9424    #[prost(float, optional, tag = "4")]
9425    pub dtdy: ::core::option::Option<f32>,
9426    #[prost(int32, optional, tag = "5")]
9427    pub r#type: ::core::option::Option<i32>,
9428}
9429#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9430pub struct ColorProto {
9431    #[prost(float, optional, tag = "1")]
9432    pub r: ::core::option::Option<f32>,
9433    #[prost(float, optional, tag = "2")]
9434    pub g: ::core::option::Option<f32>,
9435    #[prost(float, optional, tag = "3")]
9436    pub b: ::core::option::Option<f32>,
9437    #[prost(float, optional, tag = "4")]
9438    pub a: ::core::option::Option<f32>,
9439}
9440#[derive(Clone, PartialEq, ::prost::Message)]
9441pub struct InputWindowInfoProto {
9442    #[prost(uint32, optional, tag = "1")]
9443    pub layout_params_flags: ::core::option::Option<u32>,
9444    #[prost(int32, optional, tag = "2")]
9445    pub layout_params_type: ::core::option::Option<i32>,
9446    #[prost(message, optional, tag = "3")]
9447    pub frame: ::core::option::Option<RectProto>,
9448    #[prost(message, optional, tag = "4")]
9449    pub touchable_region: ::core::option::Option<RegionProto>,
9450    #[prost(int32, optional, tag = "5")]
9451    pub surface_inset: ::core::option::Option<i32>,
9452    #[prost(bool, optional, tag = "6")]
9453    pub visible: ::core::option::Option<bool>,
9454    #[deprecated]
9455    #[prost(bool, optional, tag = "7")]
9456    pub can_receive_keys: ::core::option::Option<bool>,
9457    #[prost(bool, optional, tag = "8")]
9458    pub focusable: ::core::option::Option<bool>,
9459    #[prost(bool, optional, tag = "9")]
9460    pub has_wallpaper: ::core::option::Option<bool>,
9461    #[prost(float, optional, tag = "10")]
9462    pub global_scale_factor: ::core::option::Option<f32>,
9463    #[deprecated]
9464    #[prost(float, optional, tag = "11")]
9465    pub window_x_scale: ::core::option::Option<f32>,
9466    #[deprecated]
9467    #[prost(float, optional, tag = "12")]
9468    pub window_y_scale: ::core::option::Option<f32>,
9469    #[prost(int32, optional, tag = "13")]
9470    pub crop_layer_id: ::core::option::Option<i32>,
9471    #[prost(bool, optional, tag = "14")]
9472    pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
9473    #[prost(message, optional, tag = "15")]
9474    pub touchable_region_crop: ::core::option::Option<RectProto>,
9475    #[prost(message, optional, tag = "16")]
9476    pub transform: ::core::option::Option<TransformProto>,
9477    #[prost(uint32, optional, tag = "17")]
9478    pub input_config: ::core::option::Option<u32>,
9479}
9480#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9481pub struct BlurRegion {
9482    #[prost(uint32, optional, tag = "1")]
9483    pub blur_radius: ::core::option::Option<u32>,
9484    #[prost(uint32, optional, tag = "2")]
9485    pub corner_radius_tl: ::core::option::Option<u32>,
9486    #[prost(uint32, optional, tag = "3")]
9487    pub corner_radius_tr: ::core::option::Option<u32>,
9488    #[prost(uint32, optional, tag = "4")]
9489    pub corner_radius_bl: ::core::option::Option<u32>,
9490    #[prost(float, optional, tag = "5")]
9491    pub corner_radius_br: ::core::option::Option<f32>,
9492    #[prost(float, optional, tag = "6")]
9493    pub alpha: ::core::option::Option<f32>,
9494    #[prost(int32, optional, tag = "7")]
9495    pub left: ::core::option::Option<i32>,
9496    #[prost(int32, optional, tag = "8")]
9497    pub top: ::core::option::Option<i32>,
9498    #[prost(int32, optional, tag = "9")]
9499    pub right: ::core::option::Option<i32>,
9500    #[prost(int32, optional, tag = "10")]
9501    pub bottom: ::core::option::Option<i32>,
9502}
9503#[derive(Clone, PartialEq, ::prost::Message)]
9504pub struct ColorTransformProto {
9505    /// This will be a 4x4 matrix of float values
9506    #[prost(float, repeated, tag = "1")]
9507    pub val: ::prost::alloc::vec::Vec<f32>,
9508}
9509#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9510#[repr(i32)]
9511pub enum TrustedOverlay {
9512    Unset = 0,
9513    Disabled = 1,
9514    Enabled = 2,
9515}
9516impl TrustedOverlay {
9517    /// String value of the enum field names used in the ProtoBuf definition.
9518    ///
9519    /// The values are not transformed in any way and thus are considered stable
9520    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9521    pub fn as_str_name(&self) -> &'static str {
9522        match self {
9523            Self::Unset => "UNSET",
9524            Self::Disabled => "DISABLED",
9525            Self::Enabled => "ENABLED",
9526        }
9527    }
9528    /// Creates an enum from field names used in the ProtoBuf definition.
9529    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9530        match value {
9531            "UNSET" => Some(Self::Unset),
9532            "DISABLED" => Some(Self::Disabled),
9533            "ENABLED" => Some(Self::Enabled),
9534            _ => None,
9535        }
9536    }
9537}
9538/// Message used by Winscope to process legacy trace files.
9539/// Represents a file full of surface flinger trace entries.
9540/// Encoded, it should start with 0x4c 0x59 0x52 0x54 0x52 0x41 0x43 0x45
9541/// (.LYRTRACE), such that they can be easily identified.
9542#[derive(Clone, PartialEq, ::prost::Message)]
9543pub struct LayersTraceFileProto {
9544    /// Must be the first field, set to value in MagicNumber
9545    #[prost(fixed64, optional, tag = "1")]
9546    pub magic_number: ::core::option::Option<u64>,
9547    #[prost(message, repeated, tag = "2")]
9548    pub entry: ::prost::alloc::vec::Vec<LayersSnapshotProto>,
9549    /// Offset between real-time clock and elapsed time clock in nanoseconds.
9550    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
9551    /// systemTime(SYSTEM_TIME_MONOTONIC)
9552    #[prost(fixed64, optional, tag = "3")]
9553    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
9554}
9555/// Nested message and enum types in `LayersTraceFileProto`.
9556pub mod layers_trace_file_proto {
9557    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
9558    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
9559    /// and there's no nice way to put 64bit constants into .proto files.
9560    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9561    #[repr(i32)]
9562    pub enum MagicNumber {
9563        Invalid = 0,
9564        /// LYRT (little-endian ASCII)
9565        L = 1414682956,
9566        /// RACE (little-endian ASCII)
9567        H = 1162035538,
9568    }
9569    impl MagicNumber {
9570        /// String value of the enum field names used in the ProtoBuf definition.
9571        ///
9572        /// The values are not transformed in any way and thus are considered stable
9573        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9574        pub fn as_str_name(&self) -> &'static str {
9575            match self {
9576                Self::Invalid => "INVALID",
9577                Self::L => "MAGIC_NUMBER_L",
9578                Self::H => "MAGIC_NUMBER_H",
9579            }
9580        }
9581        /// Creates an enum from field names used in the ProtoBuf definition.
9582        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9583            match value {
9584                "INVALID" => Some(Self::Invalid),
9585                "MAGIC_NUMBER_L" => Some(Self::L),
9586                "MAGIC_NUMBER_H" => Some(Self::H),
9587                _ => None,
9588            }
9589        }
9590    }
9591}
9592#[derive(Clone, PartialEq, ::prost::Message)]
9593pub struct LayersSnapshotProto {
9594    /// elapsed realtime in nanos since boot of when this entry was logged
9595    #[prost(sfixed64, optional, tag = "1")]
9596    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
9597    /// SurfaceFlinger's stage where the snapshot was triggered.
9598    /// Currently either "visibleRegionsDirty" or "bufferLatched".
9599    #[prost(string, optional, tag = "2")]
9600    pub r#where: ::core::option::Option<::prost::alloc::string::String>,
9601    #[prost(message, optional, tag = "3")]
9602    pub layers: ::core::option::Option<LayersProto>,
9603    /// Blob for the current HWC information for all layers, reported by dumpsys.
9604    /// Example:
9605    ///    "maxDownScale: 4, maxFullWidth: 8192, HWState: 1, AssignedState: 3, ..."
9606    #[prost(string, optional, tag = "4")]
9607    pub hwc_blob: ::core::option::Option<::prost::alloc::string::String>,
9608    /// Excludes state sent during composition like visible region and composition
9609    /// type.
9610    #[prost(bool, optional, tag = "5")]
9611    pub excludes_composition_state: ::core::option::Option<bool>,
9612    /// Number of missed entries since the last entry was recorded.
9613    #[prost(uint32, optional, tag = "6")]
9614    pub missed_entries: ::core::option::Option<u32>,
9615    #[prost(message, repeated, tag = "7")]
9616    pub displays: ::prost::alloc::vec::Vec<DisplayProto>,
9617    #[prost(int64, optional, tag = "8")]
9618    pub vsync_id: ::core::option::Option<i64>,
9619}
9620/// Contains a list of all layers.
9621#[derive(Clone, PartialEq, ::prost::Message)]
9622pub struct LayersProto {
9623    #[prost(message, repeated, tag = "1")]
9624    pub layers: ::prost::alloc::vec::Vec<LayerProto>,
9625}
9626#[derive(Clone, PartialEq, ::prost::Message)]
9627pub struct DisplayProto {
9628    #[prost(uint64, optional, tag = "1")]
9629    pub id: ::core::option::Option<u64>,
9630    /// Display descriptor, e.g. "Built-In Screen"
9631    #[prost(string, optional, tag = "2")]
9632    pub name: ::core::option::Option<::prost::alloc::string::String>,
9633    #[prost(uint32, optional, tag = "3")]
9634    pub layer_stack: ::core::option::Option<u32>,
9635    #[prost(message, optional, tag = "4")]
9636    pub size: ::core::option::Option<SizeProto>,
9637    #[prost(message, optional, tag = "5")]
9638    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
9639    #[prost(message, optional, tag = "6")]
9640    pub transform: ::core::option::Option<TransformProto>,
9641    #[prost(bool, optional, tag = "7")]
9642    pub is_virtual: ::core::option::Option<bool>,
9643    #[prost(double, optional, tag = "8")]
9644    pub dpi_x: ::core::option::Option<f64>,
9645    #[prost(double, optional, tag = "9")]
9646    pub dpi_y: ::core::option::Option<f64>,
9647}
9648/// Information about each layer.
9649#[derive(Clone, PartialEq, ::prost::Message)]
9650pub struct LayerProto {
9651    /// unique id per layer.
9652    #[prost(int32, optional, tag = "1")]
9653    pub id: ::core::option::Option<i32>,
9654    /// unique name per layer.
9655    /// Example: "Wallpaper".
9656    #[prost(string, optional, tag = "2")]
9657    pub name: ::core::option::Option<::prost::alloc::string::String>,
9658    /// list of children this layer may have. May be empty.
9659    #[prost(int32, repeated, tag = "3")]
9660    pub children: ::prost::alloc::vec::Vec<i32>,
9661    /// list of layers that are z order relative to this layer.
9662    #[prost(int32, repeated, tag = "4")]
9663    pub relatives: ::prost::alloc::vec::Vec<i32>,
9664    /// The type of layer.
9665    /// Examples: "ContainerLayer", "BufferStateLayer".
9666    #[prost(string, optional, tag = "5")]
9667    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
9668    #[prost(message, optional, tag = "6")]
9669    pub transparent_region: ::core::option::Option<RegionProto>,
9670    #[prost(message, optional, tag = "7")]
9671    pub visible_region: ::core::option::Option<RegionProto>,
9672    #[prost(message, optional, tag = "8")]
9673    pub damage_region: ::core::option::Option<RegionProto>,
9674    #[prost(uint32, optional, tag = "9")]
9675    pub layer_stack: ::core::option::Option<u32>,
9676    /// The layer's z order. Can be z order in layer stack, relative to parent,
9677    /// or relative to another layer specified in zOrderRelative.
9678    #[prost(int32, optional, tag = "10")]
9679    pub z: ::core::option::Option<i32>,
9680    /// The layer's position on the display.
9681    #[prost(message, optional, tag = "11")]
9682    pub position: ::core::option::Option<PositionProto>,
9683    /// The layer's requested position.
9684    #[prost(message, optional, tag = "12")]
9685    pub requested_position: ::core::option::Option<PositionProto>,
9686    /// The layer's size.
9687    #[prost(message, optional, tag = "13")]
9688    pub size: ::core::option::Option<SizeProto>,
9689    /// The layer's crop in its own bounds.
9690    #[prost(message, optional, tag = "14")]
9691    pub crop: ::core::option::Option<RectProto>,
9692    /// The layer's crop in its parent's bounds.
9693    #[deprecated]
9694    #[prost(message, optional, tag = "15")]
9695    pub final_crop: ::core::option::Option<RectProto>,
9696    #[prost(bool, optional, tag = "16")]
9697    pub is_opaque: ::core::option::Option<bool>,
9698    #[prost(bool, optional, tag = "17")]
9699    pub invalidate: ::core::option::Option<bool>,
9700    /// Composition states's dataspace.
9701    /// Examples: "STANDARD_BT709", "STANDARD_BT601_625".
9702    /// See full enum in
9703    /// frameworks/native/libs/nativewindow/include/android/data_space.h
9704    #[prost(string, optional, tag = "18")]
9705    pub dataspace: ::core::option::Option<::prost::alloc::string::String>,
9706    /// Buffer's pixel format
9707    /// Examples: "PIXEL_FORMAT_TRANSLUCENT", "PIXEL_FORMAT_RGBA_8888".
9708    /// See full enum in frameworks/native/libs/ui/include/ui/PixelFormat.h
9709    #[prost(string, optional, tag = "19")]
9710    pub pixel_format: ::core::option::Option<::prost::alloc::string::String>,
9711    /// The layer's actual color.
9712    #[prost(message, optional, tag = "20")]
9713    pub color: ::core::option::Option<ColorProto>,
9714    /// The layer's requested color.
9715    #[prost(message, optional, tag = "21")]
9716    pub requested_color: ::core::option::Option<ColorProto>,
9717    /// Can be any combination of
9718    ///     hidden = 0x01
9719    ///     opaque = 0x02,
9720    ///     secure = 0x80,
9721    #[prost(uint32, optional, tag = "22")]
9722    pub flags: ::core::option::Option<u32>,
9723    /// The layer's actual transform
9724    #[prost(message, optional, tag = "23")]
9725    pub transform: ::core::option::Option<TransformProto>,
9726    /// The layer's requested transform.
9727    #[prost(message, optional, tag = "24")]
9728    pub requested_transform: ::core::option::Option<TransformProto>,
9729    /// The parent layer. This value can be null if there is no parent.
9730    #[prost(int32, optional, tag = "25")]
9731    pub parent: ::core::option::Option<i32>,
9732    /// The layer that this layer has a z order relative to. This value can be
9733    /// null.
9734    #[prost(int32, optional, tag = "26")]
9735    pub z_order_relative_of: ::core::option::Option<i32>,
9736    /// This value can be null if there's nothing to draw.
9737    #[prost(message, optional, tag = "27")]
9738    pub active_buffer: ::core::option::Option<ActiveBufferProto>,
9739    /// The number of frames available.
9740    #[prost(int32, optional, tag = "28")]
9741    pub queued_frames: ::core::option::Option<i32>,
9742    #[prost(bool, optional, tag = "29")]
9743    pub refresh_pending: ::core::option::Option<bool>,
9744    /// The layer's composer backend destination frame
9745    #[prost(message, optional, tag = "30")]
9746    pub hwc_frame: ::core::option::Option<RectProto>,
9747    /// The layer's composer backend source crop
9748    #[prost(message, optional, tag = "31")]
9749    pub hwc_crop: ::core::option::Option<FloatRectProto>,
9750    /// The layer's composer backend transform
9751    #[prost(int32, optional, tag = "32")]
9752    pub hwc_transform: ::core::option::Option<i32>,
9753    #[deprecated]
9754    #[prost(int32, optional, tag = "33")]
9755    pub window_type: ::core::option::Option<i32>,
9756    #[deprecated]
9757    #[prost(int32, optional, tag = "34")]
9758    pub app_id: ::core::option::Option<i32>,
9759    /// The layer's composition type
9760    #[prost(enumeration = "HwcCompositionType", optional, tag = "35")]
9761    pub hwc_composition_type: ::core::option::Option<i32>,
9762    /// If it's a buffer layer, indicate if the content is protected
9763    #[prost(bool, optional, tag = "36")]
9764    pub is_protected: ::core::option::Option<bool>,
9765    /// Current frame number being rendered.
9766    #[prost(uint64, optional, tag = "37")]
9767    pub curr_frame: ::core::option::Option<u64>,
9768    /// A list of barriers that the layer is waiting to update state.
9769    #[prost(message, repeated, tag = "38")]
9770    pub barrier_layer: ::prost::alloc::vec::Vec<BarrierLayerProto>,
9771    /// If active_buffer is not null, record its transform.
9772    #[prost(message, optional, tag = "39")]
9773    pub buffer_transform: ::core::option::Option<TransformProto>,
9774    #[prost(int32, optional, tag = "40")]
9775    pub effective_scaling_mode: ::core::option::Option<i32>,
9776    /// Layer's corner radius.
9777    #[prost(float, optional, tag = "41")]
9778    pub corner_radius: ::core::option::Option<f32>,
9779    /// Metadata map. May be empty.
9780    #[prost(map = "int32, string", tag = "42")]
9781    pub metadata: ::std::collections::HashMap<i32, ::prost::alloc::string::String>,
9782    #[prost(message, optional, tag = "43")]
9783    pub effective_transform: ::core::option::Option<TransformProto>,
9784    #[prost(message, optional, tag = "44")]
9785    pub source_bounds: ::core::option::Option<FloatRectProto>,
9786    #[prost(message, optional, tag = "45")]
9787    pub bounds: ::core::option::Option<FloatRectProto>,
9788    #[prost(message, optional, tag = "46")]
9789    pub screen_bounds: ::core::option::Option<FloatRectProto>,
9790    #[prost(message, optional, tag = "47")]
9791    pub input_window_info: ::core::option::Option<InputWindowInfoProto>,
9792    /// Crop used to draw the rounded corner.
9793    #[prost(message, optional, tag = "48")]
9794    pub corner_radius_crop: ::core::option::Option<FloatRectProto>,
9795    /// length of the shadow to draw around the layer, it may be set on the
9796    /// layer or set by a parent layer.
9797    #[prost(float, optional, tag = "49")]
9798    pub shadow_radius: ::core::option::Option<f32>,
9799    #[prost(message, optional, tag = "50")]
9800    pub color_transform: ::core::option::Option<ColorTransformProto>,
9801    #[prost(bool, optional, tag = "51")]
9802    pub is_relative_of: ::core::option::Option<bool>,
9803    /// Layer's background blur radius in pixels.
9804    #[prost(int32, optional, tag = "52")]
9805    pub background_blur_radius: ::core::option::Option<i32>,
9806    #[prost(uint32, optional, tag = "53")]
9807    pub owner_uid: ::core::option::Option<u32>,
9808    /// Regions of a layer, where blur should be applied.
9809    #[prost(message, repeated, tag = "54")]
9810    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
9811    #[prost(bool, optional, tag = "55")]
9812    pub is_trusted_overlay: ::core::option::Option<bool>,
9813    /// Corner radius explicitly set on layer rather than inherited
9814    #[prost(float, optional, tag = "56")]
9815    pub requested_corner_radius: ::core::option::Option<f32>,
9816    #[prost(message, optional, tag = "57")]
9817    pub destination_frame: ::core::option::Option<RectProto>,
9818    #[prost(uint32, optional, tag = "58")]
9819    pub original_id: ::core::option::Option<u32>,
9820    #[prost(enumeration = "TrustedOverlay", optional, tag = "59")]
9821    pub trusted_overlay: ::core::option::Option<i32>,
9822}
9823#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9824pub struct PositionProto {
9825    #[prost(float, optional, tag = "1")]
9826    pub x: ::core::option::Option<f32>,
9827    #[prost(float, optional, tag = "2")]
9828    pub y: ::core::option::Option<f32>,
9829}
9830#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9831pub struct FloatRectProto {
9832    #[prost(float, optional, tag = "1")]
9833    pub left: ::core::option::Option<f32>,
9834    #[prost(float, optional, tag = "2")]
9835    pub top: ::core::option::Option<f32>,
9836    #[prost(float, optional, tag = "3")]
9837    pub right: ::core::option::Option<f32>,
9838    #[prost(float, optional, tag = "4")]
9839    pub bottom: ::core::option::Option<f32>,
9840}
9841#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9842pub struct ActiveBufferProto {
9843    #[prost(uint32, optional, tag = "1")]
9844    pub width: ::core::option::Option<u32>,
9845    #[prost(uint32, optional, tag = "2")]
9846    pub height: ::core::option::Option<u32>,
9847    #[prost(uint32, optional, tag = "3")]
9848    pub stride: ::core::option::Option<u32>,
9849    #[prost(int32, optional, tag = "4")]
9850    pub format: ::core::option::Option<i32>,
9851    #[prost(uint64, optional, tag = "5")]
9852    pub usage: ::core::option::Option<u64>,
9853}
9854#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9855pub struct BarrierLayerProto {
9856    /// layer id the barrier is waiting on.
9857    #[prost(int32, optional, tag = "1")]
9858    pub id: ::core::option::Option<i32>,
9859    /// frame number the barrier is waiting on.
9860    #[prost(uint64, optional, tag = "2")]
9861    pub frame_number: ::core::option::Option<u64>,
9862}
9863/// Must match definition in the IComposerClient HAL
9864#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9865#[repr(i32)]
9866pub enum HwcCompositionType {
9867    /// Invalid composition type
9868    HwcTypeUnspecified = 0,
9869    /// Layer was composited by the client into the client target buffer
9870    HwcTypeClient = 1,
9871    /// Layer was composited by the device through hardware overlays
9872    HwcTypeDevice = 2,
9873    /// Layer was composited by the device using a color
9874    HwcTypeSolidColor = 3,
9875    /// Similar to DEVICE, but the layer position may have been asynchronously set
9876    /// through setCursorPosition
9877    HwcTypeCursor = 4,
9878    /// Layer was composited by the device via a sideband stream
9879    HwcTypeSideband = 5,
9880    /// Layer was composited by hardware optimized for display decoration
9881    HwcTypeDisplayDecoration = 6,
9882}
9883impl HwcCompositionType {
9884    /// String value of the enum field names used in the ProtoBuf definition.
9885    ///
9886    /// The values are not transformed in any way and thus are considered stable
9887    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9888    pub fn as_str_name(&self) -> &'static str {
9889        match self {
9890            Self::HwcTypeUnspecified => "HWC_TYPE_UNSPECIFIED",
9891            Self::HwcTypeClient => "HWC_TYPE_CLIENT",
9892            Self::HwcTypeDevice => "HWC_TYPE_DEVICE",
9893            Self::HwcTypeSolidColor => "HWC_TYPE_SOLID_COLOR",
9894            Self::HwcTypeCursor => "HWC_TYPE_CURSOR",
9895            Self::HwcTypeSideband => "HWC_TYPE_SIDEBAND",
9896            Self::HwcTypeDisplayDecoration => "HWC_TYPE_DISPLAY_DECORATION",
9897        }
9898    }
9899    /// Creates an enum from field names used in the ProtoBuf definition.
9900    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9901        match value {
9902            "HWC_TYPE_UNSPECIFIED" => Some(Self::HwcTypeUnspecified),
9903            "HWC_TYPE_CLIENT" => Some(Self::HwcTypeClient),
9904            "HWC_TYPE_DEVICE" => Some(Self::HwcTypeDevice),
9905            "HWC_TYPE_SOLID_COLOR" => Some(Self::HwcTypeSolidColor),
9906            "HWC_TYPE_CURSOR" => Some(Self::HwcTypeCursor),
9907            "HWC_TYPE_SIDEBAND" => Some(Self::HwcTypeSideband),
9908            "HWC_TYPE_DISPLAY_DECORATION" => Some(Self::HwcTypeDisplayDecoration),
9909            _ => None,
9910        }
9911    }
9912}
9913/// Message used by Winscope to process legacy trace files.
9914/// Represents a file full of surface flinger transactions.
9915/// Encoded, it should start with 0x54 0x4E 0x58 0x54 0x52 0x41 0x43 0x45
9916/// (.TNXTRACE), such that they can be easily identified.
9917#[derive(Clone, PartialEq, ::prost::Message)]
9918pub struct TransactionTraceFile {
9919    /// Must be the first field, set to value in MagicNumber
9920    #[prost(fixed64, optional, tag = "1")]
9921    pub magic_number: ::core::option::Option<u64>,
9922    #[prost(message, repeated, tag = "2")]
9923    pub entry: ::prost::alloc::vec::Vec<TransactionTraceEntry>,
9924    /// offset between real-time clock and elapsed time clock in nanoseconds.
9925    /// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
9926    /// systemTime(SYSTEM_TIME_MONOTONIC)
9927    #[prost(fixed64, optional, tag = "3")]
9928    pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
9929    #[prost(uint32, optional, tag = "4")]
9930    pub version: ::core::option::Option<u32>,
9931}
9932/// Nested message and enum types in `TransactionTraceFile`.
9933pub mod transaction_trace_file {
9934    /// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
9935    /// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
9936    /// and there's no nice way to put 64bit constants into .proto files.
9937    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9938    #[repr(i32)]
9939    pub enum MagicNumber {
9940        Invalid = 0,
9941        /// TNXT (little-endian ASCII)
9942        L = 1415073364,
9943        /// RACE (little-endian ASCII)
9944        H = 1162035538,
9945    }
9946    impl MagicNumber {
9947        /// String value of the enum field names used in the ProtoBuf definition.
9948        ///
9949        /// The values are not transformed in any way and thus are considered stable
9950        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9951        pub fn as_str_name(&self) -> &'static str {
9952            match self {
9953                Self::Invalid => "INVALID",
9954                Self::L => "MAGIC_NUMBER_L",
9955                Self::H => "MAGIC_NUMBER_H",
9956            }
9957        }
9958        /// Creates an enum from field names used in the ProtoBuf definition.
9959        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9960            match value {
9961                "INVALID" => Some(Self::Invalid),
9962                "MAGIC_NUMBER_L" => Some(Self::L),
9963                "MAGIC_NUMBER_H" => Some(Self::H),
9964                _ => None,
9965            }
9966        }
9967    }
9968}
9969#[derive(Clone, PartialEq, ::prost::Message)]
9970pub struct TransactionTraceEntry {
9971    #[prost(int64, optional, tag = "1")]
9972    pub elapsed_realtime_nanos: ::core::option::Option<i64>,
9973    #[prost(int64, optional, tag = "2")]
9974    pub vsync_id: ::core::option::Option<i64>,
9975    #[prost(message, repeated, tag = "3")]
9976    pub transactions: ::prost::alloc::vec::Vec<TransactionState>,
9977    #[prost(message, repeated, tag = "4")]
9978    pub added_layers: ::prost::alloc::vec::Vec<LayerCreationArgs>,
9979    #[prost(uint32, repeated, packed = "false", tag = "5")]
9980    pub destroyed_layers: ::prost::alloc::vec::Vec<u32>,
9981    #[prost(message, repeated, tag = "6")]
9982    pub added_displays: ::prost::alloc::vec::Vec<DisplayState>,
9983    #[prost(int32, repeated, packed = "false", tag = "7")]
9984    pub removed_displays: ::prost::alloc::vec::Vec<i32>,
9985    #[prost(uint32, repeated, packed = "false", tag = "8")]
9986    pub destroyed_layer_handles: ::prost::alloc::vec::Vec<u32>,
9987    #[prost(bool, optional, tag = "9")]
9988    pub displays_changed: ::core::option::Option<bool>,
9989    #[prost(message, repeated, tag = "10")]
9990    pub displays: ::prost::alloc::vec::Vec<DisplayInfo>,
9991}
9992#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9993pub struct DisplayInfo {
9994    #[prost(uint32, optional, tag = "1")]
9995    pub layer_stack: ::core::option::Option<u32>,
9996    #[prost(int32, optional, tag = "2")]
9997    pub display_id: ::core::option::Option<i32>,
9998    #[prost(int32, optional, tag = "3")]
9999    pub logical_width: ::core::option::Option<i32>,
10000    #[prost(int32, optional, tag = "4")]
10001    pub logical_height: ::core::option::Option<i32>,
10002    #[prost(message, optional, tag = "5")]
10003    pub transform_inverse: ::core::option::Option<Transform>,
10004    #[prost(message, optional, tag = "6")]
10005    pub transform: ::core::option::Option<Transform>,
10006    #[prost(bool, optional, tag = "7")]
10007    pub receives_input: ::core::option::Option<bool>,
10008    #[prost(bool, optional, tag = "8")]
10009    pub is_secure: ::core::option::Option<bool>,
10010    #[prost(bool, optional, tag = "9")]
10011    pub is_primary: ::core::option::Option<bool>,
10012    #[prost(bool, optional, tag = "10")]
10013    pub is_virtual: ::core::option::Option<bool>,
10014    #[prost(int32, optional, tag = "11")]
10015    pub rotation_flags: ::core::option::Option<i32>,
10016    #[prost(int32, optional, tag = "12")]
10017    pub transform_hint: ::core::option::Option<i32>,
10018}
10019#[derive(Clone, PartialEq, ::prost::Message)]
10020pub struct LayerCreationArgs {
10021    #[prost(uint32, optional, tag = "1")]
10022    pub layer_id: ::core::option::Option<u32>,
10023    #[prost(string, optional, tag = "2")]
10024    pub name: ::core::option::Option<::prost::alloc::string::String>,
10025    #[prost(uint32, optional, tag = "3")]
10026    pub flags: ::core::option::Option<u32>,
10027    #[prost(uint32, optional, tag = "4")]
10028    pub parent_id: ::core::option::Option<u32>,
10029    #[prost(uint32, optional, tag = "5")]
10030    pub mirror_from_id: ::core::option::Option<u32>,
10031    #[prost(bool, optional, tag = "6")]
10032    pub add_to_root: ::core::option::Option<bool>,
10033    #[prost(uint32, optional, tag = "7")]
10034    pub layer_stack_to_mirror: ::core::option::Option<u32>,
10035}
10036#[derive(Clone, Copy, PartialEq, ::prost::Message)]
10037pub struct Transform {
10038    #[prost(float, optional, tag = "1")]
10039    pub dsdx: ::core::option::Option<f32>,
10040    #[prost(float, optional, tag = "2")]
10041    pub dtdx: ::core::option::Option<f32>,
10042    #[prost(float, optional, tag = "3")]
10043    pub dtdy: ::core::option::Option<f32>,
10044    #[prost(float, optional, tag = "4")]
10045    pub dsdy: ::core::option::Option<f32>,
10046    #[prost(float, optional, tag = "5")]
10047    pub tx: ::core::option::Option<f32>,
10048    #[prost(float, optional, tag = "6")]
10049    pub ty: ::core::option::Option<f32>,
10050}
10051#[derive(Clone, PartialEq, ::prost::Message)]
10052pub struct TransactionState {
10053    #[prost(int32, optional, tag = "1")]
10054    pub pid: ::core::option::Option<i32>,
10055    #[prost(int32, optional, tag = "2")]
10056    pub uid: ::core::option::Option<i32>,
10057    #[prost(int64, optional, tag = "3")]
10058    pub vsync_id: ::core::option::Option<i64>,
10059    #[prost(int32, optional, tag = "4")]
10060    pub input_event_id: ::core::option::Option<i32>,
10061    #[prost(int64, optional, tag = "5")]
10062    pub post_time: ::core::option::Option<i64>,
10063    #[prost(uint64, optional, tag = "6")]
10064    pub transaction_id: ::core::option::Option<u64>,
10065    #[prost(message, repeated, tag = "7")]
10066    pub layer_changes: ::prost::alloc::vec::Vec<LayerState>,
10067    #[prost(message, repeated, tag = "8")]
10068    pub display_changes: ::prost::alloc::vec::Vec<DisplayState>,
10069    #[prost(uint64, repeated, packed = "false", tag = "9")]
10070    pub merged_transaction_ids: ::prost::alloc::vec::Vec<u64>,
10071}
10072/// Keep insync with layer_state_t
10073#[derive(Clone, PartialEq, ::prost::Message)]
10074pub struct LayerState {
10075    #[prost(uint32, optional, tag = "1")]
10076    pub layer_id: ::core::option::Option<u32>,
10077    #[prost(uint64, optional, tag = "2")]
10078    pub what: ::core::option::Option<u64>,
10079    #[prost(float, optional, tag = "3")]
10080    pub x: ::core::option::Option<f32>,
10081    #[prost(float, optional, tag = "4")]
10082    pub y: ::core::option::Option<f32>,
10083    #[prost(int32, optional, tag = "5")]
10084    pub z: ::core::option::Option<i32>,
10085    #[prost(uint32, optional, tag = "6")]
10086    pub w: ::core::option::Option<u32>,
10087    #[prost(uint32, optional, tag = "7")]
10088    pub h: ::core::option::Option<u32>,
10089    #[prost(uint32, optional, tag = "8")]
10090    pub layer_stack: ::core::option::Option<u32>,
10091    #[prost(uint32, optional, tag = "9")]
10092    pub flags: ::core::option::Option<u32>,
10093    #[prost(uint32, optional, tag = "10")]
10094    pub mask: ::core::option::Option<u32>,
10095    #[prost(message, optional, tag = "11")]
10096    pub matrix: ::core::option::Option<layer_state::Matrix22>,
10097    #[prost(float, optional, tag = "12")]
10098    pub corner_radius: ::core::option::Option<f32>,
10099    #[prost(uint32, optional, tag = "13")]
10100    pub background_blur_radius: ::core::option::Option<u32>,
10101    #[prost(uint32, optional, tag = "14")]
10102    pub parent_id: ::core::option::Option<u32>,
10103    #[prost(uint32, optional, tag = "15")]
10104    pub relative_parent_id: ::core::option::Option<u32>,
10105    #[prost(float, optional, tag = "16")]
10106    pub alpha: ::core::option::Option<f32>,
10107    #[prost(message, optional, tag = "17")]
10108    pub color: ::core::option::Option<layer_state::Color3>,
10109    #[prost(message, optional, tag = "18")]
10110    pub transparent_region: ::core::option::Option<RegionProto>,
10111    #[prost(uint32, optional, tag = "19")]
10112    pub transform: ::core::option::Option<u32>,
10113    #[prost(bool, optional, tag = "20")]
10114    pub transform_to_display_inverse: ::core::option::Option<bool>,
10115    #[prost(message, optional, tag = "21")]
10116    pub crop: ::core::option::Option<RectProto>,
10117    #[prost(message, optional, tag = "22")]
10118    pub buffer_data: ::core::option::Option<layer_state::BufferData>,
10119    #[prost(int32, optional, tag = "23")]
10120    pub api: ::core::option::Option<i32>,
10121    #[prost(bool, optional, tag = "24")]
10122    pub has_sideband_stream: ::core::option::Option<bool>,
10123    #[prost(message, optional, tag = "25")]
10124    pub color_transform: ::core::option::Option<ColorTransformProto>,
10125    #[prost(message, repeated, tag = "26")]
10126    pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
10127    #[prost(message, optional, tag = "27")]
10128    pub window_info_handle: ::core::option::Option<layer_state::WindowInfo>,
10129    #[prost(float, optional, tag = "28")]
10130    pub bg_color_alpha: ::core::option::Option<f32>,
10131    #[prost(int32, optional, tag = "29")]
10132    pub bg_color_dataspace: ::core::option::Option<i32>,
10133    #[prost(bool, optional, tag = "30")]
10134    pub color_space_agnostic: ::core::option::Option<bool>,
10135    #[prost(float, optional, tag = "31")]
10136    pub shadow_radius: ::core::option::Option<f32>,
10137    #[prost(int32, optional, tag = "32")]
10138    pub frame_rate_selection_priority: ::core::option::Option<i32>,
10139    #[prost(float, optional, tag = "33")]
10140    pub frame_rate: ::core::option::Option<f32>,
10141    #[prost(int32, optional, tag = "34")]
10142    pub frame_rate_compatibility: ::core::option::Option<i32>,
10143    #[prost(int32, optional, tag = "35")]
10144    pub change_frame_rate_strategy: ::core::option::Option<i32>,
10145    #[prost(uint32, optional, tag = "36")]
10146    pub fixed_transform_hint: ::core::option::Option<u32>,
10147    #[prost(uint64, optional, tag = "37")]
10148    pub frame_number: ::core::option::Option<u64>,
10149    #[prost(bool, optional, tag = "38")]
10150    pub auto_refresh: ::core::option::Option<bool>,
10151    /// unused
10152    #[prost(bool, optional, tag = "39")]
10153    pub is_trusted_overlay: ::core::option::Option<bool>,
10154    #[prost(message, optional, tag = "40")]
10155    pub buffer_crop: ::core::option::Option<RectProto>,
10156    #[prost(message, optional, tag = "41")]
10157    pub destination_frame: ::core::option::Option<RectProto>,
10158    #[prost(enumeration = "layer_state::DropInputMode", optional, tag = "42")]
10159    pub drop_input_mode: ::core::option::Option<i32>,
10160    #[prost(enumeration = "TrustedOverlay", optional, tag = "43")]
10161    pub trusted_overlay: ::core::option::Option<i32>,
10162}
10163/// Nested message and enum types in `LayerState`.
10164pub mod layer_state {
10165    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
10166    pub struct Matrix22 {
10167        #[prost(float, optional, tag = "1")]
10168        pub dsdx: ::core::option::Option<f32>,
10169        #[prost(float, optional, tag = "2")]
10170        pub dtdx: ::core::option::Option<f32>,
10171        #[prost(float, optional, tag = "3")]
10172        pub dtdy: ::core::option::Option<f32>,
10173        #[prost(float, optional, tag = "4")]
10174        pub dsdy: ::core::option::Option<f32>,
10175    }
10176    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
10177    pub struct Color3 {
10178        #[prost(float, optional, tag = "1")]
10179        pub r: ::core::option::Option<f32>,
10180        #[prost(float, optional, tag = "2")]
10181        pub g: ::core::option::Option<f32>,
10182        #[prost(float, optional, tag = "3")]
10183        pub b: ::core::option::Option<f32>,
10184    }
10185    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
10186    pub struct BufferData {
10187        #[prost(uint64, optional, tag = "1")]
10188        pub buffer_id: ::core::option::Option<u64>,
10189        #[prost(uint32, optional, tag = "2")]
10190        pub width: ::core::option::Option<u32>,
10191        #[prost(uint32, optional, tag = "3")]
10192        pub height: ::core::option::Option<u32>,
10193        #[prost(uint64, optional, tag = "4")]
10194        pub frame_number: ::core::option::Option<u64>,
10195        #[prost(uint32, optional, tag = "5")]
10196        pub flags: ::core::option::Option<u32>,
10197        #[prost(uint64, optional, tag = "6")]
10198        pub cached_buffer_id: ::core::option::Option<u64>,
10199        #[prost(enumeration = "buffer_data::PixelFormat", optional, tag = "7")]
10200        pub pixel_format: ::core::option::Option<i32>,
10201        #[prost(uint64, optional, tag = "8")]
10202        pub usage: ::core::option::Option<u64>,
10203    }
10204    /// Nested message and enum types in `BufferData`.
10205    pub mod buffer_data {
10206        #[derive(
10207            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
10208        )]
10209        #[repr(i32)]
10210        pub enum BufferDataChange {
10211            None = 0,
10212            FenceChanged = 1,
10213            FrameNumberChanged = 2,
10214            CachedBufferChanged = 4,
10215        }
10216        impl BufferDataChange {
10217            /// String value of the enum field names used in the ProtoBuf definition.
10218            ///
10219            /// The values are not transformed in any way and thus are considered stable
10220            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10221            pub fn as_str_name(&self) -> &'static str {
10222                match self {
10223                    Self::None => "BufferDataChangeNone",
10224                    Self::FenceChanged => "fenceChanged",
10225                    Self::FrameNumberChanged => "frameNumberChanged",
10226                    Self::CachedBufferChanged => "cachedBufferChanged",
10227                }
10228            }
10229            /// Creates an enum from field names used in the ProtoBuf definition.
10230            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10231                match value {
10232                    "BufferDataChangeNone" => Some(Self::None),
10233                    "fenceChanged" => Some(Self::FenceChanged),
10234                    "frameNumberChanged" => Some(Self::FrameNumberChanged),
10235                    "cachedBufferChanged" => Some(Self::CachedBufferChanged),
10236                    _ => None,
10237                }
10238            }
10239        }
10240        #[derive(
10241            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
10242        )]
10243        #[repr(i32)]
10244        pub enum PixelFormat {
10245            Unknown = 0,
10246            Custom = -4,
10247            Translucent = -3,
10248            Transparent = -2,
10249            Opaque = -1,
10250            Rgba8888 = 1,
10251            Rgbx8888 = 2,
10252            Rgb888 = 3,
10253            Rgb565 = 4,
10254            Bgra8888 = 5,
10255            Rgba5551 = 6,
10256            Rgba4444 = 7,
10257            RgbaFp16 = 22,
10258            Rgba1010102 = 43,
10259            R8 = 56,
10260        }
10261        impl PixelFormat {
10262            /// String value of the enum field names used in the ProtoBuf definition.
10263            ///
10264            /// The values are not transformed in any way and thus are considered stable
10265            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10266            pub fn as_str_name(&self) -> &'static str {
10267                match self {
10268                    Self::Unknown => "PIXEL_FORMAT_UNKNOWN",
10269                    Self::Custom => "PIXEL_FORMAT_CUSTOM",
10270                    Self::Translucent => "PIXEL_FORMAT_TRANSLUCENT",
10271                    Self::Transparent => "PIXEL_FORMAT_TRANSPARENT",
10272                    Self::Opaque => "PIXEL_FORMAT_OPAQUE",
10273                    Self::Rgba8888 => "PIXEL_FORMAT_RGBA_8888",
10274                    Self::Rgbx8888 => "PIXEL_FORMAT_RGBX_8888",
10275                    Self::Rgb888 => "PIXEL_FORMAT_RGB_888",
10276                    Self::Rgb565 => "PIXEL_FORMAT_RGB_565",
10277                    Self::Bgra8888 => "PIXEL_FORMAT_BGRA_8888",
10278                    Self::Rgba5551 => "PIXEL_FORMAT_RGBA_5551",
10279                    Self::Rgba4444 => "PIXEL_FORMAT_RGBA_4444",
10280                    Self::RgbaFp16 => "PIXEL_FORMAT_RGBA_FP16",
10281                    Self::Rgba1010102 => "PIXEL_FORMAT_RGBA_1010102",
10282                    Self::R8 => "PIXEL_FORMAT_R_8",
10283                }
10284            }
10285            /// Creates an enum from field names used in the ProtoBuf definition.
10286            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10287                match value {
10288                    "PIXEL_FORMAT_UNKNOWN" => Some(Self::Unknown),
10289                    "PIXEL_FORMAT_CUSTOM" => Some(Self::Custom),
10290                    "PIXEL_FORMAT_TRANSLUCENT" => Some(Self::Translucent),
10291                    "PIXEL_FORMAT_TRANSPARENT" => Some(Self::Transparent),
10292                    "PIXEL_FORMAT_OPAQUE" => Some(Self::Opaque),
10293                    "PIXEL_FORMAT_RGBA_8888" => Some(Self::Rgba8888),
10294                    "PIXEL_FORMAT_RGBX_8888" => Some(Self::Rgbx8888),
10295                    "PIXEL_FORMAT_RGB_888" => Some(Self::Rgb888),
10296                    "PIXEL_FORMAT_RGB_565" => Some(Self::Rgb565),
10297                    "PIXEL_FORMAT_BGRA_8888" => Some(Self::Bgra8888),
10298                    "PIXEL_FORMAT_RGBA_5551" => Some(Self::Rgba5551),
10299                    "PIXEL_FORMAT_RGBA_4444" => Some(Self::Rgba4444),
10300                    "PIXEL_FORMAT_RGBA_FP16" => Some(Self::RgbaFp16),
10301                    "PIXEL_FORMAT_RGBA_1010102" => Some(Self::Rgba1010102),
10302                    "PIXEL_FORMAT_R_8" => Some(Self::R8),
10303                    _ => None,
10304                }
10305            }
10306        }
10307    }
10308    #[derive(Clone, PartialEq, ::prost::Message)]
10309    pub struct WindowInfo {
10310        #[prost(uint32, optional, tag = "1")]
10311        pub layout_params_flags: ::core::option::Option<u32>,
10312        #[prost(int32, optional, tag = "2")]
10313        pub layout_params_type: ::core::option::Option<i32>,
10314        #[prost(message, optional, tag = "3")]
10315        pub touchable_region: ::core::option::Option<super::RegionProto>,
10316        #[prost(int32, optional, tag = "4")]
10317        pub surface_inset: ::core::option::Option<i32>,
10318        /// unused
10319        #[prost(bool, optional, tag = "5")]
10320        pub focusable: ::core::option::Option<bool>,
10321        /// unused
10322        #[prost(bool, optional, tag = "6")]
10323        pub has_wallpaper: ::core::option::Option<bool>,
10324        #[prost(float, optional, tag = "7")]
10325        pub global_scale_factor: ::core::option::Option<f32>,
10326        #[prost(uint32, optional, tag = "8")]
10327        pub crop_layer_id: ::core::option::Option<u32>,
10328        #[prost(bool, optional, tag = "9")]
10329        pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
10330        #[prost(message, optional, tag = "10")]
10331        pub touchable_region_crop: ::core::option::Option<super::RectProto>,
10332        #[prost(message, optional, tag = "11")]
10333        pub transform: ::core::option::Option<super::Transform>,
10334        #[prost(uint32, optional, tag = "12")]
10335        pub input_config: ::core::option::Option<u32>,
10336    }
10337    /// Changes are split into ChangesLsb and ChangesMsb. First 32 bits are in
10338    /// ChangesLsb and the next 32 bits are in ChangesMsb. This is needed because
10339    /// enums have to be 32 bits and there's no nice way to put 64bit constants
10340    /// into .proto files.
10341    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10342    #[repr(i32)]
10343    pub enum ChangesLsb {
10344        EChangesLsbNone = 0,
10345        EPositionChanged = 1,
10346        ELayerChanged = 2,
10347        /// unused = 0x00000004;
10348        EAlphaChanged = 8,
10349        EMatrixChanged = 16,
10350        ETransparentRegionChanged = 32,
10351        EFlagsChanged = 64,
10352        ELayerStackChanged = 128,
10353        EReleaseBufferListenerChanged = 1024,
10354        EShadowRadiusChanged = 2048,
10355        EBufferCropChanged = 8192,
10356        ERelativeLayerChanged = 16384,
10357        EReparent = 32768,
10358        EColorChanged = 65536,
10359        EBufferTransformChanged = 262144,
10360        ETransformToDisplayInverseChanged = 524288,
10361        ECropChanged = 1048576,
10362        EBufferChanged = 2097152,
10363        EAcquireFenceChanged = 4194304,
10364        EDataspaceChanged = 8388608,
10365        EHdrMetadataChanged = 16777216,
10366        ESurfaceDamageRegionChanged = 33554432,
10367        EApiChanged = 67108864,
10368        ESidebandStreamChanged = 134217728,
10369        EColorTransformChanged = 268435456,
10370        EHasListenerCallbacksChanged = 536870912,
10371        EInputInfoChanged = 1073741824,
10372        /// 0x80000000; (proto stores enums as signed int)
10373        ECornerRadiusChanged = -2147483648,
10374    }
10375    impl ChangesLsb {
10376        /// String value of the enum field names used in the ProtoBuf definition.
10377        ///
10378        /// The values are not transformed in any way and thus are considered stable
10379        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10380        pub fn as_str_name(&self) -> &'static str {
10381            match self {
10382                Self::EChangesLsbNone => "eChangesLsbNone",
10383                Self::EPositionChanged => "ePositionChanged",
10384                Self::ELayerChanged => "eLayerChanged",
10385                Self::EAlphaChanged => "eAlphaChanged",
10386                Self::EMatrixChanged => "eMatrixChanged",
10387                Self::ETransparentRegionChanged => "eTransparentRegionChanged",
10388                Self::EFlagsChanged => "eFlagsChanged",
10389                Self::ELayerStackChanged => "eLayerStackChanged",
10390                Self::EReleaseBufferListenerChanged => "eReleaseBufferListenerChanged",
10391                Self::EShadowRadiusChanged => "eShadowRadiusChanged",
10392                Self::EBufferCropChanged => "eBufferCropChanged",
10393                Self::ERelativeLayerChanged => "eRelativeLayerChanged",
10394                Self::EReparent => "eReparent",
10395                Self::EColorChanged => "eColorChanged",
10396                Self::EBufferTransformChanged => "eBufferTransformChanged",
10397                Self::ETransformToDisplayInverseChanged => "eTransformToDisplayInverseChanged",
10398                Self::ECropChanged => "eCropChanged",
10399                Self::EBufferChanged => "eBufferChanged",
10400                Self::EAcquireFenceChanged => "eAcquireFenceChanged",
10401                Self::EDataspaceChanged => "eDataspaceChanged",
10402                Self::EHdrMetadataChanged => "eHdrMetadataChanged",
10403                Self::ESurfaceDamageRegionChanged => "eSurfaceDamageRegionChanged",
10404                Self::EApiChanged => "eApiChanged",
10405                Self::ESidebandStreamChanged => "eSidebandStreamChanged",
10406                Self::EColorTransformChanged => "eColorTransformChanged",
10407                Self::EHasListenerCallbacksChanged => "eHasListenerCallbacksChanged",
10408                Self::EInputInfoChanged => "eInputInfoChanged",
10409                Self::ECornerRadiusChanged => "eCornerRadiusChanged",
10410            }
10411        }
10412        /// Creates an enum from field names used in the ProtoBuf definition.
10413        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10414            match value {
10415                "eChangesLsbNone" => Some(Self::EChangesLsbNone),
10416                "ePositionChanged" => Some(Self::EPositionChanged),
10417                "eLayerChanged" => Some(Self::ELayerChanged),
10418                "eAlphaChanged" => Some(Self::EAlphaChanged),
10419                "eMatrixChanged" => Some(Self::EMatrixChanged),
10420                "eTransparentRegionChanged" => Some(Self::ETransparentRegionChanged),
10421                "eFlagsChanged" => Some(Self::EFlagsChanged),
10422                "eLayerStackChanged" => Some(Self::ELayerStackChanged),
10423                "eReleaseBufferListenerChanged" => Some(Self::EReleaseBufferListenerChanged),
10424                "eShadowRadiusChanged" => Some(Self::EShadowRadiusChanged),
10425                "eBufferCropChanged" => Some(Self::EBufferCropChanged),
10426                "eRelativeLayerChanged" => Some(Self::ERelativeLayerChanged),
10427                "eReparent" => Some(Self::EReparent),
10428                "eColorChanged" => Some(Self::EColorChanged),
10429                "eBufferTransformChanged" => Some(Self::EBufferTransformChanged),
10430                "eTransformToDisplayInverseChanged" => {
10431                    Some(Self::ETransformToDisplayInverseChanged)
10432                }
10433                "eCropChanged" => Some(Self::ECropChanged),
10434                "eBufferChanged" => Some(Self::EBufferChanged),
10435                "eAcquireFenceChanged" => Some(Self::EAcquireFenceChanged),
10436                "eDataspaceChanged" => Some(Self::EDataspaceChanged),
10437                "eHdrMetadataChanged" => Some(Self::EHdrMetadataChanged),
10438                "eSurfaceDamageRegionChanged" => Some(Self::ESurfaceDamageRegionChanged),
10439                "eApiChanged" => Some(Self::EApiChanged),
10440                "eSidebandStreamChanged" => Some(Self::ESidebandStreamChanged),
10441                "eColorTransformChanged" => Some(Self::EColorTransformChanged),
10442                "eHasListenerCallbacksChanged" => Some(Self::EHasListenerCallbacksChanged),
10443                "eInputInfoChanged" => Some(Self::EInputInfoChanged),
10444                "eCornerRadiusChanged" => Some(Self::ECornerRadiusChanged),
10445                _ => None,
10446            }
10447        }
10448    }
10449    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10450    #[repr(i32)]
10451    pub enum ChangesMsb {
10452        EChangesMsbNone = 0,
10453        EDestinationFrameChanged = 1,
10454        ECachedBufferChanged = 2,
10455        EBackgroundColorChanged = 4,
10456        EMetadataChanged = 8,
10457        EColorSpaceAgnosticChanged = 16,
10458        EFrameRateSelectionPriority = 32,
10459        EFrameRateChanged = 64,
10460        EBackgroundBlurRadiusChanged = 128,
10461        EProducerDisconnect = 256,
10462        EFixedTransformHintChanged = 512,
10463        EFrameNumberChanged = 1024,
10464        EBlurRegionsChanged = 2048,
10465        EAutoRefreshChanged = 4096,
10466        EStretchChanged = 8192,
10467        ETrustedOverlayChanged = 16384,
10468        EDropInputModeChanged = 32768,
10469    }
10470    impl ChangesMsb {
10471        /// String value of the enum field names used in the ProtoBuf definition.
10472        ///
10473        /// The values are not transformed in any way and thus are considered stable
10474        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10475        pub fn as_str_name(&self) -> &'static str {
10476            match self {
10477                Self::EChangesMsbNone => "eChangesMsbNone",
10478                Self::EDestinationFrameChanged => "eDestinationFrameChanged",
10479                Self::ECachedBufferChanged => "eCachedBufferChanged",
10480                Self::EBackgroundColorChanged => "eBackgroundColorChanged",
10481                Self::EMetadataChanged => "eMetadataChanged",
10482                Self::EColorSpaceAgnosticChanged => "eColorSpaceAgnosticChanged",
10483                Self::EFrameRateSelectionPriority => "eFrameRateSelectionPriority",
10484                Self::EFrameRateChanged => "eFrameRateChanged",
10485                Self::EBackgroundBlurRadiusChanged => "eBackgroundBlurRadiusChanged",
10486                Self::EProducerDisconnect => "eProducerDisconnect",
10487                Self::EFixedTransformHintChanged => "eFixedTransformHintChanged",
10488                Self::EFrameNumberChanged => "eFrameNumberChanged",
10489                Self::EBlurRegionsChanged => "eBlurRegionsChanged",
10490                Self::EAutoRefreshChanged => "eAutoRefreshChanged",
10491                Self::EStretchChanged => "eStretchChanged",
10492                Self::ETrustedOverlayChanged => "eTrustedOverlayChanged",
10493                Self::EDropInputModeChanged => "eDropInputModeChanged",
10494            }
10495        }
10496        /// Creates an enum from field names used in the ProtoBuf definition.
10497        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10498            match value {
10499                "eChangesMsbNone" => Some(Self::EChangesMsbNone),
10500                "eDestinationFrameChanged" => Some(Self::EDestinationFrameChanged),
10501                "eCachedBufferChanged" => Some(Self::ECachedBufferChanged),
10502                "eBackgroundColorChanged" => Some(Self::EBackgroundColorChanged),
10503                "eMetadataChanged" => Some(Self::EMetadataChanged),
10504                "eColorSpaceAgnosticChanged" => Some(Self::EColorSpaceAgnosticChanged),
10505                "eFrameRateSelectionPriority" => Some(Self::EFrameRateSelectionPriority),
10506                "eFrameRateChanged" => Some(Self::EFrameRateChanged),
10507                "eBackgroundBlurRadiusChanged" => Some(Self::EBackgroundBlurRadiusChanged),
10508                "eProducerDisconnect" => Some(Self::EProducerDisconnect),
10509                "eFixedTransformHintChanged" => Some(Self::EFixedTransformHintChanged),
10510                "eFrameNumberChanged" => Some(Self::EFrameNumberChanged),
10511                "eBlurRegionsChanged" => Some(Self::EBlurRegionsChanged),
10512                "eAutoRefreshChanged" => Some(Self::EAutoRefreshChanged),
10513                "eStretchChanged" => Some(Self::EStretchChanged),
10514                "eTrustedOverlayChanged" => Some(Self::ETrustedOverlayChanged),
10515                "eDropInputModeChanged" => Some(Self::EDropInputModeChanged),
10516                _ => None,
10517            }
10518        }
10519    }
10520    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10521    #[repr(i32)]
10522    pub enum Flags {
10523        EFlagsNone = 0,
10524        ELayerHidden = 1,
10525        ELayerOpaque = 2,
10526        ELayerSkipScreenshot = 64,
10527        ELayerSecure = 128,
10528        EEnableBackpressure = 256,
10529        ELayerIsDisplayDecoration = 512,
10530    }
10531    impl Flags {
10532        /// String value of the enum field names used in the ProtoBuf definition.
10533        ///
10534        /// The values are not transformed in any way and thus are considered stable
10535        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10536        pub fn as_str_name(&self) -> &'static str {
10537            match self {
10538                Self::EFlagsNone => "eFlagsNone",
10539                Self::ELayerHidden => "eLayerHidden",
10540                Self::ELayerOpaque => "eLayerOpaque",
10541                Self::ELayerSkipScreenshot => "eLayerSkipScreenshot",
10542                Self::ELayerSecure => "eLayerSecure",
10543                Self::EEnableBackpressure => "eEnableBackpressure",
10544                Self::ELayerIsDisplayDecoration => "eLayerIsDisplayDecoration",
10545            }
10546        }
10547        /// Creates an enum from field names used in the ProtoBuf definition.
10548        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10549            match value {
10550                "eFlagsNone" => Some(Self::EFlagsNone),
10551                "eLayerHidden" => Some(Self::ELayerHidden),
10552                "eLayerOpaque" => Some(Self::ELayerOpaque),
10553                "eLayerSkipScreenshot" => Some(Self::ELayerSkipScreenshot),
10554                "eLayerSecure" => Some(Self::ELayerSecure),
10555                "eEnableBackpressure" => Some(Self::EEnableBackpressure),
10556                "eLayerIsDisplayDecoration" => Some(Self::ELayerIsDisplayDecoration),
10557                _ => None,
10558            }
10559        }
10560    }
10561    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10562    #[repr(i32)]
10563    pub enum DropInputMode {
10564        None = 0,
10565        All = 1,
10566        Obscured = 2,
10567    }
10568    impl DropInputMode {
10569        /// String value of the enum field names used in the ProtoBuf definition.
10570        ///
10571        /// The values are not transformed in any way and thus are considered stable
10572        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10573        pub fn as_str_name(&self) -> &'static str {
10574            match self {
10575                Self::None => "NONE",
10576                Self::All => "ALL",
10577                Self::Obscured => "OBSCURED",
10578            }
10579        }
10580        /// Creates an enum from field names used in the ProtoBuf definition.
10581        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10582            match value {
10583                "NONE" => Some(Self::None),
10584                "ALL" => Some(Self::All),
10585                "OBSCURED" => Some(Self::Obscured),
10586                _ => None,
10587            }
10588        }
10589    }
10590}
10591#[derive(Clone, Copy, PartialEq, ::prost::Message)]
10592pub struct DisplayState {
10593    #[prost(int32, optional, tag = "1")]
10594    pub id: ::core::option::Option<i32>,
10595    #[prost(uint32, optional, tag = "2")]
10596    pub what: ::core::option::Option<u32>,
10597    #[prost(uint32, optional, tag = "3")]
10598    pub flags: ::core::option::Option<u32>,
10599    #[prost(uint32, optional, tag = "4")]
10600    pub layer_stack: ::core::option::Option<u32>,
10601    #[prost(uint32, optional, tag = "5")]
10602    pub orientation: ::core::option::Option<u32>,
10603    #[prost(message, optional, tag = "6")]
10604    pub layer_stack_space_rect: ::core::option::Option<RectProto>,
10605    #[prost(message, optional, tag = "7")]
10606    pub oriented_display_space_rect: ::core::option::Option<RectProto>,
10607    #[prost(uint32, optional, tag = "8")]
10608    pub width: ::core::option::Option<u32>,
10609    #[prost(uint32, optional, tag = "9")]
10610    pub height: ::core::option::Option<u32>,
10611}
10612/// Nested message and enum types in `DisplayState`.
10613pub mod display_state {
10614    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10615    #[repr(i32)]
10616    pub enum Changes {
10617        EChangesNone = 0,
10618        ESurfaceChanged = 1,
10619        ELayerStackChanged = 2,
10620        EDisplayProjectionChanged = 4,
10621        EDisplaySizeChanged = 8,
10622        EFlagsChanged = 16,
10623    }
10624    impl Changes {
10625        /// String value of the enum field names used in the ProtoBuf definition.
10626        ///
10627        /// The values are not transformed in any way and thus are considered stable
10628        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10629        pub fn as_str_name(&self) -> &'static str {
10630            match self {
10631                Self::EChangesNone => "eChangesNone",
10632                Self::ESurfaceChanged => "eSurfaceChanged",
10633                Self::ELayerStackChanged => "eLayerStackChanged",
10634                Self::EDisplayProjectionChanged => "eDisplayProjectionChanged",
10635                Self::EDisplaySizeChanged => "eDisplaySizeChanged",
10636                Self::EFlagsChanged => "eFlagsChanged",
10637            }
10638        }
10639        /// Creates an enum from field names used in the ProtoBuf definition.
10640        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10641            match value {
10642                "eChangesNone" => Some(Self::EChangesNone),
10643                "eSurfaceChanged" => Some(Self::ESurfaceChanged),
10644                "eLayerStackChanged" => Some(Self::ELayerStackChanged),
10645                "eDisplayProjectionChanged" => Some(Self::EDisplayProjectionChanged),
10646                "eDisplaySizeChanged" => Some(Self::EDisplaySizeChanged),
10647                "eFlagsChanged" => Some(Self::EFlagsChanged),
10648                _ => None,
10649            }
10650        }
10651    }
10652}
10653#[derive(Clone, Copy, PartialEq, ::prost::Message)]
10654pub struct WinscopeExtensions {}
10655/// This message is not intended to be written by the chrome on the device.
10656/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
10657/// part of the trace that's written by the telemetry tracing agent).
10658#[derive(Clone, PartialEq, ::prost::Message)]
10659pub struct ChromeBenchmarkMetadata {
10660    /// Time when the benchmark execution started (host unixtime in microseconds).
10661    #[prost(int64, optional, tag = "1")]
10662    pub benchmark_start_time_us: ::core::option::Option<i64>,
10663    /// Time when this particular story was run (host unixtime in microseconds).
10664    #[prost(int64, optional, tag = "2")]
10665    pub story_run_time_us: ::core::option::Option<i64>,
10666    /// Name of benchmark.
10667    #[prost(string, optional, tag = "3")]
10668    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
10669    /// Description of benchmark.
10670    #[prost(string, optional, tag = "4")]
10671    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
10672    /// Optional label.
10673    #[prost(string, optional, tag = "5")]
10674    pub label: ::core::option::Option<::prost::alloc::string::String>,
10675    /// Name of story.
10676    #[prost(string, optional, tag = "6")]
10677    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
10678    /// List of story tags.
10679    #[prost(string, repeated, tag = "7")]
10680    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10681    /// Index of the story run (>0 if the same story was run several times).
10682    #[prost(int32, optional, tag = "8")]
10683    pub story_run_index: ::core::option::Option<i32>,
10684    /// Whether this run failed.
10685    #[prost(bool, optional, tag = "9")]
10686    pub had_failures: ::core::option::Option<bool>,
10687}
10688/// Metadata for chrome traces.
10689#[derive(Clone, PartialEq, ::prost::Message)]
10690pub struct ChromeMetadataPacket {
10691    #[prost(message, optional, tag = "1")]
10692    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
10693    /// Version code of Chrome used by Android's Play Store. This field is only set
10694    /// on Android.
10695    #[prost(int32, optional, tag = "2")]
10696    pub chrome_version_code: ::core::option::Option<i32>,
10697    /// Comma separated list of enabled categories for tracing. The list of
10698    /// possible category strings are listed in code
10699    /// base/trace_event/builtin_categories.h.
10700    #[prost(string, optional, tag = "3")]
10701    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
10702    /// List of Finch study/groups that apply to this trace.
10703    #[prost(message, repeated, tag = "4")]
10704    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
10705}
10706/// Nested message and enum types in `ChromeMetadataPacket`.
10707pub mod chrome_metadata_packet {
10708    /// Finch name and group based on the ActiveGroupId.
10709    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
10710    pub struct FinchHash {
10711        #[prost(uint32, optional, tag = "1")]
10712        pub name: ::core::option::Option<u32>,
10713        #[prost(uint32, optional, tag = "2")]
10714        pub group: ::core::option::Option<u32>,
10715    }
10716}
10717/// Metadata related to background tracing scenarios, states and triggers.
10718#[derive(Clone, PartialEq, ::prost::Message)]
10719pub struct BackgroundTracingMetadata {
10720    /// Specifies the rule that caused the trace to be uploaded.
10721    #[prost(message, optional, tag = "1")]
10722    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
10723    /// List of all active triggers in current session, when trace was triggered.
10724    #[prost(message, repeated, tag = "2")]
10725    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
10726    /// Hash of the scenario name.
10727    #[prost(fixed32, optional, tag = "3")]
10728    pub scenario_name_hash: ::core::option::Option<u32>,
10729}
10730/// Nested message and enum types in `BackgroundTracingMetadata`.
10731pub mod background_tracing_metadata {
10732    /// Information about a trigger rule defined in the experiment config.
10733    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
10734    pub struct TriggerRule {
10735        #[prost(enumeration = "trigger_rule::TriggerType", optional, tag = "1")]
10736        pub trigger_type: ::core::option::Option<i32>,
10737        #[prost(message, optional, tag = "2")]
10738        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
10739        #[prost(message, optional, tag = "3")]
10740        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
10741        /// Hash of the rule name.
10742        #[prost(fixed32, optional, tag = "4")]
10743        pub name_hash: ::core::option::Option<u32>,
10744    }
10745    /// Nested message and enum types in `TriggerRule`.
10746    pub mod trigger_rule {
10747        /// Configuration of histogram trigger.
10748        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
10749        pub struct HistogramRule {
10750            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
10751            #[prost(fixed64, optional, tag = "1")]
10752            pub histogram_name_hash: ::core::option::Option<u64>,
10753            /// Range of values of the histogram that activates trigger.
10754            #[prost(int64, optional, tag = "2")]
10755            pub histogram_min_trigger: ::core::option::Option<i64>,
10756            #[prost(int64, optional, tag = "3")]
10757            pub histogram_max_trigger: ::core::option::Option<i64>,
10758        }
10759        /// Configuration of named trigger.
10760        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
10761        pub struct NamedRule {
10762            #[prost(enumeration = "named_rule::EventType", optional, tag = "1")]
10763            pub event_type: ::core::option::Option<i32>,
10764            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
10765            /// content-trigger that actually fired.
10766            #[prost(fixed64, optional, tag = "2")]
10767            pub content_trigger_name_hash: ::core::option::Option<u64>,
10768        }
10769        /// Nested message and enum types in `NamedRule`.
10770        pub mod named_rule {
10771            #[derive(
10772                Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
10773            )]
10774            #[repr(i32)]
10775            pub enum EventType {
10776                Unspecified = 0,
10777                SessionRestore = 1,
10778                Navigation = 2,
10779                Startup = 3,
10780                ReachedCode = 4,
10781                ContentTrigger = 5,
10782                TestRule = 1000,
10783            }
10784            impl EventType {
10785                /// String value of the enum field names used in the ProtoBuf definition.
10786                ///
10787                /// The values are not transformed in any way and thus are considered stable
10788                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10789                pub fn as_str_name(&self) -> &'static str {
10790                    match self {
10791                        Self::Unspecified => "UNSPECIFIED",
10792                        Self::SessionRestore => "SESSION_RESTORE",
10793                        Self::Navigation => "NAVIGATION",
10794                        Self::Startup => "STARTUP",
10795                        Self::ReachedCode => "REACHED_CODE",
10796                        Self::ContentTrigger => "CONTENT_TRIGGER",
10797                        Self::TestRule => "TEST_RULE",
10798                    }
10799                }
10800                /// Creates an enum from field names used in the ProtoBuf definition.
10801                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10802                    match value {
10803                        "UNSPECIFIED" => Some(Self::Unspecified),
10804                        "SESSION_RESTORE" => Some(Self::SessionRestore),
10805                        "NAVIGATION" => Some(Self::Navigation),
10806                        "STARTUP" => Some(Self::Startup),
10807                        "REACHED_CODE" => Some(Self::ReachedCode),
10808                        "CONTENT_TRIGGER" => Some(Self::ContentTrigger),
10809                        "TEST_RULE" => Some(Self::TestRule),
10810                        _ => None,
10811                    }
10812                }
10813            }
10814        }
10815        #[derive(
10816            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
10817        )]
10818        #[repr(i32)]
10819        pub enum TriggerType {
10820            TriggerUnspecified = 0,
10821            /// Traces are triggered by specific range of values of an UMA histogram.
10822            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
10823            /// Traces are triggered by specific named events in chromium codebase,
10824            /// like "second-update-failure".
10825            MonitorAndDumpWhenTriggerNamed = 2,
10826        }
10827        impl TriggerType {
10828            /// String value of the enum field names used in the ProtoBuf definition.
10829            ///
10830            /// The values are not transformed in any way and thus are considered stable
10831            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10832            pub fn as_str_name(&self) -> &'static str {
10833                match self {
10834                    Self::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
10835                    Self::MonitorAndDumpWhenSpecificHistogramAndValue => {
10836                        "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE"
10837                    }
10838                    Self::MonitorAndDumpWhenTriggerNamed => "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED",
10839                }
10840            }
10841            /// Creates an enum from field names used in the ProtoBuf definition.
10842            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10843                match value {
10844                    "TRIGGER_UNSPECIFIED" => Some(Self::TriggerUnspecified),
10845                    "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE" => {
10846                        Some(Self::MonitorAndDumpWhenSpecificHistogramAndValue)
10847                    }
10848                    "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED" => {
10849                        Some(Self::MonitorAndDumpWhenTriggerNamed)
10850                    }
10851                    _ => None,
10852                }
10853            }
10854        }
10855    }
10856}
10857#[derive(Clone, PartialEq, ::prost::Message)]
10858pub struct ChromeTracedValue {
10859    #[prost(enumeration = "chrome_traced_value::NestedType", optional, tag = "1")]
10860    pub nested_type: ::core::option::Option<i32>,
10861    #[prost(string, repeated, tag = "2")]
10862    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10863    #[prost(message, repeated, tag = "3")]
10864    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
10865    #[prost(message, repeated, tag = "4")]
10866    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
10867    #[prost(int32, optional, tag = "5")]
10868    pub int_value: ::core::option::Option<i32>,
10869    #[prost(double, optional, tag = "6")]
10870    pub double_value: ::core::option::Option<f64>,
10871    #[prost(bool, optional, tag = "7")]
10872    pub bool_value: ::core::option::Option<bool>,
10873    #[prost(string, optional, tag = "8")]
10874    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
10875}
10876/// Nested message and enum types in `ChromeTracedValue`.
10877pub mod chrome_traced_value {
10878    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10879    #[repr(i32)]
10880    pub enum NestedType {
10881        Dict = 0,
10882        Array = 1,
10883    }
10884    impl NestedType {
10885        /// String value of the enum field names used in the ProtoBuf definition.
10886        ///
10887        /// The values are not transformed in any way and thus are considered stable
10888        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10889        pub fn as_str_name(&self) -> &'static str {
10890            match self {
10891                Self::Dict => "DICT",
10892                Self::Array => "ARRAY",
10893            }
10894        }
10895        /// Creates an enum from field names used in the ProtoBuf definition.
10896        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10897            match value {
10898                "DICT" => Some(Self::Dict),
10899                "ARRAY" => Some(Self::Array),
10900                _ => None,
10901            }
10902        }
10903    }
10904}
10905#[derive(Clone, PartialEq, ::prost::Message)]
10906pub struct ChromeStringTableEntry {
10907    #[prost(string, optional, tag = "1")]
10908    pub value: ::core::option::Option<::prost::alloc::string::String>,
10909    #[prost(int32, optional, tag = "2")]
10910    pub index: ::core::option::Option<i32>,
10911}
10912/// Deprecated, use TrackEvent protos instead.
10913#[derive(Clone, PartialEq, ::prost::Message)]
10914pub struct ChromeTraceEvent {
10915    #[prost(string, optional, tag = "1")]
10916    pub name: ::core::option::Option<::prost::alloc::string::String>,
10917    #[prost(int64, optional, tag = "2")]
10918    pub timestamp: ::core::option::Option<i64>,
10919    #[prost(int32, optional, tag = "3")]
10920    pub phase: ::core::option::Option<i32>,
10921    #[prost(int32, optional, tag = "4")]
10922    pub thread_id: ::core::option::Option<i32>,
10923    #[prost(int64, optional, tag = "5")]
10924    pub duration: ::core::option::Option<i64>,
10925    #[prost(int64, optional, tag = "6")]
10926    pub thread_duration: ::core::option::Option<i64>,
10927    #[prost(string, optional, tag = "7")]
10928    pub scope: ::core::option::Option<::prost::alloc::string::String>,
10929    #[prost(uint64, optional, tag = "8")]
10930    pub id: ::core::option::Option<u64>,
10931    #[prost(uint32, optional, tag = "9")]
10932    pub flags: ::core::option::Option<u32>,
10933    #[prost(string, optional, tag = "10")]
10934    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
10935    #[prost(int32, optional, tag = "11")]
10936    pub process_id: ::core::option::Option<i32>,
10937    #[prost(int64, optional, tag = "12")]
10938    pub thread_timestamp: ::core::option::Option<i64>,
10939    #[prost(uint64, optional, tag = "13")]
10940    pub bind_id: ::core::option::Option<u64>,
10941    #[prost(message, repeated, tag = "14")]
10942    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
10943    /// Takes precedence over respectively |name| and
10944    /// |category_group_name_index| if set,
10945    /// and are indices into |string_table|.
10946    #[prost(uint32, optional, tag = "15")]
10947    pub name_index: ::core::option::Option<u32>,
10948    #[prost(uint32, optional, tag = "16")]
10949    pub category_group_name_index: ::core::option::Option<u32>,
10950}
10951/// Nested message and enum types in `ChromeTraceEvent`.
10952pub mod chrome_trace_event {
10953    #[derive(Clone, PartialEq, ::prost::Message)]
10954    pub struct Arg {
10955        #[prost(string, optional, tag = "1")]
10956        pub name: ::core::option::Option<::prost::alloc::string::String>,
10957        /// Takes precedence over |name| if set,
10958        /// and is an index into |string_table|.
10959        #[prost(uint32, optional, tag = "9")]
10960        pub name_index: ::core::option::Option<u32>,
10961        #[prost(oneof = "arg::Value", tags = "2, 3, 4, 5, 6, 7, 8, 10")]
10962        pub value: ::core::option::Option<arg::Value>,
10963    }
10964    /// Nested message and enum types in `Arg`.
10965    pub mod arg {
10966        #[derive(Clone, PartialEq, ::prost::Oneof)]
10967        pub enum Value {
10968            #[prost(bool, tag = "2")]
10969            BoolValue(bool),
10970            #[prost(uint64, tag = "3")]
10971            UintValue(u64),
10972            #[prost(int64, tag = "4")]
10973            IntValue(i64),
10974            #[prost(double, tag = "5")]
10975            DoubleValue(f64),
10976            #[prost(string, tag = "6")]
10977            StringValue(::prost::alloc::string::String),
10978            /// Pointers are stored in a separate type as the JSON output treats them
10979            /// differently from other uint64 values.
10980            #[prost(uint64, tag = "7")]
10981            PointerValue(u64),
10982            #[prost(string, tag = "8")]
10983            JsonValue(::prost::alloc::string::String),
10984            #[prost(message, tag = "10")]
10985            TracedValue(super::super::ChromeTracedValue),
10986        }
10987    }
10988}
10989#[derive(Clone, PartialEq, ::prost::Message)]
10990pub struct ChromeMetadata {
10991    #[prost(string, optional, tag = "1")]
10992    pub name: ::core::option::Option<::prost::alloc::string::String>,
10993    #[prost(oneof = "chrome_metadata::Value", tags = "2, 3, 4, 5")]
10994    pub value: ::core::option::Option<chrome_metadata::Value>,
10995}
10996/// Nested message and enum types in `ChromeMetadata`.
10997pub mod chrome_metadata {
10998    #[derive(Clone, PartialEq, ::prost::Oneof)]
10999    pub enum Value {
11000        #[prost(string, tag = "2")]
11001        StringValue(::prost::alloc::string::String),
11002        #[prost(bool, tag = "3")]
11003        BoolValue(bool),
11004        #[prost(int64, tag = "4")]
11005        IntValue(i64),
11006        #[prost(string, tag = "5")]
11007        JsonValue(::prost::alloc::string::String),
11008    }
11009}
11010/// Subtraces produced in legacy json format by Chrome tracing agents not yet
11011/// updated to support the new binary format, e.g. ETW and CrOS ARC.
11012/// TODO(eseckler): Update these agents to become perfetto producers.
11013#[derive(Clone, PartialEq, ::prost::Message)]
11014pub struct ChromeLegacyJsonTrace {
11015    #[prost(
11016        enumeration = "chrome_legacy_json_trace::TraceType",
11017        optional,
11018        tag = "1"
11019    )]
11020    pub r#type: ::core::option::Option<i32>,
11021    #[prost(string, optional, tag = "2")]
11022    pub data: ::core::option::Option<::prost::alloc::string::String>,
11023}
11024/// Nested message and enum types in `ChromeLegacyJsonTrace`.
11025pub mod chrome_legacy_json_trace {
11026    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11027    #[repr(i32)]
11028    pub enum TraceType {
11029        UserTrace = 0,
11030        /// Deprecated.
11031        SystemTrace = 1,
11032    }
11033    impl TraceType {
11034        /// String value of the enum field names used in the ProtoBuf definition.
11035        ///
11036        /// The values are not transformed in any way and thus are considered stable
11037        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11038        pub fn as_str_name(&self) -> &'static str {
11039            match self {
11040                Self::UserTrace => "USER_TRACE",
11041                Self::SystemTrace => "SYSTEM_TRACE",
11042            }
11043        }
11044        /// Creates an enum from field names used in the ProtoBuf definition.
11045        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11046            match value {
11047                "USER_TRACE" => Some(Self::UserTrace),
11048                "SYSTEM_TRACE" => Some(Self::SystemTrace),
11049                _ => None,
11050            }
11051        }
11052    }
11053}
11054#[derive(Clone, PartialEq, ::prost::Message)]
11055pub struct ChromeEventBundle {
11056    /// Deprecated, use TrackEvent protos instead.
11057    #[deprecated]
11058    #[prost(message, repeated, tag = "1")]
11059    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
11060    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
11061    /// which contains typed fields.
11062    #[prost(message, repeated, tag = "2")]
11063    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
11064    /// ftrace output from CrOS and Cast system tracing agents.
11065    /// TODO(eseckler): Replace system traces with native perfetto service.
11066    #[prost(string, repeated, tag = "4")]
11067    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
11068    #[prost(message, repeated, tag = "5")]
11069    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
11070    /// Contents of a string table that's valid for
11071    /// the whole ChromeEventBundle entry.
11072    #[deprecated]
11073    #[prost(message, repeated, tag = "3")]
11074    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
11075}
11076/// Information about a specific trigger during a background tracing scenario
11077/// Associated packet timestamps are useful to delimitate a scenario range in a
11078/// trace. Triggers are also useful for filtering traces.
11079#[derive(Clone, PartialEq, ::prost::Message)]
11080pub struct ChromeTrigger {
11081    /// Name of the trigger which was received.
11082    #[prost(string, optional, tag = "1")]
11083    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
11084    /// SHA1 hash of the trigger name.
11085    #[prost(fixed32, optional, tag = "2")]
11086    pub trigger_name_hash: ::core::option::Option<u32>,
11087}
11088/// Strings used by V8 can have different encodings, instead of coverting to a
11089/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
11090/// "raw" string and do the convestion at trace ingestion time.
11091///
11092/// ATTENTION: There is some overhead in using a message (as opossed to having
11093/// the `oneof encoded_string`` direcly embedded in the message), so use this
11094/// message in places were these extra bytes don't matter that much.
11095/// Next id: 5
11096#[derive(Clone, PartialEq, ::prost::Message)]
11097pub struct V8String {
11098    #[prost(oneof = "v8_string::EncodedString", tags = "1, 2, 3")]
11099    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
11100}
11101/// Nested message and enum types in `V8String`.
11102pub mod v8_string {
11103    #[derive(Clone, PartialEq, ::prost::Oneof)]
11104    pub enum EncodedString {
11105        /// ISO/IEC 8859-1:1998 encoding aka latin1
11106        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
11107        #[prost(bytes, tag = "1")]
11108        Latin1(::prost::alloc::vec::Vec<u8>),
11109        /// UTF-16 Little Endian Encoding
11110        #[prost(bytes, tag = "2")]
11111        Utf16Le(::prost::alloc::vec::Vec<u8>),
11112        /// UTF-16 Big Endian Encoding
11113        #[prost(bytes, tag = "3")]
11114        Utf16Be(::prost::alloc::vec::Vec<u8>),
11115    }
11116}
11117/// Interned version of V8String
11118#[derive(Clone, PartialEq, ::prost::Message)]
11119pub struct InternedV8String {
11120    #[prost(uint64, optional, tag = "1")]
11121    pub iid: ::core::option::Option<u64>,
11122    /// We inline the fields in V8String here to save some bytes in the serialized
11123    /// proto format. Interning is about saving bytes so this makes sense here.
11124    #[prost(oneof = "interned_v8_string::EncodedString", tags = "2, 3, 4")]
11125    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
11126}
11127/// Nested message and enum types in `InternedV8String`.
11128pub mod interned_v8_string {
11129    /// We inline the fields in V8String here to save some bytes in the serialized
11130    /// proto format. Interning is about saving bytes so this makes sense here.
11131    #[derive(Clone, PartialEq, ::prost::Oneof)]
11132    pub enum EncodedString {
11133        /// ISO/IEC 8859-1:1998 encoding aka latin1
11134        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
11135        #[prost(bytes, tag = "2")]
11136        Latin1(::prost::alloc::vec::Vec<u8>),
11137        /// UTF-16 Little Endian Encoding
11138        #[prost(bytes, tag = "3")]
11139        Utf16Le(::prost::alloc::vec::Vec<u8>),
11140        /// UTF-16 Big Endian Encoding
11141        #[prost(bytes, tag = "4")]
11142        Utf16Be(::prost::alloc::vec::Vec<u8>),
11143    }
11144}
11145/// Represents a script that was compiled to generate code. Some V8 code is
11146/// generated out of scripts and will reference a V8Script other types of code
11147/// will not (e.g. builtins).
11148#[derive(Clone, PartialEq, ::prost::Message)]
11149pub struct InternedV8JsScript {
11150    #[prost(uint64, optional, tag = "1")]
11151    pub iid: ::core::option::Option<u64>,
11152    /// Unique in a given isolate
11153    #[prost(int32, optional, tag = "2")]
11154    pub script_id: ::core::option::Option<i32>,
11155    #[prost(enumeration = "interned_v8_js_script::Type", optional, tag = "3")]
11156    pub r#type: ::core::option::Option<i32>,
11157    #[prost(message, optional, tag = "4")]
11158    pub name: ::core::option::Option<V8String>,
11159    /// Actual source of the script
11160    #[prost(message, optional, tag = "5")]
11161    pub source: ::core::option::Option<V8String>,
11162}
11163/// Nested message and enum types in `InternedV8JsScript`.
11164pub mod interned_v8_js_script {
11165    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11166    #[repr(i32)]
11167    pub enum Type {
11168        Unknown = 0,
11169        Normal = 1,
11170        Eval = 2,
11171        Module = 3,
11172        Native = 4,
11173        Extension = 5,
11174        Inspector = 6,
11175    }
11176    impl Type {
11177        /// String value of the enum field names used in the ProtoBuf definition.
11178        ///
11179        /// The values are not transformed in any way and thus are considered stable
11180        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11181        pub fn as_str_name(&self) -> &'static str {
11182            match self {
11183                Self::Unknown => "TYPE_UNKNOWN",
11184                Self::Normal => "TYPE_NORMAL",
11185                Self::Eval => "TYPE_EVAL",
11186                Self::Module => "TYPE_MODULE",
11187                Self::Native => "TYPE_NATIVE",
11188                Self::Extension => "TYPE_EXTENSION",
11189                Self::Inspector => "TYPE_INSPECTOR",
11190            }
11191        }
11192        /// Creates an enum from field names used in the ProtoBuf definition.
11193        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11194            match value {
11195                "TYPE_UNKNOWN" => Some(Self::Unknown),
11196                "TYPE_NORMAL" => Some(Self::Normal),
11197                "TYPE_EVAL" => Some(Self::Eval),
11198                "TYPE_MODULE" => Some(Self::Module),
11199                "TYPE_NATIVE" => Some(Self::Native),
11200                "TYPE_EXTENSION" => Some(Self::Extension),
11201                "TYPE_INSPECTOR" => Some(Self::Inspector),
11202                _ => None,
11203            }
11204        }
11205    }
11206}
11207#[derive(Clone, PartialEq, ::prost::Message)]
11208pub struct InternedV8WasmScript {
11209    #[prost(uint64, optional, tag = "1")]
11210    pub iid: ::core::option::Option<u64>,
11211    /// Unique in a given isolate
11212    #[prost(int32, optional, tag = "2")]
11213    pub script_id: ::core::option::Option<i32>,
11214    #[prost(string, optional, tag = "3")]
11215    pub url: ::core::option::Option<::prost::alloc::string::String>,
11216}
11217#[derive(Clone, Copy, PartialEq, ::prost::Message)]
11218pub struct InternedV8JsFunction {
11219    #[prost(uint64, optional, tag = "1")]
11220    pub iid: ::core::option::Option<u64>,
11221    #[prost(uint64, optional, tag = "2")]
11222    pub v8_js_function_name_iid: ::core::option::Option<u64>,
11223    #[prost(uint64, optional, tag = "3")]
11224    pub v8_js_script_iid: ::core::option::Option<u64>,
11225    #[prost(bool, optional, tag = "4")]
11226    pub is_toplevel: ::core::option::Option<bool>,
11227    #[prost(enumeration = "interned_v8_js_function::Kind", optional, tag = "5")]
11228    pub kind: ::core::option::Option<i32>,
11229    /// Where in the script source this function is defined. This is counted in
11230    /// bytes not characters.
11231    #[prost(uint32, optional, tag = "6")]
11232    pub byte_offset: ::core::option::Option<u32>,
11233}
11234/// Nested message and enum types in `InternedV8JsFunction`.
11235pub mod interned_v8_js_function {
11236    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11237    #[repr(i32)]
11238    pub enum Kind {
11239        Unknown = 0,
11240        NormalFunction = 1,
11241        Module = 2,
11242        AsyncModule = 3,
11243        BaseConstructor = 4,
11244        DefaultBaseConstructor = 5,
11245        DefaultDerivedConstructor = 6,
11246        DerivedConstructor = 7,
11247        GetterFunction = 8,
11248        StaticGetterFunction = 9,
11249        SetterFunction = 10,
11250        StaticSetterFunction = 11,
11251        ArrowFunction = 12,
11252        AsyncArrowFunction = 13,
11253        AsyncFunction = 14,
11254        AsyncConciseMethod = 15,
11255        StaticAsyncConciseMethod = 16,
11256        AsyncConciseGeneratorMethod = 17,
11257        StaticAsyncConciseGeneratorMethod = 18,
11258        AsyncGeneratorFunction = 19,
11259        GeneratorFunction = 20,
11260        ConciseGeneratorMethod = 21,
11261        StaticConciseGeneratorMethod = 22,
11262        ConciseMethod = 23,
11263        StaticConciseMethod = 24,
11264        ClassMembersInitializerFunction = 25,
11265        ClassStaticInitializerFunction = 26,
11266        Invalid = 27,
11267    }
11268    impl Kind {
11269        /// String value of the enum field names used in the ProtoBuf definition.
11270        ///
11271        /// The values are not transformed in any way and thus are considered stable
11272        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11273        pub fn as_str_name(&self) -> &'static str {
11274            match self {
11275                Self::Unknown => "KIND_UNKNOWN",
11276                Self::NormalFunction => "KIND_NORMAL_FUNCTION",
11277                Self::Module => "KIND_MODULE",
11278                Self::AsyncModule => "KIND_ASYNC_MODULE",
11279                Self::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
11280                Self::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
11281                Self::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
11282                Self::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
11283                Self::GetterFunction => "KIND_GETTER_FUNCTION",
11284                Self::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
11285                Self::SetterFunction => "KIND_SETTER_FUNCTION",
11286                Self::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
11287                Self::ArrowFunction => "KIND_ARROW_FUNCTION",
11288                Self::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
11289                Self::AsyncFunction => "KIND_ASYNC_FUNCTION",
11290                Self::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
11291                Self::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
11292                Self::AsyncConciseGeneratorMethod => "KIND_ASYNC_CONCISE_GENERATOR_METHOD",
11293                Self::StaticAsyncConciseGeneratorMethod => {
11294                    "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD"
11295                }
11296                Self::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
11297                Self::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
11298                Self::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
11299                Self::StaticConciseGeneratorMethod => "KIND_STATIC_CONCISE_GENERATOR_METHOD",
11300                Self::ConciseMethod => "KIND_CONCISE_METHOD",
11301                Self::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
11302                Self::ClassMembersInitializerFunction => "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION",
11303                Self::ClassStaticInitializerFunction => "KIND_CLASS_STATIC_INITIALIZER_FUNCTION",
11304                Self::Invalid => "KIND_INVALID",
11305            }
11306        }
11307        /// Creates an enum from field names used in the ProtoBuf definition.
11308        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11309            match value {
11310                "KIND_UNKNOWN" => Some(Self::Unknown),
11311                "KIND_NORMAL_FUNCTION" => Some(Self::NormalFunction),
11312                "KIND_MODULE" => Some(Self::Module),
11313                "KIND_ASYNC_MODULE" => Some(Self::AsyncModule),
11314                "KIND_BASE_CONSTRUCTOR" => Some(Self::BaseConstructor),
11315                "KIND_DEFAULT_BASE_CONSTRUCTOR" => Some(Self::DefaultBaseConstructor),
11316                "KIND_DEFAULT_DERIVED_CONSTRUCTOR" => Some(Self::DefaultDerivedConstructor),
11317                "KIND_DERIVED_CONSTRUCTOR" => Some(Self::DerivedConstructor),
11318                "KIND_GETTER_FUNCTION" => Some(Self::GetterFunction),
11319                "KIND_STATIC_GETTER_FUNCTION" => Some(Self::StaticGetterFunction),
11320                "KIND_SETTER_FUNCTION" => Some(Self::SetterFunction),
11321                "KIND_STATIC_SETTER_FUNCTION" => Some(Self::StaticSetterFunction),
11322                "KIND_ARROW_FUNCTION" => Some(Self::ArrowFunction),
11323                "KIND_ASYNC_ARROW_FUNCTION" => Some(Self::AsyncArrowFunction),
11324                "KIND_ASYNC_FUNCTION" => Some(Self::AsyncFunction),
11325                "KIND_ASYNC_CONCISE_METHOD" => Some(Self::AsyncConciseMethod),
11326                "KIND_STATIC_ASYNC_CONCISE_METHOD" => Some(Self::StaticAsyncConciseMethod),
11327                "KIND_ASYNC_CONCISE_GENERATOR_METHOD" => Some(Self::AsyncConciseGeneratorMethod),
11328                "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD" => {
11329                    Some(Self::StaticAsyncConciseGeneratorMethod)
11330                }
11331                "KIND_ASYNC_GENERATOR_FUNCTION" => Some(Self::AsyncGeneratorFunction),
11332                "KIND_GENERATOR_FUNCTION" => Some(Self::GeneratorFunction),
11333                "KIND_CONCISE_GENERATOR_METHOD" => Some(Self::ConciseGeneratorMethod),
11334                "KIND_STATIC_CONCISE_GENERATOR_METHOD" => Some(Self::StaticConciseGeneratorMethod),
11335                "KIND_CONCISE_METHOD" => Some(Self::ConciseMethod),
11336                "KIND_STATIC_CONCISE_METHOD" => Some(Self::StaticConciseMethod),
11337                "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION" => {
11338                    Some(Self::ClassMembersInitializerFunction)
11339                }
11340                "KIND_CLASS_STATIC_INITIALIZER_FUNCTION" => {
11341                    Some(Self::ClassStaticInitializerFunction)
11342                }
11343                "KIND_INVALID" => Some(Self::Invalid),
11344                _ => None,
11345            }
11346        }
11347    }
11348}
11349/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
11350/// engine.
11351#[derive(Clone, Copy, PartialEq, ::prost::Message)]
11352pub struct InternedV8Isolate {
11353    #[prost(uint64, optional, tag = "1")]
11354    pub iid: ::core::option::Option<u64>,
11355    #[prost(uint32, optional, tag = "2")]
11356    pub pid: ::core::option::Option<u32>,
11357    /// Process unique isolate id.
11358    #[prost(int32, optional, tag = "3")]
11359    pub isolate_id: ::core::option::Option<i32>,
11360    #[prost(message, optional, tag = "4")]
11361    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
11362    /// The embedded blob holds code for built in functions that are precompiled in
11363    /// the V8 library.
11364    #[prost(uint64, optional, tag = "5")]
11365    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
11366    #[prost(uint64, optional, tag = "6")]
11367    pub embedded_blob_code_size: ::core::option::Option<u64>,
11368}
11369/// Nested message and enum types in `InternedV8Isolate`.
11370pub mod interned_v8_isolate {
11371    /// A code range is a virtual memory cage that may contain executable code.
11372    /// Depending on the Isolate settings the Isolate might have one or not.
11373    /// See:
11374    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
11375    /// If the isolate defines code range this will be tracked here.
11376    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
11377    pub struct CodeRange {
11378        #[prost(uint64, optional, tag = "1")]
11379        pub base_address: ::core::option::Option<u64>,
11380        #[prost(uint64, optional, tag = "2")]
11381        pub size: ::core::option::Option<u64>,
11382        /// Used when short builtin calls are enabled, where embedded builtins are
11383        /// copied into the CodeRange so calls can be nearer.
11384        #[prost(uint64, optional, tag = "3")]
11385        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
11386        /// Whether this code range is shared with other Isolates in the same process
11387        #[prost(bool, optional, tag = "4")]
11388        pub is_process_wide: ::core::option::Option<bool>,
11389    }
11390}
11391#[derive(Clone, PartialEq, ::prost::Message)]
11392pub struct V8JsCode {
11393    #[prost(uint64, optional, tag = "1")]
11394    pub v8_isolate_iid: ::core::option::Option<u64>,
11395    #[prost(uint32, optional, tag = "2")]
11396    pub tid: ::core::option::Option<u32>,
11397    #[prost(uint64, optional, tag = "3")]
11398    pub v8_js_function_iid: ::core::option::Option<u64>,
11399    #[prost(enumeration = "v8_js_code::Tier", optional, tag = "4")]
11400    pub tier: ::core::option::Option<i32>,
11401    #[prost(uint64, optional, tag = "5")]
11402    pub instruction_start: ::core::option::Option<u64>,
11403    #[prost(uint64, optional, tag = "6")]
11404    pub instruction_size_bytes: ::core::option::Option<u64>,
11405    #[prost(oneof = "v8_js_code::Instructions", tags = "7, 8")]
11406    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
11407}
11408/// Nested message and enum types in `V8JsCode`.
11409pub mod v8_js_code {
11410    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11411    #[repr(i32)]
11412    pub enum Tier {
11413        Unknown = 0,
11414        Ignition = 1,
11415        Sparkplug = 2,
11416        Maglev = 3,
11417        Turboshaft = 4,
11418        Turbofan = 5,
11419    }
11420    impl Tier {
11421        /// String value of the enum field names used in the ProtoBuf definition.
11422        ///
11423        /// The values are not transformed in any way and thus are considered stable
11424        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11425        pub fn as_str_name(&self) -> &'static str {
11426            match self {
11427                Self::Unknown => "TIER_UNKNOWN",
11428                Self::Ignition => "TIER_IGNITION",
11429                Self::Sparkplug => "TIER_SPARKPLUG",
11430                Self::Maglev => "TIER_MAGLEV",
11431                Self::Turboshaft => "TIER_TURBOSHAFT",
11432                Self::Turbofan => "TIER_TURBOFAN",
11433            }
11434        }
11435        /// Creates an enum from field names used in the ProtoBuf definition.
11436        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11437            match value {
11438                "TIER_UNKNOWN" => Some(Self::Unknown),
11439                "TIER_IGNITION" => Some(Self::Ignition),
11440                "TIER_SPARKPLUG" => Some(Self::Sparkplug),
11441                "TIER_MAGLEV" => Some(Self::Maglev),
11442                "TIER_TURBOSHAFT" => Some(Self::Turboshaft),
11443                "TIER_TURBOFAN" => Some(Self::Turbofan),
11444                _ => None,
11445            }
11446        }
11447    }
11448    #[derive(Clone, PartialEq, ::prost::Oneof)]
11449    pub enum Instructions {
11450        #[prost(bytes, tag = "7")]
11451        MachineCode(::prost::alloc::vec::Vec<u8>),
11452        #[prost(bytes, tag = "8")]
11453        Bytecode(::prost::alloc::vec::Vec<u8>),
11454    }
11455}
11456#[derive(Clone, PartialEq, ::prost::Message)]
11457pub struct V8InternalCode {
11458    #[prost(uint64, optional, tag = "1")]
11459    pub v8_isolate_iid: ::core::option::Option<u64>,
11460    #[prost(uint32, optional, tag = "2")]
11461    pub tid: ::core::option::Option<u32>,
11462    #[prost(string, optional, tag = "3")]
11463    pub name: ::core::option::Option<::prost::alloc::string::String>,
11464    #[prost(enumeration = "v8_internal_code::Type", optional, tag = "4")]
11465    pub r#type: ::core::option::Option<i32>,
11466    #[prost(int32, optional, tag = "5")]
11467    pub builtin_id: ::core::option::Option<i32>,
11468    #[prost(uint64, optional, tag = "6")]
11469    pub instruction_start: ::core::option::Option<u64>,
11470    #[prost(uint64, optional, tag = "7")]
11471    pub instruction_size_bytes: ::core::option::Option<u64>,
11472    #[prost(bytes = "vec", optional, tag = "8")]
11473    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
11474}
11475/// Nested message and enum types in `V8InternalCode`.
11476pub mod v8_internal_code {
11477    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11478    #[repr(i32)]
11479    pub enum Type {
11480        Unknown = 0,
11481        BytecodeHandler = 1,
11482        ForTesting = 2,
11483        Builtin = 3,
11484        WasmFunction = 4,
11485        WasmToCapiFunction = 5,
11486        WasmToJsFunction = 6,
11487        JsToWasmFunction = 7,
11488        JsToJsFunction = 8,
11489        CWasmEntry = 9,
11490    }
11491    impl Type {
11492        /// String value of the enum field names used in the ProtoBuf definition.
11493        ///
11494        /// The values are not transformed in any way and thus are considered stable
11495        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11496        pub fn as_str_name(&self) -> &'static str {
11497            match self {
11498                Self::Unknown => "TYPE_UNKNOWN",
11499                Self::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
11500                Self::ForTesting => "TYPE_FOR_TESTING",
11501                Self::Builtin => "TYPE_BUILTIN",
11502                Self::WasmFunction => "TYPE_WASM_FUNCTION",
11503                Self::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
11504                Self::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
11505                Self::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
11506                Self::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
11507                Self::CWasmEntry => "TYPE_C_WASM_ENTRY",
11508            }
11509        }
11510        /// Creates an enum from field names used in the ProtoBuf definition.
11511        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11512            match value {
11513                "TYPE_UNKNOWN" => Some(Self::Unknown),
11514                "TYPE_BYTECODE_HANDLER" => Some(Self::BytecodeHandler),
11515                "TYPE_FOR_TESTING" => Some(Self::ForTesting),
11516                "TYPE_BUILTIN" => Some(Self::Builtin),
11517                "TYPE_WASM_FUNCTION" => Some(Self::WasmFunction),
11518                "TYPE_WASM_TO_CAPI_FUNCTION" => Some(Self::WasmToCapiFunction),
11519                "TYPE_WASM_TO_JS_FUNCTION" => Some(Self::WasmToJsFunction),
11520                "TYPE_JS_TO_WASM_FUNCTION" => Some(Self::JsToWasmFunction),
11521                "TYPE_JS_TO_JS_FUNCTION" => Some(Self::JsToJsFunction),
11522                "TYPE_C_WASM_ENTRY" => Some(Self::CWasmEntry),
11523                _ => None,
11524            }
11525        }
11526    }
11527}
11528#[derive(Clone, PartialEq, ::prost::Message)]
11529pub struct V8WasmCode {
11530    #[prost(uint64, optional, tag = "1")]
11531    pub v8_isolate_iid: ::core::option::Option<u64>,
11532    #[prost(uint32, optional, tag = "2")]
11533    pub tid: ::core::option::Option<u32>,
11534    #[prost(uint64, optional, tag = "3")]
11535    pub v8_wasm_script_iid: ::core::option::Option<u64>,
11536    #[prost(string, optional, tag = "4")]
11537    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
11538    #[prost(enumeration = "v8_wasm_code::Tier", optional, tag = "5")]
11539    pub tier: ::core::option::Option<i32>,
11540    #[prost(int32, optional, tag = "6")]
11541    pub code_offset_in_module: ::core::option::Option<i32>,
11542    #[prost(uint64, optional, tag = "7")]
11543    pub instruction_start: ::core::option::Option<u64>,
11544    #[prost(uint64, optional, tag = "8")]
11545    pub instruction_size_bytes: ::core::option::Option<u64>,
11546    #[prost(bytes = "vec", optional, tag = "9")]
11547    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
11548}
11549/// Nested message and enum types in `V8WasmCode`.
11550pub mod v8_wasm_code {
11551    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11552    #[repr(i32)]
11553    pub enum Tier {
11554        Unknown = 0,
11555        Liftoff = 1,
11556        Turbofan = 2,
11557    }
11558    impl Tier {
11559        /// String value of the enum field names used in the ProtoBuf definition.
11560        ///
11561        /// The values are not transformed in any way and thus are considered stable
11562        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11563        pub fn as_str_name(&self) -> &'static str {
11564            match self {
11565                Self::Unknown => "TIER_UNKNOWN",
11566                Self::Liftoff => "TIER_LIFTOFF",
11567                Self::Turbofan => "TIER_TURBOFAN",
11568            }
11569        }
11570        /// Creates an enum from field names used in the ProtoBuf definition.
11571        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11572            match value {
11573                "TIER_UNKNOWN" => Some(Self::Unknown),
11574                "TIER_LIFTOFF" => Some(Self::Liftoff),
11575                "TIER_TURBOFAN" => Some(Self::Turbofan),
11576                _ => None,
11577            }
11578        }
11579    }
11580}
11581#[derive(Clone, PartialEq, ::prost::Message)]
11582pub struct V8RegExpCode {
11583    #[prost(uint64, optional, tag = "1")]
11584    pub v8_isolate_iid: ::core::option::Option<u64>,
11585    #[prost(uint32, optional, tag = "2")]
11586    pub tid: ::core::option::Option<u32>,
11587    #[prost(message, optional, tag = "3")]
11588    pub pattern: ::core::option::Option<V8String>,
11589    #[prost(uint64, optional, tag = "4")]
11590    pub instruction_start: ::core::option::Option<u64>,
11591    #[prost(uint64, optional, tag = "5")]
11592    pub instruction_size_bytes: ::core::option::Option<u64>,
11593    #[prost(bytes = "vec", optional, tag = "6")]
11594    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
11595}
11596/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
11597/// memory by V8's GC.
11598#[derive(Clone, PartialEq, ::prost::Message)]
11599pub struct V8CodeMove {
11600    #[prost(uint64, optional, tag = "1")]
11601    pub isolate_iid: ::core::option::Option<u64>,
11602    #[prost(uint32, optional, tag = "2")]
11603    pub tid: ::core::option::Option<u32>,
11604    #[prost(uint64, optional, tag = "3")]
11605    pub from_instruction_start_address: ::core::option::Option<u64>,
11606    #[prost(uint64, optional, tag = "4")]
11607    pub to_instruction_start_address: ::core::option::Option<u64>,
11608    #[prost(uint64, optional, tag = "5")]
11609    pub instruction_size_bytes: ::core::option::Option<u64>,
11610    #[prost(oneof = "v8_code_move::ToInstructions", tags = "6, 7")]
11611    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
11612}
11613/// Nested message and enum types in `V8CodeMove`.
11614pub mod v8_code_move {
11615    #[derive(Clone, PartialEq, ::prost::Oneof)]
11616    pub enum ToInstructions {
11617        #[prost(bytes, tag = "6")]
11618        ToMachineCode(::prost::alloc::vec::Vec<u8>),
11619        #[prost(bytes, tag = "7")]
11620        ToBytecode(::prost::alloc::vec::Vec<u8>),
11621    }
11622}
11623#[derive(Clone, Copy, PartialEq, ::prost::Message)]
11624pub struct V8CodeDefaults {
11625    #[prost(uint32, optional, tag = "1")]
11626    pub tid: ::core::option::Option<u32>,
11627}
11628/// A snapshot of clock readings to allow for trace alignment.
11629#[derive(Clone, PartialEq, ::prost::Message)]
11630pub struct ClockSnapshot {
11631    #[prost(message, repeated, tag = "1")]
11632    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
11633    /// The authoritative clock domain for the trace. Defaults to BOOTTIME, but can
11634    /// be overridden in TraceConfig's builtin_data_sources. Trace processor will
11635    /// attempt to translate packet/event timestamps from various data sources (and
11636    /// their chosen clock domains) to this domain during import.
11637    #[prost(enumeration = "BuiltinClock", optional, tag = "2")]
11638    pub primary_trace_clock: ::core::option::Option<i32>,
11639}
11640/// Nested message and enum types in `ClockSnapshot`.
11641pub mod clock_snapshot {
11642    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
11643    pub struct Clock {
11644        /// Clock IDs have the following semantic:
11645        /// \[1, 63\]:    Builtin types, see BuiltinClock from
11646        ///              ../common/builtin_clock.proto.
11647        /// \[64, 127\]:  User-defined clocks. These clocks are sequence-scoped. They
11648        ///              are only valid within the same |trusted_packet_sequence_id|
11649        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
11650        ///              that emitted the clock snapshot).
11651        /// \[128, MAX\]: Reserved for future use. The idea is to allow global clock
11652        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
11653        #[prost(uint32, optional, tag = "1")]
11654        pub clock_id: ::core::option::Option<u32>,
11655        /// Absolute timestamp. Unit is ns unless specified otherwise by the
11656        /// unit_multiplier_ns field below.
11657        #[prost(uint64, optional, tag = "2")]
11658        pub timestamp: ::core::option::Option<u64>,
11659        /// When true each TracePacket's timestamp should be interpreted as a delta
11660        /// from the last TracePacket's timestamp (referencing this clock) emitted by
11661        /// the same packet_sequence_id. Should only be used for user-defined
11662        /// sequence-local clocks. The first packet timestamp after each
11663        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
11664        /// the ClockSnapshot.
11665        #[prost(bool, optional, tag = "3")]
11666        pub is_incremental: ::core::option::Option<bool>,
11667        /// Allows to specify a custom unit different than the default (ns) for this
11668        /// clock domain. A multiplier of 1000 means that a timestamp = 3 should be
11669        /// interpreted as 3000 ns = 3 us. All snapshots for the same clock within a
11670        /// trace need to use the same unit.
11671        #[prost(uint64, optional, tag = "4")]
11672        pub unit_multiplier_ns: ::core::option::Option<u64>,
11673    }
11674    /// Nested message and enum types in `Clock`.
11675    pub mod clock {
11676        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
11677        #[derive(
11678            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
11679        )]
11680        #[repr(i32)]
11681        pub enum BuiltinClocks {
11682            Unknown = 0,
11683            Realtime = 1,
11684            RealtimeCoarse = 2,
11685            Monotonic = 3,
11686            MonotonicCoarse = 4,
11687            MonotonicRaw = 5,
11688            Boottime = 6,
11689            BuiltinClockMaxId = 63,
11690        }
11691        impl BuiltinClocks {
11692            /// String value of the enum field names used in the ProtoBuf definition.
11693            ///
11694            /// The values are not transformed in any way and thus are considered stable
11695            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11696            pub fn as_str_name(&self) -> &'static str {
11697                match self {
11698                    Self::Unknown => "UNKNOWN",
11699                    Self::Realtime => "REALTIME",
11700                    Self::RealtimeCoarse => "REALTIME_COARSE",
11701                    Self::Monotonic => "MONOTONIC",
11702                    Self::MonotonicCoarse => "MONOTONIC_COARSE",
11703                    Self::MonotonicRaw => "MONOTONIC_RAW",
11704                    Self::Boottime => "BOOTTIME",
11705                    Self::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
11706                }
11707            }
11708            /// Creates an enum from field names used in the ProtoBuf definition.
11709            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11710                match value {
11711                    "UNKNOWN" => Some(Self::Unknown),
11712                    "REALTIME" => Some(Self::Realtime),
11713                    "REALTIME_COARSE" => Some(Self::RealtimeCoarse),
11714                    "MONOTONIC" => Some(Self::Monotonic),
11715                    "MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
11716                    "MONOTONIC_RAW" => Some(Self::MonotonicRaw),
11717                    "BOOTTIME" => Some(Self::Boottime),
11718                    "BUILTIN_CLOCK_MAX_ID" => Some(Self::BuiltinClockMaxId),
11719                    _ => None,
11720                }
11721            }
11722        }
11723    }
11724}
11725/// Proto definition based on the Thread_v2 CSwitch class definition
11726/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
11727#[derive(Clone, Copy, PartialEq, ::prost::Message)]
11728pub struct CSwitchEtwEvent {
11729    /// New thread ID after the switch.
11730    #[prost(uint32, optional, tag = "1")]
11731    pub new_thread_id: ::core::option::Option<u32>,
11732    /// Previous thread ID.
11733    #[prost(uint32, optional, tag = "2")]
11734    pub old_thread_id: ::core::option::Option<u32>,
11735    /// Thread priority of the new thread.
11736    #[prost(sint32, optional, tag = "3")]
11737    pub new_thread_priority: ::core::option::Option<i32>,
11738    /// Thread priority of the previous thread.
11739    #[prost(sint32, optional, tag = "4")]
11740    pub old_thread_priority: ::core::option::Option<i32>,
11741    /// The index of the C-state that was last used by the processor. A value of 0
11742    /// represents the lightest idle state with higher values representing deeper
11743    /// C-states.
11744    #[prost(uint32, optional, tag = "5")]
11745    pub previous_c_state: ::core::option::Option<u32>,
11746    #[prost(
11747        enumeration = "c_switch_etw_event::OldThreadWaitReason",
11748        optional,
11749        tag = "6"
11750    )]
11751    pub old_thread_wait_reason: ::core::option::Option<i32>,
11752    #[prost(
11753        enumeration = "c_switch_etw_event::OldThreadWaitMode",
11754        optional,
11755        tag = "7"
11756    )]
11757    pub old_thread_wait_mode: ::core::option::Option<i32>,
11758    #[prost(
11759        enumeration = "c_switch_etw_event::OldThreadState",
11760        optional,
11761        tag = "8"
11762    )]
11763    pub old_thread_state: ::core::option::Option<i32>,
11764    /// Ideal wait time of the previous thread.
11765    #[prost(sint32, optional, tag = "9")]
11766    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
11767    /// Wait time for the new thread.
11768    #[prost(uint32, optional, tag = "10")]
11769    pub new_thread_wait_time: ::core::option::Option<u32>,
11770}
11771/// Nested message and enum types in `CSwitchEtwEvent`.
11772pub mod c_switch_etw_event {
11773    /// Wait reason for the previous thread. The ordering is important as based on
11774    /// the OldThreadWaitReason definition from the link above. The following are
11775    /// the possible values:
11776    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11777    #[repr(i32)]
11778    pub enum OldThreadWaitReason {
11779        Executive = 0,
11780        FreePage = 1,
11781        PageIn = 2,
11782        PoolAllocation = 3,
11783        DelayExecution = 4,
11784        Suspend = 5,
11785        UserRequest = 6,
11786        WrExecutive = 7,
11787        WrFreePage = 8,
11788        WrPageIn = 9,
11789        WrPoolAllocation = 10,
11790        WrDelayExecution = 11,
11791        WrSuspended = 12,
11792        WrUserRequest = 13,
11793        WrEventPair = 14,
11794        WrQueue = 15,
11795        WrLpcReceiver = 16,
11796        WrLpcReply = 17,
11797        WrVirtualMemory = 18,
11798        WrPageOut = 19,
11799        WrRendezVous = 20,
11800        WrKeyedEvent = 21,
11801        WrTerminated = 22,
11802        WrProcessInSwap = 23,
11803        WrCpuRateControl = 24,
11804        WrCalloutStack = 25,
11805        WrKernel = 26,
11806        WrResource = 27,
11807        WrPushLock = 28,
11808        WrMutex = 29,
11809        WrQuantumEnd = 30,
11810        WrDispatchInt = 31,
11811        WrPreempted = 32,
11812        WrYieldExecution = 33,
11813        WrFastMutex = 34,
11814        WrGuardMutex = 35,
11815        WrRundown = 36,
11816        MaximumWaitReason = 37,
11817    }
11818    impl OldThreadWaitReason {
11819        /// String value of the enum field names used in the ProtoBuf definition.
11820        ///
11821        /// The values are not transformed in any way and thus are considered stable
11822        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11823        pub fn as_str_name(&self) -> &'static str {
11824            match self {
11825                Self::Executive => "EXECUTIVE",
11826                Self::FreePage => "FREE_PAGE",
11827                Self::PageIn => "PAGE_IN",
11828                Self::PoolAllocation => "POOL_ALLOCATION",
11829                Self::DelayExecution => "DELAY_EXECUTION",
11830                Self::Suspend => "SUSPEND",
11831                Self::UserRequest => "USER_REQUEST",
11832                Self::WrExecutive => "WR_EXECUTIVE",
11833                Self::WrFreePage => "WR_FREE_PAGE",
11834                Self::WrPageIn => "WR_PAGE_IN",
11835                Self::WrPoolAllocation => "WR_POOL_ALLOCATION",
11836                Self::WrDelayExecution => "WR_DELAY_EXECUTION",
11837                Self::WrSuspended => "WR_SUSPENDED",
11838                Self::WrUserRequest => "WR_USER_REQUEST",
11839                Self::WrEventPair => "WR_EVENT_PAIR",
11840                Self::WrQueue => "WR_QUEUE",
11841                Self::WrLpcReceiver => "WR_LPC_RECEIVER",
11842                Self::WrLpcReply => "WR_LPC_REPLY",
11843                Self::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
11844                Self::WrPageOut => "WR_PAGE_OUT",
11845                Self::WrRendezVous => "WR_RENDEZ_VOUS",
11846                Self::WrKeyedEvent => "WR_KEYED_EVENT",
11847                Self::WrTerminated => "WR_TERMINATED",
11848                Self::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
11849                Self::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
11850                Self::WrCalloutStack => "WR_CALLOUT_STACK",
11851                Self::WrKernel => "WR_KERNEL",
11852                Self::WrResource => "WR_RESOURCE",
11853                Self::WrPushLock => "WR_PUSH_LOCK",
11854                Self::WrMutex => "WR_MUTEX",
11855                Self::WrQuantumEnd => "WR_QUANTUM_END",
11856                Self::WrDispatchInt => "WR_DISPATCH_INT",
11857                Self::WrPreempted => "WR_PREEMPTED",
11858                Self::WrYieldExecution => "WR_YIELD_EXECUTION",
11859                Self::WrFastMutex => "WR_FAST_MUTEX",
11860                Self::WrGuardMutex => "WR_GUARD_MUTEX",
11861                Self::WrRundown => "WR_RUNDOWN",
11862                Self::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
11863            }
11864        }
11865        /// Creates an enum from field names used in the ProtoBuf definition.
11866        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11867            match value {
11868                "EXECUTIVE" => Some(Self::Executive),
11869                "FREE_PAGE" => Some(Self::FreePage),
11870                "PAGE_IN" => Some(Self::PageIn),
11871                "POOL_ALLOCATION" => Some(Self::PoolAllocation),
11872                "DELAY_EXECUTION" => Some(Self::DelayExecution),
11873                "SUSPEND" => Some(Self::Suspend),
11874                "USER_REQUEST" => Some(Self::UserRequest),
11875                "WR_EXECUTIVE" => Some(Self::WrExecutive),
11876                "WR_FREE_PAGE" => Some(Self::WrFreePage),
11877                "WR_PAGE_IN" => Some(Self::WrPageIn),
11878                "WR_POOL_ALLOCATION" => Some(Self::WrPoolAllocation),
11879                "WR_DELAY_EXECUTION" => Some(Self::WrDelayExecution),
11880                "WR_SUSPENDED" => Some(Self::WrSuspended),
11881                "WR_USER_REQUEST" => Some(Self::WrUserRequest),
11882                "WR_EVENT_PAIR" => Some(Self::WrEventPair),
11883                "WR_QUEUE" => Some(Self::WrQueue),
11884                "WR_LPC_RECEIVER" => Some(Self::WrLpcReceiver),
11885                "WR_LPC_REPLY" => Some(Self::WrLpcReply),
11886                "WR_VIRTUAL_MEMORY" => Some(Self::WrVirtualMemory),
11887                "WR_PAGE_OUT" => Some(Self::WrPageOut),
11888                "WR_RENDEZ_VOUS" => Some(Self::WrRendezVous),
11889                "WR_KEYED_EVENT" => Some(Self::WrKeyedEvent),
11890                "WR_TERMINATED" => Some(Self::WrTerminated),
11891                "WR_PROCESS_IN_SWAP" => Some(Self::WrProcessInSwap),
11892                "WR_CPU_RATE_CONTROL" => Some(Self::WrCpuRateControl),
11893                "WR_CALLOUT_STACK" => Some(Self::WrCalloutStack),
11894                "WR_KERNEL" => Some(Self::WrKernel),
11895                "WR_RESOURCE" => Some(Self::WrResource),
11896                "WR_PUSH_LOCK" => Some(Self::WrPushLock),
11897                "WR_MUTEX" => Some(Self::WrMutex),
11898                "WR_QUANTUM_END" => Some(Self::WrQuantumEnd),
11899                "WR_DISPATCH_INT" => Some(Self::WrDispatchInt),
11900                "WR_PREEMPTED" => Some(Self::WrPreempted),
11901                "WR_YIELD_EXECUTION" => Some(Self::WrYieldExecution),
11902                "WR_FAST_MUTEX" => Some(Self::WrFastMutex),
11903                "WR_GUARD_MUTEX" => Some(Self::WrGuardMutex),
11904                "WR_RUNDOWN" => Some(Self::WrRundown),
11905                "MAXIMUM_WAIT_REASON" => Some(Self::MaximumWaitReason),
11906                _ => None,
11907            }
11908        }
11909    }
11910    /// Wait mode for the previous thread. The ordering is important as based on
11911    /// the OldThreadWaitMode definition from the link above. The following are the
11912    /// possible values:
11913    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11914    #[repr(i32)]
11915    pub enum OldThreadWaitMode {
11916        KernelMode = 0,
11917        UserMode = 1,
11918    }
11919    impl OldThreadWaitMode {
11920        /// String value of the enum field names used in the ProtoBuf definition.
11921        ///
11922        /// The values are not transformed in any way and thus are considered stable
11923        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11924        pub fn as_str_name(&self) -> &'static str {
11925            match self {
11926                Self::KernelMode => "KERNEL_MODE",
11927                Self::UserMode => "USER_MODE",
11928            }
11929        }
11930        /// Creates an enum from field names used in the ProtoBuf definition.
11931        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11932            match value {
11933                "KERNEL_MODE" => Some(Self::KernelMode),
11934                "USER_MODE" => Some(Self::UserMode),
11935                _ => None,
11936            }
11937        }
11938    }
11939    /// State of the previous thread. The ordering is important as based on the
11940    /// OldThreadState definition from the link above. The following are the
11941    /// possible state values:
11942    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11943    #[repr(i32)]
11944    pub enum OldThreadState {
11945        Initialized = 0,
11946        Ready = 1,
11947        Running = 2,
11948        Standby = 3,
11949        Terminated = 4,
11950        Waiting = 5,
11951        Transition = 6,
11952        DeferredReady = 7,
11953    }
11954    impl OldThreadState {
11955        /// String value of the enum field names used in the ProtoBuf definition.
11956        ///
11957        /// The values are not transformed in any way and thus are considered stable
11958        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11959        pub fn as_str_name(&self) -> &'static str {
11960            match self {
11961                Self::Initialized => "INITIALIZED",
11962                Self::Ready => "READY",
11963                Self::Running => "RUNNING",
11964                Self::Standby => "STANDBY",
11965                Self::Terminated => "TERMINATED",
11966                Self::Waiting => "WAITING",
11967                Self::Transition => "TRANSITION",
11968                Self::DeferredReady => "DEFERRED_READY",
11969            }
11970        }
11971        /// Creates an enum from field names used in the ProtoBuf definition.
11972        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11973            match value {
11974                "INITIALIZED" => Some(Self::Initialized),
11975                "READY" => Some(Self::Ready),
11976                "RUNNING" => Some(Self::Running),
11977                "STANDBY" => Some(Self::Standby),
11978                "TERMINATED" => Some(Self::Terminated),
11979                "WAITING" => Some(Self::Waiting),
11980                "TRANSITION" => Some(Self::Transition),
11981                "DEFERRED_READY" => Some(Self::DeferredReady),
11982                _ => None,
11983            }
11984        }
11985    }
11986}
11987/// Proto definition based on the Thread_v2 CSwitch class definition
11988/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
11989#[derive(Clone, Copy, PartialEq, ::prost::Message)]
11990pub struct ReadyThreadEtwEvent {
11991    /// The thread identifier of the thread being readied for execution.
11992    #[prost(uint32, optional, tag = "1")]
11993    pub t_thread_id: ::core::option::Option<u32>,
11994    #[prost(
11995        enumeration = "ready_thread_etw_event::AdjustReason",
11996        optional,
11997        tag = "2"
11998    )]
11999    pub adjust_reason: ::core::option::Option<i32>,
12000    ///   The value by which the priority is being adjusted.
12001    #[prost(sint32, optional, tag = "3")]
12002    pub adjust_increment: ::core::option::Option<i32>,
12003    #[prost(enumeration = "ready_thread_etw_event::TraceFlag", optional, tag = "4")]
12004    pub flag: ::core::option::Option<i32>,
12005}
12006/// Nested message and enum types in `ReadyThreadEtwEvent`.
12007pub mod ready_thread_etw_event {
12008    /// The reason for the priority boost. The ordering is important as based on
12009    /// the AdjustReason definition from the link above.
12010    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
12011    #[repr(i32)]
12012    pub enum AdjustReason {
12013        IgnoreTheIncrement = 0,
12014        /// Apply the increment, which will decay incrementally at the end of each
12015        /// quantum.
12016        ApplyIncrement = 1,
12017        /// Apply the increment as a boost that will decay in its entirety at quantum
12018        /// (typically for priority donation).
12019        ApplyIncrementBoost = 2,
12020    }
12021    impl AdjustReason {
12022        /// String value of the enum field names used in the ProtoBuf definition.
12023        ///
12024        /// The values are not transformed in any way and thus are considered stable
12025        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12026        pub fn as_str_name(&self) -> &'static str {
12027            match self {
12028                Self::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
12029                Self::ApplyIncrement => "APPLY_INCREMENT",
12030                Self::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
12031            }
12032        }
12033        /// Creates an enum from field names used in the ProtoBuf definition.
12034        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12035            match value {
12036                "IGNORE_THE_INCREMENT" => Some(Self::IgnoreTheIncrement),
12037                "APPLY_INCREMENT" => Some(Self::ApplyIncrement),
12038                "APPLY_INCREMENT_BOOST" => Some(Self::ApplyIncrementBoost),
12039                _ => None,
12040            }
12041        }
12042    }
12043    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
12044    #[repr(i32)]
12045    pub enum TraceFlag {
12046        Unspecified = 0,
12047        /// The thread has been readied from DPC (deferred procedure call).
12048        ThreadReadied = 1,
12049        /// The kernel stack is currently swapped out.
12050        KernelStackSwappedOut = 2,
12051        /// The process address space is swapped out.
12052        ProcessAddressSwappedOut = 4,
12053    }
12054    impl TraceFlag {
12055        /// String value of the enum field names used in the ProtoBuf definition.
12056        ///
12057        /// The values are not transformed in any way and thus are considered stable
12058        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12059        pub fn as_str_name(&self) -> &'static str {
12060            match self {
12061                Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
12062                Self::ThreadReadied => "THREAD_READIED",
12063                Self::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
12064                Self::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
12065            }
12066        }
12067        /// Creates an enum from field names used in the ProtoBuf definition.
12068        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12069            match value {
12070                "TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
12071                "THREAD_READIED" => Some(Self::ThreadReadied),
12072                "KERNEL_STACK_SWAPPED_OUT" => Some(Self::KernelStackSwappedOut),
12073                "PROCESS_ADDRESS_SWAPPED_OUT" => Some(Self::ProcessAddressSwappedOut),
12074                _ => None,
12075            }
12076        }
12077    }
12078}
12079#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12080pub struct EtwTraceEvent {
12081    #[prost(uint64, optional, tag = "1")]
12082    pub timestamp: ::core::option::Option<u64>,
12083    #[prost(uint32, optional, tag = "4")]
12084    pub cpu: ::core::option::Option<u32>,
12085    #[prost(oneof = "etw_trace_event::Event", tags = "2, 3")]
12086    pub event: ::core::option::Option<etw_trace_event::Event>,
12087}
12088/// Nested message and enum types in `EtwTraceEvent`.
12089pub mod etw_trace_event {
12090    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
12091    pub enum Event {
12092        #[prost(message, tag = "2")]
12093        CSwitch(super::CSwitchEtwEvent),
12094        #[prost(message, tag = "3")]
12095        ReadyThread(super::ReadyThreadEtwEvent),
12096    }
12097}
12098/// The result of tracing one or more etw event uses per-processor buffers where
12099/// an in-use buffer is assigned to each processor at all times. Therefore,
12100/// collecting multiple events they should already be synchronized.
12101#[derive(Clone, PartialEq, ::prost::Message)]
12102pub struct EtwTraceEventBundle {
12103    #[prost(uint32, optional, tag = "1")]
12104    pub cpu: ::core::option::Option<u32>,
12105    #[prost(message, repeated, tag = "2")]
12106    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
12107}
12108/// Represents the mapping between inode numbers in a block device and their path
12109/// on the filesystem
12110#[derive(Clone, PartialEq, ::prost::Message)]
12111pub struct InodeFileMap {
12112    #[prost(uint64, optional, tag = "1")]
12113    pub block_device_id: ::core::option::Option<u64>,
12114    /// The mount points of the block device, e.g. \["system"\].
12115    #[prost(string, repeated, tag = "2")]
12116    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12117    /// The list of all the entries from the block device
12118    #[prost(message, repeated, tag = "3")]
12119    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
12120}
12121/// Nested message and enum types in `InodeFileMap`.
12122pub mod inode_file_map {
12123    /// Representation of Entry
12124    #[derive(Clone, PartialEq, ::prost::Message)]
12125    pub struct Entry {
12126        #[prost(uint64, optional, tag = "1")]
12127        pub inode_number: ::core::option::Option<u64>,
12128        /// The path to the file, e.g. "etc/file.xml"
12129        /// List of strings for multiple hardlinks
12130        #[prost(string, repeated, tag = "2")]
12131        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12132        #[prost(enumeration = "entry::Type", optional, tag = "3")]
12133        pub r#type: ::core::option::Option<i32>,
12134    }
12135    /// Nested message and enum types in `Entry`.
12136    pub mod entry {
12137        /// The file type
12138        #[derive(
12139            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
12140        )]
12141        #[repr(i32)]
12142        pub enum Type {
12143            Unknown = 0,
12144            File = 1,
12145            Directory = 2,
12146        }
12147        impl Type {
12148            /// String value of the enum field names used in the ProtoBuf definition.
12149            ///
12150            /// The values are not transformed in any way and thus are considered stable
12151            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12152            pub fn as_str_name(&self) -> &'static str {
12153                match self {
12154                    Self::Unknown => "UNKNOWN",
12155                    Self::File => "FILE",
12156                    Self::Directory => "DIRECTORY",
12157                }
12158            }
12159            /// Creates an enum from field names used in the ProtoBuf definition.
12160            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12161                match value {
12162                    "UNKNOWN" => Some(Self::Unknown),
12163                    "FILE" => Some(Self::File),
12164                    "DIRECTORY" => Some(Self::Directory),
12165                    _ => None,
12166                }
12167            }
12168        }
12169    }
12170}
12171#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12172pub struct AndroidFsDatareadEndFtraceEvent {
12173    #[prost(int32, optional, tag = "1")]
12174    pub bytes: ::core::option::Option<i32>,
12175    #[prost(uint64, optional, tag = "2")]
12176    pub ino: ::core::option::Option<u64>,
12177    #[prost(int64, optional, tag = "3")]
12178    pub offset: ::core::option::Option<i64>,
12179}
12180#[derive(Clone, PartialEq, ::prost::Message)]
12181pub struct AndroidFsDatareadStartFtraceEvent {
12182    #[prost(int32, optional, tag = "1")]
12183    pub bytes: ::core::option::Option<i32>,
12184    #[prost(string, optional, tag = "2")]
12185    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
12186    #[prost(int64, optional, tag = "3")]
12187    pub i_size: ::core::option::Option<i64>,
12188    #[prost(uint64, optional, tag = "4")]
12189    pub ino: ::core::option::Option<u64>,
12190    #[prost(int64, optional, tag = "5")]
12191    pub offset: ::core::option::Option<i64>,
12192    #[prost(string, optional, tag = "6")]
12193    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
12194    #[prost(int32, optional, tag = "7")]
12195    pub pid: ::core::option::Option<i32>,
12196}
12197#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12198pub struct AndroidFsDatawriteEndFtraceEvent {
12199    #[prost(int32, optional, tag = "1")]
12200    pub bytes: ::core::option::Option<i32>,
12201    #[prost(uint64, optional, tag = "2")]
12202    pub ino: ::core::option::Option<u64>,
12203    #[prost(int64, optional, tag = "3")]
12204    pub offset: ::core::option::Option<i64>,
12205}
12206#[derive(Clone, PartialEq, ::prost::Message)]
12207pub struct AndroidFsDatawriteStartFtraceEvent {
12208    #[prost(int32, optional, tag = "1")]
12209    pub bytes: ::core::option::Option<i32>,
12210    #[prost(string, optional, tag = "2")]
12211    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
12212    #[prost(int64, optional, tag = "3")]
12213    pub i_size: ::core::option::Option<i64>,
12214    #[prost(uint64, optional, tag = "4")]
12215    pub ino: ::core::option::Option<u64>,
12216    #[prost(int64, optional, tag = "5")]
12217    pub offset: ::core::option::Option<i64>,
12218    #[prost(string, optional, tag = "6")]
12219    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
12220    #[prost(int32, optional, tag = "7")]
12221    pub pid: ::core::option::Option<i32>,
12222}
12223#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12224pub struct AndroidFsFsyncEndFtraceEvent {
12225    #[prost(int32, optional, tag = "1")]
12226    pub bytes: ::core::option::Option<i32>,
12227    #[prost(uint64, optional, tag = "2")]
12228    pub ino: ::core::option::Option<u64>,
12229    #[prost(int64, optional, tag = "3")]
12230    pub offset: ::core::option::Option<i64>,
12231}
12232#[derive(Clone, PartialEq, ::prost::Message)]
12233pub struct AndroidFsFsyncStartFtraceEvent {
12234    #[prost(string, optional, tag = "1")]
12235    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
12236    #[prost(int64, optional, tag = "2")]
12237    pub i_size: ::core::option::Option<i64>,
12238    #[prost(uint64, optional, tag = "3")]
12239    pub ino: ::core::option::Option<u64>,
12240    #[prost(string, optional, tag = "4")]
12241    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
12242    #[prost(int32, optional, tag = "5")]
12243    pub pid: ::core::option::Option<i32>,
12244}
12245#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12246pub struct BinderTransactionFtraceEvent {
12247    #[prost(int32, optional, tag = "1")]
12248    pub debug_id: ::core::option::Option<i32>,
12249    #[prost(int32, optional, tag = "2")]
12250    pub target_node: ::core::option::Option<i32>,
12251    #[prost(int32, optional, tag = "3")]
12252    pub to_proc: ::core::option::Option<i32>,
12253    #[prost(int32, optional, tag = "4")]
12254    pub to_thread: ::core::option::Option<i32>,
12255    #[prost(int32, optional, tag = "5")]
12256    pub reply: ::core::option::Option<i32>,
12257    #[prost(uint32, optional, tag = "6")]
12258    pub code: ::core::option::Option<u32>,
12259    #[prost(uint32, optional, tag = "7")]
12260    pub flags: ::core::option::Option<u32>,
12261}
12262#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12263pub struct BinderTransactionReceivedFtraceEvent {
12264    #[prost(int32, optional, tag = "1")]
12265    pub debug_id: ::core::option::Option<i32>,
12266}
12267#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12268pub struct BinderSetPriorityFtraceEvent {
12269    #[prost(int32, optional, tag = "1")]
12270    pub proc: ::core::option::Option<i32>,
12271    #[prost(int32, optional, tag = "2")]
12272    pub thread: ::core::option::Option<i32>,
12273    #[prost(uint32, optional, tag = "3")]
12274    pub old_prio: ::core::option::Option<u32>,
12275    #[prost(uint32, optional, tag = "4")]
12276    pub new_prio: ::core::option::Option<u32>,
12277    #[prost(uint32, optional, tag = "5")]
12278    pub desired_prio: ::core::option::Option<u32>,
12279}
12280#[derive(Clone, PartialEq, ::prost::Message)]
12281pub struct BinderLockFtraceEvent {
12282    #[prost(string, optional, tag = "1")]
12283    pub tag: ::core::option::Option<::prost::alloc::string::String>,
12284}
12285#[derive(Clone, PartialEq, ::prost::Message)]
12286pub struct BinderLockedFtraceEvent {
12287    #[prost(string, optional, tag = "1")]
12288    pub tag: ::core::option::Option<::prost::alloc::string::String>,
12289}
12290#[derive(Clone, PartialEq, ::prost::Message)]
12291pub struct BinderUnlockFtraceEvent {
12292    #[prost(string, optional, tag = "1")]
12293    pub tag: ::core::option::Option<::prost::alloc::string::String>,
12294}
12295#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12296pub struct BinderTransactionAllocBufFtraceEvent {
12297    #[prost(uint64, optional, tag = "1")]
12298    pub data_size: ::core::option::Option<u64>,
12299    #[prost(int32, optional, tag = "2")]
12300    pub debug_id: ::core::option::Option<i32>,
12301    #[prost(uint64, optional, tag = "3")]
12302    pub offsets_size: ::core::option::Option<u64>,
12303    #[prost(uint64, optional, tag = "4")]
12304    pub extra_buffers_size: ::core::option::Option<u64>,
12305}
12306#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12307pub struct BinderCommandFtraceEvent {
12308    #[prost(uint32, optional, tag = "1")]
12309    pub cmd: ::core::option::Option<u32>,
12310}
12311#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12312pub struct BinderReturnFtraceEvent {
12313    #[prost(uint32, optional, tag = "1")]
12314    pub cmd: ::core::option::Option<u32>,
12315}
12316#[derive(Clone, PartialEq, ::prost::Message)]
12317pub struct BlockRqIssueFtraceEvent {
12318    #[prost(uint64, optional, tag = "1")]
12319    pub dev: ::core::option::Option<u64>,
12320    #[prost(uint64, optional, tag = "2")]
12321    pub sector: ::core::option::Option<u64>,
12322    #[prost(uint32, optional, tag = "3")]
12323    pub nr_sector: ::core::option::Option<u32>,
12324    #[prost(uint32, optional, tag = "4")]
12325    pub bytes: ::core::option::Option<u32>,
12326    #[prost(string, optional, tag = "5")]
12327    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
12328    #[prost(string, optional, tag = "6")]
12329    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12330    #[prost(string, optional, tag = "7")]
12331    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
12332}
12333#[derive(Clone, PartialEq, ::prost::Message)]
12334pub struct BlockBioBackmergeFtraceEvent {
12335    #[prost(uint64, optional, tag = "1")]
12336    pub dev: ::core::option::Option<u64>,
12337    #[prost(uint64, optional, tag = "2")]
12338    pub sector: ::core::option::Option<u64>,
12339    #[prost(uint32, optional, tag = "3")]
12340    pub nr_sector: ::core::option::Option<u32>,
12341    #[prost(string, optional, tag = "4")]
12342    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
12343    #[prost(string, optional, tag = "5")]
12344    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12345}
12346#[derive(Clone, PartialEq, ::prost::Message)]
12347pub struct BlockBioBounceFtraceEvent {
12348    #[prost(uint64, optional, tag = "1")]
12349    pub dev: ::core::option::Option<u64>,
12350    #[prost(uint64, optional, tag = "2")]
12351    pub sector: ::core::option::Option<u64>,
12352    #[prost(uint32, optional, tag = "3")]
12353    pub nr_sector: ::core::option::Option<u32>,
12354    #[prost(string, optional, tag = "4")]
12355    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
12356    #[prost(string, optional, tag = "5")]
12357    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12358}
12359#[derive(Clone, PartialEq, ::prost::Message)]
12360pub struct BlockBioCompleteFtraceEvent {
12361    #[prost(uint64, optional, tag = "1")]
12362    pub dev: ::core::option::Option<u64>,
12363    #[prost(uint64, optional, tag = "2")]
12364    pub sector: ::core::option::Option<u64>,
12365    #[prost(uint32, optional, tag = "3")]
12366    pub nr_sector: ::core::option::Option<u32>,
12367    #[prost(int32, optional, tag = "4")]
12368    pub error: ::core::option::Option<i32>,
12369    #[prost(string, optional, tag = "5")]
12370    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
12371}
12372#[derive(Clone, PartialEq, ::prost::Message)]
12373pub struct BlockBioFrontmergeFtraceEvent {
12374    #[prost(uint64, optional, tag = "1")]
12375    pub dev: ::core::option::Option<u64>,
12376    #[prost(uint64, optional, tag = "2")]
12377    pub sector: ::core::option::Option<u64>,
12378    #[prost(uint32, optional, tag = "3")]
12379    pub nr_sector: ::core::option::Option<u32>,
12380    #[prost(string, optional, tag = "4")]
12381    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
12382    #[prost(string, optional, tag = "5")]
12383    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12384}
12385#[derive(Clone, PartialEq, ::prost::Message)]
12386pub struct BlockBioQueueFtraceEvent {
12387    #[prost(uint64, optional, tag = "1")]
12388    pub dev: ::core::option::Option<u64>,
12389    #[prost(uint64, optional, tag = "2")]
12390    pub sector: ::core::option::Option<u64>,
12391    #[prost(uint32, optional, tag = "3")]
12392    pub nr_sector: ::core::option::Option<u32>,
12393    #[prost(string, optional, tag = "4")]
12394    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
12395    #[prost(string, optional, tag = "5")]
12396    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12397}
12398#[derive(Clone, PartialEq, ::prost::Message)]
12399pub struct BlockBioRemapFtraceEvent {
12400    #[prost(uint64, optional, tag = "1")]
12401    pub dev: ::core::option::Option<u64>,
12402    #[prost(uint64, optional, tag = "2")]
12403    pub sector: ::core::option::Option<u64>,
12404    #[prost(uint32, optional, tag = "3")]
12405    pub nr_sector: ::core::option::Option<u32>,
12406    #[prost(uint64, optional, tag = "4")]
12407    pub old_dev: ::core::option::Option<u64>,
12408    #[prost(uint64, optional, tag = "5")]
12409    pub old_sector: ::core::option::Option<u64>,
12410    #[prost(string, optional, tag = "6")]
12411    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
12412}
12413#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12414pub struct BlockDirtyBufferFtraceEvent {
12415    #[prost(uint64, optional, tag = "1")]
12416    pub dev: ::core::option::Option<u64>,
12417    #[prost(uint64, optional, tag = "2")]
12418    pub sector: ::core::option::Option<u64>,
12419    #[prost(uint64, optional, tag = "3")]
12420    pub size: ::core::option::Option<u64>,
12421}
12422#[derive(Clone, PartialEq, ::prost::Message)]
12423pub struct BlockGetrqFtraceEvent {
12424    #[prost(uint64, optional, tag = "1")]
12425    pub dev: ::core::option::Option<u64>,
12426    #[prost(uint64, optional, tag = "2")]
12427    pub sector: ::core::option::Option<u64>,
12428    #[prost(uint32, optional, tag = "3")]
12429    pub nr_sector: ::core::option::Option<u32>,
12430    #[prost(string, optional, tag = "4")]
12431    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
12432    #[prost(string, optional, tag = "5")]
12433    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12434}
12435#[derive(Clone, PartialEq, ::prost::Message)]
12436pub struct BlockPlugFtraceEvent {
12437    #[prost(string, optional, tag = "1")]
12438    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12439}
12440#[derive(Clone, PartialEq, ::prost::Message)]
12441pub struct BlockRqAbortFtraceEvent {
12442    #[prost(uint64, optional, tag = "1")]
12443    pub dev: ::core::option::Option<u64>,
12444    #[prost(uint64, optional, tag = "2")]
12445    pub sector: ::core::option::Option<u64>,
12446    #[prost(uint32, optional, tag = "3")]
12447    pub nr_sector: ::core::option::Option<u32>,
12448    #[prost(int32, optional, tag = "4")]
12449    pub errors: ::core::option::Option<i32>,
12450    #[prost(string, optional, tag = "5")]
12451    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
12452    #[prost(string, optional, tag = "6")]
12453    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
12454}
12455#[derive(Clone, PartialEq, ::prost::Message)]
12456pub struct BlockRqCompleteFtraceEvent {
12457    #[prost(uint64, optional, tag = "1")]
12458    pub dev: ::core::option::Option<u64>,
12459    #[prost(uint64, optional, tag = "2")]
12460    pub sector: ::core::option::Option<u64>,
12461    #[prost(uint32, optional, tag = "3")]
12462    pub nr_sector: ::core::option::Option<u32>,
12463    #[prost(int32, optional, tag = "4")]
12464    pub errors: ::core::option::Option<i32>,
12465    #[prost(string, optional, tag = "5")]
12466    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
12467    #[prost(string, optional, tag = "6")]
12468    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
12469    #[prost(int32, optional, tag = "7")]
12470    pub error: ::core::option::Option<i32>,
12471}
12472#[derive(Clone, PartialEq, ::prost::Message)]
12473pub struct BlockRqInsertFtraceEvent {
12474    #[prost(uint64, optional, tag = "1")]
12475    pub dev: ::core::option::Option<u64>,
12476    #[prost(uint64, optional, tag = "2")]
12477    pub sector: ::core::option::Option<u64>,
12478    #[prost(uint32, optional, tag = "3")]
12479    pub nr_sector: ::core::option::Option<u32>,
12480    #[prost(uint32, optional, tag = "4")]
12481    pub bytes: ::core::option::Option<u32>,
12482    #[prost(string, optional, tag = "5")]
12483    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
12484    #[prost(string, optional, tag = "6")]
12485    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12486    #[prost(string, optional, tag = "7")]
12487    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
12488}
12489#[derive(Clone, PartialEq, ::prost::Message)]
12490pub struct BlockRqRemapFtraceEvent {
12491    #[prost(uint64, optional, tag = "1")]
12492    pub dev: ::core::option::Option<u64>,
12493    #[prost(uint64, optional, tag = "2")]
12494    pub sector: ::core::option::Option<u64>,
12495    #[prost(uint32, optional, tag = "3")]
12496    pub nr_sector: ::core::option::Option<u32>,
12497    #[prost(uint64, optional, tag = "4")]
12498    pub old_dev: ::core::option::Option<u64>,
12499    #[prost(uint64, optional, tag = "5")]
12500    pub old_sector: ::core::option::Option<u64>,
12501    #[prost(uint32, optional, tag = "6")]
12502    pub nr_bios: ::core::option::Option<u32>,
12503    #[prost(string, optional, tag = "7")]
12504    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
12505}
12506#[derive(Clone, PartialEq, ::prost::Message)]
12507pub struct BlockRqRequeueFtraceEvent {
12508    #[prost(uint64, optional, tag = "1")]
12509    pub dev: ::core::option::Option<u64>,
12510    #[prost(uint64, optional, tag = "2")]
12511    pub sector: ::core::option::Option<u64>,
12512    #[prost(uint32, optional, tag = "3")]
12513    pub nr_sector: ::core::option::Option<u32>,
12514    #[prost(int32, optional, tag = "4")]
12515    pub errors: ::core::option::Option<i32>,
12516    #[prost(string, optional, tag = "5")]
12517    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
12518    #[prost(string, optional, tag = "6")]
12519    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
12520}
12521#[derive(Clone, PartialEq, ::prost::Message)]
12522pub struct BlockSleeprqFtraceEvent {
12523    #[prost(uint64, optional, tag = "1")]
12524    pub dev: ::core::option::Option<u64>,
12525    #[prost(uint64, optional, tag = "2")]
12526    pub sector: ::core::option::Option<u64>,
12527    #[prost(uint32, optional, tag = "3")]
12528    pub nr_sector: ::core::option::Option<u32>,
12529    #[prost(string, optional, tag = "4")]
12530    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
12531    #[prost(string, optional, tag = "5")]
12532    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12533}
12534#[derive(Clone, PartialEq, ::prost::Message)]
12535pub struct BlockSplitFtraceEvent {
12536    #[prost(uint64, optional, tag = "1")]
12537    pub dev: ::core::option::Option<u64>,
12538    #[prost(uint64, optional, tag = "2")]
12539    pub sector: ::core::option::Option<u64>,
12540    #[prost(uint64, optional, tag = "3")]
12541    pub new_sector: ::core::option::Option<u64>,
12542    #[prost(string, optional, tag = "4")]
12543    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
12544    #[prost(string, optional, tag = "5")]
12545    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12546}
12547#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12548pub struct BlockTouchBufferFtraceEvent {
12549    #[prost(uint64, optional, tag = "1")]
12550    pub dev: ::core::option::Option<u64>,
12551    #[prost(uint64, optional, tag = "2")]
12552    pub sector: ::core::option::Option<u64>,
12553    #[prost(uint64, optional, tag = "3")]
12554    pub size: ::core::option::Option<u64>,
12555}
12556#[derive(Clone, PartialEq, ::prost::Message)]
12557pub struct BlockUnplugFtraceEvent {
12558    #[prost(int32, optional, tag = "1")]
12559    pub nr_rq: ::core::option::Option<i32>,
12560    #[prost(string, optional, tag = "2")]
12561    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12562}
12563#[derive(Clone, PartialEq, ::prost::Message)]
12564pub struct CgroupAttachTaskFtraceEvent {
12565    #[prost(int32, optional, tag = "1")]
12566    pub dst_root: ::core::option::Option<i32>,
12567    #[prost(int32, optional, tag = "2")]
12568    pub dst_id: ::core::option::Option<i32>,
12569    #[prost(int32, optional, tag = "3")]
12570    pub pid: ::core::option::Option<i32>,
12571    #[prost(string, optional, tag = "4")]
12572    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12573    #[prost(string, optional, tag = "5")]
12574    pub cname: ::core::option::Option<::prost::alloc::string::String>,
12575    #[prost(int32, optional, tag = "6")]
12576    pub dst_level: ::core::option::Option<i32>,
12577    #[prost(string, optional, tag = "7")]
12578    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
12579}
12580#[derive(Clone, PartialEq, ::prost::Message)]
12581pub struct CgroupMkdirFtraceEvent {
12582    #[prost(int32, optional, tag = "1")]
12583    pub root: ::core::option::Option<i32>,
12584    #[prost(int32, optional, tag = "2")]
12585    pub id: ::core::option::Option<i32>,
12586    #[prost(string, optional, tag = "3")]
12587    pub cname: ::core::option::Option<::prost::alloc::string::String>,
12588    #[prost(int32, optional, tag = "4")]
12589    pub level: ::core::option::Option<i32>,
12590    #[prost(string, optional, tag = "5")]
12591    pub path: ::core::option::Option<::prost::alloc::string::String>,
12592}
12593#[derive(Clone, PartialEq, ::prost::Message)]
12594pub struct CgroupRemountFtraceEvent {
12595    #[prost(int32, optional, tag = "1")]
12596    pub root: ::core::option::Option<i32>,
12597    #[prost(uint32, optional, tag = "2")]
12598    pub ss_mask: ::core::option::Option<u32>,
12599    #[prost(string, optional, tag = "3")]
12600    pub name: ::core::option::Option<::prost::alloc::string::String>,
12601}
12602#[derive(Clone, PartialEq, ::prost::Message)]
12603pub struct CgroupRmdirFtraceEvent {
12604    #[prost(int32, optional, tag = "1")]
12605    pub root: ::core::option::Option<i32>,
12606    #[prost(int32, optional, tag = "2")]
12607    pub id: ::core::option::Option<i32>,
12608    #[prost(string, optional, tag = "3")]
12609    pub cname: ::core::option::Option<::prost::alloc::string::String>,
12610    #[prost(int32, optional, tag = "4")]
12611    pub level: ::core::option::Option<i32>,
12612    #[prost(string, optional, tag = "5")]
12613    pub path: ::core::option::Option<::prost::alloc::string::String>,
12614}
12615#[derive(Clone, PartialEq, ::prost::Message)]
12616pub struct CgroupTransferTasksFtraceEvent {
12617    #[prost(int32, optional, tag = "1")]
12618    pub dst_root: ::core::option::Option<i32>,
12619    #[prost(int32, optional, tag = "2")]
12620    pub dst_id: ::core::option::Option<i32>,
12621    #[prost(int32, optional, tag = "3")]
12622    pub pid: ::core::option::Option<i32>,
12623    #[prost(string, optional, tag = "4")]
12624    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12625    #[prost(string, optional, tag = "5")]
12626    pub cname: ::core::option::Option<::prost::alloc::string::String>,
12627    #[prost(int32, optional, tag = "6")]
12628    pub dst_level: ::core::option::Option<i32>,
12629    #[prost(string, optional, tag = "7")]
12630    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
12631}
12632#[derive(Clone, PartialEq, ::prost::Message)]
12633pub struct CgroupDestroyRootFtraceEvent {
12634    #[prost(int32, optional, tag = "1")]
12635    pub root: ::core::option::Option<i32>,
12636    #[prost(uint32, optional, tag = "2")]
12637    pub ss_mask: ::core::option::Option<u32>,
12638    #[prost(string, optional, tag = "3")]
12639    pub name: ::core::option::Option<::prost::alloc::string::String>,
12640}
12641#[derive(Clone, PartialEq, ::prost::Message)]
12642pub struct CgroupReleaseFtraceEvent {
12643    #[prost(int32, optional, tag = "1")]
12644    pub root: ::core::option::Option<i32>,
12645    #[prost(int32, optional, tag = "2")]
12646    pub id: ::core::option::Option<i32>,
12647    #[prost(string, optional, tag = "3")]
12648    pub cname: ::core::option::Option<::prost::alloc::string::String>,
12649    #[prost(int32, optional, tag = "4")]
12650    pub level: ::core::option::Option<i32>,
12651    #[prost(string, optional, tag = "5")]
12652    pub path: ::core::option::Option<::prost::alloc::string::String>,
12653}
12654#[derive(Clone, PartialEq, ::prost::Message)]
12655pub struct CgroupRenameFtraceEvent {
12656    #[prost(int32, optional, tag = "1")]
12657    pub root: ::core::option::Option<i32>,
12658    #[prost(int32, optional, tag = "2")]
12659    pub id: ::core::option::Option<i32>,
12660    #[prost(string, optional, tag = "3")]
12661    pub cname: ::core::option::Option<::prost::alloc::string::String>,
12662    #[prost(int32, optional, tag = "4")]
12663    pub level: ::core::option::Option<i32>,
12664    #[prost(string, optional, tag = "5")]
12665    pub path: ::core::option::Option<::prost::alloc::string::String>,
12666}
12667#[derive(Clone, PartialEq, ::prost::Message)]
12668pub struct CgroupSetupRootFtraceEvent {
12669    #[prost(int32, optional, tag = "1")]
12670    pub root: ::core::option::Option<i32>,
12671    #[prost(uint32, optional, tag = "2")]
12672    pub ss_mask: ::core::option::Option<u32>,
12673    #[prost(string, optional, tag = "3")]
12674    pub name: ::core::option::Option<::prost::alloc::string::String>,
12675}
12676#[derive(Clone, PartialEq, ::prost::Message)]
12677pub struct ClkEnableFtraceEvent {
12678    #[prost(string, optional, tag = "1")]
12679    pub name: ::core::option::Option<::prost::alloc::string::String>,
12680}
12681#[derive(Clone, PartialEq, ::prost::Message)]
12682pub struct ClkDisableFtraceEvent {
12683    #[prost(string, optional, tag = "1")]
12684    pub name: ::core::option::Option<::prost::alloc::string::String>,
12685}
12686#[derive(Clone, PartialEq, ::prost::Message)]
12687pub struct ClkSetRateFtraceEvent {
12688    #[prost(string, optional, tag = "1")]
12689    pub name: ::core::option::Option<::prost::alloc::string::String>,
12690    #[prost(uint64, optional, tag = "2")]
12691    pub rate: ::core::option::Option<u64>,
12692}
12693#[derive(Clone, PartialEq, ::prost::Message)]
12694pub struct CmaAllocStartFtraceEvent {
12695    #[prost(uint32, optional, tag = "1")]
12696    pub align: ::core::option::Option<u32>,
12697    #[prost(uint32, optional, tag = "2")]
12698    pub count: ::core::option::Option<u32>,
12699    #[prost(string, optional, tag = "3")]
12700    pub name: ::core::option::Option<::prost::alloc::string::String>,
12701}
12702#[derive(Clone, PartialEq, ::prost::Message)]
12703pub struct CmaAllocInfoFtraceEvent {
12704    #[prost(uint32, optional, tag = "1")]
12705    pub align: ::core::option::Option<u32>,
12706    #[prost(uint32, optional, tag = "2")]
12707    pub count: ::core::option::Option<u32>,
12708    #[prost(uint32, optional, tag = "3")]
12709    pub err_iso: ::core::option::Option<u32>,
12710    #[prost(uint32, optional, tag = "4")]
12711    pub err_mig: ::core::option::Option<u32>,
12712    #[prost(uint32, optional, tag = "5")]
12713    pub err_test: ::core::option::Option<u32>,
12714    #[prost(string, optional, tag = "6")]
12715    pub name: ::core::option::Option<::prost::alloc::string::String>,
12716    #[prost(uint64, optional, tag = "7")]
12717    pub nr_mapped: ::core::option::Option<u64>,
12718    #[prost(uint64, optional, tag = "8")]
12719    pub nr_migrated: ::core::option::Option<u64>,
12720    #[prost(uint64, optional, tag = "9")]
12721    pub nr_reclaimed: ::core::option::Option<u64>,
12722    #[prost(uint64, optional, tag = "10")]
12723    pub pfn: ::core::option::Option<u64>,
12724}
12725#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12726pub struct MmCompactionBeginFtraceEvent {
12727    #[prost(uint64, optional, tag = "1")]
12728    pub zone_start: ::core::option::Option<u64>,
12729    #[prost(uint64, optional, tag = "2")]
12730    pub migrate_pfn: ::core::option::Option<u64>,
12731    #[prost(uint64, optional, tag = "3")]
12732    pub free_pfn: ::core::option::Option<u64>,
12733    #[prost(uint64, optional, tag = "4")]
12734    pub zone_end: ::core::option::Option<u64>,
12735    #[prost(uint32, optional, tag = "5")]
12736    pub sync: ::core::option::Option<u32>,
12737}
12738#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12739pub struct MmCompactionDeferCompactionFtraceEvent {
12740    #[prost(int32, optional, tag = "1")]
12741    pub nid: ::core::option::Option<i32>,
12742    #[prost(uint32, optional, tag = "2")]
12743    pub idx: ::core::option::Option<u32>,
12744    #[prost(int32, optional, tag = "3")]
12745    pub order: ::core::option::Option<i32>,
12746    #[prost(uint32, optional, tag = "4")]
12747    pub considered: ::core::option::Option<u32>,
12748    #[prost(uint32, optional, tag = "5")]
12749    pub defer_shift: ::core::option::Option<u32>,
12750    #[prost(int32, optional, tag = "6")]
12751    pub order_failed: ::core::option::Option<i32>,
12752}
12753#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12754pub struct MmCompactionDeferredFtraceEvent {
12755    #[prost(int32, optional, tag = "1")]
12756    pub nid: ::core::option::Option<i32>,
12757    #[prost(uint32, optional, tag = "2")]
12758    pub idx: ::core::option::Option<u32>,
12759    #[prost(int32, optional, tag = "3")]
12760    pub order: ::core::option::Option<i32>,
12761    #[prost(uint32, optional, tag = "4")]
12762    pub considered: ::core::option::Option<u32>,
12763    #[prost(uint32, optional, tag = "5")]
12764    pub defer_shift: ::core::option::Option<u32>,
12765    #[prost(int32, optional, tag = "6")]
12766    pub order_failed: ::core::option::Option<i32>,
12767}
12768#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12769pub struct MmCompactionDeferResetFtraceEvent {
12770    #[prost(int32, optional, tag = "1")]
12771    pub nid: ::core::option::Option<i32>,
12772    #[prost(uint32, optional, tag = "2")]
12773    pub idx: ::core::option::Option<u32>,
12774    #[prost(int32, optional, tag = "3")]
12775    pub order: ::core::option::Option<i32>,
12776    #[prost(uint32, optional, tag = "4")]
12777    pub considered: ::core::option::Option<u32>,
12778    #[prost(uint32, optional, tag = "5")]
12779    pub defer_shift: ::core::option::Option<u32>,
12780    #[prost(int32, optional, tag = "6")]
12781    pub order_failed: ::core::option::Option<i32>,
12782}
12783#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12784pub struct MmCompactionEndFtraceEvent {
12785    #[prost(uint64, optional, tag = "1")]
12786    pub zone_start: ::core::option::Option<u64>,
12787    #[prost(uint64, optional, tag = "2")]
12788    pub migrate_pfn: ::core::option::Option<u64>,
12789    #[prost(uint64, optional, tag = "3")]
12790    pub free_pfn: ::core::option::Option<u64>,
12791    #[prost(uint64, optional, tag = "4")]
12792    pub zone_end: ::core::option::Option<u64>,
12793    #[prost(uint32, optional, tag = "5")]
12794    pub sync: ::core::option::Option<u32>,
12795    #[prost(int32, optional, tag = "6")]
12796    pub status: ::core::option::Option<i32>,
12797}
12798#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12799pub struct MmCompactionFinishedFtraceEvent {
12800    #[prost(int32, optional, tag = "1")]
12801    pub nid: ::core::option::Option<i32>,
12802    #[prost(uint32, optional, tag = "2")]
12803    pub idx: ::core::option::Option<u32>,
12804    #[prost(int32, optional, tag = "3")]
12805    pub order: ::core::option::Option<i32>,
12806    #[prost(int32, optional, tag = "4")]
12807    pub ret: ::core::option::Option<i32>,
12808}
12809#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12810pub struct MmCompactionIsolateFreepagesFtraceEvent {
12811    #[prost(uint64, optional, tag = "1")]
12812    pub start_pfn: ::core::option::Option<u64>,
12813    #[prost(uint64, optional, tag = "2")]
12814    pub end_pfn: ::core::option::Option<u64>,
12815    #[prost(uint64, optional, tag = "3")]
12816    pub nr_scanned: ::core::option::Option<u64>,
12817    #[prost(uint64, optional, tag = "4")]
12818    pub nr_taken: ::core::option::Option<u64>,
12819}
12820#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12821pub struct MmCompactionIsolateMigratepagesFtraceEvent {
12822    #[prost(uint64, optional, tag = "1")]
12823    pub start_pfn: ::core::option::Option<u64>,
12824    #[prost(uint64, optional, tag = "2")]
12825    pub end_pfn: ::core::option::Option<u64>,
12826    #[prost(uint64, optional, tag = "3")]
12827    pub nr_scanned: ::core::option::Option<u64>,
12828    #[prost(uint64, optional, tag = "4")]
12829    pub nr_taken: ::core::option::Option<u64>,
12830}
12831#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12832pub struct MmCompactionKcompactdSleepFtraceEvent {
12833    #[prost(int32, optional, tag = "1")]
12834    pub nid: ::core::option::Option<i32>,
12835}
12836#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12837pub struct MmCompactionKcompactdWakeFtraceEvent {
12838    #[prost(int32, optional, tag = "1")]
12839    pub nid: ::core::option::Option<i32>,
12840    #[prost(int32, optional, tag = "2")]
12841    pub order: ::core::option::Option<i32>,
12842    #[prost(uint32, optional, tag = "3")]
12843    pub classzone_idx: ::core::option::Option<u32>,
12844    #[prost(uint32, optional, tag = "4")]
12845    pub highest_zoneidx: ::core::option::Option<u32>,
12846}
12847#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12848pub struct MmCompactionMigratepagesFtraceEvent {
12849    #[prost(uint64, optional, tag = "1")]
12850    pub nr_migrated: ::core::option::Option<u64>,
12851    #[prost(uint64, optional, tag = "2")]
12852    pub nr_failed: ::core::option::Option<u64>,
12853}
12854#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12855pub struct MmCompactionSuitableFtraceEvent {
12856    #[prost(int32, optional, tag = "1")]
12857    pub nid: ::core::option::Option<i32>,
12858    #[prost(uint32, optional, tag = "2")]
12859    pub idx: ::core::option::Option<u32>,
12860    #[prost(int32, optional, tag = "3")]
12861    pub order: ::core::option::Option<i32>,
12862    #[prost(int32, optional, tag = "4")]
12863    pub ret: ::core::option::Option<i32>,
12864}
12865#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12866pub struct MmCompactionTryToCompactPagesFtraceEvent {
12867    #[prost(int32, optional, tag = "1")]
12868    pub order: ::core::option::Option<i32>,
12869    #[prost(uint32, optional, tag = "2")]
12870    pub gfp_mask: ::core::option::Option<u32>,
12871    #[prost(uint32, optional, tag = "3")]
12872    pub mode: ::core::option::Option<u32>,
12873    #[prost(int32, optional, tag = "4")]
12874    pub prio: ::core::option::Option<i32>,
12875}
12876#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12877pub struct MmCompactionWakeupKcompactdFtraceEvent {
12878    #[prost(int32, optional, tag = "1")]
12879    pub nid: ::core::option::Option<i32>,
12880    #[prost(int32, optional, tag = "2")]
12881    pub order: ::core::option::Option<i32>,
12882    #[prost(uint32, optional, tag = "3")]
12883    pub classzone_idx: ::core::option::Option<u32>,
12884    #[prost(uint32, optional, tag = "4")]
12885    pub highest_zoneidx: ::core::option::Option<u32>,
12886}
12887#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12888pub struct CpuhpExitFtraceEvent {
12889    #[prost(uint32, optional, tag = "1")]
12890    pub cpu: ::core::option::Option<u32>,
12891    #[prost(int32, optional, tag = "2")]
12892    pub idx: ::core::option::Option<i32>,
12893    #[prost(int32, optional, tag = "3")]
12894    pub ret: ::core::option::Option<i32>,
12895    #[prost(int32, optional, tag = "4")]
12896    pub state: ::core::option::Option<i32>,
12897}
12898#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12899pub struct CpuhpMultiEnterFtraceEvent {
12900    #[prost(uint32, optional, tag = "1")]
12901    pub cpu: ::core::option::Option<u32>,
12902    #[prost(uint64, optional, tag = "2")]
12903    pub fun: ::core::option::Option<u64>,
12904    #[prost(int32, optional, tag = "3")]
12905    pub idx: ::core::option::Option<i32>,
12906    #[prost(int32, optional, tag = "4")]
12907    pub target: ::core::option::Option<i32>,
12908}
12909#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12910pub struct CpuhpEnterFtraceEvent {
12911    #[prost(uint32, optional, tag = "1")]
12912    pub cpu: ::core::option::Option<u32>,
12913    #[prost(uint64, optional, tag = "2")]
12914    pub fun: ::core::option::Option<u64>,
12915    #[prost(int32, optional, tag = "3")]
12916    pub idx: ::core::option::Option<i32>,
12917    #[prost(int32, optional, tag = "4")]
12918    pub target: ::core::option::Option<i32>,
12919}
12920#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12921pub struct CpuhpLatencyFtraceEvent {
12922    #[prost(uint32, optional, tag = "1")]
12923    pub cpu: ::core::option::Option<u32>,
12924    #[prost(int32, optional, tag = "2")]
12925    pub ret: ::core::option::Option<i32>,
12926    #[prost(uint32, optional, tag = "3")]
12927    pub state: ::core::option::Option<u32>,
12928    #[prost(uint64, optional, tag = "4")]
12929    pub time: ::core::option::Option<u64>,
12930}
12931#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12932pub struct CpuhpPauseFtraceEvent {
12933    #[prost(uint32, optional, tag = "1")]
12934    pub active_cpus: ::core::option::Option<u32>,
12935    #[prost(uint32, optional, tag = "2")]
12936    pub cpus: ::core::option::Option<u32>,
12937    #[prost(uint32, optional, tag = "3")]
12938    pub pause: ::core::option::Option<u32>,
12939    #[prost(uint32, optional, tag = "4")]
12940    pub time: ::core::option::Option<u32>,
12941}
12942#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12943pub struct CrosEcSensorhubDataFtraceEvent {
12944    #[prost(int64, optional, tag = "1")]
12945    pub current_time: ::core::option::Option<i64>,
12946    #[prost(int64, optional, tag = "2")]
12947    pub current_timestamp: ::core::option::Option<i64>,
12948    #[prost(int64, optional, tag = "3")]
12949    pub delta: ::core::option::Option<i64>,
12950    #[prost(uint32, optional, tag = "4")]
12951    pub ec_fifo_timestamp: ::core::option::Option<u32>,
12952    #[prost(uint32, optional, tag = "5")]
12953    pub ec_sensor_num: ::core::option::Option<u32>,
12954    #[prost(int64, optional, tag = "6")]
12955    pub fifo_timestamp: ::core::option::Option<i64>,
12956}
12957#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12958pub struct DcvshFreqFtraceEvent {
12959    #[prost(uint64, optional, tag = "1")]
12960    pub cpu: ::core::option::Option<u64>,
12961    #[prost(uint64, optional, tag = "2")]
12962    pub freq: ::core::option::Option<u64>,
12963}
12964#[derive(Clone, PartialEq, ::prost::Message)]
12965pub struct DmaFenceInitFtraceEvent {
12966    #[prost(uint32, optional, tag = "1")]
12967    pub context: ::core::option::Option<u32>,
12968    #[prost(string, optional, tag = "2")]
12969    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12970    #[prost(uint32, optional, tag = "3")]
12971    pub seqno: ::core::option::Option<u32>,
12972    #[prost(string, optional, tag = "4")]
12973    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12974}
12975#[derive(Clone, PartialEq, ::prost::Message)]
12976pub struct DmaFenceEmitFtraceEvent {
12977    #[prost(uint32, optional, tag = "1")]
12978    pub context: ::core::option::Option<u32>,
12979    #[prost(string, optional, tag = "2")]
12980    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12981    #[prost(uint32, optional, tag = "3")]
12982    pub seqno: ::core::option::Option<u32>,
12983    #[prost(string, optional, tag = "4")]
12984    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12985}
12986#[derive(Clone, PartialEq, ::prost::Message)]
12987pub struct DmaFenceSignaledFtraceEvent {
12988    #[prost(uint32, optional, tag = "1")]
12989    pub context: ::core::option::Option<u32>,
12990    #[prost(string, optional, tag = "2")]
12991    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12992    #[prost(uint32, optional, tag = "3")]
12993    pub seqno: ::core::option::Option<u32>,
12994    #[prost(string, optional, tag = "4")]
12995    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12996}
12997#[derive(Clone, PartialEq, ::prost::Message)]
12998pub struct DmaFenceWaitStartFtraceEvent {
12999    #[prost(uint32, optional, tag = "1")]
13000    pub context: ::core::option::Option<u32>,
13001    #[prost(string, optional, tag = "2")]
13002    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13003    #[prost(uint32, optional, tag = "3")]
13004    pub seqno: ::core::option::Option<u32>,
13005    #[prost(string, optional, tag = "4")]
13006    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13007}
13008#[derive(Clone, PartialEq, ::prost::Message)]
13009pub struct DmaFenceWaitEndFtraceEvent {
13010    #[prost(uint32, optional, tag = "1")]
13011    pub context: ::core::option::Option<u32>,
13012    #[prost(string, optional, tag = "2")]
13013    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13014    #[prost(uint32, optional, tag = "3")]
13015    pub seqno: ::core::option::Option<u32>,
13016    #[prost(string, optional, tag = "4")]
13017    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13018}
13019#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13020pub struct DmaHeapStatFtraceEvent {
13021    #[prost(uint64, optional, tag = "1")]
13022    pub inode: ::core::option::Option<u64>,
13023    #[prost(int64, optional, tag = "2")]
13024    pub len: ::core::option::Option<i64>,
13025    #[prost(uint64, optional, tag = "3")]
13026    pub total_allocated: ::core::option::Option<u64>,
13027}
13028#[derive(Clone, PartialEq, ::prost::Message)]
13029pub struct DpuTracingMarkWriteFtraceEvent {
13030    #[prost(int32, optional, tag = "1")]
13031    pub pid: ::core::option::Option<i32>,
13032    #[prost(string, optional, tag = "2")]
13033    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
13034    #[prost(uint32, optional, tag = "3")]
13035    pub trace_begin: ::core::option::Option<u32>,
13036    #[prost(string, optional, tag = "4")]
13037    pub name: ::core::option::Option<::prost::alloc::string::String>,
13038    #[prost(uint32, optional, tag = "5")]
13039    pub r#type: ::core::option::Option<u32>,
13040    #[prost(int32, optional, tag = "6")]
13041    pub value: ::core::option::Option<i32>,
13042}
13043#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13044pub struct DpuDsiCmdFifoStatusFtraceEvent {
13045    #[prost(uint32, optional, tag = "1")]
13046    pub header: ::core::option::Option<u32>,
13047    #[prost(uint32, optional, tag = "2")]
13048    pub payload: ::core::option::Option<u32>,
13049}
13050#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13051pub struct DpuDsiRxFtraceEvent {
13052    #[prost(uint32, optional, tag = "1")]
13053    pub cmd: ::core::option::Option<u32>,
13054    #[prost(uint32, optional, tag = "2")]
13055    pub rx_buf: ::core::option::Option<u32>,
13056}
13057#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13058pub struct DpuDsiTxFtraceEvent {
13059    #[prost(uint32, optional, tag = "1")]
13060    pub r#type: ::core::option::Option<u32>,
13061    #[prost(uint32, optional, tag = "2")]
13062    pub tx_buf: ::core::option::Option<u32>,
13063    #[prost(uint32, optional, tag = "3")]
13064    pub last: ::core::option::Option<u32>,
13065    #[prost(uint32, optional, tag = "4")]
13066    pub delay_ms: ::core::option::Option<u32>,
13067}
13068#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13069pub struct DrmVblankEventFtraceEvent {
13070    #[prost(int32, optional, tag = "1")]
13071    pub crtc: ::core::option::Option<i32>,
13072    #[prost(uint32, optional, tag = "2")]
13073    pub high_prec: ::core::option::Option<u32>,
13074    #[prost(uint32, optional, tag = "3")]
13075    pub seq: ::core::option::Option<u32>,
13076    #[prost(int64, optional, tag = "4")]
13077    pub time: ::core::option::Option<i64>,
13078}
13079#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13080pub struct DrmVblankEventDeliveredFtraceEvent {
13081    #[prost(int32, optional, tag = "1")]
13082    pub crtc: ::core::option::Option<i32>,
13083    #[prost(uint64, optional, tag = "2")]
13084    pub file: ::core::option::Option<u64>,
13085    #[prost(uint32, optional, tag = "3")]
13086    pub seq: ::core::option::Option<u32>,
13087}
13088#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13089pub struct Ext4DaWriteBeginFtraceEvent {
13090    #[prost(uint64, optional, tag = "1")]
13091    pub dev: ::core::option::Option<u64>,
13092    #[prost(uint64, optional, tag = "2")]
13093    pub ino: ::core::option::Option<u64>,
13094    #[prost(int64, optional, tag = "3")]
13095    pub pos: ::core::option::Option<i64>,
13096    #[prost(uint32, optional, tag = "4")]
13097    pub len: ::core::option::Option<u32>,
13098    #[prost(uint32, optional, tag = "5")]
13099    pub flags: ::core::option::Option<u32>,
13100}
13101#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13102pub struct Ext4DaWriteEndFtraceEvent {
13103    #[prost(uint64, optional, tag = "1")]
13104    pub dev: ::core::option::Option<u64>,
13105    #[prost(uint64, optional, tag = "2")]
13106    pub ino: ::core::option::Option<u64>,
13107    #[prost(int64, optional, tag = "3")]
13108    pub pos: ::core::option::Option<i64>,
13109    #[prost(uint32, optional, tag = "4")]
13110    pub len: ::core::option::Option<u32>,
13111    #[prost(uint32, optional, tag = "5")]
13112    pub copied: ::core::option::Option<u32>,
13113}
13114#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13115pub struct Ext4SyncFileEnterFtraceEvent {
13116    #[prost(uint64, optional, tag = "1")]
13117    pub dev: ::core::option::Option<u64>,
13118    #[prost(uint64, optional, tag = "2")]
13119    pub ino: ::core::option::Option<u64>,
13120    #[prost(uint64, optional, tag = "3")]
13121    pub parent: ::core::option::Option<u64>,
13122    #[prost(int32, optional, tag = "4")]
13123    pub datasync: ::core::option::Option<i32>,
13124}
13125#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13126pub struct Ext4SyncFileExitFtraceEvent {
13127    #[prost(uint64, optional, tag = "1")]
13128    pub dev: ::core::option::Option<u64>,
13129    #[prost(uint64, optional, tag = "2")]
13130    pub ino: ::core::option::Option<u64>,
13131    #[prost(int32, optional, tag = "3")]
13132    pub ret: ::core::option::Option<i32>,
13133}
13134#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13135pub struct Ext4AllocDaBlocksFtraceEvent {
13136    #[prost(uint64, optional, tag = "1")]
13137    pub dev: ::core::option::Option<u64>,
13138    #[prost(uint64, optional, tag = "2")]
13139    pub ino: ::core::option::Option<u64>,
13140    #[prost(uint32, optional, tag = "3")]
13141    pub data_blocks: ::core::option::Option<u32>,
13142    #[prost(uint32, optional, tag = "4")]
13143    pub meta_blocks: ::core::option::Option<u32>,
13144}
13145#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13146pub struct Ext4AllocateBlocksFtraceEvent {
13147    #[prost(uint64, optional, tag = "1")]
13148    pub dev: ::core::option::Option<u64>,
13149    #[prost(uint64, optional, tag = "2")]
13150    pub ino: ::core::option::Option<u64>,
13151    #[prost(uint64, optional, tag = "3")]
13152    pub block: ::core::option::Option<u64>,
13153    #[prost(uint32, optional, tag = "4")]
13154    pub len: ::core::option::Option<u32>,
13155    #[prost(uint32, optional, tag = "5")]
13156    pub logical: ::core::option::Option<u32>,
13157    #[prost(uint32, optional, tag = "6")]
13158    pub lleft: ::core::option::Option<u32>,
13159    #[prost(uint32, optional, tag = "7")]
13160    pub lright: ::core::option::Option<u32>,
13161    #[prost(uint64, optional, tag = "8")]
13162    pub goal: ::core::option::Option<u64>,
13163    #[prost(uint64, optional, tag = "9")]
13164    pub pleft: ::core::option::Option<u64>,
13165    #[prost(uint64, optional, tag = "10")]
13166    pub pright: ::core::option::Option<u64>,
13167    #[prost(uint32, optional, tag = "11")]
13168    pub flags: ::core::option::Option<u32>,
13169}
13170#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13171pub struct Ext4AllocateInodeFtraceEvent {
13172    #[prost(uint64, optional, tag = "1")]
13173    pub dev: ::core::option::Option<u64>,
13174    #[prost(uint64, optional, tag = "2")]
13175    pub ino: ::core::option::Option<u64>,
13176    #[prost(uint64, optional, tag = "3")]
13177    pub dir: ::core::option::Option<u64>,
13178    #[prost(uint32, optional, tag = "4")]
13179    pub mode: ::core::option::Option<u32>,
13180}
13181#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13182pub struct Ext4BeginOrderedTruncateFtraceEvent {
13183    #[prost(uint64, optional, tag = "1")]
13184    pub dev: ::core::option::Option<u64>,
13185    #[prost(uint64, optional, tag = "2")]
13186    pub ino: ::core::option::Option<u64>,
13187    #[prost(int64, optional, tag = "3")]
13188    pub new_size: ::core::option::Option<i64>,
13189}
13190#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13191pub struct Ext4CollapseRangeFtraceEvent {
13192    #[prost(uint64, optional, tag = "1")]
13193    pub dev: ::core::option::Option<u64>,
13194    #[prost(uint64, optional, tag = "2")]
13195    pub ino: ::core::option::Option<u64>,
13196    #[prost(int64, optional, tag = "3")]
13197    pub offset: ::core::option::Option<i64>,
13198    #[prost(int64, optional, tag = "4")]
13199    pub len: ::core::option::Option<i64>,
13200}
13201#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13202pub struct Ext4DaReleaseSpaceFtraceEvent {
13203    #[prost(uint64, optional, tag = "1")]
13204    pub dev: ::core::option::Option<u64>,
13205    #[prost(uint64, optional, tag = "2")]
13206    pub ino: ::core::option::Option<u64>,
13207    #[prost(uint64, optional, tag = "3")]
13208    pub i_blocks: ::core::option::Option<u64>,
13209    #[prost(int32, optional, tag = "4")]
13210    pub freed_blocks: ::core::option::Option<i32>,
13211    #[prost(int32, optional, tag = "5")]
13212    pub reserved_data_blocks: ::core::option::Option<i32>,
13213    #[prost(int32, optional, tag = "6")]
13214    pub reserved_meta_blocks: ::core::option::Option<i32>,
13215    #[prost(int32, optional, tag = "7")]
13216    pub allocated_meta_blocks: ::core::option::Option<i32>,
13217    #[prost(uint32, optional, tag = "8")]
13218    pub mode: ::core::option::Option<u32>,
13219}
13220#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13221pub struct Ext4DaReserveSpaceFtraceEvent {
13222    #[prost(uint64, optional, tag = "1")]
13223    pub dev: ::core::option::Option<u64>,
13224    #[prost(uint64, optional, tag = "2")]
13225    pub ino: ::core::option::Option<u64>,
13226    #[prost(uint64, optional, tag = "3")]
13227    pub i_blocks: ::core::option::Option<u64>,
13228    #[prost(int32, optional, tag = "4")]
13229    pub reserved_data_blocks: ::core::option::Option<i32>,
13230    #[prost(int32, optional, tag = "5")]
13231    pub reserved_meta_blocks: ::core::option::Option<i32>,
13232    #[prost(uint32, optional, tag = "6")]
13233    pub mode: ::core::option::Option<u32>,
13234    #[prost(int32, optional, tag = "7")]
13235    pub md_needed: ::core::option::Option<i32>,
13236}
13237#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13238pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
13239    #[prost(uint64, optional, tag = "1")]
13240    pub dev: ::core::option::Option<u64>,
13241    #[prost(uint64, optional, tag = "2")]
13242    pub ino: ::core::option::Option<u64>,
13243    #[prost(uint64, optional, tag = "3")]
13244    pub i_blocks: ::core::option::Option<u64>,
13245    #[prost(int32, optional, tag = "4")]
13246    pub used_blocks: ::core::option::Option<i32>,
13247    #[prost(int32, optional, tag = "5")]
13248    pub reserved_data_blocks: ::core::option::Option<i32>,
13249    #[prost(int32, optional, tag = "6")]
13250    pub reserved_meta_blocks: ::core::option::Option<i32>,
13251    #[prost(int32, optional, tag = "7")]
13252    pub allocated_meta_blocks: ::core::option::Option<i32>,
13253    #[prost(int32, optional, tag = "8")]
13254    pub quota_claim: ::core::option::Option<i32>,
13255    #[prost(uint32, optional, tag = "9")]
13256    pub mode: ::core::option::Option<u32>,
13257}
13258#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13259pub struct Ext4DaWritePagesFtraceEvent {
13260    #[prost(uint64, optional, tag = "1")]
13261    pub dev: ::core::option::Option<u64>,
13262    #[prost(uint64, optional, tag = "2")]
13263    pub ino: ::core::option::Option<u64>,
13264    #[prost(uint64, optional, tag = "3")]
13265    pub first_page: ::core::option::Option<u64>,
13266    #[prost(int64, optional, tag = "4")]
13267    pub nr_to_write: ::core::option::Option<i64>,
13268    #[prost(int32, optional, tag = "5")]
13269    pub sync_mode: ::core::option::Option<i32>,
13270    #[prost(uint64, optional, tag = "6")]
13271    pub b_blocknr: ::core::option::Option<u64>,
13272    #[prost(uint32, optional, tag = "7")]
13273    pub b_size: ::core::option::Option<u32>,
13274    #[prost(uint32, optional, tag = "8")]
13275    pub b_state: ::core::option::Option<u32>,
13276    #[prost(int32, optional, tag = "9")]
13277    pub io_done: ::core::option::Option<i32>,
13278    #[prost(int32, optional, tag = "10")]
13279    pub pages_written: ::core::option::Option<i32>,
13280}
13281#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13282pub struct Ext4DaWritePagesExtentFtraceEvent {
13283    #[prost(uint64, optional, tag = "1")]
13284    pub dev: ::core::option::Option<u64>,
13285    #[prost(uint64, optional, tag = "2")]
13286    pub ino: ::core::option::Option<u64>,
13287    #[prost(uint64, optional, tag = "3")]
13288    pub lblk: ::core::option::Option<u64>,
13289    #[prost(uint32, optional, tag = "4")]
13290    pub len: ::core::option::Option<u32>,
13291    #[prost(uint32, optional, tag = "5")]
13292    pub flags: ::core::option::Option<u32>,
13293}
13294#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13295pub struct Ext4DirectIoEnterFtraceEvent {
13296    #[prost(uint64, optional, tag = "1")]
13297    pub dev: ::core::option::Option<u64>,
13298    #[prost(uint64, optional, tag = "2")]
13299    pub ino: ::core::option::Option<u64>,
13300    #[prost(int64, optional, tag = "3")]
13301    pub pos: ::core::option::Option<i64>,
13302    #[prost(uint64, optional, tag = "4")]
13303    pub len: ::core::option::Option<u64>,
13304    #[prost(int32, optional, tag = "5")]
13305    pub rw: ::core::option::Option<i32>,
13306}
13307#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13308pub struct Ext4DirectIoExitFtraceEvent {
13309    #[prost(uint64, optional, tag = "1")]
13310    pub dev: ::core::option::Option<u64>,
13311    #[prost(uint64, optional, tag = "2")]
13312    pub ino: ::core::option::Option<u64>,
13313    #[prost(int64, optional, tag = "3")]
13314    pub pos: ::core::option::Option<i64>,
13315    #[prost(uint64, optional, tag = "4")]
13316    pub len: ::core::option::Option<u64>,
13317    #[prost(int32, optional, tag = "5")]
13318    pub rw: ::core::option::Option<i32>,
13319    #[prost(int32, optional, tag = "6")]
13320    pub ret: ::core::option::Option<i32>,
13321}
13322#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13323pub struct Ext4DiscardBlocksFtraceEvent {
13324    #[prost(uint64, optional, tag = "1")]
13325    pub dev: ::core::option::Option<u64>,
13326    #[prost(uint64, optional, tag = "2")]
13327    pub blk: ::core::option::Option<u64>,
13328    #[prost(uint64, optional, tag = "3")]
13329    pub count: ::core::option::Option<u64>,
13330}
13331#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13332pub struct Ext4DiscardPreallocationsFtraceEvent {
13333    #[prost(uint64, optional, tag = "1")]
13334    pub dev: ::core::option::Option<u64>,
13335    #[prost(uint64, optional, tag = "2")]
13336    pub ino: ::core::option::Option<u64>,
13337    #[prost(uint32, optional, tag = "3")]
13338    pub len: ::core::option::Option<u32>,
13339    #[prost(uint32, optional, tag = "4")]
13340    pub needed: ::core::option::Option<u32>,
13341}
13342#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13343pub struct Ext4DropInodeFtraceEvent {
13344    #[prost(uint64, optional, tag = "1")]
13345    pub dev: ::core::option::Option<u64>,
13346    #[prost(uint64, optional, tag = "2")]
13347    pub ino: ::core::option::Option<u64>,
13348    #[prost(int32, optional, tag = "3")]
13349    pub drop: ::core::option::Option<i32>,
13350}
13351#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13352pub struct Ext4EsCacheExtentFtraceEvent {
13353    #[prost(uint64, optional, tag = "1")]
13354    pub dev: ::core::option::Option<u64>,
13355    #[prost(uint64, optional, tag = "2")]
13356    pub ino: ::core::option::Option<u64>,
13357    #[prost(uint32, optional, tag = "3")]
13358    pub lblk: ::core::option::Option<u32>,
13359    #[prost(uint32, optional, tag = "4")]
13360    pub len: ::core::option::Option<u32>,
13361    #[prost(uint64, optional, tag = "5")]
13362    pub pblk: ::core::option::Option<u64>,
13363    #[prost(uint32, optional, tag = "6")]
13364    pub status: ::core::option::Option<u32>,
13365}
13366#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13367pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
13368    #[prost(uint64, optional, tag = "1")]
13369    pub dev: ::core::option::Option<u64>,
13370    #[prost(uint64, optional, tag = "2")]
13371    pub ino: ::core::option::Option<u64>,
13372    #[prost(uint32, optional, tag = "3")]
13373    pub lblk: ::core::option::Option<u32>,
13374}
13375#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13376pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
13377    #[prost(uint64, optional, tag = "1")]
13378    pub dev: ::core::option::Option<u64>,
13379    #[prost(uint64, optional, tag = "2")]
13380    pub ino: ::core::option::Option<u64>,
13381    #[prost(uint32, optional, tag = "3")]
13382    pub lblk: ::core::option::Option<u32>,
13383    #[prost(uint32, optional, tag = "4")]
13384    pub len: ::core::option::Option<u32>,
13385    #[prost(uint64, optional, tag = "5")]
13386    pub pblk: ::core::option::Option<u64>,
13387    #[prost(uint64, optional, tag = "6")]
13388    pub status: ::core::option::Option<u64>,
13389}
13390#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13391pub struct Ext4EsInsertExtentFtraceEvent {
13392    #[prost(uint64, optional, tag = "1")]
13393    pub dev: ::core::option::Option<u64>,
13394    #[prost(uint64, optional, tag = "2")]
13395    pub ino: ::core::option::Option<u64>,
13396    #[prost(uint32, optional, tag = "3")]
13397    pub lblk: ::core::option::Option<u32>,
13398    #[prost(uint32, optional, tag = "4")]
13399    pub len: ::core::option::Option<u32>,
13400    #[prost(uint64, optional, tag = "5")]
13401    pub pblk: ::core::option::Option<u64>,
13402    #[prost(uint64, optional, tag = "6")]
13403    pub status: ::core::option::Option<u64>,
13404}
13405#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13406pub struct Ext4EsLookupExtentEnterFtraceEvent {
13407    #[prost(uint64, optional, tag = "1")]
13408    pub dev: ::core::option::Option<u64>,
13409    #[prost(uint64, optional, tag = "2")]
13410    pub ino: ::core::option::Option<u64>,
13411    #[prost(uint32, optional, tag = "3")]
13412    pub lblk: ::core::option::Option<u32>,
13413}
13414#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13415pub struct Ext4EsLookupExtentExitFtraceEvent {
13416    #[prost(uint64, optional, tag = "1")]
13417    pub dev: ::core::option::Option<u64>,
13418    #[prost(uint64, optional, tag = "2")]
13419    pub ino: ::core::option::Option<u64>,
13420    #[prost(uint32, optional, tag = "3")]
13421    pub lblk: ::core::option::Option<u32>,
13422    #[prost(uint32, optional, tag = "4")]
13423    pub len: ::core::option::Option<u32>,
13424    #[prost(uint64, optional, tag = "5")]
13425    pub pblk: ::core::option::Option<u64>,
13426    #[prost(uint64, optional, tag = "6")]
13427    pub status: ::core::option::Option<u64>,
13428    #[prost(int32, optional, tag = "7")]
13429    pub found: ::core::option::Option<i32>,
13430}
13431#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13432pub struct Ext4EsRemoveExtentFtraceEvent {
13433    #[prost(uint64, optional, tag = "1")]
13434    pub dev: ::core::option::Option<u64>,
13435    #[prost(uint64, optional, tag = "2")]
13436    pub ino: ::core::option::Option<u64>,
13437    #[prost(int64, optional, tag = "3")]
13438    pub lblk: ::core::option::Option<i64>,
13439    #[prost(int64, optional, tag = "4")]
13440    pub len: ::core::option::Option<i64>,
13441}
13442#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13443pub struct Ext4EsShrinkFtraceEvent {
13444    #[prost(uint64, optional, tag = "1")]
13445    pub dev: ::core::option::Option<u64>,
13446    #[prost(int32, optional, tag = "2")]
13447    pub nr_shrunk: ::core::option::Option<i32>,
13448    #[prost(uint64, optional, tag = "3")]
13449    pub scan_time: ::core::option::Option<u64>,
13450    #[prost(int32, optional, tag = "4")]
13451    pub nr_skipped: ::core::option::Option<i32>,
13452    #[prost(int32, optional, tag = "5")]
13453    pub retried: ::core::option::Option<i32>,
13454}
13455#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13456pub struct Ext4EsShrinkCountFtraceEvent {
13457    #[prost(uint64, optional, tag = "1")]
13458    pub dev: ::core::option::Option<u64>,
13459    #[prost(int32, optional, tag = "2")]
13460    pub nr_to_scan: ::core::option::Option<i32>,
13461    #[prost(int32, optional, tag = "3")]
13462    pub cache_cnt: ::core::option::Option<i32>,
13463}
13464#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13465pub struct Ext4EsShrinkScanEnterFtraceEvent {
13466    #[prost(uint64, optional, tag = "1")]
13467    pub dev: ::core::option::Option<u64>,
13468    #[prost(int32, optional, tag = "2")]
13469    pub nr_to_scan: ::core::option::Option<i32>,
13470    #[prost(int32, optional, tag = "3")]
13471    pub cache_cnt: ::core::option::Option<i32>,
13472}
13473#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13474pub struct Ext4EsShrinkScanExitFtraceEvent {
13475    #[prost(uint64, optional, tag = "1")]
13476    pub dev: ::core::option::Option<u64>,
13477    #[prost(int32, optional, tag = "2")]
13478    pub nr_shrunk: ::core::option::Option<i32>,
13479    #[prost(int32, optional, tag = "3")]
13480    pub cache_cnt: ::core::option::Option<i32>,
13481}
13482#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13483pub struct Ext4EvictInodeFtraceEvent {
13484    #[prost(uint64, optional, tag = "1")]
13485    pub dev: ::core::option::Option<u64>,
13486    #[prost(uint64, optional, tag = "2")]
13487    pub ino: ::core::option::Option<u64>,
13488    #[prost(int32, optional, tag = "3")]
13489    pub nlink: ::core::option::Option<i32>,
13490}
13491#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13492pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
13493    #[prost(uint64, optional, tag = "1")]
13494    pub dev: ::core::option::Option<u64>,
13495    #[prost(uint64, optional, tag = "2")]
13496    pub ino: ::core::option::Option<u64>,
13497    #[prost(uint32, optional, tag = "3")]
13498    pub m_lblk: ::core::option::Option<u32>,
13499    #[prost(uint32, optional, tag = "4")]
13500    pub m_len: ::core::option::Option<u32>,
13501    #[prost(uint32, optional, tag = "5")]
13502    pub u_lblk: ::core::option::Option<u32>,
13503    #[prost(uint32, optional, tag = "6")]
13504    pub u_len: ::core::option::Option<u32>,
13505    #[prost(uint64, optional, tag = "7")]
13506    pub u_pblk: ::core::option::Option<u64>,
13507}
13508#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13509pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
13510    #[prost(uint64, optional, tag = "1")]
13511    pub dev: ::core::option::Option<u64>,
13512    #[prost(uint64, optional, tag = "2")]
13513    pub ino: ::core::option::Option<u64>,
13514    #[prost(uint32, optional, tag = "3")]
13515    pub m_lblk: ::core::option::Option<u32>,
13516    #[prost(uint32, optional, tag = "4")]
13517    pub m_len: ::core::option::Option<u32>,
13518    #[prost(uint32, optional, tag = "5")]
13519    pub u_lblk: ::core::option::Option<u32>,
13520    #[prost(uint32, optional, tag = "6")]
13521    pub u_len: ::core::option::Option<u32>,
13522    #[prost(uint64, optional, tag = "7")]
13523    pub u_pblk: ::core::option::Option<u64>,
13524    #[prost(uint32, optional, tag = "8")]
13525    pub i_lblk: ::core::option::Option<u32>,
13526    #[prost(uint32, optional, tag = "9")]
13527    pub i_len: ::core::option::Option<u32>,
13528    #[prost(uint64, optional, tag = "10")]
13529    pub i_pblk: ::core::option::Option<u64>,
13530}
13531#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13532pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
13533    #[prost(uint64, optional, tag = "1")]
13534    pub dev: ::core::option::Option<u64>,
13535    #[prost(uint64, optional, tag = "2")]
13536    pub ino: ::core::option::Option<u64>,
13537    #[prost(int32, optional, tag = "3")]
13538    pub flags: ::core::option::Option<i32>,
13539    #[prost(uint32, optional, tag = "4")]
13540    pub lblk: ::core::option::Option<u32>,
13541    #[prost(uint64, optional, tag = "5")]
13542    pub pblk: ::core::option::Option<u64>,
13543    #[prost(uint32, optional, tag = "6")]
13544    pub len: ::core::option::Option<u32>,
13545    #[prost(uint32, optional, tag = "7")]
13546    pub allocated: ::core::option::Option<u32>,
13547    #[prost(uint64, optional, tag = "8")]
13548    pub newblk: ::core::option::Option<u64>,
13549}
13550#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13551pub struct Ext4ExtInCacheFtraceEvent {
13552    #[prost(uint64, optional, tag = "1")]
13553    pub dev: ::core::option::Option<u64>,
13554    #[prost(uint64, optional, tag = "2")]
13555    pub ino: ::core::option::Option<u64>,
13556    #[prost(uint32, optional, tag = "3")]
13557    pub lblk: ::core::option::Option<u32>,
13558    #[prost(int32, optional, tag = "4")]
13559    pub ret: ::core::option::Option<i32>,
13560}
13561#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13562pub struct Ext4ExtLoadExtentFtraceEvent {
13563    #[prost(uint64, optional, tag = "1")]
13564    pub dev: ::core::option::Option<u64>,
13565    #[prost(uint64, optional, tag = "2")]
13566    pub ino: ::core::option::Option<u64>,
13567    #[prost(uint64, optional, tag = "3")]
13568    pub pblk: ::core::option::Option<u64>,
13569    #[prost(uint32, optional, tag = "4")]
13570    pub lblk: ::core::option::Option<u32>,
13571}
13572#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13573pub struct Ext4ExtMapBlocksEnterFtraceEvent {
13574    #[prost(uint64, optional, tag = "1")]
13575    pub dev: ::core::option::Option<u64>,
13576    #[prost(uint64, optional, tag = "2")]
13577    pub ino: ::core::option::Option<u64>,
13578    #[prost(uint32, optional, tag = "3")]
13579    pub lblk: ::core::option::Option<u32>,
13580    #[prost(uint32, optional, tag = "4")]
13581    pub len: ::core::option::Option<u32>,
13582    #[prost(uint32, optional, tag = "5")]
13583    pub flags: ::core::option::Option<u32>,
13584}
13585#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13586pub struct Ext4ExtMapBlocksExitFtraceEvent {
13587    #[prost(uint64, optional, tag = "1")]
13588    pub dev: ::core::option::Option<u64>,
13589    #[prost(uint64, optional, tag = "2")]
13590    pub ino: ::core::option::Option<u64>,
13591    #[prost(uint32, optional, tag = "3")]
13592    pub flags: ::core::option::Option<u32>,
13593    #[prost(uint64, optional, tag = "4")]
13594    pub pblk: ::core::option::Option<u64>,
13595    #[prost(uint32, optional, tag = "5")]
13596    pub lblk: ::core::option::Option<u32>,
13597    #[prost(uint32, optional, tag = "6")]
13598    pub len: ::core::option::Option<u32>,
13599    #[prost(uint32, optional, tag = "7")]
13600    pub mflags: ::core::option::Option<u32>,
13601    #[prost(int32, optional, tag = "8")]
13602    pub ret: ::core::option::Option<i32>,
13603}
13604#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13605pub struct Ext4ExtPutInCacheFtraceEvent {
13606    #[prost(uint64, optional, tag = "1")]
13607    pub dev: ::core::option::Option<u64>,
13608    #[prost(uint64, optional, tag = "2")]
13609    pub ino: ::core::option::Option<u64>,
13610    #[prost(uint32, optional, tag = "3")]
13611    pub lblk: ::core::option::Option<u32>,
13612    #[prost(uint32, optional, tag = "4")]
13613    pub len: ::core::option::Option<u32>,
13614    #[prost(uint64, optional, tag = "5")]
13615    pub start: ::core::option::Option<u64>,
13616}
13617#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13618pub struct Ext4ExtRemoveSpaceFtraceEvent {
13619    #[prost(uint64, optional, tag = "1")]
13620    pub dev: ::core::option::Option<u64>,
13621    #[prost(uint64, optional, tag = "2")]
13622    pub ino: ::core::option::Option<u64>,
13623    #[prost(uint32, optional, tag = "3")]
13624    pub start: ::core::option::Option<u32>,
13625    #[prost(uint32, optional, tag = "4")]
13626    pub end: ::core::option::Option<u32>,
13627    #[prost(int32, optional, tag = "5")]
13628    pub depth: ::core::option::Option<i32>,
13629}
13630#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13631pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
13632    #[prost(uint64, optional, tag = "1")]
13633    pub dev: ::core::option::Option<u64>,
13634    #[prost(uint64, optional, tag = "2")]
13635    pub ino: ::core::option::Option<u64>,
13636    #[prost(uint32, optional, tag = "3")]
13637    pub start: ::core::option::Option<u32>,
13638    #[prost(uint32, optional, tag = "4")]
13639    pub end: ::core::option::Option<u32>,
13640    #[prost(int32, optional, tag = "5")]
13641    pub depth: ::core::option::Option<i32>,
13642    #[prost(int64, optional, tag = "6")]
13643    pub partial: ::core::option::Option<i64>,
13644    #[prost(uint32, optional, tag = "7")]
13645    pub eh_entries: ::core::option::Option<u32>,
13646    #[prost(uint32, optional, tag = "8")]
13647    pub pc_lblk: ::core::option::Option<u32>,
13648    #[prost(uint64, optional, tag = "9")]
13649    pub pc_pclu: ::core::option::Option<u64>,
13650    #[prost(int32, optional, tag = "10")]
13651    pub pc_state: ::core::option::Option<i32>,
13652}
13653#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13654pub struct Ext4ExtRmIdxFtraceEvent {
13655    #[prost(uint64, optional, tag = "1")]
13656    pub dev: ::core::option::Option<u64>,
13657    #[prost(uint64, optional, tag = "2")]
13658    pub ino: ::core::option::Option<u64>,
13659    #[prost(uint64, optional, tag = "3")]
13660    pub pblk: ::core::option::Option<u64>,
13661}
13662#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13663pub struct Ext4ExtRmLeafFtraceEvent {
13664    #[prost(uint64, optional, tag = "1")]
13665    pub dev: ::core::option::Option<u64>,
13666    #[prost(uint64, optional, tag = "2")]
13667    pub ino: ::core::option::Option<u64>,
13668    #[prost(int64, optional, tag = "3")]
13669    pub partial: ::core::option::Option<i64>,
13670    #[prost(uint32, optional, tag = "4")]
13671    pub start: ::core::option::Option<u32>,
13672    #[prost(uint32, optional, tag = "5")]
13673    pub ee_lblk: ::core::option::Option<u32>,
13674    #[prost(uint64, optional, tag = "6")]
13675    pub ee_pblk: ::core::option::Option<u64>,
13676    #[prost(int32, optional, tag = "7")]
13677    pub ee_len: ::core::option::Option<i32>,
13678    #[prost(uint32, optional, tag = "8")]
13679    pub pc_lblk: ::core::option::Option<u32>,
13680    #[prost(uint64, optional, tag = "9")]
13681    pub pc_pclu: ::core::option::Option<u64>,
13682    #[prost(int32, optional, tag = "10")]
13683    pub pc_state: ::core::option::Option<i32>,
13684}
13685#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13686pub struct Ext4ExtShowExtentFtraceEvent {
13687    #[prost(uint64, optional, tag = "1")]
13688    pub dev: ::core::option::Option<u64>,
13689    #[prost(uint64, optional, tag = "2")]
13690    pub ino: ::core::option::Option<u64>,
13691    #[prost(uint64, optional, tag = "3")]
13692    pub pblk: ::core::option::Option<u64>,
13693    #[prost(uint32, optional, tag = "4")]
13694    pub lblk: ::core::option::Option<u32>,
13695    #[prost(uint32, optional, tag = "5")]
13696    pub len: ::core::option::Option<u32>,
13697}
13698#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13699pub struct Ext4FallocateEnterFtraceEvent {
13700    #[prost(uint64, optional, tag = "1")]
13701    pub dev: ::core::option::Option<u64>,
13702    #[prost(uint64, optional, tag = "2")]
13703    pub ino: ::core::option::Option<u64>,
13704    #[prost(int64, optional, tag = "3")]
13705    pub offset: ::core::option::Option<i64>,
13706    #[prost(int64, optional, tag = "4")]
13707    pub len: ::core::option::Option<i64>,
13708    #[prost(int32, optional, tag = "5")]
13709    pub mode: ::core::option::Option<i32>,
13710    #[prost(int64, optional, tag = "6")]
13711    pub pos: ::core::option::Option<i64>,
13712}
13713#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13714pub struct Ext4FallocateExitFtraceEvent {
13715    #[prost(uint64, optional, tag = "1")]
13716    pub dev: ::core::option::Option<u64>,
13717    #[prost(uint64, optional, tag = "2")]
13718    pub ino: ::core::option::Option<u64>,
13719    #[prost(int64, optional, tag = "3")]
13720    pub pos: ::core::option::Option<i64>,
13721    #[prost(uint32, optional, tag = "4")]
13722    pub blocks: ::core::option::Option<u32>,
13723    #[prost(int32, optional, tag = "5")]
13724    pub ret: ::core::option::Option<i32>,
13725}
13726#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13727pub struct Ext4FindDelallocRangeFtraceEvent {
13728    #[prost(uint64, optional, tag = "1")]
13729    pub dev: ::core::option::Option<u64>,
13730    #[prost(uint64, optional, tag = "2")]
13731    pub ino: ::core::option::Option<u64>,
13732    #[prost(uint32, optional, tag = "3")]
13733    pub from: ::core::option::Option<u32>,
13734    #[prost(uint32, optional, tag = "4")]
13735    pub to: ::core::option::Option<u32>,
13736    #[prost(int32, optional, tag = "5")]
13737    pub reverse: ::core::option::Option<i32>,
13738    #[prost(int32, optional, tag = "6")]
13739    pub found: ::core::option::Option<i32>,
13740    #[prost(uint32, optional, tag = "7")]
13741    pub found_blk: ::core::option::Option<u32>,
13742}
13743#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13744pub struct Ext4ForgetFtraceEvent {
13745    #[prost(uint64, optional, tag = "1")]
13746    pub dev: ::core::option::Option<u64>,
13747    #[prost(uint64, optional, tag = "2")]
13748    pub ino: ::core::option::Option<u64>,
13749    #[prost(uint64, optional, tag = "3")]
13750    pub block: ::core::option::Option<u64>,
13751    #[prost(int32, optional, tag = "4")]
13752    pub is_metadata: ::core::option::Option<i32>,
13753    #[prost(uint32, optional, tag = "5")]
13754    pub mode: ::core::option::Option<u32>,
13755}
13756#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13757pub struct Ext4FreeBlocksFtraceEvent {
13758    #[prost(uint64, optional, tag = "1")]
13759    pub dev: ::core::option::Option<u64>,
13760    #[prost(uint64, optional, tag = "2")]
13761    pub ino: ::core::option::Option<u64>,
13762    #[prost(uint64, optional, tag = "3")]
13763    pub block: ::core::option::Option<u64>,
13764    #[prost(uint64, optional, tag = "4")]
13765    pub count: ::core::option::Option<u64>,
13766    #[prost(int32, optional, tag = "5")]
13767    pub flags: ::core::option::Option<i32>,
13768    #[prost(uint32, optional, tag = "6")]
13769    pub mode: ::core::option::Option<u32>,
13770}
13771#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13772pub struct Ext4FreeInodeFtraceEvent {
13773    #[prost(uint64, optional, tag = "1")]
13774    pub dev: ::core::option::Option<u64>,
13775    #[prost(uint64, optional, tag = "2")]
13776    pub ino: ::core::option::Option<u64>,
13777    #[prost(uint32, optional, tag = "3")]
13778    pub uid: ::core::option::Option<u32>,
13779    #[prost(uint32, optional, tag = "4")]
13780    pub gid: ::core::option::Option<u32>,
13781    #[prost(uint64, optional, tag = "5")]
13782    pub blocks: ::core::option::Option<u64>,
13783    #[prost(uint32, optional, tag = "6")]
13784    pub mode: ::core::option::Option<u32>,
13785}
13786#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13787pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
13788    #[prost(uint64, optional, tag = "1")]
13789    pub dev: ::core::option::Option<u64>,
13790    #[prost(uint32, optional, tag = "2")]
13791    pub flags: ::core::option::Option<u32>,
13792    #[prost(uint32, optional, tag = "3")]
13793    pub lblk: ::core::option::Option<u32>,
13794    #[prost(uint64, optional, tag = "4")]
13795    pub pblk: ::core::option::Option<u64>,
13796    #[prost(uint32, optional, tag = "5")]
13797    pub len: ::core::option::Option<u32>,
13798    #[prost(int32, optional, tag = "6")]
13799    pub ret: ::core::option::Option<i32>,
13800}
13801#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13802pub struct Ext4GetReservedClusterAllocFtraceEvent {
13803    #[prost(uint64, optional, tag = "1")]
13804    pub dev: ::core::option::Option<u64>,
13805    #[prost(uint64, optional, tag = "2")]
13806    pub ino: ::core::option::Option<u64>,
13807    #[prost(uint32, optional, tag = "3")]
13808    pub lblk: ::core::option::Option<u32>,
13809    #[prost(uint32, optional, tag = "4")]
13810    pub len: ::core::option::Option<u32>,
13811}
13812#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13813pub struct Ext4IndMapBlocksEnterFtraceEvent {
13814    #[prost(uint64, optional, tag = "1")]
13815    pub dev: ::core::option::Option<u64>,
13816    #[prost(uint64, optional, tag = "2")]
13817    pub ino: ::core::option::Option<u64>,
13818    #[prost(uint32, optional, tag = "3")]
13819    pub lblk: ::core::option::Option<u32>,
13820    #[prost(uint32, optional, tag = "4")]
13821    pub len: ::core::option::Option<u32>,
13822    #[prost(uint32, optional, tag = "5")]
13823    pub flags: ::core::option::Option<u32>,
13824}
13825#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13826pub struct Ext4IndMapBlocksExitFtraceEvent {
13827    #[prost(uint64, optional, tag = "1")]
13828    pub dev: ::core::option::Option<u64>,
13829    #[prost(uint64, optional, tag = "2")]
13830    pub ino: ::core::option::Option<u64>,
13831    #[prost(uint32, optional, tag = "3")]
13832    pub flags: ::core::option::Option<u32>,
13833    #[prost(uint64, optional, tag = "4")]
13834    pub pblk: ::core::option::Option<u64>,
13835    #[prost(uint32, optional, tag = "5")]
13836    pub lblk: ::core::option::Option<u32>,
13837    #[prost(uint32, optional, tag = "6")]
13838    pub len: ::core::option::Option<u32>,
13839    #[prost(uint32, optional, tag = "7")]
13840    pub mflags: ::core::option::Option<u32>,
13841    #[prost(int32, optional, tag = "8")]
13842    pub ret: ::core::option::Option<i32>,
13843}
13844#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13845pub struct Ext4InsertRangeFtraceEvent {
13846    #[prost(uint64, optional, tag = "1")]
13847    pub dev: ::core::option::Option<u64>,
13848    #[prost(uint64, optional, tag = "2")]
13849    pub ino: ::core::option::Option<u64>,
13850    #[prost(int64, optional, tag = "3")]
13851    pub offset: ::core::option::Option<i64>,
13852    #[prost(int64, optional, tag = "4")]
13853    pub len: ::core::option::Option<i64>,
13854}
13855#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13856pub struct Ext4InvalidatepageFtraceEvent {
13857    #[prost(uint64, optional, tag = "1")]
13858    pub dev: ::core::option::Option<u64>,
13859    #[prost(uint64, optional, tag = "2")]
13860    pub ino: ::core::option::Option<u64>,
13861    #[prost(uint64, optional, tag = "3")]
13862    pub index: ::core::option::Option<u64>,
13863    #[prost(uint64, optional, tag = "4")]
13864    pub offset: ::core::option::Option<u64>,
13865    #[prost(uint32, optional, tag = "5")]
13866    pub length: ::core::option::Option<u32>,
13867}
13868#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13869pub struct Ext4JournalStartFtraceEvent {
13870    #[prost(uint64, optional, tag = "1")]
13871    pub dev: ::core::option::Option<u64>,
13872    #[prost(uint64, optional, tag = "2")]
13873    pub ip: ::core::option::Option<u64>,
13874    #[prost(int32, optional, tag = "3")]
13875    pub blocks: ::core::option::Option<i32>,
13876    #[prost(int32, optional, tag = "4")]
13877    pub rsv_blocks: ::core::option::Option<i32>,
13878    #[prost(int32, optional, tag = "5")]
13879    pub nblocks: ::core::option::Option<i32>,
13880    #[prost(int32, optional, tag = "6")]
13881    pub revoke_creds: ::core::option::Option<i32>,
13882}
13883#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13884pub struct Ext4JournalStartReservedFtraceEvent {
13885    #[prost(uint64, optional, tag = "1")]
13886    pub dev: ::core::option::Option<u64>,
13887    #[prost(uint64, optional, tag = "2")]
13888    pub ip: ::core::option::Option<u64>,
13889    #[prost(int32, optional, tag = "3")]
13890    pub blocks: ::core::option::Option<i32>,
13891}
13892#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13893pub struct Ext4JournalledInvalidatepageFtraceEvent {
13894    #[prost(uint64, optional, tag = "1")]
13895    pub dev: ::core::option::Option<u64>,
13896    #[prost(uint64, optional, tag = "2")]
13897    pub ino: ::core::option::Option<u64>,
13898    #[prost(uint64, optional, tag = "3")]
13899    pub index: ::core::option::Option<u64>,
13900    #[prost(uint64, optional, tag = "4")]
13901    pub offset: ::core::option::Option<u64>,
13902    #[prost(uint32, optional, tag = "5")]
13903    pub length: ::core::option::Option<u32>,
13904}
13905#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13906pub struct Ext4JournalledWriteEndFtraceEvent {
13907    #[prost(uint64, optional, tag = "1")]
13908    pub dev: ::core::option::Option<u64>,
13909    #[prost(uint64, optional, tag = "2")]
13910    pub ino: ::core::option::Option<u64>,
13911    #[prost(int64, optional, tag = "3")]
13912    pub pos: ::core::option::Option<i64>,
13913    #[prost(uint32, optional, tag = "4")]
13914    pub len: ::core::option::Option<u32>,
13915    #[prost(uint32, optional, tag = "5")]
13916    pub copied: ::core::option::Option<u32>,
13917}
13918#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13919pub struct Ext4LoadInodeFtraceEvent {
13920    #[prost(uint64, optional, tag = "1")]
13921    pub dev: ::core::option::Option<u64>,
13922    #[prost(uint64, optional, tag = "2")]
13923    pub ino: ::core::option::Option<u64>,
13924}
13925#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13926pub struct Ext4LoadInodeBitmapFtraceEvent {
13927    #[prost(uint64, optional, tag = "1")]
13928    pub dev: ::core::option::Option<u64>,
13929    #[prost(uint32, optional, tag = "2")]
13930    pub group: ::core::option::Option<u32>,
13931}
13932#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13933pub struct Ext4MarkInodeDirtyFtraceEvent {
13934    #[prost(uint64, optional, tag = "1")]
13935    pub dev: ::core::option::Option<u64>,
13936    #[prost(uint64, optional, tag = "2")]
13937    pub ino: ::core::option::Option<u64>,
13938    #[prost(uint64, optional, tag = "3")]
13939    pub ip: ::core::option::Option<u64>,
13940}
13941#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13942pub struct Ext4MbBitmapLoadFtraceEvent {
13943    #[prost(uint64, optional, tag = "1")]
13944    pub dev: ::core::option::Option<u64>,
13945    #[prost(uint32, optional, tag = "2")]
13946    pub group: ::core::option::Option<u32>,
13947}
13948#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13949pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
13950    #[prost(uint64, optional, tag = "1")]
13951    pub dev: ::core::option::Option<u64>,
13952    #[prost(uint32, optional, tag = "2")]
13953    pub group: ::core::option::Option<u32>,
13954}
13955#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13956pub struct Ext4MbDiscardPreallocationsFtraceEvent {
13957    #[prost(uint64, optional, tag = "1")]
13958    pub dev: ::core::option::Option<u64>,
13959    #[prost(int32, optional, tag = "2")]
13960    pub needed: ::core::option::Option<i32>,
13961}
13962#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13963pub struct Ext4MbNewGroupPaFtraceEvent {
13964    #[prost(uint64, optional, tag = "1")]
13965    pub dev: ::core::option::Option<u64>,
13966    #[prost(uint64, optional, tag = "2")]
13967    pub ino: ::core::option::Option<u64>,
13968    #[prost(uint64, optional, tag = "3")]
13969    pub pa_pstart: ::core::option::Option<u64>,
13970    #[prost(uint64, optional, tag = "4")]
13971    pub pa_lstart: ::core::option::Option<u64>,
13972    #[prost(uint32, optional, tag = "5")]
13973    pub pa_len: ::core::option::Option<u32>,
13974}
13975#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13976pub struct Ext4MbNewInodePaFtraceEvent {
13977    #[prost(uint64, optional, tag = "1")]
13978    pub dev: ::core::option::Option<u64>,
13979    #[prost(uint64, optional, tag = "2")]
13980    pub ino: ::core::option::Option<u64>,
13981    #[prost(uint64, optional, tag = "3")]
13982    pub pa_pstart: ::core::option::Option<u64>,
13983    #[prost(uint64, optional, tag = "4")]
13984    pub pa_lstart: ::core::option::Option<u64>,
13985    #[prost(uint32, optional, tag = "5")]
13986    pub pa_len: ::core::option::Option<u32>,
13987}
13988#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13989pub struct Ext4MbReleaseGroupPaFtraceEvent {
13990    #[prost(uint64, optional, tag = "1")]
13991    pub dev: ::core::option::Option<u64>,
13992    #[prost(uint64, optional, tag = "2")]
13993    pub pa_pstart: ::core::option::Option<u64>,
13994    #[prost(uint32, optional, tag = "3")]
13995    pub pa_len: ::core::option::Option<u32>,
13996}
13997#[derive(Clone, Copy, PartialEq, ::prost::Message)]
13998pub struct Ext4MbReleaseInodePaFtraceEvent {
13999    #[prost(uint64, optional, tag = "1")]
14000    pub dev: ::core::option::Option<u64>,
14001    #[prost(uint64, optional, tag = "2")]
14002    pub ino: ::core::option::Option<u64>,
14003    #[prost(uint64, optional, tag = "3")]
14004    pub block: ::core::option::Option<u64>,
14005    #[prost(uint32, optional, tag = "4")]
14006    pub count: ::core::option::Option<u32>,
14007}
14008#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14009pub struct Ext4MballocAllocFtraceEvent {
14010    #[prost(uint64, optional, tag = "1")]
14011    pub dev: ::core::option::Option<u64>,
14012    #[prost(uint64, optional, tag = "2")]
14013    pub ino: ::core::option::Option<u64>,
14014    #[prost(uint32, optional, tag = "3")]
14015    pub orig_logical: ::core::option::Option<u32>,
14016    #[prost(int32, optional, tag = "4")]
14017    pub orig_start: ::core::option::Option<i32>,
14018    #[prost(uint32, optional, tag = "5")]
14019    pub orig_group: ::core::option::Option<u32>,
14020    #[prost(int32, optional, tag = "6")]
14021    pub orig_len: ::core::option::Option<i32>,
14022    #[prost(uint32, optional, tag = "7")]
14023    pub goal_logical: ::core::option::Option<u32>,
14024    #[prost(int32, optional, tag = "8")]
14025    pub goal_start: ::core::option::Option<i32>,
14026    #[prost(uint32, optional, tag = "9")]
14027    pub goal_group: ::core::option::Option<u32>,
14028    #[prost(int32, optional, tag = "10")]
14029    pub goal_len: ::core::option::Option<i32>,
14030    #[prost(uint32, optional, tag = "11")]
14031    pub result_logical: ::core::option::Option<u32>,
14032    #[prost(int32, optional, tag = "12")]
14033    pub result_start: ::core::option::Option<i32>,
14034    #[prost(uint32, optional, tag = "13")]
14035    pub result_group: ::core::option::Option<u32>,
14036    #[prost(int32, optional, tag = "14")]
14037    pub result_len: ::core::option::Option<i32>,
14038    #[prost(uint32, optional, tag = "15")]
14039    pub found: ::core::option::Option<u32>,
14040    #[prost(uint32, optional, tag = "16")]
14041    pub groups: ::core::option::Option<u32>,
14042    #[prost(uint32, optional, tag = "17")]
14043    pub buddy: ::core::option::Option<u32>,
14044    #[prost(uint32, optional, tag = "18")]
14045    pub flags: ::core::option::Option<u32>,
14046    #[prost(uint32, optional, tag = "19")]
14047    pub tail: ::core::option::Option<u32>,
14048    #[prost(uint32, optional, tag = "20")]
14049    pub cr: ::core::option::Option<u32>,
14050}
14051#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14052pub struct Ext4MballocDiscardFtraceEvent {
14053    #[prost(uint64, optional, tag = "1")]
14054    pub dev: ::core::option::Option<u64>,
14055    #[prost(uint64, optional, tag = "2")]
14056    pub ino: ::core::option::Option<u64>,
14057    #[prost(int32, optional, tag = "3")]
14058    pub result_start: ::core::option::Option<i32>,
14059    #[prost(uint32, optional, tag = "4")]
14060    pub result_group: ::core::option::Option<u32>,
14061    #[prost(int32, optional, tag = "5")]
14062    pub result_len: ::core::option::Option<i32>,
14063}
14064#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14065pub struct Ext4MballocFreeFtraceEvent {
14066    #[prost(uint64, optional, tag = "1")]
14067    pub dev: ::core::option::Option<u64>,
14068    #[prost(uint64, optional, tag = "2")]
14069    pub ino: ::core::option::Option<u64>,
14070    #[prost(int32, optional, tag = "3")]
14071    pub result_start: ::core::option::Option<i32>,
14072    #[prost(uint32, optional, tag = "4")]
14073    pub result_group: ::core::option::Option<u32>,
14074    #[prost(int32, optional, tag = "5")]
14075    pub result_len: ::core::option::Option<i32>,
14076}
14077#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14078pub struct Ext4MballocPreallocFtraceEvent {
14079    #[prost(uint64, optional, tag = "1")]
14080    pub dev: ::core::option::Option<u64>,
14081    #[prost(uint64, optional, tag = "2")]
14082    pub ino: ::core::option::Option<u64>,
14083    #[prost(uint32, optional, tag = "3")]
14084    pub orig_logical: ::core::option::Option<u32>,
14085    #[prost(int32, optional, tag = "4")]
14086    pub orig_start: ::core::option::Option<i32>,
14087    #[prost(uint32, optional, tag = "5")]
14088    pub orig_group: ::core::option::Option<u32>,
14089    #[prost(int32, optional, tag = "6")]
14090    pub orig_len: ::core::option::Option<i32>,
14091    #[prost(uint32, optional, tag = "7")]
14092    pub result_logical: ::core::option::Option<u32>,
14093    #[prost(int32, optional, tag = "8")]
14094    pub result_start: ::core::option::Option<i32>,
14095    #[prost(uint32, optional, tag = "9")]
14096    pub result_group: ::core::option::Option<u32>,
14097    #[prost(int32, optional, tag = "10")]
14098    pub result_len: ::core::option::Option<i32>,
14099}
14100#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14101pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
14102    #[prost(uint64, optional, tag = "1")]
14103    pub dev: ::core::option::Option<u64>,
14104    #[prost(uint64, optional, tag = "2")]
14105    pub ino: ::core::option::Option<u64>,
14106    #[prost(uint64, optional, tag = "3")]
14107    pub orig_ino: ::core::option::Option<u64>,
14108    #[prost(uint32, optional, tag = "4")]
14109    pub uid: ::core::option::Option<u32>,
14110    #[prost(uint32, optional, tag = "5")]
14111    pub gid: ::core::option::Option<u32>,
14112    #[prost(uint32, optional, tag = "6")]
14113    pub mode: ::core::option::Option<u32>,
14114}
14115#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14116pub struct Ext4PunchHoleFtraceEvent {
14117    #[prost(uint64, optional, tag = "1")]
14118    pub dev: ::core::option::Option<u64>,
14119    #[prost(uint64, optional, tag = "2")]
14120    pub ino: ::core::option::Option<u64>,
14121    #[prost(int64, optional, tag = "3")]
14122    pub offset: ::core::option::Option<i64>,
14123    #[prost(int64, optional, tag = "4")]
14124    pub len: ::core::option::Option<i64>,
14125    #[prost(int32, optional, tag = "5")]
14126    pub mode: ::core::option::Option<i32>,
14127}
14128#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14129pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
14130    #[prost(uint64, optional, tag = "1")]
14131    pub dev: ::core::option::Option<u64>,
14132    #[prost(uint32, optional, tag = "2")]
14133    pub group: ::core::option::Option<u32>,
14134    #[prost(uint32, optional, tag = "3")]
14135    pub prefetch: ::core::option::Option<u32>,
14136}
14137#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14138pub struct Ext4ReadpageFtraceEvent {
14139    #[prost(uint64, optional, tag = "1")]
14140    pub dev: ::core::option::Option<u64>,
14141    #[prost(uint64, optional, tag = "2")]
14142    pub ino: ::core::option::Option<u64>,
14143    #[prost(uint64, optional, tag = "3")]
14144    pub index: ::core::option::Option<u64>,
14145}
14146#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14147pub struct Ext4ReleasepageFtraceEvent {
14148    #[prost(uint64, optional, tag = "1")]
14149    pub dev: ::core::option::Option<u64>,
14150    #[prost(uint64, optional, tag = "2")]
14151    pub ino: ::core::option::Option<u64>,
14152    #[prost(uint64, optional, tag = "3")]
14153    pub index: ::core::option::Option<u64>,
14154}
14155#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14156pub struct Ext4RemoveBlocksFtraceEvent {
14157    #[prost(uint64, optional, tag = "1")]
14158    pub dev: ::core::option::Option<u64>,
14159    #[prost(uint64, optional, tag = "2")]
14160    pub ino: ::core::option::Option<u64>,
14161    #[prost(uint32, optional, tag = "3")]
14162    pub from: ::core::option::Option<u32>,
14163    #[prost(uint32, optional, tag = "4")]
14164    pub to: ::core::option::Option<u32>,
14165    #[prost(int64, optional, tag = "5")]
14166    pub partial: ::core::option::Option<i64>,
14167    #[prost(uint64, optional, tag = "6")]
14168    pub ee_pblk: ::core::option::Option<u64>,
14169    #[prost(uint32, optional, tag = "7")]
14170    pub ee_lblk: ::core::option::Option<u32>,
14171    #[prost(uint32, optional, tag = "8")]
14172    pub ee_len: ::core::option::Option<u32>,
14173    #[prost(uint32, optional, tag = "9")]
14174    pub pc_lblk: ::core::option::Option<u32>,
14175    #[prost(uint64, optional, tag = "10")]
14176    pub pc_pclu: ::core::option::Option<u64>,
14177    #[prost(int32, optional, tag = "11")]
14178    pub pc_state: ::core::option::Option<i32>,
14179}
14180#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14181pub struct Ext4RequestBlocksFtraceEvent {
14182    #[prost(uint64, optional, tag = "1")]
14183    pub dev: ::core::option::Option<u64>,
14184    #[prost(uint64, optional, tag = "2")]
14185    pub ino: ::core::option::Option<u64>,
14186    #[prost(uint32, optional, tag = "3")]
14187    pub len: ::core::option::Option<u32>,
14188    #[prost(uint32, optional, tag = "4")]
14189    pub logical: ::core::option::Option<u32>,
14190    #[prost(uint32, optional, tag = "5")]
14191    pub lleft: ::core::option::Option<u32>,
14192    #[prost(uint32, optional, tag = "6")]
14193    pub lright: ::core::option::Option<u32>,
14194    #[prost(uint64, optional, tag = "7")]
14195    pub goal: ::core::option::Option<u64>,
14196    #[prost(uint64, optional, tag = "8")]
14197    pub pleft: ::core::option::Option<u64>,
14198    #[prost(uint64, optional, tag = "9")]
14199    pub pright: ::core::option::Option<u64>,
14200    #[prost(uint32, optional, tag = "10")]
14201    pub flags: ::core::option::Option<u32>,
14202}
14203#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14204pub struct Ext4RequestInodeFtraceEvent {
14205    #[prost(uint64, optional, tag = "1")]
14206    pub dev: ::core::option::Option<u64>,
14207    #[prost(uint64, optional, tag = "2")]
14208    pub dir: ::core::option::Option<u64>,
14209    #[prost(uint32, optional, tag = "3")]
14210    pub mode: ::core::option::Option<u32>,
14211}
14212#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14213pub struct Ext4SyncFsFtraceEvent {
14214    #[prost(uint64, optional, tag = "1")]
14215    pub dev: ::core::option::Option<u64>,
14216    #[prost(int32, optional, tag = "2")]
14217    pub wait: ::core::option::Option<i32>,
14218}
14219#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14220pub struct Ext4TrimAllFreeFtraceEvent {
14221    #[prost(int32, optional, tag = "1")]
14222    pub dev_major: ::core::option::Option<i32>,
14223    #[prost(int32, optional, tag = "2")]
14224    pub dev_minor: ::core::option::Option<i32>,
14225    #[prost(uint32, optional, tag = "3")]
14226    pub group: ::core::option::Option<u32>,
14227    #[prost(int32, optional, tag = "4")]
14228    pub start: ::core::option::Option<i32>,
14229    #[prost(int32, optional, tag = "5")]
14230    pub len: ::core::option::Option<i32>,
14231}
14232#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14233pub struct Ext4TrimExtentFtraceEvent {
14234    #[prost(int32, optional, tag = "1")]
14235    pub dev_major: ::core::option::Option<i32>,
14236    #[prost(int32, optional, tag = "2")]
14237    pub dev_minor: ::core::option::Option<i32>,
14238    #[prost(uint32, optional, tag = "3")]
14239    pub group: ::core::option::Option<u32>,
14240    #[prost(int32, optional, tag = "4")]
14241    pub start: ::core::option::Option<i32>,
14242    #[prost(int32, optional, tag = "5")]
14243    pub len: ::core::option::Option<i32>,
14244}
14245#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14246pub struct Ext4TruncateEnterFtraceEvent {
14247    #[prost(uint64, optional, tag = "1")]
14248    pub dev: ::core::option::Option<u64>,
14249    #[prost(uint64, optional, tag = "2")]
14250    pub ino: ::core::option::Option<u64>,
14251    #[prost(uint64, optional, tag = "3")]
14252    pub blocks: ::core::option::Option<u64>,
14253}
14254#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14255pub struct Ext4TruncateExitFtraceEvent {
14256    #[prost(uint64, optional, tag = "1")]
14257    pub dev: ::core::option::Option<u64>,
14258    #[prost(uint64, optional, tag = "2")]
14259    pub ino: ::core::option::Option<u64>,
14260    #[prost(uint64, optional, tag = "3")]
14261    pub blocks: ::core::option::Option<u64>,
14262}
14263#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14264pub struct Ext4UnlinkEnterFtraceEvent {
14265    #[prost(uint64, optional, tag = "1")]
14266    pub dev: ::core::option::Option<u64>,
14267    #[prost(uint64, optional, tag = "2")]
14268    pub ino: ::core::option::Option<u64>,
14269    #[prost(uint64, optional, tag = "3")]
14270    pub parent: ::core::option::Option<u64>,
14271    #[prost(int64, optional, tag = "4")]
14272    pub size: ::core::option::Option<i64>,
14273}
14274#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14275pub struct Ext4UnlinkExitFtraceEvent {
14276    #[prost(uint64, optional, tag = "1")]
14277    pub dev: ::core::option::Option<u64>,
14278    #[prost(uint64, optional, tag = "2")]
14279    pub ino: ::core::option::Option<u64>,
14280    #[prost(int32, optional, tag = "3")]
14281    pub ret: ::core::option::Option<i32>,
14282}
14283#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14284pub struct Ext4WriteBeginFtraceEvent {
14285    #[prost(uint64, optional, tag = "1")]
14286    pub dev: ::core::option::Option<u64>,
14287    #[prost(uint64, optional, tag = "2")]
14288    pub ino: ::core::option::Option<u64>,
14289    #[prost(int64, optional, tag = "3")]
14290    pub pos: ::core::option::Option<i64>,
14291    #[prost(uint32, optional, tag = "4")]
14292    pub len: ::core::option::Option<u32>,
14293    #[prost(uint32, optional, tag = "5")]
14294    pub flags: ::core::option::Option<u32>,
14295}
14296#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14297pub struct Ext4WriteEndFtraceEvent {
14298    #[prost(uint64, optional, tag = "1")]
14299    pub dev: ::core::option::Option<u64>,
14300    #[prost(uint64, optional, tag = "2")]
14301    pub ino: ::core::option::Option<u64>,
14302    #[prost(int64, optional, tag = "3")]
14303    pub pos: ::core::option::Option<i64>,
14304    #[prost(uint32, optional, tag = "4")]
14305    pub len: ::core::option::Option<u32>,
14306    #[prost(uint32, optional, tag = "5")]
14307    pub copied: ::core::option::Option<u32>,
14308}
14309#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14310pub struct Ext4WritepageFtraceEvent {
14311    #[prost(uint64, optional, tag = "1")]
14312    pub dev: ::core::option::Option<u64>,
14313    #[prost(uint64, optional, tag = "2")]
14314    pub ino: ::core::option::Option<u64>,
14315    #[prost(uint64, optional, tag = "3")]
14316    pub index: ::core::option::Option<u64>,
14317}
14318#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14319pub struct Ext4WritepagesFtraceEvent {
14320    #[prost(uint64, optional, tag = "1")]
14321    pub dev: ::core::option::Option<u64>,
14322    #[prost(uint64, optional, tag = "2")]
14323    pub ino: ::core::option::Option<u64>,
14324    #[prost(int64, optional, tag = "3")]
14325    pub nr_to_write: ::core::option::Option<i64>,
14326    #[prost(int64, optional, tag = "4")]
14327    pub pages_skipped: ::core::option::Option<i64>,
14328    #[prost(int64, optional, tag = "5")]
14329    pub range_start: ::core::option::Option<i64>,
14330    #[prost(int64, optional, tag = "6")]
14331    pub range_end: ::core::option::Option<i64>,
14332    #[prost(uint64, optional, tag = "7")]
14333    pub writeback_index: ::core::option::Option<u64>,
14334    #[prost(int32, optional, tag = "8")]
14335    pub sync_mode: ::core::option::Option<i32>,
14336    #[prost(uint32, optional, tag = "9")]
14337    pub for_kupdate: ::core::option::Option<u32>,
14338    #[prost(uint32, optional, tag = "10")]
14339    pub range_cyclic: ::core::option::Option<u32>,
14340}
14341#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14342pub struct Ext4WritepagesResultFtraceEvent {
14343    #[prost(uint64, optional, tag = "1")]
14344    pub dev: ::core::option::Option<u64>,
14345    #[prost(uint64, optional, tag = "2")]
14346    pub ino: ::core::option::Option<u64>,
14347    #[prost(int32, optional, tag = "3")]
14348    pub ret: ::core::option::Option<i32>,
14349    #[prost(int32, optional, tag = "4")]
14350    pub pages_written: ::core::option::Option<i32>,
14351    #[prost(int64, optional, tag = "5")]
14352    pub pages_skipped: ::core::option::Option<i64>,
14353    #[prost(uint64, optional, tag = "6")]
14354    pub writeback_index: ::core::option::Option<u64>,
14355    #[prost(int32, optional, tag = "7")]
14356    pub sync_mode: ::core::option::Option<i32>,
14357}
14358#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14359pub struct Ext4ZeroRangeFtraceEvent {
14360    #[prost(uint64, optional, tag = "1")]
14361    pub dev: ::core::option::Option<u64>,
14362    #[prost(uint64, optional, tag = "2")]
14363    pub ino: ::core::option::Option<u64>,
14364    #[prost(int64, optional, tag = "3")]
14365    pub offset: ::core::option::Option<i64>,
14366    #[prost(int64, optional, tag = "4")]
14367    pub len: ::core::option::Option<i64>,
14368    #[prost(int32, optional, tag = "5")]
14369    pub mode: ::core::option::Option<i32>,
14370}
14371#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14372pub struct F2fsDoSubmitBioFtraceEvent {
14373    #[prost(uint64, optional, tag = "1")]
14374    pub dev: ::core::option::Option<u64>,
14375    #[prost(int32, optional, tag = "2")]
14376    pub btype: ::core::option::Option<i32>,
14377    #[prost(uint32, optional, tag = "3")]
14378    pub sync: ::core::option::Option<u32>,
14379    #[prost(uint64, optional, tag = "4")]
14380    pub sector: ::core::option::Option<u64>,
14381    #[prost(uint32, optional, tag = "5")]
14382    pub size: ::core::option::Option<u32>,
14383}
14384#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14385pub struct F2fsEvictInodeFtraceEvent {
14386    #[prost(uint64, optional, tag = "1")]
14387    pub dev: ::core::option::Option<u64>,
14388    #[prost(uint64, optional, tag = "2")]
14389    pub ino: ::core::option::Option<u64>,
14390    #[prost(uint64, optional, tag = "3")]
14391    pub pino: ::core::option::Option<u64>,
14392    #[prost(uint32, optional, tag = "4")]
14393    pub mode: ::core::option::Option<u32>,
14394    #[prost(int64, optional, tag = "5")]
14395    pub size: ::core::option::Option<i64>,
14396    #[prost(uint32, optional, tag = "6")]
14397    pub nlink: ::core::option::Option<u32>,
14398    #[prost(uint64, optional, tag = "7")]
14399    pub blocks: ::core::option::Option<u64>,
14400    #[prost(uint32, optional, tag = "8")]
14401    pub advise: ::core::option::Option<u32>,
14402}
14403#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14404pub struct F2fsFallocateFtraceEvent {
14405    #[prost(uint64, optional, tag = "1")]
14406    pub dev: ::core::option::Option<u64>,
14407    #[prost(uint64, optional, tag = "2")]
14408    pub ino: ::core::option::Option<u64>,
14409    #[prost(int32, optional, tag = "3")]
14410    pub mode: ::core::option::Option<i32>,
14411    #[prost(int64, optional, tag = "4")]
14412    pub offset: ::core::option::Option<i64>,
14413    #[prost(int64, optional, tag = "5")]
14414    pub len: ::core::option::Option<i64>,
14415    #[prost(int64, optional, tag = "6")]
14416    pub size: ::core::option::Option<i64>,
14417    #[prost(uint64, optional, tag = "7")]
14418    pub blocks: ::core::option::Option<u64>,
14419    #[prost(int32, optional, tag = "8")]
14420    pub ret: ::core::option::Option<i32>,
14421}
14422#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14423pub struct F2fsGetDataBlockFtraceEvent {
14424    #[prost(uint64, optional, tag = "1")]
14425    pub dev: ::core::option::Option<u64>,
14426    #[prost(uint64, optional, tag = "2")]
14427    pub ino: ::core::option::Option<u64>,
14428    #[prost(uint64, optional, tag = "3")]
14429    pub iblock: ::core::option::Option<u64>,
14430    #[prost(uint64, optional, tag = "4")]
14431    pub bh_start: ::core::option::Option<u64>,
14432    #[prost(uint64, optional, tag = "5")]
14433    pub bh_size: ::core::option::Option<u64>,
14434    #[prost(int32, optional, tag = "6")]
14435    pub ret: ::core::option::Option<i32>,
14436}
14437#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14438pub struct F2fsGetVictimFtraceEvent {
14439    #[prost(uint64, optional, tag = "1")]
14440    pub dev: ::core::option::Option<u64>,
14441    #[prost(int32, optional, tag = "2")]
14442    pub r#type: ::core::option::Option<i32>,
14443    #[prost(int32, optional, tag = "3")]
14444    pub gc_type: ::core::option::Option<i32>,
14445    #[prost(int32, optional, tag = "4")]
14446    pub alloc_mode: ::core::option::Option<i32>,
14447    #[prost(int32, optional, tag = "5")]
14448    pub gc_mode: ::core::option::Option<i32>,
14449    #[prost(uint32, optional, tag = "6")]
14450    pub victim: ::core::option::Option<u32>,
14451    #[prost(uint32, optional, tag = "7")]
14452    pub ofs_unit: ::core::option::Option<u32>,
14453    #[prost(uint32, optional, tag = "8")]
14454    pub pre_victim: ::core::option::Option<u32>,
14455    #[prost(uint32, optional, tag = "9")]
14456    pub prefree: ::core::option::Option<u32>,
14457    #[prost(uint32, optional, tag = "10")]
14458    pub free: ::core::option::Option<u32>,
14459    #[prost(uint32, optional, tag = "11")]
14460    pub cost: ::core::option::Option<u32>,
14461}
14462#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14463pub struct F2fsIgetFtraceEvent {
14464    #[prost(uint64, optional, tag = "1")]
14465    pub dev: ::core::option::Option<u64>,
14466    #[prost(uint64, optional, tag = "2")]
14467    pub ino: ::core::option::Option<u64>,
14468    #[prost(uint64, optional, tag = "3")]
14469    pub pino: ::core::option::Option<u64>,
14470    #[prost(uint32, optional, tag = "4")]
14471    pub mode: ::core::option::Option<u32>,
14472    #[prost(int64, optional, tag = "5")]
14473    pub size: ::core::option::Option<i64>,
14474    #[prost(uint32, optional, tag = "6")]
14475    pub nlink: ::core::option::Option<u32>,
14476    #[prost(uint64, optional, tag = "7")]
14477    pub blocks: ::core::option::Option<u64>,
14478    #[prost(uint32, optional, tag = "8")]
14479    pub advise: ::core::option::Option<u32>,
14480}
14481#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14482pub struct F2fsIgetExitFtraceEvent {
14483    #[prost(uint64, optional, tag = "1")]
14484    pub dev: ::core::option::Option<u64>,
14485    #[prost(uint64, optional, tag = "2")]
14486    pub ino: ::core::option::Option<u64>,
14487    #[prost(int32, optional, tag = "3")]
14488    pub ret: ::core::option::Option<i32>,
14489}
14490#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14491pub struct F2fsNewInodeFtraceEvent {
14492    #[prost(uint64, optional, tag = "1")]
14493    pub dev: ::core::option::Option<u64>,
14494    #[prost(uint64, optional, tag = "2")]
14495    pub ino: ::core::option::Option<u64>,
14496    #[prost(int32, optional, tag = "3")]
14497    pub ret: ::core::option::Option<i32>,
14498}
14499#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14500pub struct F2fsReadpageFtraceEvent {
14501    #[prost(uint64, optional, tag = "1")]
14502    pub dev: ::core::option::Option<u64>,
14503    #[prost(uint64, optional, tag = "2")]
14504    pub ino: ::core::option::Option<u64>,
14505    #[prost(uint64, optional, tag = "3")]
14506    pub index: ::core::option::Option<u64>,
14507    #[prost(uint64, optional, tag = "4")]
14508    pub blkaddr: ::core::option::Option<u64>,
14509    #[prost(int32, optional, tag = "5")]
14510    pub r#type: ::core::option::Option<i32>,
14511    #[prost(int32, optional, tag = "6")]
14512    pub dir: ::core::option::Option<i32>,
14513    #[prost(int32, optional, tag = "7")]
14514    pub dirty: ::core::option::Option<i32>,
14515    #[prost(int32, optional, tag = "8")]
14516    pub uptodate: ::core::option::Option<i32>,
14517}
14518#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14519pub struct F2fsReserveNewBlockFtraceEvent {
14520    #[prost(uint64, optional, tag = "1")]
14521    pub dev: ::core::option::Option<u64>,
14522    #[prost(uint32, optional, tag = "2")]
14523    pub nid: ::core::option::Option<u32>,
14524    #[prost(uint32, optional, tag = "3")]
14525    pub ofs_in_node: ::core::option::Option<u32>,
14526}
14527#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14528pub struct F2fsSetPageDirtyFtraceEvent {
14529    #[prost(uint64, optional, tag = "1")]
14530    pub dev: ::core::option::Option<u64>,
14531    #[prost(uint64, optional, tag = "2")]
14532    pub ino: ::core::option::Option<u64>,
14533    #[prost(int32, optional, tag = "3")]
14534    pub r#type: ::core::option::Option<i32>,
14535    #[prost(int32, optional, tag = "4")]
14536    pub dir: ::core::option::Option<i32>,
14537    #[prost(uint64, optional, tag = "5")]
14538    pub index: ::core::option::Option<u64>,
14539    #[prost(int32, optional, tag = "6")]
14540    pub dirty: ::core::option::Option<i32>,
14541    #[prost(int32, optional, tag = "7")]
14542    pub uptodate: ::core::option::Option<i32>,
14543}
14544#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14545pub struct F2fsSubmitWritePageFtraceEvent {
14546    #[prost(uint64, optional, tag = "1")]
14547    pub dev: ::core::option::Option<u64>,
14548    #[prost(uint64, optional, tag = "2")]
14549    pub ino: ::core::option::Option<u64>,
14550    #[prost(int32, optional, tag = "3")]
14551    pub r#type: ::core::option::Option<i32>,
14552    #[prost(uint64, optional, tag = "4")]
14553    pub index: ::core::option::Option<u64>,
14554    #[prost(uint32, optional, tag = "5")]
14555    pub block: ::core::option::Option<u32>,
14556}
14557#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14558pub struct F2fsSyncFileEnterFtraceEvent {
14559    #[prost(uint64, optional, tag = "1")]
14560    pub dev: ::core::option::Option<u64>,
14561    #[prost(uint64, optional, tag = "2")]
14562    pub ino: ::core::option::Option<u64>,
14563    #[prost(uint64, optional, tag = "3")]
14564    pub pino: ::core::option::Option<u64>,
14565    #[prost(uint32, optional, tag = "4")]
14566    pub mode: ::core::option::Option<u32>,
14567    #[prost(int64, optional, tag = "5")]
14568    pub size: ::core::option::Option<i64>,
14569    #[prost(uint32, optional, tag = "6")]
14570    pub nlink: ::core::option::Option<u32>,
14571    #[prost(uint64, optional, tag = "7")]
14572    pub blocks: ::core::option::Option<u64>,
14573    #[prost(uint32, optional, tag = "8")]
14574    pub advise: ::core::option::Option<u32>,
14575}
14576#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14577pub struct F2fsSyncFileExitFtraceEvent {
14578    #[prost(uint64, optional, tag = "1")]
14579    pub dev: ::core::option::Option<u64>,
14580    #[prost(uint64, optional, tag = "2")]
14581    pub ino: ::core::option::Option<u64>,
14582    #[prost(uint32, optional, tag = "3")]
14583    pub need_cp: ::core::option::Option<u32>,
14584    #[prost(int32, optional, tag = "4")]
14585    pub datasync: ::core::option::Option<i32>,
14586    #[prost(int32, optional, tag = "5")]
14587    pub ret: ::core::option::Option<i32>,
14588    #[prost(int32, optional, tag = "6")]
14589    pub cp_reason: ::core::option::Option<i32>,
14590}
14591#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14592pub struct F2fsSyncFsFtraceEvent {
14593    #[prost(uint64, optional, tag = "1")]
14594    pub dev: ::core::option::Option<u64>,
14595    #[prost(int32, optional, tag = "2")]
14596    pub dirty: ::core::option::Option<i32>,
14597    #[prost(int32, optional, tag = "3")]
14598    pub wait: ::core::option::Option<i32>,
14599}
14600#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14601pub struct F2fsTruncateFtraceEvent {
14602    #[prost(uint64, optional, tag = "1")]
14603    pub dev: ::core::option::Option<u64>,
14604    #[prost(uint64, optional, tag = "2")]
14605    pub ino: ::core::option::Option<u64>,
14606    #[prost(uint64, optional, tag = "3")]
14607    pub pino: ::core::option::Option<u64>,
14608    #[prost(uint32, optional, tag = "4")]
14609    pub mode: ::core::option::Option<u32>,
14610    #[prost(int64, optional, tag = "5")]
14611    pub size: ::core::option::Option<i64>,
14612    #[prost(uint32, optional, tag = "6")]
14613    pub nlink: ::core::option::Option<u32>,
14614    #[prost(uint64, optional, tag = "7")]
14615    pub blocks: ::core::option::Option<u64>,
14616    #[prost(uint32, optional, tag = "8")]
14617    pub advise: ::core::option::Option<u32>,
14618}
14619#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14620pub struct F2fsTruncateBlocksEnterFtraceEvent {
14621    #[prost(uint64, optional, tag = "1")]
14622    pub dev: ::core::option::Option<u64>,
14623    #[prost(uint64, optional, tag = "2")]
14624    pub ino: ::core::option::Option<u64>,
14625    #[prost(int64, optional, tag = "3")]
14626    pub size: ::core::option::Option<i64>,
14627    #[prost(uint64, optional, tag = "4")]
14628    pub blocks: ::core::option::Option<u64>,
14629    #[prost(uint64, optional, tag = "5")]
14630    pub from: ::core::option::Option<u64>,
14631}
14632#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14633pub struct F2fsTruncateBlocksExitFtraceEvent {
14634    #[prost(uint64, optional, tag = "1")]
14635    pub dev: ::core::option::Option<u64>,
14636    #[prost(uint64, optional, tag = "2")]
14637    pub ino: ::core::option::Option<u64>,
14638    #[prost(int32, optional, tag = "3")]
14639    pub ret: ::core::option::Option<i32>,
14640}
14641#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14642pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
14643    #[prost(uint64, optional, tag = "1")]
14644    pub dev: ::core::option::Option<u64>,
14645    #[prost(uint64, optional, tag = "2")]
14646    pub ino: ::core::option::Option<u64>,
14647    #[prost(uint32, optional, tag = "3")]
14648    pub nid: ::core::option::Option<u32>,
14649    #[prost(uint32, optional, tag = "4")]
14650    pub ofs: ::core::option::Option<u32>,
14651    #[prost(int32, optional, tag = "5")]
14652    pub free: ::core::option::Option<i32>,
14653}
14654#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14655pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
14656    #[prost(uint64, optional, tag = "1")]
14657    pub dev: ::core::option::Option<u64>,
14658    #[prost(uint64, optional, tag = "2")]
14659    pub ino: ::core::option::Option<u64>,
14660    #[prost(int64, optional, tag = "3")]
14661    pub size: ::core::option::Option<i64>,
14662    #[prost(uint64, optional, tag = "4")]
14663    pub blocks: ::core::option::Option<u64>,
14664    #[prost(uint64, optional, tag = "5")]
14665    pub from: ::core::option::Option<u64>,
14666}
14667#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14668pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
14669    #[prost(uint64, optional, tag = "1")]
14670    pub dev: ::core::option::Option<u64>,
14671    #[prost(uint64, optional, tag = "2")]
14672    pub ino: ::core::option::Option<u64>,
14673    #[prost(int32, optional, tag = "3")]
14674    pub ret: ::core::option::Option<i32>,
14675}
14676#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14677pub struct F2fsTruncateNodeFtraceEvent {
14678    #[prost(uint64, optional, tag = "1")]
14679    pub dev: ::core::option::Option<u64>,
14680    #[prost(uint64, optional, tag = "2")]
14681    pub ino: ::core::option::Option<u64>,
14682    #[prost(uint32, optional, tag = "3")]
14683    pub nid: ::core::option::Option<u32>,
14684    #[prost(uint32, optional, tag = "4")]
14685    pub blk_addr: ::core::option::Option<u32>,
14686}
14687#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14688pub struct F2fsTruncateNodesEnterFtraceEvent {
14689    #[prost(uint64, optional, tag = "1")]
14690    pub dev: ::core::option::Option<u64>,
14691    #[prost(uint64, optional, tag = "2")]
14692    pub ino: ::core::option::Option<u64>,
14693    #[prost(uint32, optional, tag = "3")]
14694    pub nid: ::core::option::Option<u32>,
14695    #[prost(uint32, optional, tag = "4")]
14696    pub blk_addr: ::core::option::Option<u32>,
14697}
14698#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14699pub struct F2fsTruncateNodesExitFtraceEvent {
14700    #[prost(uint64, optional, tag = "1")]
14701    pub dev: ::core::option::Option<u64>,
14702    #[prost(uint64, optional, tag = "2")]
14703    pub ino: ::core::option::Option<u64>,
14704    #[prost(int32, optional, tag = "3")]
14705    pub ret: ::core::option::Option<i32>,
14706}
14707#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14708pub struct F2fsTruncatePartialNodesFtraceEvent {
14709    #[prost(uint64, optional, tag = "1")]
14710    pub dev: ::core::option::Option<u64>,
14711    #[prost(uint64, optional, tag = "2")]
14712    pub ino: ::core::option::Option<u64>,
14713    #[prost(uint32, optional, tag = "3")]
14714    pub nid: ::core::option::Option<u32>,
14715    #[prost(int32, optional, tag = "4")]
14716    pub depth: ::core::option::Option<i32>,
14717    #[prost(int32, optional, tag = "5")]
14718    pub err: ::core::option::Option<i32>,
14719}
14720#[derive(Clone, PartialEq, ::prost::Message)]
14721pub struct F2fsUnlinkEnterFtraceEvent {
14722    #[prost(uint64, optional, tag = "1")]
14723    pub dev: ::core::option::Option<u64>,
14724    #[prost(uint64, optional, tag = "2")]
14725    pub ino: ::core::option::Option<u64>,
14726    #[prost(int64, optional, tag = "3")]
14727    pub size: ::core::option::Option<i64>,
14728    #[prost(uint64, optional, tag = "4")]
14729    pub blocks: ::core::option::Option<u64>,
14730    #[prost(string, optional, tag = "5")]
14731    pub name: ::core::option::Option<::prost::alloc::string::String>,
14732}
14733#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14734pub struct F2fsUnlinkExitFtraceEvent {
14735    #[prost(uint64, optional, tag = "1")]
14736    pub dev: ::core::option::Option<u64>,
14737    #[prost(uint64, optional, tag = "2")]
14738    pub ino: ::core::option::Option<u64>,
14739    #[prost(int32, optional, tag = "3")]
14740    pub ret: ::core::option::Option<i32>,
14741}
14742#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14743pub struct F2fsVmPageMkwriteFtraceEvent {
14744    #[prost(uint64, optional, tag = "1")]
14745    pub dev: ::core::option::Option<u64>,
14746    #[prost(uint64, optional, tag = "2")]
14747    pub ino: ::core::option::Option<u64>,
14748    #[prost(int32, optional, tag = "3")]
14749    pub r#type: ::core::option::Option<i32>,
14750    #[prost(int32, optional, tag = "4")]
14751    pub dir: ::core::option::Option<i32>,
14752    #[prost(uint64, optional, tag = "5")]
14753    pub index: ::core::option::Option<u64>,
14754    #[prost(int32, optional, tag = "6")]
14755    pub dirty: ::core::option::Option<i32>,
14756    #[prost(int32, optional, tag = "7")]
14757    pub uptodate: ::core::option::Option<i32>,
14758}
14759#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14760pub struct F2fsWriteBeginFtraceEvent {
14761    #[prost(uint64, optional, tag = "1")]
14762    pub dev: ::core::option::Option<u64>,
14763    #[prost(uint64, optional, tag = "2")]
14764    pub ino: ::core::option::Option<u64>,
14765    #[prost(int64, optional, tag = "3")]
14766    pub pos: ::core::option::Option<i64>,
14767    #[prost(uint32, optional, tag = "4")]
14768    pub len: ::core::option::Option<u32>,
14769    #[prost(uint32, optional, tag = "5")]
14770    pub flags: ::core::option::Option<u32>,
14771}
14772#[derive(Clone, PartialEq, ::prost::Message)]
14773pub struct F2fsWriteCheckpointFtraceEvent {
14774    #[prost(uint64, optional, tag = "1")]
14775    pub dev: ::core::option::Option<u64>,
14776    #[prost(uint32, optional, tag = "2")]
14777    pub is_umount: ::core::option::Option<u32>,
14778    #[prost(string, optional, tag = "3")]
14779    pub msg: ::core::option::Option<::prost::alloc::string::String>,
14780    #[prost(int32, optional, tag = "4")]
14781    pub reason: ::core::option::Option<i32>,
14782}
14783#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14784pub struct F2fsWriteEndFtraceEvent {
14785    #[prost(uint64, optional, tag = "1")]
14786    pub dev: ::core::option::Option<u64>,
14787    #[prost(uint64, optional, tag = "2")]
14788    pub ino: ::core::option::Option<u64>,
14789    #[prost(int64, optional, tag = "3")]
14790    pub pos: ::core::option::Option<i64>,
14791    #[prost(uint32, optional, tag = "4")]
14792    pub len: ::core::option::Option<u32>,
14793    #[prost(uint32, optional, tag = "5")]
14794    pub copied: ::core::option::Option<u32>,
14795}
14796#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14797pub struct F2fsIostatFtraceEvent {
14798    #[prost(uint64, optional, tag = "1")]
14799    pub app_bio: ::core::option::Option<u64>,
14800    #[prost(uint64, optional, tag = "2")]
14801    pub app_brio: ::core::option::Option<u64>,
14802    #[prost(uint64, optional, tag = "3")]
14803    pub app_dio: ::core::option::Option<u64>,
14804    #[prost(uint64, optional, tag = "4")]
14805    pub app_drio: ::core::option::Option<u64>,
14806    #[prost(uint64, optional, tag = "5")]
14807    pub app_mio: ::core::option::Option<u64>,
14808    #[prost(uint64, optional, tag = "6")]
14809    pub app_mrio: ::core::option::Option<u64>,
14810    #[prost(uint64, optional, tag = "7")]
14811    pub app_rio: ::core::option::Option<u64>,
14812    #[prost(uint64, optional, tag = "8")]
14813    pub app_wio: ::core::option::Option<u64>,
14814    #[prost(uint64, optional, tag = "9")]
14815    pub dev: ::core::option::Option<u64>,
14816    #[prost(uint64, optional, tag = "10")]
14817    pub fs_cdrio: ::core::option::Option<u64>,
14818    #[prost(uint64, optional, tag = "11")]
14819    pub fs_cp_dio: ::core::option::Option<u64>,
14820    #[prost(uint64, optional, tag = "12")]
14821    pub fs_cp_mio: ::core::option::Option<u64>,
14822    #[prost(uint64, optional, tag = "13")]
14823    pub fs_cp_nio: ::core::option::Option<u64>,
14824    #[prost(uint64, optional, tag = "14")]
14825    pub fs_dio: ::core::option::Option<u64>,
14826    #[prost(uint64, optional, tag = "15")]
14827    pub fs_discard: ::core::option::Option<u64>,
14828    #[prost(uint64, optional, tag = "16")]
14829    pub fs_drio: ::core::option::Option<u64>,
14830    #[prost(uint64, optional, tag = "17")]
14831    pub fs_gc_dio: ::core::option::Option<u64>,
14832    #[prost(uint64, optional, tag = "18")]
14833    pub fs_gc_nio: ::core::option::Option<u64>,
14834    #[prost(uint64, optional, tag = "19")]
14835    pub fs_gdrio: ::core::option::Option<u64>,
14836    #[prost(uint64, optional, tag = "20")]
14837    pub fs_mio: ::core::option::Option<u64>,
14838    #[prost(uint64, optional, tag = "21")]
14839    pub fs_mrio: ::core::option::Option<u64>,
14840    #[prost(uint64, optional, tag = "22")]
14841    pub fs_nio: ::core::option::Option<u64>,
14842    #[prost(uint64, optional, tag = "23")]
14843    pub fs_nrio: ::core::option::Option<u64>,
14844}
14845#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14846pub struct F2fsIostatLatencyFtraceEvent {
14847    #[prost(uint32, optional, tag = "1")]
14848    pub d_rd_avg: ::core::option::Option<u32>,
14849    #[prost(uint32, optional, tag = "2")]
14850    pub d_rd_cnt: ::core::option::Option<u32>,
14851    #[prost(uint32, optional, tag = "3")]
14852    pub d_rd_peak: ::core::option::Option<u32>,
14853    #[prost(uint32, optional, tag = "4")]
14854    pub d_wr_as_avg: ::core::option::Option<u32>,
14855    #[prost(uint32, optional, tag = "5")]
14856    pub d_wr_as_cnt: ::core::option::Option<u32>,
14857    #[prost(uint32, optional, tag = "6")]
14858    pub d_wr_as_peak: ::core::option::Option<u32>,
14859    #[prost(uint32, optional, tag = "7")]
14860    pub d_wr_s_avg: ::core::option::Option<u32>,
14861    #[prost(uint32, optional, tag = "8")]
14862    pub d_wr_s_cnt: ::core::option::Option<u32>,
14863    #[prost(uint32, optional, tag = "9")]
14864    pub d_wr_s_peak: ::core::option::Option<u32>,
14865    #[prost(uint64, optional, tag = "10")]
14866    pub dev: ::core::option::Option<u64>,
14867    #[prost(uint32, optional, tag = "11")]
14868    pub m_rd_avg: ::core::option::Option<u32>,
14869    #[prost(uint32, optional, tag = "12")]
14870    pub m_rd_cnt: ::core::option::Option<u32>,
14871    #[prost(uint32, optional, tag = "13")]
14872    pub m_rd_peak: ::core::option::Option<u32>,
14873    #[prost(uint32, optional, tag = "14")]
14874    pub m_wr_as_avg: ::core::option::Option<u32>,
14875    #[prost(uint32, optional, tag = "15")]
14876    pub m_wr_as_cnt: ::core::option::Option<u32>,
14877    #[prost(uint32, optional, tag = "16")]
14878    pub m_wr_as_peak: ::core::option::Option<u32>,
14879    #[prost(uint32, optional, tag = "17")]
14880    pub m_wr_s_avg: ::core::option::Option<u32>,
14881    #[prost(uint32, optional, tag = "18")]
14882    pub m_wr_s_cnt: ::core::option::Option<u32>,
14883    #[prost(uint32, optional, tag = "19")]
14884    pub m_wr_s_peak: ::core::option::Option<u32>,
14885    #[prost(uint32, optional, tag = "20")]
14886    pub n_rd_avg: ::core::option::Option<u32>,
14887    #[prost(uint32, optional, tag = "21")]
14888    pub n_rd_cnt: ::core::option::Option<u32>,
14889    #[prost(uint32, optional, tag = "22")]
14890    pub n_rd_peak: ::core::option::Option<u32>,
14891    #[prost(uint32, optional, tag = "23")]
14892    pub n_wr_as_avg: ::core::option::Option<u32>,
14893    #[prost(uint32, optional, tag = "24")]
14894    pub n_wr_as_cnt: ::core::option::Option<u32>,
14895    #[prost(uint32, optional, tag = "25")]
14896    pub n_wr_as_peak: ::core::option::Option<u32>,
14897    #[prost(uint32, optional, tag = "26")]
14898    pub n_wr_s_avg: ::core::option::Option<u32>,
14899    #[prost(uint32, optional, tag = "27")]
14900    pub n_wr_s_cnt: ::core::option::Option<u32>,
14901    #[prost(uint32, optional, tag = "28")]
14902    pub n_wr_s_peak: ::core::option::Option<u32>,
14903}
14904#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14905pub struct F2fsBackgroundGcFtraceEvent {
14906    #[prost(uint64, optional, tag = "1")]
14907    pub dev: ::core::option::Option<u64>,
14908    #[prost(uint32, optional, tag = "2")]
14909    pub wait_ms: ::core::option::Option<u32>,
14910    #[prost(uint32, optional, tag = "3")]
14911    pub prefree: ::core::option::Option<u32>,
14912    #[prost(uint32, optional, tag = "4")]
14913    pub free: ::core::option::Option<u32>,
14914}
14915#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14916pub struct F2fsGcBeginFtraceEvent {
14917    #[prost(uint64, optional, tag = "1")]
14918    pub dev: ::core::option::Option<u64>,
14919    #[prost(uint32, optional, tag = "2")]
14920    pub sync: ::core::option::Option<u32>,
14921    #[prost(uint32, optional, tag = "3")]
14922    pub background: ::core::option::Option<u32>,
14923    #[prost(int64, optional, tag = "4")]
14924    pub dirty_nodes: ::core::option::Option<i64>,
14925    #[prost(int64, optional, tag = "5")]
14926    pub dirty_dents: ::core::option::Option<i64>,
14927    #[prost(int64, optional, tag = "6")]
14928    pub dirty_imeta: ::core::option::Option<i64>,
14929    #[prost(uint32, optional, tag = "7")]
14930    pub free_sec: ::core::option::Option<u32>,
14931    #[prost(uint32, optional, tag = "8")]
14932    pub free_seg: ::core::option::Option<u32>,
14933    #[prost(int32, optional, tag = "9")]
14934    pub reserved_seg: ::core::option::Option<i32>,
14935    #[prost(uint32, optional, tag = "10")]
14936    pub prefree_seg: ::core::option::Option<u32>,
14937    #[prost(int32, optional, tag = "11")]
14938    pub gc_type: ::core::option::Option<i32>,
14939    #[prost(uint32, optional, tag = "12")]
14940    pub no_bg_gc: ::core::option::Option<u32>,
14941    #[prost(uint32, optional, tag = "13")]
14942    pub nr_free_secs: ::core::option::Option<u32>,
14943}
14944#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14945pub struct F2fsGcEndFtraceEvent {
14946    #[prost(uint64, optional, tag = "1")]
14947    pub dev: ::core::option::Option<u64>,
14948    #[prost(int32, optional, tag = "2")]
14949    pub ret: ::core::option::Option<i32>,
14950    #[prost(int32, optional, tag = "3")]
14951    pub seg_freed: ::core::option::Option<i32>,
14952    #[prost(int32, optional, tag = "4")]
14953    pub sec_freed: ::core::option::Option<i32>,
14954    #[prost(int64, optional, tag = "5")]
14955    pub dirty_nodes: ::core::option::Option<i64>,
14956    #[prost(int64, optional, tag = "6")]
14957    pub dirty_dents: ::core::option::Option<i64>,
14958    #[prost(int64, optional, tag = "7")]
14959    pub dirty_imeta: ::core::option::Option<i64>,
14960    #[prost(uint32, optional, tag = "8")]
14961    pub free_sec: ::core::option::Option<u32>,
14962    #[prost(uint32, optional, tag = "9")]
14963    pub free_seg: ::core::option::Option<u32>,
14964    #[prost(int32, optional, tag = "10")]
14965    pub reserved_seg: ::core::option::Option<i32>,
14966    #[prost(uint32, optional, tag = "11")]
14967    pub prefree_seg: ::core::option::Option<u32>,
14968}
14969#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14970pub struct FastrpcDmaStatFtraceEvent {
14971    #[prost(int32, optional, tag = "1")]
14972    pub cid: ::core::option::Option<i32>,
14973    #[prost(int64, optional, tag = "2")]
14974    pub len: ::core::option::Option<i64>,
14975    #[prost(uint64, optional, tag = "3")]
14976    pub total_allocated: ::core::option::Option<u64>,
14977}
14978#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14979pub struct FastrpcDmaFreeFtraceEvent {
14980    #[prost(int32, optional, tag = "1")]
14981    pub cid: ::core::option::Option<i32>,
14982    #[prost(uint64, optional, tag = "2")]
14983    pub phys: ::core::option::Option<u64>,
14984    #[prost(uint64, optional, tag = "3")]
14985    pub size: ::core::option::Option<u64>,
14986}
14987#[derive(Clone, Copy, PartialEq, ::prost::Message)]
14988pub struct FastrpcDmaAllocFtraceEvent {
14989    #[prost(int32, optional, tag = "1")]
14990    pub cid: ::core::option::Option<i32>,
14991    #[prost(uint64, optional, tag = "2")]
14992    pub phys: ::core::option::Option<u64>,
14993    #[prost(uint64, optional, tag = "3")]
14994    pub size: ::core::option::Option<u64>,
14995    #[prost(uint64, optional, tag = "4")]
14996    pub attr: ::core::option::Option<u64>,
14997    #[prost(int32, optional, tag = "5")]
14998    pub mflags: ::core::option::Option<i32>,
14999}
15000#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15001pub struct FastrpcDmaUnmapFtraceEvent {
15002    #[prost(int32, optional, tag = "1")]
15003    pub cid: ::core::option::Option<i32>,
15004    #[prost(uint64, optional, tag = "2")]
15005    pub phys: ::core::option::Option<u64>,
15006    #[prost(uint64, optional, tag = "3")]
15007    pub size: ::core::option::Option<u64>,
15008}
15009#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15010pub struct FastrpcDmaMapFtraceEvent {
15011    #[prost(int32, optional, tag = "1")]
15012    pub cid: ::core::option::Option<i32>,
15013    #[prost(int32, optional, tag = "2")]
15014    pub fd: ::core::option::Option<i32>,
15015    #[prost(uint64, optional, tag = "3")]
15016    pub phys: ::core::option::Option<u64>,
15017    #[prost(uint64, optional, tag = "4")]
15018    pub size: ::core::option::Option<u64>,
15019    #[prost(uint64, optional, tag = "5")]
15020    pub len: ::core::option::Option<u64>,
15021    #[prost(uint32, optional, tag = "6")]
15022    pub attr: ::core::option::Option<u32>,
15023    #[prost(int32, optional, tag = "7")]
15024    pub mflags: ::core::option::Option<i32>,
15025}
15026#[derive(Clone, PartialEq, ::prost::Message)]
15027pub struct FenceInitFtraceEvent {
15028    #[prost(uint32, optional, tag = "1")]
15029    pub context: ::core::option::Option<u32>,
15030    #[prost(string, optional, tag = "2")]
15031    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15032    #[prost(uint32, optional, tag = "3")]
15033    pub seqno: ::core::option::Option<u32>,
15034    #[prost(string, optional, tag = "4")]
15035    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
15036}
15037#[derive(Clone, PartialEq, ::prost::Message)]
15038pub struct FenceDestroyFtraceEvent {
15039    #[prost(uint32, optional, tag = "1")]
15040    pub context: ::core::option::Option<u32>,
15041    #[prost(string, optional, tag = "2")]
15042    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15043    #[prost(uint32, optional, tag = "3")]
15044    pub seqno: ::core::option::Option<u32>,
15045    #[prost(string, optional, tag = "4")]
15046    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
15047}
15048#[derive(Clone, PartialEq, ::prost::Message)]
15049pub struct FenceEnableSignalFtraceEvent {
15050    #[prost(uint32, optional, tag = "1")]
15051    pub context: ::core::option::Option<u32>,
15052    #[prost(string, optional, tag = "2")]
15053    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15054    #[prost(uint32, optional, tag = "3")]
15055    pub seqno: ::core::option::Option<u32>,
15056    #[prost(string, optional, tag = "4")]
15057    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
15058}
15059#[derive(Clone, PartialEq, ::prost::Message)]
15060pub struct FenceSignaledFtraceEvent {
15061    #[prost(uint32, optional, tag = "1")]
15062    pub context: ::core::option::Option<u32>,
15063    #[prost(string, optional, tag = "2")]
15064    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15065    #[prost(uint32, optional, tag = "3")]
15066    pub seqno: ::core::option::Option<u32>,
15067    #[prost(string, optional, tag = "4")]
15068    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
15069}
15070#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15071pub struct MmFilemapAddToPageCacheFtraceEvent {
15072    #[prost(uint64, optional, tag = "1")]
15073    pub pfn: ::core::option::Option<u64>,
15074    #[prost(uint64, optional, tag = "2")]
15075    pub i_ino: ::core::option::Option<u64>,
15076    #[prost(uint64, optional, tag = "3")]
15077    pub index: ::core::option::Option<u64>,
15078    #[prost(uint64, optional, tag = "4")]
15079    pub s_dev: ::core::option::Option<u64>,
15080    #[prost(uint64, optional, tag = "5")]
15081    pub page: ::core::option::Option<u64>,
15082}
15083#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15084pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
15085    #[prost(uint64, optional, tag = "1")]
15086    pub pfn: ::core::option::Option<u64>,
15087    #[prost(uint64, optional, tag = "2")]
15088    pub i_ino: ::core::option::Option<u64>,
15089    #[prost(uint64, optional, tag = "3")]
15090    pub index: ::core::option::Option<u64>,
15091    #[prost(uint64, optional, tag = "4")]
15092    pub s_dev: ::core::option::Option<u64>,
15093    #[prost(uint64, optional, tag = "5")]
15094    pub page: ::core::option::Option<u64>,
15095}
15096#[derive(Clone, PartialEq, ::prost::Message)]
15097pub struct PrintFtraceEvent {
15098    #[prost(uint64, optional, tag = "1")]
15099    pub ip: ::core::option::Option<u64>,
15100    #[prost(string, optional, tag = "2")]
15101    pub buf: ::core::option::Option<::prost::alloc::string::String>,
15102}
15103#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15104pub struct FuncgraphEntryFtraceEvent {
15105    #[prost(int32, optional, tag = "1")]
15106    pub depth: ::core::option::Option<i32>,
15107    #[prost(uint64, optional, tag = "2")]
15108    pub func: ::core::option::Option<u64>,
15109}
15110#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15111pub struct FuncgraphExitFtraceEvent {
15112    #[prost(uint64, optional, tag = "1")]
15113    pub calltime: ::core::option::Option<u64>,
15114    #[prost(int32, optional, tag = "2")]
15115    pub depth: ::core::option::Option<i32>,
15116    #[prost(uint64, optional, tag = "3")]
15117    pub func: ::core::option::Option<u64>,
15118    #[prost(uint64, optional, tag = "4")]
15119    pub overrun: ::core::option::Option<u64>,
15120    #[prost(uint64, optional, tag = "5")]
15121    pub rettime: ::core::option::Option<u64>,
15122}
15123#[derive(Clone, PartialEq, ::prost::Message)]
15124pub struct G2dTracingMarkWriteFtraceEvent {
15125    #[prost(int32, optional, tag = "1")]
15126    pub pid: ::core::option::Option<i32>,
15127    #[prost(string, optional, tag = "4")]
15128    pub name: ::core::option::Option<::prost::alloc::string::String>,
15129    #[prost(uint32, optional, tag = "5")]
15130    pub r#type: ::core::option::Option<u32>,
15131    #[prost(int32, optional, tag = "6")]
15132    pub value: ::core::option::Option<i32>,
15133}
15134#[derive(Clone, PartialEq, ::prost::Message)]
15135pub struct GoogleIccEventFtraceEvent {
15136    #[prost(string, optional, tag = "1")]
15137    pub event: ::core::option::Option<::prost::alloc::string::String>,
15138    #[prost(uint64, optional, tag = "2")]
15139    pub timestamp: ::core::option::Option<u64>,
15140}
15141#[derive(Clone, PartialEq, ::prost::Message)]
15142pub struct GoogleIrmEventFtraceEvent {
15143    #[prost(string, optional, tag = "1")]
15144    pub event: ::core::option::Option<::prost::alloc::string::String>,
15145    #[prost(uint64, optional, tag = "2")]
15146    pub timestamp: ::core::option::Option<u64>,
15147}
15148#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15149pub struct GpuMemTotalFtraceEvent {
15150    #[prost(uint32, optional, tag = "1")]
15151    pub gpu_id: ::core::option::Option<u32>,
15152    #[prost(uint32, optional, tag = "2")]
15153    pub pid: ::core::option::Option<u32>,
15154    #[prost(uint64, optional, tag = "3")]
15155    pub size: ::core::option::Option<u64>,
15156}
15157#[derive(Clone, PartialEq, ::prost::Message)]
15158pub struct DrmSchedJobFtraceEvent {
15159    #[prost(uint64, optional, tag = "1")]
15160    pub entity: ::core::option::Option<u64>,
15161    #[prost(uint64, optional, tag = "2")]
15162    pub fence: ::core::option::Option<u64>,
15163    #[prost(int32, optional, tag = "3")]
15164    pub hw_job_count: ::core::option::Option<i32>,
15165    #[prost(uint64, optional, tag = "4")]
15166    pub id: ::core::option::Option<u64>,
15167    #[prost(uint32, optional, tag = "5")]
15168    pub job_count: ::core::option::Option<u32>,
15169    #[prost(string, optional, tag = "6")]
15170    pub name: ::core::option::Option<::prost::alloc::string::String>,
15171}
15172#[derive(Clone, PartialEq, ::prost::Message)]
15173pub struct DrmRunJobFtraceEvent {
15174    #[prost(uint64, optional, tag = "1")]
15175    pub entity: ::core::option::Option<u64>,
15176    #[prost(uint64, optional, tag = "2")]
15177    pub fence: ::core::option::Option<u64>,
15178    #[prost(int32, optional, tag = "3")]
15179    pub hw_job_count: ::core::option::Option<i32>,
15180    #[prost(uint64, optional, tag = "4")]
15181    pub id: ::core::option::Option<u64>,
15182    #[prost(uint32, optional, tag = "5")]
15183    pub job_count: ::core::option::Option<u32>,
15184    #[prost(string, optional, tag = "6")]
15185    pub name: ::core::option::Option<::prost::alloc::string::String>,
15186}
15187#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15188pub struct DrmSchedProcessJobFtraceEvent {
15189    #[prost(uint64, optional, tag = "1")]
15190    pub fence: ::core::option::Option<u64>,
15191}
15192#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15193pub struct HypEnterFtraceEvent {}
15194#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15195pub struct HypExitFtraceEvent {}
15196#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15197pub struct HostHcallFtraceEvent {
15198    #[prost(uint32, optional, tag = "1")]
15199    pub id: ::core::option::Option<u32>,
15200    #[prost(uint32, optional, tag = "2")]
15201    pub invalid: ::core::option::Option<u32>,
15202}
15203#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15204pub struct HostSmcFtraceEvent {
15205    #[prost(uint64, optional, tag = "1")]
15206    pub id: ::core::option::Option<u64>,
15207    #[prost(uint32, optional, tag = "2")]
15208    pub forwarded: ::core::option::Option<u32>,
15209}
15210#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15211pub struct HostMemAbortFtraceEvent {
15212    #[prost(uint64, optional, tag = "1")]
15213    pub esr: ::core::option::Option<u64>,
15214    #[prost(uint64, optional, tag = "2")]
15215    pub addr: ::core::option::Option<u64>,
15216}
15217#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15218pub struct I2cReadFtraceEvent {
15219    #[prost(int32, optional, tag = "1")]
15220    pub adapter_nr: ::core::option::Option<i32>,
15221    #[prost(uint32, optional, tag = "2")]
15222    pub msg_nr: ::core::option::Option<u32>,
15223    #[prost(uint32, optional, tag = "3")]
15224    pub addr: ::core::option::Option<u32>,
15225    #[prost(uint32, optional, tag = "4")]
15226    pub flags: ::core::option::Option<u32>,
15227    #[prost(uint32, optional, tag = "5")]
15228    pub len: ::core::option::Option<u32>,
15229}
15230#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15231pub struct I2cWriteFtraceEvent {
15232    #[prost(int32, optional, tag = "1")]
15233    pub adapter_nr: ::core::option::Option<i32>,
15234    #[prost(uint32, optional, tag = "2")]
15235    pub msg_nr: ::core::option::Option<u32>,
15236    #[prost(uint32, optional, tag = "3")]
15237    pub addr: ::core::option::Option<u32>,
15238    #[prost(uint32, optional, tag = "4")]
15239    pub flags: ::core::option::Option<u32>,
15240    #[prost(uint32, optional, tag = "5")]
15241    pub len: ::core::option::Option<u32>,
15242    #[prost(uint32, optional, tag = "6")]
15243    pub buf: ::core::option::Option<u32>,
15244}
15245#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15246pub struct I2cResultFtraceEvent {
15247    #[prost(int32, optional, tag = "1")]
15248    pub adapter_nr: ::core::option::Option<i32>,
15249    #[prost(uint32, optional, tag = "2")]
15250    pub nr_msgs: ::core::option::Option<u32>,
15251    #[prost(int32, optional, tag = "3")]
15252    pub ret: ::core::option::Option<i32>,
15253}
15254#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15255pub struct I2cReplyFtraceEvent {
15256    #[prost(int32, optional, tag = "1")]
15257    pub adapter_nr: ::core::option::Option<i32>,
15258    #[prost(uint32, optional, tag = "2")]
15259    pub msg_nr: ::core::option::Option<u32>,
15260    #[prost(uint32, optional, tag = "3")]
15261    pub addr: ::core::option::Option<u32>,
15262    #[prost(uint32, optional, tag = "4")]
15263    pub flags: ::core::option::Option<u32>,
15264    #[prost(uint32, optional, tag = "5")]
15265    pub len: ::core::option::Option<u32>,
15266    #[prost(uint32, optional, tag = "6")]
15267    pub buf: ::core::option::Option<u32>,
15268}
15269#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15270pub struct SmbusReadFtraceEvent {
15271    #[prost(int32, optional, tag = "1")]
15272    pub adapter_nr: ::core::option::Option<i32>,
15273    #[prost(uint32, optional, tag = "2")]
15274    pub flags: ::core::option::Option<u32>,
15275    #[prost(uint32, optional, tag = "3")]
15276    pub addr: ::core::option::Option<u32>,
15277    #[prost(uint32, optional, tag = "4")]
15278    pub command: ::core::option::Option<u32>,
15279    #[prost(uint32, optional, tag = "5")]
15280    pub protocol: ::core::option::Option<u32>,
15281}
15282#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15283pub struct SmbusWriteFtraceEvent {
15284    #[prost(int32, optional, tag = "1")]
15285    pub adapter_nr: ::core::option::Option<i32>,
15286    #[prost(uint32, optional, tag = "2")]
15287    pub addr: ::core::option::Option<u32>,
15288    #[prost(uint32, optional, tag = "3")]
15289    pub flags: ::core::option::Option<u32>,
15290    #[prost(uint32, optional, tag = "4")]
15291    pub command: ::core::option::Option<u32>,
15292    #[prost(uint32, optional, tag = "5")]
15293    pub len: ::core::option::Option<u32>,
15294    #[prost(uint32, optional, tag = "6")]
15295    pub protocol: ::core::option::Option<u32>,
15296}
15297#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15298pub struct SmbusResultFtraceEvent {
15299    #[prost(int32, optional, tag = "1")]
15300    pub adapter_nr: ::core::option::Option<i32>,
15301    #[prost(uint32, optional, tag = "2")]
15302    pub addr: ::core::option::Option<u32>,
15303    #[prost(uint32, optional, tag = "3")]
15304    pub flags: ::core::option::Option<u32>,
15305    #[prost(uint32, optional, tag = "4")]
15306    pub read_write: ::core::option::Option<u32>,
15307    #[prost(uint32, optional, tag = "5")]
15308    pub command: ::core::option::Option<u32>,
15309    #[prost(int32, optional, tag = "6")]
15310    pub res: ::core::option::Option<i32>,
15311    #[prost(uint32, optional, tag = "7")]
15312    pub protocol: ::core::option::Option<u32>,
15313}
15314#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15315pub struct SmbusReplyFtraceEvent {
15316    #[prost(int32, optional, tag = "1")]
15317    pub adapter_nr: ::core::option::Option<i32>,
15318    #[prost(uint32, optional, tag = "2")]
15319    pub addr: ::core::option::Option<u32>,
15320    #[prost(uint32, optional, tag = "3")]
15321    pub flags: ::core::option::Option<u32>,
15322    #[prost(uint32, optional, tag = "4")]
15323    pub command: ::core::option::Option<u32>,
15324    #[prost(uint32, optional, tag = "5")]
15325    pub len: ::core::option::Option<u32>,
15326    #[prost(uint32, optional, tag = "6")]
15327    pub protocol: ::core::option::Option<u32>,
15328}
15329#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15330pub struct IonStatFtraceEvent {
15331    #[prost(uint32, optional, tag = "1")]
15332    pub buffer_id: ::core::option::Option<u32>,
15333    #[prost(int64, optional, tag = "2")]
15334    pub len: ::core::option::Option<i64>,
15335    #[prost(uint64, optional, tag = "3")]
15336    pub total_allocated: ::core::option::Option<u64>,
15337}
15338#[derive(Clone, PartialEq, ::prost::Message)]
15339pub struct IpiEntryFtraceEvent {
15340    #[prost(string, optional, tag = "1")]
15341    pub reason: ::core::option::Option<::prost::alloc::string::String>,
15342}
15343#[derive(Clone, PartialEq, ::prost::Message)]
15344pub struct IpiExitFtraceEvent {
15345    #[prost(string, optional, tag = "1")]
15346    pub reason: ::core::option::Option<::prost::alloc::string::String>,
15347}
15348#[derive(Clone, PartialEq, ::prost::Message)]
15349pub struct IpiRaiseFtraceEvent {
15350    #[prost(uint32, optional, tag = "1")]
15351    pub target_cpus: ::core::option::Option<u32>,
15352    #[prost(string, optional, tag = "2")]
15353    pub reason: ::core::option::Option<::prost::alloc::string::String>,
15354}
15355#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15356pub struct SoftirqEntryFtraceEvent {
15357    #[prost(uint32, optional, tag = "1")]
15358    pub vec: ::core::option::Option<u32>,
15359}
15360#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15361pub struct SoftirqExitFtraceEvent {
15362    #[prost(uint32, optional, tag = "1")]
15363    pub vec: ::core::option::Option<u32>,
15364}
15365#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15366pub struct SoftirqRaiseFtraceEvent {
15367    #[prost(uint32, optional, tag = "1")]
15368    pub vec: ::core::option::Option<u32>,
15369}
15370#[derive(Clone, PartialEq, ::prost::Message)]
15371pub struct IrqHandlerEntryFtraceEvent {
15372    #[prost(int32, optional, tag = "1")]
15373    pub irq: ::core::option::Option<i32>,
15374    #[prost(string, optional, tag = "2")]
15375    pub name: ::core::option::Option<::prost::alloc::string::String>,
15376    #[prost(uint32, optional, tag = "3")]
15377    pub handler: ::core::option::Option<u32>,
15378}
15379#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15380pub struct IrqHandlerExitFtraceEvent {
15381    #[prost(int32, optional, tag = "1")]
15382    pub irq: ::core::option::Option<i32>,
15383    #[prost(int32, optional, tag = "2")]
15384    pub ret: ::core::option::Option<i32>,
15385}
15386#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15387pub struct KgslGpuFrequencyFtraceEvent {
15388    #[prost(uint32, optional, tag = "1")]
15389    pub gpu_freq: ::core::option::Option<u32>,
15390    #[prost(uint32, optional, tag = "2")]
15391    pub gpu_id: ::core::option::Option<u32>,
15392}
15393#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15394pub struct AllocPagesIommuEndFtraceEvent {
15395    #[prost(uint32, optional, tag = "1")]
15396    pub gfp_flags: ::core::option::Option<u32>,
15397    #[prost(uint32, optional, tag = "2")]
15398    pub order: ::core::option::Option<u32>,
15399}
15400#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15401pub struct AllocPagesIommuFailFtraceEvent {
15402    #[prost(uint32, optional, tag = "1")]
15403    pub gfp_flags: ::core::option::Option<u32>,
15404    #[prost(uint32, optional, tag = "2")]
15405    pub order: ::core::option::Option<u32>,
15406}
15407#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15408pub struct AllocPagesIommuStartFtraceEvent {
15409    #[prost(uint32, optional, tag = "1")]
15410    pub gfp_flags: ::core::option::Option<u32>,
15411    #[prost(uint32, optional, tag = "2")]
15412    pub order: ::core::option::Option<u32>,
15413}
15414#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15415pub struct AllocPagesSysEndFtraceEvent {
15416    #[prost(uint32, optional, tag = "1")]
15417    pub gfp_flags: ::core::option::Option<u32>,
15418    #[prost(uint32, optional, tag = "2")]
15419    pub order: ::core::option::Option<u32>,
15420}
15421#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15422pub struct AllocPagesSysFailFtraceEvent {
15423    #[prost(uint32, optional, tag = "1")]
15424    pub gfp_flags: ::core::option::Option<u32>,
15425    #[prost(uint32, optional, tag = "2")]
15426    pub order: ::core::option::Option<u32>,
15427}
15428#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15429pub struct AllocPagesSysStartFtraceEvent {
15430    #[prost(uint32, optional, tag = "1")]
15431    pub gfp_flags: ::core::option::Option<u32>,
15432    #[prost(uint32, optional, tag = "2")]
15433    pub order: ::core::option::Option<u32>,
15434}
15435#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15436pub struct DmaAllocContiguousRetryFtraceEvent {
15437    #[prost(int32, optional, tag = "1")]
15438    pub tries: ::core::option::Option<i32>,
15439}
15440#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15441pub struct IommuMapRangeFtraceEvent {
15442    #[prost(uint64, optional, tag = "1")]
15443    pub chunk_size: ::core::option::Option<u64>,
15444    #[prost(uint64, optional, tag = "2")]
15445    pub len: ::core::option::Option<u64>,
15446    #[prost(uint64, optional, tag = "3")]
15447    pub pa: ::core::option::Option<u64>,
15448    #[prost(uint64, optional, tag = "4")]
15449    pub va: ::core::option::Option<u64>,
15450}
15451#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15452pub struct IommuSecPtblMapRangeEndFtraceEvent {
15453    #[prost(uint64, optional, tag = "1")]
15454    pub len: ::core::option::Option<u64>,
15455    #[prost(int32, optional, tag = "2")]
15456    pub num: ::core::option::Option<i32>,
15457    #[prost(uint32, optional, tag = "3")]
15458    pub pa: ::core::option::Option<u32>,
15459    #[prost(int32, optional, tag = "4")]
15460    pub sec_id: ::core::option::Option<i32>,
15461    #[prost(uint64, optional, tag = "5")]
15462    pub va: ::core::option::Option<u64>,
15463}
15464#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15465pub struct IommuSecPtblMapRangeStartFtraceEvent {
15466    #[prost(uint64, optional, tag = "1")]
15467    pub len: ::core::option::Option<u64>,
15468    #[prost(int32, optional, tag = "2")]
15469    pub num: ::core::option::Option<i32>,
15470    #[prost(uint32, optional, tag = "3")]
15471    pub pa: ::core::option::Option<u32>,
15472    #[prost(int32, optional, tag = "4")]
15473    pub sec_id: ::core::option::Option<i32>,
15474    #[prost(uint64, optional, tag = "5")]
15475    pub va: ::core::option::Option<u64>,
15476}
15477#[derive(Clone, PartialEq, ::prost::Message)]
15478pub struct IonAllocBufferEndFtraceEvent {
15479    #[prost(string, optional, tag = "1")]
15480    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
15481    #[prost(uint32, optional, tag = "2")]
15482    pub flags: ::core::option::Option<u32>,
15483    #[prost(string, optional, tag = "3")]
15484    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
15485    #[prost(uint64, optional, tag = "4")]
15486    pub len: ::core::option::Option<u64>,
15487    #[prost(uint32, optional, tag = "5")]
15488    pub mask: ::core::option::Option<u32>,
15489}
15490#[derive(Clone, PartialEq, ::prost::Message)]
15491pub struct IonAllocBufferFailFtraceEvent {
15492    #[prost(string, optional, tag = "1")]
15493    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
15494    #[prost(int64, optional, tag = "2")]
15495    pub error: ::core::option::Option<i64>,
15496    #[prost(uint32, optional, tag = "3")]
15497    pub flags: ::core::option::Option<u32>,
15498    #[prost(string, optional, tag = "4")]
15499    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
15500    #[prost(uint64, optional, tag = "5")]
15501    pub len: ::core::option::Option<u64>,
15502    #[prost(uint32, optional, tag = "6")]
15503    pub mask: ::core::option::Option<u32>,
15504}
15505#[derive(Clone, PartialEq, ::prost::Message)]
15506pub struct IonAllocBufferFallbackFtraceEvent {
15507    #[prost(string, optional, tag = "1")]
15508    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
15509    #[prost(int64, optional, tag = "2")]
15510    pub error: ::core::option::Option<i64>,
15511    #[prost(uint32, optional, tag = "3")]
15512    pub flags: ::core::option::Option<u32>,
15513    #[prost(string, optional, tag = "4")]
15514    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
15515    #[prost(uint64, optional, tag = "5")]
15516    pub len: ::core::option::Option<u64>,
15517    #[prost(uint32, optional, tag = "6")]
15518    pub mask: ::core::option::Option<u32>,
15519}
15520#[derive(Clone, PartialEq, ::prost::Message)]
15521pub struct IonAllocBufferStartFtraceEvent {
15522    #[prost(string, optional, tag = "1")]
15523    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
15524    #[prost(uint32, optional, tag = "2")]
15525    pub flags: ::core::option::Option<u32>,
15526    #[prost(string, optional, tag = "3")]
15527    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
15528    #[prost(uint64, optional, tag = "4")]
15529    pub len: ::core::option::Option<u64>,
15530    #[prost(uint32, optional, tag = "5")]
15531    pub mask: ::core::option::Option<u32>,
15532}
15533#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15534pub struct IonCpAllocRetryFtraceEvent {
15535    #[prost(int32, optional, tag = "1")]
15536    pub tries: ::core::option::Option<i32>,
15537}
15538#[derive(Clone, PartialEq, ::prost::Message)]
15539pub struct IonCpSecureBufferEndFtraceEvent {
15540    #[prost(uint64, optional, tag = "1")]
15541    pub align: ::core::option::Option<u64>,
15542    #[prost(uint64, optional, tag = "2")]
15543    pub flags: ::core::option::Option<u64>,
15544    #[prost(string, optional, tag = "3")]
15545    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
15546    #[prost(uint64, optional, tag = "4")]
15547    pub len: ::core::option::Option<u64>,
15548}
15549#[derive(Clone, PartialEq, ::prost::Message)]
15550pub struct IonCpSecureBufferStartFtraceEvent {
15551    #[prost(uint64, optional, tag = "1")]
15552    pub align: ::core::option::Option<u64>,
15553    #[prost(uint64, optional, tag = "2")]
15554    pub flags: ::core::option::Option<u64>,
15555    #[prost(string, optional, tag = "3")]
15556    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
15557    #[prost(uint64, optional, tag = "4")]
15558    pub len: ::core::option::Option<u64>,
15559}
15560#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15561pub struct IonPrefetchingFtraceEvent {
15562    #[prost(uint64, optional, tag = "1")]
15563    pub len: ::core::option::Option<u64>,
15564}
15565#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15566pub struct IonSecureCmaAddToPoolEndFtraceEvent {
15567    #[prost(uint32, optional, tag = "1")]
15568    pub is_prefetch: ::core::option::Option<u32>,
15569    #[prost(uint64, optional, tag = "2")]
15570    pub len: ::core::option::Option<u64>,
15571    #[prost(int32, optional, tag = "3")]
15572    pub pool_total: ::core::option::Option<i32>,
15573}
15574#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15575pub struct IonSecureCmaAddToPoolStartFtraceEvent {
15576    #[prost(uint32, optional, tag = "1")]
15577    pub is_prefetch: ::core::option::Option<u32>,
15578    #[prost(uint64, optional, tag = "2")]
15579    pub len: ::core::option::Option<u64>,
15580    #[prost(int32, optional, tag = "3")]
15581    pub pool_total: ::core::option::Option<i32>,
15582}
15583#[derive(Clone, PartialEq, ::prost::Message)]
15584pub struct IonSecureCmaAllocateEndFtraceEvent {
15585    #[prost(uint64, optional, tag = "1")]
15586    pub align: ::core::option::Option<u64>,
15587    #[prost(uint64, optional, tag = "2")]
15588    pub flags: ::core::option::Option<u64>,
15589    #[prost(string, optional, tag = "3")]
15590    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
15591    #[prost(uint64, optional, tag = "4")]
15592    pub len: ::core::option::Option<u64>,
15593}
15594#[derive(Clone, PartialEq, ::prost::Message)]
15595pub struct IonSecureCmaAllocateStartFtraceEvent {
15596    #[prost(uint64, optional, tag = "1")]
15597    pub align: ::core::option::Option<u64>,
15598    #[prost(uint64, optional, tag = "2")]
15599    pub flags: ::core::option::Option<u64>,
15600    #[prost(string, optional, tag = "3")]
15601    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
15602    #[prost(uint64, optional, tag = "4")]
15603    pub len: ::core::option::Option<u64>,
15604}
15605#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15606pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
15607    #[prost(uint64, optional, tag = "1")]
15608    pub drained_size: ::core::option::Option<u64>,
15609    #[prost(uint64, optional, tag = "2")]
15610    pub skipped_size: ::core::option::Option<u64>,
15611}
15612#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15613pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
15614    #[prost(uint64, optional, tag = "1")]
15615    pub drained_size: ::core::option::Option<u64>,
15616    #[prost(uint64, optional, tag = "2")]
15617    pub skipped_size: ::core::option::Option<u64>,
15618}
15619#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15620pub struct KfreeFtraceEvent {
15621    #[prost(uint64, optional, tag = "1")]
15622    pub call_site: ::core::option::Option<u64>,
15623    #[prost(uint64, optional, tag = "2")]
15624    pub ptr: ::core::option::Option<u64>,
15625}
15626#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15627pub struct KmallocFtraceEvent {
15628    #[prost(uint64, optional, tag = "1")]
15629    pub bytes_alloc: ::core::option::Option<u64>,
15630    #[prost(uint64, optional, tag = "2")]
15631    pub bytes_req: ::core::option::Option<u64>,
15632    #[prost(uint64, optional, tag = "3")]
15633    pub call_site: ::core::option::Option<u64>,
15634    #[prost(uint32, optional, tag = "4")]
15635    pub gfp_flags: ::core::option::Option<u32>,
15636    #[prost(uint64, optional, tag = "5")]
15637    pub ptr: ::core::option::Option<u64>,
15638}
15639#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15640pub struct KmallocNodeFtraceEvent {
15641    #[prost(uint64, optional, tag = "1")]
15642    pub bytes_alloc: ::core::option::Option<u64>,
15643    #[prost(uint64, optional, tag = "2")]
15644    pub bytes_req: ::core::option::Option<u64>,
15645    #[prost(uint64, optional, tag = "3")]
15646    pub call_site: ::core::option::Option<u64>,
15647    #[prost(uint32, optional, tag = "4")]
15648    pub gfp_flags: ::core::option::Option<u32>,
15649    #[prost(int32, optional, tag = "5")]
15650    pub node: ::core::option::Option<i32>,
15651    #[prost(uint64, optional, tag = "6")]
15652    pub ptr: ::core::option::Option<u64>,
15653}
15654#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15655pub struct KmemCacheAllocFtraceEvent {
15656    #[prost(uint64, optional, tag = "1")]
15657    pub bytes_alloc: ::core::option::Option<u64>,
15658    #[prost(uint64, optional, tag = "2")]
15659    pub bytes_req: ::core::option::Option<u64>,
15660    #[prost(uint64, optional, tag = "3")]
15661    pub call_site: ::core::option::Option<u64>,
15662    #[prost(uint32, optional, tag = "4")]
15663    pub gfp_flags: ::core::option::Option<u32>,
15664    #[prost(uint64, optional, tag = "5")]
15665    pub ptr: ::core::option::Option<u64>,
15666}
15667#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15668pub struct KmemCacheAllocNodeFtraceEvent {
15669    #[prost(uint64, optional, tag = "1")]
15670    pub bytes_alloc: ::core::option::Option<u64>,
15671    #[prost(uint64, optional, tag = "2")]
15672    pub bytes_req: ::core::option::Option<u64>,
15673    #[prost(uint64, optional, tag = "3")]
15674    pub call_site: ::core::option::Option<u64>,
15675    #[prost(uint32, optional, tag = "4")]
15676    pub gfp_flags: ::core::option::Option<u32>,
15677    #[prost(int32, optional, tag = "5")]
15678    pub node: ::core::option::Option<i32>,
15679    #[prost(uint64, optional, tag = "6")]
15680    pub ptr: ::core::option::Option<u64>,
15681}
15682#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15683pub struct KmemCacheFreeFtraceEvent {
15684    #[prost(uint64, optional, tag = "1")]
15685    pub call_site: ::core::option::Option<u64>,
15686    #[prost(uint64, optional, tag = "2")]
15687    pub ptr: ::core::option::Option<u64>,
15688}
15689#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15690pub struct MigratePagesEndFtraceEvent {
15691    #[prost(int32, optional, tag = "1")]
15692    pub mode: ::core::option::Option<i32>,
15693}
15694#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15695pub struct MigratePagesStartFtraceEvent {
15696    #[prost(int32, optional, tag = "1")]
15697    pub mode: ::core::option::Option<i32>,
15698}
15699#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15700pub struct MigrateRetryFtraceEvent {
15701    #[prost(int32, optional, tag = "1")]
15702    pub tries: ::core::option::Option<i32>,
15703}
15704#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15705pub struct MmPageAllocFtraceEvent {
15706    #[prost(uint32, optional, tag = "1")]
15707    pub gfp_flags: ::core::option::Option<u32>,
15708    #[prost(int32, optional, tag = "2")]
15709    pub migratetype: ::core::option::Option<i32>,
15710    #[prost(uint32, optional, tag = "3")]
15711    pub order: ::core::option::Option<u32>,
15712    #[prost(uint64, optional, tag = "4")]
15713    pub page: ::core::option::Option<u64>,
15714    #[prost(uint64, optional, tag = "5")]
15715    pub pfn: ::core::option::Option<u64>,
15716}
15717#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15718pub struct MmPageAllocExtfragFtraceEvent {
15719    #[prost(int32, optional, tag = "1")]
15720    pub alloc_migratetype: ::core::option::Option<i32>,
15721    #[prost(int32, optional, tag = "2")]
15722    pub alloc_order: ::core::option::Option<i32>,
15723    #[prost(int32, optional, tag = "3")]
15724    pub fallback_migratetype: ::core::option::Option<i32>,
15725    #[prost(int32, optional, tag = "4")]
15726    pub fallback_order: ::core::option::Option<i32>,
15727    #[prost(uint64, optional, tag = "5")]
15728    pub page: ::core::option::Option<u64>,
15729    #[prost(int32, optional, tag = "6")]
15730    pub change_ownership: ::core::option::Option<i32>,
15731    #[prost(uint64, optional, tag = "7")]
15732    pub pfn: ::core::option::Option<u64>,
15733}
15734#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15735pub struct MmPageAllocZoneLockedFtraceEvent {
15736    #[prost(int32, optional, tag = "1")]
15737    pub migratetype: ::core::option::Option<i32>,
15738    #[prost(uint32, optional, tag = "2")]
15739    pub order: ::core::option::Option<u32>,
15740    #[prost(uint64, optional, tag = "3")]
15741    pub page: ::core::option::Option<u64>,
15742    #[prost(uint64, optional, tag = "4")]
15743    pub pfn: ::core::option::Option<u64>,
15744}
15745#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15746pub struct MmPageFreeFtraceEvent {
15747    #[prost(uint32, optional, tag = "1")]
15748    pub order: ::core::option::Option<u32>,
15749    #[prost(uint64, optional, tag = "2")]
15750    pub page: ::core::option::Option<u64>,
15751    #[prost(uint64, optional, tag = "3")]
15752    pub pfn: ::core::option::Option<u64>,
15753}
15754#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15755pub struct MmPageFreeBatchedFtraceEvent {
15756    #[prost(int32, optional, tag = "1")]
15757    pub cold: ::core::option::Option<i32>,
15758    #[prost(uint64, optional, tag = "2")]
15759    pub page: ::core::option::Option<u64>,
15760    #[prost(uint64, optional, tag = "3")]
15761    pub pfn: ::core::option::Option<u64>,
15762}
15763#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15764pub struct MmPagePcpuDrainFtraceEvent {
15765    #[prost(int32, optional, tag = "1")]
15766    pub migratetype: ::core::option::Option<i32>,
15767    #[prost(uint32, optional, tag = "2")]
15768    pub order: ::core::option::Option<u32>,
15769    #[prost(uint64, optional, tag = "3")]
15770    pub page: ::core::option::Option<u64>,
15771    #[prost(uint64, optional, tag = "4")]
15772    pub pfn: ::core::option::Option<u64>,
15773}
15774#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15775pub struct RssStatFtraceEvent {
15776    #[prost(int32, optional, tag = "1")]
15777    pub member: ::core::option::Option<i32>,
15778    #[prost(int64, optional, tag = "2")]
15779    pub size: ::core::option::Option<i64>,
15780    #[prost(uint32, optional, tag = "3")]
15781    pub curr: ::core::option::Option<u32>,
15782    #[prost(uint32, optional, tag = "4")]
15783    pub mm_id: ::core::option::Option<u32>,
15784}
15785#[derive(Clone, PartialEq, ::prost::Message)]
15786pub struct IonHeapShrinkFtraceEvent {
15787    #[prost(string, optional, tag = "1")]
15788    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
15789    #[prost(uint64, optional, tag = "2")]
15790    pub len: ::core::option::Option<u64>,
15791    #[prost(int64, optional, tag = "3")]
15792    pub total_allocated: ::core::option::Option<i64>,
15793}
15794#[derive(Clone, PartialEq, ::prost::Message)]
15795pub struct IonHeapGrowFtraceEvent {
15796    #[prost(string, optional, tag = "1")]
15797    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
15798    #[prost(uint64, optional, tag = "2")]
15799    pub len: ::core::option::Option<u64>,
15800    #[prost(int64, optional, tag = "3")]
15801    pub total_allocated: ::core::option::Option<i64>,
15802}
15803#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15804pub struct IonBufferCreateFtraceEvent {
15805    #[prost(uint64, optional, tag = "1")]
15806    pub addr: ::core::option::Option<u64>,
15807    #[prost(uint64, optional, tag = "2")]
15808    pub len: ::core::option::Option<u64>,
15809}
15810#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15811pub struct IonBufferDestroyFtraceEvent {
15812    #[prost(uint64, optional, tag = "1")]
15813    pub addr: ::core::option::Option<u64>,
15814    #[prost(uint64, optional, tag = "2")]
15815    pub len: ::core::option::Option<u64>,
15816}
15817#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15818pub struct KvmAccessFaultFtraceEvent {
15819    #[prost(uint64, optional, tag = "1")]
15820    pub ipa: ::core::option::Option<u64>,
15821}
15822#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15823pub struct KvmAckIrqFtraceEvent {
15824    #[prost(uint32, optional, tag = "1")]
15825    pub irqchip: ::core::option::Option<u32>,
15826    #[prost(uint32, optional, tag = "2")]
15827    pub pin: ::core::option::Option<u32>,
15828}
15829#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15830pub struct KvmAgeHvaFtraceEvent {
15831    #[prost(uint64, optional, tag = "1")]
15832    pub end: ::core::option::Option<u64>,
15833    #[prost(uint64, optional, tag = "2")]
15834    pub start: ::core::option::Option<u64>,
15835}
15836#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15837pub struct KvmAgePageFtraceEvent {
15838    #[prost(uint64, optional, tag = "1")]
15839    pub gfn: ::core::option::Option<u64>,
15840    #[prost(uint64, optional, tag = "2")]
15841    pub hva: ::core::option::Option<u64>,
15842    #[prost(uint32, optional, tag = "3")]
15843    pub level: ::core::option::Option<u32>,
15844    #[prost(uint32, optional, tag = "4")]
15845    pub referenced: ::core::option::Option<u32>,
15846}
15847#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15848pub struct KvmArmClearDebugFtraceEvent {
15849    #[prost(uint32, optional, tag = "1")]
15850    pub guest_debug: ::core::option::Option<u32>,
15851}
15852#[derive(Clone, PartialEq, ::prost::Message)]
15853pub struct KvmArmSetDreg32FtraceEvent {
15854    #[prost(string, optional, tag = "1")]
15855    pub name: ::core::option::Option<::prost::alloc::string::String>,
15856    #[prost(uint32, optional, tag = "2")]
15857    pub value: ::core::option::Option<u32>,
15858}
15859#[derive(Clone, PartialEq, ::prost::Message)]
15860pub struct KvmArmSetRegsetFtraceEvent {
15861    #[prost(int32, optional, tag = "1")]
15862    pub len: ::core::option::Option<i32>,
15863    #[prost(string, optional, tag = "2")]
15864    pub name: ::core::option::Option<::prost::alloc::string::String>,
15865}
15866#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15867pub struct KvmArmSetupDebugFtraceEvent {
15868    #[prost(uint32, optional, tag = "1")]
15869    pub guest_debug: ::core::option::Option<u32>,
15870    #[prost(uint64, optional, tag = "2")]
15871    pub vcpu: ::core::option::Option<u64>,
15872}
15873#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15874pub struct KvmEntryFtraceEvent {
15875    #[prost(uint64, optional, tag = "1")]
15876    pub vcpu_pc: ::core::option::Option<u64>,
15877}
15878#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15879pub struct KvmExitFtraceEvent {
15880    #[prost(uint32, optional, tag = "1")]
15881    pub esr_ec: ::core::option::Option<u32>,
15882    #[prost(int32, optional, tag = "2")]
15883    pub ret: ::core::option::Option<i32>,
15884    #[prost(uint64, optional, tag = "3")]
15885    pub vcpu_pc: ::core::option::Option<u64>,
15886}
15887#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15888pub struct KvmFpuFtraceEvent {
15889    #[prost(uint32, optional, tag = "1")]
15890    pub load: ::core::option::Option<u32>,
15891}
15892#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15893pub struct KvmGetTimerMapFtraceEvent {
15894    #[prost(int32, optional, tag = "1")]
15895    pub direct_ptimer: ::core::option::Option<i32>,
15896    #[prost(int32, optional, tag = "2")]
15897    pub direct_vtimer: ::core::option::Option<i32>,
15898    #[prost(int32, optional, tag = "3")]
15899    pub emul_ptimer: ::core::option::Option<i32>,
15900    #[prost(uint64, optional, tag = "4")]
15901    pub vcpu_id: ::core::option::Option<u64>,
15902}
15903#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15904pub struct KvmGuestFaultFtraceEvent {
15905    #[prost(uint64, optional, tag = "1")]
15906    pub hsr: ::core::option::Option<u64>,
15907    #[prost(uint64, optional, tag = "2")]
15908    pub hxfar: ::core::option::Option<u64>,
15909    #[prost(uint64, optional, tag = "3")]
15910    pub ipa: ::core::option::Option<u64>,
15911    #[prost(uint64, optional, tag = "4")]
15912    pub vcpu_pc: ::core::option::Option<u64>,
15913}
15914#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15915pub struct KvmHandleSysRegFtraceEvent {
15916    #[prost(uint64, optional, tag = "1")]
15917    pub hsr: ::core::option::Option<u64>,
15918}
15919#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15920pub struct KvmHvcArm64FtraceEvent {
15921    #[prost(uint64, optional, tag = "1")]
15922    pub imm: ::core::option::Option<u64>,
15923    #[prost(uint64, optional, tag = "2")]
15924    pub r0: ::core::option::Option<u64>,
15925    #[prost(uint64, optional, tag = "3")]
15926    pub vcpu_pc: ::core::option::Option<u64>,
15927}
15928#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15929pub struct KvmIrqLineFtraceEvent {
15930    #[prost(int32, optional, tag = "1")]
15931    pub irq_num: ::core::option::Option<i32>,
15932    #[prost(int32, optional, tag = "2")]
15933    pub level: ::core::option::Option<i32>,
15934    #[prost(uint32, optional, tag = "3")]
15935    pub r#type: ::core::option::Option<u32>,
15936    #[prost(int32, optional, tag = "4")]
15937    pub vcpu_idx: ::core::option::Option<i32>,
15938}
15939#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15940pub struct KvmMmioFtraceEvent {
15941    #[prost(uint64, optional, tag = "1")]
15942    pub gpa: ::core::option::Option<u64>,
15943    #[prost(uint32, optional, tag = "2")]
15944    pub len: ::core::option::Option<u32>,
15945    #[prost(uint32, optional, tag = "3")]
15946    pub r#type: ::core::option::Option<u32>,
15947    #[prost(uint64, optional, tag = "4")]
15948    pub val: ::core::option::Option<u64>,
15949}
15950#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15951pub struct KvmMmioEmulateFtraceEvent {
15952    #[prost(uint64, optional, tag = "1")]
15953    pub cpsr: ::core::option::Option<u64>,
15954    #[prost(uint64, optional, tag = "2")]
15955    pub instr: ::core::option::Option<u64>,
15956    #[prost(uint64, optional, tag = "3")]
15957    pub vcpu_pc: ::core::option::Option<u64>,
15958}
15959#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15960pub struct KvmSetGuestDebugFtraceEvent {
15961    #[prost(uint32, optional, tag = "1")]
15962    pub guest_debug: ::core::option::Option<u32>,
15963    #[prost(uint64, optional, tag = "2")]
15964    pub vcpu: ::core::option::Option<u64>,
15965}
15966#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15967pub struct KvmSetIrqFtraceEvent {
15968    #[prost(uint32, optional, tag = "1")]
15969    pub gsi: ::core::option::Option<u32>,
15970    #[prost(int32, optional, tag = "2")]
15971    pub irq_source_id: ::core::option::Option<i32>,
15972    #[prost(int32, optional, tag = "3")]
15973    pub level: ::core::option::Option<i32>,
15974}
15975#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15976pub struct KvmSetSpteHvaFtraceEvent {
15977    #[prost(uint64, optional, tag = "1")]
15978    pub hva: ::core::option::Option<u64>,
15979}
15980#[derive(Clone, Copy, PartialEq, ::prost::Message)]
15981pub struct KvmSetWayFlushFtraceEvent {
15982    #[prost(uint32, optional, tag = "1")]
15983    pub cache: ::core::option::Option<u32>,
15984    #[prost(uint64, optional, tag = "2")]
15985    pub vcpu_pc: ::core::option::Option<u64>,
15986}
15987#[derive(Clone, PartialEq, ::prost::Message)]
15988pub struct KvmSysAccessFtraceEvent {
15989    #[prost(uint32, optional, tag = "1")]
15990    pub c_rm: ::core::option::Option<u32>,
15991    #[prost(uint32, optional, tag = "2")]
15992    pub c_rn: ::core::option::Option<u32>,
15993    #[prost(uint32, optional, tag = "3")]
15994    pub op0: ::core::option::Option<u32>,
15995    #[prost(uint32, optional, tag = "4")]
15996    pub op1: ::core::option::Option<u32>,
15997    #[prost(uint32, optional, tag = "5")]
15998    pub op2: ::core::option::Option<u32>,
15999    #[prost(uint32, optional, tag = "6")]
16000    pub is_write: ::core::option::Option<u32>,
16001    #[prost(string, optional, tag = "7")]
16002    pub name: ::core::option::Option<::prost::alloc::string::String>,
16003    #[prost(uint64, optional, tag = "8")]
16004    pub vcpu_pc: ::core::option::Option<u64>,
16005}
16006#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16007pub struct KvmTestAgeHvaFtraceEvent {
16008    #[prost(uint64, optional, tag = "1")]
16009    pub hva: ::core::option::Option<u64>,
16010}
16011#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16012pub struct KvmTimerEmulateFtraceEvent {
16013    #[prost(uint32, optional, tag = "1")]
16014    pub should_fire: ::core::option::Option<u32>,
16015    #[prost(int32, optional, tag = "2")]
16016    pub timer_idx: ::core::option::Option<i32>,
16017}
16018#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16019pub struct KvmTimerHrtimerExpireFtraceEvent {
16020    #[prost(int32, optional, tag = "1")]
16021    pub timer_idx: ::core::option::Option<i32>,
16022}
16023#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16024pub struct KvmTimerRestoreStateFtraceEvent {
16025    #[prost(uint64, optional, tag = "1")]
16026    pub ctl: ::core::option::Option<u64>,
16027    #[prost(uint64, optional, tag = "2")]
16028    pub cval: ::core::option::Option<u64>,
16029    #[prost(int32, optional, tag = "3")]
16030    pub timer_idx: ::core::option::Option<i32>,
16031}
16032#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16033pub struct KvmTimerSaveStateFtraceEvent {
16034    #[prost(uint64, optional, tag = "1")]
16035    pub ctl: ::core::option::Option<u64>,
16036    #[prost(uint64, optional, tag = "2")]
16037    pub cval: ::core::option::Option<u64>,
16038    #[prost(int32, optional, tag = "3")]
16039    pub timer_idx: ::core::option::Option<i32>,
16040}
16041#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16042pub struct KvmTimerUpdateIrqFtraceEvent {
16043    #[prost(uint32, optional, tag = "1")]
16044    pub irq: ::core::option::Option<u32>,
16045    #[prost(int32, optional, tag = "2")]
16046    pub level: ::core::option::Option<i32>,
16047    #[prost(uint64, optional, tag = "3")]
16048    pub vcpu_id: ::core::option::Option<u64>,
16049}
16050#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16051pub struct KvmToggleCacheFtraceEvent {
16052    #[prost(uint32, optional, tag = "1")]
16053    pub now: ::core::option::Option<u32>,
16054    #[prost(uint64, optional, tag = "2")]
16055    pub vcpu_pc: ::core::option::Option<u64>,
16056    #[prost(uint32, optional, tag = "3")]
16057    pub was: ::core::option::Option<u32>,
16058}
16059#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16060pub struct KvmUnmapHvaRangeFtraceEvent {
16061    #[prost(uint64, optional, tag = "1")]
16062    pub end: ::core::option::Option<u64>,
16063    #[prost(uint64, optional, tag = "2")]
16064    pub start: ::core::option::Option<u64>,
16065}
16066#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16067pub struct KvmUserspaceExitFtraceEvent {
16068    #[prost(uint32, optional, tag = "1")]
16069    pub reason: ::core::option::Option<u32>,
16070}
16071#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16072pub struct KvmVcpuWakeupFtraceEvent {
16073    #[prost(uint64, optional, tag = "1")]
16074    pub ns: ::core::option::Option<u64>,
16075    #[prost(uint32, optional, tag = "2")]
16076    pub valid: ::core::option::Option<u32>,
16077    #[prost(uint32, optional, tag = "3")]
16078    pub waited: ::core::option::Option<u32>,
16079}
16080#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16081pub struct KvmWfxArm64FtraceEvent {
16082    #[prost(uint32, optional, tag = "1")]
16083    pub is_wfe: ::core::option::Option<u32>,
16084    #[prost(uint64, optional, tag = "2")]
16085    pub vcpu_pc: ::core::option::Option<u64>,
16086}
16087#[derive(Clone, PartialEq, ::prost::Message)]
16088pub struct TrapRegFtraceEvent {
16089    #[prost(string, optional, tag = "1")]
16090    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
16091    #[prost(uint32, optional, tag = "2")]
16092    pub is_write: ::core::option::Option<u32>,
16093    #[prost(int32, optional, tag = "3")]
16094    pub reg: ::core::option::Option<i32>,
16095    #[prost(uint64, optional, tag = "4")]
16096    pub write_value: ::core::option::Option<u64>,
16097}
16098#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16099pub struct VgicUpdateIrqPendingFtraceEvent {
16100    #[prost(uint32, optional, tag = "1")]
16101    pub irq: ::core::option::Option<u32>,
16102    #[prost(uint32, optional, tag = "2")]
16103    pub level: ::core::option::Option<u32>,
16104    #[prost(uint64, optional, tag = "3")]
16105    pub vcpu_id: ::core::option::Option<u64>,
16106}
16107#[derive(Clone, PartialEq, ::prost::Message)]
16108pub struct LowmemoryKillFtraceEvent {
16109    #[prost(string, optional, tag = "1")]
16110    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16111    #[prost(int32, optional, tag = "2")]
16112    pub pid: ::core::option::Option<i32>,
16113    #[prost(int64, optional, tag = "3")]
16114    pub pagecache_size: ::core::option::Option<i64>,
16115    #[prost(int64, optional, tag = "4")]
16116    pub pagecache_limit: ::core::option::Option<i64>,
16117    #[prost(int64, optional, tag = "5")]
16118    pub free: ::core::option::Option<i64>,
16119}
16120#[derive(Clone, PartialEq, ::prost::Message)]
16121pub struct LwisTracingMarkWriteFtraceEvent {
16122    #[prost(string, optional, tag = "1")]
16123    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
16124    #[prost(uint32, optional, tag = "2")]
16125    pub r#type: ::core::option::Option<u32>,
16126    #[prost(int32, optional, tag = "3")]
16127    pub pid: ::core::option::Option<i32>,
16128    #[prost(string, optional, tag = "4")]
16129    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
16130    #[prost(int64, optional, tag = "5")]
16131    pub value: ::core::option::Option<i64>,
16132}
16133#[derive(Clone, PartialEq, ::prost::Message)]
16134pub struct MaliTracingMarkWriteFtraceEvent {
16135    #[prost(string, optional, tag = "1")]
16136    pub name: ::core::option::Option<::prost::alloc::string::String>,
16137    #[prost(int32, optional, tag = "2")]
16138    pub pid: ::core::option::Option<i32>,
16139    #[prost(uint32, optional, tag = "3")]
16140    pub r#type: ::core::option::Option<u32>,
16141    #[prost(int32, optional, tag = "4")]
16142    pub value: ::core::option::Option<i32>,
16143}
16144#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16145pub struct MaliMaliKcpucqssetFtraceEvent {
16146    #[prost(uint32, optional, tag = "1")]
16147    pub id: ::core::option::Option<u32>,
16148    #[prost(uint64, optional, tag = "2")]
16149    pub info_val1: ::core::option::Option<u64>,
16150    #[prost(uint64, optional, tag = "3")]
16151    pub info_val2: ::core::option::Option<u64>,
16152    #[prost(uint32, optional, tag = "4")]
16153    pub kctx_id: ::core::option::Option<u32>,
16154    #[prost(int32, optional, tag = "5")]
16155    pub kctx_tgid: ::core::option::Option<i32>,
16156}
16157#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16158pub struct MaliMaliKcpucqswaitstartFtraceEvent {
16159    #[prost(uint32, optional, tag = "1")]
16160    pub id: ::core::option::Option<u32>,
16161    #[prost(uint64, optional, tag = "2")]
16162    pub info_val1: ::core::option::Option<u64>,
16163    #[prost(uint64, optional, tag = "3")]
16164    pub info_val2: ::core::option::Option<u64>,
16165    #[prost(uint32, optional, tag = "4")]
16166    pub kctx_id: ::core::option::Option<u32>,
16167    #[prost(int32, optional, tag = "5")]
16168    pub kctx_tgid: ::core::option::Option<i32>,
16169}
16170#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16171pub struct MaliMaliKcpucqswaitendFtraceEvent {
16172    #[prost(uint32, optional, tag = "1")]
16173    pub id: ::core::option::Option<u32>,
16174    #[prost(uint64, optional, tag = "2")]
16175    pub info_val1: ::core::option::Option<u64>,
16176    #[prost(uint64, optional, tag = "3")]
16177    pub info_val2: ::core::option::Option<u64>,
16178    #[prost(uint32, optional, tag = "4")]
16179    pub kctx_id: ::core::option::Option<u32>,
16180    #[prost(int32, optional, tag = "5")]
16181    pub kctx_tgid: ::core::option::Option<i32>,
16182}
16183#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16184pub struct MaliMaliKcpufencesignalFtraceEvent {
16185    #[prost(uint64, optional, tag = "1")]
16186    pub info_val1: ::core::option::Option<u64>,
16187    #[prost(uint64, optional, tag = "2")]
16188    pub info_val2: ::core::option::Option<u64>,
16189    #[prost(int32, optional, tag = "3")]
16190    pub kctx_tgid: ::core::option::Option<i32>,
16191    #[prost(uint32, optional, tag = "4")]
16192    pub kctx_id: ::core::option::Option<u32>,
16193    #[prost(uint32, optional, tag = "5")]
16194    pub id: ::core::option::Option<u32>,
16195}
16196#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16197pub struct MaliMaliKcpufencewaitstartFtraceEvent {
16198    #[prost(uint64, optional, tag = "1")]
16199    pub info_val1: ::core::option::Option<u64>,
16200    #[prost(uint64, optional, tag = "2")]
16201    pub info_val2: ::core::option::Option<u64>,
16202    #[prost(int32, optional, tag = "3")]
16203    pub kctx_tgid: ::core::option::Option<i32>,
16204    #[prost(uint32, optional, tag = "4")]
16205    pub kctx_id: ::core::option::Option<u32>,
16206    #[prost(uint32, optional, tag = "5")]
16207    pub id: ::core::option::Option<u32>,
16208}
16209#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16210pub struct MaliMaliKcpufencewaitendFtraceEvent {
16211    #[prost(uint64, optional, tag = "1")]
16212    pub info_val1: ::core::option::Option<u64>,
16213    #[prost(uint64, optional, tag = "2")]
16214    pub info_val2: ::core::option::Option<u64>,
16215    #[prost(int32, optional, tag = "3")]
16216    pub kctx_tgid: ::core::option::Option<i32>,
16217    #[prost(uint32, optional, tag = "4")]
16218    pub kctx_id: ::core::option::Option<u32>,
16219    #[prost(uint32, optional, tag = "5")]
16220    pub id: ::core::option::Option<u32>,
16221}
16222#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16223pub struct MaliMaliCsfinterruptstartFtraceEvent {
16224    #[prost(int32, optional, tag = "1")]
16225    pub kctx_tgid: ::core::option::Option<i32>,
16226    #[prost(uint32, optional, tag = "2")]
16227    pub kctx_id: ::core::option::Option<u32>,
16228    #[prost(uint64, optional, tag = "3")]
16229    pub info_val: ::core::option::Option<u64>,
16230}
16231#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16232pub struct MaliMaliCsfinterruptendFtraceEvent {
16233    #[prost(int32, optional, tag = "1")]
16234    pub kctx_tgid: ::core::option::Option<i32>,
16235    #[prost(uint32, optional, tag = "2")]
16236    pub kctx_id: ::core::option::Option<u32>,
16237    #[prost(uint64, optional, tag = "3")]
16238    pub info_val: ::core::option::Option<u64>,
16239}
16240#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16241pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
16242    #[prost(int32, optional, tag = "1")]
16243    pub kctx_tgid: ::core::option::Option<i32>,
16244    #[prost(uint32, optional, tag = "2")]
16245    pub kctx_id: ::core::option::Option<u32>,
16246    #[prost(uint64, optional, tag = "3")]
16247    pub info_val: ::core::option::Option<u64>,
16248}
16249#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16250pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
16251    #[prost(int32, optional, tag = "1")]
16252    pub kctx_tgid: ::core::option::Option<i32>,
16253    #[prost(uint32, optional, tag = "2")]
16254    pub kctx_id: ::core::option::Option<u32>,
16255    #[prost(uint64, optional, tag = "3")]
16256    pub info_val: ::core::option::Option<u64>,
16257}
16258#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16259pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
16260    #[prost(int32, optional, tag = "1")]
16261    pub kctx_tgid: ::core::option::Option<i32>,
16262    #[prost(uint32, optional, tag = "2")]
16263    pub kctx_id: ::core::option::Option<u32>,
16264    #[prost(uint64, optional, tag = "3")]
16265    pub info_val: ::core::option::Option<u64>,
16266}
16267#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16268pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
16269    #[prost(int32, optional, tag = "1")]
16270    pub kctx_tgid: ::core::option::Option<i32>,
16271    #[prost(uint32, optional, tag = "2")]
16272    pub kctx_id: ::core::option::Option<u32>,
16273    #[prost(uint64, optional, tag = "3")]
16274    pub info_val: ::core::option::Option<u64>,
16275}
16276#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16277pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
16278    #[prost(int32, optional, tag = "1")]
16279    pub kctx_tgid: ::core::option::Option<i32>,
16280    #[prost(uint32, optional, tag = "2")]
16281    pub kctx_id: ::core::option::Option<u32>,
16282    #[prost(uint64, optional, tag = "3")]
16283    pub info_val: ::core::option::Option<u64>,
16284}
16285#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16286pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
16287    #[prost(int32, optional, tag = "1")]
16288    pub kctx_tgid: ::core::option::Option<i32>,
16289    #[prost(uint32, optional, tag = "2")]
16290    pub kctx_id: ::core::option::Option<u32>,
16291    #[prost(uint64, optional, tag = "3")]
16292    pub info_val: ::core::option::Option<u64>,
16293}
16294#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16295pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
16296    #[prost(int32, optional, tag = "1")]
16297    pub kctx_tgid: ::core::option::Option<i32>,
16298    #[prost(uint32, optional, tag = "2")]
16299    pub kctx_id: ::core::option::Option<u32>,
16300    #[prost(uint64, optional, tag = "3")]
16301    pub info_val: ::core::option::Option<u64>,
16302}
16303#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16304pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
16305    #[prost(int32, optional, tag = "1")]
16306    pub kctx_tgid: ::core::option::Option<i32>,
16307    #[prost(uint32, optional, tag = "2")]
16308    pub kctx_id: ::core::option::Option<u32>,
16309    #[prost(uint64, optional, tag = "3")]
16310    pub info_val: ::core::option::Option<u64>,
16311}
16312#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16313pub struct MaliMaliPmmcuinsleepFtraceEvent {
16314    #[prost(int32, optional, tag = "1")]
16315    pub kctx_tgid: ::core::option::Option<i32>,
16316    #[prost(uint32, optional, tag = "2")]
16317    pub kctx_id: ::core::option::Option<u32>,
16318    #[prost(uint64, optional, tag = "3")]
16319    pub info_val: ::core::option::Option<u64>,
16320}
16321#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16322pub struct MaliMaliPmmcuoffFtraceEvent {
16323    #[prost(int32, optional, tag = "1")]
16324    pub kctx_tgid: ::core::option::Option<i32>,
16325    #[prost(uint32, optional, tag = "2")]
16326    pub kctx_id: ::core::option::Option<u32>,
16327    #[prost(uint64, optional, tag = "3")]
16328    pub info_val: ::core::option::Option<u64>,
16329}
16330#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16331pub struct MaliMaliPmmcuonFtraceEvent {
16332    #[prost(int32, optional, tag = "1")]
16333    pub kctx_tgid: ::core::option::Option<i32>,
16334    #[prost(uint32, optional, tag = "2")]
16335    pub kctx_id: ::core::option::Option<u32>,
16336    #[prost(uint64, optional, tag = "3")]
16337    pub info_val: ::core::option::Option<u64>,
16338}
16339#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16340pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
16341    #[prost(int32, optional, tag = "1")]
16342    pub kctx_tgid: ::core::option::Option<i32>,
16343    #[prost(uint32, optional, tag = "2")]
16344    pub kctx_id: ::core::option::Option<u32>,
16345    #[prost(uint64, optional, tag = "3")]
16346    pub info_val: ::core::option::Option<u64>,
16347}
16348#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16349pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
16350    #[prost(int32, optional, tag = "1")]
16351    pub kctx_tgid: ::core::option::Option<i32>,
16352    #[prost(uint32, optional, tag = "2")]
16353    pub kctx_id: ::core::option::Option<u32>,
16354    #[prost(uint64, optional, tag = "3")]
16355    pub info_val: ::core::option::Option<u64>,
16356}
16357#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16358pub struct MaliMaliPmmcuonhaltFtraceEvent {
16359    #[prost(int32, optional, tag = "1")]
16360    pub kctx_tgid: ::core::option::Option<i32>,
16361    #[prost(uint32, optional, tag = "2")]
16362    pub kctx_id: ::core::option::Option<u32>,
16363    #[prost(uint64, optional, tag = "3")]
16364    pub info_val: ::core::option::Option<u64>,
16365}
16366#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16367pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
16368    #[prost(int32, optional, tag = "1")]
16369    pub kctx_tgid: ::core::option::Option<i32>,
16370    #[prost(uint32, optional, tag = "2")]
16371    pub kctx_id: ::core::option::Option<u32>,
16372    #[prost(uint64, optional, tag = "3")]
16373    pub info_val: ::core::option::Option<u64>,
16374}
16375#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16376pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
16377    #[prost(int32, optional, tag = "1")]
16378    pub kctx_tgid: ::core::option::Option<i32>,
16379    #[prost(uint32, optional, tag = "2")]
16380    pub kctx_id: ::core::option::Option<u32>,
16381    #[prost(uint64, optional, tag = "3")]
16382    pub info_val: ::core::option::Option<u64>,
16383}
16384#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16385pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
16386    #[prost(int32, optional, tag = "1")]
16387    pub kctx_tgid: ::core::option::Option<i32>,
16388    #[prost(uint32, optional, tag = "2")]
16389    pub kctx_id: ::core::option::Option<u32>,
16390    #[prost(uint64, optional, tag = "3")]
16391    pub info_val: ::core::option::Option<u64>,
16392}
16393#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16394pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
16395    #[prost(int32, optional, tag = "1")]
16396    pub kctx_tgid: ::core::option::Option<i32>,
16397    #[prost(uint32, optional, tag = "2")]
16398    pub kctx_id: ::core::option::Option<u32>,
16399    #[prost(uint64, optional, tag = "3")]
16400    pub info_val: ::core::option::Option<u64>,
16401}
16402#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16403pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
16404    #[prost(int32, optional, tag = "1")]
16405    pub kctx_tgid: ::core::option::Option<i32>,
16406    #[prost(uint32, optional, tag = "2")]
16407    pub kctx_id: ::core::option::Option<u32>,
16408    #[prost(uint64, optional, tag = "3")]
16409    pub info_val: ::core::option::Option<u64>,
16410}
16411#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16412pub struct MaliMaliPmmcupendoffFtraceEvent {
16413    #[prost(int32, optional, tag = "1")]
16414    pub kctx_tgid: ::core::option::Option<i32>,
16415    #[prost(uint32, optional, tag = "2")]
16416    pub kctx_id: ::core::option::Option<u32>,
16417    #[prost(uint64, optional, tag = "3")]
16418    pub info_val: ::core::option::Option<u64>,
16419}
16420#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16421pub struct MaliMaliPmmcupendonreloadFtraceEvent {
16422    #[prost(int32, optional, tag = "1")]
16423    pub kctx_tgid: ::core::option::Option<i32>,
16424    #[prost(uint32, optional, tag = "2")]
16425    pub kctx_id: ::core::option::Option<u32>,
16426    #[prost(uint64, optional, tag = "3")]
16427    pub info_val: ::core::option::Option<u64>,
16428}
16429#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16430pub struct MaliMaliPmmcupowerdownFtraceEvent {
16431    #[prost(int32, optional, tag = "1")]
16432    pub kctx_tgid: ::core::option::Option<i32>,
16433    #[prost(uint32, optional, tag = "2")]
16434    pub kctx_id: ::core::option::Option<u32>,
16435    #[prost(uint64, optional, tag = "3")]
16436    pub info_val: ::core::option::Option<u64>,
16437}
16438#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16439pub struct MaliMaliPmmcuresetwaitFtraceEvent {
16440    #[prost(int32, optional, tag = "1")]
16441    pub kctx_tgid: ::core::option::Option<i32>,
16442    #[prost(uint32, optional, tag = "2")]
16443    pub kctx_id: ::core::option::Option<u32>,
16444    #[prost(uint64, optional, tag = "3")]
16445    pub info_val: ::core::option::Option<u64>,
16446}
16447#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16448pub struct MdpCmdKickoffFtraceEvent {
16449    #[prost(uint32, optional, tag = "1")]
16450    pub ctl_num: ::core::option::Option<u32>,
16451    #[prost(int32, optional, tag = "2")]
16452    pub kickoff_cnt: ::core::option::Option<i32>,
16453}
16454#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16455pub struct MdpCommitFtraceEvent {
16456    #[prost(uint32, optional, tag = "1")]
16457    pub num: ::core::option::Option<u32>,
16458    #[prost(uint32, optional, tag = "2")]
16459    pub play_cnt: ::core::option::Option<u32>,
16460    #[prost(uint32, optional, tag = "3")]
16461    pub clk_rate: ::core::option::Option<u32>,
16462    #[prost(uint64, optional, tag = "4")]
16463    pub bandwidth: ::core::option::Option<u64>,
16464}
16465#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16466pub struct MdpPerfSetOtFtraceEvent {
16467    #[prost(uint32, optional, tag = "1")]
16468    pub pnum: ::core::option::Option<u32>,
16469    #[prost(uint32, optional, tag = "2")]
16470    pub xin_id: ::core::option::Option<u32>,
16471    #[prost(uint32, optional, tag = "3")]
16472    pub rd_lim: ::core::option::Option<u32>,
16473    #[prost(uint32, optional, tag = "4")]
16474    pub is_vbif_rt: ::core::option::Option<u32>,
16475}
16476#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16477pub struct MdpSsppChangeFtraceEvent {
16478    #[prost(uint32, optional, tag = "1")]
16479    pub num: ::core::option::Option<u32>,
16480    #[prost(uint32, optional, tag = "2")]
16481    pub play_cnt: ::core::option::Option<u32>,
16482    #[prost(uint32, optional, tag = "3")]
16483    pub mixer: ::core::option::Option<u32>,
16484    #[prost(uint32, optional, tag = "4")]
16485    pub stage: ::core::option::Option<u32>,
16486    #[prost(uint32, optional, tag = "5")]
16487    pub flags: ::core::option::Option<u32>,
16488    #[prost(uint32, optional, tag = "6")]
16489    pub format: ::core::option::Option<u32>,
16490    #[prost(uint32, optional, tag = "7")]
16491    pub img_w: ::core::option::Option<u32>,
16492    #[prost(uint32, optional, tag = "8")]
16493    pub img_h: ::core::option::Option<u32>,
16494    #[prost(uint32, optional, tag = "9")]
16495    pub src_x: ::core::option::Option<u32>,
16496    #[prost(uint32, optional, tag = "10")]
16497    pub src_y: ::core::option::Option<u32>,
16498    #[prost(uint32, optional, tag = "11")]
16499    pub src_w: ::core::option::Option<u32>,
16500    #[prost(uint32, optional, tag = "12")]
16501    pub src_h: ::core::option::Option<u32>,
16502    #[prost(uint32, optional, tag = "13")]
16503    pub dst_x: ::core::option::Option<u32>,
16504    #[prost(uint32, optional, tag = "14")]
16505    pub dst_y: ::core::option::Option<u32>,
16506    #[prost(uint32, optional, tag = "15")]
16507    pub dst_w: ::core::option::Option<u32>,
16508    #[prost(uint32, optional, tag = "16")]
16509    pub dst_h: ::core::option::Option<u32>,
16510}
16511#[derive(Clone, PartialEq, ::prost::Message)]
16512pub struct TracingMarkWriteFtraceEvent {
16513    #[prost(int32, optional, tag = "1")]
16514    pub pid: ::core::option::Option<i32>,
16515    #[prost(string, optional, tag = "2")]
16516    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
16517    #[prost(uint32, optional, tag = "3")]
16518    pub trace_begin: ::core::option::Option<u32>,
16519}
16520#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16521pub struct MdpCmdPingpongDoneFtraceEvent {
16522    #[prost(uint32, optional, tag = "1")]
16523    pub ctl_num: ::core::option::Option<u32>,
16524    #[prost(uint32, optional, tag = "2")]
16525    pub intf_num: ::core::option::Option<u32>,
16526    #[prost(uint32, optional, tag = "3")]
16527    pub pp_num: ::core::option::Option<u32>,
16528    #[prost(int32, optional, tag = "4")]
16529    pub koff_cnt: ::core::option::Option<i32>,
16530}
16531#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16532pub struct MdpCompareBwFtraceEvent {
16533    #[prost(uint64, optional, tag = "1")]
16534    pub new_ab: ::core::option::Option<u64>,
16535    #[prost(uint64, optional, tag = "2")]
16536    pub new_ib: ::core::option::Option<u64>,
16537    #[prost(uint64, optional, tag = "3")]
16538    pub new_wb: ::core::option::Option<u64>,
16539    #[prost(uint64, optional, tag = "4")]
16540    pub old_ab: ::core::option::Option<u64>,
16541    #[prost(uint64, optional, tag = "5")]
16542    pub old_ib: ::core::option::Option<u64>,
16543    #[prost(uint64, optional, tag = "6")]
16544    pub old_wb: ::core::option::Option<u64>,
16545    #[prost(uint32, optional, tag = "7")]
16546    pub params_changed: ::core::option::Option<u32>,
16547    #[prost(uint32, optional, tag = "8")]
16548    pub update_bw: ::core::option::Option<u32>,
16549}
16550#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16551pub struct MdpPerfSetPanicLutsFtraceEvent {
16552    #[prost(uint32, optional, tag = "1")]
16553    pub pnum: ::core::option::Option<u32>,
16554    #[prost(uint32, optional, tag = "2")]
16555    pub fmt: ::core::option::Option<u32>,
16556    #[prost(uint32, optional, tag = "3")]
16557    pub mode: ::core::option::Option<u32>,
16558    #[prost(uint32, optional, tag = "4")]
16559    pub panic_lut: ::core::option::Option<u32>,
16560    #[prost(uint32, optional, tag = "5")]
16561    pub robust_lut: ::core::option::Option<u32>,
16562}
16563#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16564pub struct MdpSsppSetFtraceEvent {
16565    #[prost(uint32, optional, tag = "1")]
16566    pub num: ::core::option::Option<u32>,
16567    #[prost(uint32, optional, tag = "2")]
16568    pub play_cnt: ::core::option::Option<u32>,
16569    #[prost(uint32, optional, tag = "3")]
16570    pub mixer: ::core::option::Option<u32>,
16571    #[prost(uint32, optional, tag = "4")]
16572    pub stage: ::core::option::Option<u32>,
16573    #[prost(uint32, optional, tag = "5")]
16574    pub flags: ::core::option::Option<u32>,
16575    #[prost(uint32, optional, tag = "6")]
16576    pub format: ::core::option::Option<u32>,
16577    #[prost(uint32, optional, tag = "7")]
16578    pub img_w: ::core::option::Option<u32>,
16579    #[prost(uint32, optional, tag = "8")]
16580    pub img_h: ::core::option::Option<u32>,
16581    #[prost(uint32, optional, tag = "9")]
16582    pub src_x: ::core::option::Option<u32>,
16583    #[prost(uint32, optional, tag = "10")]
16584    pub src_y: ::core::option::Option<u32>,
16585    #[prost(uint32, optional, tag = "11")]
16586    pub src_w: ::core::option::Option<u32>,
16587    #[prost(uint32, optional, tag = "12")]
16588    pub src_h: ::core::option::Option<u32>,
16589    #[prost(uint32, optional, tag = "13")]
16590    pub dst_x: ::core::option::Option<u32>,
16591    #[prost(uint32, optional, tag = "14")]
16592    pub dst_y: ::core::option::Option<u32>,
16593    #[prost(uint32, optional, tag = "15")]
16594    pub dst_w: ::core::option::Option<u32>,
16595    #[prost(uint32, optional, tag = "16")]
16596    pub dst_h: ::core::option::Option<u32>,
16597}
16598#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16599pub struct MdpCmdReadptrDoneFtraceEvent {
16600    #[prost(uint32, optional, tag = "1")]
16601    pub ctl_num: ::core::option::Option<u32>,
16602    #[prost(int32, optional, tag = "2")]
16603    pub koff_cnt: ::core::option::Option<i32>,
16604}
16605#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16606pub struct MdpMisrCrcFtraceEvent {
16607    #[prost(uint32, optional, tag = "1")]
16608    pub block_id: ::core::option::Option<u32>,
16609    #[prost(uint32, optional, tag = "2")]
16610    pub vsync_cnt: ::core::option::Option<u32>,
16611    #[prost(uint32, optional, tag = "3")]
16612    pub crc: ::core::option::Option<u32>,
16613}
16614#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16615pub struct MdpPerfSetQosLutsFtraceEvent {
16616    #[prost(uint32, optional, tag = "1")]
16617    pub pnum: ::core::option::Option<u32>,
16618    #[prost(uint32, optional, tag = "2")]
16619    pub fmt: ::core::option::Option<u32>,
16620    #[prost(uint32, optional, tag = "3")]
16621    pub intf: ::core::option::Option<u32>,
16622    #[prost(uint32, optional, tag = "4")]
16623    pub rot: ::core::option::Option<u32>,
16624    #[prost(uint32, optional, tag = "5")]
16625    pub fl: ::core::option::Option<u32>,
16626    #[prost(uint32, optional, tag = "6")]
16627    pub lut: ::core::option::Option<u32>,
16628    #[prost(uint32, optional, tag = "7")]
16629    pub linear: ::core::option::Option<u32>,
16630}
16631#[derive(Clone, PartialEq, ::prost::Message)]
16632pub struct MdpTraceCounterFtraceEvent {
16633    #[prost(int32, optional, tag = "1")]
16634    pub pid: ::core::option::Option<i32>,
16635    #[prost(string, optional, tag = "2")]
16636    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
16637    #[prost(int32, optional, tag = "3")]
16638    pub value: ::core::option::Option<i32>,
16639}
16640#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16641pub struct MdpCmdReleaseBwFtraceEvent {
16642    #[prost(uint32, optional, tag = "1")]
16643    pub ctl_num: ::core::option::Option<u32>,
16644}
16645#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16646pub struct MdpMixerUpdateFtraceEvent {
16647    #[prost(uint32, optional, tag = "1")]
16648    pub mixer_num: ::core::option::Option<u32>,
16649}
16650#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16651pub struct MdpPerfSetWmLevelsFtraceEvent {
16652    #[prost(uint32, optional, tag = "1")]
16653    pub pnum: ::core::option::Option<u32>,
16654    #[prost(uint32, optional, tag = "2")]
16655    pub use_space: ::core::option::Option<u32>,
16656    #[prost(uint32, optional, tag = "3")]
16657    pub priority_bytes: ::core::option::Option<u32>,
16658    #[prost(uint32, optional, tag = "4")]
16659    pub wm0: ::core::option::Option<u32>,
16660    #[prost(uint32, optional, tag = "5")]
16661    pub wm1: ::core::option::Option<u32>,
16662    #[prost(uint32, optional, tag = "6")]
16663    pub wm2: ::core::option::Option<u32>,
16664    #[prost(uint32, optional, tag = "7")]
16665    pub mb_cnt: ::core::option::Option<u32>,
16666    #[prost(uint32, optional, tag = "8")]
16667    pub mb_size: ::core::option::Option<u32>,
16668}
16669#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16670pub struct MdpVideoUnderrunDoneFtraceEvent {
16671    #[prost(uint32, optional, tag = "1")]
16672    pub ctl_num: ::core::option::Option<u32>,
16673    #[prost(uint32, optional, tag = "2")]
16674    pub underrun_cnt: ::core::option::Option<u32>,
16675}
16676#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16677pub struct MdpCmdWaitPingpongFtraceEvent {
16678    #[prost(uint32, optional, tag = "1")]
16679    pub ctl_num: ::core::option::Option<u32>,
16680    #[prost(int32, optional, tag = "2")]
16681    pub kickoff_cnt: ::core::option::Option<i32>,
16682}
16683#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16684pub struct MdpPerfPrefillCalcFtraceEvent {
16685    #[prost(uint32, optional, tag = "1")]
16686    pub pnum: ::core::option::Option<u32>,
16687    #[prost(uint32, optional, tag = "2")]
16688    pub latency_buf: ::core::option::Option<u32>,
16689    #[prost(uint32, optional, tag = "3")]
16690    pub ot: ::core::option::Option<u32>,
16691    #[prost(uint32, optional, tag = "4")]
16692    pub y_buf: ::core::option::Option<u32>,
16693    #[prost(uint32, optional, tag = "5")]
16694    pub y_scaler: ::core::option::Option<u32>,
16695    #[prost(uint32, optional, tag = "6")]
16696    pub pp_lines: ::core::option::Option<u32>,
16697    #[prost(uint32, optional, tag = "7")]
16698    pub pp_bytes: ::core::option::Option<u32>,
16699    #[prost(uint32, optional, tag = "8")]
16700    pub post_sc: ::core::option::Option<u32>,
16701    #[prost(uint32, optional, tag = "9")]
16702    pub fbc_bytes: ::core::option::Option<u32>,
16703    #[prost(uint32, optional, tag = "10")]
16704    pub prefill_bytes: ::core::option::Option<u32>,
16705}
16706#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16707pub struct MdpPerfUpdateBusFtraceEvent {
16708    #[prost(int32, optional, tag = "1")]
16709    pub client: ::core::option::Option<i32>,
16710    #[prost(uint64, optional, tag = "2")]
16711    pub ab_quota: ::core::option::Option<u64>,
16712    #[prost(uint64, optional, tag = "3")]
16713    pub ib_quota: ::core::option::Option<u64>,
16714}
16715#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16716pub struct RotatorBwAoAsContextFtraceEvent {
16717    #[prost(uint32, optional, tag = "1")]
16718    pub state: ::core::option::Option<u32>,
16719}
16720#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16721pub struct MmEventRecordFtraceEvent {
16722    #[prost(uint32, optional, tag = "1")]
16723    pub avg_lat: ::core::option::Option<u32>,
16724    #[prost(uint32, optional, tag = "2")]
16725    pub count: ::core::option::Option<u32>,
16726    #[prost(uint32, optional, tag = "3")]
16727    pub max_lat: ::core::option::Option<u32>,
16728    #[prost(uint32, optional, tag = "4")]
16729    pub r#type: ::core::option::Option<u32>,
16730}
16731#[derive(Clone, PartialEq, ::prost::Message)]
16732pub struct NetifReceiveSkbFtraceEvent {
16733    #[prost(uint32, optional, tag = "1")]
16734    pub len: ::core::option::Option<u32>,
16735    #[prost(string, optional, tag = "2")]
16736    pub name: ::core::option::Option<::prost::alloc::string::String>,
16737    #[prost(uint64, optional, tag = "3")]
16738    pub skbaddr: ::core::option::Option<u64>,
16739}
16740#[derive(Clone, PartialEq, ::prost::Message)]
16741pub struct NetDevXmitFtraceEvent {
16742    #[prost(uint32, optional, tag = "1")]
16743    pub len: ::core::option::Option<u32>,
16744    #[prost(string, optional, tag = "2")]
16745    pub name: ::core::option::Option<::prost::alloc::string::String>,
16746    #[prost(int32, optional, tag = "3")]
16747    pub rc: ::core::option::Option<i32>,
16748    #[prost(uint64, optional, tag = "4")]
16749    pub skbaddr: ::core::option::Option<u64>,
16750}
16751#[derive(Clone, PartialEq, ::prost::Message)]
16752pub struct NapiGroReceiveEntryFtraceEvent {
16753    #[prost(uint32, optional, tag = "1")]
16754    pub data_len: ::core::option::Option<u32>,
16755    #[prost(uint32, optional, tag = "2")]
16756    pub gso_size: ::core::option::Option<u32>,
16757    #[prost(uint32, optional, tag = "3")]
16758    pub gso_type: ::core::option::Option<u32>,
16759    #[prost(uint32, optional, tag = "4")]
16760    pub hash: ::core::option::Option<u32>,
16761    #[prost(uint32, optional, tag = "5")]
16762    pub ip_summed: ::core::option::Option<u32>,
16763    #[prost(uint32, optional, tag = "6")]
16764    pub l4_hash: ::core::option::Option<u32>,
16765    #[prost(uint32, optional, tag = "7")]
16766    pub len: ::core::option::Option<u32>,
16767    #[prost(int32, optional, tag = "8")]
16768    pub mac_header: ::core::option::Option<i32>,
16769    #[prost(uint32, optional, tag = "9")]
16770    pub mac_header_valid: ::core::option::Option<u32>,
16771    #[prost(string, optional, tag = "10")]
16772    pub name: ::core::option::Option<::prost::alloc::string::String>,
16773    #[prost(uint32, optional, tag = "11")]
16774    pub napi_id: ::core::option::Option<u32>,
16775    #[prost(uint32, optional, tag = "12")]
16776    pub nr_frags: ::core::option::Option<u32>,
16777    #[prost(uint32, optional, tag = "13")]
16778    pub protocol: ::core::option::Option<u32>,
16779    #[prost(uint32, optional, tag = "14")]
16780    pub queue_mapping: ::core::option::Option<u32>,
16781    #[prost(uint64, optional, tag = "15")]
16782    pub skbaddr: ::core::option::Option<u64>,
16783    #[prost(uint32, optional, tag = "16")]
16784    pub truesize: ::core::option::Option<u32>,
16785    #[prost(uint32, optional, tag = "17")]
16786    pub vlan_proto: ::core::option::Option<u32>,
16787    #[prost(uint32, optional, tag = "18")]
16788    pub vlan_tagged: ::core::option::Option<u32>,
16789    #[prost(uint32, optional, tag = "19")]
16790    pub vlan_tci: ::core::option::Option<u32>,
16791}
16792#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16793pub struct NapiGroReceiveExitFtraceEvent {
16794    #[prost(int32, optional, tag = "1")]
16795    pub ret: ::core::option::Option<i32>,
16796}
16797#[derive(Clone, PartialEq, ::prost::Message)]
16798pub struct OomScoreAdjUpdateFtraceEvent {
16799    #[prost(string, optional, tag = "1")]
16800    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16801    #[prost(int32, optional, tag = "2")]
16802    pub oom_score_adj: ::core::option::Option<i32>,
16803    #[prost(int32, optional, tag = "3")]
16804    pub pid: ::core::option::Option<i32>,
16805}
16806#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16807pub struct MarkVictimFtraceEvent {
16808    #[prost(int32, optional, tag = "1")]
16809    pub pid: ::core::option::Option<i32>,
16810}
16811#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16812pub struct DsiCmdFifoStatusFtraceEvent {
16813    #[prost(uint32, optional, tag = "1")]
16814    pub header: ::core::option::Option<u32>,
16815    #[prost(uint32, optional, tag = "2")]
16816    pub payload: ::core::option::Option<u32>,
16817}
16818#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16819pub struct DsiRxFtraceEvent {
16820    #[prost(uint32, optional, tag = "1")]
16821    pub cmd: ::core::option::Option<u32>,
16822    #[prost(uint32, optional, tag = "2")]
16823    pub rx_buf: ::core::option::Option<u32>,
16824}
16825#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16826pub struct DsiTxFtraceEvent {
16827    #[prost(uint32, optional, tag = "1")]
16828    pub last: ::core::option::Option<u32>,
16829    #[prost(uint32, optional, tag = "2")]
16830    pub tx_buf: ::core::option::Option<u32>,
16831    #[prost(uint32, optional, tag = "3")]
16832    pub r#type: ::core::option::Option<u32>,
16833}
16834#[derive(Clone, PartialEq, ::prost::Message)]
16835pub struct PanelWriteGenericFtraceEvent {
16836    #[prost(int32, optional, tag = "1")]
16837    pub pid: ::core::option::Option<i32>,
16838    #[prost(string, optional, tag = "2")]
16839    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
16840    #[prost(uint32, optional, tag = "3")]
16841    pub trace_begin: ::core::option::Option<u32>,
16842    #[prost(string, optional, tag = "4")]
16843    pub name: ::core::option::Option<::prost::alloc::string::String>,
16844    #[prost(uint32, optional, tag = "5")]
16845    pub r#type: ::core::option::Option<u32>,
16846    #[prost(int32, optional, tag = "6")]
16847    pub value: ::core::option::Option<i32>,
16848}
16849#[derive(Clone, PartialEq, ::prost::Message)]
16850pub struct SchedSwitchWithCtrsFtraceEvent {
16851    #[prost(int32, optional, tag = "1")]
16852    pub old_pid: ::core::option::Option<i32>,
16853    #[prost(int32, optional, tag = "2")]
16854    pub new_pid: ::core::option::Option<i32>,
16855    #[prost(uint32, optional, tag = "3")]
16856    pub cctr: ::core::option::Option<u32>,
16857    #[prost(uint32, optional, tag = "4")]
16858    pub ctr0: ::core::option::Option<u32>,
16859    #[prost(uint32, optional, tag = "5")]
16860    pub ctr1: ::core::option::Option<u32>,
16861    #[prost(uint32, optional, tag = "6")]
16862    pub ctr2: ::core::option::Option<u32>,
16863    #[prost(uint32, optional, tag = "7")]
16864    pub ctr3: ::core::option::Option<u32>,
16865    #[prost(uint32, optional, tag = "8")]
16866    pub lctr0: ::core::option::Option<u32>,
16867    #[prost(uint32, optional, tag = "9")]
16868    pub lctr1: ::core::option::Option<u32>,
16869    #[prost(uint32, optional, tag = "10")]
16870    pub ctr4: ::core::option::Option<u32>,
16871    #[prost(uint32, optional, tag = "11")]
16872    pub ctr5: ::core::option::Option<u32>,
16873    #[prost(string, optional, tag = "12")]
16874    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
16875    #[prost(int32, optional, tag = "13")]
16876    pub prev_pid: ::core::option::Option<i32>,
16877    #[prost(uint32, optional, tag = "14")]
16878    pub cyc: ::core::option::Option<u32>,
16879    #[prost(uint32, optional, tag = "15")]
16880    pub inst: ::core::option::Option<u32>,
16881    #[prost(uint32, optional, tag = "16")]
16882    pub stallbm: ::core::option::Option<u32>,
16883    #[prost(uint32, optional, tag = "17")]
16884    pub l3dm: ::core::option::Option<u32>,
16885}
16886#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16887pub struct CpuFrequencyFtraceEvent {
16888    #[prost(uint32, optional, tag = "1")]
16889    pub state: ::core::option::Option<u32>,
16890    #[prost(uint32, optional, tag = "2")]
16891    pub cpu_id: ::core::option::Option<u32>,
16892}
16893#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16894pub struct CpuFrequencyLimitsFtraceEvent {
16895    #[prost(uint32, optional, tag = "1")]
16896    pub min_freq: ::core::option::Option<u32>,
16897    #[prost(uint32, optional, tag = "2")]
16898    pub max_freq: ::core::option::Option<u32>,
16899    #[prost(uint32, optional, tag = "3")]
16900    pub cpu_id: ::core::option::Option<u32>,
16901}
16902#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16903pub struct CpuIdleFtraceEvent {
16904    #[prost(uint32, optional, tag = "1")]
16905    pub state: ::core::option::Option<u32>,
16906    #[prost(uint32, optional, tag = "2")]
16907    pub cpu_id: ::core::option::Option<u32>,
16908}
16909#[derive(Clone, PartialEq, ::prost::Message)]
16910pub struct ClockEnableFtraceEvent {
16911    #[prost(string, optional, tag = "1")]
16912    pub name: ::core::option::Option<::prost::alloc::string::String>,
16913    #[prost(uint64, optional, tag = "2")]
16914    pub state: ::core::option::Option<u64>,
16915    #[prost(uint64, optional, tag = "3")]
16916    pub cpu_id: ::core::option::Option<u64>,
16917}
16918#[derive(Clone, PartialEq, ::prost::Message)]
16919pub struct ClockDisableFtraceEvent {
16920    #[prost(string, optional, tag = "1")]
16921    pub name: ::core::option::Option<::prost::alloc::string::String>,
16922    #[prost(uint64, optional, tag = "2")]
16923    pub state: ::core::option::Option<u64>,
16924    #[prost(uint64, optional, tag = "3")]
16925    pub cpu_id: ::core::option::Option<u64>,
16926}
16927#[derive(Clone, PartialEq, ::prost::Message)]
16928pub struct ClockSetRateFtraceEvent {
16929    #[prost(string, optional, tag = "1")]
16930    pub name: ::core::option::Option<::prost::alloc::string::String>,
16931    #[prost(uint64, optional, tag = "2")]
16932    pub state: ::core::option::Option<u64>,
16933    #[prost(uint64, optional, tag = "3")]
16934    pub cpu_id: ::core::option::Option<u64>,
16935}
16936#[derive(Clone, PartialEq, ::prost::Message)]
16937pub struct SuspendResumeFtraceEvent {
16938    #[prost(string, optional, tag = "1")]
16939    pub action: ::core::option::Option<::prost::alloc::string::String>,
16940    #[prost(int32, optional, tag = "2")]
16941    pub val: ::core::option::Option<i32>,
16942    #[prost(uint32, optional, tag = "3")]
16943    pub start: ::core::option::Option<u32>,
16944}
16945#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16946pub struct GpuFrequencyFtraceEvent {
16947    #[prost(uint32, optional, tag = "1")]
16948    pub gpu_id: ::core::option::Option<u32>,
16949    #[prost(uint32, optional, tag = "2")]
16950    pub state: ::core::option::Option<u32>,
16951}
16952#[derive(Clone, PartialEq, ::prost::Message)]
16953pub struct WakeupSourceActivateFtraceEvent {
16954    #[prost(string, optional, tag = "1")]
16955    pub name: ::core::option::Option<::prost::alloc::string::String>,
16956    #[prost(uint64, optional, tag = "2")]
16957    pub state: ::core::option::Option<u64>,
16958}
16959#[derive(Clone, PartialEq, ::prost::Message)]
16960pub struct WakeupSourceDeactivateFtraceEvent {
16961    #[prost(string, optional, tag = "1")]
16962    pub name: ::core::option::Option<::prost::alloc::string::String>,
16963    #[prost(uint64, optional, tag = "2")]
16964    pub state: ::core::option::Option<u64>,
16965}
16966#[derive(Clone, Copy, PartialEq, ::prost::Message)]
16967pub struct GpuWorkPeriodFtraceEvent {
16968    #[prost(uint32, optional, tag = "1")]
16969    pub gpu_id: ::core::option::Option<u32>,
16970    #[prost(uint32, optional, tag = "2")]
16971    pub uid: ::core::option::Option<u32>,
16972    #[prost(uint64, optional, tag = "3")]
16973    pub start_time_ns: ::core::option::Option<u64>,
16974    #[prost(uint64, optional, tag = "4")]
16975    pub end_time_ns: ::core::option::Option<u64>,
16976    #[prost(uint64, optional, tag = "5")]
16977    pub total_active_duration_ns: ::core::option::Option<u64>,
16978}
16979#[derive(Clone, PartialEq, ::prost::Message)]
16980pub struct DevicePmCallbackStartFtraceEvent {
16981    #[prost(string, optional, tag = "1")]
16982    pub device: ::core::option::Option<::prost::alloc::string::String>,
16983    #[prost(string, optional, tag = "2")]
16984    pub driver: ::core::option::Option<::prost::alloc::string::String>,
16985    #[prost(string, optional, tag = "3")]
16986    pub parent: ::core::option::Option<::prost::alloc::string::String>,
16987    #[prost(string, optional, tag = "4")]
16988    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
16989    #[prost(int32, optional, tag = "5")]
16990    pub event: ::core::option::Option<i32>,
16991}
16992#[derive(Clone, PartialEq, ::prost::Message)]
16993pub struct DevicePmCallbackEndFtraceEvent {
16994    #[prost(string, optional, tag = "1")]
16995    pub device: ::core::option::Option<::prost::alloc::string::String>,
16996    #[prost(string, optional, tag = "2")]
16997    pub driver: ::core::option::Option<::prost::alloc::string::String>,
16998    #[prost(int32, optional, tag = "3")]
16999    pub error: ::core::option::Option<i32>,
17000}
17001#[derive(Clone, PartialEq, ::prost::Message)]
17002pub struct ConsoleFtraceEvent {
17003    #[prost(string, optional, tag = "1")]
17004    pub msg: ::core::option::Option<::prost::alloc::string::String>,
17005}
17006#[derive(Clone, PartialEq, ::prost::Message)]
17007pub struct SysEnterFtraceEvent {
17008    #[prost(int64, optional, tag = "1")]
17009    pub id: ::core::option::Option<i64>,
17010    #[prost(uint64, repeated, packed = "false", tag = "2")]
17011    pub args: ::prost::alloc::vec::Vec<u64>,
17012}
17013#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17014pub struct SysExitFtraceEvent {
17015    #[prost(int64, optional, tag = "1")]
17016    pub id: ::core::option::Option<i64>,
17017    #[prost(int64, optional, tag = "2")]
17018    pub ret: ::core::option::Option<i64>,
17019}
17020#[derive(Clone, PartialEq, ::prost::Message)]
17021pub struct RegulatorDisableFtraceEvent {
17022    #[prost(string, optional, tag = "1")]
17023    pub name: ::core::option::Option<::prost::alloc::string::String>,
17024}
17025#[derive(Clone, PartialEq, ::prost::Message)]
17026pub struct RegulatorDisableCompleteFtraceEvent {
17027    #[prost(string, optional, tag = "1")]
17028    pub name: ::core::option::Option<::prost::alloc::string::String>,
17029}
17030#[derive(Clone, PartialEq, ::prost::Message)]
17031pub struct RegulatorEnableFtraceEvent {
17032    #[prost(string, optional, tag = "1")]
17033    pub name: ::core::option::Option<::prost::alloc::string::String>,
17034}
17035#[derive(Clone, PartialEq, ::prost::Message)]
17036pub struct RegulatorEnableCompleteFtraceEvent {
17037    #[prost(string, optional, tag = "1")]
17038    pub name: ::core::option::Option<::prost::alloc::string::String>,
17039}
17040#[derive(Clone, PartialEq, ::prost::Message)]
17041pub struct RegulatorEnableDelayFtraceEvent {
17042    #[prost(string, optional, tag = "1")]
17043    pub name: ::core::option::Option<::prost::alloc::string::String>,
17044}
17045#[derive(Clone, PartialEq, ::prost::Message)]
17046pub struct RegulatorSetVoltageFtraceEvent {
17047    #[prost(string, optional, tag = "1")]
17048    pub name: ::core::option::Option<::prost::alloc::string::String>,
17049    #[prost(int32, optional, tag = "2")]
17050    pub min: ::core::option::Option<i32>,
17051    #[prost(int32, optional, tag = "3")]
17052    pub max: ::core::option::Option<i32>,
17053}
17054#[derive(Clone, PartialEq, ::prost::Message)]
17055pub struct RegulatorSetVoltageCompleteFtraceEvent {
17056    #[prost(string, optional, tag = "1")]
17057    pub name: ::core::option::Option<::prost::alloc::string::String>,
17058    #[prost(uint32, optional, tag = "2")]
17059    pub val: ::core::option::Option<u32>,
17060}
17061#[derive(Clone, PartialEq, ::prost::Message)]
17062pub struct RpmStatusFtraceEvent {
17063    #[prost(string, optional, tag = "1")]
17064    pub name: ::core::option::Option<::prost::alloc::string::String>,
17065    #[prost(int32, optional, tag = "2")]
17066    pub status: ::core::option::Option<i32>,
17067}
17068#[derive(Clone, PartialEq, ::prost::Message)]
17069pub struct SamsungTracingMarkWriteFtraceEvent {
17070    #[prost(int32, optional, tag = "1")]
17071    pub pid: ::core::option::Option<i32>,
17072    #[prost(string, optional, tag = "2")]
17073    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
17074    #[prost(uint32, optional, tag = "3")]
17075    pub trace_begin: ::core::option::Option<u32>,
17076    #[prost(uint32, optional, tag = "4")]
17077    pub trace_type: ::core::option::Option<u32>,
17078    #[prost(int32, optional, tag = "5")]
17079    pub value: ::core::option::Option<i32>,
17080}
17081#[derive(Clone, PartialEq, ::prost::Message)]
17082pub struct SchedSwitchFtraceEvent {
17083    #[prost(string, optional, tag = "1")]
17084    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
17085    #[prost(int32, optional, tag = "2")]
17086    pub prev_pid: ::core::option::Option<i32>,
17087    #[prost(int32, optional, tag = "3")]
17088    pub prev_prio: ::core::option::Option<i32>,
17089    #[prost(int64, optional, tag = "4")]
17090    pub prev_state: ::core::option::Option<i64>,
17091    #[prost(string, optional, tag = "5")]
17092    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
17093    #[prost(int32, optional, tag = "6")]
17094    pub next_pid: ::core::option::Option<i32>,
17095    #[prost(int32, optional, tag = "7")]
17096    pub next_prio: ::core::option::Option<i32>,
17097}
17098#[derive(Clone, PartialEq, ::prost::Message)]
17099pub struct SchedWakeupFtraceEvent {
17100    #[prost(string, optional, tag = "1")]
17101    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17102    #[prost(int32, optional, tag = "2")]
17103    pub pid: ::core::option::Option<i32>,
17104    #[prost(int32, optional, tag = "3")]
17105    pub prio: ::core::option::Option<i32>,
17106    #[prost(int32, optional, tag = "4")]
17107    pub success: ::core::option::Option<i32>,
17108    #[prost(int32, optional, tag = "5")]
17109    pub target_cpu: ::core::option::Option<i32>,
17110}
17111#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17112pub struct SchedBlockedReasonFtraceEvent {
17113    #[prost(int32, optional, tag = "1")]
17114    pub pid: ::core::option::Option<i32>,
17115    #[prost(uint64, optional, tag = "2")]
17116    pub caller: ::core::option::Option<u64>,
17117    #[prost(uint32, optional, tag = "3")]
17118    pub io_wait: ::core::option::Option<u32>,
17119}
17120#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17121pub struct SchedCpuHotplugFtraceEvent {
17122    #[prost(int32, optional, tag = "1")]
17123    pub affected_cpu: ::core::option::Option<i32>,
17124    #[prost(int32, optional, tag = "2")]
17125    pub error: ::core::option::Option<i32>,
17126    #[prost(int32, optional, tag = "3")]
17127    pub status: ::core::option::Option<i32>,
17128}
17129#[derive(Clone, PartialEq, ::prost::Message)]
17130pub struct SchedWakingFtraceEvent {
17131    #[prost(string, optional, tag = "1")]
17132    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17133    #[prost(int32, optional, tag = "2")]
17134    pub pid: ::core::option::Option<i32>,
17135    #[prost(int32, optional, tag = "3")]
17136    pub prio: ::core::option::Option<i32>,
17137    #[prost(int32, optional, tag = "4")]
17138    pub success: ::core::option::Option<i32>,
17139    #[prost(int32, optional, tag = "5")]
17140    pub target_cpu: ::core::option::Option<i32>,
17141}
17142#[derive(Clone, PartialEq, ::prost::Message)]
17143pub struct SchedWakeupNewFtraceEvent {
17144    #[prost(string, optional, tag = "1")]
17145    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17146    #[prost(int32, optional, tag = "2")]
17147    pub pid: ::core::option::Option<i32>,
17148    #[prost(int32, optional, tag = "3")]
17149    pub prio: ::core::option::Option<i32>,
17150    #[prost(int32, optional, tag = "4")]
17151    pub success: ::core::option::Option<i32>,
17152    #[prost(int32, optional, tag = "5")]
17153    pub target_cpu: ::core::option::Option<i32>,
17154}
17155#[derive(Clone, PartialEq, ::prost::Message)]
17156pub struct SchedProcessExecFtraceEvent {
17157    #[prost(string, optional, tag = "1")]
17158    pub filename: ::core::option::Option<::prost::alloc::string::String>,
17159    #[prost(int32, optional, tag = "2")]
17160    pub pid: ::core::option::Option<i32>,
17161    #[prost(int32, optional, tag = "3")]
17162    pub old_pid: ::core::option::Option<i32>,
17163}
17164#[derive(Clone, PartialEq, ::prost::Message)]
17165pub struct SchedProcessExitFtraceEvent {
17166    #[prost(string, optional, tag = "1")]
17167    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17168    #[prost(int32, optional, tag = "2")]
17169    pub pid: ::core::option::Option<i32>,
17170    #[prost(int32, optional, tag = "3")]
17171    pub tgid: ::core::option::Option<i32>,
17172    #[prost(int32, optional, tag = "4")]
17173    pub prio: ::core::option::Option<i32>,
17174}
17175#[derive(Clone, PartialEq, ::prost::Message)]
17176pub struct SchedProcessForkFtraceEvent {
17177    #[prost(string, optional, tag = "1")]
17178    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
17179    #[prost(int32, optional, tag = "2")]
17180    pub parent_pid: ::core::option::Option<i32>,
17181    #[prost(string, optional, tag = "3")]
17182    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
17183    #[prost(int32, optional, tag = "4")]
17184    pub child_pid: ::core::option::Option<i32>,
17185}
17186#[derive(Clone, PartialEq, ::prost::Message)]
17187pub struct SchedProcessFreeFtraceEvent {
17188    #[prost(string, optional, tag = "1")]
17189    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17190    #[prost(int32, optional, tag = "2")]
17191    pub pid: ::core::option::Option<i32>,
17192    #[prost(int32, optional, tag = "3")]
17193    pub prio: ::core::option::Option<i32>,
17194}
17195#[derive(Clone, PartialEq, ::prost::Message)]
17196pub struct SchedProcessHangFtraceEvent {
17197    #[prost(string, optional, tag = "1")]
17198    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17199    #[prost(int32, optional, tag = "2")]
17200    pub pid: ::core::option::Option<i32>,
17201}
17202#[derive(Clone, PartialEq, ::prost::Message)]
17203pub struct SchedProcessWaitFtraceEvent {
17204    #[prost(string, optional, tag = "1")]
17205    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17206    #[prost(int32, optional, tag = "2")]
17207    pub pid: ::core::option::Option<i32>,
17208    #[prost(int32, optional, tag = "3")]
17209    pub prio: ::core::option::Option<i32>,
17210}
17211#[derive(Clone, PartialEq, ::prost::Message)]
17212pub struct SchedPiSetprioFtraceEvent {
17213    #[prost(string, optional, tag = "1")]
17214    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17215    #[prost(int32, optional, tag = "2")]
17216    pub newprio: ::core::option::Option<i32>,
17217    #[prost(int32, optional, tag = "3")]
17218    pub oldprio: ::core::option::Option<i32>,
17219    #[prost(int32, optional, tag = "4")]
17220    pub pid: ::core::option::Option<i32>,
17221}
17222#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17223pub struct SchedCpuUtilCfsFtraceEvent {
17224    #[prost(int32, optional, tag = "1")]
17225    pub active: ::core::option::Option<i32>,
17226    #[prost(uint64, optional, tag = "2")]
17227    pub capacity: ::core::option::Option<u64>,
17228    #[prost(uint64, optional, tag = "3")]
17229    pub capacity_orig: ::core::option::Option<u64>,
17230    #[prost(uint32, optional, tag = "4")]
17231    pub cpu: ::core::option::Option<u32>,
17232    #[prost(uint64, optional, tag = "5")]
17233    pub cpu_importance: ::core::option::Option<u64>,
17234    #[prost(uint64, optional, tag = "6")]
17235    pub cpu_util: ::core::option::Option<u64>,
17236    #[prost(uint32, optional, tag = "7")]
17237    pub exit_lat: ::core::option::Option<u32>,
17238    #[prost(uint64, optional, tag = "8")]
17239    pub group_capacity: ::core::option::Option<u64>,
17240    #[prost(uint32, optional, tag = "9")]
17241    pub grp_overutilized: ::core::option::Option<u32>,
17242    #[prost(uint32, optional, tag = "10")]
17243    pub idle_cpu: ::core::option::Option<u32>,
17244    #[prost(uint32, optional, tag = "11")]
17245    pub nr_running: ::core::option::Option<u32>,
17246    #[prost(int64, optional, tag = "12")]
17247    pub spare_cap: ::core::option::Option<i64>,
17248    #[prost(uint32, optional, tag = "13")]
17249    pub task_fits: ::core::option::Option<u32>,
17250    #[prost(uint64, optional, tag = "14")]
17251    pub wake_group_util: ::core::option::Option<u64>,
17252    #[prost(uint64, optional, tag = "15")]
17253    pub wake_util: ::core::option::Option<u64>,
17254}
17255#[derive(Clone, PartialEq, ::prost::Message)]
17256pub struct SchedMigrateTaskFtraceEvent {
17257    #[prost(string, optional, tag = "1")]
17258    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17259    #[prost(int32, optional, tag = "2")]
17260    pub pid: ::core::option::Option<i32>,
17261    #[prost(int32, optional, tag = "3")]
17262    pub prio: ::core::option::Option<i32>,
17263    #[prost(int32, optional, tag = "4")]
17264    pub orig_cpu: ::core::option::Option<i32>,
17265    #[prost(int32, optional, tag = "5")]
17266    pub dest_cpu: ::core::option::Option<i32>,
17267    #[prost(int32, optional, tag = "6")]
17268    pub running: ::core::option::Option<i32>,
17269    #[prost(uint32, optional, tag = "7")]
17270    pub load: ::core::option::Option<u32>,
17271}
17272#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17273pub struct ScmCallStartFtraceEvent {
17274    #[prost(uint32, optional, tag = "1")]
17275    pub arginfo: ::core::option::Option<u32>,
17276    #[prost(uint64, optional, tag = "2")]
17277    pub x0: ::core::option::Option<u64>,
17278    #[prost(uint64, optional, tag = "3")]
17279    pub x5: ::core::option::Option<u64>,
17280}
17281#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17282pub struct ScmCallEndFtraceEvent {}
17283#[derive(Clone, PartialEq, ::prost::Message)]
17284pub struct SdeTracingMarkWriteFtraceEvent {
17285    #[prost(int32, optional, tag = "1")]
17286    pub pid: ::core::option::Option<i32>,
17287    #[prost(string, optional, tag = "2")]
17288    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
17289    #[prost(uint32, optional, tag = "3")]
17290    pub trace_type: ::core::option::Option<u32>,
17291    #[prost(int32, optional, tag = "4")]
17292    pub value: ::core::option::Option<i32>,
17293    #[prost(uint32, optional, tag = "5")]
17294    pub trace_begin: ::core::option::Option<u32>,
17295}
17296#[derive(Clone, PartialEq, ::prost::Message)]
17297pub struct SdeSdeEvtlogFtraceEvent {
17298    #[prost(string, optional, tag = "1")]
17299    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
17300    #[prost(int32, optional, tag = "2")]
17301    pub pid: ::core::option::Option<i32>,
17302    #[prost(uint32, optional, tag = "3")]
17303    pub tag_id: ::core::option::Option<u32>,
17304}
17305#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17306pub struct SdeSdePerfCalcCrtcFtraceEvent {
17307    #[prost(uint64, optional, tag = "1")]
17308    pub bw_ctl_ebi: ::core::option::Option<u64>,
17309    #[prost(uint64, optional, tag = "2")]
17310    pub bw_ctl_llcc: ::core::option::Option<u64>,
17311    #[prost(uint64, optional, tag = "3")]
17312    pub bw_ctl_mnoc: ::core::option::Option<u64>,
17313    #[prost(uint32, optional, tag = "4")]
17314    pub core_clk_rate: ::core::option::Option<u32>,
17315    #[prost(uint32, optional, tag = "5")]
17316    pub crtc: ::core::option::Option<u32>,
17317    #[prost(uint64, optional, tag = "6")]
17318    pub ib_ebi: ::core::option::Option<u64>,
17319    #[prost(uint64, optional, tag = "7")]
17320    pub ib_llcc: ::core::option::Option<u64>,
17321    #[prost(uint64, optional, tag = "8")]
17322    pub ib_mnoc: ::core::option::Option<u64>,
17323}
17324#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17325pub struct SdeSdePerfCrtcUpdateFtraceEvent {
17326    #[prost(uint64, optional, tag = "1")]
17327    pub bw_ctl_ebi: ::core::option::Option<u64>,
17328    #[prost(uint64, optional, tag = "2")]
17329    pub bw_ctl_llcc: ::core::option::Option<u64>,
17330    #[prost(uint64, optional, tag = "3")]
17331    pub bw_ctl_mnoc: ::core::option::Option<u64>,
17332    #[prost(uint32, optional, tag = "4")]
17333    pub core_clk_rate: ::core::option::Option<u32>,
17334    #[prost(uint32, optional, tag = "5")]
17335    pub crtc: ::core::option::Option<u32>,
17336    #[prost(int32, optional, tag = "6")]
17337    pub params: ::core::option::Option<i32>,
17338    #[prost(uint64, optional, tag = "7")]
17339    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
17340    #[prost(uint64, optional, tag = "8")]
17341    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
17342    #[prost(uint64, optional, tag = "9")]
17343    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
17344    #[prost(uint32, optional, tag = "10")]
17345    pub stop_req: ::core::option::Option<u32>,
17346    #[prost(uint32, optional, tag = "11")]
17347    pub update_bus: ::core::option::Option<u32>,
17348    #[prost(uint32, optional, tag = "12")]
17349    pub update_clk: ::core::option::Option<u32>,
17350}
17351#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17352pub struct SdeSdePerfSetQosLutsFtraceEvent {
17353    #[prost(uint32, optional, tag = "1")]
17354    pub fl: ::core::option::Option<u32>,
17355    #[prost(uint32, optional, tag = "2")]
17356    pub fmt: ::core::option::Option<u32>,
17357    #[prost(uint64, optional, tag = "3")]
17358    pub lut: ::core::option::Option<u64>,
17359    #[prost(uint32, optional, tag = "4")]
17360    pub lut_usage: ::core::option::Option<u32>,
17361    #[prost(uint32, optional, tag = "5")]
17362    pub pnum: ::core::option::Option<u32>,
17363    #[prost(uint32, optional, tag = "6")]
17364    pub rt: ::core::option::Option<u32>,
17365}
17366#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17367pub struct SdeSdePerfUpdateBusFtraceEvent {
17368    #[prost(uint64, optional, tag = "1")]
17369    pub ab_quota: ::core::option::Option<u64>,
17370    #[prost(uint32, optional, tag = "2")]
17371    pub bus_id: ::core::option::Option<u32>,
17372    #[prost(int32, optional, tag = "3")]
17373    pub client: ::core::option::Option<i32>,
17374    #[prost(uint64, optional, tag = "4")]
17375    pub ib_quota: ::core::option::Option<u64>,
17376}
17377#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17378pub struct SignalDeliverFtraceEvent {
17379    #[prost(int32, optional, tag = "1")]
17380    pub code: ::core::option::Option<i32>,
17381    #[prost(uint64, optional, tag = "2")]
17382    pub sa_flags: ::core::option::Option<u64>,
17383    #[prost(int32, optional, tag = "3")]
17384    pub sig: ::core::option::Option<i32>,
17385}
17386#[derive(Clone, PartialEq, ::prost::Message)]
17387pub struct SignalGenerateFtraceEvent {
17388    #[prost(int32, optional, tag = "1")]
17389    pub code: ::core::option::Option<i32>,
17390    #[prost(string, optional, tag = "2")]
17391    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17392    #[prost(int32, optional, tag = "3")]
17393    pub group: ::core::option::Option<i32>,
17394    #[prost(int32, optional, tag = "4")]
17395    pub pid: ::core::option::Option<i32>,
17396    #[prost(int32, optional, tag = "5")]
17397    pub result: ::core::option::Option<i32>,
17398    #[prost(int32, optional, tag = "6")]
17399    pub sig: ::core::option::Option<i32>,
17400}
17401#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17402pub struct KfreeSkbFtraceEvent {
17403    #[prost(uint64, optional, tag = "1")]
17404    pub location: ::core::option::Option<u64>,
17405    #[prost(uint32, optional, tag = "2")]
17406    pub protocol: ::core::option::Option<u32>,
17407    #[prost(uint64, optional, tag = "3")]
17408    pub skbaddr: ::core::option::Option<u64>,
17409}
17410#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17411pub struct InetSockSetStateFtraceEvent {
17412    #[prost(uint32, optional, tag = "1")]
17413    pub daddr: ::core::option::Option<u32>,
17414    #[prost(uint32, optional, tag = "2")]
17415    pub dport: ::core::option::Option<u32>,
17416    #[prost(uint32, optional, tag = "3")]
17417    pub family: ::core::option::Option<u32>,
17418    #[prost(int32, optional, tag = "4")]
17419    pub newstate: ::core::option::Option<i32>,
17420    #[prost(int32, optional, tag = "5")]
17421    pub oldstate: ::core::option::Option<i32>,
17422    #[prost(uint32, optional, tag = "6")]
17423    pub protocol: ::core::option::Option<u32>,
17424    #[prost(uint32, optional, tag = "7")]
17425    pub saddr: ::core::option::Option<u32>,
17426    #[prost(uint64, optional, tag = "8")]
17427    pub skaddr: ::core::option::Option<u64>,
17428    #[prost(uint32, optional, tag = "9")]
17429    pub sport: ::core::option::Option<u32>,
17430}
17431#[derive(Clone, PartialEq, ::prost::Message)]
17432pub struct SyncPtFtraceEvent {
17433    #[prost(string, optional, tag = "1")]
17434    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
17435    #[prost(string, optional, tag = "2")]
17436    pub value: ::core::option::Option<::prost::alloc::string::String>,
17437}
17438#[derive(Clone, PartialEq, ::prost::Message)]
17439pub struct SyncTimelineFtraceEvent {
17440    #[prost(string, optional, tag = "1")]
17441    pub name: ::core::option::Option<::prost::alloc::string::String>,
17442    #[prost(string, optional, tag = "2")]
17443    pub value: ::core::option::Option<::prost::alloc::string::String>,
17444}
17445#[derive(Clone, PartialEq, ::prost::Message)]
17446pub struct SyncWaitFtraceEvent {
17447    #[prost(string, optional, tag = "1")]
17448    pub name: ::core::option::Option<::prost::alloc::string::String>,
17449    #[prost(int32, optional, tag = "2")]
17450    pub status: ::core::option::Option<i32>,
17451    #[prost(uint32, optional, tag = "3")]
17452    pub begin: ::core::option::Option<u32>,
17453}
17454#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17455pub struct RssStatThrottledFtraceEvent {
17456    #[prost(uint32, optional, tag = "1")]
17457    pub curr: ::core::option::Option<u32>,
17458    #[prost(int32, optional, tag = "2")]
17459    pub member: ::core::option::Option<i32>,
17460    #[prost(uint32, optional, tag = "3")]
17461    pub mm_id: ::core::option::Option<u32>,
17462    #[prost(int64, optional, tag = "4")]
17463    pub size: ::core::option::Option<i64>,
17464}
17465#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17466pub struct SuspendResumeMinimalFtraceEvent {
17467    #[prost(uint32, optional, tag = "1")]
17468    pub start: ::core::option::Option<u32>,
17469}
17470#[derive(Clone, PartialEq, ::prost::Message)]
17471pub struct ZeroFtraceEvent {
17472    #[prost(int32, optional, tag = "1")]
17473    pub flag: ::core::option::Option<i32>,
17474    #[prost(string, optional, tag = "2")]
17475    pub name: ::core::option::Option<::prost::alloc::string::String>,
17476    #[prost(int32, optional, tag = "3")]
17477    pub pid: ::core::option::Option<i32>,
17478    #[prost(int64, optional, tag = "4")]
17479    pub value: ::core::option::Option<i64>,
17480}
17481#[derive(Clone, PartialEq, ::prost::Message)]
17482pub struct TaskNewtaskFtraceEvent {
17483    #[prost(int32, optional, tag = "1")]
17484    pub pid: ::core::option::Option<i32>,
17485    #[prost(string, optional, tag = "2")]
17486    pub comm: ::core::option::Option<::prost::alloc::string::String>,
17487    #[prost(uint64, optional, tag = "3")]
17488    pub clone_flags: ::core::option::Option<u64>,
17489    #[prost(int32, optional, tag = "4")]
17490    pub oom_score_adj: ::core::option::Option<i32>,
17491}
17492#[derive(Clone, PartialEq, ::prost::Message)]
17493pub struct TaskRenameFtraceEvent {
17494    #[prost(int32, optional, tag = "1")]
17495    pub pid: ::core::option::Option<i32>,
17496    #[prost(string, optional, tag = "2")]
17497    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
17498    #[prost(string, optional, tag = "3")]
17499    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
17500    #[prost(int32, optional, tag = "4")]
17501    pub oom_score_adj: ::core::option::Option<i32>,
17502}
17503#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17504pub struct TcpRetransmitSkbFtraceEvent {
17505    #[prost(uint32, optional, tag = "1")]
17506    pub daddr: ::core::option::Option<u32>,
17507    #[prost(uint32, optional, tag = "2")]
17508    pub dport: ::core::option::Option<u32>,
17509    #[prost(uint32, optional, tag = "3")]
17510    pub saddr: ::core::option::Option<u32>,
17511    #[prost(uint64, optional, tag = "4")]
17512    pub skaddr: ::core::option::Option<u64>,
17513    #[prost(uint64, optional, tag = "5")]
17514    pub skbaddr: ::core::option::Option<u64>,
17515    #[prost(uint32, optional, tag = "6")]
17516    pub sport: ::core::option::Option<u32>,
17517    #[prost(int32, optional, tag = "7")]
17518    pub state: ::core::option::Option<i32>,
17519}
17520#[derive(Clone, PartialEq, ::prost::Message)]
17521pub struct ThermalTemperatureFtraceEvent {
17522    #[prost(int32, optional, tag = "1")]
17523    pub id: ::core::option::Option<i32>,
17524    #[prost(int32, optional, tag = "2")]
17525    pub temp: ::core::option::Option<i32>,
17526    #[prost(int32, optional, tag = "3")]
17527    pub temp_prev: ::core::option::Option<i32>,
17528    #[prost(string, optional, tag = "4")]
17529    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
17530}
17531#[derive(Clone, PartialEq, ::prost::Message)]
17532pub struct CdevUpdateFtraceEvent {
17533    #[prost(uint64, optional, tag = "1")]
17534    pub target: ::core::option::Option<u64>,
17535    #[prost(string, optional, tag = "2")]
17536    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
17537}
17538#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17539pub struct ThermalExynosAcpmBulkFtraceEvent {
17540    #[prost(uint32, optional, tag = "1")]
17541    pub tz_id: ::core::option::Option<u32>,
17542    #[prost(uint32, optional, tag = "2")]
17543    pub current_temp: ::core::option::Option<u32>,
17544    #[prost(uint32, optional, tag = "3")]
17545    pub ctrl_temp: ::core::option::Option<u32>,
17546    #[prost(uint32, optional, tag = "4")]
17547    pub cdev_state: ::core::option::Option<u32>,
17548    #[prost(int32, optional, tag = "5")]
17549    pub pid_et_p: ::core::option::Option<i32>,
17550    #[prost(int32, optional, tag = "6")]
17551    pub pid_power_range: ::core::option::Option<i32>,
17552    #[prost(int32, optional, tag = "7")]
17553    pub pid_p: ::core::option::Option<i32>,
17554    #[prost(int32, optional, tag = "8")]
17555    pub pid_i: ::core::option::Option<i32>,
17556    #[prost(int32, optional, tag = "9")]
17557    pub k_p: ::core::option::Option<i32>,
17558    #[prost(int32, optional, tag = "10")]
17559    pub k_i: ::core::option::Option<i32>,
17560    #[prost(uint64, optional, tag = "11")]
17561    pub timestamp: ::core::option::Option<u64>,
17562}
17563#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17564pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
17565    #[prost(int32, optional, tag = "1")]
17566    pub tz_id: ::core::option::Option<i32>,
17567    #[prost(uint32, optional, tag = "2")]
17568    pub current_temp: ::core::option::Option<u32>,
17569    #[prost(uint32, optional, tag = "3")]
17570    pub ctrl_temp: ::core::option::Option<u32>,
17571    #[prost(uint32, optional, tag = "4")]
17572    pub cdev_state: ::core::option::Option<u32>,
17573    #[prost(int32, optional, tag = "5")]
17574    pub pid_et_p: ::core::option::Option<i32>,
17575    #[prost(int32, optional, tag = "6")]
17576    pub k_p: ::core::option::Option<i32>,
17577    #[prost(int32, optional, tag = "7")]
17578    pub k_i: ::core::option::Option<i32>,
17579}
17580#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17581pub struct TrustySmcFtraceEvent {
17582    #[prost(uint64, optional, tag = "1")]
17583    pub r0: ::core::option::Option<u64>,
17584    #[prost(uint64, optional, tag = "2")]
17585    pub r1: ::core::option::Option<u64>,
17586    #[prost(uint64, optional, tag = "3")]
17587    pub r2: ::core::option::Option<u64>,
17588    #[prost(uint64, optional, tag = "4")]
17589    pub r3: ::core::option::Option<u64>,
17590}
17591#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17592pub struct TrustySmcDoneFtraceEvent {
17593    #[prost(uint64, optional, tag = "1")]
17594    pub ret: ::core::option::Option<u64>,
17595}
17596#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17597pub struct TrustyStdCall32FtraceEvent {
17598    #[prost(uint64, optional, tag = "1")]
17599    pub r0: ::core::option::Option<u64>,
17600    #[prost(uint64, optional, tag = "2")]
17601    pub r1: ::core::option::Option<u64>,
17602    #[prost(uint64, optional, tag = "3")]
17603    pub r2: ::core::option::Option<u64>,
17604    #[prost(uint64, optional, tag = "4")]
17605    pub r3: ::core::option::Option<u64>,
17606}
17607#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17608pub struct TrustyStdCall32DoneFtraceEvent {
17609    #[prost(int64, optional, tag = "1")]
17610    pub ret: ::core::option::Option<i64>,
17611}
17612#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17613pub struct TrustyShareMemoryFtraceEvent {
17614    #[prost(uint64, optional, tag = "1")]
17615    pub len: ::core::option::Option<u64>,
17616    #[prost(uint32, optional, tag = "2")]
17617    pub lend: ::core::option::Option<u32>,
17618    #[prost(uint32, optional, tag = "3")]
17619    pub nents: ::core::option::Option<u32>,
17620}
17621#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17622pub struct TrustyShareMemoryDoneFtraceEvent {
17623    #[prost(uint64, optional, tag = "1")]
17624    pub handle: ::core::option::Option<u64>,
17625    #[prost(uint64, optional, tag = "2")]
17626    pub len: ::core::option::Option<u64>,
17627    #[prost(uint32, optional, tag = "3")]
17628    pub lend: ::core::option::Option<u32>,
17629    #[prost(uint32, optional, tag = "4")]
17630    pub nents: ::core::option::Option<u32>,
17631    #[prost(int32, optional, tag = "5")]
17632    pub ret: ::core::option::Option<i32>,
17633}
17634#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17635pub struct TrustyReclaimMemoryFtraceEvent {
17636    #[prost(uint64, optional, tag = "1")]
17637    pub id: ::core::option::Option<u64>,
17638}
17639#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17640pub struct TrustyReclaimMemoryDoneFtraceEvent {
17641    #[prost(uint64, optional, tag = "1")]
17642    pub id: ::core::option::Option<u64>,
17643    #[prost(int32, optional, tag = "2")]
17644    pub ret: ::core::option::Option<i32>,
17645}
17646#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17647pub struct TrustyIrqFtraceEvent {
17648    #[prost(int32, optional, tag = "1")]
17649    pub irq: ::core::option::Option<i32>,
17650}
17651#[derive(Clone, PartialEq, ::prost::Message)]
17652pub struct TrustyIpcHandleEventFtraceEvent {
17653    #[prost(uint32, optional, tag = "1")]
17654    pub chan: ::core::option::Option<u32>,
17655    #[prost(uint32, optional, tag = "2")]
17656    pub event_id: ::core::option::Option<u32>,
17657    #[prost(string, optional, tag = "3")]
17658    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17659}
17660#[derive(Clone, PartialEq, ::prost::Message)]
17661pub struct TrustyIpcConnectFtraceEvent {
17662    #[prost(uint32, optional, tag = "1")]
17663    pub chan: ::core::option::Option<u32>,
17664    #[prost(string, optional, tag = "2")]
17665    pub port: ::core::option::Option<::prost::alloc::string::String>,
17666    #[prost(int32, optional, tag = "3")]
17667    pub state: ::core::option::Option<i32>,
17668}
17669#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17670pub struct TrustyIpcConnectEndFtraceEvent {
17671    #[prost(uint32, optional, tag = "1")]
17672    pub chan: ::core::option::Option<u32>,
17673    #[prost(int32, optional, tag = "2")]
17674    pub err: ::core::option::Option<i32>,
17675    #[prost(int32, optional, tag = "3")]
17676    pub state: ::core::option::Option<i32>,
17677}
17678#[derive(Clone, PartialEq, ::prost::Message)]
17679pub struct TrustyIpcWriteFtraceEvent {
17680    #[prost(uint64, optional, tag = "1")]
17681    pub buf_id: ::core::option::Option<u64>,
17682    #[prost(uint32, optional, tag = "2")]
17683    pub chan: ::core::option::Option<u32>,
17684    #[prost(int32, optional, tag = "3")]
17685    pub kind_shm: ::core::option::Option<i32>,
17686    #[prost(int32, optional, tag = "4")]
17687    pub len_or_err: ::core::option::Option<i32>,
17688    #[prost(uint64, optional, tag = "5")]
17689    pub shm_cnt: ::core::option::Option<u64>,
17690    #[prost(string, optional, tag = "6")]
17691    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17692}
17693#[derive(Clone, PartialEq, ::prost::Message)]
17694pub struct TrustyIpcPollFtraceEvent {
17695    #[prost(uint32, optional, tag = "1")]
17696    pub chan: ::core::option::Option<u32>,
17697    #[prost(uint32, optional, tag = "2")]
17698    pub poll_mask: ::core::option::Option<u32>,
17699    #[prost(string, optional, tag = "3")]
17700    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17701}
17702#[derive(Clone, PartialEq, ::prost::Message)]
17703pub struct TrustyIpcReadFtraceEvent {
17704    #[prost(uint32, optional, tag = "1")]
17705    pub chan: ::core::option::Option<u32>,
17706    #[prost(string, optional, tag = "2")]
17707    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17708}
17709#[derive(Clone, PartialEq, ::prost::Message)]
17710pub struct TrustyIpcReadEndFtraceEvent {
17711    #[prost(uint64, optional, tag = "1")]
17712    pub buf_id: ::core::option::Option<u64>,
17713    #[prost(uint32, optional, tag = "2")]
17714    pub chan: ::core::option::Option<u32>,
17715    #[prost(int32, optional, tag = "3")]
17716    pub len_or_err: ::core::option::Option<i32>,
17717    #[prost(uint64, optional, tag = "4")]
17718    pub shm_cnt: ::core::option::Option<u64>,
17719    #[prost(string, optional, tag = "5")]
17720    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17721}
17722#[derive(Clone, PartialEq, ::prost::Message)]
17723pub struct TrustyIpcRxFtraceEvent {
17724    #[prost(uint64, optional, tag = "1")]
17725    pub buf_id: ::core::option::Option<u64>,
17726    #[prost(uint32, optional, tag = "2")]
17727    pub chan: ::core::option::Option<u32>,
17728    #[prost(string, optional, tag = "3")]
17729    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17730}
17731#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17732pub struct TrustyEnqueueNopFtraceEvent {
17733    #[prost(uint32, optional, tag = "1")]
17734    pub arg1: ::core::option::Option<u32>,
17735    #[prost(uint32, optional, tag = "2")]
17736    pub arg2: ::core::option::Option<u32>,
17737    #[prost(uint32, optional, tag = "3")]
17738    pub arg3: ::core::option::Option<u32>,
17739}
17740#[derive(Clone, PartialEq, ::prost::Message)]
17741pub struct UfshcdCommandFtraceEvent {
17742    #[prost(string, optional, tag = "1")]
17743    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
17744    #[prost(uint32, optional, tag = "2")]
17745    pub doorbell: ::core::option::Option<u32>,
17746    #[prost(uint32, optional, tag = "3")]
17747    pub intr: ::core::option::Option<u32>,
17748    #[prost(uint64, optional, tag = "4")]
17749    pub lba: ::core::option::Option<u64>,
17750    #[prost(uint32, optional, tag = "5")]
17751    pub opcode: ::core::option::Option<u32>,
17752    #[prost(string, optional, tag = "6")]
17753    pub str: ::core::option::Option<::prost::alloc::string::String>,
17754    #[prost(uint32, optional, tag = "7")]
17755    pub tag: ::core::option::Option<u32>,
17756    #[prost(int32, optional, tag = "8")]
17757    pub transfer_len: ::core::option::Option<i32>,
17758    #[prost(uint32, optional, tag = "9")]
17759    pub group_id: ::core::option::Option<u32>,
17760    #[prost(uint32, optional, tag = "10")]
17761    pub str_t: ::core::option::Option<u32>,
17762}
17763#[derive(Clone, PartialEq, ::prost::Message)]
17764pub struct UfshcdClkGatingFtraceEvent {
17765    #[prost(string, optional, tag = "1")]
17766    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
17767    #[prost(int32, optional, tag = "2")]
17768    pub state: ::core::option::Option<i32>,
17769}
17770#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17771pub struct V4l2QbufFtraceEvent {
17772    #[prost(uint32, optional, tag = "1")]
17773    pub bytesused: ::core::option::Option<u32>,
17774    #[prost(uint32, optional, tag = "2")]
17775    pub field: ::core::option::Option<u32>,
17776    #[prost(uint32, optional, tag = "3")]
17777    pub flags: ::core::option::Option<u32>,
17778    #[prost(uint32, optional, tag = "4")]
17779    pub index: ::core::option::Option<u32>,
17780    #[prost(int32, optional, tag = "5")]
17781    pub minor: ::core::option::Option<i32>,
17782    #[prost(uint32, optional, tag = "6")]
17783    pub sequence: ::core::option::Option<u32>,
17784    #[prost(uint32, optional, tag = "7")]
17785    pub timecode_flags: ::core::option::Option<u32>,
17786    #[prost(uint32, optional, tag = "8")]
17787    pub timecode_frames: ::core::option::Option<u32>,
17788    #[prost(uint32, optional, tag = "9")]
17789    pub timecode_hours: ::core::option::Option<u32>,
17790    #[prost(uint32, optional, tag = "10")]
17791    pub timecode_minutes: ::core::option::Option<u32>,
17792    #[prost(uint32, optional, tag = "11")]
17793    pub timecode_seconds: ::core::option::Option<u32>,
17794    #[prost(uint32, optional, tag = "12")]
17795    pub timecode_type: ::core::option::Option<u32>,
17796    #[prost(uint32, optional, tag = "13")]
17797    pub timecode_userbits0: ::core::option::Option<u32>,
17798    #[prost(uint32, optional, tag = "14")]
17799    pub timecode_userbits1: ::core::option::Option<u32>,
17800    #[prost(uint32, optional, tag = "15")]
17801    pub timecode_userbits2: ::core::option::Option<u32>,
17802    #[prost(uint32, optional, tag = "16")]
17803    pub timecode_userbits3: ::core::option::Option<u32>,
17804    #[prost(int64, optional, tag = "17")]
17805    pub timestamp: ::core::option::Option<i64>,
17806    #[prost(uint32, optional, tag = "18")]
17807    pub r#type: ::core::option::Option<u32>,
17808}
17809#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17810pub struct V4l2DqbufFtraceEvent {
17811    #[prost(uint32, optional, tag = "1")]
17812    pub bytesused: ::core::option::Option<u32>,
17813    #[prost(uint32, optional, tag = "2")]
17814    pub field: ::core::option::Option<u32>,
17815    #[prost(uint32, optional, tag = "3")]
17816    pub flags: ::core::option::Option<u32>,
17817    #[prost(uint32, optional, tag = "4")]
17818    pub index: ::core::option::Option<u32>,
17819    #[prost(int32, optional, tag = "5")]
17820    pub minor: ::core::option::Option<i32>,
17821    #[prost(uint32, optional, tag = "6")]
17822    pub sequence: ::core::option::Option<u32>,
17823    #[prost(uint32, optional, tag = "7")]
17824    pub timecode_flags: ::core::option::Option<u32>,
17825    #[prost(uint32, optional, tag = "8")]
17826    pub timecode_frames: ::core::option::Option<u32>,
17827    #[prost(uint32, optional, tag = "9")]
17828    pub timecode_hours: ::core::option::Option<u32>,
17829    #[prost(uint32, optional, tag = "10")]
17830    pub timecode_minutes: ::core::option::Option<u32>,
17831    #[prost(uint32, optional, tag = "11")]
17832    pub timecode_seconds: ::core::option::Option<u32>,
17833    #[prost(uint32, optional, tag = "12")]
17834    pub timecode_type: ::core::option::Option<u32>,
17835    #[prost(uint32, optional, tag = "13")]
17836    pub timecode_userbits0: ::core::option::Option<u32>,
17837    #[prost(uint32, optional, tag = "14")]
17838    pub timecode_userbits1: ::core::option::Option<u32>,
17839    #[prost(uint32, optional, tag = "15")]
17840    pub timecode_userbits2: ::core::option::Option<u32>,
17841    #[prost(uint32, optional, tag = "16")]
17842    pub timecode_userbits3: ::core::option::Option<u32>,
17843    #[prost(int64, optional, tag = "17")]
17844    pub timestamp: ::core::option::Option<i64>,
17845    #[prost(uint32, optional, tag = "18")]
17846    pub r#type: ::core::option::Option<u32>,
17847}
17848#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17849pub struct Vb2V4l2BufQueueFtraceEvent {
17850    #[prost(uint32, optional, tag = "1")]
17851    pub field: ::core::option::Option<u32>,
17852    #[prost(uint32, optional, tag = "2")]
17853    pub flags: ::core::option::Option<u32>,
17854    #[prost(int32, optional, tag = "3")]
17855    pub minor: ::core::option::Option<i32>,
17856    #[prost(uint32, optional, tag = "4")]
17857    pub sequence: ::core::option::Option<u32>,
17858    #[prost(uint32, optional, tag = "5")]
17859    pub timecode_flags: ::core::option::Option<u32>,
17860    #[prost(uint32, optional, tag = "6")]
17861    pub timecode_frames: ::core::option::Option<u32>,
17862    #[prost(uint32, optional, tag = "7")]
17863    pub timecode_hours: ::core::option::Option<u32>,
17864    #[prost(uint32, optional, tag = "8")]
17865    pub timecode_minutes: ::core::option::Option<u32>,
17866    #[prost(uint32, optional, tag = "9")]
17867    pub timecode_seconds: ::core::option::Option<u32>,
17868    #[prost(uint32, optional, tag = "10")]
17869    pub timecode_type: ::core::option::Option<u32>,
17870    #[prost(uint32, optional, tag = "11")]
17871    pub timecode_userbits0: ::core::option::Option<u32>,
17872    #[prost(uint32, optional, tag = "12")]
17873    pub timecode_userbits1: ::core::option::Option<u32>,
17874    #[prost(uint32, optional, tag = "13")]
17875    pub timecode_userbits2: ::core::option::Option<u32>,
17876    #[prost(uint32, optional, tag = "14")]
17877    pub timecode_userbits3: ::core::option::Option<u32>,
17878    #[prost(int64, optional, tag = "15")]
17879    pub timestamp: ::core::option::Option<i64>,
17880}
17881#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17882pub struct Vb2V4l2BufDoneFtraceEvent {
17883    #[prost(uint32, optional, tag = "1")]
17884    pub field: ::core::option::Option<u32>,
17885    #[prost(uint32, optional, tag = "2")]
17886    pub flags: ::core::option::Option<u32>,
17887    #[prost(int32, optional, tag = "3")]
17888    pub minor: ::core::option::Option<i32>,
17889    #[prost(uint32, optional, tag = "4")]
17890    pub sequence: ::core::option::Option<u32>,
17891    #[prost(uint32, optional, tag = "5")]
17892    pub timecode_flags: ::core::option::Option<u32>,
17893    #[prost(uint32, optional, tag = "6")]
17894    pub timecode_frames: ::core::option::Option<u32>,
17895    #[prost(uint32, optional, tag = "7")]
17896    pub timecode_hours: ::core::option::Option<u32>,
17897    #[prost(uint32, optional, tag = "8")]
17898    pub timecode_minutes: ::core::option::Option<u32>,
17899    #[prost(uint32, optional, tag = "9")]
17900    pub timecode_seconds: ::core::option::Option<u32>,
17901    #[prost(uint32, optional, tag = "10")]
17902    pub timecode_type: ::core::option::Option<u32>,
17903    #[prost(uint32, optional, tag = "11")]
17904    pub timecode_userbits0: ::core::option::Option<u32>,
17905    #[prost(uint32, optional, tag = "12")]
17906    pub timecode_userbits1: ::core::option::Option<u32>,
17907    #[prost(uint32, optional, tag = "13")]
17908    pub timecode_userbits2: ::core::option::Option<u32>,
17909    #[prost(uint32, optional, tag = "14")]
17910    pub timecode_userbits3: ::core::option::Option<u32>,
17911    #[prost(int64, optional, tag = "15")]
17912    pub timestamp: ::core::option::Option<i64>,
17913}
17914#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17915pub struct Vb2V4l2QbufFtraceEvent {
17916    #[prost(uint32, optional, tag = "1")]
17917    pub field: ::core::option::Option<u32>,
17918    #[prost(uint32, optional, tag = "2")]
17919    pub flags: ::core::option::Option<u32>,
17920    #[prost(int32, optional, tag = "3")]
17921    pub minor: ::core::option::Option<i32>,
17922    #[prost(uint32, optional, tag = "4")]
17923    pub sequence: ::core::option::Option<u32>,
17924    #[prost(uint32, optional, tag = "5")]
17925    pub timecode_flags: ::core::option::Option<u32>,
17926    #[prost(uint32, optional, tag = "6")]
17927    pub timecode_frames: ::core::option::Option<u32>,
17928    #[prost(uint32, optional, tag = "7")]
17929    pub timecode_hours: ::core::option::Option<u32>,
17930    #[prost(uint32, optional, tag = "8")]
17931    pub timecode_minutes: ::core::option::Option<u32>,
17932    #[prost(uint32, optional, tag = "9")]
17933    pub timecode_seconds: ::core::option::Option<u32>,
17934    #[prost(uint32, optional, tag = "10")]
17935    pub timecode_type: ::core::option::Option<u32>,
17936    #[prost(uint32, optional, tag = "11")]
17937    pub timecode_userbits0: ::core::option::Option<u32>,
17938    #[prost(uint32, optional, tag = "12")]
17939    pub timecode_userbits1: ::core::option::Option<u32>,
17940    #[prost(uint32, optional, tag = "13")]
17941    pub timecode_userbits2: ::core::option::Option<u32>,
17942    #[prost(uint32, optional, tag = "14")]
17943    pub timecode_userbits3: ::core::option::Option<u32>,
17944    #[prost(int64, optional, tag = "15")]
17945    pub timestamp: ::core::option::Option<i64>,
17946}
17947#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17948pub struct Vb2V4l2DqbufFtraceEvent {
17949    #[prost(uint32, optional, tag = "1")]
17950    pub field: ::core::option::Option<u32>,
17951    #[prost(uint32, optional, tag = "2")]
17952    pub flags: ::core::option::Option<u32>,
17953    #[prost(int32, optional, tag = "3")]
17954    pub minor: ::core::option::Option<i32>,
17955    #[prost(uint32, optional, tag = "4")]
17956    pub sequence: ::core::option::Option<u32>,
17957    #[prost(uint32, optional, tag = "5")]
17958    pub timecode_flags: ::core::option::Option<u32>,
17959    #[prost(uint32, optional, tag = "6")]
17960    pub timecode_frames: ::core::option::Option<u32>,
17961    #[prost(uint32, optional, tag = "7")]
17962    pub timecode_hours: ::core::option::Option<u32>,
17963    #[prost(uint32, optional, tag = "8")]
17964    pub timecode_minutes: ::core::option::Option<u32>,
17965    #[prost(uint32, optional, tag = "9")]
17966    pub timecode_seconds: ::core::option::Option<u32>,
17967    #[prost(uint32, optional, tag = "10")]
17968    pub timecode_type: ::core::option::Option<u32>,
17969    #[prost(uint32, optional, tag = "11")]
17970    pub timecode_userbits0: ::core::option::Option<u32>,
17971    #[prost(uint32, optional, tag = "12")]
17972    pub timecode_userbits1: ::core::option::Option<u32>,
17973    #[prost(uint32, optional, tag = "13")]
17974    pub timecode_userbits2: ::core::option::Option<u32>,
17975    #[prost(uint32, optional, tag = "14")]
17976    pub timecode_userbits3: ::core::option::Option<u32>,
17977    #[prost(int64, optional, tag = "15")]
17978    pub timestamp: ::core::option::Option<i64>,
17979}
17980#[derive(Clone, PartialEq, ::prost::Message)]
17981pub struct VirtioGpuCmdQueueFtraceEvent {
17982    #[prost(uint32, optional, tag = "1")]
17983    pub ctx_id: ::core::option::Option<u32>,
17984    #[prost(int32, optional, tag = "2")]
17985    pub dev: ::core::option::Option<i32>,
17986    #[prost(uint64, optional, tag = "3")]
17987    pub fence_id: ::core::option::Option<u64>,
17988    #[prost(uint32, optional, tag = "4")]
17989    pub flags: ::core::option::Option<u32>,
17990    #[prost(string, optional, tag = "5")]
17991    pub name: ::core::option::Option<::prost::alloc::string::String>,
17992    #[prost(uint32, optional, tag = "6")]
17993    pub num_free: ::core::option::Option<u32>,
17994    #[prost(uint32, optional, tag = "7")]
17995    pub seqno: ::core::option::Option<u32>,
17996    #[prost(uint32, optional, tag = "8")]
17997    pub r#type: ::core::option::Option<u32>,
17998    #[prost(uint32, optional, tag = "9")]
17999    pub vq: ::core::option::Option<u32>,
18000}
18001#[derive(Clone, PartialEq, ::prost::Message)]
18002pub struct VirtioGpuCmdResponseFtraceEvent {
18003    #[prost(uint32, optional, tag = "1")]
18004    pub ctx_id: ::core::option::Option<u32>,
18005    #[prost(int32, optional, tag = "2")]
18006    pub dev: ::core::option::Option<i32>,
18007    #[prost(uint64, optional, tag = "3")]
18008    pub fence_id: ::core::option::Option<u64>,
18009    #[prost(uint32, optional, tag = "4")]
18010    pub flags: ::core::option::Option<u32>,
18011    #[prost(string, optional, tag = "5")]
18012    pub name: ::core::option::Option<::prost::alloc::string::String>,
18013    #[prost(uint32, optional, tag = "6")]
18014    pub num_free: ::core::option::Option<u32>,
18015    #[prost(uint32, optional, tag = "7")]
18016    pub seqno: ::core::option::Option<u32>,
18017    #[prost(uint32, optional, tag = "8")]
18018    pub r#type: ::core::option::Option<u32>,
18019    #[prost(uint32, optional, tag = "9")]
18020    pub vq: ::core::option::Option<u32>,
18021}
18022#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18023pub struct VirtioVideoCmdFtraceEvent {
18024    #[prost(uint32, optional, tag = "1")]
18025    pub stream_id: ::core::option::Option<u32>,
18026    #[prost(uint32, optional, tag = "2")]
18027    pub r#type: ::core::option::Option<u32>,
18028}
18029#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18030pub struct VirtioVideoCmdDoneFtraceEvent {
18031    #[prost(uint32, optional, tag = "1")]
18032    pub stream_id: ::core::option::Option<u32>,
18033    #[prost(uint32, optional, tag = "2")]
18034    pub r#type: ::core::option::Option<u32>,
18035}
18036#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18037pub struct VirtioVideoResourceQueueFtraceEvent {
18038    #[prost(uint32, optional, tag = "1")]
18039    pub data_size0: ::core::option::Option<u32>,
18040    #[prost(uint32, optional, tag = "2")]
18041    pub data_size1: ::core::option::Option<u32>,
18042    #[prost(uint32, optional, tag = "3")]
18043    pub data_size2: ::core::option::Option<u32>,
18044    #[prost(uint32, optional, tag = "4")]
18045    pub data_size3: ::core::option::Option<u32>,
18046    #[prost(uint32, optional, tag = "5")]
18047    pub queue_type: ::core::option::Option<u32>,
18048    #[prost(int32, optional, tag = "6")]
18049    pub resource_id: ::core::option::Option<i32>,
18050    #[prost(int32, optional, tag = "7")]
18051    pub stream_id: ::core::option::Option<i32>,
18052    #[prost(uint64, optional, tag = "8")]
18053    pub timestamp: ::core::option::Option<u64>,
18054}
18055#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18056pub struct VirtioVideoResourceQueueDoneFtraceEvent {
18057    #[prost(uint32, optional, tag = "1")]
18058    pub data_size0: ::core::option::Option<u32>,
18059    #[prost(uint32, optional, tag = "2")]
18060    pub data_size1: ::core::option::Option<u32>,
18061    #[prost(uint32, optional, tag = "3")]
18062    pub data_size2: ::core::option::Option<u32>,
18063    #[prost(uint32, optional, tag = "4")]
18064    pub data_size3: ::core::option::Option<u32>,
18065    #[prost(uint32, optional, tag = "5")]
18066    pub queue_type: ::core::option::Option<u32>,
18067    #[prost(int32, optional, tag = "6")]
18068    pub resource_id: ::core::option::Option<i32>,
18069    #[prost(int32, optional, tag = "7")]
18070    pub stream_id: ::core::option::Option<i32>,
18071    #[prost(uint64, optional, tag = "8")]
18072    pub timestamp: ::core::option::Option<u64>,
18073}
18074#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18075pub struct MmVmscanDirectReclaimBeginFtraceEvent {
18076    #[prost(int32, optional, tag = "1")]
18077    pub order: ::core::option::Option<i32>,
18078    #[prost(int32, optional, tag = "2")]
18079    pub may_writepage: ::core::option::Option<i32>,
18080    #[prost(uint32, optional, tag = "3")]
18081    pub gfp_flags: ::core::option::Option<u32>,
18082}
18083#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18084pub struct MmVmscanDirectReclaimEndFtraceEvent {
18085    #[prost(uint64, optional, tag = "1")]
18086    pub nr_reclaimed: ::core::option::Option<u64>,
18087}
18088#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18089pub struct MmVmscanKswapdWakeFtraceEvent {
18090    #[prost(int32, optional, tag = "1")]
18091    pub nid: ::core::option::Option<i32>,
18092    #[prost(int32, optional, tag = "2")]
18093    pub order: ::core::option::Option<i32>,
18094    #[prost(int32, optional, tag = "3")]
18095    pub zid: ::core::option::Option<i32>,
18096}
18097#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18098pub struct MmVmscanKswapdSleepFtraceEvent {
18099    #[prost(int32, optional, tag = "1")]
18100    pub nid: ::core::option::Option<i32>,
18101}
18102#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18103pub struct MmShrinkSlabStartFtraceEvent {
18104    #[prost(uint64, optional, tag = "1")]
18105    pub cache_items: ::core::option::Option<u64>,
18106    #[prost(uint64, optional, tag = "2")]
18107    pub delta: ::core::option::Option<u64>,
18108    #[prost(uint32, optional, tag = "3")]
18109    pub gfp_flags: ::core::option::Option<u32>,
18110    #[prost(uint64, optional, tag = "4")]
18111    pub lru_pgs: ::core::option::Option<u64>,
18112    #[prost(int64, optional, tag = "5")]
18113    pub nr_objects_to_shrink: ::core::option::Option<i64>,
18114    #[prost(uint64, optional, tag = "6")]
18115    pub pgs_scanned: ::core::option::Option<u64>,
18116    #[prost(uint64, optional, tag = "7")]
18117    pub shr: ::core::option::Option<u64>,
18118    #[prost(uint64, optional, tag = "8")]
18119    pub shrink: ::core::option::Option<u64>,
18120    #[prost(uint64, optional, tag = "9")]
18121    pub total_scan: ::core::option::Option<u64>,
18122    #[prost(int32, optional, tag = "10")]
18123    pub nid: ::core::option::Option<i32>,
18124    #[prost(int32, optional, tag = "11")]
18125    pub priority: ::core::option::Option<i32>,
18126}
18127#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18128pub struct MmShrinkSlabEndFtraceEvent {
18129    #[prost(int64, optional, tag = "1")]
18130    pub new_scan: ::core::option::Option<i64>,
18131    #[prost(int32, optional, tag = "2")]
18132    pub retval: ::core::option::Option<i32>,
18133    #[prost(uint64, optional, tag = "3")]
18134    pub shr: ::core::option::Option<u64>,
18135    #[prost(uint64, optional, tag = "4")]
18136    pub shrink: ::core::option::Option<u64>,
18137    #[prost(int64, optional, tag = "5")]
18138    pub total_scan: ::core::option::Option<i64>,
18139    #[prost(int64, optional, tag = "6")]
18140    pub unused_scan: ::core::option::Option<i64>,
18141    #[prost(int32, optional, tag = "7")]
18142    pub nid: ::core::option::Option<i32>,
18143}
18144#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18145pub struct WorkqueueActivateWorkFtraceEvent {
18146    #[prost(uint64, optional, tag = "1")]
18147    pub work: ::core::option::Option<u64>,
18148}
18149#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18150pub struct WorkqueueExecuteEndFtraceEvent {
18151    #[prost(uint64, optional, tag = "1")]
18152    pub work: ::core::option::Option<u64>,
18153    #[prost(uint64, optional, tag = "2")]
18154    pub function: ::core::option::Option<u64>,
18155}
18156#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18157pub struct WorkqueueExecuteStartFtraceEvent {
18158    #[prost(uint64, optional, tag = "1")]
18159    pub work: ::core::option::Option<u64>,
18160    #[prost(uint64, optional, tag = "2")]
18161    pub function: ::core::option::Option<u64>,
18162}
18163#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18164pub struct WorkqueueQueueWorkFtraceEvent {
18165    #[prost(uint64, optional, tag = "1")]
18166    pub work: ::core::option::Option<u64>,
18167    #[prost(uint64, optional, tag = "2")]
18168    pub function: ::core::option::Option<u64>,
18169    #[prost(uint64, optional, tag = "3")]
18170    pub workqueue: ::core::option::Option<u64>,
18171    #[prost(uint32, optional, tag = "4")]
18172    pub req_cpu: ::core::option::Option<u32>,
18173    #[prost(uint32, optional, tag = "5")]
18174    pub cpu: ::core::option::Option<u32>,
18175}
18176/// This generic proto is used to output events in the trace
18177/// when a specific proto for that event does not exist.
18178#[derive(Clone, PartialEq, ::prost::Message)]
18179pub struct GenericFtraceEvent {
18180    #[prost(string, optional, tag = "1")]
18181    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
18182    #[prost(message, repeated, tag = "2")]
18183    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
18184}
18185/// Nested message and enum types in `GenericFtraceEvent`.
18186pub mod generic_ftrace_event {
18187    #[derive(Clone, PartialEq, ::prost::Message)]
18188    pub struct Field {
18189        #[prost(string, optional, tag = "1")]
18190        pub name: ::core::option::Option<::prost::alloc::string::String>,
18191        #[prost(oneof = "field::Value", tags = "3, 4, 5")]
18192        pub value: ::core::option::Option<field::Value>,
18193    }
18194    /// Nested message and enum types in `Field`.
18195    pub mod field {
18196        #[derive(Clone, PartialEq, ::prost::Oneof)]
18197        pub enum Value {
18198            #[prost(string, tag = "3")]
18199            StrValue(::prost::alloc::string::String),
18200            #[prost(int64, tag = "4")]
18201            IntValue(i64),
18202            #[prost(uint64, tag = "5")]
18203            UintValue(u64),
18204        }
18205    }
18206}
18207#[derive(Clone, PartialEq, ::prost::Message)]
18208pub struct FtraceEvent {
18209    /// Timestamp in nanoseconds using .../tracing/trace_clock.
18210    #[prost(uint64, optional, tag = "1")]
18211    pub timestamp: ::core::option::Option<u64>,
18212    /// Kernel pid (do not confuse with userspace pid aka tgid).
18213    #[prost(uint32, optional, tag = "2")]
18214    pub pid: ::core::option::Option<u32>,
18215    /// Not populated in actual traces. Wire format might change.
18216    /// Placeholder declaration so that the ftrace parsing code accepts the
18217    /// existence of this common field. If this becomes needed for all events:
18218    /// consider merging with common_preempt_count to avoid extra proto tags.
18219    #[prost(uint32, optional, tag = "5")]
18220    pub common_flags: ::core::option::Option<u32>,
18221    #[prost(
18222        oneof = "ftrace_event::Event",
18223        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"
18224    )]
18225    pub event: ::core::option::Option<ftrace_event::Event>,
18226}
18227/// Nested message and enum types in `FtraceEvent`.
18228pub mod ftrace_event {
18229    #[derive(Clone, PartialEq, ::prost::Oneof)]
18230    pub enum Event {
18231        #[prost(message, tag = "3")]
18232        Print(super::PrintFtraceEvent),
18233        #[prost(message, tag = "4")]
18234        SchedSwitch(super::SchedSwitchFtraceEvent),
18235        /// removed field with id 5;
18236        /// removed field with id 6;
18237        /// removed field with id 7;
18238        /// removed field with id 8;
18239        /// removed field with id 9;
18240        /// removed field with id 10;
18241        #[prost(message, tag = "11")]
18242        CpuFrequency(super::CpuFrequencyFtraceEvent),
18243        #[prost(message, tag = "12")]
18244        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
18245        #[prost(message, tag = "13")]
18246        CpuIdle(super::CpuIdleFtraceEvent),
18247        #[prost(message, tag = "14")]
18248        ClockEnable(super::ClockEnableFtraceEvent),
18249        #[prost(message, tag = "15")]
18250        ClockDisable(super::ClockDisableFtraceEvent),
18251        #[prost(message, tag = "16")]
18252        ClockSetRate(super::ClockSetRateFtraceEvent),
18253        #[prost(message, tag = "17")]
18254        SchedWakeup(super::SchedWakeupFtraceEvent),
18255        #[prost(message, tag = "18")]
18256        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
18257        #[prost(message, tag = "19")]
18258        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
18259        #[prost(message, tag = "20")]
18260        SchedWaking(super::SchedWakingFtraceEvent),
18261        #[prost(message, tag = "21")]
18262        IpiEntry(super::IpiEntryFtraceEvent),
18263        #[prost(message, tag = "22")]
18264        IpiExit(super::IpiExitFtraceEvent),
18265        #[prost(message, tag = "23")]
18266        IpiRaise(super::IpiRaiseFtraceEvent),
18267        #[prost(message, tag = "24")]
18268        SoftirqEntry(super::SoftirqEntryFtraceEvent),
18269        #[prost(message, tag = "25")]
18270        SoftirqExit(super::SoftirqExitFtraceEvent),
18271        #[prost(message, tag = "26")]
18272        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
18273        #[prost(message, tag = "27")]
18274        I2cRead(super::I2cReadFtraceEvent),
18275        #[prost(message, tag = "28")]
18276        I2cWrite(super::I2cWriteFtraceEvent),
18277        #[prost(message, tag = "29")]
18278        I2cResult(super::I2cResultFtraceEvent),
18279        #[prost(message, tag = "30")]
18280        I2cReply(super::I2cReplyFtraceEvent),
18281        #[prost(message, tag = "31")]
18282        SmbusRead(super::SmbusReadFtraceEvent),
18283        #[prost(message, tag = "32")]
18284        SmbusWrite(super::SmbusWriteFtraceEvent),
18285        #[prost(message, tag = "33")]
18286        SmbusResult(super::SmbusResultFtraceEvent),
18287        #[prost(message, tag = "34")]
18288        SmbusReply(super::SmbusReplyFtraceEvent),
18289        #[prost(message, tag = "35")]
18290        LowmemoryKill(super::LowmemoryKillFtraceEvent),
18291        #[prost(message, tag = "36")]
18292        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
18293        #[prost(message, tag = "37")]
18294        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
18295        #[prost(message, tag = "38")]
18296        SyncPt(super::SyncPtFtraceEvent),
18297        #[prost(message, tag = "39")]
18298        SyncTimeline(super::SyncTimelineFtraceEvent),
18299        #[prost(message, tag = "40")]
18300        SyncWait(super::SyncWaitFtraceEvent),
18301        #[prost(message, tag = "41")]
18302        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
18303        #[prost(message, tag = "42")]
18304        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
18305        #[prost(message, tag = "43")]
18306        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
18307        #[prost(message, tag = "44")]
18308        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
18309        #[prost(message, tag = "45")]
18310        BlockRqIssue(super::BlockRqIssueFtraceEvent),
18311        #[prost(message, tag = "46")]
18312        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
18313        #[prost(message, tag = "47")]
18314        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
18315        #[prost(message, tag = "48")]
18316        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
18317        #[prost(message, tag = "49")]
18318        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
18319        #[prost(message, tag = "50")]
18320        BinderTransaction(super::BinderTransactionFtraceEvent),
18321        #[prost(message, tag = "51")]
18322        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
18323        #[prost(message, tag = "52")]
18324        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
18325        #[prost(message, tag = "53")]
18326        BinderLock(super::BinderLockFtraceEvent),
18327        #[prost(message, tag = "54")]
18328        BinderLocked(super::BinderLockedFtraceEvent),
18329        #[prost(message, tag = "55")]
18330        BinderUnlock(super::BinderUnlockFtraceEvent),
18331        #[prost(message, tag = "56")]
18332        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
18333        #[prost(message, tag = "57")]
18334        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
18335        #[prost(message, tag = "58")]
18336        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
18337        #[prost(message, tag = "59")]
18338        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
18339        #[prost(message, tag = "60")]
18340        RegulatorDisable(super::RegulatorDisableFtraceEvent),
18341        #[prost(message, tag = "61")]
18342        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
18343        #[prost(message, tag = "62")]
18344        RegulatorEnable(super::RegulatorEnableFtraceEvent),
18345        #[prost(message, tag = "63")]
18346        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
18347        #[prost(message, tag = "64")]
18348        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
18349        #[prost(message, tag = "65")]
18350        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
18351        #[prost(message, tag = "66")]
18352        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
18353        #[prost(message, tag = "67")]
18354        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
18355        #[prost(message, tag = "68")]
18356        CgroupMkdir(super::CgroupMkdirFtraceEvent),
18357        #[prost(message, tag = "69")]
18358        CgroupRemount(super::CgroupRemountFtraceEvent),
18359        #[prost(message, tag = "70")]
18360        CgroupRmdir(super::CgroupRmdirFtraceEvent),
18361        #[prost(message, tag = "71")]
18362        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
18363        #[prost(message, tag = "72")]
18364        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
18365        #[prost(message, tag = "73")]
18366        CgroupRelease(super::CgroupReleaseFtraceEvent),
18367        #[prost(message, tag = "74")]
18368        CgroupRename(super::CgroupRenameFtraceEvent),
18369        #[prost(message, tag = "75")]
18370        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
18371        #[prost(message, tag = "76")]
18372        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
18373        #[prost(message, tag = "77")]
18374        MdpCommit(super::MdpCommitFtraceEvent),
18375        #[prost(message, tag = "78")]
18376        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
18377        #[prost(message, tag = "79")]
18378        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
18379        #[prost(message, tag = "80")]
18380        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
18381        #[prost(message, tag = "81")]
18382        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
18383        #[prost(message, tag = "82")]
18384        MdpCompareBw(super::MdpCompareBwFtraceEvent),
18385        #[prost(message, tag = "83")]
18386        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
18387        #[prost(message, tag = "84")]
18388        MdpSsppSet(super::MdpSsppSetFtraceEvent),
18389        #[prost(message, tag = "85")]
18390        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
18391        #[prost(message, tag = "86")]
18392        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
18393        #[prost(message, tag = "87")]
18394        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
18395        #[prost(message, tag = "88")]
18396        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
18397        #[prost(message, tag = "89")]
18398        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
18399        #[prost(message, tag = "90")]
18400        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
18401        #[prost(message, tag = "91")]
18402        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
18403        #[prost(message, tag = "92")]
18404        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
18405        #[prost(message, tag = "93")]
18406        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
18407        #[prost(message, tag = "94")]
18408        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
18409        #[prost(message, tag = "95")]
18410        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
18411        #[prost(message, tag = "96")]
18412        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
18413        #[prost(message, tag = "97")]
18414        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
18415        #[prost(message, tag = "98")]
18416        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
18417        #[prost(message, tag = "99")]
18418        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
18419        #[prost(message, tag = "100")]
18420        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
18421        #[prost(message, tag = "101")]
18422        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
18423        #[prost(message, tag = "102")]
18424        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
18425        #[prost(message, tag = "103")]
18426        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
18427        #[prost(message, tag = "104")]
18428        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
18429        #[prost(message, tag = "105")]
18430        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
18431        #[prost(message, tag = "106")]
18432        MmCompactionIsolateMigratepages(super::MmCompactionIsolateMigratepagesFtraceEvent),
18433        #[prost(message, tag = "107")]
18434        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
18435        #[prost(message, tag = "108")]
18436        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
18437        #[prost(message, tag = "109")]
18438        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
18439        #[prost(message, tag = "110")]
18440        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
18441        #[prost(message, tag = "111")]
18442        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
18443        #[prost(message, tag = "112")]
18444        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
18445        #[prost(message, tag = "113")]
18446        SuspendResume(super::SuspendResumeFtraceEvent),
18447        #[prost(message, tag = "114")]
18448        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
18449        #[prost(message, tag = "115")]
18450        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
18451        #[prost(message, tag = "116")]
18452        BlockBioBounce(super::BlockBioBounceFtraceEvent),
18453        #[prost(message, tag = "117")]
18454        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
18455        #[prost(message, tag = "118")]
18456        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
18457        #[prost(message, tag = "119")]
18458        BlockBioQueue(super::BlockBioQueueFtraceEvent),
18459        #[prost(message, tag = "120")]
18460        BlockBioRemap(super::BlockBioRemapFtraceEvent),
18461        #[prost(message, tag = "121")]
18462        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
18463        #[prost(message, tag = "122")]
18464        BlockGetrq(super::BlockGetrqFtraceEvent),
18465        #[prost(message, tag = "123")]
18466        BlockPlug(super::BlockPlugFtraceEvent),
18467        #[prost(message, tag = "124")]
18468        BlockRqAbort(super::BlockRqAbortFtraceEvent),
18469        #[prost(message, tag = "125")]
18470        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
18471        #[prost(message, tag = "126")]
18472        BlockRqInsert(super::BlockRqInsertFtraceEvent),
18473        /// removed field with id 127;
18474        #[prost(message, tag = "128")]
18475        BlockRqRemap(super::BlockRqRemapFtraceEvent),
18476        #[prost(message, tag = "129")]
18477        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
18478        #[prost(message, tag = "130")]
18479        BlockSleeprq(super::BlockSleeprqFtraceEvent),
18480        #[prost(message, tag = "131")]
18481        BlockSplit(super::BlockSplitFtraceEvent),
18482        #[prost(message, tag = "132")]
18483        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
18484        #[prost(message, tag = "133")]
18485        BlockUnplug(super::BlockUnplugFtraceEvent),
18486        #[prost(message, tag = "134")]
18487        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
18488        #[prost(message, tag = "135")]
18489        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
18490        #[prost(message, tag = "136")]
18491        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
18492        #[prost(message, tag = "137")]
18493        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
18494        #[prost(message, tag = "138")]
18495        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
18496        #[prost(message, tag = "139")]
18497        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
18498        #[prost(message, tag = "140")]
18499        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
18500        #[prost(message, tag = "141")]
18501        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
18502        #[prost(message, tag = "142")]
18503        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
18504        #[prost(message, tag = "143")]
18505        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
18506        #[prost(message, tag = "144")]
18507        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
18508        #[prost(message, tag = "145")]
18509        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
18510        #[prost(message, tag = "146")]
18511        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
18512        #[prost(message, tag = "147")]
18513        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
18514        #[prost(message, tag = "148")]
18515        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
18516        #[prost(message, tag = "149")]
18517        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
18518        #[prost(message, tag = "150")]
18519        Ext4EsFindDelayedExtentRangeEnter(super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent),
18520        #[prost(message, tag = "151")]
18521        Ext4EsFindDelayedExtentRangeExit(super::Ext4EsFindDelayedExtentRangeExitFtraceEvent),
18522        #[prost(message, tag = "152")]
18523        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
18524        #[prost(message, tag = "153")]
18525        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
18526        #[prost(message, tag = "154")]
18527        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
18528        #[prost(message, tag = "155")]
18529        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
18530        #[prost(message, tag = "156")]
18531        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
18532        #[prost(message, tag = "157")]
18533        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
18534        #[prost(message, tag = "158")]
18535        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
18536        #[prost(message, tag = "159")]
18537        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
18538        #[prost(message, tag = "160")]
18539        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
18540        #[prost(message, tag = "161")]
18541        Ext4ExtConvertToInitializedEnter(super::Ext4ExtConvertToInitializedEnterFtraceEvent),
18542        #[prost(message, tag = "162")]
18543        Ext4ExtConvertToInitializedFastpath(super::Ext4ExtConvertToInitializedFastpathFtraceEvent),
18544        #[prost(message, tag = "163")]
18545        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
18546        #[prost(message, tag = "164")]
18547        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
18548        #[prost(message, tag = "165")]
18549        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
18550        #[prost(message, tag = "166")]
18551        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
18552        #[prost(message, tag = "167")]
18553        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
18554        #[prost(message, tag = "168")]
18555        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
18556        #[prost(message, tag = "169")]
18557        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
18558        #[prost(message, tag = "170")]
18559        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
18560        #[prost(message, tag = "171")]
18561        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
18562        #[prost(message, tag = "172")]
18563        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
18564        #[prost(message, tag = "173")]
18565        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
18566        #[prost(message, tag = "174")]
18567        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
18568        #[prost(message, tag = "175")]
18569        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
18570        #[prost(message, tag = "176")]
18571        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
18572        #[prost(message, tag = "177")]
18573        Ext4Forget(super::Ext4ForgetFtraceEvent),
18574        #[prost(message, tag = "178")]
18575        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
18576        #[prost(message, tag = "179")]
18577        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
18578        #[prost(message, tag = "180")]
18579        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
18580        #[prost(message, tag = "181")]
18581        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
18582        #[prost(message, tag = "182")]
18583        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
18584        #[prost(message, tag = "183")]
18585        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
18586        #[prost(message, tag = "184")]
18587        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
18588        #[prost(message, tag = "185")]
18589        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
18590        #[prost(message, tag = "186")]
18591        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
18592        #[prost(message, tag = "187")]
18593        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
18594        #[prost(message, tag = "188")]
18595        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
18596        #[prost(message, tag = "189")]
18597        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
18598        #[prost(message, tag = "190")]
18599        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
18600        #[prost(message, tag = "191")]
18601        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
18602        #[prost(message, tag = "192")]
18603        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
18604        #[prost(message, tag = "193")]
18605        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
18606        #[prost(message, tag = "194")]
18607        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
18608        #[prost(message, tag = "195")]
18609        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
18610        #[prost(message, tag = "196")]
18611        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
18612        #[prost(message, tag = "197")]
18613        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
18614        #[prost(message, tag = "198")]
18615        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
18616        #[prost(message, tag = "199")]
18617        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
18618        #[prost(message, tag = "200")]
18619        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
18620        #[prost(message, tag = "201")]
18621        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
18622        #[prost(message, tag = "202")]
18623        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
18624        #[prost(message, tag = "203")]
18625        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
18626        #[prost(message, tag = "204")]
18627        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
18628        #[prost(message, tag = "205")]
18629        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
18630        #[prost(message, tag = "206")]
18631        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
18632        #[prost(message, tag = "207")]
18633        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
18634        #[prost(message, tag = "208")]
18635        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
18636        #[prost(message, tag = "209")]
18637        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
18638        #[prost(message, tag = "210")]
18639        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
18640        #[prost(message, tag = "211")]
18641        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
18642        #[prost(message, tag = "212")]
18643        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
18644        #[prost(message, tag = "213")]
18645        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
18646        #[prost(message, tag = "214")]
18647        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
18648        #[prost(message, tag = "215")]
18649        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
18650        #[prost(message, tag = "216")]
18651        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
18652        #[prost(message, tag = "217")]
18653        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
18654        #[prost(message, tag = "218")]
18655        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
18656        #[prost(message, tag = "219")]
18657        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
18658        /// removed field with id 220;
18659        /// removed field with id 221;
18660        /// removed field with id 222;
18661        /// removed field with id 223;
18662        /// removed field with id 224;
18663        /// removed field with id 225;
18664        /// removed field with id 226;
18665        /// removed field with id 227;
18666        /// removed field with id 228;
18667        /// removed field with id 229;
18668        #[prost(message, tag = "230")]
18669        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
18670        #[prost(message, tag = "231")]
18671        Ext4Writepage(super::Ext4WritepageFtraceEvent),
18672        #[prost(message, tag = "232")]
18673        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
18674        #[prost(message, tag = "233")]
18675        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
18676        #[prost(message, tag = "234")]
18677        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
18678        #[prost(message, tag = "235")]
18679        TaskNewtask(super::TaskNewtaskFtraceEvent),
18680        #[prost(message, tag = "236")]
18681        TaskRename(super::TaskRenameFtraceEvent),
18682        #[prost(message, tag = "237")]
18683        SchedProcessExec(super::SchedProcessExecFtraceEvent),
18684        #[prost(message, tag = "238")]
18685        SchedProcessExit(super::SchedProcessExitFtraceEvent),
18686        #[prost(message, tag = "239")]
18687        SchedProcessFork(super::SchedProcessForkFtraceEvent),
18688        #[prost(message, tag = "240")]
18689        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
18690        #[prost(message, tag = "241")]
18691        SchedProcessHang(super::SchedProcessHangFtraceEvent),
18692        #[prost(message, tag = "242")]
18693        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
18694        #[prost(message, tag = "243")]
18695        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
18696        #[prost(message, tag = "244")]
18697        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
18698        #[prost(message, tag = "245")]
18699        F2fsFallocate(super::F2fsFallocateFtraceEvent),
18700        #[prost(message, tag = "246")]
18701        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
18702        #[prost(message, tag = "247")]
18703        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
18704        #[prost(message, tag = "248")]
18705        F2fsIget(super::F2fsIgetFtraceEvent),
18706        #[prost(message, tag = "249")]
18707        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
18708        #[prost(message, tag = "250")]
18709        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
18710        #[prost(message, tag = "251")]
18711        F2fsReadpage(super::F2fsReadpageFtraceEvent),
18712        #[prost(message, tag = "252")]
18713        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
18714        #[prost(message, tag = "253")]
18715        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
18716        #[prost(message, tag = "254")]
18717        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
18718        #[prost(message, tag = "255")]
18719        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
18720        #[prost(message, tag = "256")]
18721        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
18722        #[prost(message, tag = "257")]
18723        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
18724        #[prost(message, tag = "258")]
18725        F2fsTruncate(super::F2fsTruncateFtraceEvent),
18726        #[prost(message, tag = "259")]
18727        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
18728        #[prost(message, tag = "260")]
18729        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
18730        #[prost(message, tag = "261")]
18731        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
18732        #[prost(message, tag = "262")]
18733        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
18734        #[prost(message, tag = "263")]
18735        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
18736        #[prost(message, tag = "264")]
18737        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
18738        #[prost(message, tag = "265")]
18739        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
18740        #[prost(message, tag = "266")]
18741        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
18742        #[prost(message, tag = "267")]
18743        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
18744        #[prost(message, tag = "268")]
18745        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
18746        #[prost(message, tag = "269")]
18747        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
18748        #[prost(message, tag = "270")]
18749        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
18750        #[prost(message, tag = "271")]
18751        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
18752        #[prost(message, tag = "272")]
18753        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
18754        #[prost(message, tag = "273")]
18755        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
18756        #[prost(message, tag = "274")]
18757        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
18758        #[prost(message, tag = "275")]
18759        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
18760        #[prost(message, tag = "276")]
18761        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
18762        #[prost(message, tag = "277")]
18763        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
18764        #[prost(message, tag = "278")]
18765        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
18766        #[prost(message, tag = "279")]
18767        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
18768        #[prost(message, tag = "280")]
18769        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
18770        #[prost(message, tag = "281")]
18771        IommuMapRange(super::IommuMapRangeFtraceEvent),
18772        #[prost(message, tag = "282")]
18773        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
18774        #[prost(message, tag = "283")]
18775        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
18776        #[prost(message, tag = "284")]
18777        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
18778        #[prost(message, tag = "285")]
18779        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
18780        #[prost(message, tag = "286")]
18781        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
18782        #[prost(message, tag = "287")]
18783        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
18784        #[prost(message, tag = "288")]
18785        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
18786        #[prost(message, tag = "289")]
18787        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
18788        #[prost(message, tag = "290")]
18789        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
18790        #[prost(message, tag = "291")]
18791        IonPrefetching(super::IonPrefetchingFtraceEvent),
18792        #[prost(message, tag = "292")]
18793        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
18794        #[prost(message, tag = "293")]
18795        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
18796        #[prost(message, tag = "294")]
18797        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
18798        #[prost(message, tag = "295")]
18799        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
18800        #[prost(message, tag = "296")]
18801        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
18802        #[prost(message, tag = "297")]
18803        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
18804        #[prost(message, tag = "298")]
18805        Kfree(super::KfreeFtraceEvent),
18806        #[prost(message, tag = "299")]
18807        Kmalloc(super::KmallocFtraceEvent),
18808        #[prost(message, tag = "300")]
18809        KmallocNode(super::KmallocNodeFtraceEvent),
18810        #[prost(message, tag = "301")]
18811        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
18812        #[prost(message, tag = "302")]
18813        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
18814        #[prost(message, tag = "303")]
18815        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
18816        #[prost(message, tag = "304")]
18817        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
18818        #[prost(message, tag = "305")]
18819        MigratePagesStart(super::MigratePagesStartFtraceEvent),
18820        #[prost(message, tag = "306")]
18821        MigrateRetry(super::MigrateRetryFtraceEvent),
18822        #[prost(message, tag = "307")]
18823        MmPageAlloc(super::MmPageAllocFtraceEvent),
18824        #[prost(message, tag = "308")]
18825        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
18826        #[prost(message, tag = "309")]
18827        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
18828        #[prost(message, tag = "310")]
18829        MmPageFree(super::MmPageFreeFtraceEvent),
18830        #[prost(message, tag = "311")]
18831        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
18832        #[prost(message, tag = "312")]
18833        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
18834        #[prost(message, tag = "313")]
18835        RssStat(super::RssStatFtraceEvent),
18836        #[prost(message, tag = "314")]
18837        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
18838        #[prost(message, tag = "315")]
18839        IonHeapGrow(super::IonHeapGrowFtraceEvent),
18840        #[prost(message, tag = "316")]
18841        FenceInit(super::FenceInitFtraceEvent),
18842        #[prost(message, tag = "317")]
18843        FenceDestroy(super::FenceDestroyFtraceEvent),
18844        #[prost(message, tag = "318")]
18845        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
18846        #[prost(message, tag = "319")]
18847        FenceSignaled(super::FenceSignaledFtraceEvent),
18848        #[prost(message, tag = "320")]
18849        ClkEnable(super::ClkEnableFtraceEvent),
18850        #[prost(message, tag = "321")]
18851        ClkDisable(super::ClkDisableFtraceEvent),
18852        #[prost(message, tag = "322")]
18853        ClkSetRate(super::ClkSetRateFtraceEvent),
18854        #[prost(message, tag = "323")]
18855        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
18856        #[prost(message, tag = "324")]
18857        SignalDeliver(super::SignalDeliverFtraceEvent),
18858        #[prost(message, tag = "325")]
18859        SignalGenerate(super::SignalGenerateFtraceEvent),
18860        #[prost(message, tag = "326")]
18861        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
18862        #[prost(message, tag = "327")]
18863        Generic(super::GenericFtraceEvent),
18864        #[prost(message, tag = "328")]
18865        MmEventRecord(super::MmEventRecordFtraceEvent),
18866        #[prost(message, tag = "329")]
18867        SysEnter(super::SysEnterFtraceEvent),
18868        #[prost(message, tag = "330")]
18869        SysExit(super::SysExitFtraceEvent),
18870        #[prost(message, tag = "331")]
18871        Zero(super::ZeroFtraceEvent),
18872        #[prost(message, tag = "332")]
18873        GpuFrequency(super::GpuFrequencyFtraceEvent),
18874        #[prost(message, tag = "333")]
18875        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
18876        #[prost(message, tag = "334")]
18877        MarkVictim(super::MarkVictimFtraceEvent),
18878        #[prost(message, tag = "335")]
18879        IonStat(super::IonStatFtraceEvent),
18880        #[prost(message, tag = "336")]
18881        IonBufferCreate(super::IonBufferCreateFtraceEvent),
18882        #[prost(message, tag = "337")]
18883        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
18884        #[prost(message, tag = "338")]
18885        ScmCallStart(super::ScmCallStartFtraceEvent),
18886        #[prost(message, tag = "339")]
18887        ScmCallEnd(super::ScmCallEndFtraceEvent),
18888        #[prost(message, tag = "340")]
18889        GpuMemTotal(super::GpuMemTotalFtraceEvent),
18890        #[prost(message, tag = "341")]
18891        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
18892        #[prost(message, tag = "342")]
18893        CdevUpdate(super::CdevUpdateFtraceEvent),
18894        #[prost(message, tag = "343")]
18895        CpuhpExit(super::CpuhpExitFtraceEvent),
18896        #[prost(message, tag = "344")]
18897        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
18898        #[prost(message, tag = "345")]
18899        CpuhpEnter(super::CpuhpEnterFtraceEvent),
18900        #[prost(message, tag = "346")]
18901        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
18902        #[prost(message, tag = "347")]
18903        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
18904        #[prost(message, tag = "348")]
18905        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
18906        #[prost(message, tag = "349")]
18907        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
18908        #[prost(message, tag = "350")]
18909        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
18910        #[prost(message, tag = "351")]
18911        DmaHeapStat(super::DmaHeapStatFtraceEvent),
18912        #[prost(message, tag = "352")]
18913        CpuhpPause(super::CpuhpPauseFtraceEvent),
18914        #[prost(message, tag = "353")]
18915        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
18916        #[prost(message, tag = "354")]
18917        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
18918        #[prost(message, tag = "355")]
18919        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
18920        #[prost(message, tag = "356")]
18921        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
18922        #[prost(message, tag = "357")]
18923        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
18924        #[prost(message, tag = "358")]
18925        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
18926        #[prost(message, tag = "359")]
18927        RssStatThrottled(super::RssStatThrottledFtraceEvent),
18928        #[prost(message, tag = "360")]
18929        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
18930        #[prost(message, tag = "361")]
18931        NetDevXmit(super::NetDevXmitFtraceEvent),
18932        #[prost(message, tag = "362")]
18933        InetSockSetState(super::InetSockSetStateFtraceEvent),
18934        #[prost(message, tag = "363")]
18935        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
18936        #[prost(message, tag = "364")]
18937        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
18938        #[prost(message, tag = "365")]
18939        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
18940        #[prost(message, tag = "366")]
18941        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
18942        #[prost(message, tag = "367")]
18943        KfreeSkb(super::KfreeSkbFtraceEvent),
18944        #[prost(message, tag = "368")]
18945        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
18946        #[prost(message, tag = "369")]
18947        KvmAckIrq(super::KvmAckIrqFtraceEvent),
18948        #[prost(message, tag = "370")]
18949        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
18950        #[prost(message, tag = "371")]
18951        KvmAgePage(super::KvmAgePageFtraceEvent),
18952        #[prost(message, tag = "372")]
18953        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
18954        #[prost(message, tag = "373")]
18955        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
18956        #[prost(message, tag = "374")]
18957        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
18958        #[prost(message, tag = "375")]
18959        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
18960        #[prost(message, tag = "376")]
18961        KvmEntry(super::KvmEntryFtraceEvent),
18962        #[prost(message, tag = "377")]
18963        KvmExit(super::KvmExitFtraceEvent),
18964        #[prost(message, tag = "378")]
18965        KvmFpu(super::KvmFpuFtraceEvent),
18966        #[prost(message, tag = "379")]
18967        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
18968        #[prost(message, tag = "380")]
18969        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
18970        #[prost(message, tag = "381")]
18971        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
18972        #[prost(message, tag = "382")]
18973        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
18974        #[prost(message, tag = "383")]
18975        KvmIrqLine(super::KvmIrqLineFtraceEvent),
18976        #[prost(message, tag = "384")]
18977        KvmMmio(super::KvmMmioFtraceEvent),
18978        #[prost(message, tag = "385")]
18979        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
18980        #[prost(message, tag = "386")]
18981        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
18982        #[prost(message, tag = "387")]
18983        KvmSetIrq(super::KvmSetIrqFtraceEvent),
18984        #[prost(message, tag = "388")]
18985        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
18986        #[prost(message, tag = "389")]
18987        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
18988        #[prost(message, tag = "390")]
18989        KvmSysAccess(super::KvmSysAccessFtraceEvent),
18990        #[prost(message, tag = "391")]
18991        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
18992        #[prost(message, tag = "392")]
18993        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
18994        #[prost(message, tag = "393")]
18995        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
18996        #[prost(message, tag = "394")]
18997        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
18998        #[prost(message, tag = "395")]
18999        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
19000        #[prost(message, tag = "396")]
19001        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
19002        #[prost(message, tag = "397")]
19003        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
19004        #[prost(message, tag = "398")]
19005        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
19006        #[prost(message, tag = "399")]
19007        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
19008        #[prost(message, tag = "400")]
19009        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
19010        #[prost(message, tag = "401")]
19011        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
19012        #[prost(message, tag = "402")]
19013        TrapReg(super::TrapRegFtraceEvent),
19014        #[prost(message, tag = "403")]
19015        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
19016        #[prost(message, tag = "404")]
19017        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
19018        #[prost(message, tag = "405")]
19019        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
19020        #[prost(message, tag = "406")]
19021        UfshcdCommand(super::UfshcdCommandFtraceEvent),
19022        #[prost(message, tag = "407")]
19023        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
19024        #[prost(message, tag = "408")]
19025        Console(super::ConsoleFtraceEvent),
19026        #[prost(message, tag = "409")]
19027        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
19028        #[prost(message, tag = "410")]
19029        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
19030        #[prost(message, tag = "411")]
19031        DrmSchedJob(super::DrmSchedJobFtraceEvent),
19032        #[prost(message, tag = "412")]
19033        DrmRunJob(super::DrmRunJobFtraceEvent),
19034        #[prost(message, tag = "413")]
19035        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
19036        #[prost(message, tag = "414")]
19037        DmaFenceInit(super::DmaFenceInitFtraceEvent),
19038        #[prost(message, tag = "415")]
19039        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
19040        #[prost(message, tag = "416")]
19041        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
19042        #[prost(message, tag = "417")]
19043        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
19044        #[prost(message, tag = "418")]
19045        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
19046        #[prost(message, tag = "419")]
19047        F2fsIostat(super::F2fsIostatFtraceEvent),
19048        #[prost(message, tag = "420")]
19049        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
19050        #[prost(message, tag = "421")]
19051        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
19052        #[prost(message, tag = "422")]
19053        V4l2Qbuf(super::V4l2QbufFtraceEvent),
19054        #[prost(message, tag = "423")]
19055        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
19056        #[prost(message, tag = "424")]
19057        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
19058        #[prost(message, tag = "425")]
19059        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
19060        #[prost(message, tag = "426")]
19061        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
19062        #[prost(message, tag = "427")]
19063        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
19064        #[prost(message, tag = "428")]
19065        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
19066        #[prost(message, tag = "429")]
19067        DsiRx(super::DsiRxFtraceEvent),
19068        #[prost(message, tag = "430")]
19069        DsiTx(super::DsiTxFtraceEvent),
19070        #[prost(message, tag = "431")]
19071        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
19072        #[prost(message, tag = "432")]
19073        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
19074        #[prost(message, tag = "433")]
19075        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
19076        #[prost(message, tag = "434")]
19077        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
19078        #[prost(message, tag = "435")]
19079        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
19080        #[prost(message, tag = "436")]
19081        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
19082        #[prost(message, tag = "437")]
19083        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
19084        #[prost(message, tag = "438")]
19085        FuncgraphExit(super::FuncgraphExitFtraceEvent),
19086        #[prost(message, tag = "439")]
19087        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
19088        #[prost(message, tag = "440")]
19089        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
19090        #[prost(message, tag = "441")]
19091        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
19092        #[prost(message, tag = "442")]
19093        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
19094        #[prost(message, tag = "443")]
19095        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
19096        #[prost(message, tag = "444")]
19097        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
19098        #[prost(message, tag = "445")]
19099        TrustySmc(super::TrustySmcFtraceEvent),
19100        #[prost(message, tag = "446")]
19101        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
19102        #[prost(message, tag = "447")]
19103        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
19104        #[prost(message, tag = "448")]
19105        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
19106        #[prost(message, tag = "449")]
19107        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
19108        #[prost(message, tag = "450")]
19109        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
19110        #[prost(message, tag = "451")]
19111        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
19112        #[prost(message, tag = "452")]
19113        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
19114        #[prost(message, tag = "453")]
19115        TrustyIrq(super::TrustyIrqFtraceEvent),
19116        #[prost(message, tag = "454")]
19117        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
19118        #[prost(message, tag = "455")]
19119        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
19120        #[prost(message, tag = "456")]
19121        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
19122        #[prost(message, tag = "457")]
19123        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
19124        #[prost(message, tag = "458")]
19125        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
19126        /// removed field with id 459;
19127        #[prost(message, tag = "460")]
19128        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
19129        #[prost(message, tag = "461")]
19130        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
19131        #[prost(message, tag = "462")]
19132        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
19133        /// removed field with id 463;
19134        #[prost(message, tag = "464")]
19135        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
19136        #[prost(message, tag = "465")]
19137        CmaAllocStart(super::CmaAllocStartFtraceEvent),
19138        #[prost(message, tag = "466")]
19139        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
19140        #[prost(message, tag = "467")]
19141        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
19142        #[prost(message, tag = "468")]
19143        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
19144        #[prost(message, tag = "469")]
19145        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
19146        #[prost(message, tag = "470")]
19147        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
19148        #[prost(message, tag = "471")]
19149        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
19150        #[prost(message, tag = "472")]
19151        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
19152        #[prost(message, tag = "473")]
19153        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
19154        #[prost(message, tag = "474")]
19155        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
19156        #[prost(message, tag = "475")]
19157        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
19158        #[prost(message, tag = "476")]
19159        HypEnter(super::HypEnterFtraceEvent),
19160        #[prost(message, tag = "477")]
19161        HypExit(super::HypExitFtraceEvent),
19162        #[prost(message, tag = "478")]
19163        HostHcall(super::HostHcallFtraceEvent),
19164        #[prost(message, tag = "479")]
19165        HostSmc(super::HostSmcFtraceEvent),
19166        #[prost(message, tag = "480")]
19167        HostMemAbort(super::HostMemAbortFtraceEvent),
19168        #[prost(message, tag = "481")]
19169        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
19170        #[prost(message, tag = "482")]
19171        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
19172        #[prost(message, tag = "483")]
19173        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
19174        #[prost(message, tag = "484")]
19175        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
19176        #[prost(message, tag = "485")]
19177        BinderCommand(super::BinderCommandFtraceEvent),
19178        #[prost(message, tag = "486")]
19179        BinderReturn(super::BinderReturnFtraceEvent),
19180        #[prost(message, tag = "487")]
19181        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
19182        #[prost(message, tag = "488")]
19183        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
19184        #[prost(message, tag = "489")]
19185        RpmStatus(super::RpmStatusFtraceEvent),
19186        #[prost(message, tag = "490")]
19187        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
19188        #[prost(message, tag = "491")]
19189        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
19190        #[prost(message, tag = "492")]
19191        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
19192        #[prost(message, tag = "493")]
19193        DpuDsiRx(super::DpuDsiRxFtraceEvent),
19194        #[prost(message, tag = "494")]
19195        DpuDsiTx(super::DpuDsiTxFtraceEvent),
19196        #[prost(message, tag = "495")]
19197        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
19198        #[prost(message, tag = "496")]
19199        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
19200        #[prost(message, tag = "497")]
19201        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
19202        #[prost(message, tag = "498")]
19203        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
19204        #[prost(message, tag = "499")]
19205        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
19206        #[prost(message, tag = "500")]
19207        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
19208        #[prost(message, tag = "501")]
19209        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
19210        #[prost(message, tag = "502")]
19211        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
19212        #[prost(message, tag = "503")]
19213        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
19214        #[prost(message, tag = "504")]
19215        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
19216        #[prost(message, tag = "505")]
19217        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
19218        #[prost(message, tag = "506")]
19219        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
19220        #[prost(message, tag = "507")]
19221        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
19222        #[prost(message, tag = "508")]
19223        DcvshFreq(super::DcvshFreqFtraceEvent),
19224        #[prost(message, tag = "509")]
19225        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
19226        #[prost(message, tag = "510")]
19227        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(
19228            super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent,
19229        ),
19230        #[prost(message, tag = "511")]
19231        MaliMaliPmMcuHctlCoresNotifyPend(super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent),
19232        #[prost(message, tag = "512")]
19233        MaliMaliPmMcuHctlCoreInactivePend(super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent),
19234        #[prost(message, tag = "513")]
19235        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
19236        #[prost(message, tag = "514")]
19237        MaliMaliPmMcuHctlShadersCoreOffPend(super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent),
19238        #[prost(message, tag = "515")]
19239        MaliMaliPmMcuHctlShadersPendOff(super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent),
19240        #[prost(message, tag = "516")]
19241        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
19242        #[prost(message, tag = "517")]
19243        MaliMaliPmMcuHctlShadersReadyOff(super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent),
19244        #[prost(message, tag = "518")]
19245        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
19246        #[prost(message, tag = "519")]
19247        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
19248        #[prost(message, tag = "520")]
19249        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
19250        #[prost(message, tag = "521")]
19251        MaliMaliPmMcuOnCoreAttrUpdatePend(super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent),
19252        #[prost(message, tag = "522")]
19253        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
19254        #[prost(message, tag = "523")]
19255        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
19256        #[prost(message, tag = "524")]
19257        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
19258        #[prost(message, tag = "525")]
19259        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
19260        #[prost(message, tag = "526")]
19261        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
19262        #[prost(message, tag = "527")]
19263        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
19264        #[prost(message, tag = "528")]
19265        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
19266        #[prost(message, tag = "529")]
19267        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
19268        #[prost(message, tag = "530")]
19269        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
19270        #[prost(message, tag = "531")]
19271        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
19272        #[prost(message, tag = "532")]
19273        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
19274    }
19275}
19276/// Per-CPU kernel buffer stats for the ftrace data source gathered from
19277/// /sys/kernel/tracing/per_cpu/cpuX/stats.
19278#[derive(Clone, Copy, PartialEq, ::prost::Message)]
19279pub struct FtraceCpuStats {
19280    /// CPU index.
19281    #[prost(uint64, optional, tag = "1")]
19282    pub cpu: ::core::option::Option<u64>,
19283    /// Number of entries currently in the kernel buffer.
19284    #[prost(uint64, optional, tag = "2")]
19285    pub entries: ::core::option::Option<u64>,
19286    /// Number of events lost in kernel buffers due to overwriting of old events
19287    /// before userspace had a chance to drain them. Valid if the buffer is in
19288    /// "overwrite" mode, otherwise see |dropped_events|.
19289    #[prost(uint64, optional, tag = "3")]
19290    pub overrun: ::core::option::Option<u64>,
19291    /// This should always be zero. If not the buffer size is way too small or
19292    /// something went wrong with the tracer. Quoting the kernel: "number of
19293    /// commits failing due to the buffer wrapping around while there are
19294    /// uncommitted events, such as during an interrupt storm".
19295    #[prost(uint64, optional, tag = "4")]
19296    pub commit_overrun: ::core::option::Option<u64>,
19297    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
19298    /// The field should be named "bytes", but is misnamed for historical reasons.
19299    /// This value has known inaccuracies before Linux v6.6:
19300    /// <https://github.com/torvalds/linux/commit/45d99ea>
19301    #[prost(uint64, optional, tag = "5")]
19302    pub bytes_read: ::core::option::Option<u64>,
19303    /// The timestamp for the oldest event still in the ring buffer.
19304    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
19305    #[prost(double, optional, tag = "6")]
19306    pub oldest_event_ts: ::core::option::Option<f64>,
19307    /// The current timestamp.
19308    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
19309    #[prost(double, optional, tag = "7")]
19310    pub now_ts: ::core::option::Option<f64>,
19311    /// If the kernel buffer has overwrite mode disabled, this will show the number
19312    /// of new events that were lost because the buffer was full. This is similar
19313    /// to |overrun| but only for the overwrite=false case.
19314    #[prost(uint64, optional, tag = "8")]
19315    pub dropped_events: ::core::option::Option<u64>,
19316    /// The number of events read (consumed) from the buffer by userspace.
19317    #[prost(uint64, optional, tag = "9")]
19318    pub read_events: ::core::option::Option<u64>,
19319}
19320/// Errors and kernel buffer stats for the ftrace data source.
19321#[derive(Clone, PartialEq, ::prost::Message)]
19322pub struct FtraceStats {
19323    /// A pair of FtraceStats is written on every trace flush:
19324    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
19325    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
19326    ///                   before this packet was written. For simple traces this
19327    ///                   will be once at the end of the trace.
19328    #[prost(enumeration = "ftrace_stats::Phase", optional, tag = "1")]
19329    pub phase: ::core::option::Option<i32>,
19330    /// Per-CPU stats (one entry for each CPU).
19331    #[prost(message, repeated, tag = "2")]
19332    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
19333    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
19334    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
19335    /// trace or not. It can be used to debug kptr_restrict or security-related
19336    /// errors.
19337    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
19338    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
19339    #[prost(uint32, optional, tag = "3")]
19340    pub kernel_symbols_parsed: ::core::option::Option<u32>,
19341    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
19342    #[prost(uint32, optional, tag = "4")]
19343    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
19344    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
19345    /// one or more atrace categories not available on the device.
19346    #[prost(string, optional, tag = "5")]
19347    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
19348    /// Ftrace events requested by the config but not present on device.
19349    #[prost(string, repeated, tag = "6")]
19350    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19351    /// Ftrace events requested by the config and present on device, but which we
19352    /// failed to enable due to permissions, or due to a conflicting option
19353    /// (currently FtraceConfig.disable_generic_events).
19354    #[prost(string, repeated, tag = "7")]
19355    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19356    /// The data source was configured to preserve existing events in the ftrace
19357    /// buffer before the start of the trace.
19358    #[prost(bool, optional, tag = "8")]
19359    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
19360    /// Unique errors encountered during reading and parsing of the raw ftrace
19361    /// data. Ring buffer ABI related errors will also be recorded in the
19362    /// affected FtraceEventBundles with a timestamp.
19363    /// Any traces with entries in this field should be investigated, as they
19364    /// indicate a bug in perfetto or the kernel.
19365    #[prost(
19366        enumeration = "FtraceParseStatus",
19367        repeated,
19368        packed = "false",
19369        tag = "9"
19370    )]
19371    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
19372}
19373/// Nested message and enum types in `FtraceStats`.
19374pub mod ftrace_stats {
19375    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19376    #[repr(i32)]
19377    pub enum Phase {
19378        Unspecified = 0,
19379        StartOfTrace = 1,
19380        EndOfTrace = 2,
19381    }
19382    impl Phase {
19383        /// String value of the enum field names used in the ProtoBuf definition.
19384        ///
19385        /// The values are not transformed in any way and thus are considered stable
19386        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19387        pub fn as_str_name(&self) -> &'static str {
19388            match self {
19389                Self::Unspecified => "UNSPECIFIED",
19390                Self::StartOfTrace => "START_OF_TRACE",
19391                Self::EndOfTrace => "END_OF_TRACE",
19392            }
19393        }
19394        /// Creates an enum from field names used in the ProtoBuf definition.
19395        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19396            match value {
19397                "UNSPECIFIED" => Some(Self::Unspecified),
19398                "START_OF_TRACE" => Some(Self::StartOfTrace),
19399                "END_OF_TRACE" => Some(Self::EndOfTrace),
19400                _ => None,
19401            }
19402        }
19403    }
19404}
19405#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19406#[repr(i32)]
19407pub enum FtraceParseStatus {
19408    FtraceStatusUnspecified = 0,
19409    /// Not written, used for convenience of implementation:
19410    FtraceStatusOk = 1,
19411    /// Issues with reading data out of the ftrace ring buffer:
19412    FtraceStatusUnexpectedReadError = 2,
19413    FtraceStatusPartialPageRead = 3,
19414    /// Ring buffer binary data not matching our understanding of the layout:
19415    FtraceStatusAbiInvalidPageHeader = 4,
19416    FtraceStatusAbiShortEventHeader = 5,
19417    FtraceStatusAbiNullPadding = 6,
19418    FtraceStatusAbiShortPaddingLength = 7,
19419    FtraceStatusAbiInvalidPaddingLength = 8,
19420    FtraceStatusAbiShortTimeExtend = 9,
19421    FtraceStatusAbiShortTimeStamp = 10,
19422    FtraceStatusAbiShortDataLength = 11,
19423    FtraceStatusAbiZeroDataLength = 12,
19424    FtraceStatusAbiInvalidDataLength = 13,
19425    FtraceStatusAbiShortEventId = 14,
19426    FtraceStatusAbiEndOverflow = 15,
19427    /// Issues with parsing the event payload:
19428    FtraceStatusShortCompactEvent = 16,
19429    FtraceStatusInvalidEvent = 17,
19430}
19431impl FtraceParseStatus {
19432    /// String value of the enum field names used in the ProtoBuf definition.
19433    ///
19434    /// The values are not transformed in any way and thus are considered stable
19435    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19436    pub fn as_str_name(&self) -> &'static str {
19437        match self {
19438            Self::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
19439            Self::FtraceStatusOk => "FTRACE_STATUS_OK",
19440            Self::FtraceStatusUnexpectedReadError => "FTRACE_STATUS_UNEXPECTED_READ_ERROR",
19441            Self::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
19442            Self::FtraceStatusAbiInvalidPageHeader => "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER",
19443            Self::FtraceStatusAbiShortEventHeader => "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER",
19444            Self::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
19445            Self::FtraceStatusAbiShortPaddingLength => "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH",
19446            Self::FtraceStatusAbiInvalidPaddingLength => "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH",
19447            Self::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
19448            Self::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
19449            Self::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
19450            Self::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
19451            Self::FtraceStatusAbiInvalidDataLength => "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH",
19452            Self::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
19453            Self::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
19454            Self::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
19455            Self::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
19456        }
19457    }
19458    /// Creates an enum from field names used in the ProtoBuf definition.
19459    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19460        match value {
19461            "FTRACE_STATUS_UNSPECIFIED" => Some(Self::FtraceStatusUnspecified),
19462            "FTRACE_STATUS_OK" => Some(Self::FtraceStatusOk),
19463            "FTRACE_STATUS_UNEXPECTED_READ_ERROR" => Some(Self::FtraceStatusUnexpectedReadError),
19464            "FTRACE_STATUS_PARTIAL_PAGE_READ" => Some(Self::FtraceStatusPartialPageRead),
19465            "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER" => Some(Self::FtraceStatusAbiInvalidPageHeader),
19466            "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER" => Some(Self::FtraceStatusAbiShortEventHeader),
19467            "FTRACE_STATUS_ABI_NULL_PADDING" => Some(Self::FtraceStatusAbiNullPadding),
19468            "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH" => {
19469                Some(Self::FtraceStatusAbiShortPaddingLength)
19470            }
19471            "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH" => {
19472                Some(Self::FtraceStatusAbiInvalidPaddingLength)
19473            }
19474            "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND" => Some(Self::FtraceStatusAbiShortTimeExtend),
19475            "FTRACE_STATUS_ABI_SHORT_TIME_STAMP" => Some(Self::FtraceStatusAbiShortTimeStamp),
19476            "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH" => Some(Self::FtraceStatusAbiShortDataLength),
19477            "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH" => Some(Self::FtraceStatusAbiZeroDataLength),
19478            "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH" => Some(Self::FtraceStatusAbiInvalidDataLength),
19479            "FTRACE_STATUS_ABI_SHORT_EVENT_ID" => Some(Self::FtraceStatusAbiShortEventId),
19480            "FTRACE_STATUS_ABI_END_OVERFLOW" => Some(Self::FtraceStatusAbiEndOverflow),
19481            "FTRACE_STATUS_SHORT_COMPACT_EVENT" => Some(Self::FtraceStatusShortCompactEvent),
19482            "FTRACE_STATUS_INVALID_EVENT" => Some(Self::FtraceStatusInvalidEvent),
19483            _ => None,
19484        }
19485    }
19486}
19487/// The result of tracing one or more ftrace data pages from a single per-cpu
19488/// kernel ring buffer. If collating multiple pages' worth of events, all of
19489/// them come from contiguous pages, with no kernel data loss in between.
19490#[derive(Clone, PartialEq, ::prost::Message)]
19491pub struct FtraceEventBundle {
19492    #[prost(uint32, optional, tag = "1")]
19493    pub cpu: ::core::option::Option<u32>,
19494    #[prost(message, repeated, tag = "2")]
19495    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
19496    /// Set to true if there was data loss between the last time we've read from
19497    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
19498    /// in this bundle.
19499    #[prost(bool, optional, tag = "3")]
19500    pub lost_events: ::core::option::Option<bool>,
19501    #[prost(message, optional, tag = "4")]
19502    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
19503    /// traced_probes always sets the ftrace_clock to "boot". That is not available
19504    /// in older kernels (v3.x). In that case we fallback on "global" or "local".
19505    /// When we do that, we report the fallback clock in each bundle so we can do
19506    /// proper clock syncing at parsing time in TraceProcessor. We cannot use the
19507    /// TracePacket timestamp_clock_id because: (1) there is no per-packet
19508    /// timestamp for ftrace bundles; (2) "global" does not match CLOCK_MONOTONIC.
19509    /// Having a dedicated and explicit flag allows us to correct further misakes
19510    /// in future by looking at the kernel version.
19511    /// This field has been introduced in perfetto v19 / Android T (13).
19512    /// This field is omitted when the ftrace clock is just "boot", as that is the
19513    /// default assumption (and for consistency with the past).
19514    #[prost(enumeration = "FtraceClock", optional, tag = "5")]
19515    pub ftrace_clock: ::core::option::Option<i32>,
19516    /// The timestamp according to the ftrace clock, taken at the same instant
19517    /// as |boot_timestamp|. This is used to sync ftrace events when a non-boot
19518    /// clock is used as the ftrace clock. We don't use the ClockSnapshot packet
19519    /// because the ftrace global/local clocks don't match any of the clock_gettime
19520    /// domains and can be only read by traced_probes.
19521    ///
19522    /// Only set when |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
19523    ///
19524    /// Implementation note: Populated by reading the 'now ts:' field in
19525    /// tracefs/per_cpu/cpuX/stat.
19526    #[prost(int64, optional, tag = "6")]
19527    pub ftrace_timestamp: ::core::option::Option<i64>,
19528    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
19529    /// |ftrace_timestamp|. See documentation of |ftrace_timestamp| for
19530    /// more info.
19531    ///
19532    /// Only set when |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
19533    #[prost(int64, optional, tag = "7")]
19534    pub boot_timestamp: ::core::option::Option<i64>,
19535    #[prost(message, repeated, tag = "8")]
19536    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
19537    /// The timestamp (ftrace clock) of the last event consumed from this per-cpu
19538    /// kernel buffer prior to starting this bundle. In other words: the last
19539    /// event in the previous bundle.
19540    /// Lets the trace processing find an initial timestamp after which ftrace
19541    /// data is known to be valid across all cpus. Of particular importance when
19542    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
19543    /// oldest bundles can skew the first valid timestamp per cpu significantly.
19544    /// Added in: perfetto v44.
19545    #[prost(uint64, optional, tag = "9")]
19546    pub last_read_event_timestamp: ::core::option::Option<u64>,
19547}
19548/// Nested message and enum types in `FtraceEventBundle`.
19549pub mod ftrace_event_bundle {
19550    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
19551    /// a subset of events & their fields is recorded.
19552    /// All fields (except comms) are stored in a structure-of-arrays form, one
19553    /// entry in each repeated field per event.
19554    #[derive(Clone, PartialEq, ::prost::Message)]
19555    pub struct CompactSched {
19556        /// Interned table of unique strings for this bundle.
19557        #[prost(string, repeated, tag = "5")]
19558        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19559        /// Delta-encoded timestamps across all sched_switch events within this
19560        /// bundle. The first is absolute, each next one is relative to its
19561        /// predecessor.
19562        #[prost(uint64, repeated, tag = "1")]
19563        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
19564        #[prost(int64, repeated, tag = "2")]
19565        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
19566        #[prost(int32, repeated, tag = "3")]
19567        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
19568        #[prost(int32, repeated, tag = "4")]
19569        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
19570        /// One per event, index into |intern_table| corresponding to the
19571        /// next_comm field of the event.
19572        #[prost(uint32, repeated, tag = "6")]
19573        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
19574        /// Delta-encoded timestamps across all sched_waking events within this
19575        /// bundle. The first is absolute, each next one is relative to its
19576        /// predecessor.
19577        #[prost(uint64, repeated, tag = "7")]
19578        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
19579        #[prost(int32, repeated, tag = "8")]
19580        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
19581        #[prost(int32, repeated, tag = "9")]
19582        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
19583        #[prost(int32, repeated, tag = "10")]
19584        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
19585        /// One per event, index into |intern_table| corresponding to the
19586        /// comm field of the event.
19587        #[prost(uint32, repeated, tag = "11")]
19588        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
19589        #[prost(uint32, repeated, tag = "12")]
19590        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
19591    }
19592    /// Errors encountered during parsing of the raw ftrace data. In case of ring
19593    /// buffer layout errors, the parser skips the rest of the offending kernel
19594    /// buffer page and continues from the next page.
19595    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
19596    /// seen within the duration of the trace (even if the affected bundles get
19597    /// overwritten in ring buffer mode).
19598    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
19599    pub struct FtraceError {
19600        /// Timestamp of the data that we're unable to parse, in the ftrace clock
19601        /// domain. Currently, we use the base timestamp of the tracing page
19602        /// containing the bad record rather than the time of the record itself.
19603        #[prost(uint64, optional, tag = "1")]
19604        pub timestamp: ::core::option::Option<u64>,
19605        #[prost(enumeration = "super::FtraceParseStatus", optional, tag = "2")]
19606        pub status: ::core::option::Option<i32>,
19607    }
19608}
19609#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19610#[repr(i32)]
19611pub enum FtraceClock {
19612    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
19613    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
19614    Unspecified = 0,
19615    Unknown = 1,
19616    Global = 2,
19617    Local = 3,
19618    MonoRaw = 4,
19619}
19620impl FtraceClock {
19621    /// String value of the enum field names used in the ProtoBuf definition.
19622    ///
19623    /// The values are not transformed in any way and thus are considered stable
19624    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19625    pub fn as_str_name(&self) -> &'static str {
19626        match self {
19627            Self::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
19628            Self::Unknown => "FTRACE_CLOCK_UNKNOWN",
19629            Self::Global => "FTRACE_CLOCK_GLOBAL",
19630            Self::Local => "FTRACE_CLOCK_LOCAL",
19631            Self::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
19632        }
19633    }
19634    /// Creates an enum from field names used in the ProtoBuf definition.
19635    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19636        match value {
19637            "FTRACE_CLOCK_UNSPECIFIED" => Some(Self::Unspecified),
19638            "FTRACE_CLOCK_UNKNOWN" => Some(Self::Unknown),
19639            "FTRACE_CLOCK_GLOBAL" => Some(Self::Global),
19640            "FTRACE_CLOCK_LOCAL" => Some(Self::Local),
19641            "FTRACE_CLOCK_MONO_RAW" => Some(Self::MonoRaw),
19642            _ => None,
19643        }
19644    }
19645}
19646/// Description of GPU counters.
19647/// This message is sent by a GPU counter producer to specify the counters
19648/// available in the hardware.
19649#[derive(Clone, PartialEq, ::prost::Message)]
19650pub struct GpuCounterDescriptor {
19651    #[prost(message, repeated, tag = "1")]
19652    pub specs: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterSpec>,
19653    #[prost(message, repeated, tag = "2")]
19654    pub blocks: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterBlock>,
19655    /// optional.  Minimum sampling period supported by the producer in
19656    /// nanoseconds.
19657    #[prost(uint64, optional, tag = "3")]
19658    pub min_sampling_period_ns: ::core::option::Option<u64>,
19659    /// optional.  Maximum sampling period supported by the producer in
19660    /// nanoseconds.
19661    #[prost(uint64, optional, tag = "4")]
19662    pub max_sampling_period_ns: ::core::option::Option<u64>,
19663    /// optional.  The producer supports counter sampling by instrumenting the
19664    /// command buffer.
19665    #[prost(bool, optional, tag = "5")]
19666    pub supports_instrumented_sampling: ::core::option::Option<bool>,
19667}
19668/// Nested message and enum types in `GpuCounterDescriptor`.
19669pub mod gpu_counter_descriptor {
19670    #[derive(Clone, PartialEq, ::prost::Message)]
19671    pub struct GpuCounterSpec {
19672        #[prost(uint32, optional, tag = "1")]
19673        pub counter_id: ::core::option::Option<u32>,
19674        #[prost(string, optional, tag = "2")]
19675        pub name: ::core::option::Option<::prost::alloc::string::String>,
19676        #[prost(string, optional, tag = "3")]
19677        pub description: ::core::option::Option<::prost::alloc::string::String>,
19678        #[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "7")]
19679        pub numerator_units: ::prost::alloc::vec::Vec<i32>,
19680        #[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "8")]
19681        pub denominator_units: ::prost::alloc::vec::Vec<i32>,
19682        #[prost(bool, optional, tag = "9")]
19683        pub select_by_default: ::core::option::Option<bool>,
19684        #[prost(
19685            enumeration = "GpuCounterGroup",
19686            repeated,
19687            packed = "false",
19688            tag = "10"
19689        )]
19690        pub groups: ::prost::alloc::vec::Vec<i32>,
19691        #[prost(oneof = "gpu_counter_spec::PeakValue", tags = "5, 6")]
19692        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
19693    }
19694    /// Nested message and enum types in `GpuCounterSpec`.
19695    pub mod gpu_counter_spec {
19696        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
19697        pub enum PeakValue {
19698            #[prost(int64, tag = "5")]
19699            IntPeakValue(i64),
19700            #[prost(double, tag = "6")]
19701            DoublePeakValue(f64),
19702        }
19703    }
19704    /// Allow producer to group counters into block to represent counter islands.
19705    /// A capacity may be specified to indicate the number of counters that can be
19706    /// enable simultaneously in that block.
19707    #[derive(Clone, PartialEq, ::prost::Message)]
19708    pub struct GpuCounterBlock {
19709        /// required. Unique ID for the counter group.
19710        #[prost(uint32, optional, tag = "1")]
19711        pub block_id: ::core::option::Option<u32>,
19712        /// optional. Number of counters supported by the block. No limit if unset.
19713        #[prost(uint32, optional, tag = "2")]
19714        pub block_capacity: ::core::option::Option<u32>,
19715        /// optional. Name of block.
19716        #[prost(string, optional, tag = "3")]
19717        pub name: ::core::option::Option<::prost::alloc::string::String>,
19718        /// optional. Description for the block.
19719        #[prost(string, optional, tag = "4")]
19720        pub description: ::core::option::Option<::prost::alloc::string::String>,
19721        /// list of counters that are part of the block.
19722        #[prost(uint32, repeated, packed = "false", tag = "5")]
19723        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
19724    }
19725    /// Logical groups for a counter.  This is used in the UI to present the
19726    /// related counters together.
19727    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19728    #[repr(i32)]
19729    pub enum GpuCounterGroup {
19730        Unclassified = 0,
19731        System = 1,
19732        Vertices = 2,
19733        Fragments = 3,
19734        Primitives = 4,
19735        /// Includes counters relating to caching and bandwidth.
19736        Memory = 5,
19737        Compute = 6,
19738    }
19739    impl GpuCounterGroup {
19740        /// String value of the enum field names used in the ProtoBuf definition.
19741        ///
19742        /// The values are not transformed in any way and thus are considered stable
19743        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19744        pub fn as_str_name(&self) -> &'static str {
19745            match self {
19746                Self::Unclassified => "UNCLASSIFIED",
19747                Self::System => "SYSTEM",
19748                Self::Vertices => "VERTICES",
19749                Self::Fragments => "FRAGMENTS",
19750                Self::Primitives => "PRIMITIVES",
19751                Self::Memory => "MEMORY",
19752                Self::Compute => "COMPUTE",
19753            }
19754        }
19755        /// Creates an enum from field names used in the ProtoBuf definition.
19756        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19757            match value {
19758                "UNCLASSIFIED" => Some(Self::Unclassified),
19759                "SYSTEM" => Some(Self::System),
19760                "VERTICES" => Some(Self::Vertices),
19761                "FRAGMENTS" => Some(Self::Fragments),
19762                "PRIMITIVES" => Some(Self::Primitives),
19763                "MEMORY" => Some(Self::Memory),
19764                "COMPUTE" => Some(Self::Compute),
19765                _ => None,
19766            }
19767        }
19768    }
19769    /// next id: 41
19770    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19771    #[repr(i32)]
19772    pub enum MeasureUnit {
19773        None = 0,
19774        Bit = 1,
19775        Kilobit = 2,
19776        Megabit = 3,
19777        Gigabit = 4,
19778        Terabit = 5,
19779        Petabit = 6,
19780        Byte = 7,
19781        Kilobyte = 8,
19782        Megabyte = 9,
19783        Gigabyte = 10,
19784        Terabyte = 11,
19785        Petabyte = 12,
19786        Hertz = 13,
19787        Kilohertz = 14,
19788        Megahertz = 15,
19789        Gigahertz = 16,
19790        Terahertz = 17,
19791        Petahertz = 18,
19792        Nanosecond = 19,
19793        Microsecond = 20,
19794        Millisecond = 21,
19795        Second = 22,
19796        Minute = 23,
19797        Hour = 24,
19798        Vertex = 25,
19799        Pixel = 26,
19800        Triangle = 27,
19801        Primitive = 38,
19802        Fragment = 39,
19803        Milliwatt = 28,
19804        Watt = 29,
19805        Kilowatt = 30,
19806        Joule = 31,
19807        Volt = 32,
19808        Ampere = 33,
19809        Celsius = 34,
19810        Fahrenheit = 35,
19811        Kelvin = 36,
19812        /// Values should be out of 100.
19813        Percent = 37,
19814        Instruction = 40,
19815    }
19816    impl MeasureUnit {
19817        /// String value of the enum field names used in the ProtoBuf definition.
19818        ///
19819        /// The values are not transformed in any way and thus are considered stable
19820        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19821        pub fn as_str_name(&self) -> &'static str {
19822            match self {
19823                Self::None => "NONE",
19824                Self::Bit => "BIT",
19825                Self::Kilobit => "KILOBIT",
19826                Self::Megabit => "MEGABIT",
19827                Self::Gigabit => "GIGABIT",
19828                Self::Terabit => "TERABIT",
19829                Self::Petabit => "PETABIT",
19830                Self::Byte => "BYTE",
19831                Self::Kilobyte => "KILOBYTE",
19832                Self::Megabyte => "MEGABYTE",
19833                Self::Gigabyte => "GIGABYTE",
19834                Self::Terabyte => "TERABYTE",
19835                Self::Petabyte => "PETABYTE",
19836                Self::Hertz => "HERTZ",
19837                Self::Kilohertz => "KILOHERTZ",
19838                Self::Megahertz => "MEGAHERTZ",
19839                Self::Gigahertz => "GIGAHERTZ",
19840                Self::Terahertz => "TERAHERTZ",
19841                Self::Petahertz => "PETAHERTZ",
19842                Self::Nanosecond => "NANOSECOND",
19843                Self::Microsecond => "MICROSECOND",
19844                Self::Millisecond => "MILLISECOND",
19845                Self::Second => "SECOND",
19846                Self::Minute => "MINUTE",
19847                Self::Hour => "HOUR",
19848                Self::Vertex => "VERTEX",
19849                Self::Pixel => "PIXEL",
19850                Self::Triangle => "TRIANGLE",
19851                Self::Primitive => "PRIMITIVE",
19852                Self::Fragment => "FRAGMENT",
19853                Self::Milliwatt => "MILLIWATT",
19854                Self::Watt => "WATT",
19855                Self::Kilowatt => "KILOWATT",
19856                Self::Joule => "JOULE",
19857                Self::Volt => "VOLT",
19858                Self::Ampere => "AMPERE",
19859                Self::Celsius => "CELSIUS",
19860                Self::Fahrenheit => "FAHRENHEIT",
19861                Self::Kelvin => "KELVIN",
19862                Self::Percent => "PERCENT",
19863                Self::Instruction => "INSTRUCTION",
19864            }
19865        }
19866        /// Creates an enum from field names used in the ProtoBuf definition.
19867        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19868            match value {
19869                "NONE" => Some(Self::None),
19870                "BIT" => Some(Self::Bit),
19871                "KILOBIT" => Some(Self::Kilobit),
19872                "MEGABIT" => Some(Self::Megabit),
19873                "GIGABIT" => Some(Self::Gigabit),
19874                "TERABIT" => Some(Self::Terabit),
19875                "PETABIT" => Some(Self::Petabit),
19876                "BYTE" => Some(Self::Byte),
19877                "KILOBYTE" => Some(Self::Kilobyte),
19878                "MEGABYTE" => Some(Self::Megabyte),
19879                "GIGABYTE" => Some(Self::Gigabyte),
19880                "TERABYTE" => Some(Self::Terabyte),
19881                "PETABYTE" => Some(Self::Petabyte),
19882                "HERTZ" => Some(Self::Hertz),
19883                "KILOHERTZ" => Some(Self::Kilohertz),
19884                "MEGAHERTZ" => Some(Self::Megahertz),
19885                "GIGAHERTZ" => Some(Self::Gigahertz),
19886                "TERAHERTZ" => Some(Self::Terahertz),
19887                "PETAHERTZ" => Some(Self::Petahertz),
19888                "NANOSECOND" => Some(Self::Nanosecond),
19889                "MICROSECOND" => Some(Self::Microsecond),
19890                "MILLISECOND" => Some(Self::Millisecond),
19891                "SECOND" => Some(Self::Second),
19892                "MINUTE" => Some(Self::Minute),
19893                "HOUR" => Some(Self::Hour),
19894                "VERTEX" => Some(Self::Vertex),
19895                "PIXEL" => Some(Self::Pixel),
19896                "TRIANGLE" => Some(Self::Triangle),
19897                "PRIMITIVE" => Some(Self::Primitive),
19898                "FRAGMENT" => Some(Self::Fragment),
19899                "MILLIWATT" => Some(Self::Milliwatt),
19900                "WATT" => Some(Self::Watt),
19901                "KILOWATT" => Some(Self::Kilowatt),
19902                "JOULE" => Some(Self::Joule),
19903                "VOLT" => Some(Self::Volt),
19904                "AMPERE" => Some(Self::Ampere),
19905                "CELSIUS" => Some(Self::Celsius),
19906                "FAHRENHEIT" => Some(Self::Fahrenheit),
19907                "KELVIN" => Some(Self::Kelvin),
19908                "PERCENT" => Some(Self::Percent),
19909                "INSTRUCTION" => Some(Self::Instruction),
19910                _ => None,
19911            }
19912        }
19913    }
19914}
19915#[derive(Clone, PartialEq, ::prost::Message)]
19916pub struct GpuCounterEvent {
19917    /// The first trace packet of each session should include counter_spec.
19918    #[prost(message, optional, tag = "1")]
19919    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
19920    #[prost(message, repeated, tag = "2")]
19921    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
19922    /// optional. Identifier for GPU in a multi-gpu device.
19923    #[prost(int32, optional, tag = "3")]
19924    pub gpu_id: ::core::option::Option<i32>,
19925}
19926/// Nested message and enum types in `GpuCounterEvent`.
19927pub mod gpu_counter_event {
19928    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
19929    pub struct GpuCounter {
19930        /// required. Identifier for counter.
19931        #[prost(uint32, optional, tag = "1")]
19932        pub counter_id: ::core::option::Option<u32>,
19933        /// required. Value of the counter.
19934        #[prost(oneof = "gpu_counter::Value", tags = "2, 3")]
19935        pub value: ::core::option::Option<gpu_counter::Value>,
19936    }
19937    /// Nested message and enum types in `GpuCounter`.
19938    pub mod gpu_counter {
19939        /// required. Value of the counter.
19940        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
19941        pub enum Value {
19942            #[prost(int64, tag = "2")]
19943            IntValue(i64),
19944            #[prost(double, tag = "3")]
19945            DoubleValue(f64),
19946        }
19947    }
19948}
19949/// Message for logging events GPU data producer.
19950#[derive(Clone, PartialEq, ::prost::Message)]
19951pub struct GpuLog {
19952    #[prost(enumeration = "gpu_log::Severity", optional, tag = "1")]
19953    pub severity: ::core::option::Option<i32>,
19954    #[prost(string, optional, tag = "2")]
19955    pub tag: ::core::option::Option<::prost::alloc::string::String>,
19956    #[prost(string, optional, tag = "3")]
19957    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
19958}
19959/// Nested message and enum types in `GpuLog`.
19960pub mod gpu_log {
19961    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19962    #[repr(i32)]
19963    pub enum Severity {
19964        LogSeverityUnspecified = 0,
19965        LogSeverityVerbose = 1,
19966        LogSeverityDebug = 2,
19967        LogSeverityInfo = 3,
19968        LogSeverityWarning = 4,
19969        LogSeverityError = 5,
19970    }
19971    impl Severity {
19972        /// String value of the enum field names used in the ProtoBuf definition.
19973        ///
19974        /// The values are not transformed in any way and thus are considered stable
19975        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19976        pub fn as_str_name(&self) -> &'static str {
19977            match self {
19978                Self::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
19979                Self::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
19980                Self::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
19981                Self::LogSeverityInfo => "LOG_SEVERITY_INFO",
19982                Self::LogSeverityWarning => "LOG_SEVERITY_WARNING",
19983                Self::LogSeverityError => "LOG_SEVERITY_ERROR",
19984            }
19985        }
19986        /// Creates an enum from field names used in the ProtoBuf definition.
19987        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19988            match value {
19989                "LOG_SEVERITY_UNSPECIFIED" => Some(Self::LogSeverityUnspecified),
19990                "LOG_SEVERITY_VERBOSE" => Some(Self::LogSeverityVerbose),
19991                "LOG_SEVERITY_DEBUG" => Some(Self::LogSeverityDebug),
19992                "LOG_SEVERITY_INFO" => Some(Self::LogSeverityInfo),
19993                "LOG_SEVERITY_WARNING" => Some(Self::LogSeverityWarning),
19994                "LOG_SEVERITY_ERROR" => Some(Self::LogSeverityError),
19995                _ => None,
19996            }
19997        }
19998    }
19999}
20000/// next id: 15
20001#[derive(Clone, PartialEq, ::prost::Message)]
20002pub struct GpuRenderStageEvent {
20003    /// required. Unique ID for the event.
20004    #[prost(uint64, optional, tag = "1")]
20005    pub event_id: ::core::option::Option<u64>,
20006    /// optional. Duration of the event in nanoseconds. If unset, this is a
20007    /// single time point event.
20008    #[prost(uint64, optional, tag = "2")]
20009    pub duration: ::core::option::Option<u64>,
20010    /// required. ID to a hardware queue description in the specifications.
20011    /// InternedGpuRenderStageSpecification
20012    #[prost(uint64, optional, tag = "13")]
20013    pub hw_queue_iid: ::core::option::Option<u64>,
20014    /// required. ID to a render stage description in the specifications.
20015    /// InternedGpuRenderStageSpecification
20016    #[prost(uint64, optional, tag = "14")]
20017    pub stage_iid: ::core::option::Option<u64>,
20018    /// optional. Identifier for GPU in a multi-gpu device.
20019    #[prost(int32, optional, tag = "11")]
20020    pub gpu_id: ::core::option::Option<i32>,
20021    /// required. Graphics context for the event.
20022    /// For OpenGL, this is the GL context.
20023    /// For Vulkan, this is the VkDevice.
20024    #[prost(uint64, optional, tag = "5")]
20025    pub context: ::core::option::Option<u64>,
20026    /// optional. The render target for this event.
20027    /// For OpenGL, this is the GL frame buffer handle.
20028    /// For Vulkan, this is the VkFrameBuffer handle.
20029    #[prost(uint64, optional, tag = "8")]
20030    pub render_target_handle: ::core::option::Option<u64>,
20031    /// optional. Submission ID generated by the UMD.
20032    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
20033    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
20034    /// to a single API submission should share the same ID.
20035    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
20036    #[prost(uint32, optional, tag = "10")]
20037    pub submission_id: ::core::option::Option<u32>,
20038    #[prost(message, repeated, tag = "6")]
20039    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
20040    /// optional. The Vulkan render pass handle.
20041    #[prost(uint64, optional, tag = "9")]
20042    pub render_pass_handle: ::core::option::Option<u64>,
20043    /// optional. A bit mask representing which render subpasses contributed to
20044    /// this render stage event.  Subpass index 0 is represented by setting the
20045    /// LSB of the mask.  Additional mask can be added for subpass index greater
20046    /// than 63.
20047    #[prost(uint64, repeated, packed = "false", tag = "15")]
20048    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
20049    /// optional. The Vulkan command buffer handle.
20050    #[prost(uint64, optional, tag = "12")]
20051    pub command_buffer_handle: ::core::option::Option<u64>,
20052    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
20053    /// InternedGpuRenderStageSpecification instead.
20054    #[deprecated]
20055    #[prost(message, optional, tag = "7")]
20056    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
20057    /// Deprecated. Use hw_queue_iid instead;
20058    #[deprecated]
20059    #[prost(int32, optional, tag = "3")]
20060    pub hw_queue_id: ::core::option::Option<i32>,
20061    /// Deprecated. Use stage_iid instead;
20062    #[deprecated]
20063    #[prost(int32, optional, tag = "4")]
20064    pub stage_id: ::core::option::Option<i32>,
20065}
20066/// Nested message and enum types in `GpuRenderStageEvent`.
20067pub mod gpu_render_stage_event {
20068    /// optional. Additional data for the user. This may include attributes for
20069    /// the event like resource ids, shaders, etc.
20070    #[derive(Clone, PartialEq, ::prost::Message)]
20071    pub struct ExtraData {
20072        #[prost(string, optional, tag = "1")]
20073        pub name: ::core::option::Option<::prost::alloc::string::String>,
20074        #[prost(string, optional, tag = "2")]
20075        pub value: ::core::option::Option<::prost::alloc::string::String>,
20076    }
20077    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
20078    /// The first trace packet of each session should include a Specifications
20079    /// to enumerate *all* IDs that will be used. The timestamp of this packet
20080    /// must be earlier than all other packets. Only one packet with Specifications
20081    /// is expected.
20082    #[derive(Clone, PartialEq, ::prost::Message)]
20083    pub struct Specifications {
20084        #[prost(message, optional, tag = "1")]
20085        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
20086        /// Labels to categorize the hw Queue this event goes on.
20087        #[prost(message, repeated, tag = "2")]
20088        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
20089        /// Labels to categorize render stage(binning, render, compute etc).
20090        #[prost(message, repeated, tag = "3")]
20091        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
20092    }
20093    /// Nested message and enum types in `Specifications`.
20094    pub mod specifications {
20095        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
20096        pub struct ContextSpec {
20097            #[prost(uint64, optional, tag = "1")]
20098            pub context: ::core::option::Option<u64>,
20099            #[prost(int32, optional, tag = "2")]
20100            pub pid: ::core::option::Option<i32>,
20101        }
20102        #[derive(Clone, PartialEq, ::prost::Message)]
20103        pub struct Description {
20104            #[prost(string, optional, tag = "1")]
20105            pub name: ::core::option::Option<::prost::alloc::string::String>,
20106            #[prost(string, optional, tag = "2")]
20107            pub description: ::core::option::Option<::prost::alloc::string::String>,
20108        }
20109    }
20110}
20111/// The iid is the numeric value of either the GL Context or the VkDevice
20112/// handle.
20113#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20114pub struct InternedGraphicsContext {
20115    #[prost(uint64, optional, tag = "1")]
20116    pub iid: ::core::option::Option<u64>,
20117    #[prost(int32, optional, tag = "2")]
20118    pub pid: ::core::option::Option<i32>,
20119    #[prost(enumeration = "interned_graphics_context::Api", optional, tag = "3")]
20120    pub api: ::core::option::Option<i32>,
20121}
20122/// Nested message and enum types in `InternedGraphicsContext`.
20123pub mod interned_graphics_context {
20124    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20125    #[repr(i32)]
20126    pub enum Api {
20127        Undefined = 0,
20128        OpenGl = 1,
20129        Vulkan = 2,
20130        OpenCl = 3,
20131    }
20132    impl Api {
20133        /// String value of the enum field names used in the ProtoBuf definition.
20134        ///
20135        /// The values are not transformed in any way and thus are considered stable
20136        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20137        pub fn as_str_name(&self) -> &'static str {
20138            match self {
20139                Self::Undefined => "UNDEFINED",
20140                Self::OpenGl => "OPEN_GL",
20141                Self::Vulkan => "VULKAN",
20142                Self::OpenCl => "OPEN_CL",
20143            }
20144        }
20145        /// Creates an enum from field names used in the ProtoBuf definition.
20146        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20147            match value {
20148                "UNDEFINED" => Some(Self::Undefined),
20149                "OPEN_GL" => Some(Self::OpenGl),
20150                "VULKAN" => Some(Self::Vulkan),
20151                "OPEN_CL" => Some(Self::OpenCl),
20152                _ => None,
20153            }
20154        }
20155    }
20156}
20157#[derive(Clone, PartialEq, ::prost::Message)]
20158pub struct InternedGpuRenderStageSpecification {
20159    #[prost(uint64, optional, tag = "1")]
20160    pub iid: ::core::option::Option<u64>,
20161    #[prost(string, optional, tag = "2")]
20162    pub name: ::core::option::Option<::prost::alloc::string::String>,
20163    #[prost(string, optional, tag = "3")]
20164    pub description: ::core::option::Option<::prost::alloc::string::String>,
20165    #[prost(
20166        enumeration = "interned_gpu_render_stage_specification::RenderStageCategory",
20167        optional,
20168        tag = "4"
20169    )]
20170    pub category: ::core::option::Option<i32>,
20171}
20172/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
20173pub mod interned_gpu_render_stage_specification {
20174    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20175    #[repr(i32)]
20176    pub enum RenderStageCategory {
20177        Other = 0,
20178        Graphics = 1,
20179        Compute = 2,
20180    }
20181    impl RenderStageCategory {
20182        /// String value of the enum field names used in the ProtoBuf definition.
20183        ///
20184        /// The values are not transformed in any way and thus are considered stable
20185        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20186        pub fn as_str_name(&self) -> &'static str {
20187            match self {
20188                Self::Other => "OTHER",
20189                Self::Graphics => "GRAPHICS",
20190                Self::Compute => "COMPUTE",
20191            }
20192        }
20193        /// Creates an enum from field names used in the ProtoBuf definition.
20194        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20195            match value {
20196                "OTHER" => Some(Self::Other),
20197                "GRAPHICS" => Some(Self::Graphics),
20198                "COMPUTE" => Some(Self::Compute),
20199                _ => None,
20200            }
20201        }
20202    }
20203}
20204/// All the information that cannot be sent within a VulkanMemoryEvent message,
20205/// are sent as annotations to the main memory event. One example is the
20206/// properties of the object that consumes the allocated memory, for example, a
20207/// buffer or an image.
20208/// key_iid and string_iid are both interned strings. Original string value is
20209/// stored in vulkan_memory_keys from
20210/// protos/perfetto/trace/interned_data/interned_data.proto.
20211#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20212pub struct VulkanMemoryEventAnnotation {
20213    #[prost(uint64, optional, tag = "1")]
20214    pub key_iid: ::core::option::Option<u64>,
20215    #[prost(oneof = "vulkan_memory_event_annotation::Value", tags = "2, 3, 4")]
20216    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
20217}
20218/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
20219pub mod vulkan_memory_event_annotation {
20220    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
20221    pub enum Value {
20222        #[prost(int64, tag = "2")]
20223        IntValue(i64),
20224        #[prost(double, tag = "3")]
20225        DoubleValue(f64),
20226        #[prost(uint64, tag = "4")]
20227        StringIid(u64),
20228    }
20229}
20230/// Each VulkanMemoryEvent encompasses information regarding one single function
20231/// call that results in reserving, binding or freeing host or GPU memory. There
20232/// is a special message type, ANNOTATIONS, which is used to communicate
20233/// information that are not directly related to a memory event, nonetheless are
20234/// essential to understand the memory usage. An example is the size and memory
20235/// types of the memory heaps.
20236///
20237/// Next reserved id: 10 (up to 15).
20238/// Next id: 21.
20239#[derive(Clone, PartialEq, ::prost::Message)]
20240pub struct VulkanMemoryEvent {
20241    #[prost(enumeration = "vulkan_memory_event::Source", optional, tag = "1")]
20242    pub source: ::core::option::Option<i32>,
20243    #[prost(enumeration = "vulkan_memory_event::Operation", optional, tag = "2")]
20244    pub operation: ::core::option::Option<i32>,
20245    #[prost(int64, optional, tag = "3")]
20246    pub timestamp: ::core::option::Option<i64>,
20247    #[prost(uint32, optional, tag = "4")]
20248    pub pid: ::core::option::Option<u32>,
20249    #[prost(fixed64, optional, tag = "5")]
20250    pub memory_address: ::core::option::Option<u64>,
20251    #[prost(uint64, optional, tag = "6")]
20252    pub memory_size: ::core::option::Option<u64>,
20253    /// Interned string. Original string value is stored in function_names from
20254    /// protos/perfetto/trace/interned_data/interned_data.proto.
20255    #[prost(uint64, optional, tag = "7")]
20256    pub caller_iid: ::core::option::Option<u64>,
20257    #[prost(
20258        enumeration = "vulkan_memory_event::AllocationScope",
20259        optional,
20260        tag = "8"
20261    )]
20262    pub allocation_scope: ::core::option::Option<i32>,
20263    /// Extra related information, e.g., create configs, etc.
20264    #[prost(message, repeated, tag = "9")]
20265    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
20266    /// Field IDs used for device memory (low sampling rate)
20267    #[prost(fixed64, optional, tag = "16")]
20268    pub device: ::core::option::Option<u64>,
20269    #[prost(fixed64, optional, tag = "17")]
20270    pub device_memory: ::core::option::Option<u64>,
20271    #[prost(uint32, optional, tag = "18")]
20272    pub memory_type: ::core::option::Option<u32>,
20273    #[prost(uint32, optional, tag = "19")]
20274    pub heap: ::core::option::Option<u32>,
20275    #[prost(fixed64, optional, tag = "20")]
20276    pub object_handle: ::core::option::Option<u64>,
20277}
20278/// Nested message and enum types in `VulkanMemoryEvent`.
20279pub mod vulkan_memory_event {
20280    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20281    #[repr(i32)]
20282    pub enum Source {
20283        Unspecified = 0,
20284        Driver = 1,
20285        Device = 2,
20286        DeviceMemory = 3,
20287        Buffer = 4,
20288        Image = 5,
20289    }
20290    impl Source {
20291        /// String value of the enum field names used in the ProtoBuf definition.
20292        ///
20293        /// The values are not transformed in any way and thus are considered stable
20294        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20295        pub fn as_str_name(&self) -> &'static str {
20296            match self {
20297                Self::Unspecified => "SOURCE_UNSPECIFIED",
20298                Self::Driver => "SOURCE_DRIVER",
20299                Self::Device => "SOURCE_DEVICE",
20300                Self::DeviceMemory => "SOURCE_DEVICE_MEMORY",
20301                Self::Buffer => "SOURCE_BUFFER",
20302                Self::Image => "SOURCE_IMAGE",
20303            }
20304        }
20305        /// Creates an enum from field names used in the ProtoBuf definition.
20306        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20307            match value {
20308                "SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
20309                "SOURCE_DRIVER" => Some(Self::Driver),
20310                "SOURCE_DEVICE" => Some(Self::Device),
20311                "SOURCE_DEVICE_MEMORY" => Some(Self::DeviceMemory),
20312                "SOURCE_BUFFER" => Some(Self::Buffer),
20313                "SOURCE_IMAGE" => Some(Self::Image),
20314                _ => None,
20315            }
20316        }
20317    }
20318    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20319    #[repr(i32)]
20320    pub enum Operation {
20321        OpUnspecified = 0,
20322        /// alloc, create
20323        OpCreate = 1,
20324        /// free, destroy(non-bound)
20325        OpDestroy = 2,
20326        /// bind buffer and image
20327        OpBind = 3,
20328        /// destroy (bound)
20329        OpDestroyBound = 4,
20330        /// only annotations
20331        OpAnnotations = 5,
20332    }
20333    impl Operation {
20334        /// String value of the enum field names used in the ProtoBuf definition.
20335        ///
20336        /// The values are not transformed in any way and thus are considered stable
20337        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20338        pub fn as_str_name(&self) -> &'static str {
20339            match self {
20340                Self::OpUnspecified => "OP_UNSPECIFIED",
20341                Self::OpCreate => "OP_CREATE",
20342                Self::OpDestroy => "OP_DESTROY",
20343                Self::OpBind => "OP_BIND",
20344                Self::OpDestroyBound => "OP_DESTROY_BOUND",
20345                Self::OpAnnotations => "OP_ANNOTATIONS",
20346            }
20347        }
20348        /// Creates an enum from field names used in the ProtoBuf definition.
20349        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20350            match value {
20351                "OP_UNSPECIFIED" => Some(Self::OpUnspecified),
20352                "OP_CREATE" => Some(Self::OpCreate),
20353                "OP_DESTROY" => Some(Self::OpDestroy),
20354                "OP_BIND" => Some(Self::OpBind),
20355                "OP_DESTROY_BOUND" => Some(Self::OpDestroyBound),
20356                "OP_ANNOTATIONS" => Some(Self::OpAnnotations),
20357                _ => None,
20358            }
20359        }
20360    }
20361    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20362    #[repr(i32)]
20363    pub enum AllocationScope {
20364        ScopeUnspecified = 0,
20365        ScopeCommand = 1,
20366        ScopeObject = 2,
20367        ScopeCache = 3,
20368        ScopeDevice = 4,
20369        ScopeInstance = 5,
20370    }
20371    impl AllocationScope {
20372        /// String value of the enum field names used in the ProtoBuf definition.
20373        ///
20374        /// The values are not transformed in any way and thus are considered stable
20375        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20376        pub fn as_str_name(&self) -> &'static str {
20377            match self {
20378                Self::ScopeUnspecified => "SCOPE_UNSPECIFIED",
20379                Self::ScopeCommand => "SCOPE_COMMAND",
20380                Self::ScopeObject => "SCOPE_OBJECT",
20381                Self::ScopeCache => "SCOPE_CACHE",
20382                Self::ScopeDevice => "SCOPE_DEVICE",
20383                Self::ScopeInstance => "SCOPE_INSTANCE",
20384            }
20385        }
20386        /// Creates an enum from field names used in the ProtoBuf definition.
20387        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20388            match value {
20389                "SCOPE_UNSPECIFIED" => Some(Self::ScopeUnspecified),
20390                "SCOPE_COMMAND" => Some(Self::ScopeCommand),
20391                "SCOPE_OBJECT" => Some(Self::ScopeObject),
20392                "SCOPE_CACHE" => Some(Self::ScopeCache),
20393                "SCOPE_DEVICE" => Some(Self::ScopeDevice),
20394                "SCOPE_INSTANCE" => Some(Self::ScopeInstance),
20395                _ => None,
20396            }
20397        }
20398    }
20399}
20400/// Message for recording the Vulkan call.
20401#[derive(Clone, PartialEq, ::prost::Message)]
20402pub struct VulkanApiEvent {
20403    #[prost(oneof = "vulkan_api_event::Event", tags = "1, 2")]
20404    pub event: ::core::option::Option<vulkan_api_event::Event>,
20405}
20406/// Nested message and enum types in `VulkanApiEvent`.
20407pub mod vulkan_api_event {
20408    /// For recording vkSetDebugUtilsObjectNameEXT and
20409    /// vkDebugMarkerSetObjectNameEXT
20410    #[derive(Clone, PartialEq, ::prost::Message)]
20411    pub struct VkDebugUtilsObjectName {
20412        #[prost(uint32, optional, tag = "1")]
20413        pub pid: ::core::option::Option<u32>,
20414        #[prost(uint64, optional, tag = "2")]
20415        pub vk_device: ::core::option::Option<u64>,
20416        /// VkObjectType.  Value must match
20417        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
20418        #[prost(int32, optional, tag = "3")]
20419        pub object_type: ::core::option::Option<i32>,
20420        #[prost(uint64, optional, tag = "4")]
20421        pub object: ::core::option::Option<u64>,
20422        #[prost(string, optional, tag = "5")]
20423        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
20424    }
20425    /// For recording vkQueueSubmit call.
20426    #[derive(Clone, PartialEq, ::prost::Message)]
20427    pub struct VkQueueSubmit {
20428        #[prost(uint64, optional, tag = "1")]
20429        pub duration_ns: ::core::option::Option<u64>,
20430        #[prost(uint32, optional, tag = "2")]
20431        pub pid: ::core::option::Option<u32>,
20432        #[prost(uint32, optional, tag = "3")]
20433        pub tid: ::core::option::Option<u32>,
20434        #[prost(uint64, optional, tag = "4")]
20435        pub vk_queue: ::core::option::Option<u64>,
20436        #[prost(uint64, repeated, packed = "false", tag = "5")]
20437        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
20438        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
20439        /// submission_id must match GpuRenderStageEvent.submission_id if the
20440        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
20441        #[prost(uint32, optional, tag = "6")]
20442        pub submission_id: ::core::option::Option<u32>,
20443    }
20444    #[derive(Clone, PartialEq, ::prost::Oneof)]
20445    pub enum Event {
20446        #[prost(message, tag = "1")]
20447        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
20448        #[prost(message, tag = "2")]
20449        VkQueueSubmit(VkQueueSubmit),
20450    }
20451}
20452#[derive(Clone, PartialEq, ::prost::Message)]
20453pub struct HistogramName {
20454    #[prost(uint64, optional, tag = "1")]
20455    pub iid: ::core::option::Option<u64>,
20456    #[prost(string, optional, tag = "2")]
20457    pub name: ::core::option::Option<::prost::alloc::string::String>,
20458}
20459/// An individual histogram sample logged via Chrome's UMA metrics system.
20460#[derive(Clone, PartialEq, ::prost::Message)]
20461pub struct ChromeHistogramSample {
20462    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
20463    /// both must be present.
20464    #[prost(uint64, optional, tag = "1")]
20465    pub name_hash: ::core::option::Option<u64>,
20466    #[prost(string, optional, tag = "2")]
20467    pub name: ::core::option::Option<::prost::alloc::string::String>,
20468    #[prost(int64, optional, tag = "3")]
20469    pub sample: ::core::option::Option<i64>,
20470    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
20471    #[prost(uint64, optional, tag = "4")]
20472    pub name_iid: ::core::option::Option<u64>,
20473}
20474/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
20475/// macros. Users of the Perfetto SDK should prefer to use the
20476/// perfetto::TracedValue API to fill these protos, rather than filling them
20477/// manually.
20478///
20479/// Debug annotations are intended for debug use and are not considered a stable
20480/// API of the trace contents. Trace-based metrics that use debug annotation
20481/// values are prone to breakage, so please rely on typed TrackEvent fields for
20482/// these instead.
20483///
20484/// DebugAnnotations support nested arrays and dictionaries. Each entry is
20485/// encoded as a single DebugAnnotation message. Only dictionary entries
20486/// set the "name" field. The TrackEvent message forms an implicit root
20487/// dictionary.
20488///
20489/// Example TrackEvent with nested annotations:
20490///    track_event {
20491///      debug_annotations {
20492///        name: "foo"
20493///        dict_entries {
20494///          name: "a"
20495///          bool_value: true
20496///        }
20497///        dict_entries {
20498///          name: "b"
20499///          int_value: 123
20500///        }
20501///      }
20502///      debug_annotations {
20503///        name: "bar"
20504///        array_values {
20505///          string_value: "hello"
20506///        }
20507///        array_values {
20508///          string_value: "world"
20509///        }
20510///      }
20511///    }
20512///
20513/// Next ID: 18.
20514/// Reserved ID: 15
20515#[derive(Clone, PartialEq, ::prost::Message)]
20516pub struct DebugAnnotation {
20517    #[prost(bytes = "vec", optional, tag = "14")]
20518    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
20519    #[prost(message, repeated, tag = "11")]
20520    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
20521    #[prost(message, repeated, tag = "12")]
20522    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
20523    /// Name fields are set only for dictionary entries.
20524    #[prost(oneof = "debug_annotation::NameField", tags = "1, 10")]
20525    pub name_field: ::core::option::Option<debug_annotation::NameField>,
20526    #[prost(oneof = "debug_annotation::Value", tags = "2, 3, 4, 5, 7, 8, 9, 6, 17")]
20527    pub value: ::core::option::Option<debug_annotation::Value>,
20528    /// Used to embed arbitrary proto messages (which are also typically used to
20529    /// represent typed TrackEvent arguments). |proto_type_name| or
20530    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
20531    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
20532    /// proto messages. See |TracedValue::WriteProto| for more details.
20533    #[prost(oneof = "debug_annotation::ProtoTypeDescriptor", tags = "16, 13")]
20534    pub proto_type_descriptor: ::core::option::Option<debug_annotation::ProtoTypeDescriptor>,
20535}
20536/// Nested message and enum types in `DebugAnnotation`.
20537pub mod debug_annotation {
20538    /// Deprecated legacy way to use nested values. Only kept for
20539    /// backwards-compatibility in TraceProcessor. May be removed in the future -
20540    /// code filling protos should use |dict_entries| and |array_values| instead.
20541    #[derive(Clone, PartialEq, ::prost::Message)]
20542    pub struct NestedValue {
20543        #[prost(enumeration = "nested_value::NestedType", optional, tag = "1")]
20544        pub nested_type: ::core::option::Option<i32>,
20545        #[prost(string, repeated, tag = "2")]
20546        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20547        #[prost(message, repeated, tag = "3")]
20548        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
20549        #[prost(message, repeated, tag = "4")]
20550        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
20551        #[prost(int64, optional, tag = "5")]
20552        pub int_value: ::core::option::Option<i64>,
20553        #[prost(double, optional, tag = "6")]
20554        pub double_value: ::core::option::Option<f64>,
20555        #[prost(bool, optional, tag = "7")]
20556        pub bool_value: ::core::option::Option<bool>,
20557        #[prost(string, optional, tag = "8")]
20558        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
20559    }
20560    /// Nested message and enum types in `NestedValue`.
20561    pub mod nested_value {
20562        #[derive(
20563            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
20564        )]
20565        #[repr(i32)]
20566        pub enum NestedType {
20567            /// leaf value.
20568            Unspecified = 0,
20569            Dict = 1,
20570            Array = 2,
20571        }
20572        impl NestedType {
20573            /// String value of the enum field names used in the ProtoBuf definition.
20574            ///
20575            /// The values are not transformed in any way and thus are considered stable
20576            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20577            pub fn as_str_name(&self) -> &'static str {
20578                match self {
20579                    Self::Unspecified => "UNSPECIFIED",
20580                    Self::Dict => "DICT",
20581                    Self::Array => "ARRAY",
20582                }
20583            }
20584            /// Creates an enum from field names used in the ProtoBuf definition.
20585            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20586                match value {
20587                    "UNSPECIFIED" => Some(Self::Unspecified),
20588                    "DICT" => Some(Self::Dict),
20589                    "ARRAY" => Some(Self::Array),
20590                    _ => None,
20591                }
20592            }
20593        }
20594    }
20595    /// Name fields are set only for dictionary entries.
20596    #[derive(Clone, PartialEq, ::prost::Oneof)]
20597    pub enum NameField {
20598        /// interned DebugAnnotationName.
20599        #[prost(uint64, tag = "1")]
20600        NameIid(u64),
20601        /// non-interned variant.
20602        #[prost(string, tag = "10")]
20603        Name(::prost::alloc::string::String),
20604    }
20605    #[derive(Clone, PartialEq, ::prost::Oneof)]
20606    pub enum Value {
20607        #[prost(bool, tag = "2")]
20608        BoolValue(bool),
20609        #[prost(uint64, tag = "3")]
20610        UintValue(u64),
20611        #[prost(int64, tag = "4")]
20612        IntValue(i64),
20613        #[prost(double, tag = "5")]
20614        DoubleValue(f64),
20615        /// Pointers are stored in a separate type as the JSON output treats them
20616        /// differently from other uint64 values.
20617        #[prost(uint64, tag = "7")]
20618        PointerValue(u64),
20619        /// Deprecated. Use dict_entries / array_values instead.
20620        #[prost(message, tag = "8")]
20621        NestedValue(NestedValue),
20622        /// Legacy instrumentation may not support conversion of nested data to
20623        /// NestedValue yet.
20624        #[prost(string, tag = "9")]
20625        LegacyJsonValue(::prost::alloc::string::String),
20626        /// interned and non-interned variants of strings.
20627        #[prost(string, tag = "6")]
20628        StringValue(::prost::alloc::string::String),
20629        /// Corresponds to |debug_annotation_string_values| field in InternedData.
20630        #[prost(uint64, tag = "17")]
20631        StringValueIid(u64),
20632    }
20633    /// Used to embed arbitrary proto messages (which are also typically used to
20634    /// represent typed TrackEvent arguments). |proto_type_name| or
20635    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
20636    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
20637    /// proto messages. See |TracedValue::WriteProto| for more details.
20638    #[derive(Clone, PartialEq, ::prost::Oneof)]
20639    pub enum ProtoTypeDescriptor {
20640        #[prost(string, tag = "16")]
20641        ProtoTypeName(::prost::alloc::string::String),
20642        /// interned DebugAnnotationValueTypeName.
20643        #[prost(uint64, tag = "13")]
20644        ProtoTypeNameIid(u64),
20645    }
20646}
20647#[derive(Clone, PartialEq, ::prost::Message)]
20648pub struct DebugAnnotationName {
20649    #[prost(uint64, optional, tag = "1")]
20650    pub iid: ::core::option::Option<u64>,
20651    #[prost(string, optional, tag = "2")]
20652    pub name: ::core::option::Option<::prost::alloc::string::String>,
20653}
20654/// See the |proto_type_descriptor| comment.
20655#[derive(Clone, PartialEq, ::prost::Message)]
20656pub struct DebugAnnotationValueTypeName {
20657    #[prost(uint64, optional, tag = "1")]
20658    pub iid: ::core::option::Option<u64>,
20659    #[prost(string, optional, tag = "2")]
20660    pub name: ::core::option::Option<::prost::alloc::string::String>,
20661}
20662#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20663pub struct LogMessage {
20664    /// interned SourceLocation.
20665    #[prost(uint64, optional, tag = "1")]
20666    pub source_location_iid: ::core::option::Option<u64>,
20667    /// interned LogMessageBody.
20668    #[prost(uint64, optional, tag = "2")]
20669    pub body_iid: ::core::option::Option<u64>,
20670    #[prost(enumeration = "log_message::Priority", optional, tag = "3")]
20671    pub prio: ::core::option::Option<i32>,
20672}
20673/// Nested message and enum types in `LogMessage`.
20674pub mod log_message {
20675    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20676    #[repr(i32)]
20677    pub enum Priority {
20678        PrioUnspecified = 0,
20679        PrioUnused = 1,
20680        PrioVerbose = 2,
20681        PrioDebug = 3,
20682        PrioInfo = 4,
20683        PrioWarn = 5,
20684        PrioError = 6,
20685        PrioFatal = 7,
20686    }
20687    impl Priority {
20688        /// String value of the enum field names used in the ProtoBuf definition.
20689        ///
20690        /// The values are not transformed in any way and thus are considered stable
20691        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20692        pub fn as_str_name(&self) -> &'static str {
20693            match self {
20694                Self::PrioUnspecified => "PRIO_UNSPECIFIED",
20695                Self::PrioUnused => "PRIO_UNUSED",
20696                Self::PrioVerbose => "PRIO_VERBOSE",
20697                Self::PrioDebug => "PRIO_DEBUG",
20698                Self::PrioInfo => "PRIO_INFO",
20699                Self::PrioWarn => "PRIO_WARN",
20700                Self::PrioError => "PRIO_ERROR",
20701                Self::PrioFatal => "PRIO_FATAL",
20702            }
20703        }
20704        /// Creates an enum from field names used in the ProtoBuf definition.
20705        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20706            match value {
20707                "PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
20708                "PRIO_UNUSED" => Some(Self::PrioUnused),
20709                "PRIO_VERBOSE" => Some(Self::PrioVerbose),
20710                "PRIO_DEBUG" => Some(Self::PrioDebug),
20711                "PRIO_INFO" => Some(Self::PrioInfo),
20712                "PRIO_WARN" => Some(Self::PrioWarn),
20713                "PRIO_ERROR" => Some(Self::PrioError),
20714                "PRIO_FATAL" => Some(Self::PrioFatal),
20715                _ => None,
20716            }
20717        }
20718    }
20719}
20720#[derive(Clone, PartialEq, ::prost::Message)]
20721pub struct LogMessageBody {
20722    #[prost(uint64, optional, tag = "1")]
20723    pub iid: ::core::option::Option<u64>,
20724    #[prost(string, optional, tag = "2")]
20725    pub body: ::core::option::Option<::prost::alloc::string::String>,
20726}
20727/// TrackEvent arguments describing the execution of a task.
20728#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20729pub struct TaskExecution {
20730    /// Source location that the task was posted from.
20731    /// interned SourceLocation.
20732    #[prost(uint64, optional, tag = "1")]
20733    pub posted_from_iid: ::core::option::Option<u64>,
20734}
20735/// A list of processes connected to the tracing service.
20736#[derive(Clone, PartialEq, ::prost::Message)]
20737pub struct ChromeActiveProcesses {
20738    #[prost(int32, repeated, packed = "false", tag = "1")]
20739    pub pid: ::prost::alloc::vec::Vec<i32>,
20740}
20741/// Trace event arguments for application state changes.
20742#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20743pub struct ChromeApplicationStateInfo {
20744    #[prost(
20745        enumeration = "chrome_application_state_info::ChromeApplicationState",
20746        optional,
20747        tag = "1"
20748    )]
20749    pub application_state: ::core::option::Option<i32>,
20750}
20751/// Nested message and enum types in `ChromeApplicationStateInfo`.
20752pub mod chrome_application_state_info {
20753    /// Enum definition taken from:
20754    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
20755    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20756    #[repr(i32)]
20757    pub enum ChromeApplicationState {
20758        ApplicationStateUnknown = 0,
20759        ApplicationStateHasRunningActivities = 1,
20760        ApplicationStateHasPausedActivities = 2,
20761        ApplicationStateHasStoppedActivities = 3,
20762        ApplicationStateHasDestroyedActivities = 4,
20763    }
20764    impl ChromeApplicationState {
20765        /// String value of the enum field names used in the ProtoBuf definition.
20766        ///
20767        /// The values are not transformed in any way and thus are considered stable
20768        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20769        pub fn as_str_name(&self) -> &'static str {
20770            match self {
20771                Self::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
20772                Self::ApplicationStateHasRunningActivities => {
20773                    "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES"
20774                }
20775                Self::ApplicationStateHasPausedActivities => {
20776                    "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES"
20777                }
20778                Self::ApplicationStateHasStoppedActivities => {
20779                    "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES"
20780                }
20781                Self::ApplicationStateHasDestroyedActivities => {
20782                    "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES"
20783                }
20784            }
20785        }
20786        /// Creates an enum from field names used in the ProtoBuf definition.
20787        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20788            match value {
20789                "APPLICATION_STATE_UNKNOWN" => Some(Self::ApplicationStateUnknown),
20790                "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES" => {
20791                    Some(Self::ApplicationStateHasRunningActivities)
20792                }
20793                "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES" => {
20794                    Some(Self::ApplicationStateHasPausedActivities)
20795                }
20796                "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES" => {
20797                    Some(Self::ApplicationStateHasStoppedActivities)
20798                }
20799                "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES" => {
20800                    Some(Self::ApplicationStateHasDestroyedActivities)
20801                }
20802                _ => None,
20803            }
20804        }
20805    }
20806}
20807/// A source location, represented as a native symbol.
20808/// This is similar to `message Frame` from
20809/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
20810/// source code locations (for example in track event args), not stack frames.
20811#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20812pub struct UnsymbolizedSourceLocation {
20813    #[prost(uint64, optional, tag = "1")]
20814    pub iid: ::core::option::Option<u64>,
20815    #[prost(uint64, optional, tag = "2")]
20816    pub mapping_id: ::core::option::Option<u64>,
20817    #[prost(uint64, optional, tag = "3")]
20818    pub rel_pc: ::core::option::Option<u64>,
20819}
20820#[derive(Clone, PartialEq, ::prost::Message)]
20821pub struct SourceLocation {
20822    #[prost(uint64, optional, tag = "1")]
20823    pub iid: ::core::option::Option<u64>,
20824    #[prost(string, optional, tag = "2")]
20825    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
20826    #[prost(string, optional, tag = "3")]
20827    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
20828    #[prost(uint32, optional, tag = "4")]
20829    pub line_number: ::core::option::Option<u32>,
20830}
20831/// Next id: 18
20832#[derive(Clone, PartialEq, ::prost::Message)]
20833pub struct ChromeCompositorSchedulerState {
20834    #[prost(message, optional, tag = "1")]
20835    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
20836    #[prost(bool, optional, tag = "2")]
20837    pub observing_begin_frame_source: ::core::option::Option<bool>,
20838    #[prost(bool, optional, tag = "3")]
20839    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
20840    #[prost(bool, optional, tag = "4")]
20841    pub pending_begin_frame_task: ::core::option::Option<bool>,
20842    #[prost(bool, optional, tag = "5")]
20843    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
20844    #[prost(enumeration = "ChromeCompositorSchedulerAction", optional, tag = "7")]
20845    pub inside_action: ::core::option::Option<i32>,
20846    #[prost(
20847        enumeration = "chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode",
20848        optional,
20849        tag = "8"
20850    )]
20851    pub deadline_mode: ::core::option::Option<i32>,
20852    #[prost(int64, optional, tag = "9")]
20853    pub deadline_us: ::core::option::Option<i64>,
20854    #[prost(int64, optional, tag = "10")]
20855    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
20856    #[prost(int64, optional, tag = "11")]
20857    pub now_us: ::core::option::Option<i64>,
20858    #[prost(int64, optional, tag = "12")]
20859    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
20860    #[prost(int64, optional, tag = "13")]
20861    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
20862    #[prost(message, optional, tag = "14")]
20863    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
20864    #[prost(message, optional, tag = "15")]
20865    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
20866    #[prost(message, optional, tag = "16")]
20867    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
20868    #[prost(message, optional, tag = "17")]
20869    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
20870}
20871/// Nested message and enum types in `ChromeCompositorSchedulerState`.
20872pub mod chrome_compositor_scheduler_state {
20873    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20874    #[repr(i32)]
20875    pub enum BeginImplFrameDeadlineMode {
20876        DeadlineModeUnspecified = 0,
20877        DeadlineModeNone = 1,
20878        DeadlineModeImmediate = 2,
20879        DeadlineModeRegular = 3,
20880        DeadlineModeLate = 4,
20881        DeadlineModeBlocked = 5,
20882    }
20883    impl BeginImplFrameDeadlineMode {
20884        /// String value of the enum field names used in the ProtoBuf definition.
20885        ///
20886        /// The values are not transformed in any way and thus are considered stable
20887        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20888        pub fn as_str_name(&self) -> &'static str {
20889            match self {
20890                Self::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
20891                Self::DeadlineModeNone => "DEADLINE_MODE_NONE",
20892                Self::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
20893                Self::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
20894                Self::DeadlineModeLate => "DEADLINE_MODE_LATE",
20895                Self::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
20896            }
20897        }
20898        /// Creates an enum from field names used in the ProtoBuf definition.
20899        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20900            match value {
20901                "DEADLINE_MODE_UNSPECIFIED" => Some(Self::DeadlineModeUnspecified),
20902                "DEADLINE_MODE_NONE" => Some(Self::DeadlineModeNone),
20903                "DEADLINE_MODE_IMMEDIATE" => Some(Self::DeadlineModeImmediate),
20904                "DEADLINE_MODE_REGULAR" => Some(Self::DeadlineModeRegular),
20905                "DEADLINE_MODE_LATE" => Some(Self::DeadlineModeLate),
20906                "DEADLINE_MODE_BLOCKED" => Some(Self::DeadlineModeBlocked),
20907                _ => None,
20908            }
20909        }
20910    }
20911}
20912/// Describes the current values stored in the Chrome Compositor state machine.
20913/// Next id: 3
20914#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20915pub struct ChromeCompositorStateMachine {
20916    #[prost(message, optional, tag = "1")]
20917    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
20918    #[prost(message, optional, tag = "2")]
20919    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
20920}
20921/// Nested message and enum types in `ChromeCompositorStateMachine`.
20922pub mod chrome_compositor_state_machine {
20923    /// Next id: 6
20924    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
20925    pub struct MajorState {
20926        #[prost(
20927            enumeration = "super::ChromeCompositorSchedulerAction",
20928            optional,
20929            tag = "1"
20930        )]
20931        pub next_action: ::core::option::Option<i32>,
20932        #[prost(enumeration = "major_state::BeginImplFrameState", optional, tag = "2")]
20933        pub begin_impl_frame_state: ::core::option::Option<i32>,
20934        #[prost(enumeration = "major_state::BeginMainFrameState", optional, tag = "3")]
20935        pub begin_main_frame_state: ::core::option::Option<i32>,
20936        #[prost(
20937            enumeration = "major_state::LayerTreeFrameSinkState",
20938            optional,
20939            tag = "4"
20940        )]
20941        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
20942        #[prost(
20943            enumeration = "major_state::ForcedRedrawOnTimeoutState",
20944            optional,
20945            tag = "5"
20946        )]
20947        pub forced_redraw_state: ::core::option::Option<i32>,
20948    }
20949    /// Nested message and enum types in `MajorState`.
20950    pub mod major_state {
20951        #[derive(
20952            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
20953        )]
20954        #[repr(i32)]
20955        pub enum BeginImplFrameState {
20956            BeginImplFrameUnspecified = 0,
20957            BeginImplFrameIdle = 1,
20958            BeginImplFrameInsideBeginFrame = 2,
20959            BeginImplFrameInsideDeadline = 3,
20960        }
20961        impl BeginImplFrameState {
20962            /// String value of the enum field names used in the ProtoBuf definition.
20963            ///
20964            /// The values are not transformed in any way and thus are considered stable
20965            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20966            pub fn as_str_name(&self) -> &'static str {
20967                match self {
20968                    Self::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
20969                    Self::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
20970                    Self::BeginImplFrameInsideBeginFrame => "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME",
20971                    Self::BeginImplFrameInsideDeadline => "BEGIN_IMPL_FRAME_INSIDE_DEADLINE",
20972                }
20973            }
20974            /// Creates an enum from field names used in the ProtoBuf definition.
20975            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20976                match value {
20977                    "BEGIN_IMPL_FRAME_UNSPECIFIED" => Some(Self::BeginImplFrameUnspecified),
20978                    "BEGIN_IMPL_FRAME_IDLE" => Some(Self::BeginImplFrameIdle),
20979                    "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME" => {
20980                        Some(Self::BeginImplFrameInsideBeginFrame)
20981                    }
20982                    "BEGIN_IMPL_FRAME_INSIDE_DEADLINE" => Some(Self::BeginImplFrameInsideDeadline),
20983                    _ => None,
20984                }
20985            }
20986        }
20987        #[derive(
20988            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
20989        )]
20990        #[repr(i32)]
20991        pub enum BeginMainFrameState {
20992            BeginMainFrameUnspecified = 0,
20993            BeginMainFrameIdle = 1,
20994            BeginMainFrameSent = 2,
20995            BeginMainFrameReadyToCommit = 3,
20996        }
20997        impl BeginMainFrameState {
20998            /// String value of the enum field names used in the ProtoBuf definition.
20999            ///
21000            /// The values are not transformed in any way and thus are considered stable
21001            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21002            pub fn as_str_name(&self) -> &'static str {
21003                match self {
21004                    Self::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
21005                    Self::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
21006                    Self::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
21007                    Self::BeginMainFrameReadyToCommit => "BEGIN_MAIN_FRAME_READY_TO_COMMIT",
21008                }
21009            }
21010            /// Creates an enum from field names used in the ProtoBuf definition.
21011            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21012                match value {
21013                    "BEGIN_MAIN_FRAME_UNSPECIFIED" => Some(Self::BeginMainFrameUnspecified),
21014                    "BEGIN_MAIN_FRAME_IDLE" => Some(Self::BeginMainFrameIdle),
21015                    "BEGIN_MAIN_FRAME_SENT" => Some(Self::BeginMainFrameSent),
21016                    "BEGIN_MAIN_FRAME_READY_TO_COMMIT" => Some(Self::BeginMainFrameReadyToCommit),
21017                    _ => None,
21018                }
21019            }
21020        }
21021        #[derive(
21022            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
21023        )]
21024        #[repr(i32)]
21025        pub enum LayerTreeFrameSinkState {
21026            LayerTreeFrameUnspecified = 0,
21027            LayerTreeFrameNone = 1,
21028            LayerTreeFrameActive = 2,
21029            LayerTreeFrameCreating = 3,
21030            LayerTreeFrameWaitingForFirstCommit = 4,
21031            LayerTreeFrameWaitingForFirstActivation = 5,
21032        }
21033        impl LayerTreeFrameSinkState {
21034            /// String value of the enum field names used in the ProtoBuf definition.
21035            ///
21036            /// The values are not transformed in any way and thus are considered stable
21037            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21038            pub fn as_str_name(&self) -> &'static str {
21039                match self {
21040                    Self::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
21041                    Self::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
21042                    Self::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
21043                    Self::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
21044                    Self::LayerTreeFrameWaitingForFirstCommit => {
21045                        "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT"
21046                    }
21047                    Self::LayerTreeFrameWaitingForFirstActivation => {
21048                        "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION"
21049                    }
21050                }
21051            }
21052            /// Creates an enum from field names used in the ProtoBuf definition.
21053            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21054                match value {
21055                    "LAYER_TREE_FRAME_UNSPECIFIED" => Some(Self::LayerTreeFrameUnspecified),
21056                    "LAYER_TREE_FRAME_NONE" => Some(Self::LayerTreeFrameNone),
21057                    "LAYER_TREE_FRAME_ACTIVE" => Some(Self::LayerTreeFrameActive),
21058                    "LAYER_TREE_FRAME_CREATING" => Some(Self::LayerTreeFrameCreating),
21059                    "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT" => {
21060                        Some(Self::LayerTreeFrameWaitingForFirstCommit)
21061                    }
21062                    "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION" => {
21063                        Some(Self::LayerTreeFrameWaitingForFirstActivation)
21064                    }
21065                    _ => None,
21066                }
21067            }
21068        }
21069        #[derive(
21070            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
21071        )]
21072        #[repr(i32)]
21073        pub enum ForcedRedrawOnTimeoutState {
21074            ForcedRedrawUnspecified = 0,
21075            ForcedRedrawIdle = 1,
21076            ForcedRedrawWaitingForCommit = 2,
21077            ForcedRedrawWaitingForActivation = 3,
21078            ForcedRedrawWaitingForDraw = 4,
21079        }
21080        impl ForcedRedrawOnTimeoutState {
21081            /// String value of the enum field names used in the ProtoBuf definition.
21082            ///
21083            /// The values are not transformed in any way and thus are considered stable
21084            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21085            pub fn as_str_name(&self) -> &'static str {
21086                match self {
21087                    Self::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
21088                    Self::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
21089                    Self::ForcedRedrawWaitingForCommit => "FORCED_REDRAW_WAITING_FOR_COMMIT",
21090                    Self::ForcedRedrawWaitingForActivation => {
21091                        "FORCED_REDRAW_WAITING_FOR_ACTIVATION"
21092                    }
21093                    Self::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
21094                }
21095            }
21096            /// Creates an enum from field names used in the ProtoBuf definition.
21097            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21098                match value {
21099                    "FORCED_REDRAW_UNSPECIFIED" => Some(Self::ForcedRedrawUnspecified),
21100                    "FORCED_REDRAW_IDLE" => Some(Self::ForcedRedrawIdle),
21101                    "FORCED_REDRAW_WAITING_FOR_COMMIT" => Some(Self::ForcedRedrawWaitingForCommit),
21102                    "FORCED_REDRAW_WAITING_FOR_ACTIVATION" => {
21103                        Some(Self::ForcedRedrawWaitingForActivation)
21104                    }
21105                    "FORCED_REDRAW_WAITING_FOR_DRAW" => Some(Self::ForcedRedrawWaitingForDraw),
21106                    _ => None,
21107                }
21108            }
21109        }
21110    }
21111    /// Next id: 47
21112    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
21113    pub struct MinorState {
21114        #[prost(int32, optional, tag = "1")]
21115        pub commit_count: ::core::option::Option<i32>,
21116        #[prost(int32, optional, tag = "2")]
21117        pub current_frame_number: ::core::option::Option<i32>,
21118        #[prost(int32, optional, tag = "3")]
21119        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
21120        #[prost(int32, optional, tag = "4")]
21121        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
21122        #[prost(int32, optional, tag = "5")]
21123        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
21124        #[prost(bool, optional, tag = "6")]
21125        pub did_draw: ::core::option::Option<bool>,
21126        #[prost(bool, optional, tag = "7")]
21127        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
21128        #[prost(bool, optional, tag = "8")]
21129        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
21130        #[prost(bool, optional, tag = "9")]
21131        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
21132        #[prost(bool, optional, tag = "10")]
21133        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
21134        #[prost(bool, optional, tag = "11")]
21135        pub did_commit_during_frame: ::core::option::Option<bool>,
21136        #[prost(bool, optional, tag = "12")]
21137        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
21138        #[prost(bool, optional, tag = "13")]
21139        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
21140        #[prost(bool, optional, tag = "14")]
21141        pub did_prepare_tiles: ::core::option::Option<bool>,
21142        #[prost(int32, optional, tag = "15")]
21143        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
21144        #[prost(int32, optional, tag = "16")]
21145        pub pending_submit_frames: ::core::option::Option<i32>,
21146        #[prost(int32, optional, tag = "17")]
21147        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<i32>,
21148        #[prost(bool, optional, tag = "18")]
21149        pub needs_redraw: ::core::option::Option<bool>,
21150        #[prost(bool, optional, tag = "19")]
21151        pub needs_prepare_tiles: ::core::option::Option<bool>,
21152        #[prost(bool, optional, tag = "20")]
21153        pub needs_begin_main_frame: ::core::option::Option<bool>,
21154        #[prost(bool, optional, tag = "21")]
21155        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
21156        #[prost(bool, optional, tag = "22")]
21157        pub visible: ::core::option::Option<bool>,
21158        #[prost(bool, optional, tag = "23")]
21159        pub begin_frame_source_paused: ::core::option::Option<bool>,
21160        #[prost(bool, optional, tag = "24")]
21161        pub can_draw: ::core::option::Option<bool>,
21162        #[prost(bool, optional, tag = "25")]
21163        pub resourceless_draw: ::core::option::Option<bool>,
21164        #[prost(bool, optional, tag = "26")]
21165        pub has_pending_tree: ::core::option::Option<bool>,
21166        #[prost(bool, optional, tag = "27")]
21167        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
21168        #[prost(bool, optional, tag = "28")]
21169        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
21170        #[prost(bool, optional, tag = "29")]
21171        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
21172        #[prost(bool, optional, tag = "30")]
21173        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<bool>,
21174        #[prost(enumeration = "minor_state::TreePriority", optional, tag = "31")]
21175        pub tree_priority: ::core::option::Option<i32>,
21176        #[prost(enumeration = "minor_state::ScrollHandlerState", optional, tag = "32")]
21177        pub scroll_handler_state: ::core::option::Option<i32>,
21178        #[prost(bool, optional, tag = "33")]
21179        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
21180        #[prost(bool, optional, tag = "34")]
21181        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
21182        #[prost(bool, optional, tag = "36")]
21183        pub video_needs_begin_frames: ::core::option::Option<bool>,
21184        #[prost(bool, optional, tag = "37")]
21185        pub defer_begin_main_frame: ::core::option::Option<bool>,
21186        #[prost(bool, optional, tag = "38")]
21187        pub last_commit_had_no_updates: ::core::option::Option<bool>,
21188        #[prost(bool, optional, tag = "39")]
21189        pub did_draw_in_last_frame: ::core::option::Option<bool>,
21190        #[prost(bool, optional, tag = "40")]
21191        pub did_submit_in_last_frame: ::core::option::Option<bool>,
21192        #[prost(bool, optional, tag = "41")]
21193        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
21194        #[prost(bool, optional, tag = "42")]
21195        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
21196        #[prost(bool, optional, tag = "43")]
21197        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
21198        #[prost(bool, optional, tag = "44")]
21199        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
21200        #[prost(bool, optional, tag = "45")]
21201        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
21202        #[prost(bool, optional, tag = "46")]
21203        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
21204    }
21205    /// Nested message and enum types in `MinorState`.
21206    pub mod minor_state {
21207        #[derive(
21208            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
21209        )]
21210        #[repr(i32)]
21211        pub enum TreePriority {
21212            Unspecified = 0,
21213            SamePriorityForBothTrees = 1,
21214            SmoothnessTakesPriority = 2,
21215            NewContentTakesPriority = 3,
21216        }
21217        impl TreePriority {
21218            /// String value of the enum field names used in the ProtoBuf definition.
21219            ///
21220            /// The values are not transformed in any way and thus are considered stable
21221            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21222            pub fn as_str_name(&self) -> &'static str {
21223                match self {
21224                    Self::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
21225                    Self::SamePriorityForBothTrees => "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES",
21226                    Self::SmoothnessTakesPriority => "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY",
21227                    Self::NewContentTakesPriority => "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY",
21228                }
21229            }
21230            /// Creates an enum from field names used in the ProtoBuf definition.
21231            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21232                match value {
21233                    "TREE_PRIORITY_UNSPECIFIED" => Some(Self::Unspecified),
21234                    "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES" => {
21235                        Some(Self::SamePriorityForBothTrees)
21236                    }
21237                    "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY" => {
21238                        Some(Self::SmoothnessTakesPriority)
21239                    }
21240                    "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY" => {
21241                        Some(Self::NewContentTakesPriority)
21242                    }
21243                    _ => None,
21244                }
21245            }
21246        }
21247        #[derive(
21248            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
21249        )]
21250        #[repr(i32)]
21251        pub enum ScrollHandlerState {
21252            ScrollHandlerUnspecified = 0,
21253            ScrollAffectsScrollHandler = 1,
21254            ScrollDoesNotAffectScrollHandler = 2,
21255        }
21256        impl ScrollHandlerState {
21257            /// String value of the enum field names used in the ProtoBuf definition.
21258            ///
21259            /// The values are not transformed in any way and thus are considered stable
21260            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21261            pub fn as_str_name(&self) -> &'static str {
21262                match self {
21263                    Self::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
21264                    Self::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
21265                    Self::ScrollDoesNotAffectScrollHandler => {
21266                        "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER"
21267                    }
21268                }
21269            }
21270            /// Creates an enum from field names used in the ProtoBuf definition.
21271            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21272                match value {
21273                    "SCROLL_HANDLER_UNSPECIFIED" => Some(Self::ScrollHandlerUnspecified),
21274                    "SCROLL_AFFECTS_SCROLL_HANDLER" => Some(Self::ScrollAffectsScrollHandler),
21275                    "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER" => {
21276                        Some(Self::ScrollDoesNotAffectScrollHandler)
21277                    }
21278                    _ => None,
21279                }
21280            }
21281        }
21282    }
21283}
21284/// Next id: 13
21285#[derive(Clone, PartialEq, ::prost::Message)]
21286pub struct BeginFrameArgs {
21287    #[prost(
21288        enumeration = "begin_frame_args::BeginFrameArgsType",
21289        optional,
21290        tag = "1"
21291    )]
21292    pub r#type: ::core::option::Option<i32>,
21293    #[prost(uint64, optional, tag = "2")]
21294    pub source_id: ::core::option::Option<u64>,
21295    #[prost(uint64, optional, tag = "3")]
21296    pub sequence_number: ::core::option::Option<u64>,
21297    #[prost(int64, optional, tag = "4")]
21298    pub frame_time_us: ::core::option::Option<i64>,
21299    #[prost(int64, optional, tag = "5")]
21300    pub deadline_us: ::core::option::Option<i64>,
21301    #[prost(int64, optional, tag = "6")]
21302    pub interval_delta_us: ::core::option::Option<i64>,
21303    #[prost(bool, optional, tag = "7")]
21304    pub on_critical_path: ::core::option::Option<bool>,
21305    #[prost(bool, optional, tag = "8")]
21306    pub animate_only: ::core::option::Option<bool>,
21307    #[prost(int64, optional, tag = "12")]
21308    pub frames_throttled_since_last: ::core::option::Option<i64>,
21309    #[prost(oneof = "begin_frame_args::CreatedFrom", tags = "9, 10")]
21310    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
21311}
21312/// Nested message and enum types in `BeginFrameArgs`.
21313pub mod begin_frame_args {
21314    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
21315    /// drop this in the proto representation, and instead make the JSON format
21316    /// "subtype" field become the type field.
21317    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21318    #[repr(i32)]
21319    pub enum BeginFrameArgsType {
21320        Unspecified = 0,
21321        Invalid = 1,
21322        Normal = 2,
21323        Missed = 3,
21324    }
21325    impl BeginFrameArgsType {
21326        /// String value of the enum field names used in the ProtoBuf definition.
21327        ///
21328        /// The values are not transformed in any way and thus are considered stable
21329        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21330        pub fn as_str_name(&self) -> &'static str {
21331            match self {
21332                Self::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
21333                Self::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
21334                Self::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
21335                Self::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
21336            }
21337        }
21338        /// Creates an enum from field names used in the ProtoBuf definition.
21339        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21340            match value {
21341                "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
21342                "BEGIN_FRAME_ARGS_TYPE_INVALID" => Some(Self::Invalid),
21343                "BEGIN_FRAME_ARGS_TYPE_NORMAL" => Some(Self::Normal),
21344                "BEGIN_FRAME_ARGS_TYPE_MISSED" => Some(Self::Missed),
21345                _ => None,
21346            }
21347        }
21348    }
21349    #[derive(Clone, PartialEq, ::prost::Oneof)]
21350    pub enum CreatedFrom {
21351        /// The interned SourceLocation.
21352        #[prost(uint64, tag = "9")]
21353        SourceLocationIid(u64),
21354        /// The SourceLocation that this args was created from.
21355        /// TODO(nuskos): Eventually we will support interning inside of
21356        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
21357        /// since we can emit it as part of the InternedData message. When we can
21358        /// remove this |source_location|.
21359        #[prost(message, tag = "10")]
21360        SourceLocation(super::SourceLocation),
21361    }
21362}
21363/// Next id: 7
21364#[derive(Clone, PartialEq, ::prost::Message)]
21365pub struct BeginImplFrameArgs {
21366    #[prost(int64, optional, tag = "1")]
21367    pub updated_at_us: ::core::option::Option<i64>,
21368    #[prost(int64, optional, tag = "2")]
21369    pub finished_at_us: ::core::option::Option<i64>,
21370    #[prost(enumeration = "begin_impl_frame_args::State", optional, tag = "3")]
21371    pub state: ::core::option::Option<i32>,
21372    #[prost(message, optional, tag = "6")]
21373    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
21374    #[prost(oneof = "begin_impl_frame_args::Args", tags = "4, 5")]
21375    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
21376}
21377/// Nested message and enum types in `BeginImplFrameArgs`.
21378pub mod begin_impl_frame_args {
21379    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
21380    pub struct TimestampsInUs {
21381        #[prost(int64, optional, tag = "1")]
21382        pub interval_delta: ::core::option::Option<i64>,
21383        #[prost(int64, optional, tag = "2")]
21384        pub now_to_deadline_delta: ::core::option::Option<i64>,
21385        #[prost(int64, optional, tag = "3")]
21386        pub frame_time_to_now_delta: ::core::option::Option<i64>,
21387        #[prost(int64, optional, tag = "4")]
21388        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
21389        #[prost(int64, optional, tag = "5")]
21390        pub now: ::core::option::Option<i64>,
21391        #[prost(int64, optional, tag = "6")]
21392        pub frame_time: ::core::option::Option<i64>,
21393        #[prost(int64, optional, tag = "7")]
21394        pub deadline: ::core::option::Option<i64>,
21395    }
21396    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21397    #[repr(i32)]
21398    pub enum State {
21399        BeginFrameFinished = 0,
21400        BeginFrameUsing = 1,
21401    }
21402    impl State {
21403        /// String value of the enum field names used in the ProtoBuf definition.
21404        ///
21405        /// The values are not transformed in any way and thus are considered stable
21406        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21407        pub fn as_str_name(&self) -> &'static str {
21408            match self {
21409                Self::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
21410                Self::BeginFrameUsing => "BEGIN_FRAME_USING",
21411            }
21412        }
21413        /// Creates an enum from field names used in the ProtoBuf definition.
21414        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21415            match value {
21416                "BEGIN_FRAME_FINISHED" => Some(Self::BeginFrameFinished),
21417                "BEGIN_FRAME_USING" => Some(Self::BeginFrameUsing),
21418                _ => None,
21419            }
21420        }
21421    }
21422    #[derive(Clone, PartialEq, ::prost::Oneof)]
21423    pub enum Args {
21424        /// Only set if |state| is BEGIN_FRAME_FINISHED.
21425        #[prost(message, tag = "4")]
21426        CurrentArgs(super::BeginFrameArgs),
21427        /// Only set if |state| is BEGIN_FRAME_USING.
21428        #[prost(message, tag = "5")]
21429        LastArgs(super::BeginFrameArgs),
21430    }
21431}
21432#[derive(Clone, PartialEq, ::prost::Message)]
21433pub struct BeginFrameObserverState {
21434    #[prost(int64, optional, tag = "1")]
21435    pub dropped_begin_frame_args: ::core::option::Option<i64>,
21436    #[prost(message, optional, tag = "2")]
21437    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
21438}
21439#[derive(Clone, PartialEq, ::prost::Message)]
21440pub struct BeginFrameSourceState {
21441    #[prost(uint32, optional, tag = "1")]
21442    pub source_id: ::core::option::Option<u32>,
21443    #[prost(bool, optional, tag = "2")]
21444    pub paused: ::core::option::Option<bool>,
21445    #[prost(uint32, optional, tag = "3")]
21446    pub num_observers: ::core::option::Option<u32>,
21447    #[prost(message, optional, tag = "4")]
21448    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
21449}
21450#[derive(Clone, Copy, PartialEq, ::prost::Message)]
21451pub struct CompositorTimingHistory {
21452    #[prost(int64, optional, tag = "1")]
21453    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
21454    #[prost(int64, optional, tag = "2")]
21455    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<i64>,
21456    #[prost(int64, optional, tag = "3")]
21457    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<i64>,
21458    #[prost(int64, optional, tag = "4")]
21459    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
21460    #[prost(int64, optional, tag = "5")]
21461    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
21462    #[prost(int64, optional, tag = "6")]
21463    pub activate_estimate_delta_us: ::core::option::Option<i64>,
21464    #[prost(int64, optional, tag = "7")]
21465    pub draw_estimate_delta_us: ::core::option::Option<i64>,
21466}
21467#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21468#[repr(i32)]
21469pub enum ChromeCompositorSchedulerAction {
21470    CcSchedulerActionUnspecified = 0,
21471    CcSchedulerActionNone = 1,
21472    CcSchedulerActionSendBeginMainFrame = 2,
21473    CcSchedulerActionCommit = 3,
21474    CcSchedulerActionActivateSyncTree = 4,
21475    CcSchedulerActionDrawIfPossible = 5,
21476    CcSchedulerActionDrawForced = 6,
21477    CcSchedulerActionDrawAbort = 7,
21478    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
21479    CcSchedulerActionPrepareTiles = 9,
21480    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
21481    CcSchedulerActionPerformImplSideInvalidation = 11,
21482    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
21483    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
21484}
21485impl ChromeCompositorSchedulerAction {
21486    /// String value of the enum field names used in the ProtoBuf definition.
21487    ///
21488    /// The values are not transformed in any way and thus are considered stable
21489    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21490    pub fn as_str_name(&self) -> &'static str {
21491        match self {
21492            Self::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
21493            Self::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
21494            Self::CcSchedulerActionSendBeginMainFrame => {
21495                "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME"
21496            }
21497            Self::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
21498            Self::CcSchedulerActionActivateSyncTree => "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE",
21499            Self::CcSchedulerActionDrawIfPossible => "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE",
21500            Self::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
21501            Self::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
21502            Self::CcSchedulerActionBeginLayerTreeFrameSinkCreation => {
21503                "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION"
21504            }
21505            Self::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
21506            Self::CcSchedulerActionInvalidateLayerTreeFrameSink => {
21507                "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK"
21508            }
21509            Self::CcSchedulerActionPerformImplSideInvalidation => {
21510                "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION"
21511            }
21512            Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => {
21513                "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL"
21514            }
21515            Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => {
21516                "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON"
21517            }
21518        }
21519    }
21520    /// Creates an enum from field names used in the ProtoBuf definition.
21521    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21522        match value {
21523            "CC_SCHEDULER_ACTION_UNSPECIFIED" => Some(Self::CcSchedulerActionUnspecified),
21524            "CC_SCHEDULER_ACTION_NONE" => Some(Self::CcSchedulerActionNone),
21525            "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME" => {
21526                Some(Self::CcSchedulerActionSendBeginMainFrame)
21527            }
21528            "CC_SCHEDULER_ACTION_COMMIT" => Some(Self::CcSchedulerActionCommit),
21529            "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE" => {
21530                Some(Self::CcSchedulerActionActivateSyncTree)
21531            }
21532            "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE" => Some(Self::CcSchedulerActionDrawIfPossible),
21533            "CC_SCHEDULER_ACTION_DRAW_FORCED" => Some(Self::CcSchedulerActionDrawForced),
21534            "CC_SCHEDULER_ACTION_DRAW_ABORT" => Some(Self::CcSchedulerActionDrawAbort),
21535            "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION" => {
21536                Some(Self::CcSchedulerActionBeginLayerTreeFrameSinkCreation)
21537            }
21538            "CC_SCHEDULER_ACTION_PREPARE_TILES" => Some(Self::CcSchedulerActionPrepareTiles),
21539            "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK" => {
21540                Some(Self::CcSchedulerActionInvalidateLayerTreeFrameSink)
21541            }
21542            "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION" => {
21543                Some(Self::CcSchedulerActionPerformImplSideInvalidation)
21544            }
21545            "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL" => {
21546                Some(Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil)
21547            }
21548            "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON" => {
21549                Some(Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon)
21550            }
21551            _ => None,
21552        }
21553    }
21554}
21555/// Details about ContentSettings trace events.
21556#[derive(Clone, Copy, PartialEq, ::prost::Message)]
21557pub struct ChromeContentSettingsEventInfo {
21558    /// The number of user defined hostname patterns for content settings at
21559    /// browser start. Similar to UMA histogram
21560    /// 'ContentSettings.NumberOfExceptions'.
21561    #[prost(uint32, optional, tag = "1")]
21562    pub number_of_exceptions: ::core::option::Option<u32>,
21563}
21564#[derive(Clone, PartialEq, ::prost::Message)]
21565pub struct ChromeFrameReporter {
21566    #[prost(enumeration = "chrome_frame_reporter::State", optional, tag = "1")]
21567    pub state: ::core::option::Option<i32>,
21568    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
21569    #[prost(
21570        enumeration = "chrome_frame_reporter::FrameDropReason",
21571        optional,
21572        tag = "2"
21573    )]
21574    pub reason: ::core::option::Option<i32>,
21575    #[prost(uint64, optional, tag = "3")]
21576    pub frame_source: ::core::option::Option<u64>,
21577    #[prost(uint64, optional, tag = "4")]
21578    pub frame_sequence: ::core::option::Option<u64>,
21579    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
21580    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
21581    /// smoothness.
21582    #[prost(bool, optional, tag = "5")]
21583    pub affects_smoothness: ::core::option::Option<bool>,
21584    /// The type of active scroll.
21585    #[prost(
21586        enumeration = "chrome_frame_reporter::ScrollState",
21587        optional,
21588        tag = "6"
21589    )]
21590    pub scroll_state: ::core::option::Option<i32>,
21591    /// If any main thread animation is active during this frame.
21592    #[prost(bool, optional, tag = "7")]
21593    pub has_main_animation: ::core::option::Option<bool>,
21594    /// If any compositor thread animation is active during this frame.
21595    #[prost(bool, optional, tag = "8")]
21596    pub has_compositor_animation: ::core::option::Option<bool>,
21597    /// If any touch-driven UX (not scroll) is active during this frame.
21598    #[prost(bool, optional, tag = "9")]
21599    pub has_smooth_input_main: ::core::option::Option<bool>,
21600    /// Whether the frame contained any missing content (i.e. whether there was
21601    /// checkerboarding in the frame).
21602    #[prost(bool, optional, tag = "10")]
21603    pub has_missing_content: ::core::option::Option<bool>,
21604    /// The id of layer_tree_host that the frame has been produced for.
21605    #[prost(uint64, optional, tag = "11")]
21606    pub layer_tree_host_id: ::core::option::Option<u64>,
21607    /// If total latency of PipelineReporter exceeds a certain limit.
21608    #[prost(bool, optional, tag = "12")]
21609    pub has_high_latency: ::core::option::Option<bool>,
21610    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
21611    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
21612    /// (i.e. dropped frames when there are no partial compositor updates).
21613    #[prost(enumeration = "chrome_frame_reporter::FrameType", optional, tag = "13")]
21614    pub frame_type: ::core::option::Option<i32>,
21615    /// The breakdown stage of PipelineReporter that is most likely accountable for
21616    /// high latency.
21617    #[prost(string, repeated, tag = "14")]
21618    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
21619}
21620/// Nested message and enum types in `ChromeFrameReporter`.
21621pub mod chrome_frame_reporter {
21622    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21623    #[repr(i32)]
21624    pub enum State {
21625        /// The frame did not have any updates to present.
21626        NoUpdateDesired = 0,
21627        /// The frame presented all the desired updates (i.e. any updates requested
21628        /// from both the compositor thread and main-threads were handled).
21629        PresentedAll = 1,
21630        /// The frame was presented with some updates, but also missed some updates
21631        /// (e.g. missed updates from the main-thread, but included updates from the
21632        /// compositor thread).
21633        PresentedPartial = 2,
21634        /// The frame was dropped, i.e. some updates were desired for the frame, but
21635        /// was not presented.
21636        Dropped = 3,
21637    }
21638    impl State {
21639        /// String value of the enum field names used in the ProtoBuf definition.
21640        ///
21641        /// The values are not transformed in any way and thus are considered stable
21642        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21643        pub fn as_str_name(&self) -> &'static str {
21644            match self {
21645                Self::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
21646                Self::PresentedAll => "STATE_PRESENTED_ALL",
21647                Self::PresentedPartial => "STATE_PRESENTED_PARTIAL",
21648                Self::Dropped => "STATE_DROPPED",
21649            }
21650        }
21651        /// Creates an enum from field names used in the ProtoBuf definition.
21652        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21653            match value {
21654                "STATE_NO_UPDATE_DESIRED" => Some(Self::NoUpdateDesired),
21655                "STATE_PRESENTED_ALL" => Some(Self::PresentedAll),
21656                "STATE_PRESENTED_PARTIAL" => Some(Self::PresentedPartial),
21657                "STATE_DROPPED" => Some(Self::Dropped),
21658                _ => None,
21659            }
21660        }
21661    }
21662    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21663    #[repr(i32)]
21664    pub enum FrameDropReason {
21665        ReasonUnspecified = 0,
21666        /// Frame was dropped by the display-compositor.
21667        /// The display-compositor may drop a frame some times (e.g. the frame missed
21668        /// the deadline, or was blocked on surface-sync, etc.)
21669        ReasonDisplayCompositor = 1,
21670        /// Frame was dropped because of the main-thread.
21671        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
21672        /// is running expensive javascript, or doing a lot of layout updates, etc.
21673        ReasonMainThread = 2,
21674        /// Frame was dropped by the client compositor.
21675        /// The client compositor can drop some frames too (e.g. attempting to
21676        /// recover latency, missing the deadline, etc.).
21677        ReasonClientCompositor = 3,
21678    }
21679    impl FrameDropReason {
21680        /// String value of the enum field names used in the ProtoBuf definition.
21681        ///
21682        /// The values are not transformed in any way and thus are considered stable
21683        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21684        pub fn as_str_name(&self) -> &'static str {
21685            match self {
21686                Self::ReasonUnspecified => "REASON_UNSPECIFIED",
21687                Self::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
21688                Self::ReasonMainThread => "REASON_MAIN_THREAD",
21689                Self::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
21690            }
21691        }
21692        /// Creates an enum from field names used in the ProtoBuf definition.
21693        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21694            match value {
21695                "REASON_UNSPECIFIED" => Some(Self::ReasonUnspecified),
21696                "REASON_DISPLAY_COMPOSITOR" => Some(Self::ReasonDisplayCompositor),
21697                "REASON_MAIN_THREAD" => Some(Self::ReasonMainThread),
21698                "REASON_CLIENT_COMPOSITOR" => Some(Self::ReasonClientCompositor),
21699                _ => None,
21700            }
21701        }
21702    }
21703    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21704    #[repr(i32)]
21705    pub enum ScrollState {
21706        ScrollNone = 0,
21707        ScrollMainThread = 1,
21708        ScrollCompositorThread = 2,
21709        /// Used when it can't be determined whether a scroll is in progress or not.
21710        ScrollUnknown = 3,
21711    }
21712    impl ScrollState {
21713        /// String value of the enum field names used in the ProtoBuf definition.
21714        ///
21715        /// The values are not transformed in any way and thus are considered stable
21716        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21717        pub fn as_str_name(&self) -> &'static str {
21718            match self {
21719                Self::ScrollNone => "SCROLL_NONE",
21720                Self::ScrollMainThread => "SCROLL_MAIN_THREAD",
21721                Self::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
21722                Self::ScrollUnknown => "SCROLL_UNKNOWN",
21723            }
21724        }
21725        /// Creates an enum from field names used in the ProtoBuf definition.
21726        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21727            match value {
21728                "SCROLL_NONE" => Some(Self::ScrollNone),
21729                "SCROLL_MAIN_THREAD" => Some(Self::ScrollMainThread),
21730                "SCROLL_COMPOSITOR_THREAD" => Some(Self::ScrollCompositorThread),
21731                "SCROLL_UNKNOWN" => Some(Self::ScrollUnknown),
21732                _ => None,
21733            }
21734        }
21735    }
21736    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21737    #[repr(i32)]
21738    pub enum FrameType {
21739        Forked = 0,
21740        Backfill = 1,
21741    }
21742    impl FrameType {
21743        /// String value of the enum field names used in the ProtoBuf definition.
21744        ///
21745        /// The values are not transformed in any way and thus are considered stable
21746        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21747        pub fn as_str_name(&self) -> &'static str {
21748            match self {
21749                Self::Forked => "FORKED",
21750                Self::Backfill => "BACKFILL",
21751            }
21752        }
21753        /// Creates an enum from field names used in the ProtoBuf definition.
21754        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21755            match value {
21756                "FORKED" => Some(Self::Forked),
21757                "BACKFILL" => Some(Self::Backfill),
21758                _ => None,
21759            }
21760        }
21761    }
21762}
21763/// Details about one of Chrome's keyed services associated with the event.
21764#[derive(Clone, PartialEq, ::prost::Message)]
21765pub struct ChromeKeyedService {
21766    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
21767    /// Chrome, these are static strings known at compile time).
21768    #[prost(string, optional, tag = "1")]
21769    pub name: ::core::option::Option<::prost::alloc::string::String>,
21770}
21771#[derive(Clone, PartialEq, ::prost::Message)]
21772pub struct ChromeLatencyInfo {
21773    #[prost(int64, optional, tag = "1")]
21774    pub trace_id: ::core::option::Option<i64>,
21775    #[prost(enumeration = "chrome_latency_info::Step", optional, tag = "2")]
21776    pub step: ::core::option::Option<i32>,
21777    #[prost(int32, optional, tag = "3")]
21778    pub frame_tree_node_id: ::core::option::Option<i32>,
21779    #[prost(message, repeated, tag = "4")]
21780    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
21781    #[prost(bool, optional, tag = "5")]
21782    pub is_coalesced: ::core::option::Option<bool>,
21783    #[prost(int64, optional, tag = "6")]
21784    pub gesture_scroll_id: ::core::option::Option<i64>,
21785    #[prost(int64, optional, tag = "7")]
21786    pub touch_id: ::core::option::Option<i64>,
21787}
21788/// Nested message and enum types in `ChromeLatencyInfo`.
21789pub mod chrome_latency_info {
21790    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
21791    pub struct ComponentInfo {
21792        #[prost(enumeration = "LatencyComponentType", optional, tag = "1")]
21793        pub component_type: ::core::option::Option<i32>,
21794        /// Microsecond timestamp in CLOCK_MONOTONIC domain
21795        #[prost(uint64, optional, tag = "2")]
21796        pub time_us: ::core::option::Option<u64>,
21797    }
21798    /// NEXT ID: 12
21799    /// All step are optional but the enum is ordered (not by number) below in the
21800    /// order we expect them to appear if they are emitted in trace in a blocking
21801    /// fashion.
21802    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21803    #[repr(i32)]
21804    pub enum Step {
21805        Unspecified = 0,
21806        /// Emitted on the browser main thread.
21807        SendInputEventUi = 3,
21808        /// Happens on the renderer's compositor.
21809        HandleInputEventImpl = 5,
21810        DidHandleInputAndOverscroll = 8,
21811        /// Occurs on the Renderer's main thread.
21812        HandleInputEventMain = 4,
21813        MainThreadScrollUpdate = 2,
21814        HandleInputEventMainCommit = 1,
21815        /// Could be emitted on both the renderer's main OR compositor.
21816        HandledInputEventMainOrImpl = 9,
21817        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
21818        /// renderer's compositor and this will be emitted.
21819        HandledInputEventImpl = 10,
21820        /// Renderer's compositor.
21821        SwapBuffers = 6,
21822        /// Happens on the VizCompositor in the GPU process.
21823        DrawAndSwap = 7,
21824        /// Happens on the GPU main thread after the swap has completed.
21825        ///
21826        /// See above for NEXT ID, enum steps are not ordered by tag number.
21827        FinishedSwapBuffers = 11,
21828    }
21829    impl Step {
21830        /// String value of the enum field names used in the ProtoBuf definition.
21831        ///
21832        /// The values are not transformed in any way and thus are considered stable
21833        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21834        pub fn as_str_name(&self) -> &'static str {
21835            match self {
21836                Self::Unspecified => "STEP_UNSPECIFIED",
21837                Self::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
21838                Self::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
21839                Self::DidHandleInputAndOverscroll => "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL",
21840                Self::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
21841                Self::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
21842                Self::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
21843                Self::HandledInputEventMainOrImpl => "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL",
21844                Self::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
21845                Self::SwapBuffers => "STEP_SWAP_BUFFERS",
21846                Self::DrawAndSwap => "STEP_DRAW_AND_SWAP",
21847                Self::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
21848            }
21849        }
21850        /// Creates an enum from field names used in the ProtoBuf definition.
21851        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21852            match value {
21853                "STEP_UNSPECIFIED" => Some(Self::Unspecified),
21854                "STEP_SEND_INPUT_EVENT_UI" => Some(Self::SendInputEventUi),
21855                "STEP_HANDLE_INPUT_EVENT_IMPL" => Some(Self::HandleInputEventImpl),
21856                "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL" => Some(Self::DidHandleInputAndOverscroll),
21857                "STEP_HANDLE_INPUT_EVENT_MAIN" => Some(Self::HandleInputEventMain),
21858                "STEP_MAIN_THREAD_SCROLL_UPDATE" => Some(Self::MainThreadScrollUpdate),
21859                "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT" => Some(Self::HandleInputEventMainCommit),
21860                "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL" => Some(Self::HandledInputEventMainOrImpl),
21861                "STEP_HANDLED_INPUT_EVENT_IMPL" => Some(Self::HandledInputEventImpl),
21862                "STEP_SWAP_BUFFERS" => Some(Self::SwapBuffers),
21863                "STEP_DRAW_AND_SWAP" => Some(Self::DrawAndSwap),
21864                "STEP_FINISHED_SWAP_BUFFERS" => Some(Self::FinishedSwapBuffers),
21865                _ => None,
21866            }
21867        }
21868    }
21869    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
21870    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
21871    /// practices.
21872    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21873    #[repr(i32)]
21874    pub enum LatencyComponentType {
21875        ComponentUnspecified = 0,
21876        ComponentInputEventLatencyBeginRwh = 1,
21877        ComponentInputEventLatencyScrollUpdateOriginal = 2,
21878        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
21879        ComponentInputEventLatencyOriginal = 4,
21880        ComponentInputEventLatencyUi = 5,
21881        ComponentInputEventLatencyRendererMain = 6,
21882        ComponentInputEventLatencyRenderingScheduledMain = 7,
21883        ComponentInputEventLatencyRenderingScheduledImpl = 8,
21884        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
21885        ComponentInputEventLatencyAckRwh = 10,
21886        ComponentInputEventLatencyRendererSwap = 11,
21887        ComponentDisplayCompositorReceivedFrame = 12,
21888        ComponentInputEventGpuSwapBuffer = 13,
21889        ComponentInputEventLatencyFrameSwap = 14,
21890    }
21891    impl LatencyComponentType {
21892        /// String value of the enum field names used in the ProtoBuf definition.
21893        ///
21894        /// The values are not transformed in any way and thus are considered stable
21895        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21896        pub fn as_str_name(&self) -> &'static str {
21897            match self {
21898                Self::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
21899                Self::ComponentInputEventLatencyBeginRwh => {
21900                    "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH"
21901                }
21902                Self::ComponentInputEventLatencyScrollUpdateOriginal => {
21903                    "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL"
21904                }
21905                Self::ComponentInputEventLatencyFirstScrollUpdateOriginal => {
21906                    "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL"
21907                }
21908                Self::ComponentInputEventLatencyOriginal => {
21909                    "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL"
21910                }
21911                Self::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
21912                Self::ComponentInputEventLatencyRendererMain => {
21913                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN"
21914                }
21915                Self::ComponentInputEventLatencyRenderingScheduledMain => {
21916                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN"
21917                }
21918                Self::ComponentInputEventLatencyRenderingScheduledImpl => {
21919                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL"
21920                }
21921                Self::ComponentInputEventLatencyScrollUpdateLastEvent => {
21922                    "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT"
21923                }
21924                Self::ComponentInputEventLatencyAckRwh => "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH",
21925                Self::ComponentInputEventLatencyRendererSwap => {
21926                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP"
21927                }
21928                Self::ComponentDisplayCompositorReceivedFrame => {
21929                    "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME"
21930                }
21931                Self::ComponentInputEventGpuSwapBuffer => "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER",
21932                Self::ComponentInputEventLatencyFrameSwap => {
21933                    "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP"
21934                }
21935            }
21936        }
21937        /// Creates an enum from field names used in the ProtoBuf definition.
21938        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21939            match value {
21940                "COMPONENT_UNSPECIFIED" => Some(Self::ComponentUnspecified),
21941                "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH" => {
21942                    Some(Self::ComponentInputEventLatencyBeginRwh)
21943                }
21944                "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL" => {
21945                    Some(Self::ComponentInputEventLatencyScrollUpdateOriginal)
21946                }
21947                "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL" => {
21948                    Some(Self::ComponentInputEventLatencyFirstScrollUpdateOriginal)
21949                }
21950                "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL" => {
21951                    Some(Self::ComponentInputEventLatencyOriginal)
21952                }
21953                "COMPONENT_INPUT_EVENT_LATENCY_UI" => Some(Self::ComponentInputEventLatencyUi),
21954                "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN" => {
21955                    Some(Self::ComponentInputEventLatencyRendererMain)
21956                }
21957                "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN" => {
21958                    Some(Self::ComponentInputEventLatencyRenderingScheduledMain)
21959                }
21960                "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL" => {
21961                    Some(Self::ComponentInputEventLatencyRenderingScheduledImpl)
21962                }
21963                "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT" => {
21964                    Some(Self::ComponentInputEventLatencyScrollUpdateLastEvent)
21965                }
21966                "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH" => {
21967                    Some(Self::ComponentInputEventLatencyAckRwh)
21968                }
21969                "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP" => {
21970                    Some(Self::ComponentInputEventLatencyRendererSwap)
21971                }
21972                "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME" => {
21973                    Some(Self::ComponentDisplayCompositorReceivedFrame)
21974                }
21975                "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER" => {
21976                    Some(Self::ComponentInputEventGpuSwapBuffer)
21977                }
21978                "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP" => {
21979                    Some(Self::ComponentInputEventLatencyFrameSwap)
21980                }
21981                _ => None,
21982            }
21983        }
21984    }
21985}
21986/// Details about a legacy Chrome IPC message that is either sent by the event.
21987/// TODO(eseckler): Also use this message on the receiving side?
21988#[derive(Clone, Copy, PartialEq, ::prost::Message)]
21989pub struct ChromeLegacyIpc {
21990    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
21991    /// enum, e.g. FrameMsgStart,
21992    #[prost(enumeration = "chrome_legacy_ipc::MessageClass", optional, tag = "1")]
21993    pub message_class: ::core::option::Option<i32>,
21994    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
21995    /// IPC_MESSAGE_START macros.
21996    #[prost(uint32, optional, tag = "2")]
21997    pub message_line: ::core::option::Option<u32>,
21998}
21999/// Nested message and enum types in `ChromeLegacyIpc`.
22000pub mod chrome_legacy_ipc {
22001    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22002    #[repr(i32)]
22003    pub enum MessageClass {
22004        ClassUnspecified = 0,
22005        ClassAutomation = 1,
22006        ClassFrame = 2,
22007        ClassPage = 3,
22008        ClassView = 4,
22009        ClassWidget = 5,
22010        ClassInput = 6,
22011        ClassTest = 7,
22012        ClassWorker = 8,
22013        ClassNacl = 9,
22014        ClassGpuChannel = 10,
22015        ClassMedia = 11,
22016        ClassPpapi = 12,
22017        ClassChrome = 13,
22018        ClassDrag = 14,
22019        ClassPrint = 15,
22020        ClassExtension = 16,
22021        ClassTextInputClient = 17,
22022        ClassBlinkTest = 18,
22023        ClassAccessibility = 19,
22024        ClassPrerender = 20,
22025        ClassChromoting = 21,
22026        ClassBrowserPlugin = 22,
22027        ClassAndroidWebView = 23,
22028        ClassNaclHost = 24,
22029        ClassEncryptedMedia = 25,
22030        ClassCast = 26,
22031        ClassGinJavaBridge = 27,
22032        ClassChromeUtilityPrinting = 28,
22033        ClassOzoneGpu = 29,
22034        ClassWebTest = 30,
22035        ClassNetworkHints = 31,
22036        ClassExtensionsGuestView = 32,
22037        ClassGuestView = 33,
22038        ClassMediaPlayerDelegate = 34,
22039        ClassExtensionWorker = 35,
22040        ClassSubresourceFilter = 36,
22041        ClassUnfreezableFrame = 37,
22042    }
22043    impl MessageClass {
22044        /// String value of the enum field names used in the ProtoBuf definition.
22045        ///
22046        /// The values are not transformed in any way and thus are considered stable
22047        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22048        pub fn as_str_name(&self) -> &'static str {
22049            match self {
22050                Self::ClassUnspecified => "CLASS_UNSPECIFIED",
22051                Self::ClassAutomation => "CLASS_AUTOMATION",
22052                Self::ClassFrame => "CLASS_FRAME",
22053                Self::ClassPage => "CLASS_PAGE",
22054                Self::ClassView => "CLASS_VIEW",
22055                Self::ClassWidget => "CLASS_WIDGET",
22056                Self::ClassInput => "CLASS_INPUT",
22057                Self::ClassTest => "CLASS_TEST",
22058                Self::ClassWorker => "CLASS_WORKER",
22059                Self::ClassNacl => "CLASS_NACL",
22060                Self::ClassGpuChannel => "CLASS_GPU_CHANNEL",
22061                Self::ClassMedia => "CLASS_MEDIA",
22062                Self::ClassPpapi => "CLASS_PPAPI",
22063                Self::ClassChrome => "CLASS_CHROME",
22064                Self::ClassDrag => "CLASS_DRAG",
22065                Self::ClassPrint => "CLASS_PRINT",
22066                Self::ClassExtension => "CLASS_EXTENSION",
22067                Self::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
22068                Self::ClassBlinkTest => "CLASS_BLINK_TEST",
22069                Self::ClassAccessibility => "CLASS_ACCESSIBILITY",
22070                Self::ClassPrerender => "CLASS_PRERENDER",
22071                Self::ClassChromoting => "CLASS_CHROMOTING",
22072                Self::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
22073                Self::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
22074                Self::ClassNaclHost => "CLASS_NACL_HOST",
22075                Self::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
22076                Self::ClassCast => "CLASS_CAST",
22077                Self::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
22078                Self::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
22079                Self::ClassOzoneGpu => "CLASS_OZONE_GPU",
22080                Self::ClassWebTest => "CLASS_WEB_TEST",
22081                Self::ClassNetworkHints => "CLASS_NETWORK_HINTS",
22082                Self::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
22083                Self::ClassGuestView => "CLASS_GUEST_VIEW",
22084                Self::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
22085                Self::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
22086                Self::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
22087                Self::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
22088            }
22089        }
22090        /// Creates an enum from field names used in the ProtoBuf definition.
22091        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22092            match value {
22093                "CLASS_UNSPECIFIED" => Some(Self::ClassUnspecified),
22094                "CLASS_AUTOMATION" => Some(Self::ClassAutomation),
22095                "CLASS_FRAME" => Some(Self::ClassFrame),
22096                "CLASS_PAGE" => Some(Self::ClassPage),
22097                "CLASS_VIEW" => Some(Self::ClassView),
22098                "CLASS_WIDGET" => Some(Self::ClassWidget),
22099                "CLASS_INPUT" => Some(Self::ClassInput),
22100                "CLASS_TEST" => Some(Self::ClassTest),
22101                "CLASS_WORKER" => Some(Self::ClassWorker),
22102                "CLASS_NACL" => Some(Self::ClassNacl),
22103                "CLASS_GPU_CHANNEL" => Some(Self::ClassGpuChannel),
22104                "CLASS_MEDIA" => Some(Self::ClassMedia),
22105                "CLASS_PPAPI" => Some(Self::ClassPpapi),
22106                "CLASS_CHROME" => Some(Self::ClassChrome),
22107                "CLASS_DRAG" => Some(Self::ClassDrag),
22108                "CLASS_PRINT" => Some(Self::ClassPrint),
22109                "CLASS_EXTENSION" => Some(Self::ClassExtension),
22110                "CLASS_TEXT_INPUT_CLIENT" => Some(Self::ClassTextInputClient),
22111                "CLASS_BLINK_TEST" => Some(Self::ClassBlinkTest),
22112                "CLASS_ACCESSIBILITY" => Some(Self::ClassAccessibility),
22113                "CLASS_PRERENDER" => Some(Self::ClassPrerender),
22114                "CLASS_CHROMOTING" => Some(Self::ClassChromoting),
22115                "CLASS_BROWSER_PLUGIN" => Some(Self::ClassBrowserPlugin),
22116                "CLASS_ANDROID_WEB_VIEW" => Some(Self::ClassAndroidWebView),
22117                "CLASS_NACL_HOST" => Some(Self::ClassNaclHost),
22118                "CLASS_ENCRYPTED_MEDIA" => Some(Self::ClassEncryptedMedia),
22119                "CLASS_CAST" => Some(Self::ClassCast),
22120                "CLASS_GIN_JAVA_BRIDGE" => Some(Self::ClassGinJavaBridge),
22121                "CLASS_CHROME_UTILITY_PRINTING" => Some(Self::ClassChromeUtilityPrinting),
22122                "CLASS_OZONE_GPU" => Some(Self::ClassOzoneGpu),
22123                "CLASS_WEB_TEST" => Some(Self::ClassWebTest),
22124                "CLASS_NETWORK_HINTS" => Some(Self::ClassNetworkHints),
22125                "CLASS_EXTENSIONS_GUEST_VIEW" => Some(Self::ClassExtensionsGuestView),
22126                "CLASS_GUEST_VIEW" => Some(Self::ClassGuestView),
22127                "CLASS_MEDIA_PLAYER_DELEGATE" => Some(Self::ClassMediaPlayerDelegate),
22128                "CLASS_EXTENSION_WORKER" => Some(Self::ClassExtensionWorker),
22129                "CLASS_SUBRESOURCE_FILTER" => Some(Self::ClassSubresourceFilter),
22130                "CLASS_UNFREEZABLE_FRAME" => Some(Self::ClassUnfreezableFrame),
22131                _ => None,
22132            }
22133        }
22134    }
22135}
22136/// Details about Chrome message pump events
22137#[derive(Clone, Copy, PartialEq, ::prost::Message)]
22138pub struct ChromeMessagePump {
22139    /// True if there are sent messages in the queue.
22140    #[prost(bool, optional, tag = "1")]
22141    pub sent_messages_in_queue: ::core::option::Option<bool>,
22142    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
22143    /// invoke.
22144    #[prost(uint64, optional, tag = "2")]
22145    pub io_handler_location_iid: ::core::option::Option<u64>,
22146}
22147/// Contains information to identify mojo handling events. The trace events in
22148/// mojo are common for all mojo interfaces and this information is used to
22149/// identify who is the caller or callee.
22150#[derive(Clone, PartialEq, ::prost::Message)]
22151pub struct ChromeMojoEventInfo {
22152    /// Contains the interface name or the file name of the creator of a mojo
22153    /// handle watcher, recorded when an event if notified to the watcher. The code
22154    /// that runs within the track event belongs to the interface.
22155    #[prost(string, optional, tag = "1")]
22156    pub watcher_notify_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
22157    /// The hash of the IPC message that is being handled.
22158    #[prost(uint32, optional, tag = "2")]
22159    pub ipc_hash: ::core::option::Option<u32>,
22160    /// A static string representing the mojo interface name of the message that is
22161    /// being handled.
22162    #[prost(string, optional, tag = "3")]
22163    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
22164    /// Refers to an interned UnsymbolizedSourceLocation.
22165    /// The UnsymbolizedSourceLocation contains the interface method that's being
22166    /// handled, represented as a native symbol.
22167    /// The native symbol can be symbolized after the trace is recorded.
22168    /// Not using a symbolized source location for official Chromium builds to
22169    /// reduce binary size - emitting file/function names as strings into the
22170    /// trace requires storing them in the binary, which causes a significant
22171    /// binary size bloat for Chromium.
22172    #[prost(uint64, optional, tag = "4")]
22173    pub mojo_interface_method_iid: ::core::option::Option<u64>,
22174    /// Indicate whether this is a message or reply.
22175    #[prost(bool, optional, tag = "5")]
22176    pub is_reply: ::core::option::Option<bool>,
22177    /// The payload size of the message being sent through mojo messages.
22178    #[prost(uint64, optional, tag = "6")]
22179    pub payload_size: ::core::option::Option<u64>,
22180    /// Represents the size of the message. Includes all headers and user payload.
22181    #[prost(uint64, optional, tag = "7")]
22182    pub data_num_bytes: ::core::option::Option<u64>,
22183}
22184#[derive(Clone, Copy, PartialEq, ::prost::Message)]
22185pub struct ChromeRendererSchedulerState {
22186    #[prost(enumeration = "ChromeRailMode", optional, tag = "1")]
22187    pub rail_mode: ::core::option::Option<i32>,
22188    #[prost(bool, optional, tag = "2")]
22189    pub is_backgrounded: ::core::option::Option<bool>,
22190    #[prost(bool, optional, tag = "3")]
22191    pub is_hidden: ::core::option::Option<bool>,
22192}
22193/// RAIL Mode is an indication of the kind of work that a Renderer is currently
22194/// performing which is in turn used to prioritise work accordingly.
22195/// A fuller description of these modes can be found <https://web.dev/rail/>
22196#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22197#[repr(i32)]
22198pub enum ChromeRailMode {
22199    RailModeNone = 0,
22200    RailModeResponse = 1,
22201    RailModeAnimation = 2,
22202    RailModeIdle = 3,
22203    RailModeLoad = 4,
22204}
22205impl ChromeRailMode {
22206    /// String value of the enum field names used in the ProtoBuf definition.
22207    ///
22208    /// The values are not transformed in any way and thus are considered stable
22209    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22210    pub fn as_str_name(&self) -> &'static str {
22211        match self {
22212            Self::RailModeNone => "RAIL_MODE_NONE",
22213            Self::RailModeResponse => "RAIL_MODE_RESPONSE",
22214            Self::RailModeAnimation => "RAIL_MODE_ANIMATION",
22215            Self::RailModeIdle => "RAIL_MODE_IDLE",
22216            Self::RailModeLoad => "RAIL_MODE_LOAD",
22217        }
22218    }
22219    /// Creates an enum from field names used in the ProtoBuf definition.
22220    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22221        match value {
22222            "RAIL_MODE_NONE" => Some(Self::RailModeNone),
22223            "RAIL_MODE_RESPONSE" => Some(Self::RailModeResponse),
22224            "RAIL_MODE_ANIMATION" => Some(Self::RailModeAnimation),
22225            "RAIL_MODE_IDLE" => Some(Self::RailModeIdle),
22226            "RAIL_MODE_LOAD" => Some(Self::RailModeLoad),
22227            _ => None,
22228        }
22229    }
22230}
22231/// Details about a UI interaction initiated by the user, such as opening or
22232/// closing a tab or a context menu.
22233#[derive(Clone, PartialEq, ::prost::Message)]
22234pub struct ChromeUserEvent {
22235    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
22236    /// Chrome, these are usually static strings known at compile time, or
22237    /// concatenations of multiple such static strings).
22238    #[prost(string, optional, tag = "1")]
22239    pub action: ::core::option::Option<::prost::alloc::string::String>,
22240    /// MD5 hash of the action string.
22241    #[prost(uint64, optional, tag = "2")]
22242    pub action_hash: ::core::option::Option<u64>,
22243}
22244/// Details about HWNDMessageHandler trace events.
22245#[derive(Clone, Copy, PartialEq, ::prost::Message)]
22246pub struct ChromeWindowHandleEventInfo {
22247    #[prost(uint32, optional, tag = "1")]
22248    pub dpi: ::core::option::Option<u32>,
22249    #[prost(uint32, optional, tag = "2")]
22250    pub message_id: ::core::option::Option<u32>,
22251    #[prost(fixed64, optional, tag = "3")]
22252    pub hwnd_ptr: ::core::option::Option<u64>,
22253}
22254/// Event insights emitted by the Pixel modem.
22255#[derive(Clone, PartialEq, ::prost::Message)]
22256pub struct PixelModemEventInsight {
22257    /// Opaque string containing arguments from the modem.
22258    #[prost(string, optional, tag = "1")]
22259    pub detokenized_message: ::core::option::Option<::prost::alloc::string::String>,
22260}
22261#[derive(Clone, PartialEq, ::prost::Message)]
22262pub struct Screenshot {
22263    #[prost(bytes = "vec", optional, tag = "1")]
22264    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
22265}
22266/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
22267/// which describe activity on a track, such as a thread or asynchronous event
22268/// track. The track is specified using separate TrackDescriptor messages and
22269/// referred to via the track's UUID.
22270///
22271/// A simple TrackEvent packet specifies a timestamp, category, name and type:
22272/// ```protobuf
22273///    trace_packet {
22274///      timestamp: 1000
22275///      track_event {
22276///        categories: \["my_cat"\]
22277///        name: "my_event"
22278///        type: TYPE_INSTANT
22279///       }
22280///     }
22281/// ```
22282///
22283/// To associate an event with a custom track (e.g. a thread), the track is
22284/// defined in a separate packet and referred to from the TrackEvent by its UUID:
22285/// ```protobuf
22286///    trace_packet {
22287///      track_descriptor {
22288///        track_uuid: 1234
22289///        name: "my_track"
22290///
22291///        // Optionally, associate the track with a thread.
22292///        thread_descriptor {
22293///          pid: 10
22294///          tid: 10
22295///          ..
22296///        }
22297///      }
22298///    }
22299/// ```
22300///
22301/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
22302///
22303/// ```protobuf
22304///    trace_packet {
22305///      timestamp: 1200
22306///      track_event {
22307///        track_uuid: 1234
22308///        categories: \["my_cat"\]
22309///        name: "my_slice"
22310///        type: TYPE_SLICE_BEGIN
22311///      }
22312///    }
22313///    trace_packet {
22314///      timestamp: 1400
22315///      track_event {
22316///        track_uuid: 1234
22317///        type: TYPE_SLICE_END
22318///      }
22319///    }
22320/// ```
22321/// TrackEvents also support optimizations to reduce data repetition and encoded
22322/// data size, e.g. through data interning (names, categories, ...) and delta
22323/// encoding of timestamps/counters. For details, see the InternedData message.
22324/// Further, default values for attributes of events on the same sequence (e.g.
22325/// their default track association) can be emitted as part of a
22326/// TrackEventDefaults message.
22327///
22328/// Next reserved id: 13 (up to 15). Next id: 52.
22329#[derive(Clone, PartialEq, ::prost::Message)]
22330pub struct TrackEvent {
22331    /// Names of categories of the event. In the client library, categories are a
22332    /// way to turn groups of individual events on or off.
22333    /// interned EventCategoryName.
22334    #[prost(uint64, repeated, packed = "false", tag = "3")]
22335    pub category_iids: ::prost::alloc::vec::Vec<u64>,
22336    /// non-interned variant.
22337    #[prost(string, repeated, tag = "22")]
22338    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22339    #[prost(enumeration = "track_event::Type", optional, tag = "9")]
22340    pub r#type: ::core::option::Option<i32>,
22341    /// Identifies the track of the event. The default value may be overridden
22342    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
22343    /// sequence (in most cases sequence = one thread). If no value is specified
22344    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
22345    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
22346    #[prost(uint64, optional, tag = "11")]
22347    pub track_uuid: ::core::option::Option<u64>,
22348    /// To encode counter values more efficiently, we support attaching additional
22349    /// counter values to a TrackEvent of any type. All values will share the same
22350    /// timestamp specified in the TracePacket. The value at
22351    /// extra_counter_values\[N\] is for the counter track referenced by
22352    /// extra_counter_track_uuids\[N\].
22353    ///
22354    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
22355    /// should always be equal or more uuids than values. It is valid to set more
22356    /// uuids (e.g. via defaults) than values. If uuids are specified in
22357    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
22358    /// default uuid list.
22359    ///
22360    /// For example, this allows snapshotting the thread time clock at each
22361    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
22362    #[prost(uint64, repeated, packed = "false", tag = "31")]
22363    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
22364    #[prost(int64, repeated, packed = "false", tag = "12")]
22365    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
22366    /// Counter snapshots using floating point instead of integer values.
22367    #[prost(uint64, repeated, packed = "false", tag = "45")]
22368    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
22369    #[prost(double, repeated, packed = "false", tag = "46")]
22370    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
22371    /// IDs of flows originating, passing through, or ending at this event.
22372    /// Flow IDs are global within a trace.
22373    ///
22374    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
22375    /// an input event may be handled on one thread but cause another event on
22376    /// a different thread - a flow between the two events can associate them.
22377    ///
22378    /// The direction of the flows between events is inferred from the events'
22379    /// timestamps. The earliest event with the same flow ID becomes the source
22380    /// of the flow. Any events thereafter are intermediate steps of the flow,
22381    /// until the flow terminates at the last event with the flow ID.
22382    ///
22383    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
22384    /// that the same ID can later be reused for another flow.
22385    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
22386    #[deprecated]
22387    #[prost(uint64, repeated, packed = "false", tag = "36")]
22388    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
22389    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
22390    /// consumption.
22391    #[prost(fixed64, repeated, packed = "false", tag = "47")]
22392    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
22393    /// List of flow ids which should terminate on this event, otherwise same as
22394    /// |flow_ids|.
22395    /// Any one flow ID should be either listed as part of |flow_ids| OR
22396    /// |terminating_flow_ids|, not both.
22397    /// DEPRECATED. Only kept for backwards compatibility.  Use
22398    /// |terminating_flow_ids|.
22399    #[deprecated]
22400    #[prost(uint64, repeated, packed = "false", tag = "42")]
22401    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
22402    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
22403    /// "terminating_flow_ids" to reduce memory consumption.
22404    #[prost(fixed64, repeated, packed = "false", tag = "48")]
22405    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
22406    /// Unstable key/value annotations shown in the trace viewer but not intended
22407    /// for metrics use.
22408    #[prost(message, repeated, tag = "4")]
22409    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
22410    /// Typed event arguments:
22411    #[prost(message, optional, tag = "5")]
22412    pub task_execution: ::core::option::Option<TaskExecution>,
22413    #[prost(message, optional, tag = "21")]
22414    pub log_message: ::core::option::Option<LogMessage>,
22415    #[prost(message, optional, tag = "24")]
22416    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
22417    #[prost(message, optional, tag = "25")]
22418    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
22419    #[prost(message, optional, tag = "26")]
22420    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
22421    #[prost(message, optional, tag = "27")]
22422    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
22423    #[prost(message, optional, tag = "28")]
22424    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
22425    #[prost(message, optional, tag = "29")]
22426    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
22427    #[prost(message, optional, tag = "32")]
22428    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
22429    #[prost(message, optional, tag = "39")]
22430    pub chrome_application_state_info: ::core::option::Option<ChromeApplicationStateInfo>,
22431    #[prost(message, optional, tag = "40")]
22432    pub chrome_renderer_scheduler_state: ::core::option::Option<ChromeRendererSchedulerState>,
22433    #[prost(message, optional, tag = "41")]
22434    pub chrome_window_handle_event_info: ::core::option::Option<ChromeWindowHandleEventInfo>,
22435    #[prost(message, optional, tag = "43")]
22436    pub chrome_content_settings_event_info: ::core::option::Option<ChromeContentSettingsEventInfo>,
22437    #[prost(message, optional, tag = "49")]
22438    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
22439    #[prost(message, optional, tag = "50")]
22440    pub screenshot: ::core::option::Option<Screenshot>,
22441    #[prost(message, optional, tag = "51")]
22442    pub pixel_modem_event_insight: ::core::option::Option<PixelModemEventInsight>,
22443    #[prost(message, optional, tag = "35")]
22444    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
22445    #[prost(message, optional, tag = "38")]
22446    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
22447    #[prost(message, optional, tag = "6")]
22448    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
22449    /// Optional name of the event for its display in trace viewer. May be left
22450    /// unspecified for events with typed arguments.
22451    ///
22452    /// Note that metrics should not rely on event names, as they are prone to
22453    /// changing. Instead, they should use typed arguments to identify the events
22454    /// they are interested in.
22455    #[prost(oneof = "track_event::NameField", tags = "10, 23")]
22456    pub name_field: ::core::option::Option<track_event::NameField>,
22457    /// A new value for a counter track. |track_uuid| should refer to a track with
22458    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
22459    /// efficient encoding of counter values that are sampled at the beginning/end
22460    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
22461    /// Counter values can optionally be encoded in as delta values (positive or
22462    /// negative) on each packet sequence (see CounterIncrementalBase).
22463    #[prost(oneof = "track_event::CounterValueField", tags = "30, 44")]
22464    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
22465    /// This field is used only if the source location represents the function that
22466    /// executes during this event.
22467    #[prost(oneof = "track_event::SourceLocationField", tags = "33, 34")]
22468    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
22469    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
22470    /// TracePacket instead.
22471    ///
22472    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
22473    #[prost(oneof = "track_event::Timestamp", tags = "1, 16")]
22474    pub timestamp: ::core::option::Option<track_event::Timestamp>,
22475    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22476    /// encode thread time instead.
22477    ///
22478    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
22479    /// microseconds.
22480    #[prost(oneof = "track_event::ThreadTime", tags = "2, 17")]
22481    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
22482    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22483    /// encode thread instruction count instead.
22484    ///
22485    /// Value of the instruction counter for the current thread.
22486    #[prost(oneof = "track_event::ThreadInstructionCount", tags = "8, 20")]
22487    pub thread_instruction_count: ::core::option::Option<track_event::ThreadInstructionCount>,
22488}
22489/// Nested message and enum types in `TrackEvent`.
22490pub mod track_event {
22491    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
22492    /// event attributes are initially simply proxied for conversion to a JSON
22493    /// trace. We intend to gradually transition these attributes to similar native
22494    /// features in TrackEvent (e.g. async + flow events), or deprecate them
22495    /// without replacement where transition is unsuitable.
22496    ///
22497    /// Next reserved id: 16 (up to 16).
22498    /// Next id: 20.
22499    #[derive(Clone, PartialEq, ::prost::Message)]
22500    pub struct LegacyEvent {
22501        /// Deprecated, use TrackEvent::name(_iid) instead.
22502        /// interned EventName.
22503        #[prost(uint64, optional, tag = "1")]
22504        pub name_iid: ::core::option::Option<u64>,
22505        #[prost(int32, optional, tag = "2")]
22506        pub phase: ::core::option::Option<i32>,
22507        #[prost(int64, optional, tag = "3")]
22508        pub duration_us: ::core::option::Option<i64>,
22509        #[prost(int64, optional, tag = "4")]
22510        pub thread_duration_us: ::core::option::Option<i64>,
22511        /// Elapsed retired instruction count during the event.
22512        #[prost(int64, optional, tag = "15")]
22513        pub thread_instruction_delta: ::core::option::Option<i64>,
22514        /// Additional optional scope for |id|.
22515        #[prost(string, optional, tag = "7")]
22516        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
22517        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
22518        #[prost(bool, optional, tag = "9")]
22519        pub use_async_tts: ::core::option::Option<bool>,
22520        /// Idenfifies a flow. Flow events with the same bind_id are connected.
22521        #[prost(uint64, optional, tag = "8")]
22522        pub bind_id: ::core::option::Option<u64>,
22523        /// Use the enclosing slice as binding point for a flow end event instead of
22524        /// the next slice. Flow start/step events always bind to the enclosing
22525        /// slice.
22526        #[prost(bool, optional, tag = "12")]
22527        pub bind_to_enclosing: ::core::option::Option<bool>,
22528        #[prost(enumeration = "legacy_event::FlowDirection", optional, tag = "13")]
22529        pub flow_direction: ::core::option::Option<i32>,
22530        #[prost(enumeration = "legacy_event::InstantEventScope", optional, tag = "14")]
22531        pub instant_event_scope: ::core::option::Option<i32>,
22532        /// Override the pid/tid if the writer needs to emit events on behalf of
22533        /// another process/thread. This should be the exception. Normally, the
22534        /// pid+tid from ThreadDescriptor is used.
22535        #[prost(int32, optional, tag = "18")]
22536        pub pid_override: ::core::option::Option<i32>,
22537        #[prost(int32, optional, tag = "19")]
22538        pub tid_override: ::core::option::Option<i32>,
22539        #[prost(oneof = "legacy_event::Id", tags = "6, 10, 11")]
22540        pub id: ::core::option::Option<legacy_event::Id>,
22541    }
22542    /// Nested message and enum types in `LegacyEvent`.
22543    pub mod legacy_event {
22544        #[derive(
22545            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
22546        )]
22547        #[repr(i32)]
22548        pub enum FlowDirection {
22549            FlowUnspecified = 0,
22550            FlowIn = 1,
22551            FlowOut = 2,
22552            FlowInout = 3,
22553        }
22554        impl FlowDirection {
22555            /// String value of the enum field names used in the ProtoBuf definition.
22556            ///
22557            /// The values are not transformed in any way and thus are considered stable
22558            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22559            pub fn as_str_name(&self) -> &'static str {
22560                match self {
22561                    Self::FlowUnspecified => "FLOW_UNSPECIFIED",
22562                    Self::FlowIn => "FLOW_IN",
22563                    Self::FlowOut => "FLOW_OUT",
22564                    Self::FlowInout => "FLOW_INOUT",
22565                }
22566            }
22567            /// Creates an enum from field names used in the ProtoBuf definition.
22568            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22569                match value {
22570                    "FLOW_UNSPECIFIED" => Some(Self::FlowUnspecified),
22571                    "FLOW_IN" => Some(Self::FlowIn),
22572                    "FLOW_OUT" => Some(Self::FlowOut),
22573                    "FLOW_INOUT" => Some(Self::FlowInout),
22574                    _ => None,
22575                }
22576            }
22577        }
22578        #[derive(
22579            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
22580        )]
22581        #[repr(i32)]
22582        pub enum InstantEventScope {
22583            ScopeUnspecified = 0,
22584            ScopeGlobal = 1,
22585            ScopeProcess = 2,
22586            ScopeThread = 3,
22587        }
22588        impl InstantEventScope {
22589            /// String value of the enum field names used in the ProtoBuf definition.
22590            ///
22591            /// The values are not transformed in any way and thus are considered stable
22592            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22593            pub fn as_str_name(&self) -> &'static str {
22594                match self {
22595                    Self::ScopeUnspecified => "SCOPE_UNSPECIFIED",
22596                    Self::ScopeGlobal => "SCOPE_GLOBAL",
22597                    Self::ScopeProcess => "SCOPE_PROCESS",
22598                    Self::ScopeThread => "SCOPE_THREAD",
22599                }
22600            }
22601            /// Creates an enum from field names used in the ProtoBuf definition.
22602            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22603                match value {
22604                    "SCOPE_UNSPECIFIED" => Some(Self::ScopeUnspecified),
22605                    "SCOPE_GLOBAL" => Some(Self::ScopeGlobal),
22606                    "SCOPE_PROCESS" => Some(Self::ScopeProcess),
22607                    "SCOPE_THREAD" => Some(Self::ScopeThread),
22608                    _ => None,
22609                }
22610            }
22611        }
22612        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
22613        pub enum Id {
22614            #[prost(uint64, tag = "6")]
22615            UnscopedId(u64),
22616            #[prost(uint64, tag = "10")]
22617            LocalId(u64),
22618            #[prost(uint64, tag = "11")]
22619            GlobalId(u64),
22620        }
22621    }
22622    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
22623    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
22624    #[repr(i32)]
22625    pub enum Type {
22626        Unspecified = 0,
22627        /// Slice events are events that have a begin and end timestamp, i.e. a
22628        /// duration. They can be nested similar to a callstack: If, on the same
22629        /// track, event B begins after event A, but before A ends, B is a child
22630        /// event of A and will be drawn as a nested event underneath A in the UI.
22631        /// Note that child events should always end before their parents (e.g. B
22632        /// before A).
22633        ///
22634        /// Each slice event is formed by a pair of BEGIN + END events. The END event
22635        /// does not need to repeat any TrackEvent fields it has in common with its
22636        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
22637        /// END pair will be merged during trace import.
22638        ///
22639        /// Note that we deliberately chose not to support COMPLETE events (which
22640        /// would specify a duration directly) since clients would need to delay
22641        /// writing them until the slice is completed, which can result in reordered
22642        /// events in the trace and loss of unfinished events at the end of a trace.
22643        SliceBegin = 1,
22644        SliceEnd = 2,
22645        /// Instant events are nestable events without duration. They can be children
22646        /// of slice events on the same track.
22647        Instant = 3,
22648        /// Event that provides a value for a counter track. |track_uuid| should
22649        /// refer to a counter track and |counter_value| set to the new value. Note
22650        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
22651        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
22652        Counter = 4,
22653    }
22654    impl Type {
22655        /// String value of the enum field names used in the ProtoBuf definition.
22656        ///
22657        /// The values are not transformed in any way and thus are considered stable
22658        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22659        pub fn as_str_name(&self) -> &'static str {
22660            match self {
22661                Self::Unspecified => "TYPE_UNSPECIFIED",
22662                Self::SliceBegin => "TYPE_SLICE_BEGIN",
22663                Self::SliceEnd => "TYPE_SLICE_END",
22664                Self::Instant => "TYPE_INSTANT",
22665                Self::Counter => "TYPE_COUNTER",
22666            }
22667        }
22668        /// Creates an enum from field names used in the ProtoBuf definition.
22669        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22670            match value {
22671                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
22672                "TYPE_SLICE_BEGIN" => Some(Self::SliceBegin),
22673                "TYPE_SLICE_END" => Some(Self::SliceEnd),
22674                "TYPE_INSTANT" => Some(Self::Instant),
22675                "TYPE_COUNTER" => Some(Self::Counter),
22676                _ => None,
22677            }
22678        }
22679    }
22680    /// Optional name of the event for its display in trace viewer. May be left
22681    /// unspecified for events with typed arguments.
22682    ///
22683    /// Note that metrics should not rely on event names, as they are prone to
22684    /// changing. Instead, they should use typed arguments to identify the events
22685    /// they are interested in.
22686    #[derive(Clone, PartialEq, ::prost::Oneof)]
22687    pub enum NameField {
22688        /// interned EventName.
22689        #[prost(uint64, tag = "10")]
22690        NameIid(u64),
22691        /// non-interned variant.
22692        #[prost(string, tag = "23")]
22693        Name(::prost::alloc::string::String),
22694    }
22695    /// A new value for a counter track. |track_uuid| should refer to a track with
22696    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
22697    /// efficient encoding of counter values that are sampled at the beginning/end
22698    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
22699    /// Counter values can optionally be encoded in as delta values (positive or
22700    /// negative) on each packet sequence (see CounterIncrementalBase).
22701    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
22702    pub enum CounterValueField {
22703        #[prost(int64, tag = "30")]
22704        CounterValue(i64),
22705        #[prost(double, tag = "44")]
22706        DoubleCounterValue(f64),
22707    }
22708    /// This field is used only if the source location represents the function that
22709    /// executes during this event.
22710    #[derive(Clone, PartialEq, ::prost::Oneof)]
22711    pub enum SourceLocationField {
22712        /// Non-interned field.
22713        #[prost(message, tag = "33")]
22714        SourceLocation(super::SourceLocation),
22715        /// Interned field.
22716        #[prost(uint64, tag = "34")]
22717        SourceLocationIid(u64),
22718    }
22719    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
22720    /// TracePacket instead.
22721    ///
22722    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
22723    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
22724    pub enum Timestamp {
22725        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
22726        /// calculate the absolute timestamp value, sum up all delta values of the
22727        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
22728        /// the |reference_timestamp| in ThreadDescriptor. This value should always
22729        /// be positive.
22730        #[prost(int64, tag = "1")]
22731        TimestampDeltaUs(i64),
22732        /// Absolute value (e.g. a manually specified timestamp in the macro).
22733        /// This is a one-off value that does not affect delta timestamp computation
22734        /// in subsequent TrackEvents.
22735        #[prost(int64, tag = "16")]
22736        TimestampAbsoluteUs(i64),
22737    }
22738    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22739    /// encode thread time instead.
22740    ///
22741    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
22742    /// microseconds.
22743    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
22744    pub enum ThreadTime {
22745        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
22746        /// calculate the absolute timestamp value, sum up all delta values of the
22747        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
22748        /// the |reference_timestamp| in ThreadDescriptor. This value should always
22749        /// be positive.
22750        #[prost(int64, tag = "2")]
22751        ThreadTimeDeltaUs(i64),
22752        /// This is a one-off absolute value that does not affect delta timestamp
22753        /// computation in subsequent TrackEvents.
22754        #[prost(int64, tag = "17")]
22755        ThreadTimeAbsoluteUs(i64),
22756    }
22757    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22758    /// encode thread instruction count instead.
22759    ///
22760    /// Value of the instruction counter for the current thread.
22761    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
22762    pub enum ThreadInstructionCount {
22763        /// Same encoding as |thread_time| field above.
22764        #[prost(int64, tag = "8")]
22765        ThreadInstructionCountDelta(i64),
22766        #[prost(int64, tag = "20")]
22767        ThreadInstructionCountAbsolute(i64),
22768    }
22769}
22770/// Default values for fields of all TrackEvents on the same packet sequence.
22771/// Should be emitted as part of TracePacketDefaults whenever incremental state
22772/// is cleared. It's defined here because field IDs should match those of the
22773/// corresponding fields in TrackEvent.
22774#[derive(Clone, PartialEq, ::prost::Message)]
22775pub struct TrackEventDefaults {
22776    #[prost(uint64, optional, tag = "11")]
22777    pub track_uuid: ::core::option::Option<u64>,
22778    #[prost(uint64, repeated, packed = "false", tag = "31")]
22779    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
22780    #[prost(uint64, repeated, packed = "false", tag = "45")]
22781    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
22782}
22783#[derive(Clone, PartialEq, ::prost::Message)]
22784pub struct EventCategory {
22785    #[prost(uint64, optional, tag = "1")]
22786    pub iid: ::core::option::Option<u64>,
22787    #[prost(string, optional, tag = "2")]
22788    pub name: ::core::option::Option<::prost::alloc::string::String>,
22789}
22790#[derive(Clone, PartialEq, ::prost::Message)]
22791pub struct EventName {
22792    #[prost(uint64, optional, tag = "1")]
22793    pub iid: ::core::option::Option<u64>,
22794    #[prost(string, optional, tag = "2")]
22795    pub name: ::core::option::Option<::prost::alloc::string::String>,
22796}
22797/// The interning fields in this file can refer to 2 different intern tables,
22798/// depending on the message they are used in. If the interned fields are present
22799/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
22800/// should be used. If the intered fields are present in the
22801/// StreamingProfilePacket proto, then the intern tables included in all of the
22802/// previous InternedData message with same sequence ID should be used.
22803/// TODO(fmayer): Move to the intern tables to a common location.
22804#[derive(Clone, PartialEq, ::prost::Message)]
22805pub struct InternedString {
22806    #[prost(uint64, optional, tag = "1")]
22807    pub iid: ::core::option::Option<u64>,
22808    #[prost(bytes = "vec", optional, tag = "2")]
22809    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
22810}
22811/// A symbol field that is emitted after the trace is written. These tables would
22812/// be appended as the last packets in the trace that the profiler will use, so
22813/// that the actual trace need not be rewritten to symbolize the profiles.
22814#[derive(Clone, PartialEq, ::prost::Message)]
22815pub struct ProfiledFrameSymbols {
22816    /// Use the frame id as the interning key for the symbols.
22817    #[prost(uint64, optional, tag = "1")]
22818    pub frame_iid: ::core::option::Option<u64>,
22819    /// key to InternedString
22820    #[prost(uint64, repeated, packed = "false", tag = "2")]
22821    pub function_name_id: ::prost::alloc::vec::Vec<u64>,
22822    /// key to InternedString
22823    #[prost(uint64, repeated, packed = "false", tag = "3")]
22824    pub file_name_id: ::prost::alloc::vec::Vec<u64>,
22825    #[prost(uint32, repeated, packed = "false", tag = "4")]
22826    pub line_number: ::prost::alloc::vec::Vec<u32>,
22827}
22828#[derive(Clone, PartialEq, ::prost::Message)]
22829pub struct Line {
22830    #[prost(string, optional, tag = "1")]
22831    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
22832    #[prost(string, optional, tag = "2")]
22833    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
22834    #[prost(uint32, optional, tag = "3")]
22835    pub line_number: ::core::option::Option<u32>,
22836}
22837/// Symbols for a given address in a module.
22838#[derive(Clone, PartialEq, ::prost::Message)]
22839pub struct AddressSymbols {
22840    #[prost(uint64, optional, tag = "1")]
22841    pub address: ::core::option::Option<u64>,
22842    /// Source lines that correspond to this address.
22843    ///
22844    /// These are repeated because when inlining happens, multiple functions'
22845    /// frames can be at a single address. Imagine function Foo calling the
22846    /// `std::vector<int>` constructor, which gets inlined at 0xf00. We then get
22847    /// both Foo and the `std::vector<int>` constructor when we symbolize the
22848    /// address.
22849    #[prost(message, repeated, tag = "2")]
22850    pub lines: ::prost::alloc::vec::Vec<Line>,
22851}
22852/// Symbols for addresses seen in a module.
22853#[derive(Clone, PartialEq, ::prost::Message)]
22854pub struct ModuleSymbols {
22855    /// Fully qualified path to the mapping.
22856    /// E.g. /system/lib64/libc.so.
22857    #[prost(string, optional, tag = "1")]
22858    pub path: ::core::option::Option<::prost::alloc::string::String>,
22859    /// .note.gnu.build-id on Linux (not hex encoded).
22860    /// uuid on MacOS.
22861    /// Module GUID on Windows.
22862    #[prost(string, optional, tag = "2")]
22863    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
22864    #[prost(message, repeated, tag = "3")]
22865    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
22866}
22867#[derive(Clone, PartialEq, ::prost::Message)]
22868pub struct Mapping {
22869    /// Interning key.
22870    #[prost(uint64, optional, tag = "1")]
22871    pub iid: ::core::option::Option<u64>,
22872    /// Interning key.
22873    #[prost(uint64, optional, tag = "2")]
22874    pub build_id: ::core::option::Option<u64>,
22875    /// This is not set on Android 10.
22876    #[prost(uint64, optional, tag = "8")]
22877    pub exact_offset: ::core::option::Option<u64>,
22878    #[prost(uint64, optional, tag = "3")]
22879    pub start_offset: ::core::option::Option<u64>,
22880    #[prost(uint64, optional, tag = "4")]
22881    pub start: ::core::option::Option<u64>,
22882    #[prost(uint64, optional, tag = "5")]
22883    pub end: ::core::option::Option<u64>,
22884    #[prost(uint64, optional, tag = "6")]
22885    pub load_bias: ::core::option::Option<u64>,
22886    /// E.g. \["system", "lib64", "libc.so"\]
22887    /// id of string.
22888    #[prost(uint64, repeated, packed = "false", tag = "7")]
22889    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
22890}
22891#[derive(Clone, Copy, PartialEq, ::prost::Message)]
22892pub struct Frame {
22893    /// Interning key
22894    #[prost(uint64, optional, tag = "1")]
22895    pub iid: ::core::option::Option<u64>,
22896    /// E.g. "fopen"
22897    /// id of string.
22898    #[prost(uint64, optional, tag = "2")]
22899    pub function_name_id: ::core::option::Option<u64>,
22900    #[prost(uint64, optional, tag = "3")]
22901    pub mapping_id: ::core::option::Option<u64>,
22902    #[prost(uint64, optional, tag = "4")]
22903    pub rel_pc: ::core::option::Option<u64>,
22904}
22905#[derive(Clone, PartialEq, ::prost::Message)]
22906pub struct Callstack {
22907    #[prost(uint64, optional, tag = "1")]
22908    pub iid: ::core::option::Option<u64>,
22909    /// Frames of this callstack. Bottom frame first.
22910    #[prost(uint64, repeated, packed = "false", tag = "2")]
22911    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
22912}
22913/// Message that contains new entries for the interning indices of a packet
22914/// sequence.
22915///
22916/// The writer will usually emit new entries in the same TracePacket that first
22917/// refers to them (since the last reset of interning state). They may also be
22918/// emitted proactively in advance of referring to them in later packets.
22919///
22920/// Next reserved id: 8 (up to 15).
22921/// Next id: 42.
22922///
22923/// TODO(eseckler): Replace iid fields inside interned messages with
22924/// map<iid, message> type fields in InternedData.
22925#[derive(Clone, PartialEq, ::prost::Message)]
22926pub struct InternedData {
22927    /// Each field's message type needs to specify an |iid| field, which is the ID
22928    /// of the entry in the field's interning index. Each field constructs its own
22929    /// index, thus interning IDs are scoped to the tracing session and field
22930    /// (usually as a counter for efficient var-int encoding), and optionally to
22931    /// the incremental state generation of the packet sequence.
22932    #[prost(message, repeated, tag = "1")]
22933    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
22934    #[prost(message, repeated, tag = "2")]
22935    pub event_names: ::prost::alloc::vec::Vec<EventName>,
22936    #[prost(message, repeated, tag = "3")]
22937    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
22938    #[prost(message, repeated, tag = "27")]
22939    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<DebugAnnotationValueTypeName>,
22940    #[prost(message, repeated, tag = "4")]
22941    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
22942    #[prost(message, repeated, tag = "28")]
22943    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<UnsymbolizedSourceLocation>,
22944    #[prost(message, repeated, tag = "20")]
22945    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
22946    #[prost(message, repeated, tag = "25")]
22947    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
22948    /// Build IDs of exectuable files.
22949    #[prost(message, repeated, tag = "16")]
22950    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
22951    /// Paths to executable files.
22952    #[prost(message, repeated, tag = "17")]
22953    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
22954    /// Paths to source files.
22955    #[prost(message, repeated, tag = "18")]
22956    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
22957    /// Names of functions used in frames below.
22958    #[prost(message, repeated, tag = "5")]
22959    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
22960    /// Symbols that were added to this trace after the fact.
22961    #[prost(message, repeated, tag = "21")]
22962    pub profiled_frame_symbols: ::prost::alloc::vec::Vec<ProfiledFrameSymbols>,
22963    /// Executable files mapped into processes.
22964    #[prost(message, repeated, tag = "19")]
22965    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
22966    /// Frames of callstacks of a program.
22967    #[prost(message, repeated, tag = "6")]
22968    pub frames: ::prost::alloc::vec::Vec<Frame>,
22969    /// A callstack of a program.
22970    #[prost(message, repeated, tag = "7")]
22971    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
22972    /// Additional Vulkan information sent in a VulkanMemoryEvent message
22973    #[prost(message, repeated, tag = "22")]
22974    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
22975    /// Graphics context of a render stage event.  This represent the GL
22976    /// context for an OpenGl app or the VkDevice for a Vulkan app.
22977    #[prost(message, repeated, tag = "23")]
22978    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
22979    /// Description of a GPU hardware queue or render stage.
22980    #[prost(message, repeated, tag = "24")]
22981    pub gpu_specifications: ::prost::alloc::vec::Vec<InternedGpuRenderStageSpecification>,
22982    /// This is set when FtraceConfig.symbolize_ksyms = true.
22983    /// The id of each symbol the number that will be reported in ftrace events
22984    /// like sched_block_reason.caller and is obtained from a monotonic counter.
22985    /// The same symbol can have different indexes in different bundles.
22986    /// This is is NOT the real address. This is to avoid disclosing KASLR through
22987    /// traces.
22988    #[prost(message, repeated, tag = "26")]
22989    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
22990    /// Interned string values in the DebugAnnotation proto.
22991    #[prost(message, repeated, tag = "29")]
22992    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
22993    /// Interned packet context for android.network_packets.
22994    #[prost(message, repeated, tag = "30")]
22995    pub packet_context: ::prost::alloc::vec::Vec<NetworkPacketContext>,
22996    /// Interned name of a js function. We only intern js functions as there is a
22997    /// lot of duplication for them, but less so for other strings in the V8 data
22998    /// source.
22999    #[prost(message, repeated, tag = "31")]
23000    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
23001    /// Js functions can be emitted multiple times for various compilation tiers,
23002    /// so it makes sense to deduplicate all this.
23003    #[prost(message, repeated, tag = "32")]
23004    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
23005    /// Interned JS script (there is one associated with each JS function)
23006    #[prost(message, repeated, tag = "33")]
23007    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
23008    /// Interned Wasm script (there is one associated with each Wasm function)
23009    #[prost(message, repeated, tag = "34")]
23010    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
23011    /// Every V8 event is associated with an isolate, intern the isolate to remove
23012    /// duplication.
23013    #[prost(message, repeated, tag = "35")]
23014    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
23015    /// Interned protolog strings args.
23016    #[prost(message, repeated, tag = "36")]
23017    pub protolog_string_args: ::prost::alloc::vec::Vec<InternedString>,
23018    /// Interned protolog stacktraces.
23019    #[prost(message, repeated, tag = "37")]
23020    pub protolog_stacktrace: ::prost::alloc::vec::Vec<InternedString>,
23021    /// viewcapture
23022    #[prost(message, repeated, tag = "38")]
23023    pub viewcapture_package_name: ::prost::alloc::vec::Vec<InternedString>,
23024    #[prost(message, repeated, tag = "39")]
23025    pub viewcapture_window_name: ::prost::alloc::vec::Vec<InternedString>,
23026    #[prost(message, repeated, tag = "40")]
23027    pub viewcapture_view_id: ::prost::alloc::vec::Vec<InternedString>,
23028    #[prost(message, repeated, tag = "41")]
23029    pub viewcapture_class_name: ::prost::alloc::vec::Vec<InternedString>,
23030}
23031#[derive(Clone, PartialEq, ::prost::Message)]
23032pub struct MemoryTrackerSnapshot {
23033    /// Unique ID that represents the global memory dump.
23034    #[prost(uint64, optional, tag = "1")]
23035    pub global_dump_id: ::core::option::Option<u64>,
23036    #[prost(
23037        enumeration = "memory_tracker_snapshot::LevelOfDetail",
23038        optional,
23039        tag = "2"
23040    )]
23041    pub level_of_detail: ::core::option::Option<i32>,
23042    #[prost(message, repeated, tag = "3")]
23043    pub process_memory_dumps: ::prost::alloc::vec::Vec<memory_tracker_snapshot::ProcessSnapshot>,
23044}
23045/// Nested message and enum types in `MemoryTrackerSnapshot`.
23046pub mod memory_tracker_snapshot {
23047    /// Memory snapshot of a process. The snapshot contains memory data that is
23048    /// from 2 different sources, namely system stats and instrumentation stats.
23049    /// The system memory usage stats come from the OS based on standard API
23050    /// available in the platform to query memory usage. The instrumentation stats
23051    /// are added by instrumenting specific piece of code which tracks memory
23052    /// allocations and deallocations made by a small sub-system within the
23053    /// application.
23054    /// The system stats of the global memory snapshot are recorded as part of
23055    /// ProcessStats and SmapsPacket fields in trace packet with the same
23056    /// timestamp.
23057    #[derive(Clone, PartialEq, ::prost::Message)]
23058    pub struct ProcessSnapshot {
23059        /// Process ID of the process
23060        #[prost(int32, optional, tag = "1")]
23061        pub pid: ::core::option::Option<i32>,
23062        #[prost(message, repeated, tag = "2")]
23063        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
23064        #[prost(message, repeated, tag = "3")]
23065        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
23066    }
23067    /// Nested message and enum types in `ProcessSnapshot`.
23068    pub mod process_snapshot {
23069        /// A single node in the memory graph.
23070        #[derive(Clone, PartialEq, ::prost::Message)]
23071        pub struct MemoryNode {
23072            /// Unique ID of the node across all processes involved in the global
23073            /// memory dump. The ID is only unique within this particular global dump
23074            /// identified by GlobalMemoryDumpPacket.global_dump_id.
23075            #[prost(uint64, optional, tag = "1")]
23076            pub id: ::core::option::Option<u64>,
23077            /// Absolute name is a unique name for the memory node within the process
23078            /// with ProcessMemoryDump.pid. The name can contain multiple parts
23079            /// separated by '/', which traces the edges of the node from the root
23080            /// node.
23081            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
23082            /// node "buffer1" in a graph structure of:
23083            ///    root -> partition_allocator -> array_buffers -> buffer1.
23084            #[prost(string, optional, tag = "2")]
23085            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
23086            /// A weak node means that the instrumentation that added the current node
23087            /// is unsure about the existence of the actual memory. Unless a "strong"
23088            /// (non-weak is default) node that has an edge to the current node exists
23089            /// in the current global dump, the current node will be discarded.
23090            #[prost(bool, optional, tag = "3")]
23091            pub weak: ::core::option::Option<bool>,
23092            /// Size of the node in bytes, used to compute the effective size of the
23093            /// nodes without double counting.
23094            #[prost(uint64, optional, tag = "4")]
23095            pub size_bytes: ::core::option::Option<u64>,
23096            #[prost(message, repeated, tag = "5")]
23097            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
23098        }
23099        /// Nested message and enum types in `MemoryNode`.
23100        pub mod memory_node {
23101            /// Entries in the memory node that contain statistics and additional
23102            /// debuggable information about the memory. The size of the node is
23103            /// tracked separately in the |size_bytes| field.
23104            #[derive(Clone, PartialEq, ::prost::Message)]
23105            pub struct MemoryNodeEntry {
23106                #[prost(string, optional, tag = "1")]
23107                pub name: ::core::option::Option<::prost::alloc::string::String>,
23108                #[prost(enumeration = "memory_node_entry::Units", optional, tag = "2")]
23109                pub units: ::core::option::Option<i32>,
23110                /// Contains either one of uint64 or string value.
23111                #[prost(uint64, optional, tag = "3")]
23112                pub value_uint64: ::core::option::Option<u64>,
23113                #[prost(string, optional, tag = "4")]
23114                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
23115            }
23116            /// Nested message and enum types in `MemoryNodeEntry`.
23117            pub mod memory_node_entry {
23118                #[derive(
23119                    Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
23120                )]
23121                #[repr(i32)]
23122                pub enum Units {
23123                    Unspecified = 0,
23124                    Bytes = 1,
23125                    Count = 2,
23126                }
23127                impl Units {
23128                    /// String value of the enum field names used in the ProtoBuf definition.
23129                    ///
23130                    /// The values are not transformed in any way and thus are considered stable
23131                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23132                    pub fn as_str_name(&self) -> &'static str {
23133                        match self {
23134                            Self::Unspecified => "UNSPECIFIED",
23135                            Self::Bytes => "BYTES",
23136                            Self::Count => "COUNT",
23137                        }
23138                    }
23139                    /// Creates an enum from field names used in the ProtoBuf definition.
23140                    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23141                        match value {
23142                            "UNSPECIFIED" => Some(Self::Unspecified),
23143                            "BYTES" => Some(Self::Bytes),
23144                            "COUNT" => Some(Self::Count),
23145                            _ => None,
23146                        }
23147                    }
23148                }
23149            }
23150        }
23151        /// A directed edge that connects any 2 nodes in the graph above. These are
23152        /// in addition to the inherent edges added due to the tree structure of the
23153        /// node's absolute names.
23154        /// Node with id |source_id| owns the node with id |target_id|, and has the
23155        /// effect of attributing the memory usage of target to source. |importance|
23156        /// is optional and relevant only for the cases of co-ownership, where it
23157        /// acts as a z-index: the owner with the highest importance will be
23158        /// attributed target's memory.
23159        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
23160        pub struct MemoryEdge {
23161            #[prost(uint64, optional, tag = "1")]
23162            pub source_id: ::core::option::Option<u64>,
23163            #[prost(uint64, optional, tag = "2")]
23164            pub target_id: ::core::option::Option<u64>,
23165            #[prost(uint32, optional, tag = "3")]
23166            pub importance: ::core::option::Option<u32>,
23167            #[prost(bool, optional, tag = "4")]
23168            pub overridable: ::core::option::Option<bool>,
23169        }
23170    }
23171    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23172    #[repr(i32)]
23173    pub enum LevelOfDetail {
23174        DetailFull = 0,
23175        DetailLight = 1,
23176        DetailBackground = 2,
23177    }
23178    impl LevelOfDetail {
23179        /// String value of the enum field names used in the ProtoBuf definition.
23180        ///
23181        /// The values are not transformed in any way and thus are considered stable
23182        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23183        pub fn as_str_name(&self) -> &'static str {
23184            match self {
23185                Self::DetailFull => "DETAIL_FULL",
23186                Self::DetailLight => "DETAIL_LIGHT",
23187                Self::DetailBackground => "DETAIL_BACKGROUND",
23188            }
23189        }
23190        /// Creates an enum from field names used in the ProtoBuf definition.
23191        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23192            match value {
23193                "DETAIL_FULL" => Some(Self::DetailFull),
23194                "DETAIL_LIGHT" => Some(Self::DetailLight),
23195                "DETAIL_BACKGROUND" => Some(Self::DetailBackground),
23196                _ => None,
23197            }
23198        }
23199    }
23200}
23201/// Used to trace the execution of perfetto itself.
23202#[derive(Clone, PartialEq, ::prost::Message)]
23203pub struct PerfettoMetatrace {
23204    /// Only when using |event_id|.
23205    #[prost(uint64, optional, tag = "3")]
23206    pub event_duration_ns: ::core::option::Option<u64>,
23207    /// Only when using |counter_id|.
23208    #[prost(int32, optional, tag = "4")]
23209    pub counter_value: ::core::option::Option<i32>,
23210    /// ID of the thread that emitted the event.
23211    #[prost(uint32, optional, tag = "5")]
23212    pub thread_id: ::core::option::Option<u32>,
23213    /// If true the meta-tracing ring buffer had overruns and hence some data is
23214    /// missing from this point.
23215    #[prost(bool, optional, tag = "6")]
23216    pub has_overruns: ::core::option::Option<bool>,
23217    /// Args for the event.
23218    #[prost(message, repeated, tag = "7")]
23219    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
23220    #[prost(message, repeated, tag = "10")]
23221    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
23222    /// See base/metatrace_events.h for definitions.
23223    #[prost(oneof = "perfetto_metatrace::RecordType", tags = "1, 2, 8, 11, 9")]
23224    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
23225}
23226/// Nested message and enum types in `PerfettoMetatrace`.
23227pub mod perfetto_metatrace {
23228    #[derive(Clone, PartialEq, ::prost::Message)]
23229    pub struct Arg {
23230        #[prost(oneof = "arg::KeyOrInternedKey", tags = "1, 3")]
23231        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
23232        #[prost(oneof = "arg::ValueOrInternedValue", tags = "2, 4")]
23233        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
23234    }
23235    /// Nested message and enum types in `Arg`.
23236    pub mod arg {
23237        #[derive(Clone, PartialEq, ::prost::Oneof)]
23238        pub enum KeyOrInternedKey {
23239            #[prost(string, tag = "1")]
23240            Key(::prost::alloc::string::String),
23241            #[prost(uint64, tag = "3")]
23242            KeyIid(u64),
23243        }
23244        #[derive(Clone, PartialEq, ::prost::Oneof)]
23245        pub enum ValueOrInternedValue {
23246            #[prost(string, tag = "2")]
23247            Value(::prost::alloc::string::String),
23248            #[prost(uint64, tag = "4")]
23249            ValueIid(u64),
23250        }
23251    }
23252    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
23253    /// |value_iid| above.
23254    #[derive(Clone, PartialEq, ::prost::Message)]
23255    pub struct InternedString {
23256        #[prost(uint64, optional, tag = "1")]
23257        pub iid: ::core::option::Option<u64>,
23258        #[prost(string, optional, tag = "2")]
23259        pub value: ::core::option::Option<::prost::alloc::string::String>,
23260    }
23261    /// See base/metatrace_events.h for definitions.
23262    #[derive(Clone, PartialEq, ::prost::Oneof)]
23263    pub enum RecordType {
23264        #[prost(uint32, tag = "1")]
23265        EventId(u32),
23266        #[prost(uint32, tag = "2")]
23267        CounterId(u32),
23268        /// For trace processor metatracing.
23269        #[prost(string, tag = "8")]
23270        EventName(::prost::alloc::string::String),
23271        #[prost(uint64, tag = "11")]
23272        EventNameIid(u64),
23273        #[prost(string, tag = "9")]
23274        CounterName(::prost::alloc::string::String),
23275    }
23276}
23277/// Events emitted by the tracing service.
23278#[derive(Clone, Copy, PartialEq, ::prost::Message)]
23279pub struct TracingServiceEvent {
23280    /// When each of the following booleans are set to true, they report the
23281    /// point in time (through TracePacket's timestamp) where the condition
23282    /// they describe happened.
23283    /// The order of the booleans below matches the timestamp ordering
23284    /// they would generally be expected to have.
23285    #[prost(oneof = "tracing_service_event::EventType", tags = "2, 1, 3, 4, 5, 6")]
23286    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
23287}
23288/// Nested message and enum types in `TracingServiceEvent`.
23289pub mod tracing_service_event {
23290    /// When each of the following booleans are set to true, they report the
23291    /// point in time (through TracePacket's timestamp) where the condition
23292    /// they describe happened.
23293    /// The order of the booleans below matches the timestamp ordering
23294    /// they would generally be expected to have.
23295    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
23296    pub enum EventType {
23297        /// Emitted when we start tracing and specifically, this will be before any
23298        /// producer is notified about the existence of this trace. This is always
23299        /// emitted before the all_data_sources_started event. This event is also
23300        /// guaranteed to be seen (byte-offset wise) before any data packets from
23301        /// producers.
23302        #[prost(bool, tag = "2")]
23303        TracingStarted(bool),
23304        /// Emitted after all data sources saw the start event and ACKed it.
23305        /// This identifies the point in time when it's safe to assume that all data
23306        /// sources have been recording events.
23307        #[prost(bool, tag = "1")]
23308        AllDataSourcesStarted(bool),
23309        /// Emitted when all data sources have been flushed successfully or with an
23310        /// error (including timeouts). This can generally happen many times over the
23311        /// course of the trace.
23312        #[prost(bool, tag = "3")]
23313        AllDataSourcesFlushed(bool),
23314        /// Emitted when reading back the central tracing buffers has been completed.
23315        /// If |write_into_file| is specified, this can happen many times over the
23316        /// course of the trace.
23317        #[prost(bool, tag = "4")]
23318        ReadTracingBuffersCompleted(bool),
23319        /// Emitted after tracing has been disabled and specifically, this will be
23320        /// after all packets from producers have been included in the central
23321        /// tracing buffer.
23322        #[prost(bool, tag = "5")]
23323        TracingDisabled(bool),
23324        /// Emitted if perfetto --save-for-bugreport was invoked while the current
23325        /// tracing session was running and it had the highest bugreport_score. In
23326        /// this case the original consumer will see a nearly empty trace, because
23327        /// the contents are routed onto the bugreport file. This event flags the
23328        /// situation explicitly. Traces that contain this marker should be discarded
23329        /// by test infrastructures / pipelines.
23330        /// Deprecated since Android U, where --save-for-bugreport uses
23331        /// non-destructive cloning.
23332        #[prost(bool, tag = "6")]
23333        SeizedForBugreport(bool),
23334    }
23335}
23336/// Energy consumer based on aidl class:
23337/// android.hardware.power.stats.EnergyConsumer.
23338#[derive(Clone, PartialEq, ::prost::Message)]
23339pub struct AndroidEnergyConsumer {
23340    /// Unique ID of this energy consumer.  Matches the ID in a
23341    /// AndroidEnergyEstimationBreakdown.
23342    #[prost(int32, optional, tag = "1")]
23343    pub energy_consumer_id: ::core::option::Option<i32>,
23344    /// For a group of energy consumers of the same logical type, sorting by
23345    /// ordinal gives their physical order. Ordinals must be consecutive integers
23346    /// starting from 0.
23347    #[prost(int32, optional, tag = "2")]
23348    pub ordinal: ::core::option::Option<i32>,
23349    /// Type of this energy consumer.
23350    #[prost(string, optional, tag = "3")]
23351    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
23352    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
23353    /// framework.
23354    #[prost(string, optional, tag = "4")]
23355    pub name: ::core::option::Option<::prost::alloc::string::String>,
23356}
23357#[derive(Clone, PartialEq, ::prost::Message)]
23358pub struct AndroidEnergyConsumerDescriptor {
23359    #[prost(message, repeated, tag = "1")]
23360    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
23361}
23362/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
23363/// This proto represents the aidl class:
23364/// android.hardware.power.stats.EnergyConsumerResult.
23365#[derive(Clone, PartialEq, ::prost::Message)]
23366pub struct AndroidEnergyEstimationBreakdown {
23367    /// The first trace packet of each session should include a energy consumer
23368    /// descriptor.
23369    #[prost(message, optional, tag = "1")]
23370    pub energy_consumer_descriptor: ::core::option::Option<AndroidEnergyConsumerDescriptor>,
23371    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
23372    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
23373    /// should be sent at the beginning of a trace.
23374    #[prost(int32, optional, tag = "2")]
23375    pub energy_consumer_id: ::core::option::Option<i32>,
23376    /// Total accumulated energy since boot in microwatt-seconds (uWs)
23377    #[prost(int64, optional, tag = "3")]
23378    pub energy_uws: ::core::option::Option<i64>,
23379    /// Optional attributed energy per Android ID / Linux UID for this
23380    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
23381    /// to total accumulated energy.
23382    #[prost(message, repeated, tag = "4")]
23383    pub per_uid_breakdown:
23384        ::prost::alloc::vec::Vec<android_energy_estimation_breakdown::EnergyUidBreakdown>,
23385}
23386/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
23387pub mod android_energy_estimation_breakdown {
23388    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
23389    pub struct EnergyUidBreakdown {
23390        /// Android ID/Linux UID, the accumulated energy is attributed to.
23391        #[prost(int32, optional, tag = "1")]
23392        pub uid: ::core::option::Option<i32>,
23393        /// Accumulated energy since boot in microwatt-seconds (uWs).
23394        #[prost(int64, optional, tag = "2")]
23395        pub energy_uws: ::core::option::Option<i64>,
23396    }
23397}
23398#[derive(Clone, PartialEq, ::prost::Message)]
23399pub struct EntityStateResidency {
23400    /// This is only emitted at the beginning of the trace.
23401    #[prost(message, repeated, tag = "1")]
23402    pub power_entity_state: ::prost::alloc::vec::Vec<entity_state_residency::PowerEntityState>,
23403    #[prost(message, repeated, tag = "2")]
23404    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
23405}
23406/// Nested message and enum types in `EntityStateResidency`.
23407pub mod entity_state_residency {
23408    #[derive(Clone, PartialEq, ::prost::Message)]
23409    pub struct PowerEntityState {
23410        /// Index corresponding to the entity
23411        #[prost(int32, optional, tag = "1")]
23412        pub entity_index: ::core::option::Option<i32>,
23413        /// Index corresponding to the state
23414        #[prost(int32, optional, tag = "2")]
23415        pub state_index: ::core::option::Option<i32>,
23416        /// Name of the entity. This is device-specific, determined by the PowerStats
23417        /// HAL, and cannot be configured by the user. An example would be
23418        /// "Bluetooth".
23419        #[prost(string, optional, tag = "3")]
23420        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
23421        /// Name of the state. This is device-specific, determined by the PowerStats
23422        /// HAL, and cannot be configured by the user. An example would be
23423        /// "Active".
23424        #[prost(string, optional, tag = "4")]
23425        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
23426    }
23427    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
23428    pub struct StateResidency {
23429        /// Index corresponding to PowerEntityState.entity_index
23430        #[prost(int32, optional, tag = "1")]
23431        pub entity_index: ::core::option::Option<i32>,
23432        /// Index corresponding to PowerEntityState.state_index
23433        #[prost(int32, optional, tag = "2")]
23434        pub state_index: ::core::option::Option<i32>,
23435        /// Time since boot that this entity has been in this state
23436        #[prost(uint64, optional, tag = "3")]
23437        pub total_time_in_state_ms: ::core::option::Option<u64>,
23438        /// Total number of times since boot that the entity has entered this state
23439        #[prost(uint64, optional, tag = "4")]
23440        pub total_state_entry_count: ::core::option::Option<u64>,
23441        /// Timestamp of the last time the entity entered this state
23442        #[prost(uint64, optional, tag = "5")]
23443        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
23444    }
23445}
23446#[derive(Clone, PartialEq, ::prost::Message)]
23447pub struct BatteryCounters {
23448    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
23449    #[prost(int64, optional, tag = "1")]
23450    pub charge_counter_uah: ::core::option::Option<i64>,
23451    /// Remaining battery capacity percentage of total capacity
23452    #[prost(float, optional, tag = "2")]
23453    pub capacity_percent: ::core::option::Option<f32>,
23454    /// Instantaneous battery current in microamperes(µA).
23455    /// Negative values indicate current being drained from the battery and
23456    /// positive values indicate current feeding the battery from a charge source
23457    /// (USB).
23458    ///
23459    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
23460    #[prost(int64, optional, tag = "3")]
23461    pub current_ua: ::core::option::Option<i64>,
23462    /// Instantaneous battery current in microamperes(µA).
23463    #[prost(int64, optional, tag = "4")]
23464    pub current_avg_ua: ::core::option::Option<i64>,
23465    /// Battery name, emitted only on multiple batteries.
23466    #[prost(string, optional, tag = "5")]
23467    pub name: ::core::option::Option<::prost::alloc::string::String>,
23468    /// Battery capacity in microwatt-hours(µWh).
23469    #[prost(int64, optional, tag = "6")]
23470    pub energy_counter_uwh: ::core::option::Option<i64>,
23471    /// Battery voltage in microvolts(µV).
23472    #[prost(int64, optional, tag = "7")]
23473    pub voltage_uv: ::core::option::Option<i64>,
23474}
23475#[derive(Clone, PartialEq, ::prost::Message)]
23476pub struct PowerRails {
23477    /// This is only emitted at the beginning of the trace.
23478    #[prost(message, repeated, tag = "1")]
23479    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
23480    #[prost(message, repeated, tag = "2")]
23481    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
23482}
23483/// Nested message and enum types in `PowerRails`.
23484pub mod power_rails {
23485    #[derive(Clone, PartialEq, ::prost::Message)]
23486    pub struct RailDescriptor {
23487        /// Index corresponding to the rail
23488        #[prost(uint32, optional, tag = "1")]
23489        pub index: ::core::option::Option<u32>,
23490        /// Name of the rail
23491        #[prost(string, optional, tag = "2")]
23492        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
23493        /// Name of the subsystem to which this rail belongs
23494        #[prost(string, optional, tag = "3")]
23495        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
23496        /// Hardware sampling rate (Hz).
23497        #[prost(uint32, optional, tag = "4")]
23498        pub sampling_rate: ::core::option::Option<u32>,
23499    }
23500    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
23501    pub struct EnergyData {
23502        /// Index corresponding to RailDescriptor.index
23503        #[prost(uint32, optional, tag = "1")]
23504        pub index: ::core::option::Option<u32>,
23505        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
23506        #[prost(uint64, optional, tag = "2")]
23507        pub timestamp_ms: ::core::option::Option<u64>,
23508        /// Accumulated energy since device boot in microwatt-seconds (uWs).
23509        #[prost(uint64, optional, tag = "3")]
23510        pub energy: ::core::option::Option<u64>,
23511    }
23512}
23513/// Deliberate empty message. See comment on StatsdAtom#atom below.
23514#[derive(Clone, Copy, PartialEq, ::prost::Message)]
23515pub struct Atom {}
23516/// One or more statsd atoms. This must continue to match:
23517/// perfetto/protos/third_party/statsd/shell_data.proto
23518/// So that we can efficiently add data from statsd directly to the
23519/// trace.
23520#[derive(Clone, PartialEq, ::prost::Message)]
23521pub struct StatsdAtom {
23522    /// Atom should be filled with an Atom proto from:
23523    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
23524    /// We don't reference Atom directly here since we don't want to import
23525    /// Atom.proto and all its transitive dependencies into Perfetto.
23526    /// atom and timestamp_nanos have the same cardinality
23527    #[prost(message, repeated, tag = "1")]
23528    pub atom: ::prost::alloc::vec::Vec<Atom>,
23529    #[prost(int64, repeated, packed = "false", tag = "2")]
23530    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
23531}
23532#[derive(Clone, PartialEq, ::prost::Message)]
23533pub struct ObfuscatedMember {
23534    /// This is the obfuscated field name relative to the class containing the
23535    /// ObfuscatedMember.
23536    #[prost(string, optional, tag = "1")]
23537    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23538    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
23539    /// field name including its class. Otherwise, this is this the unqualified
23540    /// deobfuscated field name relative to the class containing this
23541    /// ObfuscatedMember.
23542    #[prost(string, optional, tag = "2")]
23543    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23544}
23545#[derive(Clone, PartialEq, ::prost::Message)]
23546pub struct ObfuscatedClass {
23547    #[prost(string, optional, tag = "1")]
23548    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23549    #[prost(string, optional, tag = "2")]
23550    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23551    /// fields.
23552    #[prost(message, repeated, tag = "3")]
23553    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
23554    #[prost(message, repeated, tag = "4")]
23555    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
23556}
23557#[derive(Clone, PartialEq, ::prost::Message)]
23558pub struct DeobfuscationMapping {
23559    #[prost(string, optional, tag = "1")]
23560    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
23561    #[prost(int64, optional, tag = "2")]
23562    pub version_code: ::core::option::Option<i64>,
23563    #[prost(message, repeated, tag = "3")]
23564    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
23565}
23566#[derive(Clone, PartialEq, ::prost::Message)]
23567pub struct HeapGraphRoot {
23568    /// Objects retained by this root.
23569    #[prost(uint64, repeated, tag = "1")]
23570    pub object_ids: ::prost::alloc::vec::Vec<u64>,
23571    #[prost(enumeration = "heap_graph_root::Type", optional, tag = "2")]
23572    pub root_type: ::core::option::Option<i32>,
23573}
23574/// Nested message and enum types in `HeapGraphRoot`.
23575pub mod heap_graph_root {
23576    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23577    #[repr(i32)]
23578    pub enum Type {
23579        RootUnknown = 0,
23580        RootJniGlobal = 1,
23581        RootJniLocal = 2,
23582        RootJavaFrame = 3,
23583        RootNativeStack = 4,
23584        RootStickyClass = 5,
23585        RootThreadBlock = 6,
23586        RootMonitorUsed = 7,
23587        RootThreadObject = 8,
23588        RootInternedString = 9,
23589        RootFinalizing = 10,
23590        RootDebugger = 11,
23591        RootReferenceCleanup = 12,
23592        RootVmInternal = 13,
23593        RootJniMonitor = 14,
23594    }
23595    impl Type {
23596        /// String value of the enum field names used in the ProtoBuf definition.
23597        ///
23598        /// The values are not transformed in any way and thus are considered stable
23599        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23600        pub fn as_str_name(&self) -> &'static str {
23601            match self {
23602                Self::RootUnknown => "ROOT_UNKNOWN",
23603                Self::RootJniGlobal => "ROOT_JNI_GLOBAL",
23604                Self::RootJniLocal => "ROOT_JNI_LOCAL",
23605                Self::RootJavaFrame => "ROOT_JAVA_FRAME",
23606                Self::RootNativeStack => "ROOT_NATIVE_STACK",
23607                Self::RootStickyClass => "ROOT_STICKY_CLASS",
23608                Self::RootThreadBlock => "ROOT_THREAD_BLOCK",
23609                Self::RootMonitorUsed => "ROOT_MONITOR_USED",
23610                Self::RootThreadObject => "ROOT_THREAD_OBJECT",
23611                Self::RootInternedString => "ROOT_INTERNED_STRING",
23612                Self::RootFinalizing => "ROOT_FINALIZING",
23613                Self::RootDebugger => "ROOT_DEBUGGER",
23614                Self::RootReferenceCleanup => "ROOT_REFERENCE_CLEANUP",
23615                Self::RootVmInternal => "ROOT_VM_INTERNAL",
23616                Self::RootJniMonitor => "ROOT_JNI_MONITOR",
23617            }
23618        }
23619        /// Creates an enum from field names used in the ProtoBuf definition.
23620        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23621            match value {
23622                "ROOT_UNKNOWN" => Some(Self::RootUnknown),
23623                "ROOT_JNI_GLOBAL" => Some(Self::RootJniGlobal),
23624                "ROOT_JNI_LOCAL" => Some(Self::RootJniLocal),
23625                "ROOT_JAVA_FRAME" => Some(Self::RootJavaFrame),
23626                "ROOT_NATIVE_STACK" => Some(Self::RootNativeStack),
23627                "ROOT_STICKY_CLASS" => Some(Self::RootStickyClass),
23628                "ROOT_THREAD_BLOCK" => Some(Self::RootThreadBlock),
23629                "ROOT_MONITOR_USED" => Some(Self::RootMonitorUsed),
23630                "ROOT_THREAD_OBJECT" => Some(Self::RootThreadObject),
23631                "ROOT_INTERNED_STRING" => Some(Self::RootInternedString),
23632                "ROOT_FINALIZING" => Some(Self::RootFinalizing),
23633                "ROOT_DEBUGGER" => Some(Self::RootDebugger),
23634                "ROOT_REFERENCE_CLEANUP" => Some(Self::RootReferenceCleanup),
23635                "ROOT_VM_INTERNAL" => Some(Self::RootVmInternal),
23636                "ROOT_JNI_MONITOR" => Some(Self::RootJniMonitor),
23637                _ => None,
23638            }
23639        }
23640    }
23641}
23642#[derive(Clone, PartialEq, ::prost::Message)]
23643pub struct HeapGraphType {
23644    /// TODO(fmayer): Consider removing this and using the index in the repeaed
23645    /// field to save space.
23646    #[prost(uint64, optional, tag = "1")]
23647    pub id: ::core::option::Option<u64>,
23648    #[prost(uint64, optional, tag = "2")]
23649    pub location_id: ::core::option::Option<u64>,
23650    #[prost(string, optional, tag = "3")]
23651    pub class_name: ::core::option::Option<::prost::alloc::string::String>,
23652    /// Size of objects of this type.
23653    #[prost(uint64, optional, tag = "4")]
23654    pub object_size: ::core::option::Option<u64>,
23655    #[prost(uint64, optional, tag = "5")]
23656    pub superclass_id: ::core::option::Option<u64>,
23657    /// Indices for InternedData.field_names for the names of the fields of
23658    /// instances of this class. This does NOT include the fields from
23659    /// superclasses. The consumer of this data needs to walk all super
23660    /// classes to get a full lists of fields. Objects always write the
23661    /// fields in order of most specific class to the furthest up superclass.
23662    #[prost(uint64, repeated, tag = "6")]
23663    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
23664    #[prost(enumeration = "heap_graph_type::Kind", optional, tag = "7")]
23665    pub kind: ::core::option::Option<i32>,
23666    #[prost(uint64, optional, tag = "8")]
23667    pub classloader_id: ::core::option::Option<u64>,
23668}
23669/// Nested message and enum types in `HeapGraphType`.
23670pub mod heap_graph_type {
23671    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
23672    #[repr(i32)]
23673    pub enum Kind {
23674        Unknown = 0,
23675        Normal = 1,
23676        Noreferences = 2,
23677        String = 3,
23678        Array = 4,
23679        Class = 5,
23680        Classloader = 6,
23681        Dexcache = 7,
23682        SoftReference = 8,
23683        WeakReference = 9,
23684        FinalizerReference = 10,
23685        PhantomReference = 11,
23686    }
23687    impl Kind {
23688        /// String value of the enum field names used in the ProtoBuf definition.
23689        ///
23690        /// The values are not transformed in any way and thus are considered stable
23691        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23692        pub fn as_str_name(&self) -> &'static str {
23693            match self {
23694                Self::Unknown => "KIND_UNKNOWN",
23695                Self::Normal => "KIND_NORMAL",
23696                Self::Noreferences => "KIND_NOREFERENCES",
23697                Self::String => "KIND_STRING",
23698                Self::Array => "KIND_ARRAY",
23699                Self::Class => "KIND_CLASS",
23700                Self::Classloader => "KIND_CLASSLOADER",
23701                Self::Dexcache => "KIND_DEXCACHE",
23702                Self::SoftReference => "KIND_SOFT_REFERENCE",
23703                Self::WeakReference => "KIND_WEAK_REFERENCE",
23704                Self::FinalizerReference => "KIND_FINALIZER_REFERENCE",
23705                Self::PhantomReference => "KIND_PHANTOM_REFERENCE",
23706            }
23707        }
23708        /// Creates an enum from field names used in the ProtoBuf definition.
23709        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23710            match value {
23711                "KIND_UNKNOWN" => Some(Self::Unknown),
23712                "KIND_NORMAL" => Some(Self::Normal),
23713                "KIND_NOREFERENCES" => Some(Self::Noreferences),
23714                "KIND_STRING" => Some(Self::String),
23715                "KIND_ARRAY" => Some(Self::Array),
23716                "KIND_CLASS" => Some(Self::Class),
23717                "KIND_CLASSLOADER" => Some(Self::Classloader),
23718                "KIND_DEXCACHE" => Some(Self::Dexcache),
23719                "KIND_SOFT_REFERENCE" => Some(Self::SoftReference),
23720                "KIND_WEAK_REFERENCE" => Some(Self::WeakReference),
23721                "KIND_FINALIZER_REFERENCE" => Some(Self::FinalizerReference),
23722                "KIND_PHANTOM_REFERENCE" => Some(Self::PhantomReference),
23723                _ => None,
23724            }
23725        }
23726    }
23727}
23728#[derive(Clone, PartialEq, ::prost::Message)]
23729pub struct HeapGraphObject {
23730    /// Index for InternedData.types for the name of the type of this object.
23731    #[prost(uint64, optional, tag = "2")]
23732    pub type_id: ::core::option::Option<u64>,
23733    /// Bytes occupied by this objects.
23734    #[prost(uint64, optional, tag = "3")]
23735    pub self_size: ::core::option::Option<u64>,
23736    /// Add this to all non-zero values in reference_object_id. This is used to
23737    /// get more compact varint encoding.
23738    ///
23739    /// The name is confusing, but this has always been used as a base for
23740    /// reference_object_id. The field should be named reference_object_id_base.
23741    #[prost(uint64, optional, tag = "6")]
23742    pub reference_field_id_base: ::core::option::Option<u64>,
23743    /// Indices for InternedData.field_names for the name of the field referring
23744    /// to the object. For Android S+ and for instances of normal classes (e.g.
23745    /// not instances of java.lang.Class or arrays), this is instead set in the
23746    /// corresponding HeapGraphType, and this is left empty.
23747    #[prost(uint64, repeated, tag = "4")]
23748    pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
23749    /// Ids of the Object that is referred to.
23750    #[prost(uint64, repeated, tag = "5")]
23751    pub reference_object_id: ::prost::alloc::vec::Vec<u64>,
23752    /// If this object is an instance of `libcore.util.NativeAllocationRegistry`,
23753    /// the value of the `size` field.
23754    ///
23755    /// N.B. This is not the native size of this object.
23756    #[prost(int64, optional, tag = "8")]
23757    pub native_allocation_registry_size_field: ::core::option::Option<i64>,
23758    #[prost(oneof = "heap_graph_object::Identifier", tags = "1, 7")]
23759    pub identifier: ::core::option::Option<heap_graph_object::Identifier>,
23760}
23761/// Nested message and enum types in `HeapGraphObject`.
23762pub mod heap_graph_object {
23763    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
23764    pub enum Identifier {
23765        #[prost(uint64, tag = "1")]
23766        Id(u64),
23767        #[prost(uint64, tag = "7")]
23768        IdDelta(u64),
23769    }
23770}
23771#[derive(Clone, PartialEq, ::prost::Message)]
23772pub struct HeapGraph {
23773    #[prost(int32, optional, tag = "1")]
23774    pub pid: ::core::option::Option<i32>,
23775    /// This contains all objects at the time this dump was taken. Some of these
23776    /// will be live, some of those unreachable (garbage). To find the live
23777    /// objects, the client needs to build the transitive closure of objects
23778    /// reachable from |roots|.
23779    /// All objects not contained within that transitive closure are garbage that
23780    /// has not yet been collected.
23781    #[prost(message, repeated, tag = "2")]
23782    pub objects: ::prost::alloc::vec::Vec<HeapGraphObject>,
23783    /// Roots at the time this dump was taken.
23784    /// All live objects are reachable from the roots. All other objects are
23785    /// garbage.
23786    #[prost(message, repeated, tag = "7")]
23787    pub roots: ::prost::alloc::vec::Vec<HeapGraphRoot>,
23788    /// Types used in HeapGraphObjects.
23789    #[prost(message, repeated, tag = "9")]
23790    pub types: ::prost::alloc::vec::Vec<HeapGraphType>,
23791    /// Field names for references in managed heap graph.
23792    #[prost(message, repeated, tag = "4")]
23793    pub field_names: ::prost::alloc::vec::Vec<InternedString>,
23794    /// Paths of files used in managed heap graph.
23795    #[prost(message, repeated, tag = "8")]
23796    pub location_names: ::prost::alloc::vec::Vec<InternedString>,
23797    #[prost(bool, optional, tag = "5")]
23798    pub continued: ::core::option::Option<bool>,
23799    #[prost(uint64, optional, tag = "6")]
23800    pub index: ::core::option::Option<u64>,
23801}
23802/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
23803/// involve more than one ProfilePacket if the snapshot is big (when |continued|
23804/// is true). The cardinality and grouping is as follows:
23805/// A ProfilePacket contains:
23806///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
23807///     one heap per process (the main malloc/free heap), but there can be more if
23808///     the process is using the heapprofd API to profile custom allocators.
23809///   - Globally interned strings, mappings and frames (to allow de-duplicating
23810///     frames/mapping in common between different processes).
23811/// A ProcessHeapSamples contains:
23812///   - The process and heap identifier.
23813///   - A number of HeapSample, one for each callsite that had some alloc/frees.
23814///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
23815/// A HeapSample contains statistics about callsites:
23816///   - Total number of bytes allocated and freed from that callsite.
23817///   - Total number of alloc/free calls sampled.
23818///   - Stats at the local maximum when dump_at_max = true.
23819/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
23820#[derive(Clone, PartialEq, ::prost::Message)]
23821pub struct ProfilePacket {
23822    /// The following interning tables are only used in Android version Q.
23823    /// In newer versions, these tables are in InternedData
23824    /// (see protos/perfetto/trace/interned_data) and are shared across
23825    /// multiple ProfilePackets.
23826    /// For backwards compatibility, consumers need to first look up interned
23827    /// data in the tables within the ProfilePacket, and then, if they are empty,
23828    /// look up in the InternedData instead.
23829    #[prost(message, repeated, tag = "1")]
23830    pub strings: ::prost::alloc::vec::Vec<InternedString>,
23831    #[prost(message, repeated, tag = "4")]
23832    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
23833    #[prost(message, repeated, tag = "2")]
23834    pub frames: ::prost::alloc::vec::Vec<Frame>,
23835    #[prost(message, repeated, tag = "3")]
23836    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
23837    #[prost(message, repeated, tag = "5")]
23838    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
23839    /// If this is true, the next ProfilePacket in this package_sequence_id is a
23840    /// continuation of this one.
23841    /// To get all samples for a process, accummulate its
23842    /// ProcessHeapSamples.samples until you see continued=false.
23843    #[prost(bool, optional, tag = "6")]
23844    pub continued: ::core::option::Option<bool>,
23845    /// Index of this ProfilePacket on its package_sequence_id. Can be used
23846    /// to detect dropped data.
23847    /// Verify these are consecutive.
23848    #[prost(uint64, optional, tag = "7")]
23849    pub index: ::core::option::Option<u64>,
23850}
23851/// Nested message and enum types in `ProfilePacket`.
23852pub mod profile_packet {
23853    /// Next ID: 9
23854    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
23855    pub struct HeapSample {
23856        #[prost(uint64, optional, tag = "1")]
23857        pub callstack_id: ::core::option::Option<u64>,
23858        /// bytes allocated at this callstack.
23859        #[prost(uint64, optional, tag = "2")]
23860        pub self_allocated: ::core::option::Option<u64>,
23861        /// bytes allocated at this callstack that have been freed.
23862        #[prost(uint64, optional, tag = "3")]
23863        pub self_freed: ::core::option::Option<u64>,
23864        /// Bytes allocated by this callstack but not freed at the time the malloc
23865        /// heap usage of this process was maximal. This is only set if dump_at_max
23866        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
23867        /// self_idle will not be set.
23868        #[prost(uint64, optional, tag = "8")]
23869        pub self_max: ::core::option::Option<u64>,
23870        /// Number of allocations that were sampled at this callstack but not freed
23871        /// at the time the malloc heap usage of this process was maximal. This is
23872        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
23873        /// self_allocated, self_freed and self_idle will not be set.
23874        #[prost(uint64, optional, tag = "9")]
23875        pub self_max_count: ::core::option::Option<u64>,
23876        /// timestamp \[opt\]
23877        #[prost(uint64, optional, tag = "4")]
23878        pub timestamp: ::core::option::Option<u64>,
23879        /// Number of allocations that were sampled at this callstack.
23880        #[prost(uint64, optional, tag = "5")]
23881        pub alloc_count: ::core::option::Option<u64>,
23882        /// Number of allocations that were sampled at this callstack that have been
23883        /// freed.
23884        #[prost(uint64, optional, tag = "6")]
23885        pub free_count: ::core::option::Option<u64>,
23886    }
23887    #[derive(Clone, PartialEq, ::prost::Message)]
23888    pub struct Histogram {
23889        #[prost(message, repeated, tag = "1")]
23890        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
23891    }
23892    /// Nested message and enum types in `Histogram`.
23893    pub mod histogram {
23894        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
23895        pub struct Bucket {
23896            /// This bucket counts values from the previous bucket's (or -infinity if
23897            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
23898            /// (exclusive).
23899            #[prost(uint64, optional, tag = "1")]
23900            pub upper_limit: ::core::option::Option<u64>,
23901            /// This is the highest bucket. This is set instead of the upper_limit. Any
23902            /// values larger or equal to the previous bucket's upper_limit are counted
23903            /// in this bucket.
23904            #[prost(bool, optional, tag = "2")]
23905            pub max_bucket: ::core::option::Option<bool>,
23906            /// Number of values that fall into this range.
23907            #[prost(uint64, optional, tag = "3")]
23908            pub count: ::core::option::Option<u64>,
23909        }
23910    }
23911    #[derive(Clone, PartialEq, ::prost::Message)]
23912    pub struct ProcessStats {
23913        #[prost(uint64, optional, tag = "1")]
23914        pub unwinding_errors: ::core::option::Option<u64>,
23915        #[prost(uint64, optional, tag = "2")]
23916        pub heap_samples: ::core::option::Option<u64>,
23917        #[prost(uint64, optional, tag = "3")]
23918        pub map_reparses: ::core::option::Option<u64>,
23919        #[prost(message, optional, tag = "4")]
23920        pub unwinding_time_us: ::core::option::Option<Histogram>,
23921        #[prost(uint64, optional, tag = "5")]
23922        pub total_unwinding_time_us: ::core::option::Option<u64>,
23923        #[prost(uint64, optional, tag = "6")]
23924        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
23925    }
23926    #[derive(Clone, PartialEq, ::prost::Message)]
23927    pub struct ProcessHeapSamples {
23928        #[prost(uint64, optional, tag = "1")]
23929        pub pid: ::core::option::Option<u64>,
23930        /// This process was profiled from startup.
23931        /// If false, this process was already running when profiling started.
23932        #[prost(bool, optional, tag = "3")]
23933        pub from_startup: ::core::option::Option<bool>,
23934        /// This process was not profiled because a concurrent session was active.
23935        /// If this is true, samples will be empty.
23936        #[prost(bool, optional, tag = "4")]
23937        pub rejected_concurrent: ::core::option::Option<bool>,
23938        /// This process disconnected while it was profiled.
23939        /// If false, the process outlived the profiling session.
23940        #[prost(bool, optional, tag = "6")]
23941        pub disconnected: ::core::option::Option<bool>,
23942        /// If disconnected, this disconnect was caused by the client overrunning
23943        /// the buffer.
23944        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
23945        /// on new S builds.
23946        #[prost(bool, optional, tag = "7")]
23947        pub buffer_overran: ::core::option::Option<bool>,
23948        #[prost(
23949            enumeration = "process_heap_samples::ClientError",
23950            optional,
23951            tag = "14"
23952        )]
23953        pub client_error: ::core::option::Option<i32>,
23954        /// If disconnected, this disconnected was caused by the shared memory
23955        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
23956        /// MEMORY CORRUPTION.
23957        #[prost(bool, optional, tag = "8")]
23958        pub buffer_corrupted: ::core::option::Option<bool>,
23959        /// If disconnected, this disconnect was caused by heapprofd exceeding
23960        /// guardrails during this profiling session.
23961        #[prost(bool, optional, tag = "10")]
23962        pub hit_guardrail: ::core::option::Option<bool>,
23963        #[prost(string, optional, tag = "11")]
23964        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
23965        #[prost(uint64, optional, tag = "12")]
23966        pub sampling_interval_bytes: ::core::option::Option<u64>,
23967        #[prost(uint64, optional, tag = "13")]
23968        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
23969        /// Timestamp of the state of the target process that this dump represents.
23970        /// This can be different to the timestamp of the TracePackets for various
23971        /// reasons:
23972        /// * If disconnected is set above, this is the timestamp of last state
23973        ///    heapprofd had of the process before it disconnected.
23974        /// * Otherwise, if the rate of events produced by the process is high,
23975        ///    heapprofd might be behind.
23976        ///
23977        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
23978        ///                to have a type enum that we can reuse here.
23979        #[prost(uint64, optional, tag = "9")]
23980        pub timestamp: ::core::option::Option<u64>,
23981        /// Metadata about heapprofd.
23982        #[prost(message, optional, tag = "5")]
23983        pub stats: ::core::option::Option<ProcessStats>,
23984        #[prost(message, repeated, tag = "2")]
23985        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
23986    }
23987    /// Nested message and enum types in `ProcessHeapSamples`.
23988    pub mod process_heap_samples {
23989        #[derive(
23990            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
23991        )]
23992        #[repr(i32)]
23993        pub enum ClientError {
23994            None = 0,
23995            HitTimeout = 1,
23996            InvalidStackBounds = 2,
23997        }
23998        impl ClientError {
23999            /// String value of the enum field names used in the ProtoBuf definition.
24000            ///
24001            /// The values are not transformed in any way and thus are considered stable
24002            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24003            pub fn as_str_name(&self) -> &'static str {
24004                match self {
24005                    Self::None => "CLIENT_ERROR_NONE",
24006                    Self::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
24007                    Self::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
24008                }
24009            }
24010            /// Creates an enum from field names used in the ProtoBuf definition.
24011            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24012                match value {
24013                    "CLIENT_ERROR_NONE" => Some(Self::None),
24014                    "CLIENT_ERROR_HIT_TIMEOUT" => Some(Self::HitTimeout),
24015                    "CLIENT_ERROR_INVALID_STACK_BOUNDS" => Some(Self::InvalidStackBounds),
24016                    _ => None,
24017                }
24018            }
24019        }
24020    }
24021}
24022/// Packet emitted by heapprofd when stream_allocations = true. Only for local
24023/// testing. Doesn't report the callsite.
24024#[derive(Clone, PartialEq, ::prost::Message)]
24025pub struct StreamingAllocation {
24026    /// TODO(fmayer): Add callstack.
24027    #[prost(uint64, repeated, packed = "false", tag = "1")]
24028    pub address: ::prost::alloc::vec::Vec<u64>,
24029    #[prost(uint64, repeated, packed = "false", tag = "2")]
24030    pub size: ::prost::alloc::vec::Vec<u64>,
24031    #[prost(uint64, repeated, packed = "false", tag = "3")]
24032    pub sample_size: ::prost::alloc::vec::Vec<u64>,
24033    #[prost(uint64, repeated, packed = "false", tag = "4")]
24034    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
24035    #[prost(uint32, repeated, packed = "false", tag = "5")]
24036    pub heap_id: ::prost::alloc::vec::Vec<u32>,
24037    #[prost(uint64, repeated, packed = "false", tag = "6")]
24038    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
24039}
24040/// Packet emitted by heapprofd when stream_allocations = true. Only for local
24041/// testing. Doesn't report the callsite.
24042#[derive(Clone, PartialEq, ::prost::Message)]
24043pub struct StreamingFree {
24044    /// TODO(fmayer): Add callstack.
24045    #[prost(uint64, repeated, packed = "false", tag = "1")]
24046    pub address: ::prost::alloc::vec::Vec<u64>,
24047    #[prost(uint32, repeated, packed = "false", tag = "2")]
24048    pub heap_id: ::prost::alloc::vec::Vec<u32>,
24049    #[prost(uint64, repeated, packed = "false", tag = "3")]
24050    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
24051}
24052/// Packet emitted by the chromium in-process signal-based callstack sampler.
24053/// Represents a series of individual stack samples (sampled at discrete points
24054/// in time), rather than aggregated over an interval.
24055#[derive(Clone, PartialEq, ::prost::Message)]
24056pub struct StreamingProfilePacket {
24057    /// Index into InternedData.callstacks
24058    #[prost(uint64, repeated, packed = "false", tag = "1")]
24059    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
24060    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
24061    /// this with ClockSnapshot-based delta encoding instead.
24062    #[prost(int64, repeated, packed = "false", tag = "2")]
24063    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
24064    #[prost(int32, optional, tag = "3")]
24065    pub process_priority: ::core::option::Option<i32>,
24066}
24067/// Namespace for the contained enums.
24068#[derive(Clone, Copy, PartialEq, ::prost::Message)]
24069pub struct Profiling {}
24070/// Nested message and enum types in `Profiling`.
24071pub mod profiling {
24072    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24073    #[repr(i32)]
24074    pub enum CpuMode {
24075        ModeUnknown = 0,
24076        ModeKernel = 1,
24077        ModeUser = 2,
24078        /// The following values aren't expected, but included for completeness:
24079        ModeHypervisor = 3,
24080        ModeGuestKernel = 4,
24081        ModeGuestUser = 5,
24082    }
24083    impl CpuMode {
24084        /// String value of the enum field names used in the ProtoBuf definition.
24085        ///
24086        /// The values are not transformed in any way and thus are considered stable
24087        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24088        pub fn as_str_name(&self) -> &'static str {
24089            match self {
24090                Self::ModeUnknown => "MODE_UNKNOWN",
24091                Self::ModeKernel => "MODE_KERNEL",
24092                Self::ModeUser => "MODE_USER",
24093                Self::ModeHypervisor => "MODE_HYPERVISOR",
24094                Self::ModeGuestKernel => "MODE_GUEST_KERNEL",
24095                Self::ModeGuestUser => "MODE_GUEST_USER",
24096            }
24097        }
24098        /// Creates an enum from field names used in the ProtoBuf definition.
24099        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24100            match value {
24101                "MODE_UNKNOWN" => Some(Self::ModeUnknown),
24102                "MODE_KERNEL" => Some(Self::ModeKernel),
24103                "MODE_USER" => Some(Self::ModeUser),
24104                "MODE_HYPERVISOR" => Some(Self::ModeHypervisor),
24105                "MODE_GUEST_KERNEL" => Some(Self::ModeGuestKernel),
24106                "MODE_GUEST_USER" => Some(Self::ModeGuestUser),
24107                _ => None,
24108            }
24109        }
24110    }
24111    /// Enumeration of libunwindstack's error codes.
24112    /// NB: the integral representations of the two enums are different.
24113    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24114    #[repr(i32)]
24115    pub enum StackUnwindError {
24116        UnwindErrorUnknown = 0,
24117        UnwindErrorNone = 1,
24118        UnwindErrorMemoryInvalid = 2,
24119        UnwindErrorUnwindInfo = 3,
24120        UnwindErrorUnsupported = 4,
24121        UnwindErrorInvalidMap = 5,
24122        UnwindErrorMaxFramesExceeded = 6,
24123        UnwindErrorRepeatedFrame = 7,
24124        UnwindErrorInvalidElf = 8,
24125        UnwindErrorSystemCall = 9,
24126        UnwindErrorThreadTimeout = 10,
24127        UnwindErrorThreadDoesNotExist = 11,
24128        UnwindErrorBadArch = 12,
24129        UnwindErrorMapsParse = 13,
24130        UnwindErrorInvalidParameter = 14,
24131        UnwindErrorPtraceCall = 15,
24132    }
24133    impl StackUnwindError {
24134        /// String value of the enum field names used in the ProtoBuf definition.
24135        ///
24136        /// The values are not transformed in any way and thus are considered stable
24137        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24138        pub fn as_str_name(&self) -> &'static str {
24139            match self {
24140                Self::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
24141                Self::UnwindErrorNone => "UNWIND_ERROR_NONE",
24142                Self::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
24143                Self::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
24144                Self::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
24145                Self::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
24146                Self::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
24147                Self::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
24148                Self::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
24149                Self::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
24150                Self::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
24151                Self::UnwindErrorThreadDoesNotExist => "UNWIND_ERROR_THREAD_DOES_NOT_EXIST",
24152                Self::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
24153                Self::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
24154                Self::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
24155                Self::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
24156            }
24157        }
24158        /// Creates an enum from field names used in the ProtoBuf definition.
24159        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24160            match value {
24161                "UNWIND_ERROR_UNKNOWN" => Some(Self::UnwindErrorUnknown),
24162                "UNWIND_ERROR_NONE" => Some(Self::UnwindErrorNone),
24163                "UNWIND_ERROR_MEMORY_INVALID" => Some(Self::UnwindErrorMemoryInvalid),
24164                "UNWIND_ERROR_UNWIND_INFO" => Some(Self::UnwindErrorUnwindInfo),
24165                "UNWIND_ERROR_UNSUPPORTED" => Some(Self::UnwindErrorUnsupported),
24166                "UNWIND_ERROR_INVALID_MAP" => Some(Self::UnwindErrorInvalidMap),
24167                "UNWIND_ERROR_MAX_FRAMES_EXCEEDED" => Some(Self::UnwindErrorMaxFramesExceeded),
24168                "UNWIND_ERROR_REPEATED_FRAME" => Some(Self::UnwindErrorRepeatedFrame),
24169                "UNWIND_ERROR_INVALID_ELF" => Some(Self::UnwindErrorInvalidElf),
24170                "UNWIND_ERROR_SYSTEM_CALL" => Some(Self::UnwindErrorSystemCall),
24171                "UNWIND_ERROR_THREAD_TIMEOUT" => Some(Self::UnwindErrorThreadTimeout),
24172                "UNWIND_ERROR_THREAD_DOES_NOT_EXIST" => Some(Self::UnwindErrorThreadDoesNotExist),
24173                "UNWIND_ERROR_BAD_ARCH" => Some(Self::UnwindErrorBadArch),
24174                "UNWIND_ERROR_MAPS_PARSE" => Some(Self::UnwindErrorMapsParse),
24175                "UNWIND_ERROR_INVALID_PARAMETER" => Some(Self::UnwindErrorInvalidParameter),
24176                "UNWIND_ERROR_PTRACE_CALL" => Some(Self::UnwindErrorPtraceCall),
24177                _ => None,
24178            }
24179        }
24180    }
24181}
24182/// Packet emitted by the traced_perf sampling performance profiler, which
24183/// gathers data via the perf_event_open syscall. Each packet contains an
24184/// individual sample with a counter value, and optionally a
24185/// callstack.
24186///
24187/// Timestamps are within the root packet. The config can specify the clock, or
24188/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
24189/// timeframe, the default was CLOCK_BOOTTIME.
24190///
24191/// There are several distinct views of this message:
24192/// * indication of kernel buffer data loss (kernel_records_lost set)
24193/// * indication of skipped samples (sample_skipped_reason set)
24194/// * notable event in the sampling implementation (producer_event set)
24195/// * normal sample (timebase_count set, typically also callstack_iid)
24196#[derive(Clone, Copy, PartialEq, ::prost::Message)]
24197pub struct PerfSample {
24198    #[prost(uint32, optional, tag = "1")]
24199    pub cpu: ::core::option::Option<u32>,
24200    #[prost(uint32, optional, tag = "2")]
24201    pub pid: ::core::option::Option<u32>,
24202    #[prost(uint32, optional, tag = "3")]
24203    pub tid: ::core::option::Option<u32>,
24204    /// Execution state that the process was sampled at.
24205    #[prost(enumeration = "profiling::CpuMode", optional, tag = "5")]
24206    pub cpu_mode: ::core::option::Option<i32>,
24207    /// Value of the timebase counter (since the event was configured, no deltas).
24208    #[prost(uint64, optional, tag = "6")]
24209    pub timebase_count: ::core::option::Option<u64>,
24210    /// Unwound callstack. Might be partial, in which case a synthetic "error"
24211    /// frame is appended, and |unwind_error| is set accordingly.
24212    #[prost(uint64, optional, tag = "4")]
24213    pub callstack_iid: ::core::option::Option<u64>,
24214    /// If set, indicates that this message is not a sample, but rather an
24215    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
24216    /// loss occurs when the kernel has insufficient ring buffer capacity to write
24217    /// a record (which gets discarded). A record in this context is an individual
24218    /// ring buffer entry, and counts more than just sample records.
24219    ///
24220    /// The |timestamp| of the packet corresponds to the time that the producer
24221    /// wrote the packet for trace-sorting purposes alone, and should not be
24222    /// interpreted relative to the sample timestamps. This field is sufficient to
24223    /// detect that *some* kernel data loss happened within the trace, but not the
24224    /// specific time bounds of that loss (which would require tracking precedessor
24225    /// & successor timestamps, which is not deemed necessary at the moment).
24226    #[prost(uint64, optional, tag = "17")]
24227    pub kernel_records_lost: ::core::option::Option<u64>,
24228    #[prost(message, optional, tag = "19")]
24229    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
24230    /// If set, stack unwinding was incomplete due to an error.
24231    /// Unset values should be treated as UNWIND_ERROR_NONE.
24232    #[prost(oneof = "perf_sample::OptionalUnwindError", tags = "16")]
24233    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
24234    #[prost(oneof = "perf_sample::OptionalSampleSkippedReason", tags = "18")]
24235    pub optional_sample_skipped_reason:
24236        ::core::option::Option<perf_sample::OptionalSampleSkippedReason>,
24237}
24238/// Nested message and enum types in `PerfSample`.
24239pub mod perf_sample {
24240    /// A notable event within the sampling implementation.
24241    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
24242    pub struct ProducerEvent {
24243        #[prost(oneof = "producer_event::OptionalSourceStopReason", tags = "1")]
24244        pub optional_source_stop_reason:
24245            ::core::option::Option<producer_event::OptionalSourceStopReason>,
24246    }
24247    /// Nested message and enum types in `ProducerEvent`.
24248    pub mod producer_event {
24249        #[derive(
24250            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
24251        )]
24252        #[repr(i32)]
24253        pub enum DataSourceStopReason {
24254            ProfilerStopUnknown = 0,
24255            ProfilerStopGuardrail = 1,
24256        }
24257        impl DataSourceStopReason {
24258            /// String value of the enum field names used in the ProtoBuf definition.
24259            ///
24260            /// The values are not transformed in any way and thus are considered stable
24261            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24262            pub fn as_str_name(&self) -> &'static str {
24263                match self {
24264                    Self::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
24265                    Self::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
24266                }
24267            }
24268            /// Creates an enum from field names used in the ProtoBuf definition.
24269            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24270                match value {
24271                    "PROFILER_STOP_UNKNOWN" => Some(Self::ProfilerStopUnknown),
24272                    "PROFILER_STOP_GUARDRAIL" => Some(Self::ProfilerStopGuardrail),
24273                    _ => None,
24274                }
24275            }
24276        }
24277        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
24278        pub enum OptionalSourceStopReason {
24279            #[prost(enumeration = "DataSourceStopReason", tag = "1")]
24280            SourceStopReason(i32),
24281        }
24282    }
24283    /// If set, indicates that the profiler encountered a sample that was relevant,
24284    /// but was skipped.
24285    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24286    #[repr(i32)]
24287    pub enum SampleSkipReason {
24288        ProfilerSkipUnknown = 0,
24289        ProfilerSkipReadStage = 1,
24290        ProfilerSkipUnwindStage = 2,
24291        ProfilerSkipUnwindEnqueue = 3,
24292    }
24293    impl SampleSkipReason {
24294        /// String value of the enum field names used in the ProtoBuf definition.
24295        ///
24296        /// The values are not transformed in any way and thus are considered stable
24297        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24298        pub fn as_str_name(&self) -> &'static str {
24299            match self {
24300                Self::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
24301                Self::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
24302                Self::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
24303                Self::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
24304            }
24305        }
24306        /// Creates an enum from field names used in the ProtoBuf definition.
24307        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24308            match value {
24309                "PROFILER_SKIP_UNKNOWN" => Some(Self::ProfilerSkipUnknown),
24310                "PROFILER_SKIP_READ_STAGE" => Some(Self::ProfilerSkipReadStage),
24311                "PROFILER_SKIP_UNWIND_STAGE" => Some(Self::ProfilerSkipUnwindStage),
24312                "PROFILER_SKIP_UNWIND_ENQUEUE" => Some(Self::ProfilerSkipUnwindEnqueue),
24313                _ => None,
24314            }
24315        }
24316    }
24317    /// If set, stack unwinding was incomplete due to an error.
24318    /// Unset values should be treated as UNWIND_ERROR_NONE.
24319    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
24320    pub enum OptionalUnwindError {
24321        #[prost(enumeration = "super::profiling::StackUnwindError", tag = "16")]
24322        UnwindError(i32),
24323    }
24324    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
24325    pub enum OptionalSampleSkippedReason {
24326        #[prost(enumeration = "SampleSkipReason", tag = "18")]
24327        SampleSkippedReason(i32),
24328    }
24329}
24330/// Submessage for TracePacketDefaults.
24331#[derive(Clone, PartialEq, ::prost::Message)]
24332pub struct PerfSampleDefaults {
24333    /// The sampling timebase. Might not be identical to the data source config if
24334    /// the implementation decided to default/override some parameters.
24335    #[prost(message, optional, tag = "1")]
24336    pub timebase: ::core::option::Option<perf_events::Timebase>,
24337    /// If the config requested process sharding, report back the count and which
24338    /// of those bins was selected. Never changes for the duration of a trace.
24339    #[prost(uint32, optional, tag = "2")]
24340    pub process_shard_count: ::core::option::Option<u32>,
24341    #[prost(uint32, optional, tag = "3")]
24342    pub chosen_process_shard: ::core::option::Option<u32>,
24343}
24344#[derive(Clone, PartialEq, ::prost::Message)]
24345pub struct SmapsEntry {
24346    #[prost(string, optional, tag = "1")]
24347    pub path: ::core::option::Option<::prost::alloc::string::String>,
24348    #[prost(uint64, optional, tag = "2")]
24349    pub size_kb: ::core::option::Option<u64>,
24350    #[prost(uint64, optional, tag = "3")]
24351    pub private_dirty_kb: ::core::option::Option<u64>,
24352    #[prost(uint64, optional, tag = "4")]
24353    pub swap_kb: ::core::option::Option<u64>,
24354    /// for field upload (instead of path).
24355    #[prost(string, optional, tag = "5")]
24356    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
24357    /// TODO(crbug.com/1098746): Consider encoding this as incremental values.
24358    #[prost(uint64, optional, tag = "6")]
24359    pub start_address: ::core::option::Option<u64>,
24360    #[prost(uint64, optional, tag = "7")]
24361    pub module_timestamp: ::core::option::Option<u64>,
24362    #[prost(string, optional, tag = "8")]
24363    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
24364    #[prost(string, optional, tag = "9")]
24365    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
24366    #[prost(uint32, optional, tag = "10")]
24367    pub protection_flags: ::core::option::Option<u32>,
24368    #[prost(uint64, optional, tag = "11")]
24369    pub private_clean_resident_kb: ::core::option::Option<u64>,
24370    #[prost(uint64, optional, tag = "12")]
24371    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
24372    #[prost(uint64, optional, tag = "13")]
24373    pub shared_clean_resident_kb: ::core::option::Option<u64>,
24374    #[prost(uint64, optional, tag = "14")]
24375    pub locked_kb: ::core::option::Option<u64>,
24376    #[prost(uint64, optional, tag = "15")]
24377    pub proportional_resident_kb: ::core::option::Option<u64>,
24378}
24379#[derive(Clone, PartialEq, ::prost::Message)]
24380pub struct SmapsPacket {
24381    #[prost(uint32, optional, tag = "1")]
24382    pub pid: ::core::option::Option<u32>,
24383    #[prost(message, repeated, tag = "2")]
24384    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
24385}
24386/// Per-process periodically sampled stats. These samples are wrapped in a
24387/// dedicated message (as opposite to be fields in process_tree.proto) because
24388/// they are dumped at a different rate than cmdline and thread list.
24389/// Note: not all of these stats will be present in every ProcessStats message
24390/// and sometimes processes may be missing. This is because counters are
24391/// cached to reduce emission of counters which do not change.
24392#[derive(Clone, PartialEq, ::prost::Message)]
24393pub struct ProcessStats {
24394    #[prost(message, repeated, tag = "1")]
24395    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
24396    /// The time at which we finish collecting this batch of samples;
24397    /// the top-level packet timestamp is the time at which
24398    /// we begin collection.
24399    #[prost(uint64, optional, tag = "2")]
24400    pub collection_end_timestamp: ::core::option::Option<u64>,
24401}
24402/// Nested message and enum types in `ProcessStats`.
24403pub mod process_stats {
24404    /// Per-thread periodically sampled stats.
24405    /// Note: not all of these stats will be present in every message. See the note
24406    /// for ProcessStats.
24407    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
24408    pub struct Thread {
24409        #[prost(int32, optional, tag = "1")]
24410        pub tid: ::core::option::Option<i32>,
24411    }
24412    #[derive(Clone, PartialEq, ::prost::Message)]
24413    pub struct FdInfo {
24414        #[prost(uint64, optional, tag = "1")]
24415        pub fd: ::core::option::Option<u64>,
24416        #[prost(string, optional, tag = "2")]
24417        pub path: ::core::option::Option<::prost::alloc::string::String>,
24418    }
24419    #[derive(Clone, PartialEq, ::prost::Message)]
24420    pub struct Process {
24421        #[prost(int32, optional, tag = "1")]
24422        pub pid: ::core::option::Option<i32>,
24423        #[prost(message, repeated, tag = "11")]
24424        pub threads: ::prost::alloc::vec::Vec<Thread>,
24425        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
24426        #[prost(uint64, optional, tag = "2")]
24427        pub vm_size_kb: ::core::option::Option<u64>,
24428        #[prost(uint64, optional, tag = "3")]
24429        pub vm_rss_kb: ::core::option::Option<u64>,
24430        #[prost(uint64, optional, tag = "4")]
24431        pub rss_anon_kb: ::core::option::Option<u64>,
24432        #[prost(uint64, optional, tag = "5")]
24433        pub rss_file_kb: ::core::option::Option<u64>,
24434        #[prost(uint64, optional, tag = "6")]
24435        pub rss_shmem_kb: ::core::option::Option<u64>,
24436        #[prost(uint64, optional, tag = "7")]
24437        pub vm_swap_kb: ::core::option::Option<u64>,
24438        #[prost(uint64, optional, tag = "8")]
24439        pub vm_locked_kb: ::core::option::Option<u64>,
24440        /// When adding a new field remember to update kProcMemCounterSize in
24441        /// the trace processor.
24442        #[prost(uint64, optional, tag = "9")]
24443        pub vm_hwm_kb: ::core::option::Option<u64>,
24444        #[prost(int64, optional, tag = "10")]
24445        pub oom_score_adj: ::core::option::Option<i64>,
24446        /// The peak resident set size is resettable in newer Posix kernels.
24447        /// This field specifies if reset is supported and if the writer had reset
24448        /// the peaks after each process stats recording.
24449        #[prost(bool, optional, tag = "12")]
24450        pub is_peak_rss_resettable: ::core::option::Option<bool>,
24451        /// Private, shared and swap footprint of the process as measured by
24452        /// Chrome. To know more about these metrics refer to:
24453        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
24454        #[prost(uint32, optional, tag = "13")]
24455        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
24456        #[prost(uint32, optional, tag = "14")]
24457        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
24458        #[prost(message, repeated, tag = "15")]
24459        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
24460        /// These fields are set only when scan_smaps_rollup=true
24461        #[prost(uint64, optional, tag = "16")]
24462        pub smr_rss_kb: ::core::option::Option<u64>,
24463        #[prost(uint64, optional, tag = "17")]
24464        pub smr_pss_kb: ::core::option::Option<u64>,
24465        #[prost(uint64, optional, tag = "18")]
24466        pub smr_pss_anon_kb: ::core::option::Option<u64>,
24467        #[prost(uint64, optional, tag = "19")]
24468        pub smr_pss_file_kb: ::core::option::Option<u64>,
24469        #[prost(uint64, optional, tag = "20")]
24470        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
24471        #[prost(uint64, optional, tag = "23")]
24472        pub smr_swap_pss_kb: ::core::option::Option<u64>,
24473        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
24474        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
24475        /// Resolution of "clock ticks", usually 10ms.
24476        #[prost(uint64, optional, tag = "21")]
24477        pub runtime_user_mode: ::core::option::Option<u64>,
24478        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
24479        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
24480        /// Resolution of "clock ticks", usually 10ms.
24481        #[prost(uint64, optional, tag = "22")]
24482        pub runtime_kernel_mode: ::core::option::Option<u64>,
24483    }
24484}
24485/// Metadata about the processes and threads in the trace.
24486/// Note: this proto was designed to be filled in by traced_probes and should
24487/// only be populated with accurate information coming from the system. Other
24488/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
24489/// in TrackDescriptor.
24490#[derive(Clone, PartialEq, ::prost::Message)]
24491pub struct ProcessTree {
24492    /// List of processes and threads in the client. These lists are incremental
24493    /// and not exhaustive. A process and its threads might show up separately in
24494    /// different ProcessTree messages. A thread might event not show up at all, if
24495    /// no sched_switch activity was detected, for instance:
24496    /// #0 { processes: \[{pid: 10, ...}\], threads: \[{pid: 11, tgid: 10}\] }
24497    /// #1 { threads: \[{pid: 12, tgid: 10}\] }
24498    /// #2 { processes: \[{pid: 20, ...}\], threads: \[{pid: 13, tgid: 10}\] }
24499    #[prost(message, repeated, tag = "1")]
24500    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
24501    #[prost(message, repeated, tag = "2")]
24502    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
24503    /// The time at which we finish collecting this process tree;
24504    /// the top-level packet timestamp is the time at which
24505    /// we begin collection.
24506    #[prost(uint64, optional, tag = "3")]
24507    pub collection_end_timestamp: ::core::option::Option<u64>,
24508}
24509/// Nested message and enum types in `ProcessTree`.
24510pub mod process_tree {
24511    /// Representation of a thread.
24512    #[derive(Clone, PartialEq, ::prost::Message)]
24513    pub struct Thread {
24514        /// The thread ID (as per gettid()) in the root PID namespace.
24515        #[prost(int32, optional, tag = "1")]
24516        pub tid: ::core::option::Option<i32>,
24517        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
24518        #[prost(int32, optional, tag = "3")]
24519        pub tgid: ::core::option::Option<i32>,
24520        /// The name of the thread.
24521        #[prost(string, optional, tag = "2")]
24522        pub name: ::core::option::Option<::prost::alloc::string::String>,
24523        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
24524        /// from the NSpid entry of /proc/tid/status, with the first element (root-
24525        /// level thread ID) omitted.
24526        #[prost(int32, repeated, packed = "false", tag = "4")]
24527        pub nstid: ::prost::alloc::vec::Vec<i32>,
24528    }
24529    /// Representation of a process.
24530    #[derive(Clone, PartialEq, ::prost::Message)]
24531    pub struct Process {
24532        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
24533        /// PID namespace.
24534        #[prost(int32, optional, tag = "1")]
24535        pub pid: ::core::option::Option<i32>,
24536        /// The parent process ID, as per getppid().
24537        #[prost(int32, optional, tag = "2")]
24538        pub ppid: ::core::option::Option<i32>,
24539        /// The command line for the process, as per /proc/pid/cmdline.
24540        /// If it is a kernel thread there will only be one cmdline field
24541        /// and it will contain /proc/pid/comm.
24542        #[prost(string, repeated, tag = "3")]
24543        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24544        /// The uid for the process, as per /proc/pid/status.
24545        #[prost(int32, optional, tag = "5")]
24546        pub uid: ::core::option::Option<i32>,
24547        /// The non-root-level process IDs if the process runs in a PID namespace.
24548        /// Read from the NSpid entry of /proc/pid/status, with the first element
24549        /// (root-level process ID) omitted.
24550        #[prost(int32, repeated, packed = "false", tag = "6")]
24551        pub nspid: ::prost::alloc::vec::Vec<i32>,
24552        /// Timestamp of when the process was created, in nanoseconds
24553        /// from boot. Parsed from starttime in /proc/pid/stat.
24554        /// Recorded if record_process_age config option is set.
24555        /// Resolution of "clock ticks", usually 10ms.
24556        #[prost(uint64, optional, tag = "7")]
24557        pub process_start_from_boot: ::core::option::Option<u64>,
24558    }
24559}
24560/// Records the parameters for aligning clock readings between machines.
24561#[derive(Clone, PartialEq, ::prost::Message)]
24562pub struct RemoteClockSync {
24563    #[prost(message, repeated, tag = "1")]
24564    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
24565}
24566/// Nested message and enum types in `RemoteClockSync`.
24567pub mod remote_clock_sync {
24568    /// Synchronized clock snapshots taken on both sides of the relay port (the
24569    /// tracing service and the relay service). A round of clock synchronization
24570    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
24571    /// snapshot -> client snapshot -> host snapshot.
24572    #[derive(Clone, PartialEq, ::prost::Message)]
24573    pub struct SyncedClocks {
24574        #[prost(message, optional, tag = "2")]
24575        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
24576        #[prost(message, optional, tag = "3")]
24577        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
24578    }
24579}
24580/// Various Linux system stat counters from /proc.
24581/// The fields in this message can be reported at different rates and with
24582/// different granularity. See sys_stats_config.proto.
24583#[derive(Clone, PartialEq, ::prost::Message)]
24584pub struct SysStats {
24585    #[prost(message, repeated, tag = "1")]
24586    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
24587    #[prost(message, repeated, tag = "2")]
24588    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
24589    /// One entry per cpu.
24590    #[prost(message, repeated, tag = "3")]
24591    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
24592    /// Num processes forked since boot.
24593    /// Populated only if FORK_COUNT in config.stat_counters.
24594    #[prost(uint64, optional, tag = "4")]
24595    pub num_forks: ::core::option::Option<u64>,
24596    /// Total num of irqs serviced since boot.
24597    #[prost(uint64, optional, tag = "5")]
24598    pub num_irq_total: ::core::option::Option<u64>,
24599    #[prost(message, repeated, tag = "6")]
24600    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
24601    /// Total num of softirqs since boot.
24602    #[prost(uint64, optional, tag = "7")]
24603    pub num_softirq_total: ::core::option::Option<u64>,
24604    /// Per-softirq count.
24605    #[prost(message, repeated, tag = "8")]
24606    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
24607    /// The time at which we finish collecting this set of samples;
24608    /// the top-level packet timestamp is the time at which
24609    /// we begin collection.
24610    #[prost(uint64, optional, tag = "9")]
24611    pub collection_end_timestamp: ::core::option::Option<u64>,
24612    /// One entry per device.
24613    #[prost(message, repeated, tag = "10")]
24614    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
24615    /// Cpu current frequency from
24616    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
24617    /// One entry per cpu. Report 0 for offline cpu
24618    #[prost(uint32, repeated, packed = "false", tag = "11")]
24619    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
24620    /// One entry per each node's zones.
24621    #[prost(message, repeated, tag = "12")]
24622    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
24623    /// One entry per disk device.
24624    #[prost(message, repeated, tag = "13")]
24625    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
24626    /// One entry per PsiResource type.
24627    #[prost(message, repeated, tag = "14")]
24628    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
24629}
24630/// Nested message and enum types in `SysStats`.
24631pub mod sys_stats {
24632    /// Counters from /proc/meminfo. Values are in KB.
24633    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
24634    pub struct MeminfoValue {
24635        #[prost(enumeration = "super::MeminfoCounters", optional, tag = "1")]
24636        pub key: ::core::option::Option<i32>,
24637        #[prost(uint64, optional, tag = "2")]
24638        pub value: ::core::option::Option<u64>,
24639    }
24640    /// Counter from /proc/vmstat. Units are often pages, not KB.
24641    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
24642    pub struct VmstatValue {
24643        #[prost(enumeration = "super::VmstatCounters", optional, tag = "1")]
24644        pub key: ::core::option::Option<i32>,
24645        #[prost(uint64, optional, tag = "2")]
24646        pub value: ::core::option::Option<u64>,
24647    }
24648    /// Times in each mode, since boot. Unit: nanoseconds.
24649    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
24650    pub struct CpuTimes {
24651        #[prost(uint32, optional, tag = "1")]
24652        pub cpu_id: ::core::option::Option<u32>,
24653        /// Time spent in user mode.
24654        #[prost(uint64, optional, tag = "2")]
24655        pub user_ns: ::core::option::Option<u64>,
24656        /// Time spent in user mode (low prio).
24657        #[prost(uint64, optional, tag = "3")]
24658        pub user_nice_ns: ::core::option::Option<u64>,
24659        /// Time spent in system mode.
24660        #[prost(uint64, optional, tag = "4")]
24661        pub system_mode_ns: ::core::option::Option<u64>,
24662        /// Time spent in the idle task.
24663        #[prost(uint64, optional, tag = "5")]
24664        pub idle_ns: ::core::option::Option<u64>,
24665        /// Time spent waiting for I/O.
24666        #[prost(uint64, optional, tag = "6")]
24667        pub io_wait_ns: ::core::option::Option<u64>,
24668        /// Time spent servicing interrupts.
24669        #[prost(uint64, optional, tag = "7")]
24670        pub irq_ns: ::core::option::Option<u64>,
24671        /// Time spent servicing softirqs.
24672        #[prost(uint64, optional, tag = "8")]
24673        pub softirq_ns: ::core::option::Option<u64>,
24674    }
24675    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
24676    pub struct InterruptCount {
24677        #[prost(int32, optional, tag = "1")]
24678        pub irq: ::core::option::Option<i32>,
24679        #[prost(uint64, optional, tag = "2")]
24680        pub count: ::core::option::Option<u64>,
24681    }
24682    /// Frequencies for /sys/class/devfreq/ entries in kHz.
24683    #[derive(Clone, PartialEq, ::prost::Message)]
24684    pub struct DevfreqValue {
24685        #[prost(string, optional, tag = "1")]
24686        pub key: ::core::option::Option<::prost::alloc::string::String>,
24687        #[prost(uint64, optional, tag = "2")]
24688        pub value: ::core::option::Option<u64>,
24689    }
24690    #[derive(Clone, PartialEq, ::prost::Message)]
24691    pub struct BuddyInfo {
24692        #[prost(string, optional, tag = "1")]
24693        pub node: ::core::option::Option<::prost::alloc::string::String>,
24694        #[prost(string, optional, tag = "2")]
24695        pub zone: ::core::option::Option<::prost::alloc::string::String>,
24696        #[prost(uint32, repeated, packed = "false", tag = "3")]
24697        pub order_pages: ::prost::alloc::vec::Vec<u32>,
24698    }
24699    /// Counters from /proc/diskstats.
24700    #[derive(Clone, PartialEq, ::prost::Message)]
24701    pub struct DiskStat {
24702        #[prost(string, optional, tag = "1")]
24703        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
24704        #[prost(uint64, optional, tag = "2")]
24705        pub read_sectors: ::core::option::Option<u64>,
24706        #[prost(uint64, optional, tag = "3")]
24707        pub read_time_ms: ::core::option::Option<u64>,
24708        #[prost(uint64, optional, tag = "4")]
24709        pub write_sectors: ::core::option::Option<u64>,
24710        #[prost(uint64, optional, tag = "5")]
24711        pub write_time_ms: ::core::option::Option<u64>,
24712        #[prost(uint64, optional, tag = "6")]
24713        pub discard_sectors: ::core::option::Option<u64>,
24714        #[prost(uint64, optional, tag = "7")]
24715        pub discard_time_ms: ::core::option::Option<u64>,
24716        #[prost(uint64, optional, tag = "8")]
24717        pub flush_count: ::core::option::Option<u64>,
24718        #[prost(uint64, optional, tag = "9")]
24719        pub flush_time_ms: ::core::option::Option<u64>,
24720    }
24721    /// Reading from /proc/pressure/*.
24722    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
24723    pub struct PsiSample {
24724        #[prost(enumeration = "psi_sample::PsiResource", optional, tag = "1")]
24725        pub resource: ::core::option::Option<i32>,
24726        /// Total absolute stall time (in nanos) for a given resource.
24727        /// While PSI readings are in micros, we store in nanos for consistency with
24728        /// most other time-based counters.
24729        #[prost(uint64, optional, tag = "2")]
24730        pub total_ns: ::core::option::Option<u64>,
24731    }
24732    /// Nested message and enum types in `PsiSample`.
24733    pub mod psi_sample {
24734        /// Type of resource that may have exhibited pressure stalls.
24735        ///     * _SOME indicates some resource tasks stalled.
24736        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
24737        #[derive(
24738            Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration,
24739        )]
24740        #[repr(i32)]
24741        pub enum PsiResource {
24742            Unspecified = 0,
24743            CpuSome = 1,
24744            CpuFull = 2,
24745            IoSome = 3,
24746            IoFull = 4,
24747            MemorySome = 5,
24748            MemoryFull = 6,
24749        }
24750        impl PsiResource {
24751            /// String value of the enum field names used in the ProtoBuf definition.
24752            ///
24753            /// The values are not transformed in any way and thus are considered stable
24754            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24755            pub fn as_str_name(&self) -> &'static str {
24756                match self {
24757                    Self::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
24758                    Self::CpuSome => "PSI_RESOURCE_CPU_SOME",
24759                    Self::CpuFull => "PSI_RESOURCE_CPU_FULL",
24760                    Self::IoSome => "PSI_RESOURCE_IO_SOME",
24761                    Self::IoFull => "PSI_RESOURCE_IO_FULL",
24762                    Self::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
24763                    Self::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
24764                }
24765            }
24766            /// Creates an enum from field names used in the ProtoBuf definition.
24767            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24768                match value {
24769                    "PSI_RESOURCE_UNSPECIFIED" => Some(Self::Unspecified),
24770                    "PSI_RESOURCE_CPU_SOME" => Some(Self::CpuSome),
24771                    "PSI_RESOURCE_CPU_FULL" => Some(Self::CpuFull),
24772                    "PSI_RESOURCE_IO_SOME" => Some(Self::IoSome),
24773                    "PSI_RESOURCE_IO_FULL" => Some(Self::IoFull),
24774                    "PSI_RESOURCE_MEMORY_SOME" => Some(Self::MemorySome),
24775                    "PSI_RESOURCE_MEMORY_FULL" => Some(Self::MemoryFull),
24776                    _ => None,
24777                }
24778            }
24779        }
24780    }
24781}
24782#[derive(Clone, PartialEq, ::prost::Message)]
24783pub struct Utsname {
24784    #[prost(string, optional, tag = "1")]
24785    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
24786    #[prost(string, optional, tag = "2")]
24787    pub version: ::core::option::Option<::prost::alloc::string::String>,
24788    #[prost(string, optional, tag = "3")]
24789    pub release: ::core::option::Option<::prost::alloc::string::String>,
24790    #[prost(string, optional, tag = "4")]
24791    pub machine: ::core::option::Option<::prost::alloc::string::String>,
24792}
24793#[derive(Clone, PartialEq, ::prost::Message)]
24794pub struct SystemInfo {
24795    #[prost(message, optional, tag = "1")]
24796    pub utsname: ::core::option::Option<Utsname>,
24797    #[prost(string, optional, tag = "2")]
24798    pub android_build_fingerprint: ::core::option::Option<::prost::alloc::string::String>,
24799    /// The SoC model from which trace is collected
24800    #[prost(string, optional, tag = "9")]
24801    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
24802    /// The version of traced (the same returned by `traced --version`).
24803    /// This is a human readable string with and its format varies depending on
24804    /// the build system and the repo (standalone vs AOSP).
24805    /// This is intended for human debugging only.
24806    #[prost(string, optional, tag = "4")]
24807    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
24808    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
24809    /// Introduced in Android T.
24810    #[prost(uint64, optional, tag = "5")]
24811    pub android_sdk_version: ::core::option::Option<u64>,
24812    /// Kernel page size - sysconf(_SC_PAGESIZE).
24813    #[prost(uint32, optional, tag = "6")]
24814    pub page_size: ::core::option::Option<u32>,
24815    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
24816    /// Might be different to the number of online cpus.
24817    /// Introduced in perfetto v44.
24818    #[prost(uint32, optional, tag = "8")]
24819    pub num_cpus: ::core::option::Option<u32>,
24820    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
24821    /// Introduced in v38 / Android V.
24822    #[prost(int32, optional, tag = "7")]
24823    pub timezone_off_mins: ::core::option::Option<i32>,
24824    /// Ticks per second - sysconf(_SC_CLK_TCK).
24825    /// Not serialised as of perfetto v44.
24826    #[prost(int64, optional, tag = "3")]
24827    pub hz: ::core::option::Option<i64>,
24828}
24829/// Information about CPUs from procfs and sysfs.
24830#[derive(Clone, PartialEq, ::prost::Message)]
24831pub struct CpuInfo {
24832    /// Describes available CPUs, one entry per CPU.
24833    #[prost(message, repeated, tag = "1")]
24834    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
24835}
24836/// Nested message and enum types in `CpuInfo`.
24837pub mod cpu_info {
24838    /// Information about a single CPU.
24839    #[derive(Clone, PartialEq, ::prost::Message)]
24840    pub struct Cpu {
24841        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
24842        /// Example: "AArch64 Processor rev 12 (aarch64)"
24843        #[prost(string, optional, tag = "1")]
24844        pub processor: ::core::option::Option<::prost::alloc::string::String>,
24845        /// Frequencies from
24846        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
24847        /// where X is the index of this CPU.
24848        #[prost(uint32, repeated, packed = "false", tag = "2")]
24849        pub frequencies: ::prost::alloc::vec::Vec<u32>,
24850    }
24851}
24852/// Default values for TracePacket fields that hold for a particular TraceWriter
24853/// packet sequence. This message contains a subset of the TracePacket fields
24854/// with matching IDs. When provided, these fields define the default values
24855/// that should be applied, at import time, to all TracePacket(s) with the same
24856/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
24857///
24858/// Should be reemitted whenever incremental state is cleared on the sequence.
24859#[derive(Clone, PartialEq, ::prost::Message)]
24860pub struct TracePacketDefaults {
24861    #[prost(uint32, optional, tag = "58")]
24862    pub timestamp_clock_id: ::core::option::Option<u32>,
24863    /// Default values for TrackEvents (e.g. default track).
24864    #[prost(message, optional, tag = "11")]
24865    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
24866    /// Defaults for perf profiler packets (PerfSample).
24867    #[prost(message, optional, tag = "12")]
24868    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
24869    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
24870    /// V8RegexpCode)
24871    #[prost(message, optional, tag = "99")]
24872    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
24873}
24874/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
24875/// usually by the process's main thread.
24876///
24877/// Next id: 9.
24878#[derive(Clone, PartialEq, ::prost::Message)]
24879pub struct ProcessDescriptor {
24880    #[prost(int32, optional, tag = "1")]
24881    pub pid: ::core::option::Option<i32>,
24882    #[prost(string, repeated, tag = "2")]
24883    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24884    #[prost(string, optional, tag = "6")]
24885    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
24886    #[prost(int32, optional, tag = "5")]
24887    pub process_priority: ::core::option::Option<i32>,
24888    /// Process start time in nanoseconds.
24889    /// The timestamp refers to the trace clock by default. Other clock IDs
24890    /// provided in TracePacket are not supported.
24891    #[prost(int64, optional, tag = "7")]
24892    pub start_timestamp_ns: ::core::option::Option<i64>,
24893    #[prost(
24894        enumeration = "process_descriptor::ChromeProcessType",
24895        optional,
24896        tag = "4"
24897    )]
24898    pub chrome_process_type: ::core::option::Option<i32>,
24899    /// To support old UI. New UI should determine default sorting by process_type.
24900    #[prost(int32, optional, tag = "3")]
24901    pub legacy_sort_index: ::core::option::Option<i32>,
24902    /// Labels can be used to further describe properties of the work performed by
24903    /// the process. For example, these can be used by Chrome renderer process to
24904    /// provide titles of frames being rendered.
24905    #[prost(string, repeated, tag = "8")]
24906    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24907}
24908/// Nested message and enum types in `ProcessDescriptor`.
24909pub mod process_descriptor {
24910    /// See chromium's content::ProcessType.
24911    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24912    #[repr(i32)]
24913    pub enum ChromeProcessType {
24914        ProcessUnspecified = 0,
24915        ProcessBrowser = 1,
24916        ProcessRenderer = 2,
24917        ProcessUtility = 3,
24918        ProcessZygote = 4,
24919        ProcessSandboxHelper = 5,
24920        ProcessGpu = 6,
24921        ProcessPpapiPlugin = 7,
24922        ProcessPpapiBroker = 8,
24923    }
24924    impl ChromeProcessType {
24925        /// String value of the enum field names used in the ProtoBuf definition.
24926        ///
24927        /// The values are not transformed in any way and thus are considered stable
24928        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24929        pub fn as_str_name(&self) -> &'static str {
24930            match self {
24931                Self::ProcessUnspecified => "PROCESS_UNSPECIFIED",
24932                Self::ProcessBrowser => "PROCESS_BROWSER",
24933                Self::ProcessRenderer => "PROCESS_RENDERER",
24934                Self::ProcessUtility => "PROCESS_UTILITY",
24935                Self::ProcessZygote => "PROCESS_ZYGOTE",
24936                Self::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
24937                Self::ProcessGpu => "PROCESS_GPU",
24938                Self::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
24939                Self::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
24940            }
24941        }
24942        /// Creates an enum from field names used in the ProtoBuf definition.
24943        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24944            match value {
24945                "PROCESS_UNSPECIFIED" => Some(Self::ProcessUnspecified),
24946                "PROCESS_BROWSER" => Some(Self::ProcessBrowser),
24947                "PROCESS_RENDERER" => Some(Self::ProcessRenderer),
24948                "PROCESS_UTILITY" => Some(Self::ProcessUtility),
24949                "PROCESS_ZYGOTE" => Some(Self::ProcessZygote),
24950                "PROCESS_SANDBOX_HELPER" => Some(Self::ProcessSandboxHelper),
24951                "PROCESS_GPU" => Some(Self::ProcessGpu),
24952                "PROCESS_PPAPI_PLUGIN" => Some(Self::ProcessPpapiPlugin),
24953                "PROCESS_PPAPI_BROKER" => Some(Self::ProcessPpapiBroker),
24954                _ => None,
24955            }
24956        }
24957    }
24958}
24959/// This message specifies the "range of interest" for track events. With the
24960/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
24961/// Trace Processor drops track events outside of this range.
24962#[derive(Clone, Copy, PartialEq, ::prost::Message)]
24963pub struct TrackEventRangeOfInterest {
24964    #[prost(int64, optional, tag = "1")]
24965    pub start_us: ::core::option::Option<i64>,
24966}
24967/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
24968/// usually by the thread's trace writer.
24969///
24970/// Next id: 9.
24971#[derive(Clone, PartialEq, ::prost::Message)]
24972pub struct ThreadDescriptor {
24973    #[prost(int32, optional, tag = "1")]
24974    pub pid: ::core::option::Option<i32>,
24975    #[prost(int32, optional, tag = "2")]
24976    pub tid: ::core::option::Option<i32>,
24977    #[prost(string, optional, tag = "5")]
24978    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
24979    #[prost(
24980        enumeration = "thread_descriptor::ChromeThreadType",
24981        optional,
24982        tag = "4"
24983    )]
24984    pub chrome_thread_type: ::core::option::Option<i32>,
24985    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
24986    /// and timestamp_clock_id fields instead.
24987    #[prost(int64, optional, tag = "6")]
24988    pub reference_timestamp_us: ::core::option::Option<i64>,
24989    /// Absolute reference values. Clock values in subsequent TrackEvents can be
24990    /// encoded accumulatively and relative to these. This reduces their var-int
24991    /// encoding size.
24992    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
24993    #[prost(int64, optional, tag = "7")]
24994    pub reference_thread_time_us: ::core::option::Option<i64>,
24995    #[prost(int64, optional, tag = "8")]
24996    pub reference_thread_instruction_count: ::core::option::Option<i64>,
24997    /// To support old UI. New UI should determine default sorting by thread_type.
24998    #[prost(int32, optional, tag = "3")]
24999    pub legacy_sort_index: ::core::option::Option<i32>,
25000}
25001/// Nested message and enum types in `ThreadDescriptor`.
25002pub mod thread_descriptor {
25003    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25004    #[repr(i32)]
25005    pub enum ChromeThreadType {
25006        ChromeThreadUnspecified = 0,
25007        ChromeThreadMain = 1,
25008        ChromeThreadIo = 2,
25009        /// Scheduler:
25010        ChromeThreadPoolBgWorker = 3,
25011        ChromeThreadPoolFgWorker = 4,
25012        ChromeThreadPoolFbBlocking = 5,
25013        ChromeThreadPoolBgBlocking = 6,
25014        ChromeThreadPoolService = 7,
25015        /// Compositor:
25016        ChromeThreadCompositor = 8,
25017        ChromeThreadVizCompositor = 9,
25018        ChromeThreadCompositorWorker = 10,
25019        /// Renderer:
25020        ChromeThreadServiceWorker = 11,
25021        /// Tracing related threads:
25022        ChromeThreadMemoryInfra = 50,
25023        ChromeThreadSamplingProfiler = 51,
25024    }
25025    impl ChromeThreadType {
25026        /// String value of the enum field names used in the ProtoBuf definition.
25027        ///
25028        /// The values are not transformed in any way and thus are considered stable
25029        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25030        pub fn as_str_name(&self) -> &'static str {
25031            match self {
25032                Self::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
25033                Self::ChromeThreadMain => "CHROME_THREAD_MAIN",
25034                Self::ChromeThreadIo => "CHROME_THREAD_IO",
25035                Self::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
25036                Self::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
25037                Self::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
25038                Self::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
25039                Self::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
25040                Self::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
25041                Self::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
25042                Self::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
25043                Self::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
25044                Self::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
25045                Self::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
25046            }
25047        }
25048        /// Creates an enum from field names used in the ProtoBuf definition.
25049        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25050            match value {
25051                "CHROME_THREAD_UNSPECIFIED" => Some(Self::ChromeThreadUnspecified),
25052                "CHROME_THREAD_MAIN" => Some(Self::ChromeThreadMain),
25053                "CHROME_THREAD_IO" => Some(Self::ChromeThreadIo),
25054                "CHROME_THREAD_POOL_BG_WORKER" => Some(Self::ChromeThreadPoolBgWorker),
25055                "CHROME_THREAD_POOL_FG_WORKER" => Some(Self::ChromeThreadPoolFgWorker),
25056                "CHROME_THREAD_POOL_FB_BLOCKING" => Some(Self::ChromeThreadPoolFbBlocking),
25057                "CHROME_THREAD_POOL_BG_BLOCKING" => Some(Self::ChromeThreadPoolBgBlocking),
25058                "CHROME_THREAD_POOL_SERVICE" => Some(Self::ChromeThreadPoolService),
25059                "CHROME_THREAD_COMPOSITOR" => Some(Self::ChromeThreadCompositor),
25060                "CHROME_THREAD_VIZ_COMPOSITOR" => Some(Self::ChromeThreadVizCompositor),
25061                "CHROME_THREAD_COMPOSITOR_WORKER" => Some(Self::ChromeThreadCompositorWorker),
25062                "CHROME_THREAD_SERVICE_WORKER" => Some(Self::ChromeThreadServiceWorker),
25063                "CHROME_THREAD_MEMORY_INFRA" => Some(Self::ChromeThreadMemoryInfra),
25064                "CHROME_THREAD_SAMPLING_PROFILER" => Some(Self::ChromeThreadSamplingProfiler),
25065                _ => None,
25066            }
25067        }
25068    }
25069}
25070/// Describes the attributes for a Chrome process. Must be paired with a
25071/// ProcessDescriptor in the same TrackDescriptor.
25072///
25073/// Next id: 6.
25074#[derive(Clone, PartialEq, ::prost::Message)]
25075pub struct ChromeProcessDescriptor {
25076    #[prost(
25077        enumeration = "chrome_process_descriptor::ProcessType",
25078        optional,
25079        tag = "1"
25080    )]
25081    pub process_type: ::core::option::Option<i32>,
25082    #[prost(int32, optional, tag = "2")]
25083    pub process_priority: ::core::option::Option<i32>,
25084    /// To support old UI. New UI should determine default sorting by process_type.
25085    #[prost(int32, optional, tag = "3")]
25086    pub legacy_sort_index: ::core::option::Option<i32>,
25087    /// Name of the hosting app for WebView. Used to match renderer processes to
25088    /// their hosting apps.
25089    #[prost(string, optional, tag = "4")]
25090    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
25091    /// The ID to link crashes to trace.
25092    /// Notes:
25093    /// * The ID is per process. So, each trace may contain many IDs, and you need
25094    ///    to look for the ID from crashed process to find the crash report.
25095    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
25096    ///    get an uploaded trace, since uploads could have failed.
25097    /// * On the other hand, if there was a crash during the session and trace was
25098    ///    uploaded, it is very likely to find a crash report with the trace ID.
25099    /// * This is not crash ID or trace ID. It is just a random 64-bit number
25100    ///    recorded in both traces and crashes. It is possible to have collisions,
25101    ///    though very rare.
25102    #[prost(uint64, optional, tag = "5")]
25103    pub crash_trace_id: ::core::option::Option<u64>,
25104}
25105/// Nested message and enum types in `ChromeProcessDescriptor`.
25106pub mod chrome_process_descriptor {
25107    /// See chromium's content::ProcessType.
25108    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25109    #[repr(i32)]
25110    pub enum ProcessType {
25111        ProcessUnspecified = 0,
25112        ProcessBrowser = 1,
25113        ProcessRenderer = 2,
25114        ProcessUtility = 3,
25115        ProcessZygote = 4,
25116        ProcessSandboxHelper = 5,
25117        ProcessGpu = 6,
25118        ProcessPpapiPlugin = 7,
25119        ProcessPpapiBroker = 8,
25120        ProcessServiceNetwork = 9,
25121        ProcessServiceTracing = 10,
25122        ProcessServiceStorage = 11,
25123        ProcessServiceAudio = 12,
25124        ProcessServiceDataDecoder = 13,
25125        ProcessServiceUtilWin = 14,
25126        ProcessServiceProxyResolver = 15,
25127        ProcessServiceCdm = 16,
25128        ProcessServiceVideoCapture = 17,
25129        ProcessServiceUnzipper = 18,
25130        ProcessServiceMirroring = 19,
25131        ProcessServiceFilepatcher = 20,
25132        ProcessServiceTts = 21,
25133        ProcessServicePrinting = 22,
25134        ProcessServiceQuarantine = 23,
25135        ProcessServiceCrosLocalsearch = 24,
25136        ProcessServiceCrosAssistantAudioDecoder = 25,
25137        ProcessServiceFileutil = 26,
25138        ProcessServicePrintcompositor = 27,
25139        ProcessServicePaintpreview = 28,
25140        ProcessServiceSpeechrecognition = 29,
25141        ProcessServiceXrdevice = 30,
25142        ProcessServiceReadicon = 31,
25143        ProcessServiceLanguagedetection = 32,
25144        ProcessServiceSharing = 33,
25145        ProcessServiceMediaparser = 34,
25146        ProcessServiceQrcodegenerator = 35,
25147        ProcessServiceProfileimport = 36,
25148        ProcessServiceIme = 37,
25149        ProcessServiceRecording = 38,
25150        ProcessServiceShapedetection = 39,
25151        ProcessRendererExtension = 40,
25152        ProcessServiceMediaFoundation = 41,
25153    }
25154    impl ProcessType {
25155        /// String value of the enum field names used in the ProtoBuf definition.
25156        ///
25157        /// The values are not transformed in any way and thus are considered stable
25158        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25159        pub fn as_str_name(&self) -> &'static str {
25160            match self {
25161                Self::ProcessUnspecified => "PROCESS_UNSPECIFIED",
25162                Self::ProcessBrowser => "PROCESS_BROWSER",
25163                Self::ProcessRenderer => "PROCESS_RENDERER",
25164                Self::ProcessUtility => "PROCESS_UTILITY",
25165                Self::ProcessZygote => "PROCESS_ZYGOTE",
25166                Self::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
25167                Self::ProcessGpu => "PROCESS_GPU",
25168                Self::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
25169                Self::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
25170                Self::ProcessServiceNetwork => "PROCESS_SERVICE_NETWORK",
25171                Self::ProcessServiceTracing => "PROCESS_SERVICE_TRACING",
25172                Self::ProcessServiceStorage => "PROCESS_SERVICE_STORAGE",
25173                Self::ProcessServiceAudio => "PROCESS_SERVICE_AUDIO",
25174                Self::ProcessServiceDataDecoder => "PROCESS_SERVICE_DATA_DECODER",
25175                Self::ProcessServiceUtilWin => "PROCESS_SERVICE_UTIL_WIN",
25176                Self::ProcessServiceProxyResolver => "PROCESS_SERVICE_PROXY_RESOLVER",
25177                Self::ProcessServiceCdm => "PROCESS_SERVICE_CDM",
25178                Self::ProcessServiceVideoCapture => "PROCESS_SERVICE_VIDEO_CAPTURE",
25179                Self::ProcessServiceUnzipper => "PROCESS_SERVICE_UNZIPPER",
25180                Self::ProcessServiceMirroring => "PROCESS_SERVICE_MIRRORING",
25181                Self::ProcessServiceFilepatcher => "PROCESS_SERVICE_FILEPATCHER",
25182                Self::ProcessServiceTts => "PROCESS_SERVICE_TTS",
25183                Self::ProcessServicePrinting => "PROCESS_SERVICE_PRINTING",
25184                Self::ProcessServiceQuarantine => "PROCESS_SERVICE_QUARANTINE",
25185                Self::ProcessServiceCrosLocalsearch => "PROCESS_SERVICE_CROS_LOCALSEARCH",
25186                Self::ProcessServiceCrosAssistantAudioDecoder => {
25187                    "PROCESS_SERVICE_CROS_ASSISTANT_AUDIO_DECODER"
25188                }
25189                Self::ProcessServiceFileutil => "PROCESS_SERVICE_FILEUTIL",
25190                Self::ProcessServicePrintcompositor => "PROCESS_SERVICE_PRINTCOMPOSITOR",
25191                Self::ProcessServicePaintpreview => "PROCESS_SERVICE_PAINTPREVIEW",
25192                Self::ProcessServiceSpeechrecognition => "PROCESS_SERVICE_SPEECHRECOGNITION",
25193                Self::ProcessServiceXrdevice => "PROCESS_SERVICE_XRDEVICE",
25194                Self::ProcessServiceReadicon => "PROCESS_SERVICE_READICON",
25195                Self::ProcessServiceLanguagedetection => "PROCESS_SERVICE_LANGUAGEDETECTION",
25196                Self::ProcessServiceSharing => "PROCESS_SERVICE_SHARING",
25197                Self::ProcessServiceMediaparser => "PROCESS_SERVICE_MEDIAPARSER",
25198                Self::ProcessServiceQrcodegenerator => "PROCESS_SERVICE_QRCODEGENERATOR",
25199                Self::ProcessServiceProfileimport => "PROCESS_SERVICE_PROFILEIMPORT",
25200                Self::ProcessServiceIme => "PROCESS_SERVICE_IME",
25201                Self::ProcessServiceRecording => "PROCESS_SERVICE_RECORDING",
25202                Self::ProcessServiceShapedetection => "PROCESS_SERVICE_SHAPEDETECTION",
25203                Self::ProcessRendererExtension => "PROCESS_RENDERER_EXTENSION",
25204                Self::ProcessServiceMediaFoundation => "PROCESS_SERVICE_MEDIA_FOUNDATION",
25205            }
25206        }
25207        /// Creates an enum from field names used in the ProtoBuf definition.
25208        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25209            match value {
25210                "PROCESS_UNSPECIFIED" => Some(Self::ProcessUnspecified),
25211                "PROCESS_BROWSER" => Some(Self::ProcessBrowser),
25212                "PROCESS_RENDERER" => Some(Self::ProcessRenderer),
25213                "PROCESS_UTILITY" => Some(Self::ProcessUtility),
25214                "PROCESS_ZYGOTE" => Some(Self::ProcessZygote),
25215                "PROCESS_SANDBOX_HELPER" => Some(Self::ProcessSandboxHelper),
25216                "PROCESS_GPU" => Some(Self::ProcessGpu),
25217                "PROCESS_PPAPI_PLUGIN" => Some(Self::ProcessPpapiPlugin),
25218                "PROCESS_PPAPI_BROKER" => Some(Self::ProcessPpapiBroker),
25219                "PROCESS_SERVICE_NETWORK" => Some(Self::ProcessServiceNetwork),
25220                "PROCESS_SERVICE_TRACING" => Some(Self::ProcessServiceTracing),
25221                "PROCESS_SERVICE_STORAGE" => Some(Self::ProcessServiceStorage),
25222                "PROCESS_SERVICE_AUDIO" => Some(Self::ProcessServiceAudio),
25223                "PROCESS_SERVICE_DATA_DECODER" => Some(Self::ProcessServiceDataDecoder),
25224                "PROCESS_SERVICE_UTIL_WIN" => Some(Self::ProcessServiceUtilWin),
25225                "PROCESS_SERVICE_PROXY_RESOLVER" => Some(Self::ProcessServiceProxyResolver),
25226                "PROCESS_SERVICE_CDM" => Some(Self::ProcessServiceCdm),
25227                "PROCESS_SERVICE_VIDEO_CAPTURE" => Some(Self::ProcessServiceVideoCapture),
25228                "PROCESS_SERVICE_UNZIPPER" => Some(Self::ProcessServiceUnzipper),
25229                "PROCESS_SERVICE_MIRRORING" => Some(Self::ProcessServiceMirroring),
25230                "PROCESS_SERVICE_FILEPATCHER" => Some(Self::ProcessServiceFilepatcher),
25231                "PROCESS_SERVICE_TTS" => Some(Self::ProcessServiceTts),
25232                "PROCESS_SERVICE_PRINTING" => Some(Self::ProcessServicePrinting),
25233                "PROCESS_SERVICE_QUARANTINE" => Some(Self::ProcessServiceQuarantine),
25234                "PROCESS_SERVICE_CROS_LOCALSEARCH" => Some(Self::ProcessServiceCrosLocalsearch),
25235                "PROCESS_SERVICE_CROS_ASSISTANT_AUDIO_DECODER" => {
25236                    Some(Self::ProcessServiceCrosAssistantAudioDecoder)
25237                }
25238                "PROCESS_SERVICE_FILEUTIL" => Some(Self::ProcessServiceFileutil),
25239                "PROCESS_SERVICE_PRINTCOMPOSITOR" => Some(Self::ProcessServicePrintcompositor),
25240                "PROCESS_SERVICE_PAINTPREVIEW" => Some(Self::ProcessServicePaintpreview),
25241                "PROCESS_SERVICE_SPEECHRECOGNITION" => Some(Self::ProcessServiceSpeechrecognition),
25242                "PROCESS_SERVICE_XRDEVICE" => Some(Self::ProcessServiceXrdevice),
25243                "PROCESS_SERVICE_READICON" => Some(Self::ProcessServiceReadicon),
25244                "PROCESS_SERVICE_LANGUAGEDETECTION" => Some(Self::ProcessServiceLanguagedetection),
25245                "PROCESS_SERVICE_SHARING" => Some(Self::ProcessServiceSharing),
25246                "PROCESS_SERVICE_MEDIAPARSER" => Some(Self::ProcessServiceMediaparser),
25247                "PROCESS_SERVICE_QRCODEGENERATOR" => Some(Self::ProcessServiceQrcodegenerator),
25248                "PROCESS_SERVICE_PROFILEIMPORT" => Some(Self::ProcessServiceProfileimport),
25249                "PROCESS_SERVICE_IME" => Some(Self::ProcessServiceIme),
25250                "PROCESS_SERVICE_RECORDING" => Some(Self::ProcessServiceRecording),
25251                "PROCESS_SERVICE_SHAPEDETECTION" => Some(Self::ProcessServiceShapedetection),
25252                "PROCESS_RENDERER_EXTENSION" => Some(Self::ProcessRendererExtension),
25253                "PROCESS_SERVICE_MEDIA_FOUNDATION" => Some(Self::ProcessServiceMediaFoundation),
25254                _ => None,
25255            }
25256        }
25257    }
25258}
25259/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
25260/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
25261/// in the same TrackDescriptor.
25262///
25263/// Next id: 3.
25264#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25265pub struct ChromeThreadDescriptor {
25266    #[prost(
25267        enumeration = "chrome_thread_descriptor::ThreadType",
25268        optional,
25269        tag = "1"
25270    )]
25271    pub thread_type: ::core::option::Option<i32>,
25272    /// To support old UI. New UI should determine default sorting by thread_type.
25273    #[prost(int32, optional, tag = "2")]
25274    pub legacy_sort_index: ::core::option::Option<i32>,
25275}
25276/// Nested message and enum types in `ChromeThreadDescriptor`.
25277pub mod chrome_thread_descriptor {
25278    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25279    #[repr(i32)]
25280    pub enum ThreadType {
25281        ThreadUnspecified = 0,
25282        ThreadMain = 1,
25283        ThreadIo = 2,
25284        ThreadPoolBgWorker = 3,
25285        ThreadPoolFgWorker = 4,
25286        ThreadPoolFgBlocking = 5,
25287        ThreadPoolBgBlocking = 6,
25288        ThreadPoolService = 7,
25289        ThreadCompositor = 8,
25290        ThreadVizCompositor = 9,
25291        ThreadCompositorWorker = 10,
25292        ThreadServiceWorker = 11,
25293        ThreadNetworkService = 12,
25294        ThreadChildIo = 13,
25295        ThreadBrowserIo = 14,
25296        ThreadBrowserMain = 15,
25297        ThreadRendererMain = 16,
25298        ThreadUtilityMain = 17,
25299        ThreadGpuMain = 18,
25300        ThreadCacheBlockfile = 19,
25301        ThreadMedia = 20,
25302        ThreadAudioOutputdevice = 21,
25303        ThreadAudioInputdevice = 22,
25304        ThreadGpuMemory = 23,
25305        ThreadGpuVsync = 24,
25306        ThreadDxaVideodecoder = 25,
25307        ThreadBrowserWatchdog = 26,
25308        ThreadWebrtcNetwork = 27,
25309        ThreadWindowOwner = 28,
25310        ThreadWebrtcSignaling = 29,
25311        ThreadWebrtcWorker = 30,
25312        ThreadPpapiMain = 31,
25313        ThreadGpuWatchdog = 32,
25314        ThreadSwapper = 33,
25315        ThreadGamepadPolling = 34,
25316        ThreadWebcrypto = 35,
25317        ThreadDatabase = 36,
25318        ThreadProxyresolver = 37,
25319        ThreadDevtoolsadb = 38,
25320        ThreadNetworkconfigwatcher = 39,
25321        ThreadWasapiRender = 40,
25322        ThreadLoaderLockSampler = 41,
25323        ThreadMemoryInfra = 50,
25324        ThreadSamplingProfiler = 51,
25325    }
25326    impl ThreadType {
25327        /// String value of the enum field names used in the ProtoBuf definition.
25328        ///
25329        /// The values are not transformed in any way and thus are considered stable
25330        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25331        pub fn as_str_name(&self) -> &'static str {
25332            match self {
25333                Self::ThreadUnspecified => "THREAD_UNSPECIFIED",
25334                Self::ThreadMain => "THREAD_MAIN",
25335                Self::ThreadIo => "THREAD_IO",
25336                Self::ThreadPoolBgWorker => "THREAD_POOL_BG_WORKER",
25337                Self::ThreadPoolFgWorker => "THREAD_POOL_FG_WORKER",
25338                Self::ThreadPoolFgBlocking => "THREAD_POOL_FG_BLOCKING",
25339                Self::ThreadPoolBgBlocking => "THREAD_POOL_BG_BLOCKING",
25340                Self::ThreadPoolService => "THREAD_POOL_SERVICE",
25341                Self::ThreadCompositor => "THREAD_COMPOSITOR",
25342                Self::ThreadVizCompositor => "THREAD_VIZ_COMPOSITOR",
25343                Self::ThreadCompositorWorker => "THREAD_COMPOSITOR_WORKER",
25344                Self::ThreadServiceWorker => "THREAD_SERVICE_WORKER",
25345                Self::ThreadNetworkService => "THREAD_NETWORK_SERVICE",
25346                Self::ThreadChildIo => "THREAD_CHILD_IO",
25347                Self::ThreadBrowserIo => "THREAD_BROWSER_IO",
25348                Self::ThreadBrowserMain => "THREAD_BROWSER_MAIN",
25349                Self::ThreadRendererMain => "THREAD_RENDERER_MAIN",
25350                Self::ThreadUtilityMain => "THREAD_UTILITY_MAIN",
25351                Self::ThreadGpuMain => "THREAD_GPU_MAIN",
25352                Self::ThreadCacheBlockfile => "THREAD_CACHE_BLOCKFILE",
25353                Self::ThreadMedia => "THREAD_MEDIA",
25354                Self::ThreadAudioOutputdevice => "THREAD_AUDIO_OUTPUTDEVICE",
25355                Self::ThreadAudioInputdevice => "THREAD_AUDIO_INPUTDEVICE",
25356                Self::ThreadGpuMemory => "THREAD_GPU_MEMORY",
25357                Self::ThreadGpuVsync => "THREAD_GPU_VSYNC",
25358                Self::ThreadDxaVideodecoder => "THREAD_DXA_VIDEODECODER",
25359                Self::ThreadBrowserWatchdog => "THREAD_BROWSER_WATCHDOG",
25360                Self::ThreadWebrtcNetwork => "THREAD_WEBRTC_NETWORK",
25361                Self::ThreadWindowOwner => "THREAD_WINDOW_OWNER",
25362                Self::ThreadWebrtcSignaling => "THREAD_WEBRTC_SIGNALING",
25363                Self::ThreadWebrtcWorker => "THREAD_WEBRTC_WORKER",
25364                Self::ThreadPpapiMain => "THREAD_PPAPI_MAIN",
25365                Self::ThreadGpuWatchdog => "THREAD_GPU_WATCHDOG",
25366                Self::ThreadSwapper => "THREAD_SWAPPER",
25367                Self::ThreadGamepadPolling => "THREAD_GAMEPAD_POLLING",
25368                Self::ThreadWebcrypto => "THREAD_WEBCRYPTO",
25369                Self::ThreadDatabase => "THREAD_DATABASE",
25370                Self::ThreadProxyresolver => "THREAD_PROXYRESOLVER",
25371                Self::ThreadDevtoolsadb => "THREAD_DEVTOOLSADB",
25372                Self::ThreadNetworkconfigwatcher => "THREAD_NETWORKCONFIGWATCHER",
25373                Self::ThreadWasapiRender => "THREAD_WASAPI_RENDER",
25374                Self::ThreadLoaderLockSampler => "THREAD_LOADER_LOCK_SAMPLER",
25375                Self::ThreadMemoryInfra => "THREAD_MEMORY_INFRA",
25376                Self::ThreadSamplingProfiler => "THREAD_SAMPLING_PROFILER",
25377            }
25378        }
25379        /// Creates an enum from field names used in the ProtoBuf definition.
25380        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25381            match value {
25382                "THREAD_UNSPECIFIED" => Some(Self::ThreadUnspecified),
25383                "THREAD_MAIN" => Some(Self::ThreadMain),
25384                "THREAD_IO" => Some(Self::ThreadIo),
25385                "THREAD_POOL_BG_WORKER" => Some(Self::ThreadPoolBgWorker),
25386                "THREAD_POOL_FG_WORKER" => Some(Self::ThreadPoolFgWorker),
25387                "THREAD_POOL_FG_BLOCKING" => Some(Self::ThreadPoolFgBlocking),
25388                "THREAD_POOL_BG_BLOCKING" => Some(Self::ThreadPoolBgBlocking),
25389                "THREAD_POOL_SERVICE" => Some(Self::ThreadPoolService),
25390                "THREAD_COMPOSITOR" => Some(Self::ThreadCompositor),
25391                "THREAD_VIZ_COMPOSITOR" => Some(Self::ThreadVizCompositor),
25392                "THREAD_COMPOSITOR_WORKER" => Some(Self::ThreadCompositorWorker),
25393                "THREAD_SERVICE_WORKER" => Some(Self::ThreadServiceWorker),
25394                "THREAD_NETWORK_SERVICE" => Some(Self::ThreadNetworkService),
25395                "THREAD_CHILD_IO" => Some(Self::ThreadChildIo),
25396                "THREAD_BROWSER_IO" => Some(Self::ThreadBrowserIo),
25397                "THREAD_BROWSER_MAIN" => Some(Self::ThreadBrowserMain),
25398                "THREAD_RENDERER_MAIN" => Some(Self::ThreadRendererMain),
25399                "THREAD_UTILITY_MAIN" => Some(Self::ThreadUtilityMain),
25400                "THREAD_GPU_MAIN" => Some(Self::ThreadGpuMain),
25401                "THREAD_CACHE_BLOCKFILE" => Some(Self::ThreadCacheBlockfile),
25402                "THREAD_MEDIA" => Some(Self::ThreadMedia),
25403                "THREAD_AUDIO_OUTPUTDEVICE" => Some(Self::ThreadAudioOutputdevice),
25404                "THREAD_AUDIO_INPUTDEVICE" => Some(Self::ThreadAudioInputdevice),
25405                "THREAD_GPU_MEMORY" => Some(Self::ThreadGpuMemory),
25406                "THREAD_GPU_VSYNC" => Some(Self::ThreadGpuVsync),
25407                "THREAD_DXA_VIDEODECODER" => Some(Self::ThreadDxaVideodecoder),
25408                "THREAD_BROWSER_WATCHDOG" => Some(Self::ThreadBrowserWatchdog),
25409                "THREAD_WEBRTC_NETWORK" => Some(Self::ThreadWebrtcNetwork),
25410                "THREAD_WINDOW_OWNER" => Some(Self::ThreadWindowOwner),
25411                "THREAD_WEBRTC_SIGNALING" => Some(Self::ThreadWebrtcSignaling),
25412                "THREAD_WEBRTC_WORKER" => Some(Self::ThreadWebrtcWorker),
25413                "THREAD_PPAPI_MAIN" => Some(Self::ThreadPpapiMain),
25414                "THREAD_GPU_WATCHDOG" => Some(Self::ThreadGpuWatchdog),
25415                "THREAD_SWAPPER" => Some(Self::ThreadSwapper),
25416                "THREAD_GAMEPAD_POLLING" => Some(Self::ThreadGamepadPolling),
25417                "THREAD_WEBCRYPTO" => Some(Self::ThreadWebcrypto),
25418                "THREAD_DATABASE" => Some(Self::ThreadDatabase),
25419                "THREAD_PROXYRESOLVER" => Some(Self::ThreadProxyresolver),
25420                "THREAD_DEVTOOLSADB" => Some(Self::ThreadDevtoolsadb),
25421                "THREAD_NETWORKCONFIGWATCHER" => Some(Self::ThreadNetworkconfigwatcher),
25422                "THREAD_WASAPI_RENDER" => Some(Self::ThreadWasapiRender),
25423                "THREAD_LOADER_LOCK_SAMPLER" => Some(Self::ThreadLoaderLockSampler),
25424                "THREAD_MEMORY_INFRA" => Some(Self::ThreadMemoryInfra),
25425                "THREAD_SAMPLING_PROFILER" => Some(Self::ThreadSamplingProfiler),
25426                _ => None,
25427            }
25428        }
25429    }
25430}
25431/// Defines properties of a counter track, e.g. for built-in counters (thread
25432/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
25433/// a specific app component).
25434///
25435/// Counter tracks only support TYPE_COUNTER track events, which specify new
25436/// values for the counter. For counters that require per-slice values, counter
25437/// values can instead be provided in a more efficient encoding via TrackEvent's
25438/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
25439/// slice-type events cannot be emitted onto a counter track.
25440///
25441/// Values for counters that are only emitted on a single packet sequence can
25442/// optionally be delta-encoded, see |is_incremental|.
25443///
25444/// Next id: 7.
25445#[derive(Clone, PartialEq, ::prost::Message)]
25446pub struct CounterDescriptor {
25447    /// For built-in counters (e.g. thread time). Custom user-specified counters
25448    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
25449    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
25450    #[prost(
25451        enumeration = "counter_descriptor::BuiltinCounterType",
25452        optional,
25453        tag = "1"
25454    )]
25455    pub r#type: ::core::option::Option<i32>,
25456    /// Names of categories of the counter (usually for user-specified counters).
25457    /// In the client library, categories are a way to turn groups of individual
25458    /// counters (or events) on or off.
25459    #[prost(string, repeated, tag = "2")]
25460    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25461    /// Type of the counter's values. Built-in counters imply a value for this
25462    /// field.
25463    #[prost(enumeration = "counter_descriptor::Unit", optional, tag = "3")]
25464    pub unit: ::core::option::Option<i32>,
25465    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
25466    /// name can be used instead.
25467    #[prost(string, optional, tag = "6")]
25468    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
25469    /// Multiplication factor of this counter's values, e.g. to supply
25470    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
25471    #[prost(int64, optional, tag = "4")]
25472    pub unit_multiplier: ::core::option::Option<i64>,
25473    /// Whether values for this counter are provided as delta values. Only
25474    /// supported for counters that are emitted on a single packet-sequence (e.g.
25475    /// thread time). Counter values in subsequent packets on the current packet
25476    /// sequence will be interpreted as delta values from the sequence's most
25477    /// recent value for the counter. When incremental state is cleared, the
25478    /// counter value is considered to be reset to 0. Thus, the first value after
25479    /// incremental state is cleared is effectively an absolute value.
25480    #[prost(bool, optional, tag = "5")]
25481    pub is_incremental: ::core::option::Option<bool>,
25482}
25483/// Nested message and enum types in `CounterDescriptor`.
25484pub mod counter_descriptor {
25485    /// Built-in counters, usually with special meaning in the client library,
25486    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
25487    /// track name from the enum value if none is provided in TrackDescriptor.
25488    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25489    #[repr(i32)]
25490    pub enum BuiltinCounterType {
25491        CounterUnspecified = 0,
25492        /// implies UNIT_TIME_NS.
25493        CounterThreadTimeNs = 1,
25494        /// implies UNIT_COUNT.
25495        CounterThreadInstructionCount = 2,
25496    }
25497    impl BuiltinCounterType {
25498        /// String value of the enum field names used in the ProtoBuf definition.
25499        ///
25500        /// The values are not transformed in any way and thus are considered stable
25501        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25502        pub fn as_str_name(&self) -> &'static str {
25503            match self {
25504                Self::CounterUnspecified => "COUNTER_UNSPECIFIED",
25505                Self::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
25506                Self::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
25507            }
25508        }
25509        /// Creates an enum from field names used in the ProtoBuf definition.
25510        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25511            match value {
25512                "COUNTER_UNSPECIFIED" => Some(Self::CounterUnspecified),
25513                "COUNTER_THREAD_TIME_NS" => Some(Self::CounterThreadTimeNs),
25514                "COUNTER_THREAD_INSTRUCTION_COUNT" => Some(Self::CounterThreadInstructionCount),
25515                _ => None,
25516            }
25517        }
25518    }
25519    /// Type of the values for the counters - to supply lower granularity units,
25520    /// see also |unit_multiplier|.
25521    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25522    #[repr(i32)]
25523    pub enum Unit {
25524        Unspecified = 0,
25525        TimeNs = 1,
25526        Count = 2,
25527        /// TODO(eseckler): Support more units as necessary.
25528        SizeBytes = 3,
25529    }
25530    impl Unit {
25531        /// String value of the enum field names used in the ProtoBuf definition.
25532        ///
25533        /// The values are not transformed in any way and thus are considered stable
25534        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25535        pub fn as_str_name(&self) -> &'static str {
25536            match self {
25537                Self::Unspecified => "UNIT_UNSPECIFIED",
25538                Self::TimeNs => "UNIT_TIME_NS",
25539                Self::Count => "UNIT_COUNT",
25540                Self::SizeBytes => "UNIT_SIZE_BYTES",
25541            }
25542        }
25543        /// Creates an enum from field names used in the ProtoBuf definition.
25544        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25545            match value {
25546                "UNIT_UNSPECIFIED" => Some(Self::Unspecified),
25547                "UNIT_TIME_NS" => Some(Self::TimeNs),
25548                "UNIT_COUNT" => Some(Self::Count),
25549                "UNIT_SIZE_BYTES" => Some(Self::SizeBytes),
25550                _ => None,
25551            }
25552        }
25553    }
25554}
25555/// Defines a track for TrackEvents. Slices and instant events on the same track
25556/// will be nested based on their timestamps, see TrackEvent::Type.
25557///
25558/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
25559/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
25560/// when the ring buffer wraps, it should be reemitted whenever incremental state
25561/// is cleared.
25562///
25563/// As a fallback, TrackEvents emitted without an explicit track association will
25564/// be associated with an implicit trace-global track (uuid = 0), see also
25565/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
25566/// TrackDescriptor for this implicit track.
25567///
25568/// Next id: 11.
25569#[derive(Clone, PartialEq, ::prost::Message)]
25570pub struct TrackDescriptor {
25571    /// Unique ID that identifies this track. This ID is global to the whole trace.
25572    /// Producers should ensure that it is unlikely to clash with IDs emitted by
25573    /// other producers. A value of 0 denotes the implicit trace-global track.
25574    ///
25575    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
25576    /// event id + id_scope, pid, and/or tid to compute this ID.
25577    #[prost(uint64, optional, tag = "1")]
25578    pub uuid: ::core::option::Option<u64>,
25579    /// A parent track reference can be used to describe relationships between
25580    /// tracks. For example, to define an asynchronous track which is scoped to a
25581    /// specific process, specify the uuid for that process's process track here.
25582    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
25583    /// thread, specify the uuid for that thread's thread track here.
25584    #[prost(uint64, optional, tag = "5")]
25585    pub parent_uuid: ::core::option::Option<u64>,
25586    /// Associate the track with a process, making it the process-global track.
25587    /// There should only be one such track per process (usually for instant
25588    /// events; trace processor uses this fact to detect pid reuse). If you need
25589    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
25590    ///
25591    /// Trace processor will merge events on a process track with slice-type events
25592    /// from other sources (e.g. ftrace) for the same process into a single
25593    /// timeline view.
25594    #[prost(message, optional, tag = "3")]
25595    pub process: ::core::option::Option<ProcessDescriptor>,
25596    #[prost(message, optional, tag = "6")]
25597    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
25598    /// Associate the track with a thread, indicating that the track's events
25599    /// describe synchronous code execution on the thread. There should only be one
25600    /// such track per thread (trace processor uses this fact to detect tid reuse).
25601    ///
25602    /// Trace processor will merge events on a thread track with slice-type events
25603    /// from other sources (e.g. ftrace) for the same thread into a single timeline
25604    /// view.
25605    #[prost(message, optional, tag = "4")]
25606    pub thread: ::core::option::Option<ThreadDescriptor>,
25607    #[prost(message, optional, tag = "7")]
25608    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
25609    /// Descriptor for a counter track. If set, the track will only support
25610    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
25611    /// |extra_counter_values|).
25612    #[prost(message, optional, tag = "8")]
25613    pub counter: ::core::option::Option<CounterDescriptor>,
25614    /// If true, forces Trace Processor to use separate tracks for track events
25615    /// and system events for the same thread.
25616    /// Track events timestamps in Chrome have microsecond resolution, while
25617    /// system events use nanoseconds. It results in broken event nesting when
25618    /// track events and system events share a track.
25619    #[prost(bool, optional, tag = "9")]
25620    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
25621    /// Name of the track. Optional - if unspecified, it may be derived from the
25622    /// process/thread name (process/thread tracks), the first event's name (async
25623    /// tracks), or counter name (counter tracks).
25624    #[prost(oneof = "track_descriptor::StaticOrDynamicName", tags = "2, 10")]
25625    pub static_or_dynamic_name: ::core::option::Option<track_descriptor::StaticOrDynamicName>,
25626}
25627/// Nested message and enum types in `TrackDescriptor`.
25628pub mod track_descriptor {
25629    /// Name of the track. Optional - if unspecified, it may be derived from the
25630    /// process/thread name (process/thread tracks), the first event's name (async
25631    /// tracks), or counter name (counter tracks).
25632    #[derive(Clone, PartialEq, ::prost::Oneof)]
25633    pub enum StaticOrDynamicName {
25634        #[prost(string, tag = "2")]
25635        Name(::prost::alloc::string::String),
25636        /// This field is only set by the SDK when perfetto::StaticString is
25637        /// provided.
25638        #[prost(string, tag = "10")]
25639        StaticName(::prost::alloc::string::String),
25640    }
25641}
25642/// Translation rules for the trace processor.
25643/// See the comments for each rule type for specific meaning.
25644#[derive(Clone, PartialEq, ::prost::Message)]
25645pub struct TranslationTable {
25646    #[prost(oneof = "translation_table::Table", tags = "1, 2, 3, 4, 5")]
25647    pub table: ::core::option::Option<translation_table::Table>,
25648}
25649/// Nested message and enum types in `TranslationTable`.
25650pub mod translation_table {
25651    #[derive(Clone, PartialEq, ::prost::Oneof)]
25652    pub enum Table {
25653        #[prost(message, tag = "1")]
25654        ChromeHistogram(super::ChromeHistorgramTranslationTable),
25655        #[prost(message, tag = "2")]
25656        ChromeUserEvent(super::ChromeUserEventTranslationTable),
25657        #[prost(message, tag = "3")]
25658        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
25659        #[prost(message, tag = "4")]
25660        SliceName(super::SliceNameTranslationTable),
25661        #[prost(message, tag = "5")]
25662        ProcessTrackName(super::ProcessTrackNameTranslationTable),
25663    }
25664}
25665/// Chrome histogram sample hash -> name translation rules.
25666#[derive(Clone, PartialEq, ::prost::Message)]
25667pub struct ChromeHistorgramTranslationTable {
25668    #[prost(map = "uint64, string", tag = "1")]
25669    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
25670}
25671/// Chrome user event action hash -> name translation rules.
25672#[derive(Clone, PartialEq, ::prost::Message)]
25673pub struct ChromeUserEventTranslationTable {
25674    #[prost(map = "uint64, string", tag = "1")]
25675    pub action_hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
25676}
25677/// Chrome performance mark translation rules.
25678#[derive(Clone, PartialEq, ::prost::Message)]
25679pub struct ChromePerformanceMarkTranslationTable {
25680    #[prost(map = "uint32, string", tag = "1")]
25681    pub site_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
25682    #[prost(map = "uint32, string", tag = "2")]
25683    pub mark_hash_to_name: ::std::collections::HashMap<u32, ::prost::alloc::string::String>,
25684}
25685/// Raw -> deobfuscated slice name translation rules.
25686#[derive(Clone, PartialEq, ::prost::Message)]
25687pub struct SliceNameTranslationTable {
25688    #[prost(map = "string, string", tag = "1")]
25689    pub raw_to_deobfuscated_name:
25690        ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
25691}
25692/// Raw -> deobfuscated process track name translation rules.
25693#[derive(Clone, PartialEq, ::prost::Message)]
25694pub struct ProcessTrackNameTranslationTable {
25695    #[prost(map = "string, string", tag = "1")]
25696    pub raw_to_deobfuscated_name:
25697        ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
25698}
25699/// A random unique ID that identifies the trace.
25700/// This message has been introduced in v32. Prior to that, the UUID was
25701/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
25702/// This has been moved to a standalone packet to deal with new use-cases for
25703/// go/gapless-aot, where the same tracing session can be serialized several
25704/// times, in which case the UUID is changed on each snapshot and does not match
25705/// the one in the TraceConfig.
25706#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25707pub struct TraceUuid {
25708    #[prost(int64, optional, tag = "1")]
25709    pub msb: ::core::option::Option<i64>,
25710    #[prost(int64, optional, tag = "2")]
25711    pub lsb: ::core::option::Option<i64>,
25712}
25713/// When a TracingSession receives a trigger it records the boot time nanoseconds
25714/// in the TracePacket's timestamp field as well as the name of the producer that
25715/// triggered it. We emit this data so filtering can be done on triggers received
25716/// in the trace.
25717#[derive(Clone, PartialEq, ::prost::Message)]
25718pub struct Trigger {
25719    /// Name of the trigger which was received.
25720    #[prost(string, optional, tag = "1")]
25721    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
25722    /// The actual producer that activated |trigger|.
25723    #[prost(string, optional, tag = "2")]
25724    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
25725    /// The verified UID of the producer.
25726    #[prost(int32, optional, tag = "3")]
25727    pub trusted_producer_uid: ::core::option::Option<i32>,
25728}
25729/// Event used by testing code.
25730#[derive(Clone, PartialEq, ::prost::Message)]
25731pub struct TestEvent {
25732    /// Arbitrary string used in tests.
25733    #[prost(string, optional, tag = "1")]
25734    pub str: ::core::option::Option<::prost::alloc::string::String>,
25735    /// The current value of the random number sequence used in tests.
25736    #[prost(uint32, optional, tag = "2")]
25737    pub seq_value: ::core::option::Option<u32>,
25738    /// Monotonically increased on each packet.
25739    #[prost(uint64, optional, tag = "3")]
25740    pub counter: ::core::option::Option<u64>,
25741    /// No more packets should follow (from the current sequence).
25742    #[prost(bool, optional, tag = "4")]
25743    pub is_last: ::core::option::Option<bool>,
25744    #[prost(message, optional, tag = "5")]
25745    pub payload: ::core::option::Option<test_event::TestPayload>,
25746}
25747/// Nested message and enum types in `TestEvent`.
25748pub mod test_event {
25749    #[derive(Clone, PartialEq, ::prost::Message)]
25750    pub struct TestPayload {
25751        #[prost(string, repeated, tag = "1")]
25752        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25753        #[prost(message, repeated, tag = "2")]
25754        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
25755        #[prost(string, optional, tag = "4")]
25756        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
25757        #[prost(int32, optional, tag = "5")]
25758        pub single_int: ::core::option::Option<i32>,
25759        #[prost(int32, repeated, packed = "false", tag = "6")]
25760        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
25761        /// When 0 this is the bottom-most nested message.
25762        #[prost(uint32, optional, tag = "3")]
25763        pub remaining_nesting_depth: ::core::option::Option<u32>,
25764        #[prost(message, repeated, tag = "7")]
25765        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
25766    }
25767}
25768/// Common state for UIs visualizing Perfetto traces.
25769/// This message can be appended as a TracePacket by UIs to save the
25770/// visible state (e.g. scroll position/zoom state) for future opening
25771/// of the trace.
25772/// Design doc: go/trace-ui-state.
25773#[derive(Clone, PartialEq, ::prost::Message)]
25774pub struct UiState {
25775    /// The start and end bounds of the viewport of the UI in nanoseconds.
25776    ///
25777    /// This is the absolute time associated to slices and other events in
25778    /// trace processor tables (i.e. the |ts| column of most tables)
25779    #[prost(int64, optional, tag = "1")]
25780    pub timeline_start_ts: ::core::option::Option<i64>,
25781    #[prost(int64, optional, tag = "2")]
25782    pub timeline_end_ts: ::core::option::Option<i64>,
25783    #[prost(message, optional, tag = "3")]
25784    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
25785}
25786/// Nested message and enum types in `UiState`.
25787pub mod ui_state {
25788    /// Indicates that the given process should be highlighted by the UI.
25789    #[derive(Clone, PartialEq, ::prost::Message)]
25790    pub struct HighlightProcess {
25791        #[prost(oneof = "highlight_process::Selector", tags = "1, 2")]
25792        pub selector: ::core::option::Option<highlight_process::Selector>,
25793    }
25794    /// Nested message and enum types in `HighlightProcess`.
25795    pub mod highlight_process {
25796        #[derive(Clone, PartialEq, ::prost::Oneof)]
25797        pub enum Selector {
25798            /// The pid of the process to highlight. This is useful for UIs to focus
25799            /// on tracks of a particular process in the trace.
25800            ///
25801            /// If more than one process in a trace has the same pid, it is UI
25802            /// implementation specific how the process to be focused will be
25803            /// chosen.
25804            #[prost(uint32, tag = "1")]
25805            Pid(u32),
25806            /// The command line of the process to highlight; for most Android apps,
25807            /// this is the package name of the app. This is useful for UIs to focus
25808            /// on a particular app in the trace.
25809            ///
25810            /// If more than one process hasthe same cmdline, it is UI implementation
25811            /// specific how the process to be focused will be chosen.
25812            #[prost(string, tag = "2")]
25813            Cmdline(::prost::alloc::string::String),
25814        }
25815    }
25816}
25817/// TracePacket is the root object of a Perfetto trace.
25818/// A Perfetto trace is a linear sequence of TracePacket(s).
25819///
25820/// The tracing service guarantees that all TracePacket(s) written by a given
25821/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
25822/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
25823/// to the Consumer (or written into the trace file).
25824/// TracePacket(s) written by different TraceWriter(s), hence even different
25825/// data sources, can be seen in arbitrary order.
25826/// The consumer can re-establish a total order, if interested, using the packet
25827/// timestamps, after having synchronized the different clocks onto a global
25828/// clock.
25829///
25830/// The tracing service is agnostic of the content of TracePacket, with the
25831/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
25832/// the service itself.
25833///
25834/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
25835///
25836/// Next reserved id: 14 (up to 15).
25837/// Next id: 113.
25838#[derive(Clone, PartialEq, ::prost::Message)]
25839pub struct TracePacket {
25840    /// The timestamp of the TracePacket.
25841    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
25842    /// Android). It can be overridden using a different timestamp_clock_id.
25843    /// The clock domain definition in ClockSnapshot can also override:
25844    /// - The unit (default: 1ns).
25845    /// - The absolute vs delta encoding (default: absolute timestamp).
25846    #[prost(uint64, optional, tag = "8")]
25847    pub timestamp: ::core::option::Option<u64>,
25848    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
25849    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
25850    /// producer-defined clock id.
25851    /// If unspecified and if no default per-sequence value has been provided via
25852    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
25853    #[prost(uint32, optional, tag = "58")]
25854    pub timestamp_clock_id: ::core::option::Option<u32>,
25855    /// Trusted process id of the producer which generated this packet, written by
25856    /// the service.
25857    #[prost(int32, optional, tag = "79")]
25858    pub trusted_pid: ::core::option::Option<i32>,
25859    /// Incrementally emitted interned data, valid only on the packet's sequence
25860    /// (packets with the same |trusted_packet_sequence_id|). The writer will
25861    /// usually emit new interned data in the same TracePacket that first refers to
25862    /// it (since the last reset of interning state). It may also be emitted
25863    /// proactively in advance of referring to them in later packets.
25864    #[prost(message, optional, tag = "12")]
25865    pub interned_data: ::core::option::Option<InternedData>,
25866    #[prost(uint32, optional, tag = "13")]
25867    pub sequence_flags: ::core::option::Option<u32>,
25868    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
25869    #[prost(bool, optional, tag = "41")]
25870    pub incremental_state_cleared: ::core::option::Option<bool>,
25871    /// Default values for fields of later TracePackets emitted on this packet's
25872    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
25873    /// It must be reemitted when incremental state is cleared (see
25874    /// |incremental_state_cleared|).
25875    /// Requires that any future packet emitted on the same sequence specifies
25876    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
25877    /// TracePacketDefaults always override the global defaults for any future
25878    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
25879    #[prost(message, optional, tag = "59")]
25880    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
25881    /// Flag set by the service if, for the current packet sequence (see
25882    /// |trusted_packet_sequence_id|), either:
25883    /// * this is the first packet, or
25884    /// * one or multiple packets were dropped since the last packet that the
25885    ///    consumer read from the sequence. This can happen if chunks in the trace
25886    ///    buffer are overridden before the consumer could read them when the trace
25887    ///    is configured in ring buffer mode.
25888    ///
25889    /// When packet loss occurs, incrementally emitted data (including interned
25890    /// data) on the sequence should be considered invalid up until the next packet
25891    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
25892    #[prost(bool, optional, tag = "42")]
25893    pub previous_packet_dropped: ::core::option::Option<bool>,
25894    /// Flag set by a producer (starting from SDK v29) if, for the current packet
25895    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
25896    ///
25897    /// This flag can be used for distinguishing the two situations when
25898    /// processing the trace:
25899    /// 1. There are no prior events for the sequence because of data loss, e.g.
25900    ///     due to ring buffer wrapping.
25901    /// 2. There are no prior events for the sequence because it didn't start
25902    ///     before this packet (= there's definitely no preceding data loss).
25903    ///
25904    /// Given that older SDK versions do not support this flag, this flag not
25905    /// being present for a particular sequence does not necessarily imply data
25906    /// loss.
25907    #[prost(bool, optional, tag = "87")]
25908    pub first_packet_on_sequence: ::core::option::Option<bool>,
25909    /// The machine ID for identifying trace packets in a multi-machine tracing
25910    /// session. Is emitted by the tracing service for producers running on a
25911    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
25912    #[prost(uint32, optional, tag = "98")]
25913    pub machine_id: ::core::option::Option<u32>,
25914    #[prost(
25915        oneof = "trace_packet::Data",
25916        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, 55, 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, 900"
25917    )]
25918    pub data: ::core::option::Option<trace_packet::Data>,
25919    /// Trusted user id of the producer which generated this packet. Keep in sync
25920    /// with TrustedPacket.trusted_uid.
25921    ///
25922    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
25923    /// instead.
25924    #[prost(oneof = "trace_packet::OptionalTrustedUid", tags = "3")]
25925    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
25926    /// Service-assigned identifier of the packet sequence this packet belongs to.
25927    /// Uniquely identifies a producer + writer pair within the tracing session. A
25928    /// value of zero denotes an invalid ID. Keep in sync with
25929    /// TrustedPacket.trusted_packet_sequence_id.
25930    #[prost(oneof = "trace_packet::OptionalTrustedPacketSequenceId", tags = "10")]
25931    pub optional_trusted_packet_sequence_id:
25932        ::core::option::Option<trace_packet::OptionalTrustedPacketSequenceId>,
25933}
25934/// Nested message and enum types in `TracePacket`.
25935pub mod trace_packet {
25936    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25937    #[repr(i32)]
25938    pub enum SequenceFlags {
25939        SeqUnspecified = 0,
25940        /// Set by the writer to indicate that it will re-emit any incremental data
25941        /// for the packet's sequence before referring to it again. This includes
25942        /// interned data as well as periodically emitted data like
25943        /// Process/ThreadDescriptors. This flag only affects the current packet
25944        /// sequence (see |trusted_packet_sequence_id|).
25945        ///
25946        /// When set, this TracePacket and subsequent TracePackets on the same
25947        /// sequence will not refer to any incremental data emitted before this
25948        /// TracePacket. For example, previously emitted interned data will be
25949        /// re-emitted if it is referred to again.
25950        ///
25951        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
25952        /// to skip packets in the sequence until the next one with this flag set, to
25953        /// ensure intact incremental data.
25954        SeqIncrementalStateCleared = 1,
25955        /// This packet requires incremental state, such as TracePacketDefaults or
25956        /// InternedData, to be parsed correctly. The trace reader should skip this
25957        /// packet if incremental state is not valid on this sequence, i.e. if no
25958        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
25959        /// current |trusted_packet_sequence_id|.
25960        SeqNeedsIncrementalState = 2,
25961    }
25962    impl SequenceFlags {
25963        /// String value of the enum field names used in the ProtoBuf definition.
25964        ///
25965        /// The values are not transformed in any way and thus are considered stable
25966        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25967        pub fn as_str_name(&self) -> &'static str {
25968            match self {
25969                Self::SeqUnspecified => "SEQ_UNSPECIFIED",
25970                Self::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
25971                Self::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
25972            }
25973        }
25974        /// Creates an enum from field names used in the ProtoBuf definition.
25975        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25976            match value {
25977                "SEQ_UNSPECIFIED" => Some(Self::SeqUnspecified),
25978                "SEQ_INCREMENTAL_STATE_CLEARED" => Some(Self::SeqIncrementalStateCleared),
25979                "SEQ_NEEDS_INCREMENTAL_STATE" => Some(Self::SeqNeedsIncrementalState),
25980                _ => None,
25981            }
25982        }
25983    }
25984    #[derive(Clone, PartialEq, ::prost::Oneof)]
25985    pub enum Data {
25986        #[prost(message, tag = "2")]
25987        ProcessTree(super::ProcessTree),
25988        #[prost(message, tag = "9")]
25989        ProcessStats(super::ProcessStats),
25990        #[prost(message, tag = "4")]
25991        InodeFileMap(super::InodeFileMap),
25992        #[prost(message, tag = "5")]
25993        ChromeEvents(super::ChromeEventBundle),
25994        #[prost(message, tag = "6")]
25995        ClockSnapshot(super::ClockSnapshot),
25996        #[prost(message, tag = "7")]
25997        SysStats(super::SysStats),
25998        #[prost(message, tag = "11")]
25999        TrackEvent(super::TrackEvent),
26000        #[prost(message, tag = "89")]
26001        TraceUuid(super::TraceUuid),
26002        #[prost(message, tag = "33")]
26003        TraceConfig(super::TraceConfig),
26004        #[prost(message, tag = "34")]
26005        FtraceStats(super::FtraceStats),
26006        #[prost(message, tag = "35")]
26007        TraceStats(super::TraceStats),
26008        #[prost(message, tag = "37")]
26009        ProfilePacket(super::ProfilePacket),
26010        #[prost(message, tag = "74")]
26011        StreamingAllocation(super::StreamingAllocation),
26012        #[prost(message, tag = "75")]
26013        StreamingFree(super::StreamingFree),
26014        #[prost(message, tag = "38")]
26015        Battery(super::BatteryCounters),
26016        #[prost(message, tag = "40")]
26017        PowerRails(super::PowerRails),
26018        #[prost(message, tag = "39")]
26019        AndroidLog(super::AndroidLogPacket),
26020        #[prost(message, tag = "45")]
26021        SystemInfo(super::SystemInfo),
26022        #[prost(message, tag = "46")]
26023        Trigger(super::Trigger),
26024        #[prost(message, tag = "109")]
26025        ChromeTrigger(super::ChromeTrigger),
26026        #[prost(message, tag = "47")]
26027        PackagesList(super::PackagesList),
26028        #[prost(message, tag = "48")]
26029        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
26030        #[prost(message, tag = "49")]
26031        PerfettoMetatrace(super::PerfettoMetatrace),
26032        #[prost(message, tag = "51")]
26033        ChromeMetadata(super::ChromeMetadataPacket),
26034        #[prost(message, tag = "52")]
26035        GpuCounterEvent(super::GpuCounterEvent),
26036        #[prost(message, tag = "53")]
26037        GpuRenderStageEvent(super::GpuRenderStageEvent),
26038        #[prost(message, tag = "54")]
26039        StreamingProfilePacket(super::StreamingProfilePacket),
26040        #[prost(message, tag = "56")]
26041        HeapGraph(super::HeapGraph),
26042        #[prost(message, tag = "57")]
26043        GraphicsFrameEvent(super::GraphicsFrameEvent),
26044        #[prost(message, tag = "62")]
26045        VulkanMemoryEvent(super::VulkanMemoryEvent),
26046        #[prost(message, tag = "63")]
26047        GpuLog(super::GpuLog),
26048        #[prost(message, tag = "65")]
26049        VulkanApiEvent(super::VulkanApiEvent),
26050        #[prost(message, tag = "66")]
26051        PerfSample(super::PerfSample),
26052        #[prost(message, tag = "67")]
26053        CpuInfo(super::CpuInfo),
26054        #[prost(message, tag = "68")]
26055        SmapsPacket(super::SmapsPacket),
26056        #[prost(message, tag = "69")]
26057        ServiceEvent(super::TracingServiceEvent),
26058        #[prost(message, tag = "70")]
26059        InitialDisplayState(super::InitialDisplayState),
26060        #[prost(message, tag = "71")]
26061        GpuMemTotalEvent(super::GpuMemTotalEvent),
26062        #[prost(message, tag = "73")]
26063        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
26064        #[prost(message, tag = "76")]
26065        FrameTimelineEvent(super::FrameTimelineEvent),
26066        #[prost(message, tag = "77")]
26067        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
26068        #[prost(message, tag = "78")]
26069        UiState(super::UiState),
26070        #[prost(message, tag = "80")]
26071        AndroidCameraFrameEvent(super::AndroidCameraFrameEvent),
26072        #[prost(message, tag = "81")]
26073        AndroidCameraSessionStats(super::AndroidCameraSessionStats),
26074        #[prost(message, tag = "82")]
26075        TranslationTable(super::TranslationTable),
26076        #[prost(message, tag = "83")]
26077        AndroidGameInterventionList(super::AndroidGameInterventionList),
26078        #[prost(message, tag = "84")]
26079        StatsdAtom(super::StatsdAtom),
26080        #[prost(message, tag = "86")]
26081        AndroidSystemProperty(super::AndroidSystemProperty),
26082        #[prost(message, tag = "91")]
26083        EntityStateResidency(super::EntityStateResidency),
26084        /// Only used in profile packets.
26085        #[prost(message, tag = "55")]
26086        ProfiledFrameSymbols(super::ProfiledFrameSymbols),
26087        #[prost(message, tag = "61")]
26088        ModuleSymbols(super::ModuleSymbols),
26089        #[prost(message, tag = "64")]
26090        DeobfuscationMapping(super::DeobfuscationMapping),
26091        /// Only used by TrackEvent.
26092        #[prost(message, tag = "60")]
26093        TrackDescriptor(super::TrackDescriptor),
26094        /// Deprecated, use TrackDescriptor instead.
26095        #[prost(message, tag = "43")]
26096        ProcessDescriptor(super::ProcessDescriptor),
26097        /// Deprecated, use TrackDescriptor instead.
26098        #[prost(message, tag = "44")]
26099        ThreadDescriptor(super::ThreadDescriptor),
26100        /// Events from the Linux kernel ftrace infrastructure.
26101        #[prost(message, tag = "1")]
26102        FtraceEvents(super::FtraceEventBundle),
26103        /// This field is emitted at periodic intervals (~10s) and
26104        /// contains always the binary representation of the UUID
26105        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
26106        /// efficiently partition long traces without having to fully parse them.
26107        #[prost(bytes, tag = "36")]
26108        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
26109        /// Zero or more proto encoded trace packets compressed using deflate.
26110        /// Each compressed_packets TracePacket (including the two field ids and
26111        /// sizes) should be less than 512KB.
26112        #[prost(bytes, tag = "50")]
26113        CompressedPackets(::prost::alloc::vec::Vec<u8>),
26114        /// Data sources can extend the trace proto with custom extension protos (see
26115        /// docs/design-docs/extensions.md). When they do that, the descriptor of
26116        /// their extension proto descriptor is serialized in this packet. This
26117        /// allows trace_processor to deserialize extended messages using reflection
26118        /// even if the extension proto is not checked in the Perfetto repo.
26119        #[prost(message, tag = "72")]
26120        ExtensionDescriptor(super::ExtensionDescriptor),
26121        /// Represents a single packet sent or received by the network.
26122        #[prost(message, tag = "88")]
26123        NetworkPacket(super::NetworkPacketEvent),
26124        /// Represents one or more packets sent or received by the network.
26125        #[prost(message, tag = "92")]
26126        NetworkPacketBundle(super::NetworkPacketBundle),
26127        /// The "range of interest" for track events. See the message definition
26128        /// comments for more details.
26129        #[prost(message, tag = "90")]
26130        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
26131        /// Winscope traces
26132        #[prost(message, tag = "93")]
26133        SurfaceflingerLayersSnapshot(super::LayersSnapshotProto),
26134        #[prost(message, tag = "94")]
26135        SurfaceflingerTransactions(super::TransactionTraceEntry),
26136        #[prost(message, tag = "96")]
26137        ShellTransition(super::ShellTransition),
26138        #[prost(message, tag = "97")]
26139        ShellHandlerMappings(super::ShellHandlerMappings),
26140        #[prost(message, tag = "104")]
26141        ProtologMessage(super::ProtoLogMessage),
26142        #[prost(message, tag = "105")]
26143        ProtologViewerConfig(super::ProtoLogViewerConfig),
26144        #[prost(message, tag = "112")]
26145        WinscopeExtensions(super::WinscopeExtensions),
26146        /// Events from the Windows etw infrastructure.
26147        #[prost(message, tag = "95")]
26148        EtwEvents(super::EtwTraceEventBundle),
26149        #[prost(message, tag = "99")]
26150        V8JsCode(super::V8JsCode),
26151        #[prost(message, tag = "100")]
26152        V8InternalCode(super::V8InternalCode),
26153        #[prost(message, tag = "101")]
26154        V8WasmCode(super::V8WasmCode),
26155        #[prost(message, tag = "102")]
26156        V8RegExpCode(super::V8RegExpCode),
26157        #[prost(message, tag = "103")]
26158        V8CodeMove(super::V8CodeMove),
26159        /// Clock synchronization with remote machines.
26160        #[prost(message, tag = "107")]
26161        RemoteClockSync(super::RemoteClockSync),
26162        #[prost(message, tag = "110")]
26163        PixelModemEvents(super::PixelModemEvents),
26164        #[prost(message, tag = "111")]
26165        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
26166        /// This field is only used for testing.
26167        /// In previous versions of this proto this field had the id 268435455
26168        /// This caused many problems:
26169        /// - protozero decoder does not handle field ids larger than 999.
26170        /// - old versions of protoc produce Java bindings with syntax errors when
26171        ///    the field id is large enough.
26172        #[prost(message, tag = "900")]
26173        ForTesting(super::TestEvent),
26174    }
26175    /// Trusted user id of the producer which generated this packet. Keep in sync
26176    /// with TrustedPacket.trusted_uid.
26177    ///
26178    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
26179    /// instead.
26180    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
26181    pub enum OptionalTrustedUid {
26182        #[prost(int32, tag = "3")]
26183        TrustedUid(i32),
26184    }
26185    /// Service-assigned identifier of the packet sequence this packet belongs to.
26186    /// Uniquely identifies a producer + writer pair within the tracing session. A
26187    /// value of zero denotes an invalid ID. Keep in sync with
26188    /// TrustedPacket.trusted_packet_sequence_id.
26189    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
26190    pub enum OptionalTrustedPacketSequenceId {
26191        #[prost(uint32, tag = "10")]
26192        TrustedPacketSequenceId(u32),
26193    }
26194}
26195#[derive(Clone, PartialEq, ::prost::Message)]
26196pub struct Trace {
26197    #[prost(message, repeated, tag = "1")]
26198    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
26199}