perfetto_consumer_proto/
perfetto.protos.rs

1#[derive(Clone, PartialEq, ::prost::Message)]
2pub struct ObservableEvents {
3    #[prost(message, repeated, tag="1")]
4    pub instance_state_changes: ::prost::alloc::vec::Vec<observable_events::DataSourceInstanceStateChange>,
5    #[prost(bool, optional, tag="2")]
6    pub all_data_sources_started: ::core::option::Option<bool>,
7    #[prost(message, optional, tag="3")]
8    pub clone_trigger_hit: ::core::option::Option<observable_events::CloneTriggerHit>,
9}
10/// Nested message and enum types in `ObservableEvents`.
11pub mod observable_events {
12    #[derive(Clone, PartialEq, ::prost::Message)]
13    pub struct DataSourceInstanceStateChange {
14        #[prost(string, optional, tag="1")]
15        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
16        #[prost(string, optional, tag="2")]
17        pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
18        #[prost(enumeration="DataSourceInstanceState", optional, tag="3")]
19        pub state: ::core::option::Option<i32>,
20    }
21    #[derive(Clone, PartialEq, ::prost::Message)]
22    pub struct CloneTriggerHit {
23        /// The TracingSessionID of the original tracing session which had a
24        /// CLONE_SNAPSHOT trigger defined. This is necessary just because the
25        /// consumer has no idea of what is the TSID of its own tracing session and
26        /// there is no other good way to plumb it.
27        #[prost(int64, optional, tag="1")]
28        pub tracing_session_id: ::core::option::Option<i64>,
29    }
30    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
31    #[repr(i32)]
32    pub enum Type {
33        Unspecified = 0,
34        /// State changes of data source instances associated with the consumer's
35        /// session. Note that not all data sources may support these notifications.
36        /// See |will_notify_on_start/stop| in DataSourceDescriptor.
37        DataSourcesInstances = 1,
38        /// State change triggered when all data sources are in the STARTED state.
39        /// For data sources that registered with |will_notify_on_start| this happens
40        /// only after the data source has acked the start. This allows the consumer
41        /// to synchronize with the data sources and to perform actions (e.g. start a
42        /// test binary) only after trace recording is actually started.
43        /// Introduced in Android 11 (R).
44        AllDataSourcesStarted = 2,
45        /// When a tracing session has one or more triggers of type CLONE_SNAPSHOT
46        /// and a matching trigger is hit, the service will send this notification to
47        /// the consumer after |stop_delay_ms|.
48        CloneTriggerHit = 4,
49    }
50    impl Type {
51        /// String value of the enum field names used in the ProtoBuf definition.
52        ///
53        /// The values are not transformed in any way and thus are considered stable
54        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
55        pub fn as_str_name(&self) -> &'static str {
56            match self {
57                Type::Unspecified => "TYPE_UNSPECIFIED",
58                Type::DataSourcesInstances => "TYPE_DATA_SOURCES_INSTANCES",
59                Type::AllDataSourcesStarted => "TYPE_ALL_DATA_SOURCES_STARTED",
60                Type::CloneTriggerHit => "TYPE_CLONE_TRIGGER_HIT",
61            }
62        }
63    }
64    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
65    #[repr(i32)]
66    pub enum DataSourceInstanceState {
67        /// A data source is created in stopped state.
68        Stopped = 1,
69        Started = 2,
70    }
71    impl DataSourceInstanceState {
72        /// String value of the enum field names used in the ProtoBuf definition.
73        ///
74        /// The values are not transformed in any way and thus are considered stable
75        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
76        pub fn as_str_name(&self) -> &'static str {
77            match self {
78                DataSourceInstanceState::Stopped => "DATA_SOURCE_INSTANCE_STATE_STOPPED",
79                DataSourceInstanceState::Started => "DATA_SOURCE_INSTANCE_STATE_STARTED",
80            }
81        }
82    }
83}
84#[derive(Clone, PartialEq, ::prost::Message)]
85pub struct FtraceDescriptor {
86    /// Report the available atrace categories.
87    ///
88    /// Used by Traceur via `perfetto --query`.
89    #[prost(message, repeated, tag="1")]
90    pub atrace_categories: ::prost::alloc::vec::Vec<ftrace_descriptor::AtraceCategory>,
91}
92/// Nested message and enum types in `FtraceDescriptor`.
93pub mod ftrace_descriptor {
94    #[derive(Clone, PartialEq, ::prost::Message)]
95    pub struct AtraceCategory {
96        #[prost(string, optional, tag="1")]
97        pub name: ::core::option::Option<::prost::alloc::string::String>,
98        #[prost(string, optional, tag="2")]
99        pub description: ::core::option::Option<::prost::alloc::string::String>,
100    }
101}
102/// Description of GPU counters.
103/// This message is sent by a GPU counter producer to specify the counters
104/// available in the hardware.
105#[derive(Clone, PartialEq, ::prost::Message)]
106pub struct GpuCounterDescriptor {
107    #[prost(message, repeated, tag="1")]
108    pub specs: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterSpec>,
109    #[prost(message, repeated, tag="2")]
110    pub blocks: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterBlock>,
111    /// optional.  Minimum sampling period supported by the producer in
112    /// nanoseconds.
113    #[prost(uint64, optional, tag="3")]
114    pub min_sampling_period_ns: ::core::option::Option<u64>,
115    /// optional.  Maximum sampling period supported by the producer in
116    /// nanoseconds.
117    #[prost(uint64, optional, tag="4")]
118    pub max_sampling_period_ns: ::core::option::Option<u64>,
119    /// optional.  The producer supports counter sampling by instrumenting the
120    /// command buffer.
121    #[prost(bool, optional, tag="5")]
122    pub supports_instrumented_sampling: ::core::option::Option<bool>,
123}
124/// Nested message and enum types in `GpuCounterDescriptor`.
125pub mod gpu_counter_descriptor {
126    #[derive(Clone, PartialEq, ::prost::Message)]
127    pub struct GpuCounterSpec {
128        #[prost(uint32, optional, tag="1")]
129        pub counter_id: ::core::option::Option<u32>,
130        #[prost(string, optional, tag="2")]
131        pub name: ::core::option::Option<::prost::alloc::string::String>,
132        #[prost(string, optional, tag="3")]
133        pub description: ::core::option::Option<::prost::alloc::string::String>,
134        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="7")]
135        pub numerator_units: ::prost::alloc::vec::Vec<i32>,
136        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="8")]
137        pub denominator_units: ::prost::alloc::vec::Vec<i32>,
138        #[prost(bool, optional, tag="9")]
139        pub select_by_default: ::core::option::Option<bool>,
140        #[prost(enumeration="GpuCounterGroup", repeated, packed="false", tag="10")]
141        pub groups: ::prost::alloc::vec::Vec<i32>,
142        #[prost(oneof="gpu_counter_spec::PeakValue", tags="5, 6")]
143        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
144    }
145    /// Nested message and enum types in `GpuCounterSpec`.
146    pub mod gpu_counter_spec {
147        #[derive(Clone, PartialEq, ::prost::Oneof)]
148        pub enum PeakValue {
149            #[prost(int64, tag="5")]
150            IntPeakValue(i64),
151            #[prost(double, tag="6")]
152            DoublePeakValue(f64),
153        }
154    }
155    /// Allow producer to group counters into block to represent counter islands.
156    /// A capacity may be specified to indicate the number of counters that can be
157    /// enable simultaneously in that block.
158    #[derive(Clone, PartialEq, ::prost::Message)]
159    pub struct GpuCounterBlock {
160        /// required. Unique ID for the counter group.
161        #[prost(uint32, optional, tag="1")]
162        pub block_id: ::core::option::Option<u32>,
163        /// optional. Number of counters supported by the block. No limit if unset.
164        #[prost(uint32, optional, tag="2")]
165        pub block_capacity: ::core::option::Option<u32>,
166        /// optional. Name of block.
167        #[prost(string, optional, tag="3")]
168        pub name: ::core::option::Option<::prost::alloc::string::String>,
169        /// optional. Description for the block.
170        #[prost(string, optional, tag="4")]
171        pub description: ::core::option::Option<::prost::alloc::string::String>,
172        /// list of counters that are part of the block.
173        #[prost(uint32, repeated, packed="false", tag="5")]
174        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
175    }
176    /// Logical groups for a counter.  This is used in the UI to present the
177    /// related counters together.
178    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
179    #[repr(i32)]
180    pub enum GpuCounterGroup {
181        Unclassified = 0,
182        System = 1,
183        Vertices = 2,
184        Fragments = 3,
185        Primitives = 4,
186        /// Includes counters relating to caching and bandwidth.
187        Memory = 5,
188        Compute = 6,
189    }
190    impl GpuCounterGroup {
191        /// String value of the enum field names used in the ProtoBuf definition.
192        ///
193        /// The values are not transformed in any way and thus are considered stable
194        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
195        pub fn as_str_name(&self) -> &'static str {
196            match self {
197                GpuCounterGroup::Unclassified => "UNCLASSIFIED",
198                GpuCounterGroup::System => "SYSTEM",
199                GpuCounterGroup::Vertices => "VERTICES",
200                GpuCounterGroup::Fragments => "FRAGMENTS",
201                GpuCounterGroup::Primitives => "PRIMITIVES",
202                GpuCounterGroup::Memory => "MEMORY",
203                GpuCounterGroup::Compute => "COMPUTE",
204            }
205        }
206    }
207    /// next id: 41
208    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
209    #[repr(i32)]
210    pub enum MeasureUnit {
211        None = 0,
212        Bit = 1,
213        Kilobit = 2,
214        Megabit = 3,
215        Gigabit = 4,
216        Terabit = 5,
217        Petabit = 6,
218        Byte = 7,
219        Kilobyte = 8,
220        Megabyte = 9,
221        Gigabyte = 10,
222        Terabyte = 11,
223        Petabyte = 12,
224        Hertz = 13,
225        Kilohertz = 14,
226        Megahertz = 15,
227        Gigahertz = 16,
228        Terahertz = 17,
229        Petahertz = 18,
230        Nanosecond = 19,
231        Microsecond = 20,
232        Millisecond = 21,
233        Second = 22,
234        Minute = 23,
235        Hour = 24,
236        Vertex = 25,
237        Pixel = 26,
238        Triangle = 27,
239        Primitive = 38,
240        Fragment = 39,
241        Milliwatt = 28,
242        Watt = 29,
243        Kilowatt = 30,
244        Joule = 31,
245        Volt = 32,
246        Ampere = 33,
247        Celsius = 34,
248        Fahrenheit = 35,
249        Kelvin = 36,
250        /// Values should be out of 100.
251        Percent = 37,
252        Instruction = 40,
253    }
254    impl MeasureUnit {
255        /// String value of the enum field names used in the ProtoBuf definition.
256        ///
257        /// The values are not transformed in any way and thus are considered stable
258        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
259        pub fn as_str_name(&self) -> &'static str {
260            match self {
261                MeasureUnit::None => "NONE",
262                MeasureUnit::Bit => "BIT",
263                MeasureUnit::Kilobit => "KILOBIT",
264                MeasureUnit::Megabit => "MEGABIT",
265                MeasureUnit::Gigabit => "GIGABIT",
266                MeasureUnit::Terabit => "TERABIT",
267                MeasureUnit::Petabit => "PETABIT",
268                MeasureUnit::Byte => "BYTE",
269                MeasureUnit::Kilobyte => "KILOBYTE",
270                MeasureUnit::Megabyte => "MEGABYTE",
271                MeasureUnit::Gigabyte => "GIGABYTE",
272                MeasureUnit::Terabyte => "TERABYTE",
273                MeasureUnit::Petabyte => "PETABYTE",
274                MeasureUnit::Hertz => "HERTZ",
275                MeasureUnit::Kilohertz => "KILOHERTZ",
276                MeasureUnit::Megahertz => "MEGAHERTZ",
277                MeasureUnit::Gigahertz => "GIGAHERTZ",
278                MeasureUnit::Terahertz => "TERAHERTZ",
279                MeasureUnit::Petahertz => "PETAHERTZ",
280                MeasureUnit::Nanosecond => "NANOSECOND",
281                MeasureUnit::Microsecond => "MICROSECOND",
282                MeasureUnit::Millisecond => "MILLISECOND",
283                MeasureUnit::Second => "SECOND",
284                MeasureUnit::Minute => "MINUTE",
285                MeasureUnit::Hour => "HOUR",
286                MeasureUnit::Vertex => "VERTEX",
287                MeasureUnit::Pixel => "PIXEL",
288                MeasureUnit::Triangle => "TRIANGLE",
289                MeasureUnit::Primitive => "PRIMITIVE",
290                MeasureUnit::Fragment => "FRAGMENT",
291                MeasureUnit::Milliwatt => "MILLIWATT",
292                MeasureUnit::Watt => "WATT",
293                MeasureUnit::Kilowatt => "KILOWATT",
294                MeasureUnit::Joule => "JOULE",
295                MeasureUnit::Volt => "VOLT",
296                MeasureUnit::Ampere => "AMPERE",
297                MeasureUnit::Celsius => "CELSIUS",
298                MeasureUnit::Fahrenheit => "FAHRENHEIT",
299                MeasureUnit::Kelvin => "KELVIN",
300                MeasureUnit::Percent => "PERCENT",
301                MeasureUnit::Instruction => "INSTRUCTION",
302            }
303        }
304    }
305}
306#[derive(Clone, PartialEq, ::prost::Message)]
307pub struct TrackEventCategory {
308    #[prost(string, optional, tag="1")]
309    pub name: ::core::option::Option<::prost::alloc::string::String>,
310    #[prost(string, optional, tag="2")]
311    pub description: ::core::option::Option<::prost::alloc::string::String>,
312    #[prost(string, repeated, tag="3")]
313    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
314}
315#[derive(Clone, PartialEq, ::prost::Message)]
316pub struct TrackEventDescriptor {
317    #[prost(message, repeated, tag="1")]
318    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
319}
320/// This message is sent from Producer(s) to the tracing Service when registering
321/// to advertise their capabilities. It describes the structure of tracing
322/// protos that will be produced by the data source and the supported filters.
323#[derive(Clone, PartialEq, ::prost::Message)]
324pub struct DataSourceDescriptor {
325    /// e.g., "linux.ftrace", "chromium.tracing"
326    #[prost(string, optional, tag="1")]
327    pub name: ::core::option::Option<::prost::alloc::string::String>,
328    /// When non-zero, this is a unique ID within the scope of the Producer for
329    /// this data source (it is NOT globally unique). This is useful to
330    /// differentiate between data sources with matching names when calling
331    /// UpdateDataSource(). This field has been introduced in November 2021
332    /// (v22, Android T) and is not supported on older versions.
333    #[prost(uint64, optional, tag="7")]
334    pub id: ::core::option::Option<u64>,
335    /// When true the data source is expected to ack the stop request through the
336    /// NotifyDataSourceStopped() IPC. This field has been introduced after
337    /// Android P in Jul 2018 and is not supported on older versions.
338    #[prost(bool, optional, tag="2")]
339    pub will_notify_on_stop: ::core::option::Option<bool>,
340    /// When true the data source is expected to ack the start request through the
341    /// NotifyDataSourceStarted() IPC. This field has been introduced after
342    /// Android P in March 2019 and is not supported on older versions.
343    #[prost(bool, optional, tag="3")]
344    pub will_notify_on_start: ::core::option::Option<bool>,
345    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
346    /// set if the data source writes packets that refer to previous trace
347    /// contents, and knows how to stop referring to the already-emitted data.
348    #[prost(bool, optional, tag="4")]
349    pub handles_incremental_state_clear: ::core::option::Option<bool>,
350    /// If true, indicates that the data source does nothing upon Flush. This
351    /// allows the service to reduce the flush-related IPC traffic and better deal
352    /// with frozen producers (see go/perfetto-frozen). This is usually the case
353    /// for data sources like 'track_event' that don't have access to the various
354    /// thread task runners to post a flush task and rely purely on server-side
355    /// scraping.
356    /// Introduced in v39 / Android V.
357    #[prost(bool, optional, tag="9")]
358    pub no_flush: ::core::option::Option<bool>,
359    /// Optional specification about available GPU counters.
360    #[prost(message, optional, tag="5")]
361    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
362    #[prost(message, optional, tag="6")]
363    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
364    #[prost(message, optional, tag="8")]
365    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
366}
367/// Reports the state of the tracing service. Used to gather details about the
368/// data sources connected.
369/// See ConsumerPort::QueryServiceState().
370#[derive(Clone, PartialEq, ::prost::Message)]
371pub struct TracingServiceState {
372    /// Lists all the producers connected.
373    #[prost(message, repeated, tag="1")]
374    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
375    /// Lists the data sources available.
376    #[prost(message, repeated, tag="2")]
377    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
378    /// Lists the tracing sessions active AND owned by a consumer that has the same
379    /// UID of the caller (or all of them if the caller is root).
380    /// Introduced in v24 / Android T.
381    #[prost(message, repeated, tag="6")]
382    pub tracing_sessions: ::prost::alloc::vec::Vec<tracing_service_state::TracingSession>,
383    /// This is always set to true from v24 and beyond. This flag is only used to
384    /// tell the difference between: (1) talking to a recent service which happens
385    /// to have no tracing session active; (2) talking to an older version of the
386    /// service which will never report any tracing session.
387    #[prost(bool, optional, tag="7")]
388    pub supports_tracing_sessions: ::core::option::Option<bool>,
389    /// Total number of tracing sessions.
390    #[prost(int32, optional, tag="3")]
391    pub num_sessions: ::core::option::Option<i32>,
392    /// Number of tracing sessions in the started state. Always <= num_sessions.
393    #[prost(int32, optional, tag="4")]
394    pub num_sessions_started: ::core::option::Option<i32>,
395    /// The version of traced (the same returned by `traced --version`).
396    /// This is a human readable string with and its format varies depending on
397    /// the build system and the repo (standalone vs AOSP).
398    /// This is intended for human debugging only.
399    #[prost(string, optional, tag="5")]
400    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
401}
402/// Nested message and enum types in `TracingServiceState`.
403pub mod tracing_service_state {
404    /// Describes a producer process.
405    #[derive(Clone, PartialEq, ::prost::Message)]
406    pub struct Producer {
407        /// Unique ID of the producer (monotonic counter).
408        #[prost(int32, optional, tag="1")]
409        pub id: ::core::option::Option<i32>,
410        /// Typically matches the process name.
411        #[prost(string, optional, tag="2")]
412        pub name: ::core::option::Option<::prost::alloc::string::String>,
413        /// Unix pid of the remote process. Supported only on Linux-based systems.
414        /// Introduced in v24 / Android T.
415        #[prost(int32, optional, tag="5")]
416        pub pid: ::core::option::Option<i32>,
417        /// Unix uid of the remote process.
418        #[prost(int32, optional, tag="3")]
419        pub uid: ::core::option::Option<i32>,
420        /// The version of the client library used by the producer.
421        /// This is a human readable string with and its format varies depending on
422        /// the build system and the repo (standalone vs AOSP).
423        /// This is intended for human debugging only.
424        #[prost(string, optional, tag="4")]
425        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
426    }
427    /// Describes a data source registered by a producer. Data sources are listed
428    /// regardless of the fact that they are being used or not.
429    #[derive(Clone, PartialEq, ::prost::Message)]
430    pub struct DataSource {
431        /// Descriptor passed by the data source when calling RegisterDataSource().
432        #[prost(message, optional, tag="1")]
433        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
434        /// ID of the producer, as per Producer.id.
435        #[prost(int32, optional, tag="2")]
436        pub producer_id: ::core::option::Option<i32>,
437    }
438    #[derive(Clone, PartialEq, ::prost::Message)]
439    pub struct TracingSession {
440        /// The TracingSessionID.
441        #[prost(uint64, optional, tag="1")]
442        pub id: ::core::option::Option<u64>,
443        /// The Unix uid of the consumer that started the session.
444        /// This is meaningful only if the caller is root. In all other cases only
445        /// tracing sessions that match the caller UID will be displayed.
446        #[prost(int32, optional, tag="2")]
447        pub consumer_uid: ::core::option::Option<i32>,
448        /// Internal state of the tracing session.
449        /// These strings are FYI only and subjected to change.
450        #[prost(string, optional, tag="3")]
451        pub state: ::core::option::Option<::prost::alloc::string::String>,
452        /// The unique_session_name as set in the trace config (might be empty).
453        #[prost(string, optional, tag="4")]
454        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
455        /// The number and size of each buffer.
456        #[prost(uint32, repeated, packed="false", tag="5")]
457        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
458        /// Duration, as specified in the TraceConfig.duration_ms.
459        #[prost(uint32, optional, tag="6")]
460        pub duration_ms: ::core::option::Option<u32>,
461        /// Number of data sources involved in the session.
462        #[prost(uint32, optional, tag="7")]
463        pub num_data_sources: ::core::option::Option<u32>,
464        /// Time when the session was started, in the CLOCK_REALTIME domain.
465        /// Available only on Linux-based systems.
466        #[prost(int64, optional, tag="8")]
467        pub start_realtime_ns: ::core::option::Option<i64>,
468    }
469}
470#[derive(Clone, PartialEq, ::prost::Message)]
471pub struct TracingServiceCapabilities {
472    /// Whether the service supports QueryCapabilities() at all or not.
473    /// This is only used at the C++ level to distinguish the case of talking to
474    /// an older version of the service that doesn't support QueryCapabilities().
475    /// In that case the IPC layer will just reject the unknown call, and the
476    /// consumer_ipc_client_impl.cc will return an empty message where this field
477    /// is false. In all other cases, this is always set to true.
478    #[prost(bool, optional, tag="1")]
479    pub has_query_capabilities: ::core::option::Option<bool>,
480    /// The set of known events that can be passed to ConsumerPort.ObserveEvents().
481    #[prost(enumeration="observable_events::Type", repeated, packed="false", tag="2")]
482    pub observable_events: ::prost::alloc::vec::Vec<i32>,
483    /// Whether the service supports TraceConfig.output_path (for asking traced to
484    /// create the output file instead of passing a file descriptor).
485    #[prost(bool, optional, tag="3")]
486    pub has_trace_config_output_path: ::core::option::Option<bool>,
487    /// Whether the service supports CloneSession and CLONE_SNAPSHOT triggers.
488    #[prost(bool, optional, tag="4")]
489    pub has_clone_session: ::core::option::Option<bool>,
490}
491/// Statistics for the internals of the tracing service.
492///
493/// Next id: 19.
494#[derive(Clone, PartialEq, ::prost::Message)]
495pub struct TraceStats {
496    /// Stats for the TraceBuffer(s) of the current trace session.
497    #[prost(message, repeated, tag="1")]
498    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
499    /// The thresholds of each the `writer_stats` histogram buckets. This is
500    /// emitted only once as all WriterStats share the same bucket layout.
501    /// This field has the same cardinality of the
502    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
503    /// (The -1 is because the last overflow bucket is not reported in the _def).
504    /// An array of values [10, 100, 1000] in the _def array means that there are
505    /// four buckets (3 + the implicit overflow bucket):
506    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
507    #[prost(int64, repeated, packed="false", tag="17")]
508    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
509    #[prost(message, repeated, tag="18")]
510    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
511    /// Num. producers connected (whether they are involved in the current tracing
512    /// session or not).
513    #[prost(uint32, optional, tag="2")]
514    pub producers_connected: ::core::option::Option<u32>,
515    /// Num. producers ever seen for all trace sessions since startup (it's a good
516    /// proxy for inferring num. producers crashed / killed).
517    #[prost(uint64, optional, tag="3")]
518    pub producers_seen: ::core::option::Option<u64>,
519    /// Num. data sources registered for all trace sessions.
520    #[prost(uint32, optional, tag="4")]
521    pub data_sources_registered: ::core::option::Option<u32>,
522    /// Num. data sources ever seen for all trace sessions since startup.
523    #[prost(uint64, optional, tag="5")]
524    pub data_sources_seen: ::core::option::Option<u64>,
525    /// Num. concurrently active tracing sessions.
526    #[prost(uint32, optional, tag="6")]
527    pub tracing_sessions: ::core::option::Option<u32>,
528    /// Num. buffers for all tracing session (not just the current one). This will
529    /// be >= buffer_stats.size(), because the latter is only about the current
530    /// session.
531    #[prost(uint32, optional, tag="7")]
532    pub total_buffers: ::core::option::Option<u32>,
533    // The fields below have been introduced in Android Q.
534
535    /// Num. chunks that were discarded by the service before attempting to commit
536    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
537    #[prost(uint64, optional, tag="8")]
538    pub chunks_discarded: ::core::option::Option<u64>,
539    /// Num. patches that were discarded by the service before attempting to apply
540    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
541    #[prost(uint64, optional, tag="9")]
542    pub patches_discarded: ::core::option::Option<u64>,
543    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
544    /// is a bug in the producer.
545    #[prost(uint64, optional, tag="10")]
546    pub invalid_packets: ::core::option::Option<u64>,
547    #[prost(message, optional, tag="11")]
548    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
549    /// Count of Flush() requests (either from the Consumer, or self-induced
550    /// periodic flushes). The final Flush() is also included in the count.
551    #[prost(uint64, optional, tag="12")]
552    pub flushes_requested: ::core::option::Option<u64>,
553    /// The count of the Flush() requests that were completed successfully.
554    /// In a well behaving trace this should always be == `flush_requests`.
555    #[prost(uint64, optional, tag="13")]
556    pub flushes_succeeded: ::core::option::Option<u64>,
557    /// The count of the Flush() requests that failed (in most timed out).
558    /// In a well behaving trace this should always be == 0.
559    #[prost(uint64, optional, tag="14")]
560    pub flushes_failed: ::core::option::Option<u64>,
561    #[prost(enumeration="trace_stats::FinalFlushOutcome", optional, tag="15")]
562    pub final_flush_outcome: ::core::option::Option<i32>,
563}
564/// Nested message and enum types in `TraceStats`.
565pub mod trace_stats {
566    /// From TraceBuffer::Stats.
567    ///
568    /// Next id: 21.
569    #[derive(Clone, PartialEq, ::prost::Message)]
570    pub struct BufferStats {
571        /// Size of the circular buffer in bytes.
572        #[prost(uint64, optional, tag="12")]
573        pub buffer_size: ::core::option::Option<u64>,
574        /// Num. bytes written into the circular buffer, including chunk headers.
575        #[prost(uint64, optional, tag="1")]
576        pub bytes_written: ::core::option::Option<u64>,
577        /// Num. bytes overwritten before they have been read (i.e. loss of data).
578        #[prost(uint64, optional, tag="13")]
579        pub bytes_overwritten: ::core::option::Option<u64>,
580        /// Total size of chunks that were fully read from the circular buffer by the
581        /// consumer. This may not be equal to |bytes_written| either in the middle
582        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
583        /// size of the chunks read from the buffer, including chunk headers, which
584        /// will be different from the total size of packets returned to the
585        /// consumer.
586        ///
587        /// The current utilization of the trace buffer (mid-tracing) can be obtained
588        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
589        /// adding the difference of |padding_bytes_written| and
590        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
591        /// Note that this represents the total size of buffered data in the buffer,
592        /// yet this data may be spread non-contiguously through the buffer and may
593        /// be overridden before the utilization reaches 100%.
594        #[prost(uint64, optional, tag="14")]
595        pub bytes_read: ::core::option::Option<u64>,
596        /// Num. bytes that were allocated as padding between chunks in the circular
597        /// buffer.
598        #[prost(uint64, optional, tag="15")]
599        pub padding_bytes_written: ::core::option::Option<u64>,
600        /// Num. of padding bytes that were removed from the circular buffer when
601        /// they were overwritten.
602        ///
603        /// The difference between |padding_bytes_written| and
604        /// |padding_bytes_cleared| denotes the total size of padding currently
605        /// present in the buffer.
606        #[prost(uint64, optional, tag="16")]
607        pub padding_bytes_cleared: ::core::option::Option<u64>,
608        /// Num. chunks (!= packets) written into the buffer.
609        #[prost(uint64, optional, tag="2")]
610        pub chunks_written: ::core::option::Option<u64>,
611        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
612        /// the same chunk with additional packets appended to the end.
613        #[prost(uint64, optional, tag="10")]
614        pub chunks_rewritten: ::core::option::Option<u64>,
615        /// Num. chunks overwritten before they have been read (i.e. loss of data).
616        #[prost(uint64, optional, tag="3")]
617        pub chunks_overwritten: ::core::option::Option<u64>,
618        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
619        /// is configured with FillPolicy == DISCARD.
620        #[prost(uint64, optional, tag="18")]
621        pub chunks_discarded: ::core::option::Option<u64>,
622        /// Num. chunks (!= packets) that were fully read from the circular buffer by
623        /// the consumer. This may not be equal to |chunks_written| either in the
624        /// middle of tracing, or if |chunks_overwritten| is non-zero.
625        #[prost(uint64, optional, tag="17")]
626        pub chunks_read: ::core::option::Option<u64>,
627        /// Num. chunks that were committed out of order.
628        #[prost(uint64, optional, tag="11")]
629        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
630        /// Num. times the ring buffer wrapped around.
631        #[prost(uint64, optional, tag="4")]
632        pub write_wrap_count: ::core::option::Option<u64>,
633        /// Num. out-of-band (OOB) patches that succeeded.
634        #[prost(uint64, optional, tag="5")]
635        pub patches_succeeded: ::core::option::Option<u64>,
636        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
637        #[prost(uint64, optional, tag="6")]
638        pub patches_failed: ::core::option::Option<u64>,
639        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
640        /// successful packet read.
641        #[prost(uint64, optional, tag="7")]
642        pub readaheads_succeeded: ::core::option::Option<u64>,
643        /// Num. readaheads aborted because of missing chunks in the sequence stream.
644        /// Note that a small number > 0 is totally expected: occasionally, when
645        /// issuing a read, the very last packet in a sequence might be incomplete
646        /// (because the producer is still writing it while we read). The read will
647        /// stop at that point, for that sequence, increasing this counter.
648        #[prost(uint64, optional, tag="8")]
649        pub readaheads_failed: ::core::option::Option<u64>,
650        /// Num. of violations of the SharedMemoryABI found while writing or reading
651        /// the buffer. This is an indication of either a bug in the producer(s) or
652        /// malicious producer(s).
653        #[prost(uint64, optional, tag="9")]
654        pub abi_violations: ::core::option::Option<u64>,
655        // The fields below have been introduced in Android R.
656
657        /// Num. of times the service detected packet loss on a trace writer
658        /// sequence. This is usually caused by exhaustion of available chunks in the
659        /// writer process's SMB. Note that this relies on the client's TraceWriter
660        /// indicating this loss to the service -- packets lost for other reasons are
661        /// not reflected in this stat.
662        #[prost(uint64, optional, tag="19")]
663        pub trace_writer_packet_loss: ::core::option::Option<u64>,
664    }
665    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
666    /// visible as a unique sequence ID in the trace.
667    #[derive(Clone, PartialEq, ::prost::Message)]
668    pub struct WriterStats {
669        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
670        /// correlate the stats with the actual packet types.
671        #[prost(uint64, optional, tag="1")]
672        pub sequence_id: ::core::option::Option<u64>,
673        /// The buffer index (0..N, as defined in the TraceConfig).
674        #[prost(uint32, optional, tag="4")]
675        pub buffer: ::core::option::Option<u32>,
676        /// These two arrays have the same cardinality and match the cardinality of
677        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
678        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
679        /// for each bucket.
680        #[prost(uint64, repeated, tag="2")]
681        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
682        #[prost(int64, repeated, tag="3")]
683        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
684    }
685    /// This is set only when the TraceConfig specifies a TraceFilter.
686    #[derive(Clone, PartialEq, ::prost::Message)]
687    pub struct FilterStats {
688        #[prost(uint64, optional, tag="1")]
689        pub input_packets: ::core::option::Option<u64>,
690        #[prost(uint64, optional, tag="2")]
691        pub input_bytes: ::core::option::Option<u64>,
692        #[prost(uint64, optional, tag="3")]
693        pub output_bytes: ::core::option::Option<u64>,
694        #[prost(uint64, optional, tag="4")]
695        pub errors: ::core::option::Option<u64>,
696        #[prost(uint64, optional, tag="5")]
697        pub time_taken_ns: ::core::option::Option<u64>,
698        /// The number of bytes discarded by the filter (i.e. output - input).
699        /// The array has one entry for each buffer defined in the config (unless no
700        /// packets for that buffer were seen and hence filtered).
701        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
702        /// (output_bytes - input_bytes) because the filter might also discard
703        /// server-generated synthetic packets, that have no buffer index.
704        #[prost(uint64, repeated, packed="false", tag="20")]
705        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
706    }
707    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
708    #[repr(i32)]
709    pub enum FinalFlushOutcome {
710        FinalFlushUnspecified = 0,
711        FinalFlushSucceeded = 1,
712        FinalFlushFailed = 2,
713    }
714    impl FinalFlushOutcome {
715        /// String value of the enum field names used in the ProtoBuf definition.
716        ///
717        /// The values are not transformed in any way and thus are considered stable
718        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
719        pub fn as_str_name(&self) -> &'static str {
720            match self {
721                FinalFlushOutcome::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
722                FinalFlushOutcome::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
723                FinalFlushOutcome::FinalFlushFailed => "FINAL_FLUSH_FAILED",
724            }
725        }
726    }
727}
728#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
729#[repr(i32)]
730pub enum BuiltinClock {
731    Unknown = 0,
732    Realtime = 1,
733    RealtimeCoarse = 2,
734    Monotonic = 3,
735    MonotonicCoarse = 4,
736    MonotonicRaw = 5,
737    Boottime = 6,
738    MaxId = 63,
739}
740impl BuiltinClock {
741    /// String value of the enum field names used in the ProtoBuf definition.
742    ///
743    /// The values are not transformed in any way and thus are considered stable
744    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
745    pub fn as_str_name(&self) -> &'static str {
746        match self {
747            BuiltinClock::Unknown => "BUILTIN_CLOCK_UNKNOWN",
748            BuiltinClock::Realtime => "BUILTIN_CLOCK_REALTIME",
749            BuiltinClock::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
750            BuiltinClock::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
751            BuiltinClock::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
752            BuiltinClock::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
753            BuiltinClock::Boottime => "BUILTIN_CLOCK_BOOTTIME",
754            BuiltinClock::MaxId => "BUILTIN_CLOCK_MAX_ID",
755        }
756    }
757}
758/// Data source that lists game modes and game interventions of games
759/// on an Android device.
760#[derive(Clone, PartialEq, ::prost::Message)]
761pub struct AndroidGameInterventionListConfig {
762    /// If not empty, emit info about only the following list of package names
763    /// (exact match, no regex). Otherwise, emit info about all packages.
764    #[prost(string, repeated, tag="1")]
765    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
766}
767/// Values from NDK's android/log.h.
768#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
769#[repr(i32)]
770pub enum AndroidLogId {
771    /// MAIN.
772    LidDefault = 0,
773    LidRadio = 1,
774    LidEvents = 2,
775    LidSystem = 3,
776    LidCrash = 4,
777    LidStats = 5,
778    LidSecurity = 6,
779    LidKernel = 7,
780}
781impl AndroidLogId {
782    /// String value of the enum field names used in the ProtoBuf definition.
783    ///
784    /// The values are not transformed in any way and thus are considered stable
785    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
786    pub fn as_str_name(&self) -> &'static str {
787        match self {
788            AndroidLogId::LidDefault => "LID_DEFAULT",
789            AndroidLogId::LidRadio => "LID_RADIO",
790            AndroidLogId::LidEvents => "LID_EVENTS",
791            AndroidLogId::LidSystem => "LID_SYSTEM",
792            AndroidLogId::LidCrash => "LID_CRASH",
793            AndroidLogId::LidStats => "LID_STATS",
794            AndroidLogId::LidSecurity => "LID_SECURITY",
795            AndroidLogId::LidKernel => "LID_KERNEL",
796        }
797    }
798}
799#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
800#[repr(i32)]
801pub enum AndroidLogPriority {
802    PrioUnspecified = 0,
803    /// _DEFAULT, but should never be seen in logs.
804    PrioUnused = 1,
805    PrioVerbose = 2,
806    PrioDebug = 3,
807    PrioInfo = 4,
808    PrioWarn = 5,
809    PrioError = 6,
810    PrioFatal = 7,
811}
812impl AndroidLogPriority {
813    /// String value of the enum field names used in the ProtoBuf definition.
814    ///
815    /// The values are not transformed in any way and thus are considered stable
816    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
817    pub fn as_str_name(&self) -> &'static str {
818        match self {
819            AndroidLogPriority::PrioUnspecified => "PRIO_UNSPECIFIED",
820            AndroidLogPriority::PrioUnused => "PRIO_UNUSED",
821            AndroidLogPriority::PrioVerbose => "PRIO_VERBOSE",
822            AndroidLogPriority::PrioDebug => "PRIO_DEBUG",
823            AndroidLogPriority::PrioInfo => "PRIO_INFO",
824            AndroidLogPriority::PrioWarn => "PRIO_WARN",
825            AndroidLogPriority::PrioError => "PRIO_ERROR",
826            AndroidLogPriority::PrioFatal => "PRIO_FATAL",
827        }
828    }
829}
830#[derive(Clone, PartialEq, ::prost::Message)]
831pub struct AndroidLogConfig {
832    #[prost(enumeration="AndroidLogId", repeated, packed="false", tag="1")]
833    pub log_ids: ::prost::alloc::vec::Vec<i32>,
834    /// If set ignores all log messages whose prio is < the given value.
835    #[prost(enumeration="AndroidLogPriority", optional, tag="3")]
836    pub min_prio: ::core::option::Option<i32>,
837    /// If non-empty ignores all log messages whose tag doesn't match one of the
838    /// specified values.
839    #[prost(string, repeated, tag="4")]
840    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
841}
842/// Data source that polls for display state. This should only be used for
843/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
844#[derive(Clone, PartialEq, ::prost::Message)]
845pub struct AndroidPolledStateConfig {
846    /// Frequency of polling. If absent the state will be recorded once, at the
847    /// start of the trace.
848    /// This is required to be > 100ms to avoid excessive CPU usage.
849    #[prost(uint32, optional, tag="1")]
850    pub poll_ms: ::core::option::Option<u32>,
851}
852/// Data source that polls for system properties.
853#[derive(Clone, PartialEq, ::prost::Message)]
854pub struct AndroidSystemPropertyConfig {
855    /// Frequency of polling. If absent the state will be recorded once, at the
856    /// start of the trace.
857    /// This is required to be > 100ms to avoid excessive CPU usage.
858    #[prost(uint32, optional, tag="1")]
859    pub poll_ms: ::core::option::Option<u32>,
860    /// Properties to poll. All property names must start with "debug.tracing.".
861    #[prost(string, repeated, tag="2")]
862    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
863}
864/// Data source that controls the system properties used to guard initialization
865/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
866/// processes like SurfaceFlinger.
867///
868/// This data source only tells Skia to initialized the Perfetto SDK and start
869/// routing data to the Track Event system instead of ATrace. For those events
870/// to actually show up in a trace, the track_event data source must be used as
871/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
872/// processes may need to be restarted for Skia to revert to using ATrace if
873/// Track Events are no longer desired.
874///
875/// In addition to switching Skia to use Perfetto's track_event data source,
876/// this "guard" also controls Skia's "broad tracing", which removes Skia's
877/// internal tracing constraints and allows the track_event config to specify
878/// which categories should be traced. Filtering to the "skia.always" category
879/// *tag* in a track_event config can be used to re-enable the standard
880/// constraints typically used with ATrace.
881///
882/// Data source name: android.sdk_sysprop_guard
883/// Introduced in Android 14 (U) QPR1.
884/// Next id: 4
885#[derive(Clone, PartialEq, ::prost::Message)]
886pub struct AndroidSdkSyspropGuardConfig {
887    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
888    /// integration with the track_event data source in RenderEngine.
889    /// If false or omitted, the simpler ATrace fallback is used.
890    ///
891    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
892    /// restarted.
893    ///
894    /// Specifically this sets the following system properties:
895    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
896    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
897    ///
898    /// Does not affect actual track_event data *collection*, which must be
899    /// configured seperately.
900    #[prost(bool, optional, tag="1")]
901    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
902    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
903    /// with the track_event data source. hwui_package_name_filter
904    /// can be used to control which apps are affected.
905    /// If false or omitted, the simpler ATrace fallback is used.
906    ///
907    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
908    /// restarted.
909    ///
910    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
911    /// If filtering is NOT set, this controls these GLOBAL system properties:
912    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
913    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
914    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
915    /// for each package listed in the filter:
916    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
917    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
918    ///
919    /// Does not affect actual track_event data *collection*, which must be
920    /// configured seperately.
921    #[prost(bool, optional, tag="2")]
922    pub hwui_skia_track_events: ::core::option::Option<bool>,
923    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
924    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
925    #[prost(string, repeated, tag="3")]
926    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
927}
928/// Network tracing data source that records details on all packets sent or
929/// received by the network.
930#[derive(Clone, PartialEq, ::prost::Message)]
931pub struct NetworkPacketTraceConfig {
932    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
933    /// ring buffer. The polling interval should be such that the ring buffer is
934    /// unlikely to fill in that interval (or that filling is an acceptable risk).
935    /// The minimum polling rate is 100ms (values below this are ignored).
936    /// Introduced in Android 14 (U).
937    #[prost(uint32, optional, tag="1")]
938    pub poll_ms: ::core::option::Option<u32>,
939    /// The aggregation_threshold is the number of packets at which an event will
940    /// switch from per-packet details to aggregate details. For example, a value
941    /// of 50 means that if a particular event (grouped by the unique combinations
942    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
943    /// packets, the exact timestamp and length are recorded for each packet. If
944    /// there were 50 or more packets in an event, it would only record the total
945    /// duration, packets, and length. A value of zero or unspecified will always
946    /// / record per-packet details. A value of 1 always records aggregate details.
947    #[prost(uint32, optional, tag="2")]
948    pub aggregation_threshold: ::core::option::Option<u32>,
949    /// Specifies the maximum number of packet contexts to intern at a time. This
950    /// prevents the interning table from growing too large and controls whether
951    /// interning is enabled or disabled (a value of zero disables interning and
952    /// is the default). When a data sources interning table reaches this amount,
953    /// packet contexts will be inlined into NetworkPacketEvents.
954    #[prost(uint32, optional, tag="3")]
955    pub intern_limit: ::core::option::Option<u32>,
956    /// The following fields specify whether certain fields should be dropped from
957    /// the output. Dropping fields improves normalization results, reduces the
958    /// size of the interning table, and slightly reduces event size.
959    #[prost(bool, optional, tag="4")]
960    pub drop_local_port: ::core::option::Option<bool>,
961    #[prost(bool, optional, tag="5")]
962    pub drop_remote_port: ::core::option::Option<bool>,
963    #[prost(bool, optional, tag="6")]
964    pub drop_tcp_flags: ::core::option::Option<bool>,
965}
966/// Data source that lists details (such as version code) about packages on an
967/// Android device.
968#[derive(Clone, PartialEq, ::prost::Message)]
969pub struct PackagesListConfig {
970    /// If not empty, emit info about only the following list of package names
971    /// (exact match, no regex). Otherwise, emit info about all packages.
972    #[prost(string, repeated, tag="1")]
973    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
974}
975#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
976#[repr(i32)]
977pub enum ProtoLogLevel {
978    ProtologLevelUndefined = 0,
979    ProtologLevelDebug = 1,
980    ProtologLevelVerbose = 2,
981    ProtologLevelInfo = 3,
982    ProtologLevelWarn = 4,
983    ProtologLevelError = 5,
984    ProtologLevelWtf = 6,
985}
986impl ProtoLogLevel {
987    /// String value of the enum field names used in the ProtoBuf definition.
988    ///
989    /// The values are not transformed in any way and thus are considered stable
990    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
991    pub fn as_str_name(&self) -> &'static str {
992        match self {
993            ProtoLogLevel::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
994            ProtoLogLevel::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
995            ProtoLogLevel::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
996            ProtoLogLevel::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
997            ProtoLogLevel::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
998            ProtoLogLevel::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
999            ProtoLogLevel::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
1000        }
1001    }
1002}
1003/// Custom configuration for the "android.protolog" data source.
1004/// ProtoLog is a logging mechanism that is intented to be more efficient than
1005/// logcat. This configures what logs to capture in the tracing instance.
1006#[derive(Clone, PartialEq, ::prost::Message)]
1007pub struct ProtoLogConfig {
1008    /// Specified the configurations for each of the logging groups. If none is
1009    /// specified for a group the defaults will be used.
1010    #[prost(message, repeated, tag="1")]
1011    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
1012}
1013#[derive(Clone, PartialEq, ::prost::Message)]
1014pub struct ProtoLogGroup {
1015    /// The ProtoLog tag this configuration entry applies to.
1016    #[prost(string, optional, tag="1")]
1017    pub tag: ::core::option::Option<::prost::alloc::string::String>,
1018    /// Specify the level from which to start capturing protologs.
1019    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
1020    /// message will be traced.
1021    #[prost(enumeration="ProtoLogLevel", optional, tag="2")]
1022    pub log_from: ::core::option::Option<i32>,
1023}
1024/// Custom configuration for the "android.surfaceflinger.layers" data source.
1025#[derive(Clone, PartialEq, ::prost::Message)]
1026pub struct SurfaceFlingerLayersConfig {
1027    #[prost(enumeration="surface_flinger_layers_config::Mode", optional, tag="1")]
1028    pub mode: ::core::option::Option<i32>,
1029    #[prost(enumeration="surface_flinger_layers_config::TraceFlag", repeated, packed="false", tag="2")]
1030    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
1031}
1032/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
1033pub mod surface_flinger_layers_config {
1034    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1035    #[repr(i32)]
1036    pub enum Mode {
1037        Unspecified = 0,
1038        /// Trace layers snapshots. A snapshot is taken every time a layers change
1039        /// occurs.
1040        Active = 1,
1041        /// Generate layers snapshots from the transactions kept in the
1042        /// SurfaceFlinger's internal ring buffer.
1043        /// The layers snapshots generation occurs when this data source is flushed.
1044        Generated = 2,
1045        /// Trace a single layers snapshot.
1046        Dump = 3,
1047        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1048        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only when a bugreport
1049        /// is taken.
1050        GeneratedBugreportOnly = 4,
1051    }
1052    impl Mode {
1053        /// String value of the enum field names used in the ProtoBuf definition.
1054        ///
1055        /// The values are not transformed in any way and thus are considered stable
1056        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1057        pub fn as_str_name(&self) -> &'static str {
1058            match self {
1059                Mode::Unspecified => "MODE_UNSPECIFIED",
1060                Mode::Active => "MODE_ACTIVE",
1061                Mode::Generated => "MODE_GENERATED",
1062                Mode::Dump => "MODE_DUMP",
1063                Mode::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
1064            }
1065        }
1066    }
1067    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1068    #[repr(i32)]
1069    pub enum TraceFlag {
1070        Unspecified = 0,
1071        Input = 2,
1072        Composition = 4,
1073        Extra = 8,
1074        Hwc = 16,
1075        Buffers = 32,
1076        VirtualDisplays = 64,
1077        /// INPUT | COMPOSITION | EXTRA
1078        All = 14,
1079    }
1080    impl TraceFlag {
1081        /// String value of the enum field names used in the ProtoBuf definition.
1082        ///
1083        /// The values are not transformed in any way and thus are considered stable
1084        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1085        pub fn as_str_name(&self) -> &'static str {
1086            match self {
1087                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
1088                TraceFlag::Input => "TRACE_FLAG_INPUT",
1089                TraceFlag::Composition => "TRACE_FLAG_COMPOSITION",
1090                TraceFlag::Extra => "TRACE_FLAG_EXTRA",
1091                TraceFlag::Hwc => "TRACE_FLAG_HWC",
1092                TraceFlag::Buffers => "TRACE_FLAG_BUFFERS",
1093                TraceFlag::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
1094                TraceFlag::All => "TRACE_FLAG_ALL",
1095            }
1096        }
1097    }
1098}
1099/// Custom configuration for the "android.surfaceflinger.transactions" data
1100/// source.
1101#[derive(Clone, PartialEq, ::prost::Message)]
1102pub struct SurfaceFlingerTransactionsConfig {
1103    #[prost(enumeration="surface_flinger_transactions_config::Mode", optional, tag="1")]
1104    pub mode: ::core::option::Option<i32>,
1105}
1106/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
1107pub mod surface_flinger_transactions_config {
1108    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1109    #[repr(i32)]
1110    pub enum Mode {
1111        Unspecified = 0,
1112        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1113        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1114        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1115        /// initial state and the latest transactions.
1116        Continuous = 1,
1117        /// SurfaceFlinger writes the initial state and then each incoming
1118        /// transaction until the data source is stopped.
1119        Active = 2,
1120    }
1121    impl Mode {
1122        /// String value of the enum field names used in the ProtoBuf definition.
1123        ///
1124        /// The values are not transformed in any way and thus are considered stable
1125        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1126        pub fn as_str_name(&self) -> &'static str {
1127            match self {
1128                Mode::Unspecified => "MODE_UNSPECIFIED",
1129                Mode::Continuous => "MODE_CONTINUOUS",
1130                Mode::Active => "MODE_ACTIVE",
1131            }
1132        }
1133    }
1134}
1135#[derive(Clone, PartialEq, ::prost::Message)]
1136pub struct ChromeConfig {
1137    #[prost(string, optional, tag="1")]
1138    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1139    /// When enabled, the data source should only fill in fields in the output that
1140    /// are not potentially privacy sensitive.
1141    #[prost(bool, optional, tag="2")]
1142    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1143    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1144    /// JSON format. Note that the trace data will still be returned as a series of
1145    /// TracePackets, but the embedded data will be JSON instead of serialized
1146    /// protobuf.
1147    #[prost(bool, optional, tag="3")]
1148    pub convert_to_legacy_json: ::core::option::Option<bool>,
1149    #[prost(enumeration="chrome_config::ClientPriority", optional, tag="4")]
1150    pub client_priority: ::core::option::Option<i32>,
1151    /// Applicable only when using legacy JSON format.
1152    /// If |json_agent_label_filter| is not empty, only data pertaining to
1153    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1154    #[prost(string, optional, tag="5")]
1155    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1156}
1157/// Nested message and enum types in `ChromeConfig`.
1158pub mod chrome_config {
1159    /// Priority of the tracing session client. A higher priority session may
1160    /// preempt a lower priority one in configurations where concurrent sessions
1161    /// aren't supported.
1162    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1163    #[repr(i32)]
1164    pub enum ClientPriority {
1165        Unknown = 0,
1166        Background = 1,
1167        UserInitiated = 2,
1168    }
1169    impl ClientPriority {
1170        /// String value of the enum field names used in the ProtoBuf definition.
1171        ///
1172        /// The values are not transformed in any way and thus are considered stable
1173        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1174        pub fn as_str_name(&self) -> &'static str {
1175            match self {
1176                ClientPriority::Unknown => "UNKNOWN",
1177                ClientPriority::Background => "BACKGROUND",
1178                ClientPriority::UserInitiated => "USER_INITIATED",
1179            }
1180        }
1181    }
1182}
1183#[derive(Clone, PartialEq, ::prost::Message)]
1184pub struct V8Config {
1185    /// Whether to log the actual content of scripts (e.g. content of the JS file
1186    /// that was compiled to generate code).
1187    /// ATTENTION: This could considerably increase the size of the resuling trace
1188    ///             file.
1189    #[prost(bool, optional, tag="1")]
1190    pub log_script_sources: ::core::option::Option<bool>,
1191    /// Whether to log the generated code for jitted functions (machine code or
1192    /// bytecode).
1193    /// ATTENTION: This could considerably increase the size of the resuling trace
1194    ///             file.
1195    #[prost(bool, optional, tag="2")]
1196    pub log_instructions: ::core::option::Option<bool>,
1197}
1198/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1199/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1200/// ns-evntrace-event_trace_properties
1201#[derive(Clone, PartialEq, ::prost::Message)]
1202pub struct EtwConfig {
1203    /// The kernel_flags determines the flags that will be used by the etw tracing
1204    /// session. These kernel flags have been built to expose the useful events
1205    /// captured from the kernel mode only.
1206    #[prost(enumeration="etw_config::KernelFlag", repeated, packed="false", tag="1")]
1207    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1208}
1209/// Nested message and enum types in `EtwConfig`.
1210pub mod etw_config {
1211    /// The KernelFlag represent list of kernel flags that we are intrested in.
1212    /// To get a more extensive list run 'xperf -providers k'.
1213    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1214    #[repr(i32)]
1215    pub enum KernelFlag {
1216        Cswitch = 0,
1217        Dispatcher = 1,
1218    }
1219    impl KernelFlag {
1220        /// String value of the enum field names used in the ProtoBuf definition.
1221        ///
1222        /// The values are not transformed in any way and thus are considered stable
1223        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1224        pub fn as_str_name(&self) -> &'static str {
1225            match self {
1226                KernelFlag::Cswitch => "CSWITCH",
1227                KernelFlag::Dispatcher => "DISPATCHER",
1228            }
1229        }
1230    }
1231}
1232/// Next id: 26.
1233#[derive(Clone, PartialEq, ::prost::Message)]
1234pub struct FtraceConfig {
1235    #[prost(string, repeated, tag="1")]
1236    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1237    #[prost(string, repeated, tag="2")]
1238    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1239    #[prost(string, repeated, tag="3")]
1240    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1241    /// *Per-CPU* buffer size.
1242    #[prost(uint32, optional, tag="10")]
1243    pub buffer_size_kb: ::core::option::Option<u32>,
1244    #[prost(uint32, optional, tag="11")]
1245    pub drain_period_ms: ::core::option::Option<u32>,
1246    #[prost(message, optional, tag="12")]
1247    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
1248    #[prost(message, optional, tag="22")]
1249    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
1250    /// Enables symbol name resolution against /proc/kallsyms.
1251    /// It requires that either traced_probes is running as root or that
1252    /// kptr_restrict has been manually lowered.
1253    /// It does not disclose KASLR, symbol addresses are mangled.
1254    #[prost(bool, optional, tag="13")]
1255    pub symbolize_ksyms: ::core::option::Option<bool>,
1256    #[prost(enumeration="ftrace_config::KsymsMemPolicy", optional, tag="17")]
1257    pub ksyms_mem_policy: ::core::option::Option<i32>,
1258    /// By default the kernel symbolizer is lazily initialized on a deferred task
1259    /// to reduce ftrace's time-to-start-recording. Unfortunately that makes
1260    /// ksyms integration tests hard. This flag forces the kernel symbolizer to be
1261    /// initialized synchronously on the data source start and hence avoiding
1262    /// timing races in tests.
1263    /// DEPRECATED in v28 / Android U. This is now the default behavior, setting it
1264    /// to true is a no-op.
1265    #[deprecated]
1266    #[prost(bool, optional, tag="14")]
1267    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
1268    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
1269    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
1270    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
1271    /// The historical context for this is the following:
1272    /// - Up to Android S (12), the rss_stat was internally throttled in its
1273    ///    kernel implementation.
1274    /// - A change introduced in the kernels after S has introduced a new
1275    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
1276    ///    (hence very spammy).
1277    /// - Not all Android T/13 devices will receive a new kernel though, hence we
1278    ///    need to deal with both cases.
1279    /// For more context: go/rss-stat-throttled.
1280    #[prost(bool, optional, tag="15")]
1281    pub throttle_rss_stat: ::core::option::Option<bool>,
1282    /// If true, avoid enabling events that aren't statically known by
1283    /// traced_probes. Otherwise, the default is to emit such events as
1284    /// GenericFtraceEvent protos.
1285    /// Prefer to keep this flag at its default. This was added for Android
1286    /// tracing, where atrace categories and/or atrace HAL requested events can
1287    /// expand to events that aren't of interest to the tracing user.
1288    /// Introduced in: Android T.
1289    #[prost(bool, optional, tag="16")]
1290    pub disable_generic_events: ::core::option::Option<bool>,
1291    /// The list of syscalls that should be recorded by sys_{enter,exit} ftrace
1292    /// events. When empty, all syscalls are recorded. If neither sys_{enter,exit}
1293    /// are enabled, this setting has no effect. Example: ["sys_read", "sys_open"].
1294    /// Introduced in: Android U.
1295    #[prost(string, repeated, tag="18")]
1296    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1297    /// If true, enable the "function_graph" kernel tracer that emits events
1298    /// whenever a kernel function is entered and exited
1299    /// (funcgraph_entry/funcgraph_exit).
1300    /// Notes on use:
1301    /// * Requires |symbolize_ksyms| for function name resolution.
1302    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
1303    ///    set of functions, otherwise the event bandwidth will be too high for
1304    ///    practical use.
1305    /// * The data source might be rejected if there is already a concurrent
1306    ///    ftrace data source that does not use function graph itself, as we do not
1307    ///    support switching kernel tracers mid-trace.
1308    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
1309    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
1310    ///    "function_graph".
1311    /// Android:
1312    /// * Available only on debuggable builds.
1313    /// * Introduced in: Android U.
1314    #[prost(bool, optional, tag="19")]
1315    pub enable_function_graph: ::core::option::Option<bool>,
1316    /// Constrains the set of functions traced when |enable_function_graph| is
1317    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
1318    /// in which case all matching functions will be traced. See kernel
1319    /// documentation on ftrace "set_ftrace_filter" file for more details.
1320    /// Android:
1321    /// * Available only on debuggable builds.
1322    /// * Introduced in: Android U.
1323    #[prost(string, repeated, tag="20")]
1324    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1325    /// If |enable_function_graph| is true, trace this set of functions *and* all
1326    /// of its callees. Supports globs. Can be set together with
1327    /// |function_filters|, in which case only callees matching the filter will be
1328    /// traced. If setting both, you most likely want all roots to also be
1329    /// included in |function_filters|.
1330    /// Android:
1331    /// * Available only on debuggable builds.
1332    /// * Introduced in: Android U.
1333    #[prost(string, repeated, tag="21")]
1334    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1335    /// If true, does not clear ftrace buffers before the start of the program.
1336    /// This makes sense only if this is the first ftrace data source instance
1337    /// created after the daemon has been started. Can be useful for gathering boot
1338    /// traces, if ftrace has been separately configured (e.g. via kernel
1339    /// commandline).
1340    #[prost(bool, optional, tag="23")]
1341    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
1342    /// If true, overrides the default timestamp clock and uses a raw hardware
1343    /// based monotonic clock for getting timestamps.
1344    /// * Introduced in: Android U.
1345    #[prost(bool, optional, tag="24")]
1346    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
1347    /// If |instance_name| is not empty, then attempt to use that tracefs instance
1348    /// for event recording. Normally, this means
1349    /// `/sys/kernel/tracing/instances/$instance_name`.
1350    ///
1351    /// The name "hyp" is reserved.
1352    ///
1353    /// The instance must already exist, the tracing daemon *will not* create it
1354    /// for you as it typically doesn't have such permissions.
1355    /// Only a subset of features is guaranteed to work with non-default instances,
1356    /// at the time of writing:
1357    ///   * ftrace_events
1358    ///   * buffer_size_kb
1359    #[prost(string, optional, tag="25")]
1360    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1361}
1362/// Nested message and enum types in `FtraceConfig`.
1363pub mod ftrace_config {
1364    /// Configuration for compact encoding of scheduler events. When enabled (and
1365    /// recording the relevant ftrace events), specific high-volume events are
1366    /// encoded in a denser format than normal.
1367    #[derive(Clone, PartialEq, ::prost::Message)]
1368    pub struct CompactSchedConfig {
1369        /// If true, and sched_switch or sched_waking ftrace events are enabled,
1370        /// record those events in the compact format.
1371        ///
1372        /// If the field is unset, the default is:
1373        /// * perfetto v42.0+: enabled
1374        /// * before: disabled
1375        #[prost(bool, optional, tag="1")]
1376        pub enabled: ::core::option::Option<bool>,
1377    }
1378    /// Optional filter for "ftrace/print" events.
1379    ///
1380    /// The filter consists of multiple rules. As soon as a rule matches (the rules
1381    /// are processed in order), its `allow` field will be used as the outcome: if
1382    /// `allow` is true, the event will be included in the trace, otherwise it will
1383    /// be discarded. If an event does not match any rule, it will be allowed by
1384    /// default (a rule with an empty prefix and allow=false, disallows everything
1385    /// by default).
1386    #[derive(Clone, PartialEq, ::prost::Message)]
1387    pub struct PrintFilter {
1388        #[prost(message, repeated, tag="1")]
1389        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
1390    }
1391    /// Nested message and enum types in `PrintFilter`.
1392    pub mod print_filter {
1393        #[derive(Clone, PartialEq, ::prost::Message)]
1394        pub struct Rule {
1395            #[prost(bool, optional, tag="2")]
1396            pub allow: ::core::option::Option<bool>,
1397            #[prost(oneof="rule::Match", tags="1, 3")]
1398            pub r#match: ::core::option::Option<rule::Match>,
1399        }
1400        /// Nested message and enum types in `Rule`.
1401        pub mod rule {
1402            /// Matches an atrace message of the form:
1403            /// <type>|pid|<prefix>...
1404            #[derive(Clone, PartialEq, ::prost::Message)]
1405            pub struct AtraceMessage {
1406                #[prost(string, optional, tag="1")]
1407                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
1408                #[prost(string, optional, tag="2")]
1409                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
1410            }
1411            #[derive(Clone, PartialEq, ::prost::Oneof)]
1412            pub enum Match {
1413                /// This rule matches if `prefix` matches exactly with the beginning of
1414                /// the "ftrace/print" "buf" field.
1415                #[prost(string, tag="1")]
1416                Prefix(::prost::alloc::string::String),
1417                /// This rule matches if the "buf" field contains an atrace-style print
1418                /// message as specified in `atrace_msg`.
1419                #[prost(message, tag="3")]
1420                AtraceMsg(AtraceMessage),
1421            }
1422        }
1423    }
1424    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
1425    /// should keep the symbol map in memory (and reuse it for future tracing
1426    /// sessions) or clear it (saving memory) and re-create it on each tracing
1427    /// session (wasting cpu and wall time).
1428    /// The tradeoff is roughly:
1429    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
1430    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
1431    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
1432    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1433    #[repr(i32)]
1434    pub enum KsymsMemPolicy {
1435        KsymsUnspecified = 0,
1436        KsymsCleanupOnStop = 1,
1437        KsymsRetain = 2,
1438    }
1439    impl KsymsMemPolicy {
1440        /// String value of the enum field names used in the ProtoBuf definition.
1441        ///
1442        /// The values are not transformed in any way and thus are considered stable
1443        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1444        pub fn as_str_name(&self) -> &'static str {
1445            match self {
1446                KsymsMemPolicy::KsymsUnspecified => "KSYMS_UNSPECIFIED",
1447                KsymsMemPolicy::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
1448                KsymsMemPolicy::KsymsRetain => "KSYMS_RETAIN",
1449            }
1450        }
1451    }
1452}
1453#[derive(Clone, PartialEq, ::prost::Message)]
1454pub struct GpuCounterConfig {
1455    /// Desired sampling interval for counters.
1456    #[prost(uint64, optional, tag="1")]
1457    pub counter_period_ns: ::core::option::Option<u64>,
1458    /// List of counters to be sampled. Counter IDs correspond to the ones
1459    /// described in GpuCounterSpec in the data source descriptor.
1460    #[prost(uint32, repeated, packed="false", tag="2")]
1461    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
1462    /// Sample counters by instrumenting command buffers.
1463    #[prost(bool, optional, tag="3")]
1464    pub instrumented_sampling: ::core::option::Option<bool>,
1465    /// Fix gpu clock rate during trace session.
1466    #[prost(bool, optional, tag="4")]
1467    pub fix_gpu_clock: ::core::option::Option<bool>,
1468}
1469#[derive(Clone, PartialEq, ::prost::Message)]
1470pub struct VulkanMemoryConfig {
1471    /// Tracking driver memory usage events
1472    #[prost(bool, optional, tag="1")]
1473    pub track_driver_memory_usage: ::core::option::Option<bool>,
1474    /// Tracking device memory usage events
1475    #[prost(bool, optional, tag="2")]
1476    pub track_device_memory_usage: ::core::option::Option<bool>,
1477}
1478#[derive(Clone, PartialEq, ::prost::Message)]
1479pub struct InodeFileConfig {
1480    /// How long to pause between batches.
1481    #[prost(uint32, optional, tag="1")]
1482    pub scan_interval_ms: ::core::option::Option<u32>,
1483    /// How long to wait before the first scan in order to accumulate inodes.
1484    #[prost(uint32, optional, tag="2")]
1485    pub scan_delay_ms: ::core::option::Option<u32>,
1486    /// How many inodes to scan in one batch.
1487    #[prost(uint32, optional, tag="3")]
1488    pub scan_batch_size: ::core::option::Option<u32>,
1489    /// Do not scan for inodes not found in the static map.
1490    #[prost(bool, optional, tag="4")]
1491    pub do_not_scan: ::core::option::Option<bool>,
1492    /// If non-empty, only scan inodes corresponding to block devices named in
1493    /// this list.
1494    #[prost(string, repeated, tag="5")]
1495    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1496    /// When encountering an inode belonging to a block device corresponding
1497    /// to one of the mount points in this map, scan its scan_roots instead.
1498    #[prost(message, repeated, tag="6")]
1499    pub mount_point_mapping: ::prost::alloc::vec::Vec<inode_file_config::MountPointMappingEntry>,
1500}
1501/// Nested message and enum types in `InodeFileConfig`.
1502pub mod inode_file_config {
1503    #[derive(Clone, PartialEq, ::prost::Message)]
1504    pub struct MountPointMappingEntry {
1505        #[prost(string, optional, tag="1")]
1506        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
1507        #[prost(string, repeated, tag="2")]
1508        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1509    }
1510}
1511#[derive(Clone, PartialEq, ::prost::Message)]
1512pub struct ConsoleConfig {
1513    #[prost(enumeration="console_config::Output", optional, tag="1")]
1514    pub output: ::core::option::Option<i32>,
1515    #[prost(bool, optional, tag="2")]
1516    pub enable_colors: ::core::option::Option<bool>,
1517}
1518/// Nested message and enum types in `ConsoleConfig`.
1519pub mod console_config {
1520    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1521    #[repr(i32)]
1522    pub enum Output {
1523        Unspecified = 0,
1524        Stdout = 1,
1525        Stderr = 2,
1526    }
1527    impl Output {
1528        /// String value of the enum field names used in the ProtoBuf definition.
1529        ///
1530        /// The values are not transformed in any way and thus are considered stable
1531        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1532        pub fn as_str_name(&self) -> &'static str {
1533            match self {
1534                Output::Unspecified => "OUTPUT_UNSPECIFIED",
1535                Output::Stdout => "OUTPUT_STDOUT",
1536                Output::Stderr => "OUTPUT_STDERR",
1537            }
1538        }
1539    }
1540}
1541/// Configuration for trace packet interception. Used for diverting trace data to
1542/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
1543/// Perfetto SDK.
1544#[derive(Clone, PartialEq, ::prost::Message)]
1545pub struct InterceptorConfig {
1546    /// Matches the name given to RegisterInterceptor().
1547    #[prost(string, optional, tag="1")]
1548    pub name: ::core::option::Option<::prost::alloc::string::String>,
1549    #[prost(message, optional, tag="100")]
1550    pub console_config: ::core::option::Option<ConsoleConfig>,
1551}
1552#[derive(Clone, PartialEq, ::prost::Message)]
1553pub struct AndroidPowerConfig {
1554    #[prost(uint32, optional, tag="1")]
1555    pub battery_poll_ms: ::core::option::Option<u32>,
1556    #[prost(enumeration="android_power_config::BatteryCounters", repeated, packed="false", tag="2")]
1557    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
1558    /// Where available enables per-power-rail measurements.
1559    #[prost(bool, optional, tag="3")]
1560    pub collect_power_rails: ::core::option::Option<bool>,
1561    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
1562    /// Available from Android S.
1563    #[prost(bool, optional, tag="4")]
1564    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
1565    /// Provides a breakdown of time in state for various subsystems.
1566    /// Available from Android U.
1567    #[prost(bool, optional, tag="5")]
1568    pub collect_entity_state_residency: ::core::option::Option<bool>,
1569}
1570/// Nested message and enum types in `AndroidPowerConfig`.
1571pub mod android_power_config {
1572    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1573    #[repr(i32)]
1574    pub enum BatteryCounters {
1575        BatteryCounterUnspecified = 0,
1576        /// Coulomb counter.
1577        BatteryCounterCharge = 1,
1578        /// Charge (%).
1579        BatteryCounterCapacityPercent = 2,
1580        /// Instantaneous current.
1581        BatteryCounterCurrent = 3,
1582        /// Avg current.
1583        BatteryCounterCurrentAvg = 4,
1584        /// Instantaneous voltage.
1585        BatteryCounterVoltage = 5,
1586    }
1587    impl BatteryCounters {
1588        /// String value of the enum field names used in the ProtoBuf definition.
1589        ///
1590        /// The values are not transformed in any way and thus are considered stable
1591        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1592        pub fn as_str_name(&self) -> &'static str {
1593            match self {
1594                BatteryCounters::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
1595                BatteryCounters::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
1596                BatteryCounters::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
1597                BatteryCounters::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
1598                BatteryCounters::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
1599                BatteryCounters::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
1600            }
1601        }
1602    }
1603}
1604/// This enum is obtained by post-processing
1605/// AOSP/frameworks/proto_logging/stats/atoms.proto through
1606/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
1607/// enum value for each proto field defined in the upstream atoms.proto.
1608#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1609#[repr(i32)]
1610pub enum AtomId {
1611    AtomUnspecified = 0,
1612    AtomBleScanStateChanged = 2,
1613    AtomProcessStateChanged = 3,
1614    AtomBleScanResultReceived = 4,
1615    AtomSensorStateChanged = 5,
1616    AtomGpsScanStateChanged = 6,
1617    AtomSyncStateChanged = 7,
1618    AtomScheduledJobStateChanged = 8,
1619    AtomScreenBrightnessChanged = 9,
1620    AtomWakelockStateChanged = 10,
1621    AtomLongPartialWakelockStateChanged = 11,
1622    AtomMobileRadioPowerStateChanged = 12,
1623    AtomWifiRadioPowerStateChanged = 13,
1624    AtomActivityManagerSleepStateChanged = 14,
1625    AtomMemoryFactorStateChanged = 15,
1626    AtomExcessiveCpuUsageReported = 16,
1627    AtomCachedKillReported = 17,
1628    AtomProcessMemoryStatReported = 18,
1629    AtomLauncherEvent = 19,
1630    AtomBatterySaverModeStateChanged = 20,
1631    AtomDeviceIdleModeStateChanged = 21,
1632    AtomDeviceIdlingModeStateChanged = 22,
1633    AtomAudioStateChanged = 23,
1634    AtomMediaCodecStateChanged = 24,
1635    AtomCameraStateChanged = 25,
1636    AtomFlashlightStateChanged = 26,
1637    AtomUidProcessStateChanged = 27,
1638    AtomProcessLifeCycleStateChanged = 28,
1639    AtomScreenStateChanged = 29,
1640    AtomBatteryLevelChanged = 30,
1641    AtomChargingStateChanged = 31,
1642    AtomPluggedStateChanged = 32,
1643    AtomInteractiveStateChanged = 33,
1644    AtomTouchEventReported = 34,
1645    AtomWakeupAlarmOccurred = 35,
1646    AtomKernelWakeupReported = 36,
1647    AtomWifiLockStateChanged = 37,
1648    AtomWifiSignalStrengthChanged = 38,
1649    AtomWifiScanStateChanged = 39,
1650    AtomPhoneSignalStrengthChanged = 40,
1651    AtomSettingChanged = 41,
1652    AtomActivityForegroundStateChanged = 42,
1653    AtomIsolatedUidChanged = 43,
1654    AtomPacketWakeupOccurred = 44,
1655    AtomWallClockTimeShifted = 45,
1656    AtomAnomalyDetected = 46,
1657    AtomAppBreadcrumbReported = 47,
1658    AtomAppStartOccurred = 48,
1659    AtomAppStartCanceled = 49,
1660    AtomAppStartFullyDrawn = 50,
1661    AtomLmkKillOccurred = 51,
1662    AtomPictureInPictureStateChanged = 52,
1663    AtomWifiMulticastLockStateChanged = 53,
1664    AtomLmkStateChanged = 54,
1665    AtomAppStartMemoryStateCaptured = 55,
1666    AtomShutdownSequenceReported = 56,
1667    AtomBootSequenceReported = 57,
1668    AtomDaveyOccurred = 58,
1669    AtomOverlayStateChanged = 59,
1670    AtomForegroundServiceStateChanged = 60,
1671    AtomCallStateChanged = 61,
1672    AtomKeyguardStateChanged = 62,
1673    AtomKeyguardBouncerStateChanged = 63,
1674    AtomKeyguardBouncerPasswordEntered = 64,
1675    AtomAppDied = 65,
1676    AtomResourceConfigurationChanged = 66,
1677    AtomBluetoothEnabledStateChanged = 67,
1678    AtomBluetoothConnectionStateChanged = 68,
1679    AtomGpsSignalQualityChanged = 69,
1680    AtomUsbConnectorStateChanged = 70,
1681    AtomSpeakerImpedanceReported = 71,
1682    AtomHardwareFailed = 72,
1683    AtomPhysicalDropDetected = 73,
1684    AtomChargeCyclesReported = 74,
1685    AtomMobileConnectionStateChanged = 75,
1686    AtomMobileRadioTechnologyChanged = 76,
1687    AtomUsbDeviceAttached = 77,
1688    AtomAppCrashOccurred = 78,
1689    AtomAnrOccurred = 79,
1690    AtomWtfOccurred = 80,
1691    AtomLowMemReported = 81,
1692    AtomGenericAtom = 82,
1693    AtomVibratorStateChanged = 84,
1694    AtomDeferredJobStatsReported = 85,
1695    AtomThermalThrottling = 86,
1696    AtomBiometricAcquired = 87,
1697    AtomBiometricAuthenticated = 88,
1698    AtomBiometricErrorOccurred = 89,
1699    AtomUiEventReported = 90,
1700    AtomBatteryHealthSnapshot = 91,
1701    AtomSlowIo = 92,
1702    AtomBatteryCausedShutdown = 93,
1703    AtomPhoneServiceStateChanged = 94,
1704    AtomPhoneStateChanged = 95,
1705    AtomUserRestrictionChanged = 96,
1706    AtomSettingsUiChanged = 97,
1707    AtomConnectivityStateChanged = 98,
1708    AtomServiceStateChanged = 99,
1709    AtomServiceLaunchReported = 100,
1710    AtomFlagFlipUpdateOccurred = 101,
1711    AtomBinaryPushStateChanged = 102,
1712    AtomDevicePolicyEvent = 103,
1713    AtomDocsUiFileOpCanceled = 104,
1714    AtomDocsUiFileOpCopyMoveModeReported = 105,
1715    AtomDocsUiFileOpFailure = 106,
1716    AtomDocsUiProviderFileOp = 107,
1717    AtomDocsUiInvalidScopedAccessRequest = 108,
1718    AtomDocsUiLaunchReported = 109,
1719    AtomDocsUiRootVisited = 110,
1720    AtomDocsUiStartupMs = 111,
1721    AtomDocsUiUserActionReported = 112,
1722    AtomWifiEnabledStateChanged = 113,
1723    AtomWifiRunningStateChanged = 114,
1724    AtomAppCompacted = 115,
1725    AtomNetworkDnsEventReported = 116,
1726    AtomDocsUiPickerLaunchedFromReported = 117,
1727    AtomDocsUiPickResultReported = 118,
1728    AtomDocsUiSearchModeReported = 119,
1729    AtomDocsUiSearchTypeReported = 120,
1730    AtomDataStallEvent = 121,
1731    AtomRescuePartyResetReported = 122,
1732    AtomSignedConfigReported = 123,
1733    AtomGnssNiEventReported = 124,
1734    AtomBluetoothLinkLayerConnectionEvent = 125,
1735    AtomBluetoothAclConnectionStateChanged = 126,
1736    AtomBluetoothScoConnectionStateChanged = 127,
1737    AtomAppDowngraded = 128,
1738    AtomAppOptimizedAfterDowngraded = 129,
1739    AtomLowStorageStateChanged = 130,
1740    AtomGnssNfwNotificationReported = 131,
1741    AtomGnssConfigurationReported = 132,
1742    AtomUsbPortOverheatEventReported = 133,
1743    AtomNfcErrorOccurred = 134,
1744    AtomNfcStateChanged = 135,
1745    AtomNfcBeamOccurred = 136,
1746    AtomNfcCardemulationOccurred = 137,
1747    AtomNfcTagOccurred = 138,
1748    AtomNfcHceTransactionOccurred = 139,
1749    AtomSeStateChanged = 140,
1750    AtomSeOmapiReported = 141,
1751    AtomBroadcastDispatchLatencyReported = 142,
1752    AtomAttentionManagerServiceResultReported = 143,
1753    AtomAdbConnectionChanged = 144,
1754    AtomSpeechDspStatReported = 145,
1755    AtomUsbContaminantReported = 146,
1756    AtomWatchdogRollbackOccurred = 147,
1757    AtomBiometricSystemHealthIssueDetected = 148,
1758    AtomBubbleUiChanged = 149,
1759    AtomScheduledJobConstraintChanged = 150,
1760    AtomBluetoothActiveDeviceChanged = 151,
1761    AtomBluetoothA2dpPlaybackStateChanged = 152,
1762    AtomBluetoothA2dpCodecConfigChanged = 153,
1763    AtomBluetoothA2dpCodecCapabilityChanged = 154,
1764    AtomBluetoothA2dpAudioUnderrunReported = 155,
1765    AtomBluetoothA2dpAudioOverrunReported = 156,
1766    AtomBluetoothDeviceRssiReported = 157,
1767    AtomBluetoothDeviceFailedContactCounterReported = 158,
1768    AtomBluetoothDeviceTxPowerLevelReported = 159,
1769    AtomBluetoothHciTimeoutReported = 160,
1770    AtomBluetoothQualityReportReported = 161,
1771    AtomBluetoothDeviceInfoReported = 162,
1772    AtomBluetoothRemoteVersionInfoReported = 163,
1773    AtomBluetoothSdpAttributeReported = 164,
1774    AtomBluetoothBondStateChanged = 165,
1775    AtomBluetoothClassicPairingEventReported = 166,
1776    AtomBluetoothSmpPairingEventReported = 167,
1777    AtomScreenTimeoutExtensionReported = 168,
1778    AtomProcessStartTime = 169,
1779    AtomPermissionGrantRequestResultReported = 170,
1780    AtomBluetoothSocketConnectionStateChanged = 171,
1781    AtomDeviceIdentifierAccessDenied = 172,
1782    AtomBubbleDeveloperErrorReported = 173,
1783    AtomAssistGestureStageReported = 174,
1784    AtomAssistGestureFeedbackReported = 175,
1785    AtomAssistGestureProgressReported = 176,
1786    AtomTouchGestureClassified = 177,
1787    AtomHiddenApiUsed = 178,
1788    AtomStyleUiChanged = 179,
1789    AtomPrivacyIndicatorsInteracted = 180,
1790    AtomAppInstallOnExternalStorageReported = 181,
1791    AtomNetworkStackReported = 182,
1792    AtomAppMovedStorageReported = 183,
1793    AtomBiometricEnrolled = 184,
1794    AtomSystemServerWatchdogOccurred = 185,
1795    AtomTombStoneOccurred = 186,
1796    AtomBluetoothClassOfDeviceReported = 187,
1797    AtomIntelligenceEventReported = 188,
1798    AtomThermalThrottlingSeverityStateChanged = 189,
1799    AtomRoleRequestResultReported = 190,
1800    AtomMediametricsAudiopolicyReported = 191,
1801    AtomMediametricsAudiorecordReported = 192,
1802    AtomMediametricsAudiothreadReported = 193,
1803    AtomMediametricsAudiotrackReported = 194,
1804    AtomMediametricsCodecReported = 195,
1805    AtomMediametricsDrmWidevineReported = 196,
1806    AtomMediametricsExtractorReported = 197,
1807    AtomMediametricsMediadrmReported = 198,
1808    AtomMediametricsNuplayerReported = 199,
1809    AtomMediametricsRecorderReported = 200,
1810    AtomMediametricsDrmmanagerReported = 201,
1811    AtomCarPowerStateChanged = 203,
1812    AtomGarageModeInfo = 204,
1813    AtomTestAtomReported = 205,
1814    AtomContentCaptureCallerMismatchReported = 206,
1815    AtomContentCaptureServiceEvents = 207,
1816    AtomContentCaptureSessionEvents = 208,
1817    AtomContentCaptureFlushed = 209,
1818    AtomLocationManagerApiUsageReported = 210,
1819    AtomReviewPermissionsFragmentResultReported = 211,
1820    AtomRuntimePermissionsUpgradeResult = 212,
1821    AtomGrantPermissionsActivityButtonActions = 213,
1822    AtomLocationAccessCheckNotificationAction = 214,
1823    AtomAppPermissionFragmentActionReported = 215,
1824    AtomAppPermissionFragmentViewed = 216,
1825    AtomAppPermissionsFragmentViewed = 217,
1826    AtomPermissionAppsFragmentViewed = 218,
1827    AtomTextSelectionEvent = 219,
1828    AtomTextLinkifyEvent = 220,
1829    AtomConversationActionsEvent = 221,
1830    AtomLanguageDetectionEvent = 222,
1831    AtomExclusionRectStateChanged = 223,
1832    AtomBackGestureReportedReported = 224,
1833    AtomUpdateEngineUpdateAttemptReported = 225,
1834    AtomUpdateEngineSuccessfulUpdateReported = 226,
1835    AtomCameraActionEvent = 227,
1836    AtomAppCompatibilityChangeReported = 228,
1837    AtomPerfettoUploaded = 229,
1838    AtomVmsClientConnectionStateChanged = 230,
1839    AtomMediaProviderScanOccurred = 233,
1840    AtomMediaContentDeleted = 234,
1841    AtomMediaProviderPermissionRequested = 235,
1842    AtomMediaProviderSchemaChanged = 236,
1843    AtomMediaProviderIdleMaintenanceFinished = 237,
1844    AtomRebootEscrowRecoveryReported = 238,
1845    AtomBootTimeEventDurationReported = 239,
1846    AtomBootTimeEventElapsedTimeReported = 240,
1847    AtomBootTimeEventUtcTimeReported = 241,
1848    AtomBootTimeEventErrorCodeReported = 242,
1849    AtomUserspaceRebootReported = 243,
1850    AtomNotificationReported = 244,
1851    AtomNotificationPanelReported = 245,
1852    AtomNotificationChannelModified = 246,
1853    AtomIntegrityCheckResultReported = 247,
1854    AtomIntegrityRulesPushed = 248,
1855    AtomCbMessageReported = 249,
1856    AtomCbMessageError = 250,
1857    AtomWifiHealthStatReported = 251,
1858    AtomWifiFailureStatReported = 252,
1859    AtomWifiConnectionResultReported = 253,
1860    AtomAppFreezeChanged = 254,
1861    AtomSnapshotMergeReported = 255,
1862    AtomForegroundServiceAppOpSessionEnded = 256,
1863    AtomDisplayJankReported = 257,
1864    AtomAppStandbyBucketChanged = 258,
1865    AtomSharesheetStarted = 259,
1866    AtomRankingSelected = 260,
1867    AtomTvsettingsUiInteracted = 261,
1868    AtomLauncherSnapshot = 262,
1869    AtomPackageInstallerV2Reported = 263,
1870    AtomUserLifecycleJourneyReported = 264,
1871    AtomUserLifecycleEventOccurred = 265,
1872    AtomAccessibilityShortcutReported = 266,
1873    AtomAccessibilityServiceReported = 267,
1874    AtomDocsUiDragAndDropReported = 268,
1875    AtomAppUsageEventOccurred = 269,
1876    AtomAutoRevokeNotificationClicked = 270,
1877    AtomAutoRevokeFragmentAppViewed = 271,
1878    AtomAutoRevokedAppInteraction = 272,
1879    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
1880    AtomEvsUsageStatsReported = 274,
1881    AtomAudioPowerUsageDataReported = 275,
1882    AtomTvTunerStateChanged = 276,
1883    AtomMediaoutputOpSwitchReported = 277,
1884    AtomCbMessageFiltered = 278,
1885    AtomTvTunerDvrStatus = 279,
1886    AtomTvCasSessionOpenStatus = 280,
1887    AtomAssistantInvocationReported = 281,
1888    AtomDisplayWakeReported = 282,
1889    AtomCarUserHalModifyUserRequestReported = 283,
1890    AtomCarUserHalModifyUserResponseReported = 284,
1891    AtomCarUserHalPostSwitchResponseReported = 285,
1892    AtomCarUserHalInitialUserInfoRequestReported = 286,
1893    AtomCarUserHalInitialUserInfoResponseReported = 287,
1894    AtomCarUserHalUserAssociationRequestReported = 288,
1895    AtomCarUserHalSetUserAssociationResponseReported = 289,
1896    AtomNetworkIpProvisioningReported = 290,
1897    AtomNetworkDhcpRenewReported = 291,
1898    AtomNetworkValidationReported = 292,
1899    AtomNetworkStackQuirkReported = 293,
1900    AtomMediametricsAudiorecorddeviceusageReported = 294,
1901    AtomMediametricsAudiothreaddeviceusageReported = 295,
1902    AtomMediametricsAudiotrackdeviceusageReported = 296,
1903    AtomMediametricsAudiodeviceconnectionReported = 297,
1904    AtomBlobCommitted = 298,
1905    AtomBlobLeased = 299,
1906    AtomBlobOpened = 300,
1907    AtomContactsProviderStatusReported = 301,
1908    AtomKeystoreKeyEventReported = 302,
1909    AtomNetworkTetheringReported = 303,
1910    AtomImeTouchReported = 304,
1911    AtomUiInteractionFrameInfoReported = 305,
1912    AtomUiActionLatencyReported = 306,
1913    AtomWifiDisconnectReported = 307,
1914    AtomWifiConnectionStateChanged = 308,
1915    AtomHdmiCecActiveSourceChanged = 309,
1916    AtomHdmiCecMessageReported = 310,
1917    AtomAirplaneMode = 311,
1918    AtomModemRestart = 312,
1919    AtomCarrierIdMismatchReported = 313,
1920    AtomCarrierIdTableUpdated = 314,
1921    AtomDataStallRecoveryReported = 315,
1922    AtomMediametricsMediaparserReported = 316,
1923    AtomTlsHandshakeReported = 317,
1924    AtomTextClassifierApiUsageReported = 318,
1925    AtomCarWatchdogKillStatsReported = 319,
1926    AtomMediametricsPlaybackReported = 320,
1927    AtomMediaNetworkInfoChanged = 321,
1928    AtomMediaPlaybackStateChanged = 322,
1929    AtomMediaPlaybackErrorReported = 323,
1930    AtomMediaPlaybackTrackChanged = 324,
1931    AtomWifiScanReported = 325,
1932    AtomWifiPnoScanReported = 326,
1933    AtomTifTuneChanged = 327,
1934    AtomAutoRotateReported = 328,
1935    AtomPerfettoTrigger = 329,
1936    AtomTranscodingData = 330,
1937    AtomImsServiceEntitlementUpdated = 331,
1938    AtomDeviceRotated = 333,
1939    AtomSimSpecificSettingsRestored = 334,
1940    AtomTextClassifierDownloadReported = 335,
1941    AtomPinStorageEvent = 336,
1942    AtomFaceDownReported = 337,
1943    AtomBluetoothHalCrashReasonReported = 338,
1944    AtomRebootEscrowPreparationReported = 339,
1945    AtomRebootEscrowLskfCaptureReported = 340,
1946    AtomRebootEscrowRebootReported = 341,
1947    AtomBinderLatencyReported = 342,
1948    AtomMediametricsAaudiostreamReported = 343,
1949    AtomMediaTranscodingSessionEnded = 344,
1950    AtomMagnificationUsageReported = 345,
1951    AtomMagnificationModeWithImeOnReported = 346,
1952    AtomAppSearchCallStatsReported = 347,
1953    AtomAppSearchPutDocumentStatsReported = 348,
1954    AtomDeviceControlChanged = 349,
1955    AtomDeviceStateChanged = 350,
1956    AtomInputdeviceRegistered = 351,
1957    AtomSmartspaceCardReported = 352,
1958    AtomAuthPromptAuthenticateInvoked = 353,
1959    AtomAuthManagerCanAuthenticateInvoked = 354,
1960    AtomAuthEnrollActionInvoked = 355,
1961    AtomAuthDeprecatedApiUsed = 356,
1962    AtomUnattendedRebootOccurred = 357,
1963    AtomLongRebootBlockingReported = 358,
1964    AtomLocationTimeZoneProviderStateChanged = 359,
1965    AtomFdtrackEventOccurred = 364,
1966    AtomTimeoutAutoExtendedReported = 365,
1967    AtomAlarmBatchDelivered = 367,
1968    AtomAlarmScheduled = 368,
1969    AtomCarWatchdogIoOveruseStatsReported = 369,
1970    AtomUserLevelHibernationStateChanged = 370,
1971    AtomAppSearchInitializeStatsReported = 371,
1972    AtomAppSearchQueryStatsReported = 372,
1973    AtomAppProcessDied = 373,
1974    AtomNetworkIpReachabilityMonitorReported = 374,
1975    AtomSlowInputEventReported = 375,
1976    AtomAnrOccurredProcessingStarted = 376,
1977    AtomAppSearchRemoveStatsReported = 377,
1978    AtomMediaCodecReported = 378,
1979    AtomPermissionUsageFragmentInteraction = 379,
1980    AtomPermissionDetailsInteraction = 380,
1981    AtomPrivacySensorToggleInteraction = 381,
1982    AtomPrivacyToggleDialogInteraction = 382,
1983    AtomAppSearchOptimizeStatsReported = 383,
1984    AtomNonA11yToolServiceWarningReport = 384,
1985    AtomAppSearchSetSchemaStatsReported = 385,
1986    AtomAppCompatStateChanged = 386,
1987    AtomSizeCompatRestartButtonEventReported = 387,
1988    AtomSplitscreenUiChanged = 388,
1989    AtomNetworkDnsHandshakeReported = 389,
1990    AtomBluetoothCodePathCounter = 390,
1991    AtomBluetoothLeBatchScanReportDelay = 392,
1992    AtomAccessibilityFloatingMenuUiChanged = 393,
1993    AtomNeuralnetworksCompilationCompleted = 394,
1994    AtomNeuralnetworksExecutionCompleted = 395,
1995    AtomNeuralnetworksCompilationFailed = 396,
1996    AtomNeuralnetworksExecutionFailed = 397,
1997    AtomContextHubBooted = 398,
1998    AtomContextHubRestarted = 399,
1999    AtomContextHubLoadedNanoappSnapshotReported = 400,
2000    AtomChreCodeDownloadTransacted = 401,
2001    AtomUwbSessionInited = 402,
2002    AtomUwbSessionClosed = 403,
2003    AtomUwbFirstRangingReceived = 404,
2004    AtomUwbRangingMeasurementReceived = 405,
2005    AtomTextClassifierDownloadWorkScheduled = 406,
2006    AtomTextClassifierDownloadWorkCompleted = 407,
2007    AtomClipboardCleared = 408,
2008    AtomVmCreationRequested = 409,
2009    AtomNearbyDeviceScanStateChanged = 410,
2010    AtomCameraCompatControlEventReported = 411,
2011    AtomApplicationLocalesChanged = 412,
2012    AtomMediametricsAudiotrackstatusReported = 413,
2013    AtomFoldStateDurationReported = 414,
2014    AtomLocationTimeZoneProviderControllerStateChanged = 415,
2015    AtomDisplayHbmStateChanged = 416,
2016    AtomDisplayHbmBrightnessChanged = 417,
2017    AtomPersistentUriPermissionsFlushed = 418,
2018    AtomEarlyBootCompOsArtifactsCheckReported = 419,
2019    AtomVbmetaDigestReported = 420,
2020    AtomApexInfoGathered = 421,
2021    AtomPvmInfoGathered = 422,
2022    AtomWearSettingsUiInteracted = 423,
2023    AtomTracingServiceReportEvent = 424,
2024    AtomMediametricsAudiorecordstatusReported = 425,
2025    AtomLauncherLatency = 426,
2026    AtomDropboxEntryDropped = 427,
2027    AtomWifiP2pConnectionReported = 428,
2028    AtomGameStateChanged = 429,
2029    AtomHotwordDetectorCreateRequested = 430,
2030    AtomHotwordDetectionServiceInitResultReported = 431,
2031    AtomHotwordDetectionServiceRestarted = 432,
2032    AtomHotwordDetectorKeyphraseTriggered = 433,
2033    AtomHotwordDetectorEvents = 434,
2034    AtomAdServicesApiCalled = 435,
2035    AtomAdServicesMesurementReportsUploaded = 436,
2036    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
2037    AtomContactsIndexerUpdateStatsReported = 440,
2038    AtomAppBackgroundRestrictionsInfo = 441,
2039    AtomMmsSmsProviderGetThreadIdFailed = 442,
2040    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
2041    AtomPermissionReminderNotificationInteracted = 444,
2042    AtomRecentPermissionDecisionsInteracted = 445,
2043    AtomGnssPsdsDownloadReported = 446,
2044    AtomLeAudioConnectionSessionReported = 447,
2045    AtomLeAudioBroadcastSessionReported = 448,
2046    AtomDreamUiEventReported = 449,
2047    AtomTaskManagerEventReported = 450,
2048    AtomCdmAssociationAction = 451,
2049    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
2050    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
2051    AtomAccessibilityTextReadingOptionsChanged = 454,
2052    AtomWifiSetupFailureCrashReported = 455,
2053    AtomUwbDeviceErrorReported = 456,
2054    AtomIsolatedCompilationScheduled = 457,
2055    AtomIsolatedCompilationEnded = 458,
2056    AtomOnsOpportunisticEsimProvisioningComplete = 459,
2057    AtomSystemServerPreWatchdogOccurred = 460,
2058    AtomTelephonyAnomalyDetected = 461,
2059    AtomLetterboxPositionChanged = 462,
2060    AtomRemoteKeyProvisioningAttempt = 463,
2061    AtomRemoteKeyProvisioningNetworkInfo = 464,
2062    AtomRemoteKeyProvisioningTiming = 465,
2063    AtomMediaoutputOpInteractionReport = 466,
2064    AtomSyncExemptionOccurred = 468,
2065    AtomAutofillPresentationEventReported = 469,
2066    AtomDockStateChanged = 470,
2067    AtomSafetySourceStateCollected = 471,
2068    AtomSafetyCenterSystemEventReported = 472,
2069    AtomSafetyCenterInteractionReported = 473,
2070    AtomSettingsProviderSettingChanged = 474,
2071    AtomBroadcastDeliveryEventReported = 475,
2072    AtomServiceRequestEventReported = 476,
2073    AtomProviderAcquisitionEventReported = 477,
2074    AtomBluetoothDeviceNameReported = 478,
2075    AtomCbConfigUpdated = 479,
2076    AtomCbModuleErrorReported = 480,
2077    AtomCbServiceFeatureChanged = 481,
2078    AtomCbReceiverFeatureChanged = 482,
2079    AtomJsscriptengineLatencyReported = 483,
2080    AtomPrivacySignalNotificationInteraction = 484,
2081    AtomPrivacySignalIssueCardInteraction = 485,
2082    AtomPrivacySignalsJobFailure = 486,
2083    AtomVibrationReported = 487,
2084    AtomUwbRangingStart = 489,
2085    AtomMobileDataDownloadFileGroupStatusReported = 490,
2086    AtomAppCompactedV2 = 491,
2087    AtomAdServicesSettingsUsageReported = 493,
2088    AtomDisplayBrightnessChanged = 494,
2089    AtomActivityActionBlocked = 495,
2090    AtomBackgroundFetchProcessReported = 496,
2091    AtomUpdateCustomAudienceProcessReported = 497,
2092    AtomRunAdBiddingProcessReported = 498,
2093    AtomRunAdScoringProcessReported = 499,
2094    AtomRunAdSelectionProcessReported = 500,
2095    AtomRunAdBiddingPerCaProcessReported = 501,
2096    AtomMobileDataDownloadDownloadResultReported = 502,
2097    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
2098    AtomNetworkDnsServerSupportReported = 504,
2099    AtomVmBooted = 505,
2100    AtomVmExited = 506,
2101    AtomAmbientBrightnessStatsReported = 507,
2102    AtomMediametricsSpatializercapabilitiesReported = 508,
2103    AtomMediametricsSpatializerdeviceenabledReported = 509,
2104    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
2105    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
2106    AtomAdServicesMeasurementRegistrations = 512,
2107    AtomHearingAidInfoReported = 513,
2108    AtomDeviceWideJobConstraintChanged = 514,
2109    AtomAmbientModeChanged = 515,
2110    AtomAnrLatencyReported = 516,
2111    AtomResourceApiInfo = 517,
2112    AtomSystemDefaultNetworkChanged = 518,
2113    AtomIwlanSetupDataCallResultReported = 519,
2114    AtomIwlanPdnDisconnectedReasonReported = 520,
2115    AtomAirplaneModeSessionReported = 521,
2116    AtomVmCpuStatusReported = 522,
2117    AtomVmMemStatusReported = 523,
2118    AtomPackageInstallationSessionReported = 524,
2119    AtomDefaultNetworkRematchInfo = 525,
2120    AtomNetworkSelectionPerformance = 526,
2121    AtomNetworkNsdReported = 527,
2122    AtomBluetoothDisconnectionReasonReported = 529,
2123    AtomBluetoothLocalVersionsReported = 530,
2124    AtomBluetoothRemoteSupportedFeaturesReported = 531,
2125    AtomBluetoothLocalSupportedFeaturesReported = 532,
2126    AtomBluetoothGattAppInfo = 533,
2127    AtomBrightnessConfigurationUpdated = 534,
2128    AtomAdServicesGetTopicsReported = 535,
2129    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
2130    AtomAdServicesEpochComputationClassifierReported = 537,
2131    AtomWearMediaOutputSwitcherLaunched = 538,
2132    AtomWearMediaOutputSwitcherFinished = 539,
2133    AtomWearMediaOutputSwitcherConnectionReported = 540,
2134    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
2135    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
2136    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
2137    AtomPackageManagerSnapshotReported = 544,
2138    AtomPackageManagerAppsFilterCacheBuildReported = 545,
2139    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
2140    AtomLauncherImpressionEvent = 547,
2141    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
2142    AtomWsWatchFaceEdited = 551,
2143    AtomWsWatchFaceFavoriteActionReported = 552,
2144    AtomWsWatchFaceSetActionReported = 553,
2145    AtomPackageUninstallationReported = 554,
2146    AtomGameModeChanged = 555,
2147    AtomGameModeConfigurationChanged = 556,
2148    AtomBedtimeModeStateChanged = 557,
2149    AtomNetworkSliceSessionEnded = 558,
2150    AtomNetworkSliceDailyDataUsageReported = 559,
2151    AtomNfcTagTypeOccurred = 560,
2152    AtomNfcAidConflictOccurred = 561,
2153    AtomNfcReaderConflictOccurred = 562,
2154    AtomWsTileListChanged = 563,
2155    AtomGetTypeAccessedWithoutPermission = 564,
2156    AtomMobileBundledAppInfoGathered = 566,
2157    AtomWsWatchFaceComplicationSetChanged = 567,
2158    AtomMediaDrmCreated = 568,
2159    AtomMediaDrmErrored = 569,
2160    AtomMediaDrmSessionOpened = 570,
2161    AtomMediaDrmSessionClosed = 571,
2162    AtomUserSelectedResolution = 572,
2163    AtomUnsafeIntentEventReported = 573,
2164    AtomPerformanceHintSessionReported = 574,
2165    AtomMediametricsMidiDeviceCloseReported = 576,
2166    AtomBiometricTouchReported = 577,
2167    AtomHotwordAudioEgressEventReported = 578,
2168    AtomAppSearchSchemaMigrationStatsReported = 579,
2169    AtomLocationEnabledStateChanged = 580,
2170    AtomImeRequestFinished = 581,
2171    AtomUsbComplianceWarningsReported = 582,
2172    AtomAppSupportedLocalesChanged = 583,
2173    AtomGrammaticalInflectionChanged = 584,
2174    AtomMediaProviderVolumeRecoveryReported = 586,
2175    AtomBiometricPropertiesCollected = 587,
2176    AtomKernelWakeupAttributed = 588,
2177    AtomScreenStateChangedV2 = 589,
2178    AtomWsBackupActionReported = 590,
2179    AtomWsRestoreActionReported = 591,
2180    AtomDeviceLogAccessEventReported = 592,
2181    AtomMediaSessionUpdated = 594,
2182    AtomWearOobeStateChanged = 595,
2183    AtomWsNotificationUpdated = 596,
2184    AtomNetworkValidationFailureStatsDailyReported = 601,
2185    AtomWsComplicationTapped = 602,
2186    AtomWsWearTimeSession = 610,
2187    AtomWifiBytesTransfer = 10000,
2188    AtomWifiBytesTransferByFgBg = 10001,
2189    AtomMobileBytesTransfer = 10002,
2190    AtomMobileBytesTransferByFgBg = 10003,
2191    AtomBluetoothBytesTransfer = 10006,
2192    AtomKernelWakelock = 10004,
2193    AtomSubsystemSleepState = 10005,
2194    AtomCpuTimePerUid = 10009,
2195    AtomCpuTimePerUidFreq = 10010,
2196    AtomWifiActivityInfo = 10011,
2197    AtomModemActivityInfo = 10012,
2198    AtomBluetoothActivityInfo = 10007,
2199    AtomProcessMemoryState = 10013,
2200    AtomSystemElapsedRealtime = 10014,
2201    AtomSystemUptime = 10015,
2202    AtomCpuActiveTime = 10016,
2203    AtomCpuClusterTime = 10017,
2204    AtomDiskSpace = 10018,
2205    AtomRemainingBatteryCapacity = 10019,
2206    AtomFullBatteryCapacity = 10020,
2207    AtomTemperature = 10021,
2208    AtomBinderCalls = 10022,
2209    AtomBinderCallsExceptions = 10023,
2210    AtomLooperStats = 10024,
2211    AtomDiskStats = 10025,
2212    AtomDirectoryUsage = 10026,
2213    AtomAppSize = 10027,
2214    AtomCategorySize = 10028,
2215    AtomProcStats = 10029,
2216    AtomBatteryVoltage = 10030,
2217    AtomNumFingerprintsEnrolled = 10031,
2218    AtomDiskIo = 10032,
2219    AtomPowerProfile = 10033,
2220    AtomProcStatsPkgProc = 10034,
2221    AtomProcessCpuTime = 10035,
2222    AtomCpuTimePerThreadFreq = 10037,
2223    AtomOnDevicePowerMeasurement = 10038,
2224    AtomDeviceCalculatedPowerUse = 10039,
2225    AtomProcessMemoryHighWaterMark = 10042,
2226    AtomBatteryLevel = 10043,
2227    AtomBuildInformation = 10044,
2228    AtomBatteryCycleCount = 10045,
2229    AtomDebugElapsedClock = 10046,
2230    AtomDebugFailingElapsedClock = 10047,
2231    AtomNumFacesEnrolled = 10048,
2232    AtomRoleHolder = 10049,
2233    AtomDangerousPermissionState = 10050,
2234    AtomTrainInfo = 10051,
2235    AtomTimeZoneDataInfo = 10052,
2236    AtomExternalStorageInfo = 10053,
2237    AtomGpuStatsGlobalInfo = 10054,
2238    AtomGpuStatsAppInfo = 10055,
2239    AtomSystemIonHeapSize = 10056,
2240    AtomAppsOnExternalStorageInfo = 10057,
2241    AtomFaceSettings = 10058,
2242    AtomCoolingDevice = 10059,
2243    AtomAppOps = 10060,
2244    AtomProcessSystemIonHeapSize = 10061,
2245    AtomSurfaceflingerStatsGlobalInfo = 10062,
2246    AtomSurfaceflingerStatsLayerInfo = 10063,
2247    AtomProcessMemorySnapshot = 10064,
2248    AtomVmsClientStats = 10065,
2249    AtomNotificationRemoteViews = 10066,
2250    AtomDangerousPermissionStateSampled = 10067,
2251    AtomGraphicsStats = 10068,
2252    AtomRuntimeAppOpAccess = 10069,
2253    AtomIonHeapSize = 10070,
2254    AtomPackageNotificationPreferences = 10071,
2255    AtomPackageNotificationChannelPreferences = 10072,
2256    AtomPackageNotificationChannelGroupPreferences = 10073,
2257    AtomGnssStats = 10074,
2258    AtomAttributedAppOps = 10075,
2259    AtomVoiceCallSession = 10076,
2260    AtomVoiceCallRatUsage = 10077,
2261    AtomSimSlotState = 10078,
2262    AtomSupportedRadioAccessFamily = 10079,
2263    AtomSettingSnapshot = 10080,
2264    AtomBlobInfo = 10081,
2265    AtomDataUsageBytesTransfer = 10082,
2266    AtomBytesTransferByTagAndMetered = 10083,
2267    AtomDndModeRule = 10084,
2268    AtomGeneralExternalStorageAccessStats = 10085,
2269    AtomIncomingSms = 10086,
2270    AtomOutgoingSms = 10087,
2271    AtomCarrierIdTableVersion = 10088,
2272    AtomDataCallSession = 10089,
2273    AtomCellularServiceState = 10090,
2274    AtomCellularDataServiceSwitch = 10091,
2275    AtomSystemMemory = 10092,
2276    AtomImsRegistrationTermination = 10093,
2277    AtomImsRegistrationStats = 10094,
2278    AtomCpuTimePerClusterFreq = 10095,
2279    AtomCpuCyclesPerUidCluster = 10096,
2280    AtomDeviceRotatedData = 10097,
2281    AtomCpuCyclesPerThreadGroupCluster = 10098,
2282    AtomMediaDrmActivityInfo = 10099,
2283    AtomOemManagedBytesTransfer = 10100,
2284    AtomGnssPowerStats = 10101,
2285    AtomTimeZoneDetectorState = 10102,
2286    AtomKeystore2StorageStats = 10103,
2287    AtomRkpPoolStats = 10104,
2288    AtomProcessDmabufMemory = 10105,
2289    AtomPendingAlarmInfo = 10106,
2290    AtomUserLevelHibernatedApps = 10107,
2291    AtomLauncherLayoutSnapshot = 10108,
2292    AtomGlobalHibernatedApps = 10109,
2293    AtomInputEventLatencySketch = 10110,
2294    AtomBatteryUsageStatsBeforeReset = 10111,
2295    AtomBatteryUsageStatsSinceReset = 10112,
2296    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
2297    AtomInstalledIncrementalPackage = 10114,
2298    AtomTelephonyNetworkRequests = 10115,
2299    AtomAppSearchStorageInfo = 10116,
2300    AtomVmstat = 10117,
2301    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
2302    AtomKeystore2KeyCreationWithAuthInfo = 10119,
2303    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
2304    AtomKeystore2AtomWithOverflow = 10121,
2305    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
2306    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
2307    AtomRkpErrorStats = 10124,
2308    AtomKeystore2CrashStats = 10125,
2309    AtomVendorApexInfo = 10126,
2310    AtomAccessibilityShortcutStats = 10127,
2311    AtomAccessibilityFloatingMenuStats = 10128,
2312    AtomDataUsageBytesTransferV2 = 10129,
2313    AtomMediaCapabilities = 10130,
2314    AtomCarWatchdogSystemIoUsageSummary = 10131,
2315    AtomCarWatchdogUidIoUsageSummary = 10132,
2316    AtomImsRegistrationFeatureTagStats = 10133,
2317    AtomRcsClientProvisioningStats = 10134,
2318    AtomRcsAcsProvisioningStats = 10135,
2319    AtomSipDelegateStats = 10136,
2320    AtomSipTransportFeatureTagStats = 10137,
2321    AtomSipMessageResponse = 10138,
2322    AtomSipTransportSession = 10139,
2323    AtomImsDedicatedBearerListenerEvent = 10140,
2324    AtomImsDedicatedBearerEvent = 10141,
2325    AtomImsRegistrationServiceDescStats = 10142,
2326    AtomUceEventStats = 10143,
2327    AtomPresenceNotifyEvent = 10144,
2328    AtomGbaEvent = 10145,
2329    AtomPerSimStatus = 10146,
2330    AtomGpuWorkPerUid = 10147,
2331    AtomPersistentUriPermissionsAmountPerPackage = 10148,
2332    AtomSignedPartitionInfo = 10149,
2333    AtomPinnedFileSizesPerPackage = 10150,
2334    AtomPendingIntentsPerPackage = 10151,
2335    AtomUserInfo = 10152,
2336    AtomTelephonyNetworkRequestsV2 = 10153,
2337    AtomDeviceTelephonyProperties = 10154,
2338    AtomRemoteKeyProvisioningErrorCounts = 10155,
2339    AtomSafetyState = 10156,
2340    AtomIncomingMms = 10157,
2341    AtomOutgoingMms = 10158,
2342    AtomMultiUserInfo = 10160,
2343    AtomNetworkBpfMapInfo = 10161,
2344    AtomOutgoingShortCodeSms = 10162,
2345    AtomConnectivityStateSample = 10163,
2346    AtomNetworkSelectionRematchReasonsInfo = 10164,
2347    AtomGameModeInfo = 10165,
2348    AtomGameModeConfiguration = 10166,
2349    AtomGameModeListener = 10167,
2350    AtomNetworkSliceRequestCount = 10168,
2351    AtomWsTileSnapshot = 10169,
2352    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
2353    AtomProcessState = 10171,
2354    AtomProcessAssociation = 10172,
2355    AtomAdpfSystemComponentInfo = 10173,
2356    AtomNotificationMemoryUse = 10174,
2357    AtomHdrCapabilities = 10175,
2358    AtomWsFavouriteWatchFaceListSnapshot = 10176,
2359    AtomWifiAwareNdpReported = 638,
2360    AtomWifiAwareAttachReported = 639,
2361    AtomWifiSelfRecoveryTriggered = 661,
2362    AtomSoftApStarted = 680,
2363    AtomSoftApStopped = 681,
2364    AtomWifiLockReleased = 687,
2365    AtomWifiLockDeactivated = 688,
2366    AtomWifiConfigSaved = 689,
2367    AtomWifiAwareResourceUsingChanged = 690,
2368    AtomWifiAwareHalApiCalled = 691,
2369    AtomWifiLocalOnlyRequestReceived = 692,
2370    AtomWifiLocalOnlyRequestScanTriggered = 693,
2371    AtomWifiThreadTaskExecuted = 694,
2372    AtomWifiStateChanged = 700,
2373    AtomWifiAwareCapabilities = 10190,
2374    AtomWifiModuleInfo = 10193,
2375    AtomSettingsSpaReported = 622,
2376    AtomExpressEventReported = 528,
2377    AtomExpressHistogramSampleReported = 593,
2378    AtomExpressUidEventReported = 644,
2379    AtomExpressUidHistogramSampleReported = 658,
2380    AtomPermissionRationaleDialogViewed = 645,
2381    AtomPermissionRationaleDialogActionReported = 646,
2382    AtomAppDataSharingUpdatesNotificationInteraction = 647,
2383    AtomAppDataSharingUpdatesFragmentViewed = 648,
2384    AtomAppDataSharingUpdatesFragmentActionReported = 649,
2385    AtomWsIncomingCallActionReported = 626,
2386    AtomWsCallDisconnectionReported = 627,
2387    AtomWsCallDurationReported = 628,
2388    AtomWsCallUserExperienceLatencyReported = 629,
2389    AtomWsCallInteractionReported = 630,
2390    AtomFullScreenIntentLaunched = 631,
2391    AtomBalAllowed = 632,
2392    AtomInTaskActivityStarted = 685,
2393    AtomCachedAppsHighWatermark = 10189,
2394    AtomOdrefreshReported = 366,
2395    AtomOdsignReported = 548,
2396    AtomArtDatumReported = 332,
2397    AtomArtDeviceDatumReported = 550,
2398    AtomArtDatumDeltaReported = 565,
2399    AtomBackgroundDexoptJobEnded = 467,
2400    AtomWearAdaptiveSuspendStatsReported = 619,
2401    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
2402    AtomWearPowerAnomalyServiceEventStatsReported = 621,
2403    AtomEmergencyStateChanged = 633,
2404    AtomDndStateChanged = 657,
2405    AtomMteState = 10181,
2406    AtomAdServicesBackCompatGetTopicsReported = 598,
2407    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
2408    AtomAdServicesMeasurementDebugKeys = 640,
2409    AtomAdServicesErrorReported = 662,
2410    AtomAdServicesBackgroundJobsExecutionReported = 663,
2411    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
2412    AtomAdServicesMeasurementAttribution = 674,
2413    AtomAdServicesMeasurementJobs = 675,
2414    AtomAdServicesMeasurementWipeout = 676,
2415    AtomAdServicesConsentMigrated = 702,
2416    AtomRkpdPoolStats = 664,
2417    AtomRkpdClientOperation = 665,
2418    AtomAutofillUiEventReported = 603,
2419    AtomAutofillFillRequestReported = 604,
2420    AtomAutofillFillResponseReported = 605,
2421    AtomAutofillSaveEventReported = 606,
2422    AtomAutofillSessionCommitted = 607,
2423    AtomAutofillFieldClassificationEventReported = 659,
2424    AtomTestExtensionAtomReported = 660,
2425    AtomTestRestrictedAtomReported = 672,
2426    AtomStatsSocketLossReported = 752,
2427    AtomPluginInitialized = 655,
2428    AtomTvLowPowerStandbyPolicy = 679,
2429    AtomLockscreenShortcutSelected = 611,
2430    AtomLockscreenShortcutTriggered = 612,
2431    AtomEmergencyNumbersInfo = 10180,
2432    AtomQualifiedRatListChanged = 634,
2433    AtomQnsImsCallDropStats = 635,
2434    AtomQnsFallbackRestrictionChanged = 636,
2435    AtomQnsRatPreferenceMismatchInfo = 10177,
2436    AtomQnsHandoverTimeMillis = 10178,
2437    AtomQnsHandoverPingpong = 10179,
2438    AtomSatelliteController = 10182,
2439    AtomSatelliteSession = 10183,
2440    AtomSatelliteIncomingDatagram = 10184,
2441    AtomSatelliteOutgoingDatagram = 10185,
2442    AtomSatelliteProvision = 10186,
2443    AtomSatelliteSosMessageRecommender = 10187,
2444    AtomIkeSessionTerminated = 678,
2445    AtomIkeLivenessCheckSessionValidated = 760,
2446    AtomBluetoothHashedDeviceNameReported = 613,
2447    AtomBluetoothL2capCocClientConnection = 614,
2448    AtomBluetoothL2capCocServerConnection = 615,
2449    AtomBluetoothLeSessionConnected = 656,
2450    AtomRestrictedBluetoothDeviceNameReported = 666,
2451    AtomBluetoothProfileConnectionAttempted = 696,
2452    AtomHealthConnectUiImpression = 623,
2453    AtomHealthConnectUiInteraction = 624,
2454    AtomHealthConnectAppOpenedReported = 625,
2455    AtomHealthConnectApiCalled = 616,
2456    AtomHealthConnectUsageStats = 617,
2457    AtomHealthConnectStorageStats = 618,
2458    AtomHealthConnectApiInvoked = 643,
2459    AtomExerciseRouteApiCalled = 654,
2460    AtomAtom9999 = 9999,
2461    AtomAtom99999 = 99999,
2462    AtomThreadnetworkTelemetryDataReported = 738,
2463    AtomThreadnetworkTopoEntryRepeated = 739,
2464    AtomThreadnetworkDeviceInfoReported = 740,
2465    AtomEmergencyNumberDialed = 637,
2466    AtomSandboxApiCalled = 488,
2467    AtomSandboxActivityEventOccurred = 735,
2468    AtomSandboxSdkStorage = 10159,
2469    AtomCronetEngineCreated = 703,
2470    AtomCronetTrafficReported = 704,
2471    AtomCronetEngineBuilderInitialized = 762,
2472    AtomCronetHttpFlagsInitialized = 763,
2473    AtomCronetInitialized = 764,
2474    AtomDailyKeepaliveInfoReported = 650,
2475    AtomIpClientRaInfoReported = 778,
2476    AtomApfSessionInfoReported = 777,
2477    AtomCredentialManagerApiCalled = 585,
2478    AtomCredentialManagerInitPhaseReported = 651,
2479    AtomCredentialManagerCandidatePhaseReported = 652,
2480    AtomCredentialManagerFinalPhaseReported = 653,
2481    AtomCredentialManagerTotalReported = 667,
2482    AtomCredentialManagerFinalnouidReported = 668,
2483    AtomCredentialManagerGetReported = 669,
2484    AtomCredentialManagerAuthClickReported = 670,
2485    AtomCredentialManagerApiv2Called = 671,
2486    AtomUwbActivityInfo = 10188,
2487    AtomMediaActionReported = 608,
2488    AtomMediaControlsLaunched = 609,
2489    AtomMediaCodecReclaimRequestCompleted = 600,
2490    AtomMediaCodecStarted = 641,
2491    AtomMediaCodecStopped = 642,
2492    AtomMediaCodecRendered = 684,
2493}
2494impl AtomId {
2495    /// String value of the enum field names used in the ProtoBuf definition.
2496    ///
2497    /// The values are not transformed in any way and thus are considered stable
2498    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2499    pub fn as_str_name(&self) -> &'static str {
2500        match self {
2501            AtomId::AtomUnspecified => "ATOM_UNSPECIFIED",
2502            AtomId::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
2503            AtomId::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
2504            AtomId::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
2505            AtomId::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
2506            AtomId::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
2507            AtomId::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
2508            AtomId::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
2509            AtomId::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
2510            AtomId::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
2511            AtomId::AtomLongPartialWakelockStateChanged => "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED",
2512            AtomId::AtomMobileRadioPowerStateChanged => "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED",
2513            AtomId::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
2514            AtomId::AtomActivityManagerSleepStateChanged => "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED",
2515            AtomId::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
2516            AtomId::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
2517            AtomId::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
2518            AtomId::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
2519            AtomId::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
2520            AtomId::AtomBatterySaverModeStateChanged => "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED",
2521            AtomId::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
2522            AtomId::AtomDeviceIdlingModeStateChanged => "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED",
2523            AtomId::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
2524            AtomId::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
2525            AtomId::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
2526            AtomId::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
2527            AtomId::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
2528            AtomId::AtomProcessLifeCycleStateChanged => "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED",
2529            AtomId::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
2530            AtomId::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
2531            AtomId::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
2532            AtomId::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
2533            AtomId::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
2534            AtomId::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
2535            AtomId::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
2536            AtomId::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
2537            AtomId::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
2538            AtomId::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
2539            AtomId::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
2540            AtomId::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
2541            AtomId::AtomSettingChanged => "ATOM_SETTING_CHANGED",
2542            AtomId::AtomActivityForegroundStateChanged => "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED",
2543            AtomId::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
2544            AtomId::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
2545            AtomId::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
2546            AtomId::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
2547            AtomId::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
2548            AtomId::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
2549            AtomId::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
2550            AtomId::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
2551            AtomId::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
2552            AtomId::AtomPictureInPictureStateChanged => "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED",
2553            AtomId::AtomWifiMulticastLockStateChanged => "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED",
2554            AtomId::AtomLmkStateChanged => "ATOM_LMK_STATE_CHANGED",
2555            AtomId::AtomAppStartMemoryStateCaptured => "ATOM_APP_START_MEMORY_STATE_CAPTURED",
2556            AtomId::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
2557            AtomId::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
2558            AtomId::AtomDaveyOccurred => "ATOM_DAVEY_OCCURRED",
2559            AtomId::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
2560            AtomId::AtomForegroundServiceStateChanged => "ATOM_FOREGROUND_SERVICE_STATE_CHANGED",
2561            AtomId::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
2562            AtomId::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
2563            AtomId::AtomKeyguardBouncerStateChanged => "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED",
2564            AtomId::AtomKeyguardBouncerPasswordEntered => "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED",
2565            AtomId::AtomAppDied => "ATOM_APP_DIED",
2566            AtomId::AtomResourceConfigurationChanged => "ATOM_RESOURCE_CONFIGURATION_CHANGED",
2567            AtomId::AtomBluetoothEnabledStateChanged => "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED",
2568            AtomId::AtomBluetoothConnectionStateChanged => "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED",
2569            AtomId::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
2570            AtomId::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
2571            AtomId::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
2572            AtomId::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
2573            AtomId::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
2574            AtomId::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
2575            AtomId::AtomMobileConnectionStateChanged => "ATOM_MOBILE_CONNECTION_STATE_CHANGED",
2576            AtomId::AtomMobileRadioTechnologyChanged => "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED",
2577            AtomId::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
2578            AtomId::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
2579            AtomId::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
2580            AtomId::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
2581            AtomId::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
2582            AtomId::AtomGenericAtom => "ATOM_GENERIC_ATOM",
2583            AtomId::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
2584            AtomId::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
2585            AtomId::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
2586            AtomId::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
2587            AtomId::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
2588            AtomId::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
2589            AtomId::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
2590            AtomId::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
2591            AtomId::AtomSlowIo => "ATOM_SLOW_IO",
2592            AtomId::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
2593            AtomId::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
2594            AtomId::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
2595            AtomId::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
2596            AtomId::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
2597            AtomId::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
2598            AtomId::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
2599            AtomId::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
2600            AtomId::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
2601            AtomId::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
2602            AtomId::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
2603            AtomId::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
2604            AtomId::AtomDocsUiFileOpCopyMoveModeReported => "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED",
2605            AtomId::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
2606            AtomId::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
2607            AtomId::AtomDocsUiInvalidScopedAccessRequest => "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST",
2608            AtomId::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
2609            AtomId::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
2610            AtomId::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
2611            AtomId::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
2612            AtomId::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
2613            AtomId::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
2614            AtomId::AtomAppCompacted => "ATOM_APP_COMPACTED",
2615            AtomId::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
2616            AtomId::AtomDocsUiPickerLaunchedFromReported => "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED",
2617            AtomId::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
2618            AtomId::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
2619            AtomId::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
2620            AtomId::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
2621            AtomId::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
2622            AtomId::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
2623            AtomId::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
2624            AtomId::AtomBluetoothLinkLayerConnectionEvent => "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT",
2625            AtomId::AtomBluetoothAclConnectionStateChanged => "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED",
2626            AtomId::AtomBluetoothScoConnectionStateChanged => "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED",
2627            AtomId::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
2628            AtomId::AtomAppOptimizedAfterDowngraded => "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED",
2629            AtomId::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
2630            AtomId::AtomGnssNfwNotificationReported => "ATOM_GNSS_NFW_NOTIFICATION_REPORTED",
2631            AtomId::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
2632            AtomId::AtomUsbPortOverheatEventReported => "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED",
2633            AtomId::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
2634            AtomId::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
2635            AtomId::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
2636            AtomId::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
2637            AtomId::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
2638            AtomId::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
2639            AtomId::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
2640            AtomId::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
2641            AtomId::AtomBroadcastDispatchLatencyReported => "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED",
2642            AtomId::AtomAttentionManagerServiceResultReported => "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED",
2643            AtomId::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
2644            AtomId::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
2645            AtomId::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
2646            AtomId::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
2647            AtomId::AtomBiometricSystemHealthIssueDetected => "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED",
2648            AtomId::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
2649            AtomId::AtomScheduledJobConstraintChanged => "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED",
2650            AtomId::AtomBluetoothActiveDeviceChanged => "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED",
2651            AtomId::AtomBluetoothA2dpPlaybackStateChanged => "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED",
2652            AtomId::AtomBluetoothA2dpCodecConfigChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED",
2653            AtomId::AtomBluetoothA2dpCodecCapabilityChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED",
2654            AtomId::AtomBluetoothA2dpAudioUnderrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED",
2655            AtomId::AtomBluetoothA2dpAudioOverrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED",
2656            AtomId::AtomBluetoothDeviceRssiReported => "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED",
2657            AtomId::AtomBluetoothDeviceFailedContactCounterReported => "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED",
2658            AtomId::AtomBluetoothDeviceTxPowerLevelReported => "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED",
2659            AtomId::AtomBluetoothHciTimeoutReported => "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED",
2660            AtomId::AtomBluetoothQualityReportReported => "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED",
2661            AtomId::AtomBluetoothDeviceInfoReported => "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED",
2662            AtomId::AtomBluetoothRemoteVersionInfoReported => "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED",
2663            AtomId::AtomBluetoothSdpAttributeReported => "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED",
2664            AtomId::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
2665            AtomId::AtomBluetoothClassicPairingEventReported => "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED",
2666            AtomId::AtomBluetoothSmpPairingEventReported => "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED",
2667            AtomId::AtomScreenTimeoutExtensionReported => "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED",
2668            AtomId::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
2669            AtomId::AtomPermissionGrantRequestResultReported => "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED",
2670            AtomId::AtomBluetoothSocketConnectionStateChanged => "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED",
2671            AtomId::AtomDeviceIdentifierAccessDenied => "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED",
2672            AtomId::AtomBubbleDeveloperErrorReported => "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED",
2673            AtomId::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
2674            AtomId::AtomAssistGestureFeedbackReported => "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED",
2675            AtomId::AtomAssistGestureProgressReported => "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED",
2676            AtomId::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
2677            AtomId::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
2678            AtomId::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
2679            AtomId::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
2680            AtomId::AtomAppInstallOnExternalStorageReported => "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED",
2681            AtomId::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
2682            AtomId::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
2683            AtomId::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
2684            AtomId::AtomSystemServerWatchdogOccurred => "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED",
2685            AtomId::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
2686            AtomId::AtomBluetoothClassOfDeviceReported => "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED",
2687            AtomId::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
2688            AtomId::AtomThermalThrottlingSeverityStateChanged => "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED",
2689            AtomId::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
2690            AtomId::AtomMediametricsAudiopolicyReported => "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED",
2691            AtomId::AtomMediametricsAudiorecordReported => "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED",
2692            AtomId::AtomMediametricsAudiothreadReported => "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED",
2693            AtomId::AtomMediametricsAudiotrackReported => "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED",
2694            AtomId::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
2695            AtomId::AtomMediametricsDrmWidevineReported => "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED",
2696            AtomId::AtomMediametricsExtractorReported => "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED",
2697            AtomId::AtomMediametricsMediadrmReported => "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED",
2698            AtomId::AtomMediametricsNuplayerReported => "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED",
2699            AtomId::AtomMediametricsRecorderReported => "ATOM_MEDIAMETRICS_RECORDER_REPORTED",
2700            AtomId::AtomMediametricsDrmmanagerReported => "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED",
2701            AtomId::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
2702            AtomId::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
2703            AtomId::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
2704            AtomId::AtomContentCaptureCallerMismatchReported => "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED",
2705            AtomId::AtomContentCaptureServiceEvents => "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS",
2706            AtomId::AtomContentCaptureSessionEvents => "ATOM_CONTENT_CAPTURE_SESSION_EVENTS",
2707            AtomId::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
2708            AtomId::AtomLocationManagerApiUsageReported => "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED",
2709            AtomId::AtomReviewPermissionsFragmentResultReported => "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED",
2710            AtomId::AtomRuntimePermissionsUpgradeResult => "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT",
2711            AtomId::AtomGrantPermissionsActivityButtonActions => "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS",
2712            AtomId::AtomLocationAccessCheckNotificationAction => "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION",
2713            AtomId::AtomAppPermissionFragmentActionReported => "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED",
2714            AtomId::AtomAppPermissionFragmentViewed => "ATOM_APP_PERMISSION_FRAGMENT_VIEWED",
2715            AtomId::AtomAppPermissionsFragmentViewed => "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED",
2716            AtomId::AtomPermissionAppsFragmentViewed => "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED",
2717            AtomId::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
2718            AtomId::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
2719            AtomId::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
2720            AtomId::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
2721            AtomId::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
2722            AtomId::AtomBackGestureReportedReported => "ATOM_BACK_GESTURE_REPORTED_REPORTED",
2723            AtomId::AtomUpdateEngineUpdateAttemptReported => "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED",
2724            AtomId::AtomUpdateEngineSuccessfulUpdateReported => "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED",
2725            AtomId::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
2726            AtomId::AtomAppCompatibilityChangeReported => "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED",
2727            AtomId::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
2728            AtomId::AtomVmsClientConnectionStateChanged => "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED",
2729            AtomId::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
2730            AtomId::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
2731            AtomId::AtomMediaProviderPermissionRequested => "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED",
2732            AtomId::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
2733            AtomId::AtomMediaProviderIdleMaintenanceFinished => "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED",
2734            AtomId::AtomRebootEscrowRecoveryReported => "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED",
2735            AtomId::AtomBootTimeEventDurationReported => "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED",
2736            AtomId::AtomBootTimeEventElapsedTimeReported => "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED",
2737            AtomId::AtomBootTimeEventUtcTimeReported => "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED",
2738            AtomId::AtomBootTimeEventErrorCodeReported => "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED",
2739            AtomId::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
2740            AtomId::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
2741            AtomId::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
2742            AtomId::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
2743            AtomId::AtomIntegrityCheckResultReported => "ATOM_INTEGRITY_CHECK_RESULT_REPORTED",
2744            AtomId::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
2745            AtomId::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
2746            AtomId::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
2747            AtomId::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
2748            AtomId::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
2749            AtomId::AtomWifiConnectionResultReported => "ATOM_WIFI_CONNECTION_RESULT_REPORTED",
2750            AtomId::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
2751            AtomId::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
2752            AtomId::AtomForegroundServiceAppOpSessionEnded => "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED",
2753            AtomId::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
2754            AtomId::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
2755            AtomId::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
2756            AtomId::AtomRankingSelected => "ATOM_RANKING_SELECTED",
2757            AtomId::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
2758            AtomId::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
2759            AtomId::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
2760            AtomId::AtomUserLifecycleJourneyReported => "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED",
2761            AtomId::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
2762            AtomId::AtomAccessibilityShortcutReported => "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED",
2763            AtomId::AtomAccessibilityServiceReported => "ATOM_ACCESSIBILITY_SERVICE_REPORTED",
2764            AtomId::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
2765            AtomId::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
2766            AtomId::AtomAutoRevokeNotificationClicked => "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED",
2767            AtomId::AtomAutoRevokeFragmentAppViewed => "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED",
2768            AtomId::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
2769            AtomId::AtomAppPermissionGroupsFragmentAutoRevokeAction => "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION",
2770            AtomId::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
2771            AtomId::AtomAudioPowerUsageDataReported => "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED",
2772            AtomId::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
2773            AtomId::AtomMediaoutputOpSwitchReported => "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED",
2774            AtomId::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
2775            AtomId::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
2776            AtomId::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
2777            AtomId::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
2778            AtomId::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
2779            AtomId::AtomCarUserHalModifyUserRequestReported => "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED",
2780            AtomId::AtomCarUserHalModifyUserResponseReported => "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED",
2781            AtomId::AtomCarUserHalPostSwitchResponseReported => "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED",
2782            AtomId::AtomCarUserHalInitialUserInfoRequestReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED",
2783            AtomId::AtomCarUserHalInitialUserInfoResponseReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED",
2784            AtomId::AtomCarUserHalUserAssociationRequestReported => "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED",
2785            AtomId::AtomCarUserHalSetUserAssociationResponseReported => "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED",
2786            AtomId::AtomNetworkIpProvisioningReported => "ATOM_NETWORK_IP_PROVISIONING_REPORTED",
2787            AtomId::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
2788            AtomId::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
2789            AtomId::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
2790            AtomId::AtomMediametricsAudiorecorddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED",
2791            AtomId::AtomMediametricsAudiothreaddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED",
2792            AtomId::AtomMediametricsAudiotrackdeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED",
2793            AtomId::AtomMediametricsAudiodeviceconnectionReported => "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED",
2794            AtomId::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
2795            AtomId::AtomBlobLeased => "ATOM_BLOB_LEASED",
2796            AtomId::AtomBlobOpened => "ATOM_BLOB_OPENED",
2797            AtomId::AtomContactsProviderStatusReported => "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED",
2798            AtomId::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
2799            AtomId::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
2800            AtomId::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
2801            AtomId::AtomUiInteractionFrameInfoReported => "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED",
2802            AtomId::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
2803            AtomId::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
2804            AtomId::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
2805            AtomId::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
2806            AtomId::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
2807            AtomId::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
2808            AtomId::AtomModemRestart => "ATOM_MODEM_RESTART",
2809            AtomId::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
2810            AtomId::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
2811            AtomId::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
2812            AtomId::AtomMediametricsMediaparserReported => "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED",
2813            AtomId::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
2814            AtomId::AtomTextClassifierApiUsageReported => "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED",
2815            AtomId::AtomCarWatchdogKillStatsReported => "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED",
2816            AtomId::AtomMediametricsPlaybackReported => "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED",
2817            AtomId::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
2818            AtomId::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
2819            AtomId::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
2820            AtomId::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
2821            AtomId::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
2822            AtomId::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
2823            AtomId::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
2824            AtomId::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
2825            AtomId::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
2826            AtomId::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
2827            AtomId::AtomImsServiceEntitlementUpdated => "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED",
2828            AtomId::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
2829            AtomId::AtomSimSpecificSettingsRestored => "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED",
2830            AtomId::AtomTextClassifierDownloadReported => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED",
2831            AtomId::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
2832            AtomId::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
2833            AtomId::AtomBluetoothHalCrashReasonReported => "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED",
2834            AtomId::AtomRebootEscrowPreparationReported => "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED",
2835            AtomId::AtomRebootEscrowLskfCaptureReported => "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED",
2836            AtomId::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
2837            AtomId::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
2838            AtomId::AtomMediametricsAaudiostreamReported => "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED",
2839            AtomId::AtomMediaTranscodingSessionEnded => "ATOM_MEDIA_TRANSCODING_SESSION_ENDED",
2840            AtomId::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
2841            AtomId::AtomMagnificationModeWithImeOnReported => "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED",
2842            AtomId::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
2843            AtomId::AtomAppSearchPutDocumentStatsReported => "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED",
2844            AtomId::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
2845            AtomId::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
2846            AtomId::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
2847            AtomId::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
2848            AtomId::AtomAuthPromptAuthenticateInvoked => "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED",
2849            AtomId::AtomAuthManagerCanAuthenticateInvoked => "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED",
2850            AtomId::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
2851            AtomId::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
2852            AtomId::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
2853            AtomId::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
2854            AtomId::AtomLocationTimeZoneProviderStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED",
2855            AtomId::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
2856            AtomId::AtomTimeoutAutoExtendedReported => "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED",
2857            AtomId::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
2858            AtomId::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
2859            AtomId::AtomCarWatchdogIoOveruseStatsReported => "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED",
2860            AtomId::AtomUserLevelHibernationStateChanged => "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED",
2861            AtomId::AtomAppSearchInitializeStatsReported => "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED",
2862            AtomId::AtomAppSearchQueryStatsReported => "ATOM_APP_SEARCH_QUERY_STATS_REPORTED",
2863            AtomId::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
2864            AtomId::AtomNetworkIpReachabilityMonitorReported => "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED",
2865            AtomId::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
2866            AtomId::AtomAnrOccurredProcessingStarted => "ATOM_ANR_OCCURRED_PROCESSING_STARTED",
2867            AtomId::AtomAppSearchRemoveStatsReported => "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED",
2868            AtomId::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
2869            AtomId::AtomPermissionUsageFragmentInteraction => "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION",
2870            AtomId::AtomPermissionDetailsInteraction => "ATOM_PERMISSION_DETAILS_INTERACTION",
2871            AtomId::AtomPrivacySensorToggleInteraction => "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION",
2872            AtomId::AtomPrivacyToggleDialogInteraction => "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION",
2873            AtomId::AtomAppSearchOptimizeStatsReported => "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED",
2874            AtomId::AtomNonA11yToolServiceWarningReport => "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT",
2875            AtomId::AtomAppSearchSetSchemaStatsReported => "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED",
2876            AtomId::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
2877            AtomId::AtomSizeCompatRestartButtonEventReported => "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED",
2878            AtomId::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
2879            AtomId::AtomNetworkDnsHandshakeReported => "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED",
2880            AtomId::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
2881            AtomId::AtomBluetoothLeBatchScanReportDelay => "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY",
2882            AtomId::AtomAccessibilityFloatingMenuUiChanged => "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED",
2883            AtomId::AtomNeuralnetworksCompilationCompleted => "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED",
2884            AtomId::AtomNeuralnetworksExecutionCompleted => "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED",
2885            AtomId::AtomNeuralnetworksCompilationFailed => "ATOM_NEURALNETWORKS_COMPILATION_FAILED",
2886            AtomId::AtomNeuralnetworksExecutionFailed => "ATOM_NEURALNETWORKS_EXECUTION_FAILED",
2887            AtomId::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
2888            AtomId::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
2889            AtomId::AtomContextHubLoadedNanoappSnapshotReported => "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED",
2890            AtomId::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
2891            AtomId::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
2892            AtomId::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
2893            AtomId::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
2894            AtomId::AtomUwbRangingMeasurementReceived => "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED",
2895            AtomId::AtomTextClassifierDownloadWorkScheduled => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED",
2896            AtomId::AtomTextClassifierDownloadWorkCompleted => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED",
2897            AtomId::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
2898            AtomId::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
2899            AtomId::AtomNearbyDeviceScanStateChanged => "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED",
2900            AtomId::AtomCameraCompatControlEventReported => "ATOM_CAMERA_COMPAT_CONTROL_EVENT_REPORTED",
2901            AtomId::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
2902            AtomId::AtomMediametricsAudiotrackstatusReported => "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED",
2903            AtomId::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
2904            AtomId::AtomLocationTimeZoneProviderControllerStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED",
2905            AtomId::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
2906            AtomId::AtomDisplayHbmBrightnessChanged => "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED",
2907            AtomId::AtomPersistentUriPermissionsFlushed => "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED",
2908            AtomId::AtomEarlyBootCompOsArtifactsCheckReported => "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED",
2909            AtomId::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
2910            AtomId::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
2911            AtomId::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
2912            AtomId::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
2913            AtomId::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
2914            AtomId::AtomMediametricsAudiorecordstatusReported => "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED",
2915            AtomId::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
2916            AtomId::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
2917            AtomId::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
2918            AtomId::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
2919            AtomId::AtomHotwordDetectorCreateRequested => "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED",
2920            AtomId::AtomHotwordDetectionServiceInitResultReported => "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED",
2921            AtomId::AtomHotwordDetectionServiceRestarted => "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED",
2922            AtomId::AtomHotwordDetectorKeyphraseTriggered => "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED",
2923            AtomId::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
2924            AtomId::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
2925            AtomId::AtomAdServicesMesurementReportsUploaded => "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED",
2926            AtomId::AtomBootCompletedBroadcastCompletionLatencyReported => "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED",
2927            AtomId::AtomContactsIndexerUpdateStatsReported => "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED",
2928            AtomId::AtomAppBackgroundRestrictionsInfo => "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO",
2929            AtomId::AtomMmsSmsProviderGetThreadIdFailed => "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED",
2930            AtomId::AtomMmsSmsDatabaseHelperOnUpgradeFailed => "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED",
2931            AtomId::AtomPermissionReminderNotificationInteracted => "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED",
2932            AtomId::AtomRecentPermissionDecisionsInteracted => "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED",
2933            AtomId::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
2934            AtomId::AtomLeAudioConnectionSessionReported => "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED",
2935            AtomId::AtomLeAudioBroadcastSessionReported => "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED",
2936            AtomId::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
2937            AtomId::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
2938            AtomId::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
2939            AtomId::AtomMagnificationTripleTapAndHoldActivatedSessionReported => "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED",
2940            AtomId::AtomMagnificationFollowTypingFocusActivatedSessionReported => "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED",
2941            AtomId::AtomAccessibilityTextReadingOptionsChanged => "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED",
2942            AtomId::AtomWifiSetupFailureCrashReported => "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED",
2943            AtomId::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
2944            AtomId::AtomIsolatedCompilationScheduled => "ATOM_ISOLATED_COMPILATION_SCHEDULED",
2945            AtomId::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
2946            AtomId::AtomOnsOpportunisticEsimProvisioningComplete => "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE",
2947            AtomId::AtomSystemServerPreWatchdogOccurred => "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED",
2948            AtomId::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
2949            AtomId::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
2950            AtomId::AtomRemoteKeyProvisioningAttempt => "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT",
2951            AtomId::AtomRemoteKeyProvisioningNetworkInfo => "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO",
2952            AtomId::AtomRemoteKeyProvisioningTiming => "ATOM_REMOTE_KEY_PROVISIONING_TIMING",
2953            AtomId::AtomMediaoutputOpInteractionReport => "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT",
2954            AtomId::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
2955            AtomId::AtomAutofillPresentationEventReported => "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED",
2956            AtomId::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
2957            AtomId::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
2958            AtomId::AtomSafetyCenterSystemEventReported => "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED",
2959            AtomId::AtomSafetyCenterInteractionReported => "ATOM_SAFETY_CENTER_INTERACTION_REPORTED",
2960            AtomId::AtomSettingsProviderSettingChanged => "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED",
2961            AtomId::AtomBroadcastDeliveryEventReported => "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED",
2962            AtomId::AtomServiceRequestEventReported => "ATOM_SERVICE_REQUEST_EVENT_REPORTED",
2963            AtomId::AtomProviderAcquisitionEventReported => "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED",
2964            AtomId::AtomBluetoothDeviceNameReported => "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED",
2965            AtomId::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
2966            AtomId::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
2967            AtomId::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
2968            AtomId::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
2969            AtomId::AtomJsscriptengineLatencyReported => "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED",
2970            AtomId::AtomPrivacySignalNotificationInteraction => "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION",
2971            AtomId::AtomPrivacySignalIssueCardInteraction => "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION",
2972            AtomId::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
2973            AtomId::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
2974            AtomId::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
2975            AtomId::AtomMobileDataDownloadFileGroupStatusReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED",
2976            AtomId::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
2977            AtomId::AtomAdServicesSettingsUsageReported => "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED",
2978            AtomId::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
2979            AtomId::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
2980            AtomId::AtomBackgroundFetchProcessReported => "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED",
2981            AtomId::AtomUpdateCustomAudienceProcessReported => "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED",
2982            AtomId::AtomRunAdBiddingProcessReported => "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED",
2983            AtomId::AtomRunAdScoringProcessReported => "ATOM_RUN_AD_SCORING_PROCESS_REPORTED",
2984            AtomId::AtomRunAdSelectionProcessReported => "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED",
2985            AtomId::AtomRunAdBiddingPerCaProcessReported => "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED",
2986            AtomId::AtomMobileDataDownloadDownloadResultReported => "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED",
2987            AtomId::AtomMobileDataDownloadFileGroupStorageStatsReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED",
2988            AtomId::AtomNetworkDnsServerSupportReported => "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED",
2989            AtomId::AtomVmBooted => "ATOM_VM_BOOTED",
2990            AtomId::AtomVmExited => "ATOM_VM_EXITED",
2991            AtomId::AtomAmbientBrightnessStatsReported => "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED",
2992            AtomId::AtomMediametricsSpatializercapabilitiesReported => "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED",
2993            AtomId::AtomMediametricsSpatializerdeviceenabledReported => "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED",
2994            AtomId::AtomMediametricsHeadtrackerdeviceenabledReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED",
2995            AtomId::AtomMediametricsHeadtrackerdevicesupportedReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED",
2996            AtomId::AtomAdServicesMeasurementRegistrations => "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS",
2997            AtomId::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
2998            AtomId::AtomDeviceWideJobConstraintChanged => "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED",
2999            AtomId::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
3000            AtomId::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
3001            AtomId::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
3002            AtomId::AtomSystemDefaultNetworkChanged => "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED",
3003            AtomId::AtomIwlanSetupDataCallResultReported => "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED",
3004            AtomId::AtomIwlanPdnDisconnectedReasonReported => "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED",
3005            AtomId::AtomAirplaneModeSessionReported => "ATOM_AIRPLANE_MODE_SESSION_REPORTED",
3006            AtomId::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
3007            AtomId::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
3008            AtomId::AtomPackageInstallationSessionReported => "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED",
3009            AtomId::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
3010            AtomId::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
3011            AtomId::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
3012            AtomId::AtomBluetoothDisconnectionReasonReported => "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED",
3013            AtomId::AtomBluetoothLocalVersionsReported => "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED",
3014            AtomId::AtomBluetoothRemoteSupportedFeaturesReported => "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED",
3015            AtomId::AtomBluetoothLocalSupportedFeaturesReported => "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED",
3016            AtomId::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
3017            AtomId::AtomBrightnessConfigurationUpdated => "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED",
3018            AtomId::AtomAdServicesGetTopicsReported => "ATOM_AD_SERVICES_GET_TOPICS_REPORTED",
3019            AtomId::AtomAdServicesEpochComputationGetTopTopicsReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED",
3020            AtomId::AtomAdServicesEpochComputationClassifierReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
3021            AtomId::AtomWearMediaOutputSwitcherLaunched => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED",
3022            AtomId::AtomWearMediaOutputSwitcherFinished => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED",
3023            AtomId::AtomWearMediaOutputSwitcherConnectionReported => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED",
3024            AtomId::AtomWearMediaOutputSwitcherDeviceScanTriggered => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED",
3025            AtomId::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY",
3026            AtomId::AtomWearMediaOutputSwitcherConnectDeviceLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY",
3027            AtomId::AtomPackageManagerSnapshotReported => "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED",
3028            AtomId::AtomPackageManagerAppsFilterCacheBuildReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED",
3029            AtomId::AtomPackageManagerAppsFilterCacheUpdateReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED",
3030            AtomId::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
3031            AtomId::AtomWearMediaOutputSwitcherAllDevicesScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY",
3032            AtomId::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
3033            AtomId::AtomWsWatchFaceFavoriteActionReported => "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED",
3034            AtomId::AtomWsWatchFaceSetActionReported => "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED",
3035            AtomId::AtomPackageUninstallationReported => "ATOM_PACKAGE_UNINSTALLATION_REPORTED",
3036            AtomId::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
3037            AtomId::AtomGameModeConfigurationChanged => "ATOM_GAME_MODE_CONFIGURATION_CHANGED",
3038            AtomId::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
3039            AtomId::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
3040            AtomId::AtomNetworkSliceDailyDataUsageReported => "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED",
3041            AtomId::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
3042            AtomId::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
3043            AtomId::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
3044            AtomId::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
3045            AtomId::AtomGetTypeAccessedWithoutPermission => "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION",
3046            AtomId::AtomMobileBundledAppInfoGathered => "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED",
3047            AtomId::AtomWsWatchFaceComplicationSetChanged => "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED",
3048            AtomId::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
3049            AtomId::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
3050            AtomId::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
3051            AtomId::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
3052            AtomId::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
3053            AtomId::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
3054            AtomId::AtomPerformanceHintSessionReported => "ATOM_PERFORMANCE_HINT_SESSION_REPORTED",
3055            AtomId::AtomMediametricsMidiDeviceCloseReported => "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED",
3056            AtomId::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
3057            AtomId::AtomHotwordAudioEgressEventReported => "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED",
3058            AtomId::AtomAppSearchSchemaMigrationStatsReported => "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED",
3059            AtomId::AtomLocationEnabledStateChanged => "ATOM_LOCATION_ENABLED_STATE_CHANGED",
3060            AtomId::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
3061            AtomId::AtomUsbComplianceWarningsReported => "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED",
3062            AtomId::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
3063            AtomId::AtomGrammaticalInflectionChanged => "ATOM_GRAMMATICAL_INFLECTION_CHANGED",
3064            AtomId::AtomMediaProviderVolumeRecoveryReported => "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED",
3065            AtomId::AtomBiometricPropertiesCollected => "ATOM_BIOMETRIC_PROPERTIES_COLLECTED",
3066            AtomId::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
3067            AtomId::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
3068            AtomId::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
3069            AtomId::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
3070            AtomId::AtomDeviceLogAccessEventReported => "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED",
3071            AtomId::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
3072            AtomId::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
3073            AtomId::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
3074            AtomId::AtomNetworkValidationFailureStatsDailyReported => "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED",
3075            AtomId::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
3076            AtomId::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
3077            AtomId::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
3078            AtomId::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
3079            AtomId::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
3080            AtomId::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
3081            AtomId::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
3082            AtomId::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
3083            AtomId::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
3084            AtomId::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
3085            AtomId::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
3086            AtomId::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
3087            AtomId::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
3088            AtomId::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
3089            AtomId::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
3090            AtomId::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
3091            AtomId::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
3092            AtomId::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
3093            AtomId::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
3094            AtomId::AtomDiskSpace => "ATOM_DISK_SPACE",
3095            AtomId::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
3096            AtomId::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
3097            AtomId::AtomTemperature => "ATOM_TEMPERATURE",
3098            AtomId::AtomBinderCalls => "ATOM_BINDER_CALLS",
3099            AtomId::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
3100            AtomId::AtomLooperStats => "ATOM_LOOPER_STATS",
3101            AtomId::AtomDiskStats => "ATOM_DISK_STATS",
3102            AtomId::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
3103            AtomId::AtomAppSize => "ATOM_APP_SIZE",
3104            AtomId::AtomCategorySize => "ATOM_CATEGORY_SIZE",
3105            AtomId::AtomProcStats => "ATOM_PROC_STATS",
3106            AtomId::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
3107            AtomId::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
3108            AtomId::AtomDiskIo => "ATOM_DISK_IO",
3109            AtomId::AtomPowerProfile => "ATOM_POWER_PROFILE",
3110            AtomId::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
3111            AtomId::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
3112            AtomId::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
3113            AtomId::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
3114            AtomId::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
3115            AtomId::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
3116            AtomId::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
3117            AtomId::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
3118            AtomId::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
3119            AtomId::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
3120            AtomId::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
3121            AtomId::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
3122            AtomId::AtomRoleHolder => "ATOM_ROLE_HOLDER",
3123            AtomId::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
3124            AtomId::AtomTrainInfo => "ATOM_TRAIN_INFO",
3125            AtomId::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
3126            AtomId::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
3127            AtomId::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
3128            AtomId::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
3129            AtomId::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
3130            AtomId::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
3131            AtomId::AtomFaceSettings => "ATOM_FACE_SETTINGS",
3132            AtomId::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
3133            AtomId::AtomAppOps => "ATOM_APP_OPS",
3134            AtomId::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
3135            AtomId::AtomSurfaceflingerStatsGlobalInfo => "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO",
3136            AtomId::AtomSurfaceflingerStatsLayerInfo => "ATOM_SURFACEFLINGER_STATS_LAYER_INFO",
3137            AtomId::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
3138            AtomId::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
3139            AtomId::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
3140            AtomId::AtomDangerousPermissionStateSampled => "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED",
3141            AtomId::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
3142            AtomId::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
3143            AtomId::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
3144            AtomId::AtomPackageNotificationPreferences => "ATOM_PACKAGE_NOTIFICATION_PREFERENCES",
3145            AtomId::AtomPackageNotificationChannelPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES",
3146            AtomId::AtomPackageNotificationChannelGroupPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES",
3147            AtomId::AtomGnssStats => "ATOM_GNSS_STATS",
3148            AtomId::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
3149            AtomId::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
3150            AtomId::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
3151            AtomId::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
3152            AtomId::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
3153            AtomId::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
3154            AtomId::AtomBlobInfo => "ATOM_BLOB_INFO",
3155            AtomId::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
3156            AtomId::AtomBytesTransferByTagAndMetered => "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED",
3157            AtomId::AtomDndModeRule => "ATOM_DND_MODE_RULE",
3158            AtomId::AtomGeneralExternalStorageAccessStats => "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS",
3159            AtomId::AtomIncomingSms => "ATOM_INCOMING_SMS",
3160            AtomId::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
3161            AtomId::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
3162            AtomId::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
3163            AtomId::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
3164            AtomId::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
3165            AtomId::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
3166            AtomId::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
3167            AtomId::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
3168            AtomId::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
3169            AtomId::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
3170            AtomId::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
3171            AtomId::AtomCpuCyclesPerThreadGroupCluster => "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER",
3172            AtomId::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
3173            AtomId::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
3174            AtomId::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
3175            AtomId::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
3176            AtomId::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
3177            AtomId::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
3178            AtomId::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
3179            AtomId::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
3180            AtomId::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
3181            AtomId::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
3182            AtomId::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
3183            AtomId::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
3184            AtomId::AtomBatteryUsageStatsBeforeReset => "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET",
3185            AtomId::AtomBatteryUsageStatsSinceReset => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET",
3186            AtomId::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL",
3187            AtomId::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
3188            AtomId::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
3189            AtomId::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
3190            AtomId::AtomVmstat => "ATOM_VMSTAT",
3191            AtomId::AtomKeystore2KeyCreationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO",
3192            AtomId::AtomKeystore2KeyCreationWithAuthInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO",
3193            AtomId::AtomKeystore2KeyCreationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO",
3194            AtomId::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
3195            AtomId::AtomKeystore2KeyOperationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO",
3196            AtomId::AtomKeystore2KeyOperationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO",
3197            AtomId::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
3198            AtomId::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
3199            AtomId::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
3200            AtomId::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
3201            AtomId::AtomAccessibilityFloatingMenuStats => "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS",
3202            AtomId::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
3203            AtomId::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
3204            AtomId::AtomCarWatchdogSystemIoUsageSummary => "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY",
3205            AtomId::AtomCarWatchdogUidIoUsageSummary => "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY",
3206            AtomId::AtomImsRegistrationFeatureTagStats => "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS",
3207            AtomId::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
3208            AtomId::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
3209            AtomId::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
3210            AtomId::AtomSipTransportFeatureTagStats => "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS",
3211            AtomId::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
3212            AtomId::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
3213            AtomId::AtomImsDedicatedBearerListenerEvent => "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT",
3214            AtomId::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
3215            AtomId::AtomImsRegistrationServiceDescStats => "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS",
3216            AtomId::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
3217            AtomId::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
3218            AtomId::AtomGbaEvent => "ATOM_GBA_EVENT",
3219            AtomId::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
3220            AtomId::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
3221            AtomId::AtomPersistentUriPermissionsAmountPerPackage => "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE",
3222            AtomId::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
3223            AtomId::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
3224            AtomId::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
3225            AtomId::AtomUserInfo => "ATOM_USER_INFO",
3226            AtomId::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
3227            AtomId::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
3228            AtomId::AtomRemoteKeyProvisioningErrorCounts => "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS",
3229            AtomId::AtomSafetyState => "ATOM_SAFETY_STATE",
3230            AtomId::AtomIncomingMms => "ATOM_INCOMING_MMS",
3231            AtomId::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
3232            AtomId::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
3233            AtomId::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
3234            AtomId::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
3235            AtomId::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
3236            AtomId::AtomNetworkSelectionRematchReasonsInfo => "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO",
3237            AtomId::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
3238            AtomId::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
3239            AtomId::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
3240            AtomId::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
3241            AtomId::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
3242            AtomId::AtomWsActiveWatchFaceComplicationSetSnapshot => "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT",
3243            AtomId::AtomProcessState => "ATOM_PROCESS_STATE",
3244            AtomId::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
3245            AtomId::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
3246            AtomId::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
3247            AtomId::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
3248            AtomId::AtomWsFavouriteWatchFaceListSnapshot => "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT",
3249            AtomId::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
3250            AtomId::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
3251            AtomId::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
3252            AtomId::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
3253            AtomId::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
3254            AtomId::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
3255            AtomId::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
3256            AtomId::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
3257            AtomId::AtomWifiAwareResourceUsingChanged => "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED",
3258            AtomId::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
3259            AtomId::AtomWifiLocalOnlyRequestReceived => "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED",
3260            AtomId::AtomWifiLocalOnlyRequestScanTriggered => "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED",
3261            AtomId::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
3262            AtomId::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
3263            AtomId::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
3264            AtomId::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
3265            AtomId::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
3266            AtomId::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
3267            AtomId::AtomExpressHistogramSampleReported => "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED",
3268            AtomId::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
3269            AtomId::AtomExpressUidHistogramSampleReported => "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED",
3270            AtomId::AtomPermissionRationaleDialogViewed => "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED",
3271            AtomId::AtomPermissionRationaleDialogActionReported => "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED",
3272            AtomId::AtomAppDataSharingUpdatesNotificationInteraction => "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION",
3273            AtomId::AtomAppDataSharingUpdatesFragmentViewed => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED",
3274            AtomId::AtomAppDataSharingUpdatesFragmentActionReported => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED",
3275            AtomId::AtomWsIncomingCallActionReported => "ATOM_WS_INCOMING_CALL_ACTION_REPORTED",
3276            AtomId::AtomWsCallDisconnectionReported => "ATOM_WS_CALL_DISCONNECTION_REPORTED",
3277            AtomId::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
3278            AtomId::AtomWsCallUserExperienceLatencyReported => "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED",
3279            AtomId::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
3280            AtomId::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
3281            AtomId::AtomBalAllowed => "ATOM_BAL_ALLOWED",
3282            AtomId::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
3283            AtomId::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
3284            AtomId::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
3285            AtomId::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
3286            AtomId::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
3287            AtomId::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
3288            AtomId::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
3289            AtomId::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
3290            AtomId::AtomWearAdaptiveSuspendStatsReported => "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED",
3291            AtomId::AtomWearPowerAnomalyServiceOperationalStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED",
3292            AtomId::AtomWearPowerAnomalyServiceEventStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED",
3293            AtomId::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
3294            AtomId::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
3295            AtomId::AtomMteState => "ATOM_MTE_STATE",
3296            AtomId::AtomAdServicesBackCompatGetTopicsReported => "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED",
3297            AtomId::AtomAdServicesBackCompatEpochComputationClassifierReported => "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
3298            AtomId::AtomAdServicesMeasurementDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS",
3299            AtomId::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
3300            AtomId::AtomAdServicesBackgroundJobsExecutionReported => "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED",
3301            AtomId::AtomAdServicesMeasurementDelayedSourceRegistration => "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION",
3302            AtomId::AtomAdServicesMeasurementAttribution => "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION",
3303            AtomId::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
3304            AtomId::AtomAdServicesMeasurementWipeout => "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT",
3305            AtomId::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
3306            AtomId::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
3307            AtomId::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
3308            AtomId::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
3309            AtomId::AtomAutofillFillRequestReported => "ATOM_AUTOFILL_FILL_REQUEST_REPORTED",
3310            AtomId::AtomAutofillFillResponseReported => "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED",
3311            AtomId::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
3312            AtomId::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
3313            AtomId::AtomAutofillFieldClassificationEventReported => "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED",
3314            AtomId::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
3315            AtomId::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
3316            AtomId::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
3317            AtomId::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
3318            AtomId::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
3319            AtomId::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
3320            AtomId::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
3321            AtomId::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
3322            AtomId::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
3323            AtomId::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
3324            AtomId::AtomQnsFallbackRestrictionChanged => "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED",
3325            AtomId::AtomQnsRatPreferenceMismatchInfo => "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO",
3326            AtomId::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
3327            AtomId::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
3328            AtomId::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
3329            AtomId::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
3330            AtomId::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
3331            AtomId::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
3332            AtomId::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
3333            AtomId::AtomSatelliteSosMessageRecommender => "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER",
3334            AtomId::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
3335            AtomId::AtomIkeLivenessCheckSessionValidated => "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED",
3336            AtomId::AtomBluetoothHashedDeviceNameReported => "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED",
3337            AtomId::AtomBluetoothL2capCocClientConnection => "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION",
3338            AtomId::AtomBluetoothL2capCocServerConnection => "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION",
3339            AtomId::AtomBluetoothLeSessionConnected => "ATOM_BLUETOOTH_LE_SESSION_CONNECTED",
3340            AtomId::AtomRestrictedBluetoothDeviceNameReported => "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED",
3341            AtomId::AtomBluetoothProfileConnectionAttempted => "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED",
3342            AtomId::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
3343            AtomId::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
3344            AtomId::AtomHealthConnectAppOpenedReported => "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED",
3345            AtomId::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
3346            AtomId::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
3347            AtomId::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
3348            AtomId::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
3349            AtomId::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
3350            AtomId::AtomAtom9999 => "ATOM_ATOM_9999",
3351            AtomId::AtomAtom99999 => "ATOM_ATOM_99999",
3352            AtomId::AtomThreadnetworkTelemetryDataReported => "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED",
3353            AtomId::AtomThreadnetworkTopoEntryRepeated => "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED",
3354            AtomId::AtomThreadnetworkDeviceInfoReported => "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED",
3355            AtomId::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
3356            AtomId::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
3357            AtomId::AtomSandboxActivityEventOccurred => "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED",
3358            AtomId::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
3359            AtomId::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
3360            AtomId::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
3361            AtomId::AtomCronetEngineBuilderInitialized => "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED",
3362            AtomId::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
3363            AtomId::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
3364            AtomId::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
3365            AtomId::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
3366            AtomId::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
3367            AtomId::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
3368            AtomId::AtomCredentialManagerInitPhaseReported => "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED",
3369            AtomId::AtomCredentialManagerCandidatePhaseReported => "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED",
3370            AtomId::AtomCredentialManagerFinalPhaseReported => "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED",
3371            AtomId::AtomCredentialManagerTotalReported => "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED",
3372            AtomId::AtomCredentialManagerFinalnouidReported => "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED",
3373            AtomId::AtomCredentialManagerGetReported => "ATOM_CREDENTIAL_MANAGER_GET_REPORTED",
3374            AtomId::AtomCredentialManagerAuthClickReported => "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED",
3375            AtomId::AtomCredentialManagerApiv2Called => "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED",
3376            AtomId::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
3377            AtomId::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
3378            AtomId::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
3379            AtomId::AtomMediaCodecReclaimRequestCompleted => "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED",
3380            AtomId::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
3381            AtomId::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
3382            AtomId::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
3383        }
3384    }
3385}
3386/// This file is named 'statsd_tracing_config.proto' rather than
3387/// 'statsd_config.proto' (which would be more consistent with the other
3388/// config protos) so it doesn't show up and confuse folks looking for
3389/// the existing statsd_config.proto for configuring statsd itself.
3390/// Same for the config proto itself.
3391#[derive(Clone, PartialEq, ::prost::Message)]
3392pub struct StatsdTracingConfig {
3393    /// This is for the common case of the atom id being known in the enum AtomId.
3394    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
3395    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
3396    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
3397    /// (e.g. non-upstream atoms that don't exist in AOSP).
3398    #[prost(int32, repeated, packed="false", tag="2")]
3399    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
3400    #[prost(message, repeated, tag="3")]
3401    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
3402}
3403#[derive(Clone, PartialEq, ::prost::Message)]
3404pub struct StatsdPullAtomConfig {
3405    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
3406    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
3407    #[prost(int32, repeated, packed="false", tag="2")]
3408    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
3409    #[prost(int32, optional, tag="3")]
3410    pub pull_frequency_ms: ::core::option::Option<i32>,
3411    #[prost(string, repeated, tag="4")]
3412    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3413}
3414#[derive(Clone, PartialEq, ::prost::Message)]
3415pub struct ProcessStatsConfig {
3416    #[prost(enumeration="process_stats_config::Quirks", repeated, packed="false", tag="1")]
3417    pub quirks: ::prost::alloc::vec::Vec<i32>,
3418    /// If enabled all processes will be scanned and dumped when the trace starts.
3419    #[prost(bool, optional, tag="2")]
3420    pub scan_all_processes_on_start: ::core::option::Option<bool>,
3421    /// If enabled thread names are also recoded (this is redundant if sched_switch
3422    /// is enabled).
3423    #[prost(bool, optional, tag="3")]
3424    pub record_thread_names: ::core::option::Option<bool>,
3425    /// If > 0 samples counters (see process_stats.proto) from
3426    /// /proc/pid/status and oom_score_adj every X ms.
3427    /// It will also sample /proc/pid/smaps_rollup if scan_smaps_rollup = true.
3428    /// This is required to be > 100ms to avoid excessive CPU usage.
3429    /// TODO(primiano): add CPU cost for change this value.
3430    #[prost(uint32, optional, tag="4")]
3431    pub proc_stats_poll_ms: ::core::option::Option<u32>,
3432    // If empty samples stats for all processes. If non empty samples stats only
3433    // for processes matching the given string in their argv0 (i.e. the first
3434    // entry of /proc/pid/cmdline).
3435    // TODO(primiano): implement this feature.
3436    // repeated string proc_stats_filter = 5;
3437
3438    /// This is required to be either = 0 or a multiple of |proc_stats_poll_ms|
3439    /// (default: |proc_stats_poll_ms|). If = 0, will be set to
3440    /// |proc_stats_poll_ms|. Non-multiples will be rounded down to the nearest
3441    /// multiple.
3442    #[prost(uint32, optional, tag="6")]
3443    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
3444    /// If true this will resolve filedescriptors for each process so these
3445    /// can be mapped to their actual device or file.
3446    /// Requires raw_syscalls/sys_exit ftrace events to be enabled or
3447    /// new fds opened after initially scanning a process will not be
3448    /// recognized.
3449    #[prost(bool, optional, tag="9")]
3450    pub resolve_process_fds: ::core::option::Option<bool>,
3451    /// If enabled memory stats from /proc/pid/smaps_rollup will be included
3452    /// in process stats.
3453    #[prost(bool, optional, tag="10")]
3454    pub scan_smaps_rollup: ::core::option::Option<bool>,
3455}
3456/// Nested message and enum types in `ProcessStatsConfig`.
3457pub mod process_stats_config {
3458    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3459    #[repr(i32)]
3460    pub enum Quirks {
3461        Unspecified = 0,
3462        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
3463        /// startup is now disabled by default and can be re-enabled using the
3464        /// |scan_all_processes_on_start| arg.
3465        DisableInitialDump = 1,
3466        DisableOnDemand = 2,
3467    }
3468    impl Quirks {
3469        /// String value of the enum field names used in the ProtoBuf definition.
3470        ///
3471        /// The values are not transformed in any way and thus are considered stable
3472        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3473        pub fn as_str_name(&self) -> &'static str {
3474            match self {
3475                Quirks::Unspecified => "QUIRKS_UNSPECIFIED",
3476                Quirks::DisableInitialDump => "DISABLE_INITIAL_DUMP",
3477                Quirks::DisableOnDemand => "DISABLE_ON_DEMAND",
3478            }
3479        }
3480    }
3481}
3482/// Configuration for go/heapprofd.
3483/// Next id: 28
3484#[derive(Clone, PartialEq, ::prost::Message)]
3485pub struct HeapprofdConfig {
3486    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
3487    ///
3488    /// These are:
3489    /// * All heaps if heap_sampling_intervals is empty.
3490    /// * Those profiled due to all_heaps and not named in heaps if
3491    ///    heap_sampling_intervals is not empty.
3492    /// * The implicit libc.malloc heap if heaps is empty.
3493    ///
3494    /// Set to 1 for perfect accuracy.
3495    /// Otherwise, sample every sample_interval_bytes on average.
3496    ///
3497    /// See
3498    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
3499    /// for more details.
3500    ///
3501    /// BUGS
3502    /// Before Android 12, setting this to 0 would crash the target process.
3503    ///
3504    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
3505    /// this field or with heap_sampling_intervals), otherwise the producer will
3506    /// not start.
3507    #[prost(uint64, optional, tag="1")]
3508    pub sampling_interval_bytes: ::core::option::Option<u64>,
3509    /// If less than the given numbers of bytes are left free in the shared
3510    /// memory buffer, increase sampling interval by a factor of two.
3511    /// Adaptive sampling is disabled when set to 0.
3512    #[prost(uint64, optional, tag="24")]
3513    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
3514    /// Stop doubling the sampling_interval once the sampling interval has reached
3515    /// this value.
3516    #[prost(uint64, optional, tag="25")]
3517    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
3518    /// E.g. surfaceflinger, com.android.phone
3519    /// This input is normalized in the following way: if it contains slashes,
3520    /// everything up to the last slash is discarded. If it contains "@",
3521    /// everything after the first @ is discared.
3522    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
3523    /// This transformation is also applied to the processes' command lines when
3524    /// matching.
3525    #[prost(string, repeated, tag="2")]
3526    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3527    /// For watermark based triggering or local debugging.
3528    #[prost(uint64, repeated, packed="false", tag="4")]
3529    pub pid: ::prost::alloc::vec::Vec<u64>,
3530    /// Only profile target if it was installed by one of the packages given.
3531    /// Special values are:
3532    /// * @system: installed on the system partition
3533    /// * @product: installed on the product partition
3534    /// * @null: sideloaded
3535    /// Supported on Android 12+.
3536    #[prost(string, repeated, tag="26")]
3537    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3538    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
3539    /// "malloc".
3540    ///
3541    /// Introduced in Android 12.
3542    #[prost(string, repeated, tag="20")]
3543    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3544    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
3545    /// combination with all_heaps;
3546    ///
3547    /// Introduced in Android 12.
3548    #[prost(string, repeated, tag="27")]
3549    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3550    #[prost(bool, optional, tag="23")]
3551    pub stream_allocations: ::core::option::Option<bool>,
3552    /// If given, needs to be the same length as heaps and gives the sampling
3553    /// interval for the respective entry in heaps.
3554    ///
3555    /// Otherwise, sampling_interval_bytes is used.
3556    ///
3557    /// It is recommended to set sampling_interval_bytes to a reasonable default
3558    /// value when using this, as a value of 0 for sampling_interval_bytes will
3559    /// crash the target process before Android 12.
3560    ///
3561    /// Introduced in Android 12.
3562    ///
3563    /// All values must be non-zero or the producer will not start.
3564    #[prost(uint64, repeated, packed="false", tag="22")]
3565    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
3566    /// Sample all heaps registered by target process. Introduced in Android 12.
3567    #[prost(bool, optional, tag="21")]
3568    pub all_heaps: ::core::option::Option<bool>,
3569    /// Profile all processes eligible for profiling on the system.
3570    /// See
3571    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
3572    /// for which processes are eligible.
3573    ///
3574    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
3575    /// will crash when trying to launch a new process as it will have an
3576    /// unexpected open socket to heapprofd.
3577    ///
3578    /// heapprofd will likely be overloaded by the amount of data for low
3579    /// sampling intervals.
3580    #[prost(bool, optional, tag="5")]
3581    pub all: ::core::option::Option<bool>,
3582    /// Do not profile processes whose anon RSS + swap < given value.
3583    /// Introduced in Android 11.
3584    #[prost(uint32, optional, tag="15")]
3585    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
3586    /// Stop profile if heapprofd memory usage goes beyond the given value.
3587    /// Introduced in Android 11.
3588    #[prost(uint32, optional, tag="16")]
3589    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
3590    /// Stop profile if heapprofd CPU time since start of this data-source
3591    /// goes beyond given value.
3592    /// Introduced in Android 11.
3593    #[prost(uint64, optional, tag="17")]
3594    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
3595    /// Do not emit function names for mappings starting with this prefix.
3596    /// E.g. /system to not emit symbols for any system libraries.
3597    #[prost(string, repeated, tag="7")]
3598    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3599    /// Dump at a predefined interval.
3600    #[prost(message, optional, tag="6")]
3601    pub continuous_dump_config: ::core::option::Option<heapprofd_config::ContinuousDumpConfig>,
3602    /// Size of the shared memory buffer between the profiled processes and
3603    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
3604    /// MiB.
3605    ///
3606    /// Needs to be:
3607    /// * at least 8192,
3608    /// * a power of two,
3609    /// * a multiple of 4096.
3610    #[prost(uint64, optional, tag="8")]
3611    pub shmem_size_bytes: ::core::option::Option<u64>,
3612    /// When the shmem buffer is full, block the client instead of ending the
3613    /// trace. Use with caution as this will significantly slow down the target
3614    /// process.
3615    #[prost(bool, optional, tag="9")]
3616    pub block_client: ::core::option::Option<bool>,
3617    /// If set, stop the trace session after blocking the client for this
3618    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
3619    /// Introduced in Android 11.
3620    #[prost(uint32, optional, tag="14")]
3621    pub block_client_timeout_us: ::core::option::Option<u32>,
3622    /// Do not profile processes from startup, only match already running
3623    /// processes.
3624    ///
3625    /// Can not be set at the same time as no_running.
3626    /// Introduced in Android 11.
3627    #[prost(bool, optional, tag="10")]
3628    pub no_startup: ::core::option::Option<bool>,
3629    /// Do not profile running processes. Only match processes on startup.
3630    ///
3631    /// Can not be set at the same time as no_startup.
3632    /// Introduced in Android 11.
3633    #[prost(bool, optional, tag="11")]
3634    pub no_running: ::core::option::Option<bool>,
3635    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
3636    /// at the point in time when the sampled heap usage of the process was at its
3637    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
3638    /// self_allocated and self_freed to not be set.
3639    /// Introduced in Android 11.
3640    #[prost(bool, optional, tag="13")]
3641    pub dump_at_max: ::core::option::Option<bool>,
3642    // FEATURE FLAGS. THERE BE DRAGONS.
3643
3644    /// Escape hatch if the session is being torn down because of a forked child
3645    /// that shares memory space, but is not correctly identified as a vforked
3646    /// child.
3647    /// Introduced in Android 11.
3648    #[prost(bool, optional, tag="18")]
3649    pub disable_fork_teardown: ::core::option::Option<bool>,
3650    /// We try to automatically detect when a target applicatation vforks but then
3651    /// does a memory allocation (or free). This auto-detection can be disabled
3652    /// with this.
3653    /// Introduced in Android 11.
3654    #[prost(bool, optional, tag="19")]
3655    pub disable_vfork_detection: ::core::option::Option<bool>,
3656}
3657/// Nested message and enum types in `HeapprofdConfig`.
3658pub mod heapprofd_config {
3659    #[derive(Clone, PartialEq, ::prost::Message)]
3660    pub struct ContinuousDumpConfig {
3661        /// ms to wait before first dump.
3662        #[prost(uint32, optional, tag="5")]
3663        pub dump_phase_ms: ::core::option::Option<u32>,
3664        /// ms to wait between following dumps.
3665        #[prost(uint32, optional, tag="6")]
3666        pub dump_interval_ms: ::core::option::Option<u32>,
3667    }
3668}
3669/// Configuration for managed app heap graph snapshots.
3670#[derive(Clone, PartialEq, ::prost::Message)]
3671pub struct JavaHprofConfig {
3672    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
3673    /// comm string). The semantics of this field were changed since its original
3674    /// introduction.
3675    ///
3676    /// On Android T+ (13+), this field can specify a single wildcard (*), and
3677    /// the profiler will attempt to match it in two possible ways:
3678    /// * if the pattern starts with a '/', then it is matched against the first
3679    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
3680    ///    "/bin/echo".
3681    /// * otherwise the pattern is matched against the part of argv0
3682    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
3683    ///    For example "echo" would match "/bin/echo".
3684    ///
3685    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
3686    /// normalized prior to an exact string comparison. Normalization is as
3687    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
3688    /// the string contains forward slashes, trim everything up to and including
3689    /// the last one.
3690    ///
3691    /// Implementation note: in either case, at most 511 characters of cmdline
3692    /// are considered.
3693    #[prost(string, repeated, tag="1")]
3694    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3695    /// For watermark based triggering or local debugging.
3696    #[prost(uint64, repeated, packed="false", tag="2")]
3697    pub pid: ::prost::alloc::vec::Vec<u64>,
3698    /// Only profile target if it was installed by one of the packages given.
3699    /// Special values are:
3700    /// * @system: installed on the system partition
3701    /// * @product: installed on the product partition
3702    /// * @null: sideloaded
3703    /// Supported on Android 12+.
3704    #[prost(string, repeated, tag="7")]
3705    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3706    /// Dump at a predefined interval.
3707    #[prost(message, optional, tag="3")]
3708    pub continuous_dump_config: ::core::option::Option<java_hprof_config::ContinuousDumpConfig>,
3709    /// Do not profile processes whose anon RSS + swap < given value.
3710    #[prost(uint32, optional, tag="4")]
3711    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
3712    /// Include the process' /proc/self/smaps.
3713    /// This only shows maps that:
3714    /// * start with /system
3715    /// * start with /vendor
3716    /// * start with /data/app
3717    /// * contain "extracted in memory from Y", where Y matches any of the above
3718    #[prost(bool, optional, tag="5")]
3719    pub dump_smaps: ::core::option::Option<bool>,
3720    /// Exclude objects of the following types from the profile. This can be
3721    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
3722    #[prost(string, repeated, tag="6")]
3723    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3724}
3725/// Nested message and enum types in `JavaHprofConfig`.
3726pub mod java_hprof_config {
3727    /// If dump_interval_ms != 0, the following configuration is used.
3728    #[derive(Clone, PartialEq, ::prost::Message)]
3729    pub struct ContinuousDumpConfig {
3730        /// ms to wait before first continuous dump.
3731        /// A dump is always created at the beginning of the trace.
3732        #[prost(uint32, optional, tag="1")]
3733        pub dump_phase_ms: ::core::option::Option<u32>,
3734        /// ms to wait between following dumps.
3735        #[prost(uint32, optional, tag="2")]
3736        pub dump_interval_ms: ::core::option::Option<u32>,
3737        /// If true, scans all the processes to find `process_cmdline` and filter by
3738        /// `min_anonymous_memory_kb` only at data source start. Default on Android
3739        /// S-.
3740        ///
3741        /// If false, rescans all the processes to find on every dump. Default on
3742        /// Android T+.
3743        #[prost(bool, optional, tag="3")]
3744        pub scan_pids_only_on_start: ::core::option::Option<bool>,
3745    }
3746}
3747/// Next id: 12
3748#[derive(Clone, PartialEq, ::prost::Message)]
3749pub struct PerfEvents {
3750}
3751/// Nested message and enum types in `PerfEvents`.
3752pub mod perf_events {
3753    /// What event to sample on, and how often. Commented from the perspective of
3754    /// its use in |PerfEventConfig|.
3755    #[derive(Clone, PartialEq, ::prost::Message)]
3756    pub struct Timebase {
3757        /// If set, samples will be timestamped with the given clock.
3758        /// If unset, the clock is chosen by the implementation.
3759        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
3760        /// used for hardware events (due to interrupt safety), for which the
3761        /// recommendation is to use one of the monotonic clocks.
3762        #[prost(enumeration="PerfClock", optional, tag="11")]
3763        pub timestamp_clock: ::core::option::Option<i32>,
3764        /// Optional arbitrary name for the event, to identify it in the parsed
3765        /// trace. Does *not* affect the profiling itself. If unset, the trace
3766        /// parser will choose a suitable name.
3767        #[prost(string, optional, tag="10")]
3768        pub name: ::core::option::Option<::prost::alloc::string::String>,
3769        /// How often the per-cpu sampling will occur. Not guaranteed to be honored
3770        /// as the kernel can throttle the sampling rate if it's too high.
3771        /// If unset, an implementation-defined default is used.
3772        #[prost(oneof="timebase::Interval", tags="2, 1")]
3773        pub interval: ::core::option::Option<timebase::Interval>,
3774        /// Counting event to use as a timebase for the sampling.
3775        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
3776        /// which is what you usually want.
3777        /// See common/perf_events.proto for the definitions.
3778        #[prost(oneof="timebase::Event", tags="4, 3, 5")]
3779        pub event: ::core::option::Option<timebase::Event>,
3780    }
3781    /// Nested message and enum types in `Timebase`.
3782    pub mod timebase {
3783        /// How often the per-cpu sampling will occur. Not guaranteed to be honored
3784        /// as the kernel can throttle the sampling rate if it's too high.
3785        /// If unset, an implementation-defined default is used.
3786        #[derive(Clone, PartialEq, ::prost::Oneof)]
3787        pub enum Interval {
3788            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
3789            /// same as 1/period.
3790            /// Details: the actual sampling will still be based on a period, but the
3791            /// kernel will dynamically adjust it based on the observed event rate, to
3792            /// approximate this frequency. Works best with steady-rate events like
3793            /// timers.
3794            #[prost(uint64, tag="2")]
3795            Frequency(u64),
3796            /// Per-cpu sampling will occur every |period| counts of |event|.
3797            /// Prefer |frequency| by default, as it's easier to oversample with a
3798            /// fixed period.
3799            #[prost(uint64, tag="1")]
3800            Period(u64),
3801        }
3802        /// Counting event to use as a timebase for the sampling.
3803        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
3804        /// which is what you usually want.
3805        /// See common/perf_events.proto for the definitions.
3806        #[derive(Clone, PartialEq, ::prost::Oneof)]
3807        pub enum Event {
3808            #[prost(enumeration="super::Counter", tag="4")]
3809            Counter(i32),
3810            #[prost(message, tag="3")]
3811            Tracepoint(super::Tracepoint),
3812            #[prost(message, tag="5")]
3813            RawEvent(super::RawEvent),
3814        }
3815    }
3816    #[derive(Clone, PartialEq, ::prost::Message)]
3817    pub struct Tracepoint {
3818        /// Group and name for the tracepoint, acceptable forms:
3819        /// * "sched/sched_switch"
3820        /// * "sched:sched_switch"
3821        #[prost(string, optional, tag="1")]
3822        pub name: ::core::option::Option<::prost::alloc::string::String>,
3823        /// Optional field-level filter for the tracepoint. Only events matching this
3824        /// filter will be counted (and therefore contribute to the sampling period).
3825        /// Example: "prev_pid >= 42 && next_pid == 0".
3826        /// For full syntax, see kernel documentation on "Event filtering":
3827        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
3828        #[prost(string, optional, tag="2")]
3829        pub filter: ::core::option::Option<::prost::alloc::string::String>,
3830    }
3831    /// Syscall-level description of the event, propagated to the perf_event_attr
3832    /// struct. Primarily for local use-cases, since the event availability and
3833    /// encoding is hardware-specific.
3834    #[derive(Clone, PartialEq, ::prost::Message)]
3835    pub struct RawEvent {
3836        #[prost(uint32, optional, tag="1")]
3837        pub r#type: ::core::option::Option<u32>,
3838        #[prost(uint64, optional, tag="2")]
3839        pub config: ::core::option::Option<u64>,
3840        #[prost(uint64, optional, tag="3")]
3841        pub config1: ::core::option::Option<u64>,
3842        #[prost(uint64, optional, tag="4")]
3843        pub config2: ::core::option::Option<u64>,
3844    }
3845    /// Builtin counter names from the uapi header. Commented with their perf tool
3846    /// aliases.
3847    /// TODO(rsavitski): consider generating enums for cache events (should be
3848    /// finite), and generally make this list as extensive as possible. Excluding
3849    /// things like dynamic PMUs since those don't fit into a static enum.
3850    /// Next id: 21
3851    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3852    #[repr(i32)]
3853    pub enum Counter {
3854        UnknownCounter = 0,
3855        /// cpu-clock
3856        SwCpuClock = 1,
3857        /// page-faults, faults
3858        SwPageFaults = 2,
3859        /// task-clock
3860        SwTaskClock = 3,
3861        /// context-switches, cs
3862        SwContextSwitches = 4,
3863        /// cpu-migrations, migrations
3864        SwCpuMigrations = 5,
3865        /// minor-faults
3866        SwPageFaultsMin = 6,
3867        /// major-faults
3868        SwPageFaultsMaj = 7,
3869        /// alignment-faults
3870        SwAlignmentFaults = 8,
3871        /// emulation-faults
3872        SwEmulationFaults = 9,
3873        /// dummy
3874        SwDummy = 20,
3875        /// cpu-cycles, cycles
3876        HwCpuCycles = 10,
3877        /// instructions
3878        HwInstructions = 11,
3879        /// cache-references
3880        HwCacheReferences = 12,
3881        /// cache-misses
3882        HwCacheMisses = 13,
3883        /// branch-instructions, branches
3884        HwBranchInstructions = 14,
3885        /// branch-misses
3886        HwBranchMisses = 15,
3887        /// bus-cycles
3888        HwBusCycles = 16,
3889        /// stalled-cycles-frontend, idle-cycles-frontend
3890        HwStalledCyclesFrontend = 17,
3891        /// stalled-cycles-backend, idle-cycles-backend
3892        HwStalledCyclesBackend = 18,
3893        /// ref-cycles
3894        HwRefCpuCycles = 19,
3895    }
3896    impl Counter {
3897        /// String value of the enum field names used in the ProtoBuf definition.
3898        ///
3899        /// The values are not transformed in any way and thus are considered stable
3900        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3901        pub fn as_str_name(&self) -> &'static str {
3902            match self {
3903                Counter::UnknownCounter => "UNKNOWN_COUNTER",
3904                Counter::SwCpuClock => "SW_CPU_CLOCK",
3905                Counter::SwPageFaults => "SW_PAGE_FAULTS",
3906                Counter::SwTaskClock => "SW_TASK_CLOCK",
3907                Counter::SwContextSwitches => "SW_CONTEXT_SWITCHES",
3908                Counter::SwCpuMigrations => "SW_CPU_MIGRATIONS",
3909                Counter::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
3910                Counter::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
3911                Counter::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
3912                Counter::SwEmulationFaults => "SW_EMULATION_FAULTS",
3913                Counter::SwDummy => "SW_DUMMY",
3914                Counter::HwCpuCycles => "HW_CPU_CYCLES",
3915                Counter::HwInstructions => "HW_INSTRUCTIONS",
3916                Counter::HwCacheReferences => "HW_CACHE_REFERENCES",
3917                Counter::HwCacheMisses => "HW_CACHE_MISSES",
3918                Counter::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
3919                Counter::HwBranchMisses => "HW_BRANCH_MISSES",
3920                Counter::HwBusCycles => "HW_BUS_CYCLES",
3921                Counter::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
3922                Counter::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
3923                Counter::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
3924            }
3925        }
3926    }
3927    /// Subset of clocks that is supported by perf timestamping.
3928    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
3929    /// would require additions to the trace clock synchronisation logic.
3930    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3931    #[repr(i32)]
3932    pub enum PerfClock {
3933        UnknownPerfClock = 0,
3934        Realtime = 1,
3935        Monotonic = 2,
3936        MonotonicRaw = 3,
3937        Boottime = 4,
3938    }
3939    impl PerfClock {
3940        /// String value of the enum field names used in the ProtoBuf definition.
3941        ///
3942        /// The values are not transformed in any way and thus are considered stable
3943        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3944        pub fn as_str_name(&self) -> &'static str {
3945            match self {
3946                PerfClock::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
3947                PerfClock::Realtime => "PERF_CLOCK_REALTIME",
3948                PerfClock::Monotonic => "PERF_CLOCK_MONOTONIC",
3949                PerfClock::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
3950                PerfClock::Boottime => "PERF_CLOCK_BOOTTIME",
3951            }
3952        }
3953    }
3954}
3955/// Configuration for the traced_perf profiler.
3956///
3957/// Example config for basic cpu profiling:
3958///    perf_event_config {
3959///      timebase {
3960///        frequency: 80
3961///      }
3962///      callstack_sampling {
3963///        scope {
3964///          target_cmdline: "surfaceflinger"
3965///          target_cmdline: "system_server"
3966///        }
3967///        kernel_frames: true
3968///      }
3969///    }
3970///
3971/// Next id: 19
3972#[derive(Clone, PartialEq, ::prost::Message)]
3973pub struct PerfEventConfig {
3974    /// What event to sample on, and how often.
3975    /// Defined in common/perf_events.proto.
3976    #[prost(message, optional, tag="15")]
3977    pub timebase: ::core::option::Option<perf_events::Timebase>,
3978    /// If set, the profiler will sample userspace processes' callstacks at the
3979    /// interval specified by the |timebase|.
3980    /// If unset, the profiler will record only the event counts.
3981    #[prost(message, optional, tag="16")]
3982    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
3983    //
3984    // Kernel <-> userspace ring buffer options:
3985    //
3986
3987    /// How often the per-cpu ring buffers are read by the producer.
3988    /// If unset, an implementation-defined default is used.
3989    #[prost(uint32, optional, tag="8")]
3990    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
3991    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
3992    /// kernel. If set, must be a power of two.
3993    /// If unset, an implementation-defined default is used.
3994    #[prost(uint32, optional, tag="3")]
3995    pub ring_buffer_pages: ::core::option::Option<u32>,
3996    //
3997    // Daemon's resource usage limits:
3998    //
3999
4000    /// Drop samples if the heap memory held by the samples in the unwinder queue
4001    /// is above the given limit. This counts the memory across all concurrent data
4002    /// sources (not just this one's), and there is no fairness guarantee - the
4003    /// whole quota might be used up by a concurrent source.
4004    #[prost(uint64, optional, tag="17")]
4005    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
4006    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
4007    /// footprint exceeds this value.
4008    #[prost(uint32, optional, tag="13")]
4009    pub max_daemon_memory_kb: ::core::option::Option<u32>,
4010    //
4011    // Uncommon options:
4012    //
4013
4014    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
4015    /// sampled process. This is primarily for Android, where this lookup is
4016    /// asynchronous. As long as the producer is waiting, the associated samples
4017    /// will be kept enqueued (putting pressure on the capacity of the shared
4018    /// unwinding queue). Once a lookup for a process expires, all associated
4019    /// samples are discarded. However, if the lookup still succeeds after the
4020    /// timeout, future samples will be handled normally.
4021    /// If unset, an implementation-defined default is used.
4022    #[prost(uint32, optional, tag="9")]
4023    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
4024    /// Optional period for clearing state cached by the unwinder. This is a heavy
4025    /// operation that is only necessary for traces that target a wide set of
4026    /// processes, and require the memory footprint to be reset periodically.
4027    /// If unset, the cached state will not be cleared.
4028    #[prost(uint32, optional, tag="10")]
4029    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
4030    /// If set, only profile target if it was installed by a package with one of
4031    /// these names. Special values:
4032    /// * "@system": installed on the system partition
4033    /// * "@product": installed on the product partition
4034    /// * "@null": sideloaded
4035    /// Supported on Android 12+.
4036    #[prost(string, repeated, tag="18")]
4037    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4038    //
4039    // Deprecated (superseded by options above):
4040    //
4041    // Do not set *any* of these fields in new configs.
4042    //
4043
4044    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
4045    /// We rely on this to detect such configs.
4046    #[prost(bool, optional, tag="1")]
4047    pub all_cpus: ::core::option::Option<bool>,
4048    #[prost(uint32, optional, tag="2")]
4049    pub sampling_frequency: ::core::option::Option<u32>,
4050    #[prost(bool, optional, tag="12")]
4051    pub kernel_frames: ::core::option::Option<bool>,
4052    #[prost(int32, repeated, packed="false", tag="4")]
4053    pub target_pid: ::prost::alloc::vec::Vec<i32>,
4054    #[prost(string, repeated, tag="5")]
4055    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4056    #[prost(int32, repeated, packed="false", tag="6")]
4057    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
4058    #[prost(string, repeated, tag="7")]
4059    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4060    #[prost(uint32, optional, tag="11")]
4061    pub additional_cmdline_count: ::core::option::Option<u32>,
4062}
4063/// Nested message and enum types in `PerfEventConfig`.
4064pub mod perf_event_config {
4065    //
4066    // Sub-messages (nested for generated code namespacing).
4067    //
4068
4069    #[derive(Clone, PartialEq, ::prost::Message)]
4070    pub struct CallstackSampling {
4071        /// Defines a set of processes for which samples are retained/skipped. If
4072        /// unset, all samples are kept, but beware that it will be very heavy on the
4073        /// stack unwinder, which might start dropping samples due to overload.
4074        #[prost(message, optional, tag="1")]
4075        pub scope: ::core::option::Option<Scope>,
4076        /// If true, callstacks will include the kernel-space frames. Such frames can
4077        /// be identified by a magical "kernel" string as their mapping name.
4078        /// Requires traced_perf to be running as root, or kptr_restrict to have been
4079        /// manually unrestricted. On Android, the platform should do the right thing
4080        /// on debug builds.
4081        /// This does *not* disclose KASLR, as only the function names are emitted.
4082        #[prost(bool, optional, tag="2")]
4083        pub kernel_frames: ::core::option::Option<bool>,
4084        /// Whether to record and unwind userspace callstacks. If unset, defaults to
4085        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
4086        /// as the most common default (this defaulting is only applicable if the
4087        /// outer CallstackSampling message is explicitly set).
4088        #[prost(enumeration="UnwindMode", optional, tag="3")]
4089        pub user_frames: ::core::option::Option<i32>,
4090    }
4091    #[derive(Clone, PartialEq, ::prost::Message)]
4092    pub struct Scope {
4093        /// Process ID (TGID) allowlist. If this list is not empty, only matching
4094        /// samples will be retained. If multiple allow/deny-lists are
4095        /// specified by the config, then all of them are evaluated for each sampled
4096        /// process.
4097        #[prost(int32, repeated, packed="false", tag="1")]
4098        pub target_pid: ::prost::alloc::vec::Vec<i32>,
4099        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
4100        /// comm string). The semantics of this field were changed since its original
4101        /// introduction.
4102        ///
4103        /// On Android T+ (13+), this field can specify a single wildcard (*), and
4104        /// the profiler will attempt to match it in two possible ways:
4105        /// * if the pattern starts with a '/', then it is matched against the first
4106        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
4107        ///    "/bin/echo".
4108        /// * otherwise the pattern is matched against the part of argv0
4109        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
4110        ///    For example "echo" would match "/bin/echo".
4111        ///
4112        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
4113        /// normalized prior to an exact string comparison. Normalization is as
4114        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
4115        /// the string contains forward slashes, trim everything up to and including
4116        /// the last one.
4117        ///
4118        /// Implementation note: in either case, at most 511 characters of cmdline
4119        /// are considered.
4120        #[prost(string, repeated, tag="2")]
4121        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4122        /// List of excluded pids.
4123        #[prost(int32, repeated, packed="false", tag="3")]
4124        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
4125        /// List of excluded cmdlines. See description of |target_cmdline| for how
4126        /// this is handled.
4127        #[prost(string, repeated, tag="4")]
4128        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4129        // Niche features for systemwide callstacks:
4130
4131        /// Number of additional command lines to sample. Only those which are
4132        /// neither explicitly included nor excluded will be considered. Processes
4133        /// are accepted on a first come, first served basis.
4134        #[prost(uint32, optional, tag="5")]
4135        pub additional_cmdline_count: ::core::option::Option<u32>,
4136        /// If set to N, all encountered processes will be put into one of the N
4137        /// possible bins, and only one randomly-chosen bin will be selected for
4138        /// unwinding. The binning is simply "pid % N", under the assumption that
4139        /// low-order bits of pids are roughly uniformly distributed. Other explicit
4140        /// inclusions/exclusions in this |Scope| message are still respected.
4141        ///
4142        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
4143        /// values will be queryable in trace processor under the "stats" table as
4144        /// "perf_process_shard_count" and "perf_chosen_process_shard".
4145        ///
4146        /// NB: all data sources in a config that set |process_shard_count| must set
4147        /// it to the same value. The profiler will choose one bin for all those data
4148        /// sources.
4149        #[prost(uint32, optional, tag="6")]
4150        pub process_shard_count: ::core::option::Option<u32>,
4151    }
4152    /// Userspace unwinding mode. A possible future addition is kernel-unwound
4153    /// callchains for frame pointer based systems.
4154    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4155    #[repr(i32)]
4156    pub enum UnwindMode {
4157        UnwindUnknown = 0,
4158        /// Do not unwind userspace:
4159        UnwindSkip = 1,
4160        /// Use libunwindstack (default):
4161        UnwindDwarf = 2,
4162    }
4163    impl UnwindMode {
4164        /// String value of the enum field names used in the ProtoBuf definition.
4165        ///
4166        /// The values are not transformed in any way and thus are considered stable
4167        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4168        pub fn as_str_name(&self) -> &'static str {
4169            match self {
4170                UnwindMode::UnwindUnknown => "UNWIND_UNKNOWN",
4171                UnwindMode::UnwindSkip => "UNWIND_SKIP",
4172                UnwindMode::UnwindDwarf => "UNWIND_DWARF",
4173            }
4174        }
4175    }
4176}
4177// When editing entries here remember also to update "sys_stats_counters.h" with
4178// the corresponding string definitions for the actual /proc files parser.
4179
4180/// Counter definitions for Linux's /proc/meminfo.
4181#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4182#[repr(i32)]
4183pub enum MeminfoCounters {
4184    MeminfoUnspecified = 0,
4185    MeminfoMemTotal = 1,
4186    MeminfoMemFree = 2,
4187    MeminfoMemAvailable = 3,
4188    MeminfoBuffers = 4,
4189    MeminfoCached = 5,
4190    MeminfoSwapCached = 6,
4191    MeminfoActive = 7,
4192    MeminfoInactive = 8,
4193    MeminfoActiveAnon = 9,
4194    MeminfoInactiveAnon = 10,
4195    MeminfoActiveFile = 11,
4196    MeminfoInactiveFile = 12,
4197    MeminfoUnevictable = 13,
4198    MeminfoMlocked = 14,
4199    MeminfoSwapTotal = 15,
4200    MeminfoSwapFree = 16,
4201    MeminfoDirty = 17,
4202    MeminfoWriteback = 18,
4203    MeminfoAnonPages = 19,
4204    MeminfoMapped = 20,
4205    MeminfoShmem = 21,
4206    MeminfoSlab = 22,
4207    MeminfoSlabReclaimable = 23,
4208    MeminfoSlabUnreclaimable = 24,
4209    MeminfoKernelStack = 25,
4210    MeminfoPageTables = 26,
4211    MeminfoCommitLimit = 27,
4212    MeminfoCommitedAs = 28,
4213    MeminfoVmallocTotal = 29,
4214    MeminfoVmallocUsed = 30,
4215    MeminfoVmallocChunk = 31,
4216    MeminfoCmaTotal = 32,
4217    MeminfoCmaFree = 33,
4218}
4219impl MeminfoCounters {
4220    /// String value of the enum field names used in the ProtoBuf definition.
4221    ///
4222    /// The values are not transformed in any way and thus are considered stable
4223    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4224    pub fn as_str_name(&self) -> &'static str {
4225        match self {
4226            MeminfoCounters::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
4227            MeminfoCounters::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
4228            MeminfoCounters::MeminfoMemFree => "MEMINFO_MEM_FREE",
4229            MeminfoCounters::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
4230            MeminfoCounters::MeminfoBuffers => "MEMINFO_BUFFERS",
4231            MeminfoCounters::MeminfoCached => "MEMINFO_CACHED",
4232            MeminfoCounters::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
4233            MeminfoCounters::MeminfoActive => "MEMINFO_ACTIVE",
4234            MeminfoCounters::MeminfoInactive => "MEMINFO_INACTIVE",
4235            MeminfoCounters::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
4236            MeminfoCounters::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
4237            MeminfoCounters::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
4238            MeminfoCounters::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
4239            MeminfoCounters::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
4240            MeminfoCounters::MeminfoMlocked => "MEMINFO_MLOCKED",
4241            MeminfoCounters::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
4242            MeminfoCounters::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
4243            MeminfoCounters::MeminfoDirty => "MEMINFO_DIRTY",
4244            MeminfoCounters::MeminfoWriteback => "MEMINFO_WRITEBACK",
4245            MeminfoCounters::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
4246            MeminfoCounters::MeminfoMapped => "MEMINFO_MAPPED",
4247            MeminfoCounters::MeminfoShmem => "MEMINFO_SHMEM",
4248            MeminfoCounters::MeminfoSlab => "MEMINFO_SLAB",
4249            MeminfoCounters::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
4250            MeminfoCounters::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
4251            MeminfoCounters::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
4252            MeminfoCounters::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
4253            MeminfoCounters::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
4254            MeminfoCounters::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
4255            MeminfoCounters::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
4256            MeminfoCounters::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
4257            MeminfoCounters::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
4258            MeminfoCounters::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
4259            MeminfoCounters::MeminfoCmaFree => "MEMINFO_CMA_FREE",
4260        }
4261    }
4262}
4263/// Counter definitions for Linux's /proc/vmstat.
4264#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4265#[repr(i32)]
4266pub enum VmstatCounters {
4267    VmstatUnspecified = 0,
4268    VmstatNrFreePages = 1,
4269    VmstatNrAllocBatch = 2,
4270    VmstatNrInactiveAnon = 3,
4271    VmstatNrActiveAnon = 4,
4272    VmstatNrInactiveFile = 5,
4273    VmstatNrActiveFile = 6,
4274    VmstatNrUnevictable = 7,
4275    VmstatNrMlock = 8,
4276    VmstatNrAnonPages = 9,
4277    VmstatNrMapped = 10,
4278    VmstatNrFilePages = 11,
4279    VmstatNrDirty = 12,
4280    VmstatNrWriteback = 13,
4281    VmstatNrSlabReclaimable = 14,
4282    VmstatNrSlabUnreclaimable = 15,
4283    VmstatNrPageTablePages = 16,
4284    VmstatNrKernelStack = 17,
4285    VmstatNrOverhead = 18,
4286    VmstatNrUnstable = 19,
4287    VmstatNrBounce = 20,
4288    VmstatNrVmscanWrite = 21,
4289    VmstatNrVmscanImmediateReclaim = 22,
4290    VmstatNrWritebackTemp = 23,
4291    VmstatNrIsolatedAnon = 24,
4292    VmstatNrIsolatedFile = 25,
4293    VmstatNrShmem = 26,
4294    VmstatNrDirtied = 27,
4295    VmstatNrWritten = 28,
4296    VmstatNrPagesScanned = 29,
4297    VmstatWorkingsetRefault = 30,
4298    VmstatWorkingsetActivate = 31,
4299    VmstatWorkingsetNodereclaim = 32,
4300    VmstatNrAnonTransparentHugepages = 33,
4301    VmstatNrFreeCma = 34,
4302    VmstatNrSwapcache = 35,
4303    VmstatNrDirtyThreshold = 36,
4304    VmstatNrDirtyBackgroundThreshold = 37,
4305    VmstatPgpgin = 38,
4306    VmstatPgpgout = 39,
4307    VmstatPgpgoutclean = 40,
4308    VmstatPswpin = 41,
4309    VmstatPswpout = 42,
4310    VmstatPgallocDma = 43,
4311    VmstatPgallocNormal = 44,
4312    VmstatPgallocMovable = 45,
4313    VmstatPgfree = 46,
4314    VmstatPgactivate = 47,
4315    VmstatPgdeactivate = 48,
4316    VmstatPgfault = 49,
4317    VmstatPgmajfault = 50,
4318    VmstatPgrefillDma = 51,
4319    VmstatPgrefillNormal = 52,
4320    VmstatPgrefillMovable = 53,
4321    VmstatPgstealKswapdDma = 54,
4322    VmstatPgstealKswapdNormal = 55,
4323    VmstatPgstealKswapdMovable = 56,
4324    VmstatPgstealDirectDma = 57,
4325    VmstatPgstealDirectNormal = 58,
4326    VmstatPgstealDirectMovable = 59,
4327    VmstatPgscanKswapdDma = 60,
4328    VmstatPgscanKswapdNormal = 61,
4329    VmstatPgscanKswapdMovable = 62,
4330    VmstatPgscanDirectDma = 63,
4331    VmstatPgscanDirectNormal = 64,
4332    VmstatPgscanDirectMovable = 65,
4333    VmstatPgscanDirectThrottle = 66,
4334    VmstatPginodesteal = 67,
4335    VmstatSlabsScanned = 68,
4336    VmstatKswapdInodesteal = 69,
4337    VmstatKswapdLowWmarkHitQuickly = 70,
4338    VmstatKswapdHighWmarkHitQuickly = 71,
4339    VmstatPageoutrun = 72,
4340    VmstatAllocstall = 73,
4341    VmstatPgrotated = 74,
4342    VmstatDropPagecache = 75,
4343    VmstatDropSlab = 76,
4344    VmstatPgmigrateSuccess = 77,
4345    VmstatPgmigrateFail = 78,
4346    VmstatCompactMigrateScanned = 79,
4347    VmstatCompactFreeScanned = 80,
4348    VmstatCompactIsolated = 81,
4349    VmstatCompactStall = 82,
4350    VmstatCompactFail = 83,
4351    VmstatCompactSuccess = 84,
4352    VmstatCompactDaemonWake = 85,
4353    VmstatUnevictablePgsCulled = 86,
4354    VmstatUnevictablePgsScanned = 87,
4355    VmstatUnevictablePgsRescued = 88,
4356    VmstatUnevictablePgsMlocked = 89,
4357    VmstatUnevictablePgsMunlocked = 90,
4358    VmstatUnevictablePgsCleared = 91,
4359    VmstatUnevictablePgsStranded = 92,
4360    VmstatNrZspages = 93,
4361    VmstatNrIonHeap = 94,
4362    VmstatNrGpuHeap = 95,
4363    VmstatAllocstallDma = 96,
4364    VmstatAllocstallMovable = 97,
4365    VmstatAllocstallNormal = 98,
4366    VmstatCompactDaemonFreeScanned = 99,
4367    VmstatCompactDaemonMigrateScanned = 100,
4368    VmstatNrFastrpc = 101,
4369    VmstatNrIndirectlyReclaimable = 102,
4370    VmstatNrIonHeapPool = 103,
4371    VmstatNrKernelMiscReclaimable = 104,
4372    VmstatNrShadowCallStackBytes = 105,
4373    VmstatNrShmemHugepages = 106,
4374    VmstatNrShmemPmdmapped = 107,
4375    VmstatNrUnreclaimablePages = 108,
4376    VmstatNrZoneActiveAnon = 109,
4377    VmstatNrZoneActiveFile = 110,
4378    VmstatNrZoneInactiveAnon = 111,
4379    VmstatNrZoneInactiveFile = 112,
4380    VmstatNrZoneUnevictable = 113,
4381    VmstatNrZoneWritePending = 114,
4382    VmstatOomKill = 115,
4383    VmstatPglazyfree = 116,
4384    VmstatPglazyfreed = 117,
4385    VmstatPgrefill = 118,
4386    VmstatPgscanDirect = 119,
4387    VmstatPgscanKswapd = 120,
4388    VmstatPgskipDma = 121,
4389    VmstatPgskipMovable = 122,
4390    VmstatPgskipNormal = 123,
4391    VmstatPgstealDirect = 124,
4392    VmstatPgstealKswapd = 125,
4393    VmstatSwapRa = 126,
4394    VmstatSwapRaHit = 127,
4395    VmstatWorkingsetRestore = 128,
4396    VmstatAllocstallDevice = 129,
4397    VmstatAllocstallDma32 = 130,
4398    VmstatBalloonDeflate = 131,
4399    VmstatBalloonInflate = 132,
4400    VmstatBalloonMigrate = 133,
4401    VmstatCmaAllocFail = 134,
4402    VmstatCmaAllocSuccess = 135,
4403    VmstatNrFileHugepages = 136,
4404    VmstatNrFilePmdmapped = 137,
4405    VmstatNrFollPinAcquired = 138,
4406    VmstatNrFollPinReleased = 139,
4407    VmstatNrSecPageTablePages = 140,
4408    VmstatNrShadowCallStack = 141,
4409    VmstatNrSwapcached = 142,
4410    VmstatNrThrottledWritten = 143,
4411    VmstatPgallocDevice = 144,
4412    VmstatPgallocDma32 = 145,
4413    VmstatPgdemoteDirect = 146,
4414    VmstatPgdemoteKswapd = 147,
4415    VmstatPgreuse = 148,
4416    VmstatPgscanAnon = 149,
4417    VmstatPgscanFile = 150,
4418    VmstatPgskipDevice = 151,
4419    VmstatPgskipDma32 = 152,
4420    VmstatPgstealAnon = 153,
4421    VmstatPgstealFile = 154,
4422    VmstatThpCollapseAlloc = 155,
4423    VmstatThpCollapseAllocFailed = 156,
4424    VmstatThpDeferredSplitPage = 157,
4425    VmstatThpFaultAlloc = 158,
4426    VmstatThpFaultFallback = 159,
4427    VmstatThpFaultFallbackCharge = 160,
4428    VmstatThpFileAlloc = 161,
4429    VmstatThpFileFallback = 162,
4430    VmstatThpFileFallbackCharge = 163,
4431    VmstatThpFileMapped = 164,
4432    VmstatThpMigrationFail = 165,
4433    VmstatThpMigrationSplit = 166,
4434    VmstatThpMigrationSuccess = 167,
4435    VmstatThpScanExceedNonePte = 168,
4436    VmstatThpScanExceedSharePte = 169,
4437    VmstatThpScanExceedSwapPte = 170,
4438    VmstatThpSplitPage = 171,
4439    VmstatThpSplitPageFailed = 172,
4440    VmstatThpSplitPmd = 173,
4441    VmstatThpSwpout = 174,
4442    VmstatThpSwpoutFallback = 175,
4443    VmstatThpZeroPageAlloc = 176,
4444    VmstatThpZeroPageAllocFailed = 177,
4445    VmstatVmaLockAbort = 178,
4446    VmstatVmaLockMiss = 179,
4447    VmstatVmaLockRetry = 180,
4448    VmstatVmaLockSuccess = 181,
4449    VmstatWorkingsetActivateAnon = 182,
4450    VmstatWorkingsetActivateFile = 183,
4451    VmstatWorkingsetNodes = 184,
4452    VmstatWorkingsetRefaultAnon = 185,
4453    VmstatWorkingsetRefaultFile = 186,
4454    VmstatWorkingsetRestoreAnon = 187,
4455    VmstatWorkingsetRestoreFile = 188,
4456}
4457impl VmstatCounters {
4458    /// String value of the enum field names used in the ProtoBuf definition.
4459    ///
4460    /// The values are not transformed in any way and thus are considered stable
4461    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4462    pub fn as_str_name(&self) -> &'static str {
4463        match self {
4464            VmstatCounters::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
4465            VmstatCounters::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
4466            VmstatCounters::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
4467            VmstatCounters::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
4468            VmstatCounters::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
4469            VmstatCounters::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
4470            VmstatCounters::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
4471            VmstatCounters::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
4472            VmstatCounters::VmstatNrMlock => "VMSTAT_NR_MLOCK",
4473            VmstatCounters::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
4474            VmstatCounters::VmstatNrMapped => "VMSTAT_NR_MAPPED",
4475            VmstatCounters::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
4476            VmstatCounters::VmstatNrDirty => "VMSTAT_NR_DIRTY",
4477            VmstatCounters::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
4478            VmstatCounters::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
4479            VmstatCounters::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
4480            VmstatCounters::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
4481            VmstatCounters::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
4482            VmstatCounters::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
4483            VmstatCounters::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
4484            VmstatCounters::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
4485            VmstatCounters::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
4486            VmstatCounters::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
4487            VmstatCounters::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
4488            VmstatCounters::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
4489            VmstatCounters::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
4490            VmstatCounters::VmstatNrShmem => "VMSTAT_NR_SHMEM",
4491            VmstatCounters::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
4492            VmstatCounters::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
4493            VmstatCounters::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
4494            VmstatCounters::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
4495            VmstatCounters::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
4496            VmstatCounters::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
4497            VmstatCounters::VmstatNrAnonTransparentHugepages => "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES",
4498            VmstatCounters::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
4499            VmstatCounters::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
4500            VmstatCounters::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
4501            VmstatCounters::VmstatNrDirtyBackgroundThreshold => "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD",
4502            VmstatCounters::VmstatPgpgin => "VMSTAT_PGPGIN",
4503            VmstatCounters::VmstatPgpgout => "VMSTAT_PGPGOUT",
4504            VmstatCounters::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
4505            VmstatCounters::VmstatPswpin => "VMSTAT_PSWPIN",
4506            VmstatCounters::VmstatPswpout => "VMSTAT_PSWPOUT",
4507            VmstatCounters::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
4508            VmstatCounters::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
4509            VmstatCounters::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
4510            VmstatCounters::VmstatPgfree => "VMSTAT_PGFREE",
4511            VmstatCounters::VmstatPgactivate => "VMSTAT_PGACTIVATE",
4512            VmstatCounters::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
4513            VmstatCounters::VmstatPgfault => "VMSTAT_PGFAULT",
4514            VmstatCounters::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
4515            VmstatCounters::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
4516            VmstatCounters::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
4517            VmstatCounters::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
4518            VmstatCounters::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
4519            VmstatCounters::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
4520            VmstatCounters::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
4521            VmstatCounters::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
4522            VmstatCounters::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
4523            VmstatCounters::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
4524            VmstatCounters::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
4525            VmstatCounters::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
4526            VmstatCounters::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
4527            VmstatCounters::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
4528            VmstatCounters::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
4529            VmstatCounters::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
4530            VmstatCounters::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
4531            VmstatCounters::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
4532            VmstatCounters::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
4533            VmstatCounters::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
4534            VmstatCounters::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
4535            VmstatCounters::VmstatKswapdHighWmarkHitQuickly => "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY",
4536            VmstatCounters::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
4537            VmstatCounters::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
4538            VmstatCounters::VmstatPgrotated => "VMSTAT_PGROTATED",
4539            VmstatCounters::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
4540            VmstatCounters::VmstatDropSlab => "VMSTAT_DROP_SLAB",
4541            VmstatCounters::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
4542            VmstatCounters::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
4543            VmstatCounters::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
4544            VmstatCounters::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
4545            VmstatCounters::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
4546            VmstatCounters::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
4547            VmstatCounters::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
4548            VmstatCounters::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
4549            VmstatCounters::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
4550            VmstatCounters::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
4551            VmstatCounters::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
4552            VmstatCounters::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
4553            VmstatCounters::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
4554            VmstatCounters::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
4555            VmstatCounters::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
4556            VmstatCounters::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
4557            VmstatCounters::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
4558            VmstatCounters::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
4559            VmstatCounters::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
4560            VmstatCounters::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
4561            VmstatCounters::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
4562            VmstatCounters::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
4563            VmstatCounters::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
4564            VmstatCounters::VmstatCompactDaemonMigrateScanned => "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED",
4565            VmstatCounters::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
4566            VmstatCounters::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
4567            VmstatCounters::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
4568            VmstatCounters::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
4569            VmstatCounters::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
4570            VmstatCounters::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
4571            VmstatCounters::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
4572            VmstatCounters::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
4573            VmstatCounters::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
4574            VmstatCounters::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
4575            VmstatCounters::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
4576            VmstatCounters::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
4577            VmstatCounters::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
4578            VmstatCounters::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
4579            VmstatCounters::VmstatOomKill => "VMSTAT_OOM_KILL",
4580            VmstatCounters::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
4581            VmstatCounters::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
4582            VmstatCounters::VmstatPgrefill => "VMSTAT_PGREFILL",
4583            VmstatCounters::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
4584            VmstatCounters::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
4585            VmstatCounters::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
4586            VmstatCounters::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
4587            VmstatCounters::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
4588            VmstatCounters::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
4589            VmstatCounters::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
4590            VmstatCounters::VmstatSwapRa => "VMSTAT_SWAP_RA",
4591            VmstatCounters::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
4592            VmstatCounters::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
4593            VmstatCounters::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
4594            VmstatCounters::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
4595            VmstatCounters::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
4596            VmstatCounters::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
4597            VmstatCounters::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
4598            VmstatCounters::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
4599            VmstatCounters::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
4600            VmstatCounters::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
4601            VmstatCounters::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
4602            VmstatCounters::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
4603            VmstatCounters::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
4604            VmstatCounters::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
4605            VmstatCounters::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
4606            VmstatCounters::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
4607            VmstatCounters::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
4608            VmstatCounters::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
4609            VmstatCounters::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
4610            VmstatCounters::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
4611            VmstatCounters::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
4612            VmstatCounters::VmstatPgreuse => "VMSTAT_PGREUSE",
4613            VmstatCounters::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
4614            VmstatCounters::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
4615            VmstatCounters::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
4616            VmstatCounters::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
4617            VmstatCounters::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
4618            VmstatCounters::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
4619            VmstatCounters::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
4620            VmstatCounters::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
4621            VmstatCounters::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
4622            VmstatCounters::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
4623            VmstatCounters::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
4624            VmstatCounters::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
4625            VmstatCounters::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
4626            VmstatCounters::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
4627            VmstatCounters::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
4628            VmstatCounters::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
4629            VmstatCounters::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
4630            VmstatCounters::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
4631            VmstatCounters::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
4632            VmstatCounters::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
4633            VmstatCounters::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
4634            VmstatCounters::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
4635            VmstatCounters::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
4636            VmstatCounters::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
4637            VmstatCounters::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
4638            VmstatCounters::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
4639            VmstatCounters::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
4640            VmstatCounters::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
4641            VmstatCounters::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
4642            VmstatCounters::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
4643            VmstatCounters::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
4644            VmstatCounters::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
4645            VmstatCounters::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
4646            VmstatCounters::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
4647            VmstatCounters::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
4648            VmstatCounters::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
4649            VmstatCounters::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
4650            VmstatCounters::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
4651            VmstatCounters::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
4652            VmstatCounters::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
4653        }
4654    }
4655}
4656/// This file defines the configuration for the Linux /proc poller data source,
4657/// which injects counters in the trace.
4658/// Counters that are needed in the trace must be explicitly listed in the
4659/// *_counters fields. This is to avoid spamming the trace with all counters
4660/// at all times.
4661/// The sampling rate is configurable. All polling rates (*_period_ms) need
4662/// to be integer multiples of each other.
4663/// OK:     [10ms, 10ms, 10ms],  [10ms, 20ms, 10ms],  [10ms, 20ms, 60ms]
4664/// Not OK: [10ms, 10ms, 11ms],  [10ms, 15ms, 20ms]
4665#[derive(Clone, PartialEq, ::prost::Message)]
4666pub struct SysStatsConfig {
4667    /// Polls /proc/meminfo every X ms, if non-zero.
4668    /// This is required to be > 10ms to avoid excessive CPU usage.
4669    /// Cost: 0.3 ms \[read\] + 0.07 ms [parse + trace injection]
4670    #[prost(uint32, optional, tag="1")]
4671    pub meminfo_period_ms: ::core::option::Option<u32>,
4672    /// If empty all known counters are reported. Otherwise, only the counters
4673    /// specified below are reported.
4674    #[prost(enumeration="MeminfoCounters", repeated, packed="false", tag="2")]
4675    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
4676    /// Polls /proc/vmstat every X ms, if non-zero.
4677    /// This is required to be > 10ms to avoid excessive CPU usage.
4678    /// Cost: 0.2 ms \[read\] + 0.3 ms [parse + trace injection]
4679    #[prost(uint32, optional, tag="3")]
4680    pub vmstat_period_ms: ::core::option::Option<u32>,
4681    #[prost(enumeration="VmstatCounters", repeated, packed="false", tag="4")]
4682    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
4683    /// Pols /proc/stat every X ms, if non-zero.
4684    /// This is required to be > 10ms to avoid excessive CPU usage.
4685    /// Cost: 4.1 ms \[read\] + 1.9 ms [parse + trace injection]
4686    #[prost(uint32, optional, tag="5")]
4687    pub stat_period_ms: ::core::option::Option<u32>,
4688    #[prost(enumeration="sys_stats_config::StatCounters", repeated, packed="false", tag="6")]
4689    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
4690    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
4691    /// This is required to be > 10ms to avoid excessive CPU usage.
4692    /// This option can be used to record unchanging values.
4693    /// Updates from frequency changes can come from ftrace/set_clock_rate.
4694    #[prost(uint32, optional, tag="7")]
4695    pub devfreq_period_ms: ::core::option::Option<u32>,
4696    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
4697    /// This is required to be > 10ms to avoid excessive CPU usage.
4698    #[prost(uint32, optional, tag="8")]
4699    pub cpufreq_period_ms: ::core::option::Option<u32>,
4700    /// Polls /proc/buddyinfo every X ms, if non-zero.
4701    /// This is required to be > 10ms to avoid excessive CPU usage.
4702    #[prost(uint32, optional, tag="9")]
4703    pub buddyinfo_period_ms: ::core::option::Option<u32>,
4704    /// Polls /proc/diskstats every X ms, if non-zero.
4705    /// This is required to be > 10ms to avoid excessive CPU usage.
4706    #[prost(uint32, optional, tag="10")]
4707    pub diskstat_period_ms: ::core::option::Option<u32>,
4708    /// Polls /proc/pressure/* every X ms, if non-zero.
4709    /// This is required to be > 10ms to avoid excessive CPU usage.
4710    #[prost(uint32, optional, tag="11")]
4711    pub psi_period_ms: ::core::option::Option<u32>,
4712}
4713/// Nested message and enum types in `SysStatsConfig`.
4714pub mod sys_stats_config {
4715    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4716    #[repr(i32)]
4717    pub enum StatCounters {
4718        StatUnspecified = 0,
4719        StatCpuTimes = 1,
4720        StatIrqCounts = 2,
4721        StatSoftirqCounts = 3,
4722        StatForkCount = 4,
4723    }
4724    impl StatCounters {
4725        /// String value of the enum field names used in the ProtoBuf definition.
4726        ///
4727        /// The values are not transformed in any way and thus are considered stable
4728        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4729        pub fn as_str_name(&self) -> &'static str {
4730            match self {
4731                StatCounters::StatUnspecified => "STAT_UNSPECIFIED",
4732                StatCounters::StatCpuTimes => "STAT_CPU_TIMES",
4733                StatCounters::StatIrqCounts => "STAT_IRQ_COUNTS",
4734                StatCounters::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
4735                StatCounters::StatForkCount => "STAT_FORK_COUNT",
4736            }
4737        }
4738    }
4739}
4740/// The configuration for a fake producer used in tests.
4741#[derive(Clone, PartialEq, ::prost::Message)]
4742pub struct TestConfig {
4743    /// The number of messages the fake producer should send.
4744    #[prost(uint32, optional, tag="1")]
4745    pub message_count: ::core::option::Option<u32>,
4746    /// The maximum number of messages which should be sent each second.
4747    /// The actual obserced speed may be lower if the producer is unable to
4748    /// work fast enough.
4749    /// If this is zero or unset, the producer will send as fast as possible.
4750    #[prost(uint32, optional, tag="2")]
4751    pub max_messages_per_second: ::core::option::Option<u32>,
4752    /// The seed value for a simple multiplicative congruential pseudo-random
4753    /// number sequence.
4754    #[prost(uint32, optional, tag="3")]
4755    pub seed: ::core::option::Option<u32>,
4756    /// The size of each message in bytes. Should be greater than or equal 5 to
4757    /// account for the number of bytes needed to encode the random number and a
4758    /// null byte for the string.
4759    #[prost(uint32, optional, tag="4")]
4760    pub message_size: ::core::option::Option<u32>,
4761    /// Whether the producer should send a event batch when the data source is
4762    /// is initially registered.
4763    #[prost(bool, optional, tag="5")]
4764    pub send_batch_on_register: ::core::option::Option<bool>,
4765    #[prost(message, optional, tag="6")]
4766    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
4767}
4768/// Nested message and enum types in `TestConfig`.
4769pub mod test_config {
4770    #[derive(Clone, PartialEq, ::prost::Message)]
4771    pub struct DummyFields {
4772        #[prost(uint32, optional, tag="1")]
4773        pub field_uint32: ::core::option::Option<u32>,
4774        #[prost(int32, optional, tag="2")]
4775        pub field_int32: ::core::option::Option<i32>,
4776        #[prost(uint64, optional, tag="3")]
4777        pub field_uint64: ::core::option::Option<u64>,
4778        #[prost(int64, optional, tag="4")]
4779        pub field_int64: ::core::option::Option<i64>,
4780        #[prost(fixed64, optional, tag="5")]
4781        pub field_fixed64: ::core::option::Option<u64>,
4782        #[prost(sfixed64, optional, tag="6")]
4783        pub field_sfixed64: ::core::option::Option<i64>,
4784        #[prost(fixed32, optional, tag="7")]
4785        pub field_fixed32: ::core::option::Option<u32>,
4786        #[prost(sfixed32, optional, tag="8")]
4787        pub field_sfixed32: ::core::option::Option<i32>,
4788        #[prost(double, optional, tag="9")]
4789        pub field_double: ::core::option::Option<f64>,
4790        #[prost(float, optional, tag="10")]
4791        pub field_float: ::core::option::Option<f32>,
4792        #[prost(sint64, optional, tag="11")]
4793        pub field_sint64: ::core::option::Option<i64>,
4794        #[prost(sint32, optional, tag="12")]
4795        pub field_sint32: ::core::option::Option<i32>,
4796        #[prost(string, optional, tag="13")]
4797        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
4798        #[prost(bytes="vec", optional, tag="14")]
4799        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4800    }
4801}
4802/// The following fields define the set of enabled trace categories. Each list
4803/// item is a glob.
4804///
4805/// To determine if category is enabled, it is checked against the filters in
4806/// the following order:
4807///
4808///    1. Exact matches in enabled categories.
4809///    2. Exact matches in enabled tags.
4810///    3. Exact matches in disabled categories.
4811///    4. Exact matches in disabled tags.
4812///    5. Pattern matches in enabled categories.
4813///    6. Pattern matches in enabled tags.
4814///    7. Pattern matches in disabled categories.
4815///    8. Pattern matches in disabled tags.
4816///
4817/// If none of the steps produced a match, the category is enabled by default.
4818///
4819/// Examples:
4820///
4821///   - To enable all non-slow/debug categories:
4822///
4823///        No configuration needed, happens by default.
4824///
4825///   - To enable a specific category:
4826///
4827///        disabled_categories = \["*"\]
4828///        enabled_categories = \["my_category"\]
4829///
4830///   - To enable only categories with a specific tag:
4831///
4832///        disabled_tags = \["*"\]
4833///        enabled_tags = \["my_tag"\]
4834///
4835#[derive(Clone, PartialEq, ::prost::Message)]
4836pub struct TrackEventConfig {
4837    /// Default: []
4838    #[prost(string, repeated, tag="1")]
4839    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4840    /// Default: []
4841    #[prost(string, repeated, tag="2")]
4842    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4843    /// Default: ["slow", "debug"]
4844    #[prost(string, repeated, tag="3")]
4845    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4846    /// Default: []
4847    #[prost(string, repeated, tag="4")]
4848    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4849    /// Default: false (i.e. enabled by default)
4850    #[prost(bool, optional, tag="5")]
4851    pub disable_incremental_timestamps: ::core::option::Option<bool>,
4852    /// Allows to specify a custom unit different than the default (ns).
4853    /// Also affects thread timestamps if enable_thread_time_sampling = true.
4854    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
4855    /// 3000 ns = 3 us.
4856    /// Default: 1 (if unset, it should be read as 1).
4857    #[prost(uint64, optional, tag="6")]
4858    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
4859    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
4860    /// When true, any debug annotations provided as arguments to the
4861    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
4862    /// still be emitted even if set to true.
4863    #[prost(bool, optional, tag="7")]
4864    pub filter_debug_annotations: ::core::option::Option<bool>,
4865    /// Default : false (i.e. disabled)
4866    /// When true, the SDK samples and emits the current thread time counter value
4867    /// for each event on the current thread's track. This value represents the
4868    /// total CPU time consumed by that thread since its creation. Note that if a
4869    /// thread is not scheduled by OS for some duration, that time won't be
4870    /// included in thread_time.
4871    /// Learn more : "CLOCK_THREAD_CPUTIME_ID" flag at
4872    /// <https://linux.die.net/man/3/clock_gettime>
4873    #[prost(bool, optional, tag="8")]
4874    pub enable_thread_time_sampling: ::core::option::Option<bool>,
4875    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
4876    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
4877    /// out.
4878    #[prost(bool, optional, tag="9")]
4879    pub filter_dynamic_event_names: ::core::option::Option<bool>,
4880}
4881/// This data-source does a one-off recording of system information when
4882/// the trace starts.
4883/// Currently this includes:
4884/// - Values of
4885/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
4886/// datasource has no configuration options at present.
4887#[derive(Clone, PartialEq, ::prost::Message)]
4888pub struct SystemInfoConfig {
4889}
4890/// The configuration that is passed to each data source when starting tracing.
4891/// Next id: 126
4892#[derive(Clone, PartialEq, ::prost::Message)]
4893pub struct DataSourceConfig {
4894    /// Data source unique name, e.g., "linux.ftrace". This must match
4895    /// the name passed by the data source when it registers (see
4896    /// RegisterDataSource()).
4897    #[prost(string, optional, tag="1")]
4898    pub name: ::core::option::Option<::prost::alloc::string::String>,
4899    /// The index of the logging buffer where TracePacket(s) will be stored.
4900    /// This field doesn't make a major difference for the Producer(s). The final
4901    /// logging buffers, in fact, are completely owned by the Service. We just ask
4902    /// the Producer to copy this number into the chunk headers it emits, so that
4903    /// the Service can quickly identify the buffer where to move the chunks into
4904    /// without expensive lookups on its fastpath.
4905    #[prost(uint32, optional, tag="2")]
4906    pub target_buffer: ::core::option::Option<u32>,
4907    /// Set by the service to indicate the duration of the trace.
4908    /// DO NOT SET in consumer as this will be overridden by the service.
4909    #[prost(uint32, optional, tag="3")]
4910    pub trace_duration_ms: ::core::option::Option<u32>,
4911    /// If true, |trace_duration_ms| should count also time in suspend. This
4912    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
4913    #[prost(bool, optional, tag="122")]
4914    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
4915    /// Set by the service to indicate how long it waits after StopDataSource.
4916    /// DO NOT SET in consumer as this will be overridden by the service.
4917    #[prost(uint32, optional, tag="7")]
4918    pub stop_timeout_ms: ::core::option::Option<u32>,
4919    /// Set by the service to indicate whether this tracing session has extra
4920    /// guardrails.
4921    /// DO NOT SET in consumer as this will be overridden by the service.
4922    #[prost(bool, optional, tag="6")]
4923    pub enable_extra_guardrails: ::core::option::Option<bool>,
4924    /// Set by the service to indicate which user initiated this trace.
4925    /// DO NOT SET in consumer as this will be overridden by the service.
4926    #[prost(enumeration="data_source_config::SessionInitiator", optional, tag="8")]
4927    pub session_initiator: ::core::option::Option<i32>,
4928    /// Set by the service to indicate which tracing session the data source
4929    /// belongs to. The intended use case for this is checking if two data sources,
4930    /// one of which produces metadata for the other one, belong to the same trace
4931    /// session and hence should be linked together.
4932    /// This field was introduced in Aug 2018 after Android P.
4933    /// DO NOT SET in consumer as this will be overridden by the service.
4934    #[prost(uint64, optional, tag="4")]
4935    pub tracing_session_id: ::core::option::Option<u64>,
4936    // Keeep the lower IDs (up to 99) for fields that are *not* specific to
4937    // data-sources and needs to be processed by the traced daemon.
4938
4939    // All data source config fields must be marked as \[lazy=true\]. This prevents
4940    // the proto-to-cpp generator from recursing into those when generating the
4941    // cpp classes and polluting tracing/core with data-source-specific classes.
4942    // Instead they are treated as opaque strings containing raw proto bytes.
4943
4944    /// Data source name: linux.ftrace
4945    #[prost(message, optional, tag="100")]
4946    pub ftrace_config: ::core::option::Option<FtraceConfig>,
4947    /// Data source name: linux.inode_file_map
4948    #[prost(message, optional, tag="102")]
4949    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
4950    /// Data source name: linux.process_stats
4951    #[prost(message, optional, tag="103")]
4952    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
4953    /// Data source name: linux.sys_stats
4954    #[prost(message, optional, tag="104")]
4955    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
4956    /// Data source name: android.heapprofd
4957    /// Introduced in Android 10.
4958    #[prost(message, optional, tag="105")]
4959    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
4960    /// Data source name: android.java_hprof
4961    /// Introduced in Android 11.
4962    #[prost(message, optional, tag="110")]
4963    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
4964    /// Data source name: android.power
4965    #[prost(message, optional, tag="106")]
4966    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
4967    /// Data source name: android.log
4968    #[prost(message, optional, tag="107")]
4969    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
4970    /// TODO(fmayer): Add data source name for this.
4971    #[prost(message, optional, tag="108")]
4972    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
4973    /// Data source name: android.game_interventions
4974    #[prost(message, optional, tag="116")]
4975    pub android_game_intervention_list_config: ::core::option::Option<AndroidGameInterventionListConfig>,
4976    /// Data source name: android.packages_list
4977    #[prost(message, optional, tag="109")]
4978    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
4979    /// Data source name: linux.perf
4980    #[prost(message, optional, tag="111")]
4981    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
4982    /// Data source name: vulkan.memory_tracker
4983    #[prost(message, optional, tag="112")]
4984    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
4985    /// Data source name: track_event
4986    #[prost(message, optional, tag="113")]
4987    pub track_event_config: ::core::option::Option<TrackEventConfig>,
4988    /// Data source name: android.polled_state
4989    #[prost(message, optional, tag="114")]
4990    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
4991    /// Data source name: android.system_property
4992    #[prost(message, optional, tag="118")]
4993    pub android_system_property_config: ::core::option::Option<AndroidSystemPropertyConfig>,
4994    /// Data source name: android.statsd
4995    #[prost(message, optional, tag="117")]
4996    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
4997    /// Data source name: linux.system_info
4998    #[prost(message, optional, tag="119")]
4999    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
5000    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
5001    /// avoid proto serialization and de-serialization there because that would
5002    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
5003    /// C++ class for it so it can pass around plain C++ objets.
5004    #[prost(message, optional, tag="101")]
5005    pub chrome_config: ::core::option::Option<ChromeConfig>,
5006    /// Data source name: code.v8.dev
5007    #[prost(message, optional, tag="127")]
5008    pub v8_config: ::core::option::Option<V8Config>,
5009    /// If an interceptor is specified here, packets for this data source will be
5010    /// rerouted to the interceptor instead of the main trace buffer. This can be
5011    /// used, for example, to write trace data into ETW or for logging trace points
5012    /// to the console.
5013    ///
5014    /// Note that interceptors are only supported by data sources registered
5015    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
5016    /// traced_probes) may not support interception.
5017    #[prost(message, optional, tag="115")]
5018    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
5019    /// Data source name: android.network_packets.
5020    /// Introduced in Android 14 (U).
5021    #[prost(message, optional, tag="120")]
5022    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
5023    /// Data source name: android.surfaceflinger.layers
5024    #[prost(message, optional, tag="121")]
5025    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
5026    /// Data source name: android.surfaceflinger.transactions
5027    #[prost(message, optional, tag="123")]
5028    pub surfaceflinger_transactions_config: ::core::option::Option<SurfaceFlingerTransactionsConfig>,
5029    /// Data source name: android.sdk_sysprop_guard
5030    /// Introduced in Android 14 (U) QPR1.
5031    #[prost(message, optional, tag="124")]
5032    pub android_sdk_sysprop_guard_config: ::core::option::Option<AndroidSdkSyspropGuardConfig>,
5033    /// Data source name: windows.etw
5034    #[prost(message, optional, tag="125")]
5035    pub etw_config: ::core::option::Option<EtwConfig>,
5036    /// Data source name: android.protolog
5037    #[prost(message, optional, tag="126")]
5038    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
5039    /// This is a fallback mechanism to send a free-form text config to the
5040    /// producer. In theory this should never be needed. All the code that
5041    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
5042    /// the trace config proto and propagate unknown fields. However, if anything
5043    /// in the pipeline (client or backend) ends up breaking this forward compat
5044    /// plan, this field will become the escape hatch to allow future data sources
5045    /// to get some meaningful configuration.
5046    #[prost(string, optional, tag="1000")]
5047    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
5048    /// This field is only used for testing.
5049    #[prost(message, optional, tag="1001")]
5050    pub for_testing: ::core::option::Option<TestConfig>,
5051}
5052/// Nested message and enum types in `DataSourceConfig`.
5053pub mod data_source_config {
5054    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5055    #[repr(i32)]
5056    pub enum SessionInitiator {
5057        Unspecified = 0,
5058        /// This trace was initiated from a trusted system app has DUMP and
5059        /// USAGE_STATS permission. This system app is expected to not expose the
5060        /// trace to the user of the device.
5061        /// This is determined by checking the UID initiating the trace.
5062        TrustedSystem = 1,
5063    }
5064    impl SessionInitiator {
5065        /// String value of the enum field names used in the ProtoBuf definition.
5066        ///
5067        /// The values are not transformed in any way and thus are considered stable
5068        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5069        pub fn as_str_name(&self) -> &'static str {
5070            match self {
5071                SessionInitiator::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
5072                SessionInitiator::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
5073            }
5074        }
5075    }
5076}
5077/// The overall config that is used when starting a new tracing session through
5078/// ProducerPort::StartTracing().
5079/// It contains the general config for the logging buffer(s) and the configs for
5080/// all the data source being enabled.
5081///
5082/// Next id: 38.
5083#[derive(Clone, PartialEq, ::prost::Message)]
5084pub struct TraceConfig {
5085    #[prost(message, repeated, tag="1")]
5086    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
5087    #[prost(message, repeated, tag="2")]
5088    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
5089    #[prost(message, optional, tag="20")]
5090    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
5091    /// If specified, the trace will be stopped |duration_ms| after starting.
5092    /// This does *not* count the time the system is suspended, so we will run
5093    /// for duration_ms of system activity, not wall time.
5094    ///
5095    /// However in case of traces with triggers, see
5096    /// TriggerConfig.trigger_timeout_ms instead.
5097    #[prost(uint32, optional, tag="3")]
5098    pub duration_ms: ::core::option::Option<u32>,
5099    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
5100    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
5101    /// Linux/Android, no-op on other platforms. This is used when dealing with
5102    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
5103    /// wall-time, making them more likely to hit device reboots (and hence loss).
5104    /// This option also changes consistently the semantic of
5105    /// TriggerConfig.stop_delay_ms.
5106    #[prost(bool, optional, tag="36")]
5107    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
5108    /// This is set when --dropbox is passed to the Perfetto command line client
5109    /// and enables guardrails that limit resource usage for traces requested
5110    /// by statsd.
5111    #[prost(bool, optional, tag="4")]
5112    pub enable_extra_guardrails: ::core::option::Option<bool>,
5113    /// Reject producers that are not running under the same UID as the tracing
5114    /// service.
5115    #[prost(enumeration="trace_config::LockdownModeOperation", optional, tag="5")]
5116    pub lockdown_mode: ::core::option::Option<i32>,
5117    #[prost(message, repeated, tag="6")]
5118    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
5119    /// Statsd-specific metadata.
5120    #[prost(message, optional, tag="7")]
5121    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
5122    /// When true && |output_path| is empty, the EnableTracing() request must
5123    /// provide a file descriptor. The service will then periodically read packets
5124    /// out of the trace buffer and store it into the passed file.
5125    /// If |output_path| is not empty no fd should be passed, the service
5126    /// will create a new file and write into that (see comment below).
5127    #[prost(bool, optional, tag="8")]
5128    pub write_into_file: ::core::option::Option<bool>,
5129    /// This must point to a non-existing file. If the file exists the service
5130    /// will NOT overwrite and will fail instead as a security precaution.
5131    /// On Android, when this is used with the system traced, the path must be
5132    /// within /data/misc/perfetto-traces/ or the trace will fail.
5133    /// This option has been introduced in Android R. Before R write_into_file
5134    /// can be used only with the "pass a file descriptor over IPC" mode.
5135    #[prost(string, optional, tag="29")]
5136    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
5137    /// Optional. If non-zero tunes the write period. A min value of 100ms is
5138    /// enforced (i.e. smaller values are ignored).
5139    #[prost(uint32, optional, tag="9")]
5140    pub file_write_period_ms: ::core::option::Option<u32>,
5141    /// Optional. When non zero the periodic write stops once at most X bytes
5142    /// have been written into the file. Tracing is disabled when this limit is
5143    /// reached, even if |duration_ms| has not been reached yet.
5144    #[prost(uint64, optional, tag="10")]
5145    pub max_file_size_bytes: ::core::option::Option<u64>,
5146    #[prost(message, optional, tag="11")]
5147    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
5148    /// When true, data sources are not started until an explicit call to
5149    /// StartTracing() on the consumer port. This is to support early
5150    /// initialization and fast trace triggering. This can be used only when the
5151    /// Consumer explicitly triggers the StartTracing() method.
5152    /// This should not be used in a remote trace config via statsd, doing so will
5153    /// result in a hung trace session.
5154    #[prost(bool, optional, tag="12")]
5155    pub deferred_start: ::core::option::Option<bool>,
5156    /// When set, it periodically issues a Flush() to all data source, forcing them
5157    /// to commit their data into the tracing service. This can be used for
5158    /// quasi-real-time streaming mode and to guarantee some partial ordering of
5159    /// events in the trace in windows of X ms.
5160    #[prost(uint32, optional, tag="13")]
5161    pub flush_period_ms: ::core::option::Option<u32>,
5162    /// Wait for this long for producers to acknowledge flush requests.
5163    /// Default 5s.
5164    #[prost(uint32, optional, tag="14")]
5165    pub flush_timeout_ms: ::core::option::Option<u32>,
5166    /// Wait for this long for producers to acknowledge stop requests.
5167    /// Default 5s.
5168    #[prost(uint32, optional, tag="23")]
5169    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
5170    /// Android-only. If set, sends an intent to the Traceur system app when the
5171    /// trace ends to notify it about the trace readiness.
5172    #[prost(bool, optional, tag="16")]
5173    pub notify_traceur: ::core::option::Option<bool>,
5174    /// This field was introduced in Android S.
5175    /// Android-only. If set to a value > 0, marks the trace session as a candidate
5176    /// for being attached to a bugreport. This field effectively acts as a z-index
5177    /// for bugreports. When Android's dumpstate runs perfetto
5178    /// --save-for-bugreport, traced will pick the tracing session with the highest
5179    /// score (score <= 0 is ignored) and:
5180    /// On Android S, T:  will steal its contents, save the trace into
5181    ///      a known path and stop prematurely.
5182    /// On Android U+: will create a read-only snapshot and save that into a known
5183    ///      path, without stoppin the original tracing session.
5184    /// When this field is set the tracing session becomes eligible to be cloned
5185    /// by other UIDs.
5186    #[prost(int32, optional, tag="30")]
5187    pub bugreport_score: ::core::option::Option<i32>,
5188    #[prost(message, optional, tag="17")]
5189    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
5190    /// When this is non-empty the perfetto command line tool will ignore the rest
5191    /// of this TraceConfig and instead connect to the perfetto service as a
5192    /// producer and send these triggers, potentially stopping or starting traces
5193    /// that were previous configured to use a TriggerConfig.
5194    #[prost(string, repeated, tag="18")]
5195    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5196    #[prost(message, optional, tag="21")]
5197    pub incremental_state_config: ::core::option::Option<trace_config::IncrementalStateConfig>,
5198    /// Additional guardrail used by the Perfetto command line client.
5199    /// On user builds when --dropbox is set perfetto will refuse to trace unless
5200    /// this is also set.
5201    /// Added in Q.
5202    #[prost(bool, optional, tag="19")]
5203    pub allow_user_build_tracing: ::core::option::Option<bool>,
5204    /// If set the tracing service will ensure there is at most one tracing session
5205    /// with this key.
5206    #[prost(string, optional, tag="22")]
5207    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
5208    #[prost(enumeration="trace_config::CompressionType", optional, tag="24")]
5209    pub compression_type: ::core::option::Option<i32>,
5210    #[prost(message, optional, tag="25")]
5211    pub incident_report_config: ::core::option::Option<trace_config::IncidentReportConfig>,
5212    /// Android-only. Not for general use. If specified, sets the logging to statsd
5213    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
5214    /// this to enabled (if not explicitly set in the config) when specifying
5215    /// --upload.
5216    #[prost(enumeration="trace_config::StatsdLogging", optional, tag="31")]
5217    pub statsd_logging: ::core::option::Option<i32>,
5218    /// An identifier clients can use to tie this trace to other logging.
5219    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
5220    /// Trace UUID. If this field is set, the tracing service will respect the
5221    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
5222    /// gap-less snapshotting is not used.
5223    #[deprecated]
5224    #[prost(int64, optional, tag="27")]
5225    pub trace_uuid_msb: ::core::option::Option<i64>,
5226    #[deprecated]
5227    #[prost(int64, optional, tag="28")]
5228    pub trace_uuid_lsb: ::core::option::Option<i64>,
5229    #[prost(message, optional, tag="33")]
5230    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
5231    #[prost(message, optional, tag="34")]
5232    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
5233    #[prost(message, optional, tag="35")]
5234    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
5235}
5236/// Nested message and enum types in `TraceConfig`.
5237pub mod trace_config {
5238    #[derive(Clone, PartialEq, ::prost::Message)]
5239    pub struct BufferConfig {
5240        #[prost(uint32, optional, tag="1")]
5241        pub size_kb: ::core::option::Option<u32>,
5242        #[prost(enumeration="buffer_config::FillPolicy", optional, tag="4")]
5243        pub fill_policy: ::core::option::Option<i32>,
5244        /// When true the buffer is moved (rather than copied) onto the cloned
5245        /// session, and an empty buffer of the same size is allocated in the source
5246        /// tracing session. This feature will likely get deprecated in the future.
5247        /// It been introduced mainly to support the surfaceflinger snapshot dump
5248        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
5249        /// that case we don't want to retain another in-memory copy of the buffer.
5250        #[prost(bool, optional, tag="5")]
5251        pub transfer_on_clone: ::core::option::Option<bool>,
5252        /// Used in conjuction with transfer_on_clone. When true the buffer is
5253        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
5254        /// that if the data source took too long to write the data in a previous
5255        /// clone-related flush, we don't end up with a mixture of leftovers from
5256        /// the previous write and new data.
5257        #[prost(bool, optional, tag="6")]
5258        pub clear_before_clone: ::core::option::Option<bool>,
5259    }
5260    /// Nested message and enum types in `BufferConfig`.
5261    pub mod buffer_config {
5262        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5263        #[repr(i32)]
5264        pub enum FillPolicy {
5265            Unspecified = 0,
5266            /// Default behavior. The buffer operates as a conventional ring buffer.
5267            /// If the writer is faster than the reader (or if the reader reads only
5268            /// after tracing is stopped) newly written packets will overwrite old
5269            /// packets.
5270            RingBuffer = 1,
5271            /// Behaves like RING_BUFFER as long as there is space in the buffer or
5272            /// the reader catches up with the writer. As soon as the writer hits
5273            /// an unread chunk, it stops accepting new data in the buffer.
5274            Discard = 2,
5275        }
5276        impl FillPolicy {
5277            /// String value of the enum field names used in the ProtoBuf definition.
5278            ///
5279            /// The values are not transformed in any way and thus are considered stable
5280            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5281            pub fn as_str_name(&self) -> &'static str {
5282                match self {
5283                    FillPolicy::Unspecified => "UNSPECIFIED",
5284                    FillPolicy::RingBuffer => "RING_BUFFER",
5285                    FillPolicy::Discard => "DISCARD",
5286                }
5287            }
5288        }
5289    }
5290    #[derive(Clone, PartialEq, ::prost::Message)]
5291    pub struct DataSource {
5292        /// Filters and data-source specific config. It contains also the unique name
5293        /// of the data source, the one passed in the  DataSourceDescriptor when they
5294        /// register on the service.
5295        #[prost(message, optional, tag="1")]
5296        pub config: ::core::option::Option<super::DataSourceConfig>,
5297        /// Optional. If multiple producers (~processes) expose the same data source
5298        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
5299        /// the data source is enabled only for producers whose names match any of
5300        /// the filters.
5301        /// |producer_name_filter| has to be an exact match, while
5302        /// |producer_name_regex_filter| is a regular expression.
5303        /// This allows to enable a data source only for specific processes.
5304        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
5305        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
5306        #[prost(string, repeated, tag="2")]
5307        pub producer_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5308        #[prost(string, repeated, tag="3")]
5309        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5310    }
5311    /// Config for disabling builtin data sources in the tracing service.
5312    #[derive(Clone, PartialEq, ::prost::Message)]
5313    pub struct BuiltinDataSource {
5314        /// Disable emitting clock timestamps into the trace.
5315        #[prost(bool, optional, tag="1")]
5316        pub disable_clock_snapshotting: ::core::option::Option<bool>,
5317        /// Disable echoing the original trace config in the trace.
5318        #[prost(bool, optional, tag="2")]
5319        pub disable_trace_config: ::core::option::Option<bool>,
5320        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
5321        #[prost(bool, optional, tag="3")]
5322        pub disable_system_info: ::core::option::Option<bool>,
5323        /// Disable emitting events for data-source state changes (e.g. the marker
5324        /// for all data sources having ACKed the start of the trace).
5325        #[prost(bool, optional, tag="4")]
5326        pub disable_service_events: ::core::option::Option<bool>,
5327        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
5328        /// also ClockSnapshot's primary_trace_clock. The configured value is written
5329        /// into the trace as part of the ClockSnapshots emitted by the service.
5330        /// Trace processor will attempt to translate packet/event timestamps from
5331        /// various data sources (and their chosen clock domains) to this domain
5332        /// during import. Added in Android R.
5333        #[prost(enumeration="super::BuiltinClock", optional, tag="5")]
5334        pub primary_trace_clock: ::core::option::Option<i32>,
5335        /// Time interval in between snapshotting of sync markers, clock snapshots,
5336        /// stats, and other periodic service-emitted events. Note that the service
5337        /// only keeps track of the first and the most recent snapshot until
5338        /// ReadBuffers() is called.
5339        #[prost(uint32, optional, tag="6")]
5340        pub snapshot_interval_ms: ::core::option::Option<u32>,
5341        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
5342        /// clock should be used for periodic snapshots of service-emitted events.
5343        /// This means, if a snapshot *should* have happened during suspend, it will
5344        /// happen immediately after the device resumes.
5345        ///
5346        /// Choosing a clock like this is done on best-effort basis; not all
5347        /// platforms (e.g. Windows) expose a clock which can be used for periodic
5348        /// tasks counting suspend. If such a clock is not available, the service
5349        /// falls back to the best-available alternative.
5350        ///
5351        /// Introduced in Android S.
5352        /// TODO(lalitm): deprecate this in T and make this the default if nothing
5353        /// crashes in S.
5354        #[prost(bool, optional, tag="7")]
5355        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
5356        /// Disables the reporting of per-trace-writer histograms in TraceStats.
5357        #[prost(bool, optional, tag="8")]
5358        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
5359    }
5360    #[derive(Clone, PartialEq, ::prost::Message)]
5361    pub struct ProducerConfig {
5362        /// Identifies the producer for which this config is for.
5363        #[prost(string, optional, tag="1")]
5364        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
5365        /// Specifies the preferred size of the shared memory buffer. If the size is
5366        /// larger than the max size, the max will be used. If it is smaller than
5367        /// the page size or doesn't fit pages evenly into it, it will fall back to
5368        /// the size specified by the producer or finally the default shared memory
5369        /// size.
5370        #[prost(uint32, optional, tag="2")]
5371        pub shm_size_kb: ::core::option::Option<u32>,
5372        /// Specifies the preferred size of each page in the shared memory buffer.
5373        /// Must be an integer multiple of 4K.
5374        #[prost(uint32, optional, tag="3")]
5375        pub page_size_kb: ::core::option::Option<u32>,
5376    }
5377    /// Contains statsd-specific metadata about an alert associated with the trace.
5378    #[derive(Clone, PartialEq, ::prost::Message)]
5379    pub struct StatsdMetadata {
5380        /// The identifier of the alert which triggered this trace.
5381        #[prost(int64, optional, tag="1")]
5382        pub triggering_alert_id: ::core::option::Option<i64>,
5383        /// The uid which registered the triggering configuration with statsd.
5384        #[prost(int32, optional, tag="2")]
5385        pub triggering_config_uid: ::core::option::Option<i32>,
5386        /// The identifier of the config which triggered the alert.
5387        #[prost(int64, optional, tag="3")]
5388        pub triggering_config_id: ::core::option::Option<i64>,
5389        /// The identifier of the subscription which triggered this trace.
5390        #[prost(int64, optional, tag="4")]
5391        pub triggering_subscription_id: ::core::option::Option<i64>,
5392    }
5393    /// Contains flags which override the default values of the guardrails inside
5394    /// Perfetto.
5395    #[derive(Clone, PartialEq, ::prost::Message)]
5396    pub struct GuardrailOverrides {
5397        /// Override the default limit (in bytes) for uploading data to server within
5398        /// a 24 hour period.
5399        /// On R-, this override only affected userdebug builds. Since S, it also
5400        /// affects user builds.
5401        #[prost(uint64, optional, tag="1")]
5402        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
5403        /// Overrides the guardrail for maximum trace buffer size.
5404        /// Available on U+
5405        #[prost(uint32, optional, tag="2")]
5406        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
5407    }
5408    /// Triggers allow producers to start or stop the tracing session when an event
5409    /// occurs.
5410    ///
5411    /// For example if we are tracing probabilistically, most traces will be
5412    /// uninteresting. Triggers allow us to keep only the interesting ones such as
5413    /// those traces during which the device temperature reached a certain
5414    /// threshold. In this case the producer can activate a trigger to keep
5415    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
5416    /// (START_TRACING) because it knows something is about to happen.
5417    #[derive(Clone, PartialEq, ::prost::Message)]
5418    pub struct TriggerConfig {
5419        #[prost(enumeration="trigger_config::TriggerMode", optional, tag="1")]
5420        pub trigger_mode: ::core::option::Option<i32>,
5421        /// This flag is really a workaround for b/274931668. This is needed only
5422        /// when deploying configs to different versions of the tracing service.
5423        /// When this is set to true this has the same effect of setting trigger_mode
5424        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
5425        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
5426        /// versions of Android and fall back to STOP_TRACING on older versions where
5427        /// CLONE_SNAPSHOT did not exist.
5428        /// When using this flag, trigger_mode must be set to STOP_TRACING.
5429        #[prost(bool, optional, tag="5")]
5430        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
5431        /// A list of triggers which are related to this configuration. If ANY
5432        /// trigger is seen then an action will be performed based on |trigger_mode|.
5433        #[prost(message, repeated, tag="2")]
5434        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
5435        /// Required and must be positive if a TriggerConfig is specified. This is
5436        /// how long this TraceConfig should wait for a trigger to arrive. After this
5437        /// period of time if no trigger is seen the TracingSession will be cleaned
5438        /// up.
5439        #[prost(uint32, optional, tag="3")]
5440        pub trigger_timeout_ms: ::core::option::Option<u32>,
5441    }
5442    /// Nested message and enum types in `TriggerConfig`.
5443    pub mod trigger_config {
5444        #[derive(Clone, PartialEq, ::prost::Message)]
5445        pub struct Trigger {
5446            /// The producer must specify this name to activate the trigger.
5447            #[prost(string, optional, tag="1")]
5448            pub name: ::core::option::Option<::prost::alloc::string::String>,
5449            /// An std::regex that will match the producer that can activate this
5450            /// trigger. This is optional. If unset any producers can activate this
5451            /// trigger.
5452            #[prost(string, optional, tag="2")]
5453            pub producer_name_regex: ::core::option::Option<::prost::alloc::string::String>,
5454            /// After a trigger is received either in START_TRACING or STOP_TRACING
5455            /// mode then the trace will end |stop_delay_ms| after triggering.
5456            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
5457            /// snapshot.
5458            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
5459            /// based on wall-clock, counting also time in suspend.
5460            #[prost(uint32, optional, tag="3")]
5461            pub stop_delay_ms: ::core::option::Option<u32>,
5462            /// Limits the number of traces this trigger can start/stop in a rolling
5463            /// 24 hour window. If this field is unset or zero, no limit is applied and
5464            /// activiation of this trigger *always* starts/stops the trace.
5465            #[prost(uint32, optional, tag="4")]
5466            pub max_per_24_h: ::core::option::Option<u32>,
5467            /// A value between 0 and 1 which encodes the probability of skipping a
5468            /// trigger with this name. This is useful for reducing the probability
5469            /// of high-frequency triggers from dominating trace finaization. If this
5470            /// field is unset or zero, the trigger will *never* be skipped. If this
5471            /// field is greater than or equal to 1, this trigger will *always* be
5472            /// skipped i.e. it will be as if this trigger was never included in the
5473            /// first place.
5474            /// This probability check is applied *before* any other limits. For
5475            /// example, if |max_per_24_h| is also set, first we will check if the
5476            /// probability bar is met and only then will we check the |max_per_24_h|
5477            /// limit.
5478            #[prost(double, optional, tag="5")]
5479            pub skip_probability: ::core::option::Option<f64>,
5480        }
5481        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5482        #[repr(i32)]
5483        pub enum TriggerMode {
5484            Unspecified = 0,
5485            /// When this mode is chosen, data sources are not started until one of the
5486            /// |triggers| are received. This supports early initialization and fast
5487            /// starting of the tracing system. On triggering, the session will then
5488            /// record for |stop_delay_ms|. However if no trigger is seen
5489            /// after |trigger_timeout_ms| the session will be stopped and no data will
5490            /// be returned.
5491            StartTracing = 1,
5492            /// When this mode is chosen, the session will be started via the normal
5493            /// EnableTracing() & StartTracing(). If no trigger is ever seen
5494            /// the session will be stopped after |trigger_timeout_ms| and no data will
5495            /// be returned. However if triggered the trace will stop after
5496            /// |stop_delay_ms| and any data in the buffer will be returned to the
5497            /// consumer.
5498            StopTracing = 2,
5499            /// When this mode is chosen, this causes a snapshot of the current tracing
5500            /// session to be created after |stop_delay_ms| while the current tracing
5501            /// session continues undisturbed (% an extra flush). This mode can be
5502            /// used only when the tracing session is handled by the "perfetto" cmdline
5503            /// client (which is true in 90% of cases). Part of the business logic
5504            /// necessary for this behavior, and ensuing file handling, lives in
5505            /// perfetto_cmd.cc . On other consumers, this causes only a notification
5506            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
5507            /// consumer is supposed to call CloneSession() itself after the event.
5508            /// Use use_clone_snapshot_if_available=true when targeting older versions
5509            /// of perfetto.
5510            CloneSnapshot = 4,
5511        }
5512        impl TriggerMode {
5513            /// String value of the enum field names used in the ProtoBuf definition.
5514            ///
5515            /// The values are not transformed in any way and thus are considered stable
5516            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5517            pub fn as_str_name(&self) -> &'static str {
5518                match self {
5519                    TriggerMode::Unspecified => "UNSPECIFIED",
5520                    TriggerMode::StartTracing => "START_TRACING",
5521                    TriggerMode::StopTracing => "STOP_TRACING",
5522                    TriggerMode::CloneSnapshot => "CLONE_SNAPSHOT",
5523                }
5524            }
5525        }
5526    }
5527    /// Configuration for trace contents that reference earlier trace data. For
5528    /// example, a data source might intern strings, and emit packets containing
5529    /// {interned id : string} pairs. Future packets from that data source can then
5530    /// use the interned ids instead of duplicating the raw string contents. The
5531    /// trace parser will then need to use that interning table to fully interpret
5532    /// the rest of the trace.
5533    #[derive(Clone, PartialEq, ::prost::Message)]
5534    pub struct IncrementalStateConfig {
5535        /// If nonzero, notify eligible data sources to clear their incremental state
5536        /// periodically, with the given period. The notification is sent only to
5537        /// data sources that have |handles_incremental_state_clear| set in their
5538        /// DataSourceDescriptor. The notification requests that the data source
5539        /// stops referring to past trace contents. This is particularly useful when
5540        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
5541        /// trace data.
5542        ///
5543        /// Warning: this time-based global clearing is likely to be removed in the
5544        /// future, to be replaced with a smarter way of sending the notifications
5545        /// only when necessary.
5546        #[prost(uint32, optional, tag="1")]
5547        pub clear_period_ms: ::core::option::Option<u32>,
5548    }
5549    /// Android-only. Not for general use. If set, saves the trace into an
5550    /// incident. This field is read by perfetto_cmd, rather than the tracing
5551    /// service. This field must be set when passing the --upload flag to
5552    /// perfetto_cmd.
5553    ///
5554    /// In this message, either:
5555    ///   * all of |destination_package|, |destination_class| and |privacy_level|
5556    ///     must be set.
5557    ///   * |skip_incidentd| must be explicitly set to true.
5558    #[derive(Clone, PartialEq, ::prost::Message)]
5559    pub struct IncidentReportConfig {
5560        #[prost(string, optional, tag="1")]
5561        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
5562        #[prost(string, optional, tag="2")]
5563        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
5564        /// Level of filtering in the requested incident. See |Destination| in
5565        /// frameworks/base/core/proto/android/privacy.proto.
5566        #[prost(int32, optional, tag="3")]
5567        pub privacy_level: ::core::option::Option<i32>,
5568        /// If true, then skips saving the trace to incidentd.
5569        ///
5570        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
5571        /// or when we explicitly don't want traces to go to incidentd even when they
5572        /// usually would (e.g. configs deployed using statsd but only used for
5573        /// inclusion in bugreports using |bugreport_score|).
5574        ///
5575        /// The motivation for having this flag, instead of just not setting
5576        /// |incident_report_config|, is prevent accidents where
5577        /// |incident_report_config| is omitted by mistake.
5578        #[prost(bool, optional, tag="5")]
5579        pub skip_incidentd: ::core::option::Option<bool>,
5580        /// If true, do not write the trace into dropbox (i.e. incident only).
5581        /// Otherwise, write to both dropbox and incident.
5582        /// TODO(lalitm): remove this field as we no longer use Dropbox.
5583        #[deprecated]
5584        #[prost(bool, optional, tag="4")]
5585        pub skip_dropbox: ::core::option::Option<bool>,
5586    }
5587    /// When set applies a post-filter to the trace contents using the filter
5588    /// provided. The filter is applied at ReadBuffers() time and works both in the
5589    /// case of IPC readback and write_into_file. This filter can be generated
5590    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
5591    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
5592    /// design.
5593    ///
5594    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
5595    /// Android T with a different field number. Updated in Android U with a new
5596    /// bytecode version which supports string filtering.
5597    ///
5598    /// =========================
5599    /// Filter bytecode.
5600    /// =========================
5601    #[derive(Clone, PartialEq, ::prost::Message)]
5602    pub struct TraceFilter {
5603        /// The bytecode as implemented in Android T.
5604        #[prost(bytes="vec", optional, tag="1")]
5605        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5606        /// The bytecode as implemented in Android U. Adds support for string
5607        /// filtering.
5608        #[prost(bytes="vec", optional, tag="2")]
5609        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5610        #[prost(message, optional, tag="3")]
5611        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
5612    }
5613    /// Nested message and enum types in `TraceFilter`.
5614    pub mod trace_filter {
5615        /// A rule specifies how strings should be filtered.
5616        #[derive(Clone, PartialEq, ::prost::Message)]
5617        pub struct StringFilterRule {
5618            /// The policy (i.e. algorithm) dictating how strings matching this rule
5619            /// should be handled.
5620            #[prost(enumeration="StringFilterPolicy", optional, tag="1")]
5621            pub policy: ::core::option::Option<i32>,
5622            /// The regex pattern used to match against each string.
5623            #[prost(string, optional, tag="2")]
5624            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
5625            /// The string which should appear after the tgid in atrace tracepoint
5626            /// strings.
5627            #[prost(string, optional, tag="3")]
5628            pub atrace_payload_starts_with: ::core::option::Option<::prost::alloc::string::String>,
5629        }
5630        /// A chain is a list of rules which string will be sequentially checked
5631        /// against.
5632        #[derive(Clone, PartialEq, ::prost::Message)]
5633        pub struct StringFilterChain {
5634            #[prost(message, repeated, tag="1")]
5635            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
5636        }
5637        // =========================
5638        // String filtering
5639        // =========================
5640
5641        // The principles and terminology of string filtering is heavily inspired by
5642        // iptables. A "rule" decide how strings should be filtered. Each rule
5643        // contains a "policy" which indicates the algorithm to use for filtering.
5644        // A "chain" is a list of rules which will be sequentially checked against
5645        // each string.
5646        //
5647        // The first rule which applies to the string terminates filtering for that
5648        // string. If no rules apply, the string is left unchanged.
5649
5650        /// A policy specifies which algorithm should be used for filtering the
5651        /// string.
5652        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5653        #[repr(i32)]
5654        pub enum StringFilterPolicy {
5655            SfpUnspecified = 0,
5656            /// Tries to match the string field against |regex_pattern|. If it
5657            /// matches, all matching groups are "redacted" (i.e. replaced with a
5658            /// constant string) and filtering is terminated (i.e. no further rules are
5659            /// checked). If it doesn't match, the string is left unchanged and the
5660            /// next rule in chain is considered.
5661            SfpMatchRedactGroups = 1,
5662            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
5663            /// checking the regex. Specifically, it tries to parse the string field as
5664            /// an atrace tracepoint and checks if the post-tgid field starts with
5665            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
5666            /// this check succeeds.
5667            SfpAtraceMatchRedactGroups = 2,
5668            /// Tries to match the string field against |regex_pattern|. If it
5669            /// matches, filtering is terminated (i.e. no further rules are checked).
5670            /// If it doesn't match, the string is left unchanged and the next rule in
5671            /// chain is considered.
5672            SfpMatchBreak = 3,
5673            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
5674            /// the regex. Specifically, it tries to parse the string field as an
5675            /// atrace tracepoint and checks if the post-tgid field starts with
5676            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
5677            /// this check succeeds.
5678            SfpAtraceMatchBreak = 4,
5679            /// Tries to repeatedly search (i.e. find substrings of) the string field
5680            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
5681            /// replaced with a constant string). Once there are no further matches,
5682            /// filtering is terminated (i.e. no further rules are checked).
5683            ///
5684            /// Note that this is policy is a "search" policy not a "match" policy
5685            /// unlike the above policies:
5686            ///   * Match policies require matching the full string i.e. there is an
5687            ///     implicit leading `^` and trailing `$`.
5688            ///   * Search policies perform repeated partial matching of the string
5689            ///     e.g.
5690            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
5691            ///       - Pattern: `foo=(\d+)`
5692            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
5693            ///     where P6O is the redaction string
5694            ///
5695            /// All of this is only performed after some pre-work where we try to parse
5696            /// the string field as an atrace tracepoint and check if the post-tgid
5697            /// field starts with |atrace_post_tgid_starts_with|.
5698            ///
5699            /// If there are no partial matches, the string is left unchanged and the
5700            /// next rule in chain is considered.
5701            SfpAtraceRepeatedSearchRedactGroups = 5,
5702        }
5703        impl StringFilterPolicy {
5704            /// String value of the enum field names used in the ProtoBuf definition.
5705            ///
5706            /// The values are not transformed in any way and thus are considered stable
5707            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5708            pub fn as_str_name(&self) -> &'static str {
5709                match self {
5710                    StringFilterPolicy::SfpUnspecified => "SFP_UNSPECIFIED",
5711                    StringFilterPolicy::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
5712                    StringFilterPolicy::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
5713                    StringFilterPolicy::SfpMatchBreak => "SFP_MATCH_BREAK",
5714                    StringFilterPolicy::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
5715                    StringFilterPolicy::SfpAtraceRepeatedSearchRedactGroups => "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS",
5716                }
5717            }
5718        }
5719    }
5720    /// Android-only. Not for general use. If set, reports the trace to the
5721    /// Android framework. This field is read by perfetto_cmd, rather than the
5722    /// tracing service. This field must be set when passing the --upload flag to
5723    /// perfetto_cmd.
5724    ///
5725    /// In this message, either:
5726    ///   * |reporter_service_package| and |reporter_service_class| must be set.
5727    ///   * |skip_reporting| must be explicitly set to true.
5728    #[derive(Clone, PartialEq, ::prost::Message)]
5729    pub struct AndroidReportConfig {
5730        #[prost(string, optional, tag="1")]
5731        pub reporter_service_package: ::core::option::Option<::prost::alloc::string::String>,
5732        #[prost(string, optional, tag="2")]
5733        pub reporter_service_class: ::core::option::Option<::prost::alloc::string::String>,
5734        /// If true, then skips reporting the trace to Android framework.
5735        ///
5736        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
5737        /// or when we explicitly don't want to report traces to the framework even
5738        /// when they usually would (e.g. configs deployed using statsd but only
5739        /// used for inclusion in bugreports using |bugreport_score|).
5740        ///
5741        /// The motivation for having this flag, instead of just not setting
5742        /// |framework_report_config|, is prevent accidents where
5743        /// |framework_report_config| is omitted by mistake.
5744        #[prost(bool, optional, tag="3")]
5745        pub skip_report: ::core::option::Option<bool>,
5746        /// If true, will direct the Android framework to read the data in trace
5747        /// file and pass it to the reporter class over a pipe instead of passing
5748        /// the file descriptor directly.
5749        ///
5750        /// This flag is needed because the Android test framework does not
5751        /// currently support priv-app helper apps (in terms of SELinux) and we
5752        /// really don't want to add an allow rule for untrusted_app to receive
5753        /// trace fds.
5754        ///
5755        /// Because of this, we instead will direct the framework to create a new
5756        /// pipe and pass this to the reporter process instead. As the pipe is
5757        /// created by the framework, we won't have any problems with SELinux
5758        /// (system_server is already allowed to pass pipe fds, even
5759        /// to untrusted apps).
5760        ///
5761        /// As the name suggests this option *MUST* only be used for testing.
5762        /// Note that the framework will reject (and drop) files which are too
5763        /// large both for simplicity and to be minimize the amount of data we
5764        /// pass to a non-priv app (note that the framework will still check
5765        /// manifest permissions even though SELinux permissions are worked around).
5766        #[prost(bool, optional, tag="4")]
5767        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
5768    }
5769    /// If set, delays the start of tracing by a random duration. The duration is
5770    /// chosen from a uniform distribution between the specified minimum and
5771    /// maximum.
5772    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
5773    /// not work if you communicate with traced directly over the consumer API.
5774    /// Introduced in Android T.
5775    #[derive(Clone, PartialEq, ::prost::Message)]
5776    pub struct CmdTraceStartDelay {
5777        #[prost(uint32, optional, tag="1")]
5778        pub min_delay_ms: ::core::option::Option<u32>,
5779        #[prost(uint32, optional, tag="2")]
5780        pub max_delay_ms: ::core::option::Option<u32>,
5781    }
5782    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5783    #[repr(i32)]
5784    pub enum LockdownModeOperation {
5785        LockdownUnchanged = 0,
5786        LockdownClear = 1,
5787        LockdownSet = 2,
5788    }
5789    impl LockdownModeOperation {
5790        /// String value of the enum field names used in the ProtoBuf definition.
5791        ///
5792        /// The values are not transformed in any way and thus are considered stable
5793        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5794        pub fn as_str_name(&self) -> &'static str {
5795            match self {
5796                LockdownModeOperation::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
5797                LockdownModeOperation::LockdownClear => "LOCKDOWN_CLEAR",
5798                LockdownModeOperation::LockdownSet => "LOCKDOWN_SET",
5799            }
5800        }
5801    }
5802    /// Compress trace with the given method. Best effort.
5803    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5804    #[repr(i32)]
5805    pub enum CompressionType {
5806        Unspecified = 0,
5807        Deflate = 1,
5808    }
5809    impl CompressionType {
5810        /// String value of the enum field names used in the ProtoBuf definition.
5811        ///
5812        /// The values are not transformed in any way and thus are considered stable
5813        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5814        pub fn as_str_name(&self) -> &'static str {
5815            match self {
5816                CompressionType::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
5817                CompressionType::Deflate => "COMPRESSION_TYPE_DEFLATE",
5818            }
5819        }
5820    }
5821    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5822    #[repr(i32)]
5823    pub enum StatsdLogging {
5824        Unspecified = 0,
5825        Enabled = 1,
5826        Disabled = 2,
5827    }
5828    impl StatsdLogging {
5829        /// String value of the enum field names used in the ProtoBuf definition.
5830        ///
5831        /// The values are not transformed in any way and thus are considered stable
5832        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5833        pub fn as_str_name(&self) -> &'static str {
5834            match self {
5835                StatsdLogging::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
5836                StatsdLogging::Enabled => "STATSD_LOGGING_ENABLED",
5837                StatsdLogging::Disabled => "STATSD_LOGGING_DISABLED",
5838            }
5839        }
5840    }
5841}
5842/// Arguments for rpc EnableTracing().
5843#[derive(Clone, PartialEq, ::prost::Message)]
5844pub struct EnableTracingRequest {
5845    #[prost(message, optional, tag="1")]
5846    pub trace_config: ::core::option::Option<TraceConfig>,
5847    /// Introduced in Android Q. This is used for re-attaching to the end-of-trace
5848    /// EnableTracingResponse notification after a Detach+Attach request.
5849    /// When this flag is set the |trace_config| is ignored and no method is called
5850    /// on the tracing service.
5851    #[prost(bool, optional, tag="2")]
5852    pub attach_notification_only: ::core::option::Option<bool>,
5853}
5854#[derive(Clone, PartialEq, ::prost::Message)]
5855pub struct EnableTracingResponse {
5856    /// If present and non-empty tracing was disabled because of an error.
5857    /// Introduced in Android S.
5858    #[prost(string, optional, tag="3")]
5859    pub error: ::core::option::Option<::prost::alloc::string::String>,
5860    #[prost(oneof="enable_tracing_response::State", tags="1")]
5861    pub state: ::core::option::Option<enable_tracing_response::State>,
5862}
5863/// Nested message and enum types in `EnableTracingResponse`.
5864pub mod enable_tracing_response {
5865    #[derive(Clone, PartialEq, ::prost::Oneof)]
5866    pub enum State {
5867        #[prost(bool, tag="1")]
5868        Disabled(bool),
5869    }
5870}
5871/// Arguments for rpc StartTracing().
5872#[derive(Clone, PartialEq, ::prost::Message)]
5873pub struct StartTracingRequest {
5874}
5875#[derive(Clone, PartialEq, ::prost::Message)]
5876pub struct StartTracingResponse {
5877}
5878/// Arguments for rpc ChangeTraceConfig().
5879#[derive(Clone, PartialEq, ::prost::Message)]
5880pub struct ChangeTraceConfigRequest {
5881    #[prost(message, optional, tag="1")]
5882    pub trace_config: ::core::option::Option<TraceConfig>,
5883}
5884#[derive(Clone, PartialEq, ::prost::Message)]
5885pub struct ChangeTraceConfigResponse {
5886}
5887/// Arguments for rpc DisableTracing().
5888///
5889/// TODO: not supported yet, selectively disable only some data sources.
5890/// repeated string data_source_name;
5891#[derive(Clone, PartialEq, ::prost::Message)]
5892pub struct DisableTracingRequest {
5893}
5894#[derive(Clone, PartialEq, ::prost::Message)]
5895pub struct DisableTracingResponse {
5896}
5897/// Arguments for rpc ReadBuffers().
5898///
5899/// The |id|s of the buffer, as passed to CreateBuffers().
5900/// TODO: repeated uint32 buffer_ids = 1;
5901#[derive(Clone, PartialEq, ::prost::Message)]
5902pub struct ReadBuffersRequest {
5903}
5904/// TODO: uint32 buffer_id = 1;
5905#[derive(Clone, PartialEq, ::prost::Message)]
5906pub struct ReadBuffersResponse {
5907    #[prost(message, repeated, tag="2")]
5908    pub slices: ::prost::alloc::vec::Vec<read_buffers_response::Slice>,
5909}
5910/// Nested message and enum types in `ReadBuffersResponse`.
5911pub mod read_buffers_response {
5912    /// Each streaming reply returns one or more slices for one or more trace
5913    /// packets, or even just a portion of it (if it's too big to fit within one
5914    /// IPC). The returned slices are ordered and contiguous: packets' slices are
5915    /// not interleaved and slices are sent only once all slices for a packet are
5916    /// available (i.e. the consumer will never see any gap).
5917    #[derive(Clone, PartialEq, ::prost::Message)]
5918    pub struct Slice {
5919        #[prost(bytes="vec", optional, tag="1")]
5920        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5921        /// When true, this is the last slice for the packet. A ReadBufferResponse
5922        /// might have no slices marked as |last_slice_for_packet|==true, in the case
5923        /// of a very large packet that gets chunked into several IPCs (in which case
5924        /// only the last IPC for the packet will have this flag set).
5925        #[prost(bool, optional, tag="2")]
5926        pub last_slice_for_packet: ::core::option::Option<bool>,
5927    }
5928}
5929/// Arguments for rpc FreeBuffers().
5930#[derive(Clone, PartialEq, ::prost::Message)]
5931pub struct FreeBuffersRequest {
5932    /// The |id|s of the buffer, as passed to CreateBuffers().
5933    #[prost(uint32, repeated, packed="false", tag="1")]
5934    pub buffer_ids: ::prost::alloc::vec::Vec<u32>,
5935}
5936#[derive(Clone, PartialEq, ::prost::Message)]
5937pub struct FreeBuffersResponse {
5938}
5939/// Arguments for rpc Flush().
5940#[derive(Clone, PartialEq, ::prost::Message)]
5941pub struct FlushRequest {
5942    #[prost(uint32, optional, tag="1")]
5943    pub timeout_ms: ::core::option::Option<u32>,
5944    /// More details such as flush reason and originator. Introduced in v38 / V.
5945    /// See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
5946    #[prost(uint64, optional, tag="2")]
5947    pub flags: ::core::option::Option<u64>,
5948}
5949#[derive(Clone, PartialEq, ::prost::Message)]
5950pub struct FlushResponse {
5951}
5952/// Arguments for rpc Detach
5953#[derive(Clone, PartialEq, ::prost::Message)]
5954pub struct DetachRequest {
5955    #[prost(string, optional, tag="1")]
5956    pub key: ::core::option::Option<::prost::alloc::string::String>,
5957}
5958#[derive(Clone, PartialEq, ::prost::Message)]
5959pub struct DetachResponse {
5960}
5961/// Arguments for rpc Attach.
5962#[derive(Clone, PartialEq, ::prost::Message)]
5963pub struct AttachRequest {
5964    #[prost(string, optional, tag="1")]
5965    pub key: ::core::option::Option<::prost::alloc::string::String>,
5966}
5967#[derive(Clone, PartialEq, ::prost::Message)]
5968pub struct AttachResponse {
5969    #[prost(message, optional, tag="1")]
5970    pub trace_config: ::core::option::Option<TraceConfig>,
5971}
5972// Arguments for rpc GetTraceStats.
5973
5974#[derive(Clone, PartialEq, ::prost::Message)]
5975pub struct GetTraceStatsRequest {
5976}
5977#[derive(Clone, PartialEq, ::prost::Message)]
5978pub struct GetTraceStatsResponse {
5979    #[prost(message, optional, tag="1")]
5980    pub trace_stats: ::core::option::Option<TraceStats>,
5981}
5982// Arguments for rpc ObserveEvents.
5983
5984/// To stop observing events of a certain type, send a request with the remaining
5985/// types. To stop observing completely, send an empty request.
5986#[derive(Clone, PartialEq, ::prost::Message)]
5987pub struct ObserveEventsRequest {
5988    #[prost(enumeration="observable_events::Type", repeated, packed="false", tag="1")]
5989    pub events_to_observe: ::prost::alloc::vec::Vec<i32>,
5990}
5991#[derive(Clone, PartialEq, ::prost::Message)]
5992pub struct ObserveEventsResponse {
5993    #[prost(message, optional, tag="1")]
5994    pub events: ::core::option::Option<ObservableEvents>,
5995}
5996/// Arguments for rpc QueryServiceState.
5997#[derive(Clone, PartialEq, ::prost::Message)]
5998pub struct QueryServiceStateRequest {
5999}
6000#[derive(Clone, PartialEq, ::prost::Message)]
6001pub struct QueryServiceStateResponse {
6002    /// In order to avoid hitting IPC message size limitations, the service will
6003    /// return >1 replies for each query, chunking the TracingServiceState. The
6004    /// receiver is expected to merge replies together and parse that when the
6005    /// last reply is received (i.e. when IPC's |has_more| == false).
6006    #[prost(message, optional, tag="1")]
6007    pub service_state: ::core::option::Option<TracingServiceState>,
6008}
6009/// Arguments for rpc QueryCapabilities.
6010#[derive(Clone, PartialEq, ::prost::Message)]
6011pub struct QueryCapabilitiesRequest {
6012}
6013#[derive(Clone, PartialEq, ::prost::Message)]
6014pub struct QueryCapabilitiesResponse {
6015    #[prost(message, optional, tag="1")]
6016    pub capabilities: ::core::option::Option<TracingServiceCapabilities>,
6017}
6018/// Arguments for rpc SaveTraceForBugreport.
6019#[derive(Clone, PartialEq, ::prost::Message)]
6020pub struct SaveTraceForBugreportRequest {
6021}
6022/// This response is sent only after the trace was saved into file (if succeeded)
6023/// or something failed.
6024#[derive(Clone, PartialEq, ::prost::Message)]
6025pub struct SaveTraceForBugreportResponse {
6026    /// If true, an eligible the trace was saved into a known location (on Android
6027    /// /data/misc/perfetto-traces, see GetBugreportTracePath()).
6028    /// If false no trace with bugreport_score > 0 was found or an error occurred.
6029    /// see |msg| in that case for details about the failure.
6030    #[prost(bool, optional, tag="1")]
6031    pub success: ::core::option::Option<bool>,
6032    #[prost(string, optional, tag="2")]
6033    pub msg: ::core::option::Option<::prost::alloc::string::String>,
6034}
6035/// Arguments for rpc CloneSession.
6036#[derive(Clone, PartialEq, ::prost::Message)]
6037pub struct CloneSessionRequest {
6038    /// The session ID to clone. If session_id == kBugreportSessionId (0xff...ff)
6039    /// the session with the highest bugreport score is cloned (if any exists).
6040    #[prost(uint64, optional, tag="1")]
6041    pub session_id: ::core::option::Option<u64>,
6042}
6043#[derive(Clone, PartialEq, ::prost::Message)]
6044pub struct CloneSessionResponse {
6045    /// If true, the clone was successful. If false it failed and |error| contains
6046    /// the details about the failure.
6047    #[prost(bool, optional, tag="1")]
6048    pub success: ::core::option::Option<bool>,
6049    #[prost(string, optional, tag="2")]
6050    pub error: ::core::option::Option<::prost::alloc::string::String>,
6051    /// The UUID of the cloned session.
6052    #[prost(int64, optional, tag="3")]
6053    pub uuid_msb: ::core::option::Option<i64>,
6054    #[prost(int64, optional, tag="4")]
6055    pub uuid_lsb: ::core::option::Option<i64>,
6056}
6057#[derive(Clone, PartialEq, ::prost::Message)]
6058pub struct IpcFrame {
6059    /// The client is expected to send requests with monotonically increasing
6060    /// request_id. The host will match the request_id sent from the client.
6061    /// In the case of a Streaming response (has_more = true) the host will send
6062    /// several InvokeMethodReply with the same request_id.
6063    #[prost(uint64, optional, tag="2")]
6064    pub request_id: ::core::option::Option<u64>,
6065    /// Used only in unittests to generate a parsable message of arbitrary size.
6066    #[prost(bytes="vec", repeated, tag="1")]
6067    pub data_for_testing: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
6068    #[prost(oneof="ipc_frame::Msg", tags="3, 4, 5, 6, 7, 8")]
6069    pub msg: ::core::option::Option<ipc_frame::Msg>,
6070}
6071/// Nested message and enum types in `IPCFrame`.
6072pub mod ipc_frame {
6073    /// Client -> Host.
6074    #[derive(Clone, PartialEq, ::prost::Message)]
6075    pub struct BindService {
6076        #[prost(string, optional, tag="1")]
6077        pub service_name: ::core::option::Option<::prost::alloc::string::String>,
6078    }
6079    /// Host -> Client.
6080    #[derive(Clone, PartialEq, ::prost::Message)]
6081    pub struct BindServiceReply {
6082        #[prost(bool, optional, tag="1")]
6083        pub success: ::core::option::Option<bool>,
6084        #[prost(uint32, optional, tag="2")]
6085        pub service_id: ::core::option::Option<u32>,
6086        #[prost(message, repeated, tag="3")]
6087        pub methods: ::prost::alloc::vec::Vec<bind_service_reply::MethodInfo>,
6088    }
6089    /// Nested message and enum types in `BindServiceReply`.
6090    pub mod bind_service_reply {
6091        #[derive(Clone, PartialEq, ::prost::Message)]
6092        pub struct MethodInfo {
6093            #[prost(uint32, optional, tag="1")]
6094            pub id: ::core::option::Option<u32>,
6095            #[prost(string, optional, tag="2")]
6096            pub name: ::core::option::Option<::prost::alloc::string::String>,
6097        }
6098    }
6099    /// Client -> Host.
6100    #[derive(Clone, PartialEq, ::prost::Message)]
6101    pub struct InvokeMethod {
6102        /// BindServiceReply.id.
6103        #[prost(uint32, optional, tag="1")]
6104        pub service_id: ::core::option::Option<u32>,
6105        /// BindServiceReply.method.id.
6106        #[prost(uint32, optional, tag="2")]
6107        pub method_id: ::core::option::Option<u32>,
6108        /// Proto-encoded request argument.
6109        #[prost(bytes="vec", optional, tag="3")]
6110        pub args_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6111        /// When true the client specifies that a reply is not needed. The use case
6112        /// is a method with an empty, where the client doesn't care about the
6113        /// success/failure of the method invocation and rather prefers avoiding the
6114        /// IPC roundtrip + context switch associated with the reply.
6115        #[prost(bool, optional, tag="4")]
6116        pub drop_reply: ::core::option::Option<bool>,
6117    }
6118    /// Host -> Client.
6119    #[derive(Clone, PartialEq, ::prost::Message)]
6120    pub struct InvokeMethodReply {
6121        #[prost(bool, optional, tag="1")]
6122        pub success: ::core::option::Option<bool>,
6123        /// only for streaming RPCs.
6124        #[prost(bool, optional, tag="2")]
6125        pub has_more: ::core::option::Option<bool>,
6126        /// proto-encoded response value.
6127        #[prost(bytes="vec", optional, tag="3")]
6128        pub reply_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6129    }
6130    /// Host -> Client.
6131    #[derive(Clone, PartialEq, ::prost::Message)]
6132    pub struct RequestError {
6133        #[prost(string, optional, tag="1")]
6134        pub error: ::core::option::Option<::prost::alloc::string::String>,
6135    }
6136    /// Client (relay service) -> Host. This is generated by the relay service to
6137    /// fill the producer identity in the guest. This message is sent to the host
6138    /// service *before* any IPCFrame is from a local producer is relayed. This is
6139    /// accepted only on AF_VSOCK and AF_INET sockets, where we cannot validate the
6140    /// endpoont of the connection. for AF_UNIX sockets, this is ignored and traced
6141    /// uses instead the SO_PEERCRED.
6142    #[derive(Clone, PartialEq, ::prost::Message)]
6143    pub struct SetPeerIdentity {
6144        /// The UID and PID of the producer process.
6145        #[prost(int32, optional, tag="1")]
6146        pub pid: ::core::option::Option<i32>,
6147        #[prost(int32, optional, tag="2")]
6148        pub uid: ::core::option::Option<i32>,
6149        /// The hint for the tracing service to infer the machine ID. This field
6150        /// should satisfy the requriement that different machines should have
6151        /// different values. In practice, this filed contains the Linux kernel
6152        /// boot_id, or a hash of kernel bootup timestamp and uname(2) if boot_id
6153        /// isn't available.
6154        #[prost(string, optional, tag="3")]
6155        pub machine_id_hint: ::core::option::Option<::prost::alloc::string::String>,
6156    }
6157    #[derive(Clone, PartialEq, ::prost::Oneof)]
6158    pub enum Msg {
6159        #[prost(message, tag="3")]
6160        MsgBindService(BindService),
6161        #[prost(message, tag="4")]
6162        MsgBindServiceReply(BindServiceReply),
6163        #[prost(message, tag="5")]
6164        MsgInvokeMethod(InvokeMethod),
6165        #[prost(message, tag="6")]
6166        MsgInvokeMethodReply(InvokeMethodReply),
6167        #[prost(message, tag="7")]
6168        MsgRequestError(RequestError),
6169        #[prost(message, tag="8")]
6170        SetPeerIdentity(SetPeerIdentity),
6171    }
6172}