perfetto_protos/
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        /// The name of the CLONE_SNAPSHOT trigger which was hit.
30        #[prost(string, optional, tag="2")]
31        pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
32        /// The name of the producer that sent the CLONE_SNAPSHOT trigger.
33        #[prost(string, optional, tag="3")]
34        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
35        /// The uid of the producer that sent the CLONE_SNAPSHOT trigger.
36        #[prost(uint32, optional, tag="4")]
37        pub producer_uid: ::core::option::Option<u32>,
38        /// The timestamp of the CLONE_SNAPSHOT trigger which was hit.
39        #[prost(uint64, optional, tag="5")]
40        pub boot_time_ns: ::core::option::Option<u64>,
41        /// The configured delay of the CLONE_SNAPSHOT trigger which was hit. For
42        /// informational purposes only.
43        #[prost(uint64, optional, tag="6")]
44        pub trigger_delay_ms: ::core::option::Option<u64>,
45    }
46    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
47    #[repr(i32)]
48    pub enum Type {
49        Unspecified = 0,
50        /// State changes of data source instances associated with the consumer's
51        /// session. Note that not all data sources may support these notifications.
52        /// See |will_notify_on_start/stop| in DataSourceDescriptor.
53        DataSourcesInstances = 1,
54        /// State change triggered when all data sources are in the STARTED state.
55        /// For data sources that registered with |will_notify_on_start| this happens
56        /// only after the data source has acked the start. This allows the consumer
57        /// to synchronize with the data sources and to perform actions (e.g. start a
58        /// test binary) only after trace recording is actually started.
59        /// Introduced in Android 11 (R).
60        AllDataSourcesStarted = 2,
61        /// When a tracing session has one or more triggers of type CLONE_SNAPSHOT
62        /// and a matching trigger is hit, the service will send this notification to
63        /// the consumer after |stop_delay_ms|.
64        CloneTriggerHit = 4,
65    }
66    impl Type {
67        /// String value of the enum field names used in the ProtoBuf definition.
68        ///
69        /// The values are not transformed in any way and thus are considered stable
70        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
71        pub fn as_str_name(&self) -> &'static str {
72            match self {
73                Type::Unspecified => "TYPE_UNSPECIFIED",
74                Type::DataSourcesInstances => "TYPE_DATA_SOURCES_INSTANCES",
75                Type::AllDataSourcesStarted => "TYPE_ALL_DATA_SOURCES_STARTED",
76                Type::CloneTriggerHit => "TYPE_CLONE_TRIGGER_HIT",
77            }
78        }
79    }
80    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
81    #[repr(i32)]
82    pub enum DataSourceInstanceState {
83        /// A data source is created in stopped state.
84        Stopped = 1,
85        Started = 2,
86    }
87    impl DataSourceInstanceState {
88        /// String value of the enum field names used in the ProtoBuf definition.
89        ///
90        /// The values are not transformed in any way and thus are considered stable
91        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
92        pub fn as_str_name(&self) -> &'static str {
93            match self {
94                DataSourceInstanceState::Stopped => "DATA_SOURCE_INSTANCE_STATE_STOPPED",
95                DataSourceInstanceState::Started => "DATA_SOURCE_INSTANCE_STATE_STARTED",
96            }
97        }
98    }
99}
100#[derive(Clone, PartialEq, ::prost::Message)]
101pub struct FtraceDescriptor {
102    /// Report the available atrace categories.
103    ///
104    /// Used by Traceur via `perfetto --query`.
105    #[prost(message, repeated, tag="1")]
106    pub atrace_categories: ::prost::alloc::vec::Vec<ftrace_descriptor::AtraceCategory>,
107}
108/// Nested message and enum types in `FtraceDescriptor`.
109pub mod ftrace_descriptor {
110    #[derive(Clone, PartialEq, ::prost::Message)]
111    pub struct AtraceCategory {
112        #[prost(string, optional, tag="1")]
113        pub name: ::core::option::Option<::prost::alloc::string::String>,
114        #[prost(string, optional, tag="2")]
115        pub description: ::core::option::Option<::prost::alloc::string::String>,
116    }
117}
118/// Description of GPU counters.
119/// This message is sent by a GPU counter producer to specify the counters
120/// available in the hardware.
121#[derive(Clone, PartialEq, ::prost::Message)]
122pub struct GpuCounterDescriptor {
123    #[prost(message, repeated, tag="1")]
124    pub specs: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterSpec>,
125    #[prost(message, repeated, tag="2")]
126    pub blocks: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterBlock>,
127    /// optional.  Minimum sampling period supported by the producer in
128    /// nanoseconds.
129    #[prost(uint64, optional, tag="3")]
130    pub min_sampling_period_ns: ::core::option::Option<u64>,
131    /// optional.  Maximum sampling period supported by the producer in
132    /// nanoseconds.
133    #[prost(uint64, optional, tag="4")]
134    pub max_sampling_period_ns: ::core::option::Option<u64>,
135    /// optional.  The producer supports counter sampling by instrumenting the
136    /// command buffer.
137    #[prost(bool, optional, tag="5")]
138    pub supports_instrumented_sampling: ::core::option::Option<bool>,
139}
140/// Nested message and enum types in `GpuCounterDescriptor`.
141pub mod gpu_counter_descriptor {
142    #[derive(Clone, PartialEq, ::prost::Message)]
143    pub struct GpuCounterSpec {
144        #[prost(uint32, optional, tag="1")]
145        pub counter_id: ::core::option::Option<u32>,
146        #[prost(string, optional, tag="2")]
147        pub name: ::core::option::Option<::prost::alloc::string::String>,
148        #[prost(string, optional, tag="3")]
149        pub description: ::core::option::Option<::prost::alloc::string::String>,
150        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="7")]
151        pub numerator_units: ::prost::alloc::vec::Vec<i32>,
152        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="8")]
153        pub denominator_units: ::prost::alloc::vec::Vec<i32>,
154        #[prost(bool, optional, tag="9")]
155        pub select_by_default: ::core::option::Option<bool>,
156        #[prost(enumeration="GpuCounterGroup", repeated, packed="false", tag="10")]
157        pub groups: ::prost::alloc::vec::Vec<i32>,
158        #[prost(oneof="gpu_counter_spec::PeakValue", tags="5, 6")]
159        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
160    }
161    /// Nested message and enum types in `GpuCounterSpec`.
162    pub mod gpu_counter_spec {
163        #[derive(Clone, PartialEq, ::prost::Oneof)]
164        pub enum PeakValue {
165            #[prost(int64, tag="5")]
166            IntPeakValue(i64),
167            #[prost(double, tag="6")]
168            DoublePeakValue(f64),
169        }
170    }
171    /// Allow producer to group counters into block to represent counter islands.
172    /// A capacity may be specified to indicate the number of counters that can be
173    /// enable simultaneously in that block.
174    #[derive(Clone, PartialEq, ::prost::Message)]
175    pub struct GpuCounterBlock {
176        /// required. Unique ID for the counter group.
177        #[prost(uint32, optional, tag="1")]
178        pub block_id: ::core::option::Option<u32>,
179        /// optional. Number of counters supported by the block. No limit if unset.
180        #[prost(uint32, optional, tag="2")]
181        pub block_capacity: ::core::option::Option<u32>,
182        /// optional. Name of block.
183        #[prost(string, optional, tag="3")]
184        pub name: ::core::option::Option<::prost::alloc::string::String>,
185        /// optional. Description for the block.
186        #[prost(string, optional, tag="4")]
187        pub description: ::core::option::Option<::prost::alloc::string::String>,
188        /// list of counters that are part of the block.
189        #[prost(uint32, repeated, packed="false", tag="5")]
190        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
191    }
192    /// Logical groups for a counter.  This is used in the UI to present the
193    /// related counters together.
194    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
195    #[repr(i32)]
196    pub enum GpuCounterGroup {
197        Unclassified = 0,
198        System = 1,
199        Vertices = 2,
200        Fragments = 3,
201        Primitives = 4,
202        /// Includes counters relating to caching and bandwidth.
203        Memory = 5,
204        Compute = 6,
205    }
206    impl GpuCounterGroup {
207        /// String value of the enum field names used in the ProtoBuf definition.
208        ///
209        /// The values are not transformed in any way and thus are considered stable
210        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
211        pub fn as_str_name(&self) -> &'static str {
212            match self {
213                GpuCounterGroup::Unclassified => "UNCLASSIFIED",
214                GpuCounterGroup::System => "SYSTEM",
215                GpuCounterGroup::Vertices => "VERTICES",
216                GpuCounterGroup::Fragments => "FRAGMENTS",
217                GpuCounterGroup::Primitives => "PRIMITIVES",
218                GpuCounterGroup::Memory => "MEMORY",
219                GpuCounterGroup::Compute => "COMPUTE",
220            }
221        }
222    }
223    /// next id: 41
224    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
225    #[repr(i32)]
226    pub enum MeasureUnit {
227        None = 0,
228        Bit = 1,
229        Kilobit = 2,
230        Megabit = 3,
231        Gigabit = 4,
232        Terabit = 5,
233        Petabit = 6,
234        Byte = 7,
235        Kilobyte = 8,
236        Megabyte = 9,
237        Gigabyte = 10,
238        Terabyte = 11,
239        Petabyte = 12,
240        Hertz = 13,
241        Kilohertz = 14,
242        Megahertz = 15,
243        Gigahertz = 16,
244        Terahertz = 17,
245        Petahertz = 18,
246        Nanosecond = 19,
247        Microsecond = 20,
248        Millisecond = 21,
249        Second = 22,
250        Minute = 23,
251        Hour = 24,
252        Vertex = 25,
253        Pixel = 26,
254        Triangle = 27,
255        Primitive = 38,
256        Fragment = 39,
257        Milliwatt = 28,
258        Watt = 29,
259        Kilowatt = 30,
260        Joule = 31,
261        Volt = 32,
262        Ampere = 33,
263        Celsius = 34,
264        Fahrenheit = 35,
265        Kelvin = 36,
266        /// Values should be out of 100.
267        Percent = 37,
268        Instruction = 40,
269    }
270    impl MeasureUnit {
271        /// String value of the enum field names used in the ProtoBuf definition.
272        ///
273        /// The values are not transformed in any way and thus are considered stable
274        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
275        pub fn as_str_name(&self) -> &'static str {
276            match self {
277                MeasureUnit::None => "NONE",
278                MeasureUnit::Bit => "BIT",
279                MeasureUnit::Kilobit => "KILOBIT",
280                MeasureUnit::Megabit => "MEGABIT",
281                MeasureUnit::Gigabit => "GIGABIT",
282                MeasureUnit::Terabit => "TERABIT",
283                MeasureUnit::Petabit => "PETABIT",
284                MeasureUnit::Byte => "BYTE",
285                MeasureUnit::Kilobyte => "KILOBYTE",
286                MeasureUnit::Megabyte => "MEGABYTE",
287                MeasureUnit::Gigabyte => "GIGABYTE",
288                MeasureUnit::Terabyte => "TERABYTE",
289                MeasureUnit::Petabyte => "PETABYTE",
290                MeasureUnit::Hertz => "HERTZ",
291                MeasureUnit::Kilohertz => "KILOHERTZ",
292                MeasureUnit::Megahertz => "MEGAHERTZ",
293                MeasureUnit::Gigahertz => "GIGAHERTZ",
294                MeasureUnit::Terahertz => "TERAHERTZ",
295                MeasureUnit::Petahertz => "PETAHERTZ",
296                MeasureUnit::Nanosecond => "NANOSECOND",
297                MeasureUnit::Microsecond => "MICROSECOND",
298                MeasureUnit::Millisecond => "MILLISECOND",
299                MeasureUnit::Second => "SECOND",
300                MeasureUnit::Minute => "MINUTE",
301                MeasureUnit::Hour => "HOUR",
302                MeasureUnit::Vertex => "VERTEX",
303                MeasureUnit::Pixel => "PIXEL",
304                MeasureUnit::Triangle => "TRIANGLE",
305                MeasureUnit::Primitive => "PRIMITIVE",
306                MeasureUnit::Fragment => "FRAGMENT",
307                MeasureUnit::Milliwatt => "MILLIWATT",
308                MeasureUnit::Watt => "WATT",
309                MeasureUnit::Kilowatt => "KILOWATT",
310                MeasureUnit::Joule => "JOULE",
311                MeasureUnit::Volt => "VOLT",
312                MeasureUnit::Ampere => "AMPERE",
313                MeasureUnit::Celsius => "CELSIUS",
314                MeasureUnit::Fahrenheit => "FAHRENHEIT",
315                MeasureUnit::Kelvin => "KELVIN",
316                MeasureUnit::Percent => "PERCENT",
317                MeasureUnit::Instruction => "INSTRUCTION",
318            }
319        }
320    }
321}
322#[derive(Clone, PartialEq, ::prost::Message)]
323pub struct TrackEventCategory {
324    #[prost(string, optional, tag="1")]
325    pub name: ::core::option::Option<::prost::alloc::string::String>,
326    #[prost(string, optional, tag="2")]
327    pub description: ::core::option::Option<::prost::alloc::string::String>,
328    #[prost(string, repeated, tag="3")]
329    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
330}
331#[derive(Clone, PartialEq, ::prost::Message)]
332pub struct TrackEventDescriptor {
333    #[prost(message, repeated, tag="1")]
334    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
335}
336/// This message is sent from Producer(s) to the tracing Service when registering
337/// to advertise their capabilities. It describes the structure of tracing
338/// protos that will be produced by the data source and the supported filters.
339#[derive(Clone, PartialEq, ::prost::Message)]
340pub struct DataSourceDescriptor {
341    /// e.g., "linux.ftrace", "chromium.tracing"
342    #[prost(string, optional, tag="1")]
343    pub name: ::core::option::Option<::prost::alloc::string::String>,
344    /// When non-zero, this is a unique ID within the scope of the Producer for
345    /// this data source (it is NOT globally unique). This is useful to
346    /// differentiate between data sources with matching names when calling
347    /// UpdateDataSource(). This field has been introduced in November 2021
348    /// (v22, Android T) and is not supported on older versions.
349    #[prost(uint64, optional, tag="7")]
350    pub id: ::core::option::Option<u64>,
351    /// When true the data source is expected to ack the stop request through the
352    /// NotifyDataSourceStopped() IPC. This field has been introduced after
353    /// Android P in Jul 2018 and is not supported on older versions.
354    #[prost(bool, optional, tag="2")]
355    pub will_notify_on_stop: ::core::option::Option<bool>,
356    /// When true the data source is expected to ack the start request through the
357    /// NotifyDataSourceStarted() IPC. This field has been introduced after
358    /// Android P in March 2019 and is not supported on older versions.
359    #[prost(bool, optional, tag="3")]
360    pub will_notify_on_start: ::core::option::Option<bool>,
361    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
362    /// set if the data source writes packets that refer to previous trace
363    /// contents, and knows how to stop referring to the already-emitted data.
364    #[prost(bool, optional, tag="4")]
365    pub handles_incremental_state_clear: ::core::option::Option<bool>,
366    /// If true, indicates that the data source does nothing upon Flush. This
367    /// allows the service to reduce the flush-related IPC traffic and better deal
368    /// with frozen producers (see go/perfetto-frozen). This is usually the case
369    /// for data sources like 'track_event' that don't have access to the various
370    /// thread task runners to post a flush task and rely purely on server-side
371    /// scraping.
372    /// Introduced in v39 / Android V.
373    #[prost(bool, optional, tag="9")]
374    pub no_flush: ::core::option::Option<bool>,
375    /// Optional specification about available GPU counters.
376    #[prost(message, optional, tag="5")]
377    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
378    #[prost(message, optional, tag="6")]
379    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
380    #[prost(message, optional, tag="8")]
381    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
382}
383/// Reports the state of the tracing service. Used to gather details about the
384/// data sources connected.
385/// See ConsumerPort::QueryServiceState().
386#[derive(Clone, PartialEq, ::prost::Message)]
387pub struct TracingServiceState {
388    /// Lists all the producers connected.
389    #[prost(message, repeated, tag="1")]
390    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
391    /// Lists the data sources available.
392    #[prost(message, repeated, tag="2")]
393    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
394    /// Lists the tracing sessions active AND owned by a consumer that has the same
395    /// UID of the caller (or all of them if the caller is root).
396    /// Introduced in v24 / Android T.
397    #[prost(message, repeated, tag="6")]
398    pub tracing_sessions: ::prost::alloc::vec::Vec<tracing_service_state::TracingSession>,
399    /// This is always set to true from v24 and beyond. This flag is only used to
400    /// tell the difference between: (1) talking to a recent service which happens
401    /// to have no tracing session active; (2) talking to an older version of the
402    /// service which will never report any tracing session.
403    #[prost(bool, optional, tag="7")]
404    pub supports_tracing_sessions: ::core::option::Option<bool>,
405    /// Total number of tracing sessions.
406    #[prost(int32, optional, tag="3")]
407    pub num_sessions: ::core::option::Option<i32>,
408    /// Number of tracing sessions in the started state. Always <= num_sessions.
409    #[prost(int32, optional, tag="4")]
410    pub num_sessions_started: ::core::option::Option<i32>,
411    /// The version of traced (the same returned by `traced --version`).
412    /// This is a human readable string with and its format varies depending on
413    /// the build system and the repo (standalone vs AOSP).
414    /// This is intended for human debugging only.
415    #[prost(string, optional, tag="5")]
416    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
417}
418/// Nested message and enum types in `TracingServiceState`.
419pub mod tracing_service_state {
420    /// Describes a producer process.
421    #[derive(Clone, PartialEq, ::prost::Message)]
422    pub struct Producer {
423        /// Unique ID of the producer (monotonic counter).
424        #[prost(int32, optional, tag="1")]
425        pub id: ::core::option::Option<i32>,
426        /// Typically matches the process name.
427        #[prost(string, optional, tag="2")]
428        pub name: ::core::option::Option<::prost::alloc::string::String>,
429        /// Unix pid of the remote process. Supported only on Linux-based systems.
430        /// Introduced in v24 / Android T.
431        #[prost(int32, optional, tag="5")]
432        pub pid: ::core::option::Option<i32>,
433        /// Unix uid of the remote process.
434        #[prost(int32, optional, tag="3")]
435        pub uid: ::core::option::Option<i32>,
436        /// The version of the client library used by the producer.
437        /// This is a human readable string with and its format varies depending on
438        /// the build system and the repo (standalone vs AOSP).
439        /// This is intended for human debugging only.
440        #[prost(string, optional, tag="4")]
441        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
442        /// Returns true if the process appears to be frozen (Android only).
443        /// Introduced in Perfetto V49 / Android 24Q4.
444        #[prost(bool, optional, tag="6")]
445        pub frozen: ::core::option::Option<bool>,
446    }
447    /// Describes a data source registered by a producer. Data sources are listed
448    /// regardless of the fact that they are being used or not.
449    #[derive(Clone, PartialEq, ::prost::Message)]
450    pub struct DataSource {
451        /// Descriptor passed by the data source when calling RegisterDataSource().
452        #[prost(message, optional, tag="1")]
453        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
454        /// ID of the producer, as per Producer.id.
455        #[prost(int32, optional, tag="2")]
456        pub producer_id: ::core::option::Option<i32>,
457    }
458    #[derive(Clone, PartialEq, ::prost::Message)]
459    pub struct TracingSession {
460        /// The TracingSessionID.
461        #[prost(uint64, optional, tag="1")]
462        pub id: ::core::option::Option<u64>,
463        /// The Unix uid of the consumer that started the session.
464        /// This is meaningful only if the caller is root. In all other cases only
465        /// tracing sessions that match the caller UID will be displayed.
466        #[prost(int32, optional, tag="2")]
467        pub consumer_uid: ::core::option::Option<i32>,
468        /// Internal state of the tracing session.
469        /// These strings are FYI only and subjected to change.
470        #[prost(string, optional, tag="3")]
471        pub state: ::core::option::Option<::prost::alloc::string::String>,
472        /// The unique_session_name as set in the trace config (might be empty).
473        #[prost(string, optional, tag="4")]
474        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
475        /// The number and size of each buffer.
476        #[prost(uint32, repeated, packed="false", tag="5")]
477        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
478        /// Duration, as specified in the TraceConfig.duration_ms.
479        #[prost(uint32, optional, tag="6")]
480        pub duration_ms: ::core::option::Option<u32>,
481        /// Number of data sources involved in the session.
482        #[prost(uint32, optional, tag="7")]
483        pub num_data_sources: ::core::option::Option<u32>,
484        /// Time when the session was started, in the CLOCK_REALTIME domain.
485        /// Available only on Linux-based systems.
486        #[prost(int64, optional, tag="8")]
487        pub start_realtime_ns: ::core::option::Option<i64>,
488        // The fields below have been introduced in v42.
489
490        /// The bugreport_score, as set in TraceConfig.bugreport_score.
491        #[prost(int32, optional, tag="9")]
492        pub bugreport_score: ::core::option::Option<i32>,
493        /// As per TraceConfig.bugreport_filename.
494        #[prost(string, optional, tag="10")]
495        pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
496        /// If true, the session is in the STARTED state. If false the session is in
497        /// any other state (see `state` field).
498        #[prost(bool, optional, tag="11")]
499        pub is_started: ::core::option::Option<bool>,
500    }
501}
502#[derive(Clone, PartialEq, ::prost::Message)]
503pub struct TracingServiceCapabilities {
504    /// Whether the service supports QueryCapabilities() at all or not.
505    /// This is only used at the C++ level to distinguish the case of talking to
506    /// an older version of the service that doesn't support QueryCapabilities().
507    /// In that case the IPC layer will just reject the unknown call, and the
508    /// consumer_ipc_client_impl.cc will return an empty message where this field
509    /// is false. In all other cases, this is always set to true.
510    #[prost(bool, optional, tag="1")]
511    pub has_query_capabilities: ::core::option::Option<bool>,
512    /// The set of known events that can be passed to ConsumerPort.ObserveEvents().
513    #[prost(enumeration="observable_events::Type", repeated, packed="false", tag="2")]
514    pub observable_events: ::prost::alloc::vec::Vec<i32>,
515    /// Whether the service supports TraceConfig.output_path (for asking traced to
516    /// create the output file instead of passing a file descriptor).
517    #[prost(bool, optional, tag="3")]
518    pub has_trace_config_output_path: ::core::option::Option<bool>,
519    /// Whether the service supports CloneSession and CLONE_SNAPSHOT triggers.
520    #[prost(bool, optional, tag="4")]
521    pub has_clone_session: ::core::option::Option<bool>,
522}
523/// Statistics for the internals of the tracing service.
524///
525/// Next id: 19.
526#[derive(Clone, PartialEq, ::prost::Message)]
527pub struct TraceStats {
528    /// Stats for the TraceBuffer(s) of the current trace session.
529    #[prost(message, repeated, tag="1")]
530    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
531    /// The thresholds of each the `writer_stats` histogram buckets. This is
532    /// emitted only once as all WriterStats share the same bucket layout.
533    /// This field has the same cardinality of the
534    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
535    /// (The -1 is because the last overflow bucket is not reported in the _def).
536    /// An array of values [10, 100, 1000] in the _def array means that there are
537    /// four buckets (3 + the implicit overflow bucket):
538    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
539    #[prost(int64, repeated, packed="false", tag="17")]
540    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
541    #[prost(message, repeated, tag="18")]
542    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
543    /// Num. producers connected (whether they are involved in the current tracing
544    /// session or not).
545    #[prost(uint32, optional, tag="2")]
546    pub producers_connected: ::core::option::Option<u32>,
547    /// Num. producers ever seen for all trace sessions since startup (it's a good
548    /// proxy for inferring num. producers crashed / killed).
549    #[prost(uint64, optional, tag="3")]
550    pub producers_seen: ::core::option::Option<u64>,
551    /// Num. data sources registered for all trace sessions.
552    #[prost(uint32, optional, tag="4")]
553    pub data_sources_registered: ::core::option::Option<u32>,
554    /// Num. data sources ever seen for all trace sessions since startup.
555    #[prost(uint64, optional, tag="5")]
556    pub data_sources_seen: ::core::option::Option<u64>,
557    /// Num. concurrently active tracing sessions.
558    #[prost(uint32, optional, tag="6")]
559    pub tracing_sessions: ::core::option::Option<u32>,
560    /// Num. buffers for all tracing session (not just the current one). This will
561    /// be >= buffer_stats.size(), because the latter is only about the current
562    /// session.
563    #[prost(uint32, optional, tag="7")]
564    pub total_buffers: ::core::option::Option<u32>,
565    // The fields below have been introduced in Android Q.
566
567    /// Num. chunks that were discarded by the service before attempting to commit
568    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
569    #[prost(uint64, optional, tag="8")]
570    pub chunks_discarded: ::core::option::Option<u64>,
571    /// Num. patches that were discarded by the service before attempting to apply
572    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
573    #[prost(uint64, optional, tag="9")]
574    pub patches_discarded: ::core::option::Option<u64>,
575    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
576    /// is a bug in the producer.
577    #[prost(uint64, optional, tag="10")]
578    pub invalid_packets: ::core::option::Option<u64>,
579    #[prost(message, optional, tag="11")]
580    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
581    /// Count of Flush() requests (either from the Consumer, or self-induced
582    /// periodic flushes). The final Flush() is also included in the count.
583    #[prost(uint64, optional, tag="12")]
584    pub flushes_requested: ::core::option::Option<u64>,
585    /// The count of the Flush() requests that were completed successfully.
586    /// In a well behaving trace this should always be == `flush_requests`.
587    #[prost(uint64, optional, tag="13")]
588    pub flushes_succeeded: ::core::option::Option<u64>,
589    /// The count of the Flush() requests that failed (in most timed out).
590    /// In a well behaving trace this should always be == 0.
591    #[prost(uint64, optional, tag="14")]
592    pub flushes_failed: ::core::option::Option<u64>,
593    #[prost(enumeration="trace_stats::FinalFlushOutcome", optional, tag="15")]
594    pub final_flush_outcome: ::core::option::Option<i32>,
595}
596/// Nested message and enum types in `TraceStats`.
597pub mod trace_stats {
598    /// From TraceBuffer::Stats.
599    ///
600    /// Next id: 21.
601    #[derive(Clone, PartialEq, ::prost::Message)]
602    pub struct BufferStats {
603        /// Size of the circular buffer in bytes.
604        #[prost(uint64, optional, tag="12")]
605        pub buffer_size: ::core::option::Option<u64>,
606        /// Num. bytes written into the circular buffer, including chunk headers.
607        #[prost(uint64, optional, tag="1")]
608        pub bytes_written: ::core::option::Option<u64>,
609        /// Num. bytes overwritten before they have been read (i.e. loss of data).
610        #[prost(uint64, optional, tag="13")]
611        pub bytes_overwritten: ::core::option::Option<u64>,
612        /// Total size of chunks that were fully read from the circular buffer by the
613        /// consumer. This may not be equal to |bytes_written| either in the middle
614        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
615        /// size of the chunks read from the buffer, including chunk headers, which
616        /// will be different from the total size of packets returned to the
617        /// consumer.
618        ///
619        /// The current utilization of the trace buffer (mid-tracing) can be obtained
620        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
621        /// adding the difference of |padding_bytes_written| and
622        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
623        /// Note that this represents the total size of buffered data in the buffer,
624        /// yet this data may be spread non-contiguously through the buffer and may
625        /// be overridden before the utilization reaches 100%.
626        #[prost(uint64, optional, tag="14")]
627        pub bytes_read: ::core::option::Option<u64>,
628        /// Num. bytes that were allocated as padding between chunks in the circular
629        /// buffer.
630        #[prost(uint64, optional, tag="15")]
631        pub padding_bytes_written: ::core::option::Option<u64>,
632        /// Num. of padding bytes that were removed from the circular buffer when
633        /// they were overwritten.
634        ///
635        /// The difference between |padding_bytes_written| and
636        /// |padding_bytes_cleared| denotes the total size of padding currently
637        /// present in the buffer.
638        #[prost(uint64, optional, tag="16")]
639        pub padding_bytes_cleared: ::core::option::Option<u64>,
640        /// Num. chunks (!= packets) written into the buffer.
641        #[prost(uint64, optional, tag="2")]
642        pub chunks_written: ::core::option::Option<u64>,
643        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
644        /// the same chunk with additional packets appended to the end.
645        #[prost(uint64, optional, tag="10")]
646        pub chunks_rewritten: ::core::option::Option<u64>,
647        /// Num. chunks overwritten before they have been read (i.e. loss of data).
648        #[prost(uint64, optional, tag="3")]
649        pub chunks_overwritten: ::core::option::Option<u64>,
650        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
651        /// is configured with FillPolicy == DISCARD.
652        #[prost(uint64, optional, tag="18")]
653        pub chunks_discarded: ::core::option::Option<u64>,
654        /// Num. chunks (!= packets) that were fully read from the circular buffer by
655        /// the consumer. This may not be equal to |chunks_written| either in the
656        /// middle of tracing, or if |chunks_overwritten| is non-zero.
657        #[prost(uint64, optional, tag="17")]
658        pub chunks_read: ::core::option::Option<u64>,
659        /// Num. chunks that were committed out of order.
660        #[prost(uint64, optional, tag="11")]
661        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
662        /// Num. times the ring buffer wrapped around.
663        #[prost(uint64, optional, tag="4")]
664        pub write_wrap_count: ::core::option::Option<u64>,
665        /// Num. out-of-band (OOB) patches that succeeded.
666        #[prost(uint64, optional, tag="5")]
667        pub patches_succeeded: ::core::option::Option<u64>,
668        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
669        #[prost(uint64, optional, tag="6")]
670        pub patches_failed: ::core::option::Option<u64>,
671        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
672        /// successful packet read.
673        #[prost(uint64, optional, tag="7")]
674        pub readaheads_succeeded: ::core::option::Option<u64>,
675        /// Num. readaheads aborted because of missing chunks in the sequence stream.
676        /// Note that a small number > 0 is totally expected: occasionally, when
677        /// issuing a read, the very last packet in a sequence might be incomplete
678        /// (because the producer is still writing it while we read). The read will
679        /// stop at that point, for that sequence, increasing this counter.
680        #[prost(uint64, optional, tag="8")]
681        pub readaheads_failed: ::core::option::Option<u64>,
682        /// Num. of violations of the SharedMemoryABI found while writing or reading
683        /// the buffer. This is an indication of either a bug in the producer(s) or
684        /// malicious producer(s).
685        #[prost(uint64, optional, tag="9")]
686        pub abi_violations: ::core::option::Option<u64>,
687        // The fields below have been introduced in Android R.
688
689        /// Num. of times the service detected packet loss on a trace writer
690        /// sequence. This is usually caused by exhaustion of available chunks in the
691        /// writer process's SMB. Note that this relies on the client's TraceWriter
692        /// indicating this loss to the service -- packets lost for other reasons are
693        /// not reflected in this stat.
694        #[prost(uint64, optional, tag="19")]
695        pub trace_writer_packet_loss: ::core::option::Option<u64>,
696    }
697    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
698    /// visible as a unique sequence ID in the trace.
699    #[derive(Clone, PartialEq, ::prost::Message)]
700    pub struct WriterStats {
701        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
702        /// correlate the stats with the actual packet types.
703        #[prost(uint64, optional, tag="1")]
704        pub sequence_id: ::core::option::Option<u64>,
705        /// The buffer index (0..N, as defined in the TraceConfig).
706        #[prost(uint32, optional, tag="4")]
707        pub buffer: ::core::option::Option<u32>,
708        /// These two arrays have the same cardinality and match the cardinality of
709        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
710        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
711        /// for each bucket.
712        #[prost(uint64, repeated, tag="2")]
713        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
714        #[prost(int64, repeated, tag="3")]
715        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
716    }
717    /// This is set only when the TraceConfig specifies a TraceFilter.
718    #[derive(Clone, PartialEq, ::prost::Message)]
719    pub struct FilterStats {
720        #[prost(uint64, optional, tag="1")]
721        pub input_packets: ::core::option::Option<u64>,
722        #[prost(uint64, optional, tag="2")]
723        pub input_bytes: ::core::option::Option<u64>,
724        #[prost(uint64, optional, tag="3")]
725        pub output_bytes: ::core::option::Option<u64>,
726        #[prost(uint64, optional, tag="4")]
727        pub errors: ::core::option::Option<u64>,
728        #[prost(uint64, optional, tag="5")]
729        pub time_taken_ns: ::core::option::Option<u64>,
730        /// The number of bytes discarded by the filter (i.e. output - input).
731        /// The array has one entry for each buffer defined in the config (unless no
732        /// packets for that buffer were seen and hence filtered).
733        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
734        /// (output_bytes - input_bytes) because the filter might also discard
735        /// server-generated synthetic packets, that have no buffer index.
736        #[prost(uint64, repeated, packed="false", tag="20")]
737        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
738    }
739    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
740    #[repr(i32)]
741    pub enum FinalFlushOutcome {
742        FinalFlushUnspecified = 0,
743        FinalFlushSucceeded = 1,
744        FinalFlushFailed = 2,
745    }
746    impl FinalFlushOutcome {
747        /// String value of the enum field names used in the ProtoBuf definition.
748        ///
749        /// The values are not transformed in any way and thus are considered stable
750        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
751        pub fn as_str_name(&self) -> &'static str {
752            match self {
753                FinalFlushOutcome::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
754                FinalFlushOutcome::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
755                FinalFlushOutcome::FinalFlushFailed => "FINAL_FLUSH_FAILED",
756            }
757        }
758    }
759}
760#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
761#[repr(i32)]
762pub enum BuiltinClock {
763    Unknown = 0,
764    Realtime = 1,
765    RealtimeCoarse = 2,
766    Monotonic = 3,
767    MonotonicCoarse = 4,
768    MonotonicRaw = 5,
769    Boottime = 6,
770    Tsc = 9,
771    Perf = 10,
772    MaxId = 63,
773}
774impl BuiltinClock {
775    /// String value of the enum field names used in the ProtoBuf definition.
776    ///
777    /// The values are not transformed in any way and thus are considered stable
778    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
779    pub fn as_str_name(&self) -> &'static str {
780        match self {
781            BuiltinClock::Unknown => "BUILTIN_CLOCK_UNKNOWN",
782            BuiltinClock::Realtime => "BUILTIN_CLOCK_REALTIME",
783            BuiltinClock::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
784            BuiltinClock::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
785            BuiltinClock::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
786            BuiltinClock::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
787            BuiltinClock::Boottime => "BUILTIN_CLOCK_BOOTTIME",
788            BuiltinClock::Tsc => "BUILTIN_CLOCK_TSC",
789            BuiltinClock::Perf => "BUILTIN_CLOCK_PERF",
790            BuiltinClock::MaxId => "BUILTIN_CLOCK_MAX_ID",
791        }
792    }
793}
794/// Data source that lists game modes and game interventions of games
795/// on an Android device.
796#[derive(Clone, PartialEq, ::prost::Message)]
797pub struct AndroidGameInterventionListConfig {
798    /// If not empty, emit info about only the following list of package names
799    /// (exact match, no regex). Otherwise, emit info about all packages.
800    #[prost(string, repeated, tag="1")]
801    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
802}
803/// Custom configuration for the "android.input.inputevent" data source.
804///
805/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
806///
807/// Next ID: 5
808#[derive(Clone, PartialEq, ::prost::Message)]
809pub struct AndroidInputEventConfig {
810    /// The tracing mode to use. If unspecified, it will default to
811    /// TRACE_MODE_USE_RULES.
812    #[prost(enumeration="android_input_event_config::TraceMode", optional, tag="1")]
813    pub mode: ::core::option::Option<i32>,
814    /// The list of rules to use to determine the trace level of events.
815    /// Each event will be traced using the TraceLevel of the first rule that it
816    /// triggers from this list. The rules are evaluated in the order in which they
817    /// are specified. If an event does not match any of the rules,
818    /// TRACE_LEVEL_NONE will be used by default.
819    #[prost(message, repeated, tag="2")]
820    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
821    // --- Control flags ---
822
823    /// Trace input events processed by the system as they are being dispatched
824    /// to application windows. All trace rules will apply.
825    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
826    ///    it will
827    ///      trace InputDispatcher's inbound events (which does not include events
828    ///      synthesized within InputDispatcher) that match the rules.
829    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
830    ///    events
831    ///      matching the rules, including all events synthesized within
832    ///      InputDispatcher, will be traced.
833    #[prost(bool, optional, tag="3")]
834    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
835    /// Trace details about which windows the system is sending each input event
836    /// to. All trace rules will apply.
837    #[prost(bool, optional, tag="4")]
838    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
839}
840/// Nested message and enum types in `AndroidInputEventConfig`.
841pub mod android_input_event_config {
842    /// A rule that specifies the TraceLevel for an event based on matching
843    /// conditions. All matchers in the rule are optional. To trigger this rule, an
844    /// event must match all of its specified matchers (i.e. the matchers function
845    /// like a series of conditions connected by a logical 'AND' operator). A rule
846    /// with no specified matchers will match all events. Next ID: 6
847    #[derive(Clone, PartialEq, ::prost::Message)]
848    pub struct TraceRule {
849        /// The trace level to be used for events that trigger this rule.
850        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
851        #[prost(enumeration="TraceLevel", optional, tag="1")]
852        pub trace_level: ::core::option::Option<i32>,
853        // --- Optional Matchers ---
854
855        /// Package matchers
856        ///
857        /// Respectively matches if all or any of the target apps for this event are
858        /// contained in the specified list of package names.
859        ///
860        /// Intended usage:
861        ///    - Use match_all_packages to selectively allow tracing for the listed
862        ///    packages.
863        ///    - Use match_any_packages to selectively deny tracing for certain
864        ///    packages.
865        ///
866        /// WARNING: Great care must be taken when designing rules for field tracing!
867        ///           This is because each event is almost always sent to more than
868        ///           one app.
869        ///               For example, when allowing tracing for a package that has a
870        ///               spy window
871        ///           over the display (e.g. SystemUI) using match_any_packages,
872        ///           essentially all input will be recorded on that display. This is
873        ///           because the events will be sent to the spy as well as the
874        ///           foreground app, and regardless of what the foreground app is,
875        ///           the event will end up being traced.
876        ///               Alternatively, when attempting to block tracing for specific
877        ///               packages using
878        ///           match_all_packages, no events will likely be blocked. This is
879        ///           because the event will also be sent to other apps (such as, but
880        ///           not limited to, ones with spy windows), so the matcher will not
881        ///           match unless all other targets are also listed under the
882        ///           match_all_packages list.
883        #[prost(string, repeated, tag="2")]
884        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
885        #[prost(string, repeated, tag="3")]
886        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
887        /// Matches if the event is secure, which means that at least one of the
888        /// targets of this event is using the window flag FLAG_SECURE.
889        #[prost(bool, optional, tag="4")]
890        pub match_secure: ::core::option::Option<bool>,
891        /// Matches if there was an active IME connection while this event was being
892        /// processed.
893        #[prost(bool, optional, tag="5")]
894        pub match_ime_connection_active: ::core::option::Option<bool>,
895    }
896    /// Trace modes are tracing presets that are included in the system.
897    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
898    #[repr(i32)]
899    pub enum TraceMode {
900        /// Preset mode for maximal tracing.
901        /// WARNING: This will bypass all privacy measures on debuggable builds, and
902        /// will record all
903        ///           input events processed by the system, regardless of the context
904        ///           in which they were processed. It should only be used for tracing
905        ///           on a local device or for tests. It should NEVER be used for
906        ///           field tracing.
907        TraceAll = 0,
908        /// Use the tracing rules defined in this config to specify what events to
909        /// trace.
910        UseRules = 1,
911    }
912    impl TraceMode {
913        /// String value of the enum field names used in the ProtoBuf definition.
914        ///
915        /// The values are not transformed in any way and thus are considered stable
916        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
917        pub fn as_str_name(&self) -> &'static str {
918            match self {
919                TraceMode::TraceAll => "TRACE_MODE_TRACE_ALL",
920                TraceMode::UseRules => "TRACE_MODE_USE_RULES",
921            }
922        }
923    }
924    /// The level of tracing that should be applied to an event.
925    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
926    #[repr(i32)]
927    pub enum TraceLevel {
928        /// Do not trace the input event.
929        None = 0,
930        /// Trace the event as a redacted event, where certain sensitive fields are
931        /// omitted from the trace, including the coordinates of pointer events and
932        /// the key/scan codes of key events.
933        Redacted = 1,
934        /// Trace the complete event.
935        Complete = 2,
936    }
937    impl TraceLevel {
938        /// String value of the enum field names used in the ProtoBuf definition.
939        ///
940        /// The values are not transformed in any way and thus are considered stable
941        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
942        pub fn as_str_name(&self) -> &'static str {
943            match self {
944                TraceLevel::None => "TRACE_LEVEL_NONE",
945                TraceLevel::Redacted => "TRACE_LEVEL_REDACTED",
946                TraceLevel::Complete => "TRACE_LEVEL_COMPLETE",
947            }
948        }
949    }
950}
951/// Values from NDK's android/log.h.
952#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
953#[repr(i32)]
954pub enum AndroidLogId {
955    /// MAIN.
956    LidDefault = 0,
957    LidRadio = 1,
958    LidEvents = 2,
959    LidSystem = 3,
960    LidCrash = 4,
961    LidStats = 5,
962    LidSecurity = 6,
963    LidKernel = 7,
964}
965impl AndroidLogId {
966    /// String value of the enum field names used in the ProtoBuf definition.
967    ///
968    /// The values are not transformed in any way and thus are considered stable
969    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
970    pub fn as_str_name(&self) -> &'static str {
971        match self {
972            AndroidLogId::LidDefault => "LID_DEFAULT",
973            AndroidLogId::LidRadio => "LID_RADIO",
974            AndroidLogId::LidEvents => "LID_EVENTS",
975            AndroidLogId::LidSystem => "LID_SYSTEM",
976            AndroidLogId::LidCrash => "LID_CRASH",
977            AndroidLogId::LidStats => "LID_STATS",
978            AndroidLogId::LidSecurity => "LID_SECURITY",
979            AndroidLogId::LidKernel => "LID_KERNEL",
980        }
981    }
982}
983#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
984#[repr(i32)]
985pub enum AndroidLogPriority {
986    PrioUnspecified = 0,
987    /// _DEFAULT, but should never be seen in logs.
988    PrioUnused = 1,
989    PrioVerbose = 2,
990    PrioDebug = 3,
991    PrioInfo = 4,
992    PrioWarn = 5,
993    PrioError = 6,
994    PrioFatal = 7,
995}
996impl AndroidLogPriority {
997    /// String value of the enum field names used in the ProtoBuf definition.
998    ///
999    /// The values are not transformed in any way and thus are considered stable
1000    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1001    pub fn as_str_name(&self) -> &'static str {
1002        match self {
1003            AndroidLogPriority::PrioUnspecified => "PRIO_UNSPECIFIED",
1004            AndroidLogPriority::PrioUnused => "PRIO_UNUSED",
1005            AndroidLogPriority::PrioVerbose => "PRIO_VERBOSE",
1006            AndroidLogPriority::PrioDebug => "PRIO_DEBUG",
1007            AndroidLogPriority::PrioInfo => "PRIO_INFO",
1008            AndroidLogPriority::PrioWarn => "PRIO_WARN",
1009            AndroidLogPriority::PrioError => "PRIO_ERROR",
1010            AndroidLogPriority::PrioFatal => "PRIO_FATAL",
1011        }
1012    }
1013}
1014#[derive(Clone, PartialEq, ::prost::Message)]
1015pub struct AndroidLogConfig {
1016    #[prost(enumeration="AndroidLogId", repeated, packed="false", tag="1")]
1017    pub log_ids: ::prost::alloc::vec::Vec<i32>,
1018    /// If set ignores all log messages whose prio is < the given value.
1019    #[prost(enumeration="AndroidLogPriority", optional, tag="3")]
1020    pub min_prio: ::core::option::Option<i32>,
1021    /// If non-empty ignores all log messages whose tag doesn't match one of the
1022    /// specified values.
1023    #[prost(string, repeated, tag="4")]
1024    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1025}
1026/// Data source that polls for display state. This should only be used for
1027/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
1028#[derive(Clone, PartialEq, ::prost::Message)]
1029pub struct AndroidPolledStateConfig {
1030    /// Frequency of polling. If absent the state will be recorded once, at the
1031    /// start of the trace.
1032    /// This is required to be > 100ms to avoid excessive CPU usage.
1033    #[prost(uint32, optional, tag="1")]
1034    pub poll_ms: ::core::option::Option<u32>,
1035}
1036/// Data source that polls for system properties.
1037#[derive(Clone, PartialEq, ::prost::Message)]
1038pub struct AndroidSystemPropertyConfig {
1039    /// Frequency of polling. If absent the state will be recorded once, at the
1040    /// start of the trace.
1041    /// This is required to be > 100ms to avoid excessive CPU usage.
1042    #[prost(uint32, optional, tag="1")]
1043    pub poll_ms: ::core::option::Option<u32>,
1044    /// Properties to poll. All property names must start with "debug.tracing.".
1045    #[prost(string, repeated, tag="2")]
1046    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1047}
1048/// Data source that controls the system properties used to guard initialization
1049/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
1050/// processes like SurfaceFlinger.
1051///
1052/// This data source only tells Skia to initialized the Perfetto SDK and start
1053/// routing data to the Track Event system instead of ATrace. For those events
1054/// to actually show up in a trace, the track_event data source must be used as
1055/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
1056/// processes may need to be restarted for Skia to revert to using ATrace if
1057/// Track Events are no longer desired.
1058///
1059/// In addition to switching Skia to use Perfetto's track_event data source,
1060/// this "guard" also controls Skia's "broad tracing", which removes Skia's
1061/// internal tracing constraints and allows the track_event config to specify
1062/// which categories should be traced. Filtering to the "skia.always" category
1063/// *tag* in a track_event config can be used to re-enable the standard
1064/// constraints typically used with ATrace.
1065///
1066/// Data source name: android.sdk_sysprop_guard
1067/// Introduced in Android 14 (U) QPR1.
1068/// Next id: 4
1069#[derive(Clone, PartialEq, ::prost::Message)]
1070pub struct AndroidSdkSyspropGuardConfig {
1071    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
1072    /// integration with the track_event data source in RenderEngine.
1073    /// If false or omitted, the simpler ATrace fallback is used.
1074    ///
1075    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
1076    /// restarted.
1077    ///
1078    /// Specifically this sets the following system properties:
1079    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
1080    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
1081    ///
1082    /// Does not affect actual track_event data *collection*, which must be
1083    /// configured separately.
1084    #[prost(bool, optional, tag="1")]
1085    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
1086    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
1087    /// with the track_event data source. hwui_package_name_filter
1088    /// can be used to control which apps are affected.
1089    /// If false or omitted, the simpler ATrace fallback is used.
1090    ///
1091    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
1092    /// restarted.
1093    ///
1094    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
1095    /// If filtering is NOT set, this controls these GLOBAL system properties:
1096    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
1097    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
1098    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
1099    /// for each package listed in the filter:
1100    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
1101    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
1102    ///
1103    /// Does not affect actual track_event data *collection*, which must be
1104    /// configured separately.
1105    #[prost(bool, optional, tag="2")]
1106    pub hwui_skia_track_events: ::core::option::Option<bool>,
1107    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
1108    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
1109    #[prost(string, repeated, tag="3")]
1110    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1111}
1112/// Configuration for the android.app_wakelocks data source.
1113#[derive(Clone, PartialEq, ::prost::Message)]
1114pub struct AppWakelocksConfig {
1115    /// Specifies the delay (in milliseconds) after which the data source will
1116    /// attempt to write events. Writing less frequently reduces the trace size by
1117    /// making better use of the packed arrays and reducing the total number of
1118    /// TracePackets needed (which each have dozens of bytes of overhead). The
1119    /// suggested delay is 5000ms.
1120    #[prost(int32, optional, tag="1")]
1121    pub write_delay_ms: ::core::option::Option<i32>,
1122    /// When set, wakelocks held for less than this amount of time are filtered
1123    /// from the resulting trace. Note: duration is computed by matching wakelocks
1124    /// with identical attributes, not by tracking the underlying objects. The
1125    /// threshold should be < the trace's flush_period_ms.
1126    #[prost(int32, optional, tag="2")]
1127    pub filter_duration_below_ms: ::core::option::Option<i32>,
1128    /// When true, the owner_pid is dropped from the resulting output, reducing the
1129    /// size of the interning tables.
1130    #[prost(bool, optional, tag="3")]
1131    pub drop_owner_pid: ::core::option::Option<bool>,
1132}
1133/// Data source that records CPU per UID data.
1134#[derive(Clone, PartialEq, ::prost::Message)]
1135pub struct CpuPerUidConfig {
1136    /// Record at this frequency.
1137    #[prost(uint32, optional, tag="1")]
1138    pub poll_ms: ::core::option::Option<u32>,
1139}
1140/// Data source that records kernel (and native) wakelock data.
1141#[derive(Clone, PartialEq, ::prost::Message)]
1142pub struct KernelWakelocksConfig {
1143    /// Record at this frequency.
1144    #[prost(uint32, optional, tag="1")]
1145    pub poll_ms: ::core::option::Option<u32>,
1146}
1147/// Network tracing data source that records details on all packets sent or
1148/// received by the network.
1149#[derive(Clone, PartialEq, ::prost::Message)]
1150pub struct NetworkPacketTraceConfig {
1151    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
1152    /// ring buffer. The polling interval should be such that the ring buffer is
1153    /// unlikely to fill in that interval (or that filling is an acceptable risk).
1154    /// The minimum polling rate is 100ms (values below this are ignored).
1155    /// Introduced in Android 14 (U).
1156    #[prost(uint32, optional, tag="1")]
1157    pub poll_ms: ::core::option::Option<u32>,
1158    /// The aggregation_threshold is the number of packets at which an event will
1159    /// switch from per-packet details to aggregate details. For example, a value
1160    /// of 50 means that if a particular event (grouped by the unique combinations
1161    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
1162    /// packets, the exact timestamp and length are recorded for each packet. If
1163    /// there were 50 or more packets in an event, it would only record the total
1164    /// duration, packets, and length. A value of zero or unspecified will always
1165    /// / record per-packet details. A value of 1 always records aggregate details.
1166    #[prost(uint32, optional, tag="2")]
1167    pub aggregation_threshold: ::core::option::Option<u32>,
1168    /// Specifies the maximum number of packet contexts to intern at a time. This
1169    /// prevents the interning table from growing too large and controls whether
1170    /// interning is enabled or disabled (a value of zero disables interning and
1171    /// is the default). When a data sources interning table reaches this amount,
1172    /// packet contexts will be inlined into NetworkPacketEvents.
1173    #[prost(uint32, optional, tag="3")]
1174    pub intern_limit: ::core::option::Option<u32>,
1175    /// The following fields specify whether certain fields should be dropped from
1176    /// the output. Dropping fields improves normalization results, reduces the
1177    /// size of the interning table, and slightly reduces event size.
1178    #[prost(bool, optional, tag="4")]
1179    pub drop_local_port: ::core::option::Option<bool>,
1180    #[prost(bool, optional, tag="5")]
1181    pub drop_remote_port: ::core::option::Option<bool>,
1182    #[prost(bool, optional, tag="6")]
1183    pub drop_tcp_flags: ::core::option::Option<bool>,
1184}
1185/// Data source that lists details (such as version code) about packages on an
1186/// Android device.
1187#[derive(Clone, PartialEq, ::prost::Message)]
1188pub struct PackagesListConfig {
1189    /// If not empty, emit info about only the following list of package names
1190    /// (exact match, no regex). Otherwise, emit info about all packages.
1191    #[prost(string, repeated, tag="1")]
1192    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1193}
1194/// Data source that records events from the modem.
1195#[derive(Clone, PartialEq, ::prost::Message)]
1196pub struct PixelModemConfig {
1197    #[prost(enumeration="pixel_modem_config::EventGroup", optional, tag="1")]
1198    pub event_group: ::core::option::Option<i32>,
1199    /// If set, record only events with these hashes.
1200    #[prost(int64, repeated, packed="false", tag="2")]
1201    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
1202    /// If set and allow_list is not set, deny events with these hashes.
1203    #[prost(int64, repeated, packed="false", tag="3")]
1204    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
1205}
1206/// Nested message and enum types in `PixelModemConfig`.
1207pub mod pixel_modem_config {
1208    /// Event group to record, as defined by the modem.
1209    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1210    #[repr(i32)]
1211    pub enum EventGroup {
1212        Unknown = 0,
1213        /// Events suitable for low bandwidth tracing only.
1214        LowBandwidth = 1,
1215        /// Events suitable for high and low bandwidth tracing.
1216        HighAndLowBandwidth = 2,
1217    }
1218    impl EventGroup {
1219        /// String value of the enum field names used in the ProtoBuf definition.
1220        ///
1221        /// The values are not transformed in any way and thus are considered stable
1222        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1223        pub fn as_str_name(&self) -> &'static str {
1224            match self {
1225                EventGroup::Unknown => "EVENT_GROUP_UNKNOWN",
1226                EventGroup::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
1227                EventGroup::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
1228            }
1229        }
1230    }
1231}
1232#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1233#[repr(i32)]
1234pub enum ProtoLogLevel {
1235    ProtologLevelUndefined = 0,
1236    ProtologLevelDebug = 1,
1237    ProtologLevelVerbose = 2,
1238    ProtologLevelInfo = 3,
1239    ProtologLevelWarn = 4,
1240    ProtologLevelError = 5,
1241    ProtologLevelWtf = 6,
1242}
1243impl ProtoLogLevel {
1244    /// String value of the enum field names used in the ProtoBuf definition.
1245    ///
1246    /// The values are not transformed in any way and thus are considered stable
1247    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1248    pub fn as_str_name(&self) -> &'static str {
1249        match self {
1250            ProtoLogLevel::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
1251            ProtoLogLevel::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
1252            ProtoLogLevel::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
1253            ProtoLogLevel::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
1254            ProtoLogLevel::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
1255            ProtoLogLevel::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
1256            ProtoLogLevel::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
1257        }
1258    }
1259}
1260/// Custom configuration for the "android.protolog" data source.
1261/// ProtoLog is a logging mechanism that is intented to be more efficient than
1262/// logcat. This configures what logs to capture in the tracing instance.
1263#[derive(Clone, PartialEq, ::prost::Message)]
1264pub struct ProtoLogConfig {
1265    /// Specified the configurations for each of the logging groups. If none is
1266    /// specified for a group the defaults will be used.
1267    #[prost(message, repeated, tag="1")]
1268    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
1269    /// Specified what tracing mode to use for the tracing instance.
1270    #[prost(enumeration="proto_log_config::TracingMode", optional, tag="2")]
1271    pub tracing_mode: ::core::option::Option<i32>,
1272    /// If set, any message with log level higher than this level (inclusive) will
1273    /// be traced. Group overrides take precedence over this value.
1274    #[prost(enumeration="ProtoLogLevel", optional, tag="3")]
1275    pub default_log_from_level: ::core::option::Option<i32>,
1276}
1277/// Nested message and enum types in `ProtoLogConfig`.
1278pub mod proto_log_config {
1279    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1280    #[repr(i32)]
1281    pub enum TracingMode {
1282        /// When using the DEFAULT tracing mode, only log groups and levels specified
1283        /// in the group_overrides are traced.
1284        Default = 0,
1285        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
1286        /// traced, unless specified in the group_overrides.
1287        EnableAll = 1,
1288    }
1289    impl TracingMode {
1290        /// String value of the enum field names used in the ProtoBuf definition.
1291        ///
1292        /// The values are not transformed in any way and thus are considered stable
1293        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1294        pub fn as_str_name(&self) -> &'static str {
1295            match self {
1296                TracingMode::Default => "DEFAULT",
1297                TracingMode::EnableAll => "ENABLE_ALL",
1298            }
1299        }
1300    }
1301}
1302#[derive(Clone, PartialEq, ::prost::Message)]
1303pub struct ProtoLogGroup {
1304    /// The ProtoLog group name this configuration entry applies to.
1305    #[prost(string, optional, tag="1")]
1306    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
1307    /// Specify the level from which to start capturing protologs.
1308    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
1309    /// message will be traced.
1310    #[prost(enumeration="ProtoLogLevel", optional, tag="2")]
1311    pub log_from: ::core::option::Option<i32>,
1312    /// When set to true we will collect the stacktrace for each protolog message
1313    /// in this group that we are tracing.
1314    #[prost(bool, optional, tag="3")]
1315    pub collect_stacktrace: ::core::option::Option<bool>,
1316}
1317/// Custom configuration for the "android.surfaceflinger.layers" data source.
1318#[derive(Clone, PartialEq, ::prost::Message)]
1319pub struct SurfaceFlingerLayersConfig {
1320    #[prost(enumeration="surface_flinger_layers_config::Mode", optional, tag="1")]
1321    pub mode: ::core::option::Option<i32>,
1322    #[prost(enumeration="surface_flinger_layers_config::TraceFlag", repeated, packed="false", tag="2")]
1323    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
1324}
1325/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
1326pub mod surface_flinger_layers_config {
1327    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1328    #[repr(i32)]
1329    pub enum Mode {
1330        Unspecified = 0,
1331        /// Trace layers snapshots. A snapshot is taken every time a layers change
1332        /// occurs.
1333        Active = 1,
1334        /// Generate layers snapshots from the transactions kept in the
1335        /// SurfaceFlinger's internal ring buffer.
1336        /// The layers snapshots generation occurs when this data source is flushed.
1337        Generated = 2,
1338        /// Trace a single layers snapshot.
1339        Dump = 3,
1340        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1341        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
1342        /// when a bugreport is taken.
1343        GeneratedBugreportOnly = 4,
1344    }
1345    impl Mode {
1346        /// String value of the enum field names used in the ProtoBuf definition.
1347        ///
1348        /// The values are not transformed in any way and thus are considered stable
1349        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1350        pub fn as_str_name(&self) -> &'static str {
1351            match self {
1352                Mode::Unspecified => "MODE_UNSPECIFIED",
1353                Mode::Active => "MODE_ACTIVE",
1354                Mode::Generated => "MODE_GENERATED",
1355                Mode::Dump => "MODE_DUMP",
1356                Mode::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
1357            }
1358        }
1359    }
1360    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1361    #[repr(i32)]
1362    pub enum TraceFlag {
1363        Unspecified = 0,
1364        Input = 2,
1365        Composition = 4,
1366        Extra = 8,
1367        Hwc = 16,
1368        Buffers = 32,
1369        VirtualDisplays = 64,
1370        /// INPUT | COMPOSITION | EXTRA
1371        All = 14,
1372    }
1373    impl TraceFlag {
1374        /// String value of the enum field names used in the ProtoBuf definition.
1375        ///
1376        /// The values are not transformed in any way and thus are considered stable
1377        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1378        pub fn as_str_name(&self) -> &'static str {
1379            match self {
1380                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
1381                TraceFlag::Input => "TRACE_FLAG_INPUT",
1382                TraceFlag::Composition => "TRACE_FLAG_COMPOSITION",
1383                TraceFlag::Extra => "TRACE_FLAG_EXTRA",
1384                TraceFlag::Hwc => "TRACE_FLAG_HWC",
1385                TraceFlag::Buffers => "TRACE_FLAG_BUFFERS",
1386                TraceFlag::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
1387                TraceFlag::All => "TRACE_FLAG_ALL",
1388            }
1389        }
1390    }
1391}
1392/// Custom configuration for the "android.surfaceflinger.transactions" data
1393/// source.
1394#[derive(Clone, PartialEq, ::prost::Message)]
1395pub struct SurfaceFlingerTransactionsConfig {
1396    #[prost(enumeration="surface_flinger_transactions_config::Mode", optional, tag="1")]
1397    pub mode: ::core::option::Option<i32>,
1398}
1399/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
1400pub mod surface_flinger_transactions_config {
1401    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1402    #[repr(i32)]
1403    pub enum Mode {
1404        Unspecified = 0,
1405        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1406        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1407        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1408        /// initial state and the latest transactions.
1409        Continuous = 1,
1410        /// SurfaceFlinger writes the initial state and then each incoming
1411        /// transaction until the data source is stopped.
1412        Active = 2,
1413    }
1414    impl Mode {
1415        /// String value of the enum field names used in the ProtoBuf definition.
1416        ///
1417        /// The values are not transformed in any way and thus are considered stable
1418        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1419        pub fn as_str_name(&self) -> &'static str {
1420            match self {
1421                Mode::Unspecified => "MODE_UNSPECIFIED",
1422                Mode::Continuous => "MODE_CONTINUOUS",
1423                Mode::Active => "MODE_ACTIVE",
1424            }
1425        }
1426    }
1427}
1428/// Custom configuration for the "android.windowmanager" data source.
1429#[derive(Clone, PartialEq, ::prost::Message)]
1430pub struct WindowManagerConfig {
1431    #[prost(enumeration="window_manager_config::LogFrequency", optional, tag="1")]
1432    pub log_frequency: ::core::option::Option<i32>,
1433    #[prost(enumeration="window_manager_config::LogLevel", optional, tag="2")]
1434    pub log_level: ::core::option::Option<i32>,
1435}
1436/// Nested message and enum types in `WindowManagerConfig`.
1437pub mod window_manager_config {
1438    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1439    #[repr(i32)]
1440    pub enum LogFrequency {
1441        Unspecified = 0,
1442        /// Trace state snapshots when a frame is committed.
1443        Frame = 1,
1444        /// Trace state snapshots every time a transaction is committed.
1445        Transaction = 2,
1446        /// Trace single state snapshots when the data source is started.
1447        SingleDump = 3,
1448    }
1449    impl LogFrequency {
1450        /// String value of the enum field names used in the ProtoBuf definition.
1451        ///
1452        /// The values are not transformed in any way and thus are considered stable
1453        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1454        pub fn as_str_name(&self) -> &'static str {
1455            match self {
1456                LogFrequency::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1457                LogFrequency::Frame => "LOG_FREQUENCY_FRAME",
1458                LogFrequency::Transaction => "LOG_FREQUENCY_TRANSACTION",
1459                LogFrequency::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1460            }
1461        }
1462    }
1463    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1464    #[repr(i32)]
1465    pub enum LogLevel {
1466        Unspecified = 0,
1467        /// Logs all elements with maximum amount of information.
1468        Verbose = 1,
1469        /// Logs all elements but doesn't write all configuration data.
1470        Debug = 2,
1471        /// Logs only visible elements, with the minimum amount of performance
1472        /// overhead
1473        Critical = 3,
1474    }
1475    impl LogLevel {
1476        /// String value of the enum field names used in the ProtoBuf definition.
1477        ///
1478        /// The values are not transformed in any way and thus are considered stable
1479        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1480        pub fn as_str_name(&self) -> &'static str {
1481            match self {
1482                LogLevel::Unspecified => "LOG_LEVEL_UNSPECIFIED",
1483                LogLevel::Verbose => "LOG_LEVEL_VERBOSE",
1484                LogLevel::Debug => "LOG_LEVEL_DEBUG",
1485                LogLevel::Critical => "LOG_LEVEL_CRITICAL",
1486            }
1487        }
1488    }
1489}
1490#[derive(Clone, PartialEq, ::prost::Message)]
1491pub struct ChromeConfig {
1492    #[prost(string, optional, tag="1")]
1493    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1494    /// When enabled, the data source should only fill in fields in the output that
1495    /// are not potentially privacy sensitive.
1496    #[prost(bool, optional, tag="2")]
1497    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1498    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1499    /// JSON format. Note that the trace data will still be returned as a series of
1500    /// TracePackets, but the embedded data will be JSON instead of serialized
1501    /// protobuf.
1502    #[prost(bool, optional, tag="3")]
1503    pub convert_to_legacy_json: ::core::option::Option<bool>,
1504    #[prost(enumeration="chrome_config::ClientPriority", optional, tag="4")]
1505    pub client_priority: ::core::option::Option<i32>,
1506    /// Applicable only when using legacy JSON format.
1507    /// If |json_agent_label_filter| is not empty, only data pertaining to
1508    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1509    #[prost(string, optional, tag="5")]
1510    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1511    ///   When enabled, event names should not contain package names.
1512    #[prost(bool, optional, tag="6")]
1513    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
1514}
1515/// Nested message and enum types in `ChromeConfig`.
1516pub mod chrome_config {
1517    /// Priority of the tracing session client. A higher priority session may
1518    /// preempt a lower priority one in configurations where concurrent sessions
1519    /// aren't supported.
1520    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1521    #[repr(i32)]
1522    pub enum ClientPriority {
1523        Unknown = 0,
1524        Background = 1,
1525        UserInitiated = 2,
1526    }
1527    impl ClientPriority {
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                ClientPriority::Unknown => "UNKNOWN",
1535                ClientPriority::Background => "BACKGROUND",
1536                ClientPriority::UserInitiated => "USER_INITIATED",
1537            }
1538        }
1539    }
1540}
1541#[derive(Clone, PartialEq, ::prost::Message)]
1542pub struct V8Config {
1543    /// Whether to log the actual content of scripts (e.g. content of the JS file
1544    /// that was compiled to generate code).
1545    /// ATTENTION: This could considerably increase the size of the resuling trace
1546    ///             file.
1547    #[prost(bool, optional, tag="1")]
1548    pub log_script_sources: ::core::option::Option<bool>,
1549    /// Whether to log the generated code for jitted functions (machine code or
1550    /// bytecode).
1551    /// ATTENTION: This could considerably increase the size of the resuling trace
1552    ///             file.
1553    #[prost(bool, optional, tag="2")]
1554    pub log_instructions: ::core::option::Option<bool>,
1555}
1556/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1557/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1558/// ns-evntrace-event_trace_properties
1559#[derive(Clone, PartialEq, ::prost::Message)]
1560pub struct EtwConfig {
1561    /// The kernel_flags determines the flags that will be used by the etw tracing
1562    /// session. These kernel flags have been built to expose the useful events
1563    /// captured from the kernel mode only.
1564    #[prost(enumeration="etw_config::KernelFlag", repeated, packed="false", tag="1")]
1565    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1566}
1567/// Nested message and enum types in `EtwConfig`.
1568pub mod etw_config {
1569    /// The KernelFlag represent list of kernel flags that we are intrested in.
1570    /// To get a more extensive list run 'xperf -providers k'.
1571    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1572    #[repr(i32)]
1573    pub enum KernelFlag {
1574        Cswitch = 0,
1575        Dispatcher = 1,
1576    }
1577    impl KernelFlag {
1578        /// String value of the enum field names used in the ProtoBuf definition.
1579        ///
1580        /// The values are not transformed in any way and thus are considered stable
1581        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1582        pub fn as_str_name(&self) -> &'static str {
1583            match self {
1584                KernelFlag::Cswitch => "CSWITCH",
1585                KernelFlag::Dispatcher => "DISPATCHER",
1586            }
1587        }
1588    }
1589}
1590#[derive(Clone, PartialEq, ::prost::Message)]
1591pub struct ChromiumSystemMetricsConfig {
1592    /// Samples counters every X ms.
1593    #[prost(uint32, optional, tag="1")]
1594    pub sampling_interval_ms: ::core::option::Option<u32>,
1595}
1596/// Next id: 34
1597#[derive(Clone, PartialEq, ::prost::Message)]
1598pub struct FtraceConfig {
1599    /// Ftrace events to record, example: "sched/sched_switch".
1600    #[prost(string, repeated, tag="1")]
1601    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1602    /// Android-specific event categories:
1603    #[prost(string, repeated, tag="2")]
1604    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1605    #[prost(string, repeated, tag="3")]
1606    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1607    /// Some processes can emit data through atrace or through the perfetto SDK via
1608    /// the "track_event" data source. For these categories, the SDK will be
1609    /// preferred, if possible, for this config.
1610    #[prost(string, repeated, tag="28")]
1611    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1612    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
1613    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
1614    /// events for convenience (and the vendor-specific events on top).
1615    /// Introduced in: perfetto v52.
1616    #[prost(bool, optional, tag="34")]
1617    pub atrace_userspace_only: ::core::option::Option<bool>,
1618    /// Size of each per-cpu kernel ftrace ring buffer.
1619    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
1620    /// buffers cannot be resized without pausing recording in the kernel.
1621    #[prost(uint32, optional, tag="10")]
1622    pub buffer_size_kb: ::core::option::Option<u32>,
1623    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
1624    /// implementation to choose a bigger buffer size.
1625    ///
1626    /// Most configs for perfetto v43+ should simply leave both fields unset.
1627    ///
1628    /// If you need a config compatible with a range of perfetto builds and you
1629    /// used to set a non-default buffer_size_kb, consider setting both fields.
1630    /// Example:
1631    ///    buffer_size_kb: 4096
1632    ///    buffer_size_lower_bound: true
1633    /// On older builds, the per-cpu buffers will be exactly 4 MB.
1634    /// On v43+, buffers will be at least 4 MB.
1635    /// In both cases, neither is guaranteed if there are other concurrent
1636    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
1637    /// the recording in the kernel.
1638    /// Introduced in: perfetto v43.
1639    #[prost(bool, optional, tag="27")]
1640    pub buffer_size_lower_bound: ::core::option::Option<bool>,
1641    /// If set, specifies how often the tracing daemon reads from the kernel ring
1642    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
1643    /// Leave unset unless you're fine-tuning a local config.
1644    #[prost(uint32, optional, tag="11")]
1645    pub drain_period_ms: ::core::option::Option<u32>,
1646    /// If set, the tracing daemon will read kernel ring buffers as soon as
1647    /// they're filled past this percentage of occupancy. In other words, a value
1648    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
1649    /// half-full. Not guaranteed if there are multiple concurrent tracing
1650    /// sessions.
1651    /// Currently does nothing on Linux kernels below v6.9.
1652    /// Introduced in: perfetto v48.
1653    #[prost(uint32, optional, tag="29")]
1654    pub drain_buffer_percent: ::core::option::Option<u32>,
1655    #[prost(message, optional, tag="12")]
1656    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
1657    #[prost(message, optional, tag="22")]
1658    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
1659    /// Enables symbol name resolution against /proc/kallsyms.
1660    /// It requires that either traced_probes is running as root or that
1661    /// kptr_restrict has been manually lowered.
1662    /// It does not disclose KASLR, symbol addresses are mangled.
1663    #[prost(bool, optional, tag="13")]
1664    pub symbolize_ksyms: ::core::option::Option<bool>,
1665    #[prost(enumeration="ftrace_config::KsymsMemPolicy", optional, tag="17")]
1666    pub ksyms_mem_policy: ::core::option::Option<i32>,
1667    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
1668    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
1669    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
1670    /// The historical context for this is the following:
1671    /// - Up to Android S (12), the rss_stat was internally throttled in its
1672    ///    kernel implementation.
1673    /// - A change introduced in the kernels after S has introduced a new
1674    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
1675    ///    (hence very spammy).
1676    /// - Not all Android T/13 devices will receive a new kernel though, hence we
1677    ///    need to deal with both cases.
1678    /// For more context: go/rss-stat-throttled.
1679    #[prost(bool, optional, tag="15")]
1680    pub throttle_rss_stat: ::core::option::Option<bool>,
1681    /// If true, use self-describing proto messages when writing events not known
1682    /// at compile time (aka generic events). Each event bundle will have a set of
1683    /// serialised proto descriptors for events within that bundle.
1684    /// Added in: perfetto v50.
1685    #[prost(bool, optional, tag="32")]
1686    pub denser_generic_event_encoding: ::core::option::Option<bool>,
1687    /// If true, avoid enabling events that aren't statically known by
1688    /// traced_probes. Otherwise, the default is to emit such events as
1689    /// GenericFtraceEvent protos.
1690    /// Prefer to keep this flag at its default. This was added for Android
1691    /// tracing, where atrace categories and/or atrace HAL requested events can
1692    /// expand to events that aren't of interest to the tracing user.
1693    /// Introduced in: Android T.
1694    #[prost(bool, optional, tag="16")]
1695    pub disable_generic_events: ::core::option::Option<bool>,
1696    /// The subset of syscalls to record. To record all syscalls, leave this unset
1697    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
1698    /// * before perfetto v43, requires the config to also enable
1699    ///    raw_syscalls/sys_{enter,exit}.
1700    /// * perfetto v43+ does the right thing if you set only this field.
1701    /// Example: ["sys_read", "sys_open"].
1702    /// Introduced in: Android U.
1703    #[prost(string, repeated, tag="18")]
1704    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1705    /// If true, enable the "function_graph" kernel tracer that emits events
1706    /// whenever a kernel function is entered and exited
1707    /// (funcgraph_entry/funcgraph_exit).
1708    /// Notes on use:
1709    /// * Requires |symbolize_ksyms| for function name resolution.
1710    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
1711    ///    set of functions, otherwise the event bandwidth will be too high for
1712    ///    practical use.
1713    /// * The data source might be rejected if there is already a concurrent
1714    ///    ftrace data source that does not use function graph itself, as we do not
1715    ///    support switching kernel tracers mid-trace.
1716    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
1717    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
1718    ///    "function_graph".
1719    /// Android:
1720    /// * Available only on debuggable builds.
1721    /// * Introduced in: Android U.
1722    #[prost(bool, optional, tag="19")]
1723    pub enable_function_graph: ::core::option::Option<bool>,
1724    /// Constrains the set of functions traced when |enable_function_graph| is
1725    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
1726    /// in which case all matching functions will be traced. See kernel
1727    /// documentation on ftrace "set_ftrace_filter" file for more details.
1728    /// Android:
1729    /// * Available only on debuggable builds.
1730    /// * Introduced in: Android U.
1731    #[prost(string, repeated, tag="20")]
1732    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1733    /// If |enable_function_graph| is true, trace this set of functions *and* all
1734    /// of its callees. Supports globs. Can be set together with
1735    /// |function_filters|, in which case only callees matching the filter will be
1736    /// traced. If setting both, you most likely want all roots to also be
1737    /// included in |function_filters|.
1738    /// Android:
1739    /// * Available only on debuggable builds.
1740    /// * Introduced in: Android U.
1741    #[prost(string, repeated, tag="21")]
1742    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1743    /// If |enable_function_graph| is true, only trace the specified
1744    /// number of calls down the stack. Sets the max_graph_depth value
1745    /// in sys/kernel/tracing/
1746    ///
1747    /// Only respected for the first tracing session that enables
1748    /// function_graph tracing.
1749    ///
1750    /// Introduced in: perfetto v51.
1751    /// Supported on: Android 25Q3+.
1752    #[prost(uint32, optional, tag="33")]
1753    pub function_graph_max_depth: ::core::option::Option<u32>,
1754    /// Ftrace events to record, specific for kprobes and kretprobes
1755    #[prost(message, repeated, tag="30")]
1756    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
1757    /// If true, does not clear kernel ftrace buffers when starting the trace.
1758    /// This makes sense only if this is the first ftrace data source instance
1759    /// created after the daemon has been started. Can be useful for gathering boot
1760    /// traces, if ftrace has been separately configured (e.g. via kernel
1761    /// commandline).
1762    /// NB: when configuring the pre-perfetto ftrace, prefer to set
1763    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
1764    /// anything besides ftrace. Otherwise timestamps might be skewed.
1765    #[prost(bool, optional, tag="23")]
1766    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
1767    /// If true, overrides the default timestamp clock and uses a raw hardware
1768    /// based monotonic clock for getting timestamps.
1769    /// * Introduced in: Android U.
1770    #[prost(bool, optional, tag="24")]
1771    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
1772    /// If |instance_name| is not empty, then attempt to use that tracefs instance
1773    /// for event recording. Normally, this means
1774    /// `/sys/kernel/tracing/instances/$instance_name`.
1775    ///
1776    /// The name "hyp" is reserved.
1777    ///
1778    /// The instance must already exist, the tracing daemon *will not* create it
1779    /// for you as it typically doesn't have such permissions.
1780    /// Only a subset of features is guaranteed to work with non-default instances,
1781    /// at the time of writing:
1782    ///   * ftrace_events
1783    ///   * buffer_size_kb
1784    #[prost(string, optional, tag="25")]
1785    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1786    /// For perfetto developer use. If true and on a debuggable android build,
1787    /// serialise raw tracing pages that the implementation cannot parse.
1788    #[prost(bool, optional, tag="31")]
1789    pub debug_ftrace_abi: ::core::option::Option<bool>,
1790    /// No-op in perfetto v28+. Name preserved because of existing references in
1791    /// textproto configs.
1792    #[deprecated]
1793    #[prost(bool, optional, tag="14")]
1794    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
1795}
1796/// Nested message and enum types in `FtraceConfig`.
1797pub mod ftrace_config {
1798    /// Configuration for compact encoding of scheduler events. When enabled (and
1799    /// recording the relevant ftrace events), specific high-volume events are
1800    /// encoded in a denser format than normal.
1801    #[derive(Clone, PartialEq, ::prost::Message)]
1802    pub struct CompactSchedConfig {
1803        /// If true, and sched_switch or sched_waking ftrace events are enabled,
1804        /// record those events in the compact format.
1805        ///
1806        /// If the field is unset, the default is:
1807        /// * perfetto v42.0+: enabled
1808        /// * before: disabled
1809        #[prost(bool, optional, tag="1")]
1810        pub enabled: ::core::option::Option<bool>,
1811    }
1812    /// Optional filter for "ftrace/print" events.
1813    ///
1814    /// The filter consists of multiple rules. As soon as a rule matches (the rules
1815    /// are processed in order), its `allow` field will be used as the outcome: if
1816    /// `allow` is true, the event will be included in the trace, otherwise it will
1817    /// be discarded. If an event does not match any rule, it will be allowed by
1818    /// default (a rule with an empty prefix and allow=false, disallows everything
1819    /// by default).
1820    #[derive(Clone, PartialEq, ::prost::Message)]
1821    pub struct PrintFilter {
1822        #[prost(message, repeated, tag="1")]
1823        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
1824    }
1825    /// Nested message and enum types in `PrintFilter`.
1826    pub mod print_filter {
1827        #[derive(Clone, PartialEq, ::prost::Message)]
1828        pub struct Rule {
1829            #[prost(bool, optional, tag="2")]
1830            pub allow: ::core::option::Option<bool>,
1831            #[prost(oneof="rule::Match", tags="1, 3")]
1832            pub r#match: ::core::option::Option<rule::Match>,
1833        }
1834        /// Nested message and enum types in `Rule`.
1835        pub mod rule {
1836            /// Matches an atrace message of the form:
1837            /// <type>|pid|<prefix>...
1838            #[derive(Clone, PartialEq, ::prost::Message)]
1839            pub struct AtraceMessage {
1840                #[prost(string, optional, tag="1")]
1841                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
1842                #[prost(string, optional, tag="2")]
1843                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
1844            }
1845            #[derive(Clone, PartialEq, ::prost::Oneof)]
1846            pub enum Match {
1847                /// This rule matches if `prefix` matches exactly with the beginning of
1848                /// the "ftrace/print" "buf" field.
1849                #[prost(string, tag="1")]
1850                Prefix(::prost::alloc::string::String),
1851                /// This rule matches if the "buf" field contains an atrace-style print
1852                /// message as specified in `atrace_msg`.
1853                #[prost(message, tag="3")]
1854                AtraceMsg(AtraceMessage),
1855            }
1856        }
1857    }
1858    #[derive(Clone, PartialEq, ::prost::Message)]
1859    pub struct KprobeEvent {
1860        /// Kernel function name to attach to, for example "fuse_file_write_iter"
1861        #[prost(string, optional, tag="1")]
1862        pub probe: ::core::option::Option<::prost::alloc::string::String>,
1863        #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
1864        pub r#type: ::core::option::Option<i32>,
1865    }
1866    /// Nested message and enum types in `KprobeEvent`.
1867    pub mod kprobe_event {
1868        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1869        #[repr(i32)]
1870        pub enum KprobeType {
1871            Unknown = 0,
1872            Kprobe = 1,
1873            Kretprobe = 2,
1874            Both = 3,
1875        }
1876        impl KprobeType {
1877            /// String value of the enum field names used in the ProtoBuf definition.
1878            ///
1879            /// The values are not transformed in any way and thus are considered stable
1880            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1881            pub fn as_str_name(&self) -> &'static str {
1882                match self {
1883                    KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
1884                    KprobeType::Kprobe => "KPROBE_TYPE_KPROBE",
1885                    KprobeType::Kretprobe => "KPROBE_TYPE_KRETPROBE",
1886                    KprobeType::Both => "KPROBE_TYPE_BOTH",
1887                }
1888            }
1889        }
1890    }
1891    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
1892    /// should keep the symbol map in memory (and reuse it for future tracing
1893    /// sessions) or clear it (saving memory) and re-create it on each tracing
1894    /// session (wasting cpu and wall time).
1895    /// The tradeoff is roughly:
1896    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
1897    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
1898    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
1899    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1900    #[repr(i32)]
1901    pub enum KsymsMemPolicy {
1902        KsymsUnspecified = 0,
1903        KsymsCleanupOnStop = 1,
1904        KsymsRetain = 2,
1905    }
1906    impl KsymsMemPolicy {
1907        /// String value of the enum field names used in the ProtoBuf definition.
1908        ///
1909        /// The values are not transformed in any way and thus are considered stable
1910        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1911        pub fn as_str_name(&self) -> &'static str {
1912            match self {
1913                KsymsMemPolicy::KsymsUnspecified => "KSYMS_UNSPECIFIED",
1914                KsymsMemPolicy::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
1915                KsymsMemPolicy::KsymsRetain => "KSYMS_RETAIN",
1916            }
1917        }
1918    }
1919}
1920#[derive(Clone, PartialEq, ::prost::Message)]
1921pub struct FrozenFtraceConfig {
1922    /// The instance name which stores the previous boot ftrace data. Required.
1923    #[prost(string, optional, tag="1")]
1924    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
1925}
1926#[derive(Clone, PartialEq, ::prost::Message)]
1927pub struct GpuCounterConfig {
1928    /// Desired sampling interval for counters.
1929    #[prost(uint64, optional, tag="1")]
1930    pub counter_period_ns: ::core::option::Option<u64>,
1931    /// List of counters to be sampled. Counter IDs correspond to the ones
1932    /// described in GpuCounterSpec in the data source descriptor.
1933    #[prost(uint32, repeated, packed="false", tag="2")]
1934    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
1935    /// Sample counters by instrumenting command buffers.
1936    #[prost(bool, optional, tag="3")]
1937    pub instrumented_sampling: ::core::option::Option<bool>,
1938    /// Fix gpu clock rate during trace session.
1939    #[prost(bool, optional, tag="4")]
1940    pub fix_gpu_clock: ::core::option::Option<bool>,
1941}
1942#[derive(Clone, PartialEq, ::prost::Message)]
1943pub struct VulkanMemoryConfig {
1944    /// Tracking driver memory usage events
1945    #[prost(bool, optional, tag="1")]
1946    pub track_driver_memory_usage: ::core::option::Option<bool>,
1947    /// Tracking device memory usage events
1948    #[prost(bool, optional, tag="2")]
1949    pub track_device_memory_usage: ::core::option::Option<bool>,
1950}
1951#[derive(Clone, PartialEq, ::prost::Message)]
1952pub struct GpuRenderStagesConfig {
1953    /// Enable to separate the color and depth/stencil load and store stages
1954    /// into a separate stages. If disabled, the depth/stencil load and store
1955    /// stages will be combined.  Disabled by default. This option has no effect if
1956    /// Low Overhead mode is enabled.
1957    #[prost(bool, optional, tag="1")]
1958    pub full_loadstore: ::core::option::Option<bool>,
1959    /// Use the low overhead mode for traces. In this mode render stages are
1960    /// combined into a single workload stage. This provides less granular data but
1961    /// induces minimal GPU overhead. Disabled by default.
1962    #[prost(bool, optional, tag="2")]
1963    pub low_overhead: ::core::option::Option<bool>,
1964    /// Trace metrics to capture for each render stage
1965    #[prost(string, repeated, tag="3")]
1966    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1967}
1968#[derive(Clone, PartialEq, ::prost::Message)]
1969pub struct InodeFileConfig {
1970    /// How long to pause between batches.
1971    #[prost(uint32, optional, tag="1")]
1972    pub scan_interval_ms: ::core::option::Option<u32>,
1973    /// How long to wait before the first scan in order to accumulate inodes.
1974    #[prost(uint32, optional, tag="2")]
1975    pub scan_delay_ms: ::core::option::Option<u32>,
1976    /// How many inodes to scan in one batch.
1977    #[prost(uint32, optional, tag="3")]
1978    pub scan_batch_size: ::core::option::Option<u32>,
1979    /// Do not scan for inodes not found in the static map.
1980    #[prost(bool, optional, tag="4")]
1981    pub do_not_scan: ::core::option::Option<bool>,
1982    /// If non-empty, only scan inodes corresponding to block devices named in
1983    /// this list.
1984    #[prost(string, repeated, tag="5")]
1985    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1986    /// When encountering an inode belonging to a block device corresponding
1987    /// to one of the mount points in this map, scan its scan_roots instead.
1988    #[prost(message, repeated, tag="6")]
1989    pub mount_point_mapping: ::prost::alloc::vec::Vec<inode_file_config::MountPointMappingEntry>,
1990}
1991/// Nested message and enum types in `InodeFileConfig`.
1992pub mod inode_file_config {
1993    #[derive(Clone, PartialEq, ::prost::Message)]
1994    pub struct MountPointMappingEntry {
1995        #[prost(string, optional, tag="1")]
1996        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
1997        #[prost(string, repeated, tag="2")]
1998        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1999    }
2000}
2001#[derive(Clone, PartialEq, ::prost::Message)]
2002pub struct ConsoleConfig {
2003    #[prost(enumeration="console_config::Output", optional, tag="1")]
2004    pub output: ::core::option::Option<i32>,
2005    #[prost(bool, optional, tag="2")]
2006    pub enable_colors: ::core::option::Option<bool>,
2007}
2008/// Nested message and enum types in `ConsoleConfig`.
2009pub mod console_config {
2010    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2011    #[repr(i32)]
2012    pub enum Output {
2013        Unspecified = 0,
2014        Stdout = 1,
2015        Stderr = 2,
2016    }
2017    impl Output {
2018        /// String value of the enum field names used in the ProtoBuf definition.
2019        ///
2020        /// The values are not transformed in any way and thus are considered stable
2021        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2022        pub fn as_str_name(&self) -> &'static str {
2023            match self {
2024                Output::Unspecified => "OUTPUT_UNSPECIFIED",
2025                Output::Stdout => "OUTPUT_STDOUT",
2026                Output::Stderr => "OUTPUT_STDERR",
2027            }
2028        }
2029    }
2030}
2031/// Configuration for trace packet interception. Used for diverting trace data to
2032/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
2033/// Perfetto SDK.
2034#[derive(Clone, PartialEq, ::prost::Message)]
2035pub struct InterceptorConfig {
2036    /// Matches the name given to RegisterInterceptor().
2037    #[prost(string, optional, tag="1")]
2038    pub name: ::core::option::Option<::prost::alloc::string::String>,
2039    #[prost(message, optional, tag="100")]
2040    pub console_config: ::core::option::Option<ConsoleConfig>,
2041}
2042#[derive(Clone, PartialEq, ::prost::Message)]
2043pub struct AndroidPowerConfig {
2044    #[prost(uint32, optional, tag="1")]
2045    pub battery_poll_ms: ::core::option::Option<u32>,
2046    #[prost(enumeration="android_power_config::BatteryCounters", repeated, packed="false", tag="2")]
2047    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
2048    /// Where available enables per-power-rail measurements.
2049    #[prost(bool, optional, tag="3")]
2050    pub collect_power_rails: ::core::option::Option<bool>,
2051    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
2052    /// Available from Android S.
2053    #[prost(bool, optional, tag="4")]
2054    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
2055    /// Provides a breakdown of time in state for various subsystems.
2056    /// Available from Android U.
2057    #[prost(bool, optional, tag="5")]
2058    pub collect_entity_state_residency: ::core::option::Option<bool>,
2059}
2060/// Nested message and enum types in `AndroidPowerConfig`.
2061pub mod android_power_config {
2062    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2063    #[repr(i32)]
2064    pub enum BatteryCounters {
2065        BatteryCounterUnspecified = 0,
2066        /// Coulomb counter.
2067        BatteryCounterCharge = 1,
2068        /// Charge (%).
2069        BatteryCounterCapacityPercent = 2,
2070        /// Instantaneous current.
2071        BatteryCounterCurrent = 3,
2072        /// Avg current.
2073        BatteryCounterCurrentAvg = 4,
2074        /// Instantaneous voltage.
2075        BatteryCounterVoltage = 5,
2076    }
2077    impl BatteryCounters {
2078        /// String value of the enum field names used in the ProtoBuf definition.
2079        ///
2080        /// The values are not transformed in any way and thus are considered stable
2081        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2082        pub fn as_str_name(&self) -> &'static str {
2083            match self {
2084                BatteryCounters::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
2085                BatteryCounters::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
2086                BatteryCounters::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
2087                BatteryCounters::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
2088                BatteryCounters::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
2089                BatteryCounters::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
2090            }
2091        }
2092    }
2093}
2094/// This enum is obtained by post-processing
2095/// AOSP/frameworks/proto_logging/stats/atoms.proto through
2096/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
2097/// enum value for each proto field defined in the upstream atoms.proto.
2098#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2099#[repr(i32)]
2100pub enum AtomId {
2101    AtomUnspecified = 0,
2102    AtomBleScanStateChanged = 2,
2103    AtomProcessStateChanged = 3,
2104    AtomBleScanResultReceived = 4,
2105    AtomSensorStateChanged = 5,
2106    AtomGpsScanStateChanged = 6,
2107    AtomSyncStateChanged = 7,
2108    AtomScheduledJobStateChanged = 8,
2109    AtomScreenBrightnessChanged = 9,
2110    AtomWakelockStateChanged = 10,
2111    AtomLongPartialWakelockStateChanged = 11,
2112    AtomMobileRadioPowerStateChanged = 12,
2113    AtomWifiRadioPowerStateChanged = 13,
2114    AtomActivityManagerSleepStateChanged = 14,
2115    AtomMemoryFactorStateChanged = 15,
2116    AtomExcessiveCpuUsageReported = 16,
2117    AtomCachedKillReported = 17,
2118    AtomProcessMemoryStatReported = 18,
2119    AtomLauncherEvent = 19,
2120    AtomBatterySaverModeStateChanged = 20,
2121    AtomDeviceIdleModeStateChanged = 21,
2122    AtomDeviceIdlingModeStateChanged = 22,
2123    AtomAudioStateChanged = 23,
2124    AtomMediaCodecStateChanged = 24,
2125    AtomCameraStateChanged = 25,
2126    AtomFlashlightStateChanged = 26,
2127    AtomUidProcessStateChanged = 27,
2128    AtomProcessLifeCycleStateChanged = 28,
2129    AtomScreenStateChanged = 29,
2130    AtomBatteryLevelChanged = 30,
2131    AtomChargingStateChanged = 31,
2132    AtomPluggedStateChanged = 32,
2133    AtomInteractiveStateChanged = 33,
2134    AtomTouchEventReported = 34,
2135    AtomWakeupAlarmOccurred = 35,
2136    AtomKernelWakeupReported = 36,
2137    AtomWifiLockStateChanged = 37,
2138    AtomWifiSignalStrengthChanged = 38,
2139    AtomWifiScanStateChanged = 39,
2140    AtomPhoneSignalStrengthChanged = 40,
2141    AtomSettingChanged = 41,
2142    AtomActivityForegroundStateChanged = 42,
2143    AtomIsolatedUidChanged = 43,
2144    AtomPacketWakeupOccurred = 44,
2145    AtomWallClockTimeShifted = 45,
2146    AtomAnomalyDetected = 46,
2147    AtomAppBreadcrumbReported = 47,
2148    AtomAppStartOccurred = 48,
2149    AtomAppStartCanceled = 49,
2150    AtomAppStartFullyDrawn = 50,
2151    AtomLmkKillOccurred = 51,
2152    AtomPictureInPictureStateChanged = 52,
2153    AtomWifiMulticastLockStateChanged = 53,
2154    AtomAppStartMemoryStateCaptured = 55,
2155    AtomShutdownSequenceReported = 56,
2156    AtomBootSequenceReported = 57,
2157    AtomOverlayStateChanged = 59,
2158    AtomForegroundServiceStateChanged = 60,
2159    AtomCallStateChanged = 61,
2160    AtomKeyguardStateChanged = 62,
2161    AtomKeyguardBouncerStateChanged = 63,
2162    AtomKeyguardBouncerPasswordEntered = 64,
2163    AtomAppDied = 65,
2164    AtomResourceConfigurationChanged = 66,
2165    AtomBluetoothEnabledStateChanged = 67,
2166    AtomBluetoothConnectionStateChanged = 68,
2167    AtomGpsSignalQualityChanged = 69,
2168    AtomUsbConnectorStateChanged = 70,
2169    AtomSpeakerImpedanceReported = 71,
2170    AtomHardwareFailed = 72,
2171    AtomPhysicalDropDetected = 73,
2172    AtomChargeCyclesReported = 74,
2173    AtomMobileConnectionStateChanged = 75,
2174    AtomMobileRadioTechnologyChanged = 76,
2175    AtomUsbDeviceAttached = 77,
2176    AtomAppCrashOccurred = 78,
2177    AtomAnrOccurred = 79,
2178    AtomWtfOccurred = 80,
2179    AtomLowMemReported = 81,
2180    AtomGenericAtom = 82,
2181    AtomVibratorStateChanged = 84,
2182    AtomDeferredJobStatsReported = 85,
2183    AtomThermalThrottling = 86,
2184    AtomBiometricAcquired = 87,
2185    AtomBiometricAuthenticated = 88,
2186    AtomBiometricErrorOccurred = 89,
2187    AtomUiEventReported = 90,
2188    AtomBatteryHealthSnapshot = 91,
2189    AtomSlowIo = 92,
2190    AtomBatteryCausedShutdown = 93,
2191    AtomPhoneServiceStateChanged = 94,
2192    AtomPhoneStateChanged = 95,
2193    AtomUserRestrictionChanged = 96,
2194    AtomSettingsUiChanged = 97,
2195    AtomConnectivityStateChanged = 98,
2196    AtomServiceStateChanged = 99,
2197    AtomServiceLaunchReported = 100,
2198    AtomFlagFlipUpdateOccurred = 101,
2199    AtomBinaryPushStateChanged = 102,
2200    AtomDevicePolicyEvent = 103,
2201    AtomDocsUiFileOpCanceled = 104,
2202    AtomDocsUiFileOpCopyMoveModeReported = 105,
2203    AtomDocsUiFileOpFailure = 106,
2204    AtomDocsUiProviderFileOp = 107,
2205    AtomDocsUiInvalidScopedAccessRequest = 108,
2206    AtomDocsUiLaunchReported = 109,
2207    AtomDocsUiRootVisited = 110,
2208    AtomDocsUiStartupMs = 111,
2209    AtomDocsUiUserActionReported = 112,
2210    AtomWifiEnabledStateChanged = 113,
2211    AtomWifiRunningStateChanged = 114,
2212    AtomAppCompacted = 115,
2213    AtomNetworkDnsEventReported = 116,
2214    AtomDocsUiPickerLaunchedFromReported = 117,
2215    AtomDocsUiPickResultReported = 118,
2216    AtomDocsUiSearchModeReported = 119,
2217    AtomDocsUiSearchTypeReported = 120,
2218    AtomDataStallEvent = 121,
2219    AtomRescuePartyResetReported = 122,
2220    AtomSignedConfigReported = 123,
2221    AtomGnssNiEventReported = 124,
2222    AtomBluetoothLinkLayerConnectionEvent = 125,
2223    AtomBluetoothAclConnectionStateChanged = 126,
2224    AtomBluetoothScoConnectionStateChanged = 127,
2225    AtomAppDowngraded = 128,
2226    AtomAppOptimizedAfterDowngraded = 129,
2227    AtomLowStorageStateChanged = 130,
2228    AtomGnssNfwNotificationReported = 131,
2229    AtomGnssConfigurationReported = 132,
2230    AtomUsbPortOverheatEventReported = 133,
2231    AtomNfcErrorOccurred = 134,
2232    AtomNfcStateChanged = 135,
2233    AtomNfcBeamOccurred = 136,
2234    AtomNfcCardemulationOccurred = 137,
2235    AtomNfcTagOccurred = 138,
2236    AtomNfcHceTransactionOccurred = 139,
2237    AtomSeStateChanged = 140,
2238    AtomSeOmapiReported = 141,
2239    AtomBroadcastDispatchLatencyReported = 142,
2240    AtomAttentionManagerServiceResultReported = 143,
2241    AtomAdbConnectionChanged = 144,
2242    AtomSpeechDspStatReported = 145,
2243    AtomUsbContaminantReported = 146,
2244    AtomWatchdogRollbackOccurred = 147,
2245    AtomBiometricSystemHealthIssueDetected = 148,
2246    AtomBubbleUiChanged = 149,
2247    AtomScheduledJobConstraintChanged = 150,
2248    AtomBluetoothActiveDeviceChanged = 151,
2249    AtomBluetoothA2dpPlaybackStateChanged = 152,
2250    AtomBluetoothA2dpCodecConfigChanged = 153,
2251    AtomBluetoothA2dpCodecCapabilityChanged = 154,
2252    AtomBluetoothA2dpAudioUnderrunReported = 155,
2253    AtomBluetoothA2dpAudioOverrunReported = 156,
2254    AtomBluetoothDeviceRssiReported = 157,
2255    AtomBluetoothDeviceFailedContactCounterReported = 158,
2256    AtomBluetoothDeviceTxPowerLevelReported = 159,
2257    AtomBluetoothHciTimeoutReported = 160,
2258    AtomBluetoothQualityReportReported = 161,
2259    AtomBluetoothDeviceInfoReported = 162,
2260    AtomBluetoothRemoteVersionInfoReported = 163,
2261    AtomBluetoothSdpAttributeReported = 164,
2262    AtomBluetoothBondStateChanged = 165,
2263    AtomBluetoothClassicPairingEventReported = 166,
2264    AtomBluetoothSmpPairingEventReported = 167,
2265    AtomScreenTimeoutExtensionReported = 168,
2266    AtomProcessStartTime = 169,
2267    AtomPermissionGrantRequestResultReported = 170,
2268    AtomBluetoothSocketConnectionStateChanged = 171,
2269    AtomDeviceIdentifierAccessDenied = 172,
2270    AtomBubbleDeveloperErrorReported = 173,
2271    AtomAssistGestureStageReported = 174,
2272    AtomAssistGestureFeedbackReported = 175,
2273    AtomAssistGestureProgressReported = 176,
2274    AtomTouchGestureClassified = 177,
2275    AtomHiddenApiUsed = 178,
2276    AtomStyleUiChanged = 179,
2277    AtomPrivacyIndicatorsInteracted = 180,
2278    AtomAppInstallOnExternalStorageReported = 181,
2279    AtomNetworkStackReported = 182,
2280    AtomAppMovedStorageReported = 183,
2281    AtomBiometricEnrolled = 184,
2282    AtomSystemServerWatchdogOccurred = 185,
2283    AtomTombStoneOccurred = 186,
2284    AtomBluetoothClassOfDeviceReported = 187,
2285    AtomIntelligenceEventReported = 188,
2286    AtomThermalThrottlingSeverityStateChanged = 189,
2287    AtomRoleRequestResultReported = 190,
2288    AtomMediametricsAudiopolicyReported = 191,
2289    AtomMediametricsAudiorecordReported = 192,
2290    AtomMediametricsAudiothreadReported = 193,
2291    AtomMediametricsAudiotrackReported = 194,
2292    AtomMediametricsCodecReported = 195,
2293    AtomMediametricsDrmWidevineReported = 196,
2294    AtomMediametricsExtractorReported = 197,
2295    AtomMediametricsMediadrmReported = 198,
2296    AtomMediametricsNuplayerReported = 199,
2297    AtomMediametricsRecorderReported = 200,
2298    AtomMediametricsDrmmanagerReported = 201,
2299    AtomCarPowerStateChanged = 203,
2300    AtomGarageModeInfo = 204,
2301    AtomTestAtomReported = 205,
2302    AtomContentCaptureCallerMismatchReported = 206,
2303    AtomContentCaptureServiceEvents = 207,
2304    AtomContentCaptureSessionEvents = 208,
2305    AtomContentCaptureFlushed = 209,
2306    AtomLocationManagerApiUsageReported = 210,
2307    AtomReviewPermissionsFragmentResultReported = 211,
2308    AtomRuntimePermissionsUpgradeResult = 212,
2309    AtomGrantPermissionsActivityButtonActions = 213,
2310    AtomLocationAccessCheckNotificationAction = 214,
2311    AtomAppPermissionFragmentActionReported = 215,
2312    AtomAppPermissionFragmentViewed = 216,
2313    AtomAppPermissionsFragmentViewed = 217,
2314    AtomPermissionAppsFragmentViewed = 218,
2315    AtomTextSelectionEvent = 219,
2316    AtomTextLinkifyEvent = 220,
2317    AtomConversationActionsEvent = 221,
2318    AtomLanguageDetectionEvent = 222,
2319    AtomExclusionRectStateChanged = 223,
2320    AtomBackGestureReportedReported = 224,
2321    AtomUpdateEngineUpdateAttemptReported = 225,
2322    AtomUpdateEngineSuccessfulUpdateReported = 226,
2323    AtomCameraActionEvent = 227,
2324    AtomAppCompatibilityChangeReported = 228,
2325    AtomPerfettoUploaded = 229,
2326    AtomVmsClientConnectionStateChanged = 230,
2327    AtomMediaProviderScanOccurred = 233,
2328    AtomMediaContentDeleted = 234,
2329    AtomMediaProviderPermissionRequested = 235,
2330    AtomMediaProviderSchemaChanged = 236,
2331    AtomMediaProviderIdleMaintenanceFinished = 237,
2332    AtomRebootEscrowRecoveryReported = 238,
2333    AtomBootTimeEventDurationReported = 239,
2334    AtomBootTimeEventElapsedTimeReported = 240,
2335    AtomBootTimeEventUtcTimeReported = 241,
2336    AtomBootTimeEventErrorCodeReported = 242,
2337    AtomUserspaceRebootReported = 243,
2338    AtomNotificationReported = 244,
2339    AtomNotificationPanelReported = 245,
2340    AtomNotificationChannelModified = 246,
2341    AtomIntegrityCheckResultReported = 247,
2342    AtomIntegrityRulesPushed = 248,
2343    AtomCbMessageReported = 249,
2344    AtomCbMessageError = 250,
2345    AtomWifiHealthStatReported = 251,
2346    AtomWifiFailureStatReported = 252,
2347    AtomWifiConnectionResultReported = 253,
2348    AtomAppFreezeChanged = 254,
2349    AtomSnapshotMergeReported = 255,
2350    AtomForegroundServiceAppOpSessionEnded = 256,
2351    AtomDisplayJankReported = 257,
2352    AtomAppStandbyBucketChanged = 258,
2353    AtomSharesheetStarted = 259,
2354    AtomRankingSelected = 260,
2355    AtomTvsettingsUiInteracted = 261,
2356    AtomLauncherSnapshot = 262,
2357    AtomPackageInstallerV2Reported = 263,
2358    AtomUserLifecycleJourneyReported = 264,
2359    AtomUserLifecycleEventOccurred = 265,
2360    AtomAccessibilityShortcutReported = 266,
2361    AtomAccessibilityServiceReported = 267,
2362    AtomDocsUiDragAndDropReported = 268,
2363    AtomAppUsageEventOccurred = 269,
2364    AtomAutoRevokeNotificationClicked = 270,
2365    AtomAutoRevokeFragmentAppViewed = 271,
2366    AtomAutoRevokedAppInteraction = 272,
2367    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
2368    AtomEvsUsageStatsReported = 274,
2369    AtomAudioPowerUsageDataReported = 275,
2370    AtomTvTunerStateChanged = 276,
2371    AtomMediaoutputOpSwitchReported = 277,
2372    AtomCbMessageFiltered = 278,
2373    AtomTvTunerDvrStatus = 279,
2374    AtomTvCasSessionOpenStatus = 280,
2375    AtomAssistantInvocationReported = 281,
2376    AtomDisplayWakeReported = 282,
2377    AtomCarUserHalModifyUserRequestReported = 283,
2378    AtomCarUserHalModifyUserResponseReported = 284,
2379    AtomCarUserHalPostSwitchResponseReported = 285,
2380    AtomCarUserHalInitialUserInfoRequestReported = 286,
2381    AtomCarUserHalInitialUserInfoResponseReported = 287,
2382    AtomCarUserHalUserAssociationRequestReported = 288,
2383    AtomCarUserHalSetUserAssociationResponseReported = 289,
2384    AtomNetworkIpProvisioningReported = 290,
2385    AtomNetworkDhcpRenewReported = 291,
2386    AtomNetworkValidationReported = 292,
2387    AtomNetworkStackQuirkReported = 293,
2388    AtomMediametricsAudiorecorddeviceusageReported = 294,
2389    AtomMediametricsAudiothreaddeviceusageReported = 295,
2390    AtomMediametricsAudiotrackdeviceusageReported = 296,
2391    AtomMediametricsAudiodeviceconnectionReported = 297,
2392    AtomBlobCommitted = 298,
2393    AtomBlobLeased = 299,
2394    AtomBlobOpened = 300,
2395    AtomContactsProviderStatusReported = 301,
2396    AtomKeystoreKeyEventReported = 302,
2397    AtomNetworkTetheringReported = 303,
2398    AtomImeTouchReported = 304,
2399    AtomUiInteractionFrameInfoReported = 305,
2400    AtomUiActionLatencyReported = 306,
2401    AtomWifiDisconnectReported = 307,
2402    AtomWifiConnectionStateChanged = 308,
2403    AtomHdmiCecActiveSourceChanged = 309,
2404    AtomHdmiCecMessageReported = 310,
2405    AtomAirplaneMode = 311,
2406    AtomModemRestart = 312,
2407    AtomCarrierIdMismatchReported = 313,
2408    AtomCarrierIdTableUpdated = 314,
2409    AtomDataStallRecoveryReported = 315,
2410    AtomMediametricsMediaparserReported = 316,
2411    AtomTlsHandshakeReported = 317,
2412    AtomTextClassifierApiUsageReported = 318,
2413    AtomCarWatchdogKillStatsReported = 319,
2414    AtomMediametricsPlaybackReported = 320,
2415    AtomMediaNetworkInfoChanged = 321,
2416    AtomMediaPlaybackStateChanged = 322,
2417    AtomMediaPlaybackErrorReported = 323,
2418    AtomMediaPlaybackTrackChanged = 324,
2419    AtomWifiScanReported = 325,
2420    AtomWifiPnoScanReported = 326,
2421    AtomTifTuneChanged = 327,
2422    AtomAutoRotateReported = 328,
2423    AtomPerfettoTrigger = 329,
2424    AtomTranscodingData = 330,
2425    AtomImsServiceEntitlementUpdated = 331,
2426    AtomDeviceRotated = 333,
2427    AtomSimSpecificSettingsRestored = 334,
2428    AtomTextClassifierDownloadReported = 335,
2429    AtomPinStorageEvent = 336,
2430    AtomFaceDownReported = 337,
2431    AtomBluetoothHalCrashReasonReported = 338,
2432    AtomRebootEscrowPreparationReported = 339,
2433    AtomRebootEscrowLskfCaptureReported = 340,
2434    AtomRebootEscrowRebootReported = 341,
2435    AtomBinderLatencyReported = 342,
2436    AtomMediametricsAaudiostreamReported = 343,
2437    AtomMediaTranscodingSessionEnded = 344,
2438    AtomMagnificationUsageReported = 345,
2439    AtomMagnificationModeWithImeOnReported = 346,
2440    AtomAppSearchCallStatsReported = 347,
2441    AtomAppSearchPutDocumentStatsReported = 348,
2442    AtomDeviceControlChanged = 349,
2443    AtomDeviceStateChanged = 350,
2444    AtomInputdeviceRegistered = 351,
2445    AtomSmartspaceCardReported = 352,
2446    AtomAuthPromptAuthenticateInvoked = 353,
2447    AtomAuthManagerCanAuthenticateInvoked = 354,
2448    AtomAuthEnrollActionInvoked = 355,
2449    AtomAuthDeprecatedApiUsed = 356,
2450    AtomUnattendedRebootOccurred = 357,
2451    AtomLongRebootBlockingReported = 358,
2452    AtomLocationTimeZoneProviderStateChanged = 359,
2453    AtomFdtrackEventOccurred = 364,
2454    AtomTimeoutAutoExtendedReported = 365,
2455    AtomAlarmBatchDelivered = 367,
2456    AtomAlarmScheduled = 368,
2457    AtomCarWatchdogIoOveruseStatsReported = 369,
2458    AtomUserLevelHibernationStateChanged = 370,
2459    AtomAppSearchInitializeStatsReported = 371,
2460    AtomAppSearchQueryStatsReported = 372,
2461    AtomAppProcessDied = 373,
2462    AtomNetworkIpReachabilityMonitorReported = 374,
2463    AtomSlowInputEventReported = 375,
2464    AtomAnrOccurredProcessingStarted = 376,
2465    AtomAppSearchRemoveStatsReported = 377,
2466    AtomMediaCodecReported = 378,
2467    AtomPermissionUsageFragmentInteraction = 379,
2468    AtomPermissionDetailsInteraction = 380,
2469    AtomPrivacySensorToggleInteraction = 381,
2470    AtomPrivacyToggleDialogInteraction = 382,
2471    AtomAppSearchOptimizeStatsReported = 383,
2472    AtomNonA11yToolServiceWarningReport = 384,
2473    AtomAppCompatStateChanged = 386,
2474    AtomSizeCompatRestartButtonEventReported = 387,
2475    AtomSplitscreenUiChanged = 388,
2476    AtomNetworkDnsHandshakeReported = 389,
2477    AtomBluetoothCodePathCounter = 390,
2478    AtomBluetoothLeBatchScanReportDelay = 392,
2479    AtomAccessibilityFloatingMenuUiChanged = 393,
2480    AtomNeuralnetworksCompilationCompleted = 394,
2481    AtomNeuralnetworksExecutionCompleted = 395,
2482    AtomNeuralnetworksCompilationFailed = 396,
2483    AtomNeuralnetworksExecutionFailed = 397,
2484    AtomContextHubBooted = 398,
2485    AtomContextHubRestarted = 399,
2486    AtomContextHubLoadedNanoappSnapshotReported = 400,
2487    AtomChreCodeDownloadTransacted = 401,
2488    AtomUwbSessionInited = 402,
2489    AtomUwbSessionClosed = 403,
2490    AtomUwbFirstRangingReceived = 404,
2491    AtomUwbRangingMeasurementReceived = 405,
2492    AtomTextClassifierDownloadWorkScheduled = 406,
2493    AtomTextClassifierDownloadWorkCompleted = 407,
2494    AtomClipboardCleared = 408,
2495    AtomVmCreationRequested = 409,
2496    AtomNearbyDeviceScanStateChanged = 410,
2497    AtomApplicationLocalesChanged = 412,
2498    AtomMediametricsAudiotrackstatusReported = 413,
2499    AtomFoldStateDurationReported = 414,
2500    AtomLocationTimeZoneProviderControllerStateChanged = 415,
2501    AtomDisplayHbmStateChanged = 416,
2502    AtomDisplayHbmBrightnessChanged = 417,
2503    AtomPersistentUriPermissionsFlushed = 418,
2504    AtomEarlyBootCompOsArtifactsCheckReported = 419,
2505    AtomVbmetaDigestReported = 420,
2506    AtomApexInfoGathered = 421,
2507    AtomPvmInfoGathered = 422,
2508    AtomWearSettingsUiInteracted = 423,
2509    AtomTracingServiceReportEvent = 424,
2510    AtomMediametricsAudiorecordstatusReported = 425,
2511    AtomLauncherLatency = 426,
2512    AtomDropboxEntryDropped = 427,
2513    AtomWifiP2pConnectionReported = 428,
2514    AtomGameStateChanged = 429,
2515    AtomHotwordDetectorCreateRequested = 430,
2516    AtomHotwordDetectionServiceInitResultReported = 431,
2517    AtomHotwordDetectionServiceRestarted = 432,
2518    AtomHotwordDetectorKeyphraseTriggered = 433,
2519    AtomHotwordDetectorEvents = 434,
2520    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
2521    AtomContactsIndexerUpdateStatsReported = 440,
2522    AtomAppBackgroundRestrictionsInfo = 441,
2523    AtomMmsSmsProviderGetThreadIdFailed = 442,
2524    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
2525    AtomPermissionReminderNotificationInteracted = 444,
2526    AtomRecentPermissionDecisionsInteracted = 445,
2527    AtomGnssPsdsDownloadReported = 446,
2528    AtomLeAudioConnectionSessionReported = 447,
2529    AtomLeAudioBroadcastSessionReported = 448,
2530    AtomDreamUiEventReported = 449,
2531    AtomTaskManagerEventReported = 450,
2532    AtomCdmAssociationAction = 451,
2533    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
2534    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
2535    AtomAccessibilityTextReadingOptionsChanged = 454,
2536    AtomWifiSetupFailureCrashReported = 455,
2537    AtomUwbDeviceErrorReported = 456,
2538    AtomIsolatedCompilationScheduled = 457,
2539    AtomIsolatedCompilationEnded = 458,
2540    AtomOnsOpportunisticEsimProvisioningComplete = 459,
2541    AtomSystemServerPreWatchdogOccurred = 460,
2542    AtomTelephonyAnomalyDetected = 461,
2543    AtomLetterboxPositionChanged = 462,
2544    AtomRemoteKeyProvisioningAttempt = 463,
2545    AtomRemoteKeyProvisioningNetworkInfo = 464,
2546    AtomRemoteKeyProvisioningTiming = 465,
2547    AtomMediaoutputOpInteractionReport = 466,
2548    AtomSyncExemptionOccurred = 468,
2549    AtomAutofillPresentationEventReported = 469,
2550    AtomDockStateChanged = 470,
2551    AtomSafetySourceStateCollected = 471,
2552    AtomSafetyCenterSystemEventReported = 472,
2553    AtomSafetyCenterInteractionReported = 473,
2554    AtomSettingsProviderSettingChanged = 474,
2555    AtomBroadcastDeliveryEventReported = 475,
2556    AtomServiceRequestEventReported = 476,
2557    AtomProviderAcquisitionEventReported = 477,
2558    AtomBluetoothDeviceNameReported = 478,
2559    AtomCbConfigUpdated = 479,
2560    AtomCbModuleErrorReported = 480,
2561    AtomCbServiceFeatureChanged = 481,
2562    AtomCbReceiverFeatureChanged = 482,
2563    AtomPrivacySignalNotificationInteraction = 484,
2564    AtomPrivacySignalIssueCardInteraction = 485,
2565    AtomPrivacySignalsJobFailure = 486,
2566    AtomVibrationReported = 487,
2567    AtomUwbRangingStart = 489,
2568    AtomAppCompactedV2 = 491,
2569    AtomDisplayBrightnessChanged = 494,
2570    AtomActivityActionBlocked = 495,
2571    AtomNetworkDnsServerSupportReported = 504,
2572    AtomVmBooted = 505,
2573    AtomVmExited = 506,
2574    AtomAmbientBrightnessStatsReported = 507,
2575    AtomMediametricsSpatializercapabilitiesReported = 508,
2576    AtomMediametricsSpatializerdeviceenabledReported = 509,
2577    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
2578    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
2579    AtomHearingAidInfoReported = 513,
2580    AtomDeviceWideJobConstraintChanged = 514,
2581    AtomAmbientModeChanged = 515,
2582    AtomAnrLatencyReported = 516,
2583    AtomResourceApiInfo = 517,
2584    AtomSystemDefaultNetworkChanged = 518,
2585    AtomIwlanSetupDataCallResultReported = 519,
2586    AtomIwlanPdnDisconnectedReasonReported = 520,
2587    AtomAirplaneModeSessionReported = 521,
2588    AtomVmCpuStatusReported = 522,
2589    AtomVmMemStatusReported = 523,
2590    AtomPackageInstallationSessionReported = 524,
2591    AtomDefaultNetworkRematchInfo = 525,
2592    AtomNetworkSelectionPerformance = 526,
2593    AtomNetworkNsdReported = 527,
2594    AtomBluetoothDisconnectionReasonReported = 529,
2595    AtomBluetoothLocalVersionsReported = 530,
2596    AtomBluetoothRemoteSupportedFeaturesReported = 531,
2597    AtomBluetoothLocalSupportedFeaturesReported = 532,
2598    AtomBluetoothGattAppInfo = 533,
2599    AtomBrightnessConfigurationUpdated = 534,
2600    AtomWearMediaOutputSwitcherLaunched = 538,
2601    AtomWearMediaOutputSwitcherFinished = 539,
2602    AtomWearMediaOutputSwitcherConnectionReported = 540,
2603    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
2604    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
2605    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
2606    AtomPackageManagerSnapshotReported = 544,
2607    AtomPackageManagerAppsFilterCacheBuildReported = 545,
2608    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
2609    AtomLauncherImpressionEvent = 547,
2610    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
2611    AtomWsWatchFaceEdited = 551,
2612    AtomWsWatchFaceFavoriteActionReported = 552,
2613    AtomWsWatchFaceSetActionReported = 553,
2614    AtomPackageUninstallationReported = 554,
2615    AtomGameModeChanged = 555,
2616    AtomGameModeConfigurationChanged = 556,
2617    AtomBedtimeModeStateChanged = 557,
2618    AtomNetworkSliceSessionEnded = 558,
2619    AtomNetworkSliceDailyDataUsageReported = 559,
2620    AtomNfcTagTypeOccurred = 560,
2621    AtomNfcAidConflictOccurred = 561,
2622    AtomNfcReaderConflictOccurred = 562,
2623    AtomWsTileListChanged = 563,
2624    AtomGetTypeAccessedWithoutPermission = 564,
2625    AtomMobileBundledAppInfoGathered = 566,
2626    AtomWsWatchFaceComplicationSetChanged = 567,
2627    AtomMediaDrmCreated = 568,
2628    AtomMediaDrmErrored = 569,
2629    AtomMediaDrmSessionOpened = 570,
2630    AtomMediaDrmSessionClosed = 571,
2631    AtomUserSelectedResolution = 572,
2632    AtomUnsafeIntentEventReported = 573,
2633    AtomPerformanceHintSessionReported = 574,
2634    AtomMediametricsMidiDeviceCloseReported = 576,
2635    AtomBiometricTouchReported = 577,
2636    AtomHotwordAudioEgressEventReported = 578,
2637    AtomLocationEnabledStateChanged = 580,
2638    AtomImeRequestFinished = 581,
2639    AtomUsbComplianceWarningsReported = 582,
2640    AtomAppSupportedLocalesChanged = 583,
2641    AtomMediaProviderVolumeRecoveryReported = 586,
2642    AtomBiometricPropertiesCollected = 587,
2643    AtomKernelWakeupAttributed = 588,
2644    AtomScreenStateChangedV2 = 589,
2645    AtomWsBackupActionReported = 590,
2646    AtomWsRestoreActionReported = 591,
2647    AtomDeviceLogAccessEventReported = 592,
2648    AtomMediaSessionUpdated = 594,
2649    AtomWearOobeStateChanged = 595,
2650    AtomWsNotificationUpdated = 596,
2651    AtomNetworkValidationFailureStatsDailyReported = 601,
2652    AtomWsComplicationTapped = 602,
2653    AtomWsNotificationBlocking = 780,
2654    AtomWsNotificationBridgemodeUpdated = 822,
2655    AtomWsNotificationDismissalActioned = 823,
2656    AtomWsNotificationActioned = 824,
2657    AtomWsNotificationLatency = 880,
2658    AtomWifiBytesTransfer = 10000,
2659    AtomWifiBytesTransferByFgBg = 10001,
2660    AtomMobileBytesTransfer = 10002,
2661    AtomMobileBytesTransferByFgBg = 10003,
2662    AtomBluetoothBytesTransfer = 10006,
2663    AtomKernelWakelock = 10004,
2664    AtomSubsystemSleepState = 10005,
2665    AtomCpuTimePerUid = 10009,
2666    AtomCpuTimePerUidFreq = 10010,
2667    AtomWifiActivityInfo = 10011,
2668    AtomModemActivityInfo = 10012,
2669    AtomBluetoothActivityInfo = 10007,
2670    AtomProcessMemoryState = 10013,
2671    AtomSystemElapsedRealtime = 10014,
2672    AtomSystemUptime = 10015,
2673    AtomCpuActiveTime = 10016,
2674    AtomCpuClusterTime = 10017,
2675    AtomDiskSpace = 10018,
2676    AtomRemainingBatteryCapacity = 10019,
2677    AtomFullBatteryCapacity = 10020,
2678    AtomTemperature = 10021,
2679    AtomBinderCalls = 10022,
2680    AtomBinderCallsExceptions = 10023,
2681    AtomLooperStats = 10024,
2682    AtomDiskStats = 10025,
2683    AtomDirectoryUsage = 10026,
2684    AtomAppSize = 10027,
2685    AtomCategorySize = 10028,
2686    AtomProcStats = 10029,
2687    AtomBatteryVoltage = 10030,
2688    AtomNumFingerprintsEnrolled = 10031,
2689    AtomDiskIo = 10032,
2690    AtomPowerProfile = 10033,
2691    AtomProcStatsPkgProc = 10034,
2692    AtomProcessCpuTime = 10035,
2693    AtomCpuTimePerThreadFreq = 10037,
2694    AtomOnDevicePowerMeasurement = 10038,
2695    AtomDeviceCalculatedPowerUse = 10039,
2696    AtomProcessMemoryHighWaterMark = 10042,
2697    AtomBatteryLevel = 10043,
2698    AtomBuildInformation = 10044,
2699    AtomBatteryCycleCount = 10045,
2700    AtomDebugElapsedClock = 10046,
2701    AtomDebugFailingElapsedClock = 10047,
2702    AtomNumFacesEnrolled = 10048,
2703    AtomRoleHolder = 10049,
2704    AtomDangerousPermissionState = 10050,
2705    AtomTrainInfo = 10051,
2706    AtomTimeZoneDataInfo = 10052,
2707    AtomExternalStorageInfo = 10053,
2708    AtomGpuStatsGlobalInfo = 10054,
2709    AtomGpuStatsAppInfo = 10055,
2710    AtomSystemIonHeapSize = 10056,
2711    AtomAppsOnExternalStorageInfo = 10057,
2712    AtomFaceSettings = 10058,
2713    AtomCoolingDevice = 10059,
2714    AtomAppOps = 10060,
2715    AtomProcessSystemIonHeapSize = 10061,
2716    AtomSurfaceflingerStatsGlobalInfo = 10062,
2717    AtomSurfaceflingerStatsLayerInfo = 10063,
2718    AtomProcessMemorySnapshot = 10064,
2719    AtomVmsClientStats = 10065,
2720    AtomNotificationRemoteViews = 10066,
2721    AtomDangerousPermissionStateSampled = 10067,
2722    AtomGraphicsStats = 10068,
2723    AtomRuntimeAppOpAccess = 10069,
2724    AtomIonHeapSize = 10070,
2725    AtomPackageNotificationPreferences = 10071,
2726    AtomPackageNotificationChannelPreferences = 10072,
2727    AtomPackageNotificationChannelGroupPreferences = 10073,
2728    AtomGnssStats = 10074,
2729    AtomAttributedAppOps = 10075,
2730    AtomVoiceCallSession = 10076,
2731    AtomVoiceCallRatUsage = 10077,
2732    AtomSimSlotState = 10078,
2733    AtomSupportedRadioAccessFamily = 10079,
2734    AtomSettingSnapshot = 10080,
2735    AtomBlobInfo = 10081,
2736    AtomDataUsageBytesTransfer = 10082,
2737    AtomBytesTransferByTagAndMetered = 10083,
2738    AtomDndModeRule = 10084,
2739    AtomGeneralExternalStorageAccessStats = 10085,
2740    AtomIncomingSms = 10086,
2741    AtomOutgoingSms = 10087,
2742    AtomCarrierIdTableVersion = 10088,
2743    AtomDataCallSession = 10089,
2744    AtomCellularServiceState = 10090,
2745    AtomCellularDataServiceSwitch = 10091,
2746    AtomSystemMemory = 10092,
2747    AtomImsRegistrationTermination = 10093,
2748    AtomImsRegistrationStats = 10094,
2749    AtomCpuTimePerClusterFreq = 10095,
2750    AtomCpuCyclesPerUidCluster = 10096,
2751    AtomDeviceRotatedData = 10097,
2752    AtomCpuCyclesPerThreadGroupCluster = 10098,
2753    AtomMediaDrmActivityInfo = 10099,
2754    AtomOemManagedBytesTransfer = 10100,
2755    AtomGnssPowerStats = 10101,
2756    AtomTimeZoneDetectorState = 10102,
2757    AtomKeystore2StorageStats = 10103,
2758    AtomRkpPoolStats = 10104,
2759    AtomProcessDmabufMemory = 10105,
2760    AtomPendingAlarmInfo = 10106,
2761    AtomUserLevelHibernatedApps = 10107,
2762    AtomLauncherLayoutSnapshot = 10108,
2763    AtomGlobalHibernatedApps = 10109,
2764    AtomInputEventLatencySketch = 10110,
2765    AtomBatteryUsageStatsBeforeReset = 10111,
2766    AtomBatteryUsageStatsSinceReset = 10112,
2767    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
2768    AtomInstalledIncrementalPackage = 10114,
2769    AtomTelephonyNetworkRequests = 10115,
2770    AtomAppSearchStorageInfo = 10116,
2771    AtomVmstat = 10117,
2772    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
2773    AtomKeystore2KeyCreationWithAuthInfo = 10119,
2774    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
2775    AtomKeystore2AtomWithOverflow = 10121,
2776    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
2777    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
2778    AtomRkpErrorStats = 10124,
2779    AtomKeystore2CrashStats = 10125,
2780    AtomVendorApexInfo = 10126,
2781    AtomAccessibilityShortcutStats = 10127,
2782    AtomAccessibilityFloatingMenuStats = 10128,
2783    AtomDataUsageBytesTransferV2 = 10129,
2784    AtomMediaCapabilities = 10130,
2785    AtomCarWatchdogSystemIoUsageSummary = 10131,
2786    AtomCarWatchdogUidIoUsageSummary = 10132,
2787    AtomImsRegistrationFeatureTagStats = 10133,
2788    AtomRcsClientProvisioningStats = 10134,
2789    AtomRcsAcsProvisioningStats = 10135,
2790    AtomSipDelegateStats = 10136,
2791    AtomSipTransportFeatureTagStats = 10137,
2792    AtomSipMessageResponse = 10138,
2793    AtomSipTransportSession = 10139,
2794    AtomImsDedicatedBearerListenerEvent = 10140,
2795    AtomImsDedicatedBearerEvent = 10141,
2796    AtomImsRegistrationServiceDescStats = 10142,
2797    AtomUceEventStats = 10143,
2798    AtomPresenceNotifyEvent = 10144,
2799    AtomGbaEvent = 10145,
2800    AtomPerSimStatus = 10146,
2801    AtomGpuWorkPerUid = 10147,
2802    AtomPersistentUriPermissionsAmountPerPackage = 10148,
2803    AtomSignedPartitionInfo = 10149,
2804    AtomPinnedFileSizesPerPackage = 10150,
2805    AtomPendingIntentsPerPackage = 10151,
2806    AtomUserInfo = 10152,
2807    AtomTelephonyNetworkRequestsV2 = 10153,
2808    AtomDeviceTelephonyProperties = 10154,
2809    AtomRemoteKeyProvisioningErrorCounts = 10155,
2810    AtomSafetyState = 10156,
2811    AtomIncomingMms = 10157,
2812    AtomOutgoingMms = 10158,
2813    AtomMultiUserInfo = 10160,
2814    AtomNetworkBpfMapInfo = 10161,
2815    AtomOutgoingShortCodeSms = 10162,
2816    AtomConnectivityStateSample = 10163,
2817    AtomNetworkSelectionRematchReasonsInfo = 10164,
2818    AtomGameModeInfo = 10165,
2819    AtomGameModeConfiguration = 10166,
2820    AtomGameModeListener = 10167,
2821    AtomNetworkSliceRequestCount = 10168,
2822    AtomWsTileSnapshot = 10169,
2823    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
2824    AtomProcessState = 10171,
2825    AtomProcessAssociation = 10172,
2826    AtomAdpfSystemComponentInfo = 10173,
2827    AtomNotificationMemoryUse = 10174,
2828    AtomHdrCapabilities = 10175,
2829    AtomWsFavouriteWatchFaceListSnapshot = 10176,
2830    AtomAccessibilityCheckResultReported = 910,
2831    AtomAdaptiveAuthUnlockAfterLockReported = 820,
2832    AtomThermalStatusCalled = 772,
2833    AtomThermalHeadroomCalled = 773,
2834    AtomThermalHeadroomThresholdsCalled = 774,
2835    AtomAdpfHintSessionTidCleanup = 839,
2836    AtomThermalHeadroomThresholds = 10201,
2837    AtomAdpfSessionSnapshot = 10218,
2838    AtomJsscriptengineLatencyReported = 483,
2839    AtomAdServicesApiCalled = 435,
2840    AtomAdServicesMesurementReportsUploaded = 436,
2841    AtomMobileDataDownloadFileGroupStatusReported = 490,
2842    AtomMobileDataDownloadDownloadResultReported = 502,
2843    AtomAdServicesSettingsUsageReported = 493,
2844    AtomBackgroundFetchProcessReported = 496,
2845    AtomUpdateCustomAudienceProcessReported = 497,
2846    AtomRunAdBiddingProcessReported = 498,
2847    AtomRunAdScoringProcessReported = 499,
2848    AtomRunAdSelectionProcessReported = 500,
2849    AtomRunAdBiddingPerCaProcessReported = 501,
2850    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
2851    AtomAdServicesMeasurementRegistrations = 512,
2852    AtomAdServicesGetTopicsReported = 535,
2853    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
2854    AtomAdServicesEpochComputationClassifierReported = 537,
2855    AtomAdServicesBackCompatGetTopicsReported = 598,
2856    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
2857    AtomAdServicesMeasurementDebugKeys = 640,
2858    AtomAdServicesErrorReported = 662,
2859    AtomAdServicesBackgroundJobsExecutionReported = 663,
2860    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
2861    AtomAdServicesMeasurementAttribution = 674,
2862    AtomAdServicesMeasurementJobs = 675,
2863    AtomAdServicesMeasurementWipeout = 676,
2864    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
2865    AtomAdServicesEnrollmentDataStored = 697,
2866    AtomAdServicesEnrollmentFileDownloaded = 698,
2867    AtomAdServicesEnrollmentMatched = 699,
2868    AtomAdServicesConsentMigrated = 702,
2869    AtomAdServicesEnrollmentFailed = 714,
2870    AtomAdServicesMeasurementClickVerification = 756,
2871    AtomAdServicesEncryptionKeyFetched = 765,
2872    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
2873    AtomDestinationRegisteredBeacons = 767,
2874    AtomReportInteractionApiCalled = 768,
2875    AtomInteractionReportingTableCleared = 769,
2876    AtomAppManifestConfigHelperCalled = 788,
2877    AtomAdFilteringProcessJoinCaReported = 793,
2878    AtomAdFilteringProcessAdSelectionReported = 794,
2879    AtomAdCounterHistogramUpdaterReported = 795,
2880    AtomSignatureVerification = 807,
2881    AtomKAnonImmediateSignJoinStatusReported = 808,
2882    AtomKAnonBackgroundJobStatusReported = 809,
2883    AtomKAnonInitializeStatusReported = 810,
2884    AtomKAnonSignStatusReported = 811,
2885    AtomKAnonJoinStatusReported = 812,
2886    AtomKAnonKeyAttestationStatusReported = 813,
2887    AtomGetAdSelectionDataApiCalled = 814,
2888    AtomGetAdSelectionDataBuyerInputGenerated = 815,
2889    AtomBackgroundJobSchedulingReported = 834,
2890    AtomTopicsEncryptionEpochComputationReported = 840,
2891    AtomTopicsEncryptionGetTopicsReported = 841,
2892    AtomAdservicesShellCommandCalled = 842,
2893    AtomUpdateSignalsApiCalled = 843,
2894    AtomEncodingJobRun = 844,
2895    AtomEncodingJsFetch = 845,
2896    AtomEncodingJsExecution = 846,
2897    AtomPersistAdSelectionResultCalled = 847,
2898    AtomServerAuctionKeyFetchCalled = 848,
2899    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
2900    AtomAdServicesMeasurementProcessOdpRegistration = 864,
2901    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
2902    AtomSelectAdsFromOutcomesApiCalled = 876,
2903    AtomReportImpressionApiCalled = 877,
2904    AtomAdServicesEnrollmentTransactionStats = 885,
2905    AtomAdServicesCobaltLoggerEventReported = 902,
2906    AtomAdServicesCobaltPeriodicJobEventReported = 903,
2907    AtomUpdateSignalsProcessReported = 905,
2908    AtomTopicsScheduleEpochJobSettingReported = 930,
2909    AtomAiWallpapersButtonPressed = 706,
2910    AtomAiWallpapersTemplateSelected = 707,
2911    AtomAiWallpapersTermSelected = 708,
2912    AtomAiWallpapersWallpaperSet = 709,
2913    AtomAiWallpapersSessionSummary = 710,
2914    AtomApexInstallationRequested = 732,
2915    AtomApexInstallationStaged = 733,
2916    AtomApexInstallationEnded = 734,
2917    AtomAppSearchSetSchemaStatsReported = 385,
2918    AtomAppSearchSchemaMigrationStatsReported = 579,
2919    AtomAppSearchUsageSearchIntentStatsReported = 825,
2920    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
2921    AtomAppSearchAppsIndexerStatsReported = 909,
2922    AtomArtDatumReported = 332,
2923    AtomArtDeviceDatumReported = 550,
2924    AtomArtDatumDeltaReported = 565,
2925    AtomArtDex2oatReported = 929,
2926    AtomArtDeviceStatus = 10205,
2927    AtomBackgroundDexoptJobEnded = 467,
2928    AtomPrerebootDexoptJobEnded = 883,
2929    AtomOdrefreshReported = 366,
2930    AtomOdsignReported = 548,
2931    AtomAutofillUiEventReported = 603,
2932    AtomAutofillFillRequestReported = 604,
2933    AtomAutofillFillResponseReported = 605,
2934    AtomAutofillSaveEventReported = 606,
2935    AtomAutofillSessionCommitted = 607,
2936    AtomAutofillFieldClassificationEventReported = 659,
2937    AtomCarRecentsEventReported = 770,
2938    AtomCarCalmModeEventReported = 797,
2939    AtomCarWakeupFromSuspendReported = 852,
2940    AtomPluginInitialized = 655,
2941    AtomBluetoothHashedDeviceNameReported = 613,
2942    AtomBluetoothL2capCocClientConnection = 614,
2943    AtomBluetoothL2capCocServerConnection = 615,
2944    AtomBluetoothLeSessionConnected = 656,
2945    AtomRestrictedBluetoothDeviceNameReported = 666,
2946    AtomBluetoothProfileConnectionAttempted = 696,
2947    AtomBluetoothContentProfileErrorReported = 781,
2948    AtomBluetoothRfcommConnectionAttempted = 782,
2949    AtomRemoteDeviceInformationWithMetricId = 862,
2950    AtomLeAppScanStateChanged = 870,
2951    AtomLeRadioScanStopped = 871,
2952    AtomLeScanResultReceived = 872,
2953    AtomLeScanAbused = 873,
2954    AtomLeAdvStateChanged = 874,
2955    AtomLeAdvErrorReported = 875,
2956    AtomA2dpSessionReported = 904,
2957    AtomBluetoothCrossLayerEventReported = 916,
2958    AtomBroadcastAudioSessionReported = 927,
2959    AtomBroadcastAudioSyncReported = 928,
2960    AtomBluetoothRfcommConnectionReportedAtClose = 982,
2961    AtomBluetoothLeConnection = 988,
2962    AtomBroadcastSent = 922,
2963    AtomCameraFeatureCombinationQueryEvent = 900,
2964    AtomCertificateTransparencyLogListStateChanged = 934,
2965    AtomCertificateTransparencyLogListUpdateFailed = 972,
2966    AtomDailyKeepaliveInfoReported = 650,
2967    AtomNetworkRequestStateChanged = 779,
2968    AtomTetheringActiveSessionsReported = 925,
2969    AtomNetworkStatsRecorderFileOperated = 783,
2970    AtomCoreNetworkingTerribleErrorOccurred = 979,
2971    AtomApfSessionInfoReported = 777,
2972    AtomIpClientRaInfoReported = 778,
2973    AtomVpnConnectionStateChanged = 850,
2974    AtomVpnConnectionReported = 851,
2975    AtomCpuPolicy = 10199,
2976    AtomCredentialManagerApiCalled = 585,
2977    AtomCredentialManagerInitPhaseReported = 651,
2978    AtomCredentialManagerCandidatePhaseReported = 652,
2979    AtomCredentialManagerFinalPhaseReported = 653,
2980    AtomCredentialManagerTotalReported = 667,
2981    AtomCredentialManagerFinalnouidReported = 668,
2982    AtomCredentialManagerGetReported = 669,
2983    AtomCredentialManagerAuthClickReported = 670,
2984    AtomCredentialManagerApiv2Called = 671,
2985    AtomCronetEngineCreated = 703,
2986    AtomCronetTrafficReported = 704,
2987    AtomCronetEngineBuilderInitialized = 762,
2988    AtomCronetHttpFlagsInitialized = 763,
2989    AtomCronetInitialized = 764,
2990    AtomDesktopModeUiChanged = 818,
2991    AtomDesktopModeSessionTaskUpdate = 819,
2992    AtomDesktopModeTaskSizeUpdated = 935,
2993    AtomDeviceLockCheckInRequestReported = 726,
2994    AtomDeviceLockProvisioningCompleteReported = 727,
2995    AtomDeviceLockKioskAppRequestReported = 728,
2996    AtomDeviceLockCheckInRetryReported = 789,
2997    AtomDeviceLockProvisionFailureReported = 790,
2998    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
2999    AtomDevicePolicyManagementMode = 10216,
3000    AtomDevicePolicyState = 10217,
3001    AtomDisplayModeDirectorVoteChanged = 792,
3002    AtomExternalDisplayStateChanged = 806,
3003    AtomDndStateChanged = 657,
3004    AtomDreamSettingChanged = 705,
3005    AtomDreamSettingSnapshot = 10192,
3006    AtomExpressEventReported = 528,
3007    AtomExpressHistogramSampleReported = 593,
3008    AtomExpressUidEventReported = 644,
3009    AtomExpressUidHistogramSampleReported = 658,
3010    AtomFederatedComputeApiCalled = 712,
3011    AtomFederatedComputeTrainingEventReported = 771,
3012    AtomExampleIteratorNextLatencyReported = 838,
3013    AtomFullScreenIntentLaunched = 631,
3014    AtomBalAllowed = 632,
3015    AtomInTaskActivityStarted = 685,
3016    AtomDeviceOrientationChanged = 906,
3017    AtomCachedAppsHighWatermark = 10189,
3018    AtomStylusPredictionMetricsReported = 718,
3019    AtomUserRiskEventReported = 725,
3020    AtomMediaProjectionStateChanged = 729,
3021    AtomMediaProjectionTargetChanged = 730,
3022    AtomExcessiveBinderProxyCountReported = 853,
3023    AtomProxyBytesTransferByFgBg = 10200,
3024    AtomMobileBytesTransferByProcState = 10204,
3025    AtomBiometricFrrNotification = 817,
3026    AtomSensitiveContentMediaProjectionSession = 830,
3027    AtomSensitiveNotificationAppProtectionSession = 831,
3028    AtomSensitiveNotificationAppProtectionApplied = 832,
3029    AtomSensitiveNotificationRedaction = 833,
3030    AtomSensitiveContentAppProtection = 835,
3031    AtomAppRestrictionStateChanged = 866,
3032    AtomBatteryUsageStatsPerUid = 10209,
3033    AtomPostgcMemorySnapshot = 924,
3034    AtomPowerSaveTempAllowlistChanged = 926,
3035    AtomAppOpAccessTracked = 931,
3036    AtomContentOrFileUriEventReported = 933,
3037    AtomApplicationGrammaticalInflectionChanged = 584,
3038    AtomSystemGrammaticalInflectionChanged = 816,
3039    AtomBatteryHealth = 10220,
3040    AtomHdmiEarcStatusReported = 701,
3041    AtomHdmiSoundbarModeStatusReported = 724,
3042    AtomHealthConnectApiCalled = 616,
3043    AtomHealthConnectUsageStats = 617,
3044    AtomHealthConnectStorageStats = 618,
3045    AtomHealthConnectApiInvoked = 643,
3046    AtomExerciseRouteApiCalled = 654,
3047    AtomHealthConnectExportInvoked = 907,
3048    AtomHealthConnectImportInvoked = 918,
3049    AtomHealthConnectExportImportStatsReported = 919,
3050    AtomHealthConnectUiImpression = 623,
3051    AtomHealthConnectUiInteraction = 624,
3052    AtomHealthConnectAppOpenedReported = 625,
3053    AtomHotwordEgressSizeAtomReported = 761,
3054    AtomIkeSessionTerminated = 678,
3055    AtomIkeLivenessCheckSessionValidated = 760,
3056    AtomNegotiatedSecurityAssociation = 821,
3057    AtomKeyboardConfigured = 682,
3058    AtomKeyboardSystemsEventReported = 683,
3059    AtomInputdeviceUsageReported = 686,
3060    AtomInputEventLatencyReported = 932,
3061    AtomTouchpadUsage = 10191,
3062    AtomKernelOomKillOccurred = 754,
3063    AtomEmergencyStateChanged = 633,
3064    AtomChreSignificantMotionStateChanged = 868,
3065    AtomPopulationDensityProviderLoadingReported = 1002,
3066    AtomDensityBasedCoarseLocationsUsageReported = 1003,
3067    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
3068    AtomMediaCodecReclaimRequestCompleted = 600,
3069    AtomMediaCodecStarted = 641,
3070    AtomMediaCodecStopped = 642,
3071    AtomMediaCodecRendered = 684,
3072    AtomMediaEditingEndedReported = 798,
3073    AtomMteState = 10181,
3074    AtomMicroxrDeviceBootCompleteReported = 901,
3075    AtomNfcObserveModeStateChanged = 855,
3076    AtomNfcFieldChanged = 856,
3077    AtomNfcPollingLoopNotificationReported = 857,
3078    AtomNfcProprietaryCapabilitiesReported = 858,
3079    AtomOndevicepersonalizationApiCalled = 711,
3080    AtomComponentStateChangedReported = 863,
3081    AtomPdfLoadReported = 859,
3082    AtomPdfApiUsageReported = 860,
3083    AtomPdfSearchReported = 861,
3084    AtomPressureStallInformation = 10229,
3085    AtomPermissionRationaleDialogViewed = 645,
3086    AtomPermissionRationaleDialogActionReported = 646,
3087    AtomAppDataSharingUpdatesNotificationInteraction = 647,
3088    AtomAppDataSharingUpdatesFragmentViewed = 648,
3089    AtomAppDataSharingUpdatesFragmentActionReported = 649,
3090    AtomEnhancedConfirmationDialogResultReported = 827,
3091    AtomEnhancedConfirmationRestrictionCleared = 828,
3092    AtomPhotopickerSessionInfoReported = 886,
3093    AtomPhotopickerApiInfoReported = 887,
3094    AtomPhotopickerUiEventLogged = 888,
3095    AtomPhotopickerMediaItemStatusReported = 889,
3096    AtomPhotopickerPreviewInfoLogged = 890,
3097    AtomPhotopickerMenuInteractionLogged = 891,
3098    AtomPhotopickerBannerInteractionLogged = 892,
3099    AtomPhotopickerMediaLibraryInfoLogged = 893,
3100    AtomPhotopickerPageInfoLogged = 894,
3101    AtomPhotopickerMediaGridSyncInfoReported = 895,
3102    AtomPhotopickerAlbumSyncInfoReported = 896,
3103    AtomPhotopickerSearchInfoReported = 897,
3104    AtomSearchDataExtractionDetailsReported = 898,
3105    AtomEmbeddedPhotopickerInfoReported = 899,
3106    AtomAtom9999 = 9999,
3107    AtomAtom99999 = 99999,
3108    AtomScreenOffReported = 776,
3109    AtomScreenTimeoutOverrideReported = 836,
3110    AtomScreenInteractiveSessionReported = 837,
3111    AtomScreenDimReported = 867,
3112    AtomMediaProviderDatabaseRollbackReported = 784,
3113    AtomBackupSetupStatusReported = 785,
3114    AtomRangingSessionConfigured = 993,
3115    AtomRangingSessionStarted = 994,
3116    AtomRangingSessionClosed = 995,
3117    AtomRangingTechnologyStarted = 996,
3118    AtomRangingTechnologyStopped = 997,
3119    AtomRkpdPoolStats = 664,
3120    AtomRkpdClientOperation = 665,
3121    AtomSandboxApiCalled = 488,
3122    AtomSandboxActivityEventOccurred = 735,
3123    AtomSdkSandboxRestrictedAccessInSession = 796,
3124    AtomSandboxSdkStorage = 10159,
3125    AtomSelinuxAuditLog = 799,
3126    AtomSettingsSpaReported = 622,
3127    AtomTestExtensionAtomReported = 660,
3128    AtomTestRestrictedAtomReported = 672,
3129    AtomStatsSocketLossReported = 752,
3130    AtomLockscreenShortcutSelected = 611,
3131    AtomLockscreenShortcutTriggered = 612,
3132    AtomLauncherImpressionEventV2 = 716,
3133    AtomDisplaySwitchLatencyTracked = 753,
3134    AtomNotificationListenerService = 829,
3135    AtomNavHandleTouchPoints = 869,
3136    AtomCommunalHubWidgetEventReported = 908,
3137    AtomCommunalHubSnapshot = 10226,
3138    AtomEmergencyNumberDialed = 637,
3139    AtomCallStats = 10221,
3140    AtomCallAudioRouteStats = 10222,
3141    AtomTelecomApiStats = 10223,
3142    AtomTelecomErrorStats = 10224,
3143    AtomCellularRadioPowerStateChanged = 713,
3144    AtomEmergencyNumbersInfo = 10180,
3145    AtomDataNetworkValidation = 10207,
3146    AtomDataRatStateChanged = 854,
3147    AtomConnectedChannelChanged = 882,
3148    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
3149    AtomQualifiedRatListChanged = 634,
3150    AtomQnsImsCallDropStats = 635,
3151    AtomQnsFallbackRestrictionChanged = 636,
3152    AtomQnsRatPreferenceMismatchInfo = 10177,
3153    AtomQnsHandoverTimeMillis = 10178,
3154    AtomQnsHandoverPingpong = 10179,
3155    AtomSatelliteController = 10182,
3156    AtomSatelliteSession = 10183,
3157    AtomSatelliteIncomingDatagram = 10184,
3158    AtomSatelliteOutgoingDatagram = 10185,
3159    AtomSatelliteProvision = 10186,
3160    AtomSatelliteSosMessageRecommender = 10187,
3161    AtomCarrierRoamingSatelliteSession = 10211,
3162    AtomCarrierRoamingSatelliteControllerStats = 10212,
3163    AtomControllerStatsPerPackage = 10213,
3164    AtomSatelliteEntitlement = 10214,
3165    AtomSatelliteConfigUpdater = 10215,
3166    AtomSatelliteAccessController = 10219,
3167    AtomCellularIdentifierDisclosed = 800,
3168    AtomThreadnetworkTelemetryDataReported = 738,
3169    AtomThreadnetworkTopoEntryRepeated = 739,
3170    AtomThreadnetworkDeviceInfoReported = 740,
3171    AtomBootIntegrityInfoReported = 775,
3172    AtomTvLowPowerStandbyPolicy = 679,
3173    AtomExternalTvInputEvent = 717,
3174    AtomTestUprobestatsAtomReported = 915,
3175    AtomUwbActivityInfo = 10188,
3176    AtomMediatorUpdated = 721,
3177    AtomSysproxyBluetoothBytesTransfer = 10196,
3178    AtomSysproxyConnectionUpdated = 786,
3179    AtomWearCompanionConnectionState = 921,
3180    AtomMediaActionReported = 608,
3181    AtomMediaControlsLaunched = 609,
3182    AtomMediaSessionStateChanged = 677,
3183    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
3184    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
3185    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
3186    AtomWearModeStateChanged = 715,
3187    AtomRendererInitialized = 736,
3188    AtomSchemaVersionReceived = 737,
3189    AtomLayoutInspected = 741,
3190    AtomLayoutExpressionInspected = 742,
3191    AtomLayoutAnimationsInspected = 743,
3192    AtomMaterialComponentsInspected = 744,
3193    AtomTileRequested = 745,
3194    AtomStateResponseReceived = 746,
3195    AtomTileResponseReceived = 747,
3196    AtomInflationFinished = 748,
3197    AtomInflationFailed = 749,
3198    AtomIgnoredInflationFailuresReported = 750,
3199    AtomDrawableRendered = 751,
3200    AtomWearTimeSyncRequested = 911,
3201    AtomWearTimeUpdateStarted = 912,
3202    AtomWearTimeSyncAttemptCompleted = 913,
3203    AtomWearTimeChanged = 914,
3204    AtomWearAdaptiveSuspendStatsReported = 619,
3205    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
3206    AtomWearPowerAnomalyServiceEventStatsReported = 621,
3207    AtomWsWearTimeSession = 610,
3208    AtomWsIncomingCallActionReported = 626,
3209    AtomWsCallDisconnectionReported = 627,
3210    AtomWsCallDurationReported = 628,
3211    AtomWsCallUserExperienceLatencyReported = 629,
3212    AtomWsCallInteractionReported = 630,
3213    AtomWsOnBodyStateChanged = 787,
3214    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
3215    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
3216    AtomWsComplicationsImpactedNotificationEventReported = 804,
3217    AtomWsRemoteEventUsageReported = 920,
3218    AtomWsBugreportRequested = 936,
3219    AtomWsBugreportTriggered = 937,
3220    AtomWsBugreportFinished = 938,
3221    AtomWsBugreportResultReceived = 939,
3222    AtomWsStandaloneModeSnapshot = 10197,
3223    AtomWsFavoriteWatchFaceSnapshot = 10206,
3224    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
3225    AtomWsWatchFaceCustomizationSnapshot = 10227,
3226    AtomWearPowerMenuOpened = 731,
3227    AtomWearAssistantOpened = 755,
3228    AtomFirstOverlayStateChanged = 917,
3229    AtomWifiAwareNdpReported = 638,
3230    AtomWifiAwareAttachReported = 639,
3231    AtomWifiSelfRecoveryTriggered = 661,
3232    AtomSoftApStarted = 680,
3233    AtomSoftApStopped = 681,
3234    AtomWifiLockReleased = 687,
3235    AtomWifiLockDeactivated = 688,
3236    AtomWifiConfigSaved = 689,
3237    AtomWifiAwareResourceUsingChanged = 690,
3238    AtomWifiAwareHalApiCalled = 691,
3239    AtomWifiLocalOnlyRequestReceived = 692,
3240    AtomWifiLocalOnlyRequestScanTriggered = 693,
3241    AtomWifiThreadTaskExecuted = 694,
3242    AtomWifiStateChanged = 700,
3243    AtomPnoScanStarted = 719,
3244    AtomPnoScanStopped = 720,
3245    AtomWifiIsUnusableReported = 722,
3246    AtomWifiApCapabilitiesReported = 723,
3247    AtomSoftApStateChanged = 805,
3248    AtomScorerPredictionResultReported = 884,
3249    AtomWifiAwareCapabilities = 10190,
3250    AtomWifiModuleInfo = 10193,
3251    AtomWifiSettingInfo = 10194,
3252    AtomWifiComplexSettingInfo = 10195,
3253    AtomWifiConfiguredNetworkInfo = 10198,
3254}
3255impl AtomId {
3256    /// String value of the enum field names used in the ProtoBuf definition.
3257    ///
3258    /// The values are not transformed in any way and thus are considered stable
3259    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3260    pub fn as_str_name(&self) -> &'static str {
3261        match self {
3262            AtomId::AtomUnspecified => "ATOM_UNSPECIFIED",
3263            AtomId::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
3264            AtomId::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
3265            AtomId::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
3266            AtomId::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
3267            AtomId::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
3268            AtomId::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
3269            AtomId::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
3270            AtomId::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
3271            AtomId::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
3272            AtomId::AtomLongPartialWakelockStateChanged => "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED",
3273            AtomId::AtomMobileRadioPowerStateChanged => "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED",
3274            AtomId::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
3275            AtomId::AtomActivityManagerSleepStateChanged => "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED",
3276            AtomId::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
3277            AtomId::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
3278            AtomId::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
3279            AtomId::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
3280            AtomId::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
3281            AtomId::AtomBatterySaverModeStateChanged => "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED",
3282            AtomId::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
3283            AtomId::AtomDeviceIdlingModeStateChanged => "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED",
3284            AtomId::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
3285            AtomId::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
3286            AtomId::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
3287            AtomId::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
3288            AtomId::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
3289            AtomId::AtomProcessLifeCycleStateChanged => "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED",
3290            AtomId::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
3291            AtomId::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
3292            AtomId::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
3293            AtomId::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
3294            AtomId::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
3295            AtomId::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
3296            AtomId::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
3297            AtomId::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
3298            AtomId::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
3299            AtomId::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
3300            AtomId::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
3301            AtomId::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
3302            AtomId::AtomSettingChanged => "ATOM_SETTING_CHANGED",
3303            AtomId::AtomActivityForegroundStateChanged => "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED",
3304            AtomId::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
3305            AtomId::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
3306            AtomId::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
3307            AtomId::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
3308            AtomId::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
3309            AtomId::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
3310            AtomId::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
3311            AtomId::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
3312            AtomId::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
3313            AtomId::AtomPictureInPictureStateChanged => "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED",
3314            AtomId::AtomWifiMulticastLockStateChanged => "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED",
3315            AtomId::AtomAppStartMemoryStateCaptured => "ATOM_APP_START_MEMORY_STATE_CAPTURED",
3316            AtomId::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
3317            AtomId::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
3318            AtomId::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
3319            AtomId::AtomForegroundServiceStateChanged => "ATOM_FOREGROUND_SERVICE_STATE_CHANGED",
3320            AtomId::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
3321            AtomId::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
3322            AtomId::AtomKeyguardBouncerStateChanged => "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED",
3323            AtomId::AtomKeyguardBouncerPasswordEntered => "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED",
3324            AtomId::AtomAppDied => "ATOM_APP_DIED",
3325            AtomId::AtomResourceConfigurationChanged => "ATOM_RESOURCE_CONFIGURATION_CHANGED",
3326            AtomId::AtomBluetoothEnabledStateChanged => "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED",
3327            AtomId::AtomBluetoothConnectionStateChanged => "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED",
3328            AtomId::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
3329            AtomId::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
3330            AtomId::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
3331            AtomId::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
3332            AtomId::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
3333            AtomId::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
3334            AtomId::AtomMobileConnectionStateChanged => "ATOM_MOBILE_CONNECTION_STATE_CHANGED",
3335            AtomId::AtomMobileRadioTechnologyChanged => "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED",
3336            AtomId::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
3337            AtomId::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
3338            AtomId::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
3339            AtomId::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
3340            AtomId::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
3341            AtomId::AtomGenericAtom => "ATOM_GENERIC_ATOM",
3342            AtomId::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
3343            AtomId::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
3344            AtomId::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
3345            AtomId::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
3346            AtomId::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
3347            AtomId::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
3348            AtomId::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
3349            AtomId::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
3350            AtomId::AtomSlowIo => "ATOM_SLOW_IO",
3351            AtomId::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
3352            AtomId::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
3353            AtomId::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
3354            AtomId::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
3355            AtomId::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
3356            AtomId::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
3357            AtomId::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
3358            AtomId::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
3359            AtomId::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
3360            AtomId::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
3361            AtomId::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
3362            AtomId::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
3363            AtomId::AtomDocsUiFileOpCopyMoveModeReported => "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED",
3364            AtomId::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
3365            AtomId::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
3366            AtomId::AtomDocsUiInvalidScopedAccessRequest => "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST",
3367            AtomId::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
3368            AtomId::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
3369            AtomId::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
3370            AtomId::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
3371            AtomId::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
3372            AtomId::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
3373            AtomId::AtomAppCompacted => "ATOM_APP_COMPACTED",
3374            AtomId::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
3375            AtomId::AtomDocsUiPickerLaunchedFromReported => "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED",
3376            AtomId::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
3377            AtomId::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
3378            AtomId::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
3379            AtomId::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
3380            AtomId::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
3381            AtomId::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
3382            AtomId::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
3383            AtomId::AtomBluetoothLinkLayerConnectionEvent => "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT",
3384            AtomId::AtomBluetoothAclConnectionStateChanged => "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED",
3385            AtomId::AtomBluetoothScoConnectionStateChanged => "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED",
3386            AtomId::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
3387            AtomId::AtomAppOptimizedAfterDowngraded => "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED",
3388            AtomId::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
3389            AtomId::AtomGnssNfwNotificationReported => "ATOM_GNSS_NFW_NOTIFICATION_REPORTED",
3390            AtomId::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
3391            AtomId::AtomUsbPortOverheatEventReported => "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED",
3392            AtomId::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
3393            AtomId::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
3394            AtomId::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
3395            AtomId::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
3396            AtomId::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
3397            AtomId::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
3398            AtomId::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
3399            AtomId::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
3400            AtomId::AtomBroadcastDispatchLatencyReported => "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED",
3401            AtomId::AtomAttentionManagerServiceResultReported => "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED",
3402            AtomId::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
3403            AtomId::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
3404            AtomId::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
3405            AtomId::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
3406            AtomId::AtomBiometricSystemHealthIssueDetected => "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED",
3407            AtomId::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
3408            AtomId::AtomScheduledJobConstraintChanged => "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED",
3409            AtomId::AtomBluetoothActiveDeviceChanged => "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED",
3410            AtomId::AtomBluetoothA2dpPlaybackStateChanged => "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED",
3411            AtomId::AtomBluetoothA2dpCodecConfigChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED",
3412            AtomId::AtomBluetoothA2dpCodecCapabilityChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED",
3413            AtomId::AtomBluetoothA2dpAudioUnderrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED",
3414            AtomId::AtomBluetoothA2dpAudioOverrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED",
3415            AtomId::AtomBluetoothDeviceRssiReported => "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED",
3416            AtomId::AtomBluetoothDeviceFailedContactCounterReported => "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED",
3417            AtomId::AtomBluetoothDeviceTxPowerLevelReported => "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED",
3418            AtomId::AtomBluetoothHciTimeoutReported => "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED",
3419            AtomId::AtomBluetoothQualityReportReported => "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED",
3420            AtomId::AtomBluetoothDeviceInfoReported => "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED",
3421            AtomId::AtomBluetoothRemoteVersionInfoReported => "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED",
3422            AtomId::AtomBluetoothSdpAttributeReported => "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED",
3423            AtomId::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
3424            AtomId::AtomBluetoothClassicPairingEventReported => "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED",
3425            AtomId::AtomBluetoothSmpPairingEventReported => "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED",
3426            AtomId::AtomScreenTimeoutExtensionReported => "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED",
3427            AtomId::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
3428            AtomId::AtomPermissionGrantRequestResultReported => "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED",
3429            AtomId::AtomBluetoothSocketConnectionStateChanged => "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED",
3430            AtomId::AtomDeviceIdentifierAccessDenied => "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED",
3431            AtomId::AtomBubbleDeveloperErrorReported => "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED",
3432            AtomId::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
3433            AtomId::AtomAssistGestureFeedbackReported => "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED",
3434            AtomId::AtomAssistGestureProgressReported => "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED",
3435            AtomId::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
3436            AtomId::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
3437            AtomId::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
3438            AtomId::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
3439            AtomId::AtomAppInstallOnExternalStorageReported => "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED",
3440            AtomId::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
3441            AtomId::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
3442            AtomId::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
3443            AtomId::AtomSystemServerWatchdogOccurred => "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED",
3444            AtomId::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
3445            AtomId::AtomBluetoothClassOfDeviceReported => "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED",
3446            AtomId::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
3447            AtomId::AtomThermalThrottlingSeverityStateChanged => "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED",
3448            AtomId::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
3449            AtomId::AtomMediametricsAudiopolicyReported => "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED",
3450            AtomId::AtomMediametricsAudiorecordReported => "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED",
3451            AtomId::AtomMediametricsAudiothreadReported => "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED",
3452            AtomId::AtomMediametricsAudiotrackReported => "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED",
3453            AtomId::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
3454            AtomId::AtomMediametricsDrmWidevineReported => "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED",
3455            AtomId::AtomMediametricsExtractorReported => "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED",
3456            AtomId::AtomMediametricsMediadrmReported => "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED",
3457            AtomId::AtomMediametricsNuplayerReported => "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED",
3458            AtomId::AtomMediametricsRecorderReported => "ATOM_MEDIAMETRICS_RECORDER_REPORTED",
3459            AtomId::AtomMediametricsDrmmanagerReported => "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED",
3460            AtomId::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
3461            AtomId::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
3462            AtomId::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
3463            AtomId::AtomContentCaptureCallerMismatchReported => "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED",
3464            AtomId::AtomContentCaptureServiceEvents => "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS",
3465            AtomId::AtomContentCaptureSessionEvents => "ATOM_CONTENT_CAPTURE_SESSION_EVENTS",
3466            AtomId::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
3467            AtomId::AtomLocationManagerApiUsageReported => "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED",
3468            AtomId::AtomReviewPermissionsFragmentResultReported => "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED",
3469            AtomId::AtomRuntimePermissionsUpgradeResult => "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT",
3470            AtomId::AtomGrantPermissionsActivityButtonActions => "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS",
3471            AtomId::AtomLocationAccessCheckNotificationAction => "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION",
3472            AtomId::AtomAppPermissionFragmentActionReported => "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED",
3473            AtomId::AtomAppPermissionFragmentViewed => "ATOM_APP_PERMISSION_FRAGMENT_VIEWED",
3474            AtomId::AtomAppPermissionsFragmentViewed => "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED",
3475            AtomId::AtomPermissionAppsFragmentViewed => "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED",
3476            AtomId::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
3477            AtomId::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
3478            AtomId::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
3479            AtomId::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
3480            AtomId::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
3481            AtomId::AtomBackGestureReportedReported => "ATOM_BACK_GESTURE_REPORTED_REPORTED",
3482            AtomId::AtomUpdateEngineUpdateAttemptReported => "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED",
3483            AtomId::AtomUpdateEngineSuccessfulUpdateReported => "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED",
3484            AtomId::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
3485            AtomId::AtomAppCompatibilityChangeReported => "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED",
3486            AtomId::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
3487            AtomId::AtomVmsClientConnectionStateChanged => "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED",
3488            AtomId::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
3489            AtomId::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
3490            AtomId::AtomMediaProviderPermissionRequested => "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED",
3491            AtomId::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
3492            AtomId::AtomMediaProviderIdleMaintenanceFinished => "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED",
3493            AtomId::AtomRebootEscrowRecoveryReported => "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED",
3494            AtomId::AtomBootTimeEventDurationReported => "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED",
3495            AtomId::AtomBootTimeEventElapsedTimeReported => "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED",
3496            AtomId::AtomBootTimeEventUtcTimeReported => "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED",
3497            AtomId::AtomBootTimeEventErrorCodeReported => "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED",
3498            AtomId::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
3499            AtomId::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
3500            AtomId::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
3501            AtomId::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
3502            AtomId::AtomIntegrityCheckResultReported => "ATOM_INTEGRITY_CHECK_RESULT_REPORTED",
3503            AtomId::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
3504            AtomId::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
3505            AtomId::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
3506            AtomId::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
3507            AtomId::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
3508            AtomId::AtomWifiConnectionResultReported => "ATOM_WIFI_CONNECTION_RESULT_REPORTED",
3509            AtomId::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
3510            AtomId::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
3511            AtomId::AtomForegroundServiceAppOpSessionEnded => "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED",
3512            AtomId::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
3513            AtomId::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
3514            AtomId::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
3515            AtomId::AtomRankingSelected => "ATOM_RANKING_SELECTED",
3516            AtomId::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
3517            AtomId::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
3518            AtomId::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
3519            AtomId::AtomUserLifecycleJourneyReported => "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED",
3520            AtomId::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
3521            AtomId::AtomAccessibilityShortcutReported => "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED",
3522            AtomId::AtomAccessibilityServiceReported => "ATOM_ACCESSIBILITY_SERVICE_REPORTED",
3523            AtomId::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
3524            AtomId::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
3525            AtomId::AtomAutoRevokeNotificationClicked => "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED",
3526            AtomId::AtomAutoRevokeFragmentAppViewed => "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED",
3527            AtomId::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
3528            AtomId::AtomAppPermissionGroupsFragmentAutoRevokeAction => "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION",
3529            AtomId::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
3530            AtomId::AtomAudioPowerUsageDataReported => "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED",
3531            AtomId::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
3532            AtomId::AtomMediaoutputOpSwitchReported => "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED",
3533            AtomId::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
3534            AtomId::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
3535            AtomId::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
3536            AtomId::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
3537            AtomId::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
3538            AtomId::AtomCarUserHalModifyUserRequestReported => "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED",
3539            AtomId::AtomCarUserHalModifyUserResponseReported => "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED",
3540            AtomId::AtomCarUserHalPostSwitchResponseReported => "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED",
3541            AtomId::AtomCarUserHalInitialUserInfoRequestReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED",
3542            AtomId::AtomCarUserHalInitialUserInfoResponseReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED",
3543            AtomId::AtomCarUserHalUserAssociationRequestReported => "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED",
3544            AtomId::AtomCarUserHalSetUserAssociationResponseReported => "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED",
3545            AtomId::AtomNetworkIpProvisioningReported => "ATOM_NETWORK_IP_PROVISIONING_REPORTED",
3546            AtomId::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
3547            AtomId::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
3548            AtomId::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
3549            AtomId::AtomMediametricsAudiorecorddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED",
3550            AtomId::AtomMediametricsAudiothreaddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED",
3551            AtomId::AtomMediametricsAudiotrackdeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED",
3552            AtomId::AtomMediametricsAudiodeviceconnectionReported => "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED",
3553            AtomId::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
3554            AtomId::AtomBlobLeased => "ATOM_BLOB_LEASED",
3555            AtomId::AtomBlobOpened => "ATOM_BLOB_OPENED",
3556            AtomId::AtomContactsProviderStatusReported => "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED",
3557            AtomId::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
3558            AtomId::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
3559            AtomId::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
3560            AtomId::AtomUiInteractionFrameInfoReported => "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED",
3561            AtomId::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
3562            AtomId::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
3563            AtomId::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
3564            AtomId::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
3565            AtomId::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
3566            AtomId::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
3567            AtomId::AtomModemRestart => "ATOM_MODEM_RESTART",
3568            AtomId::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
3569            AtomId::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
3570            AtomId::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
3571            AtomId::AtomMediametricsMediaparserReported => "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED",
3572            AtomId::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
3573            AtomId::AtomTextClassifierApiUsageReported => "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED",
3574            AtomId::AtomCarWatchdogKillStatsReported => "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED",
3575            AtomId::AtomMediametricsPlaybackReported => "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED",
3576            AtomId::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
3577            AtomId::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
3578            AtomId::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
3579            AtomId::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
3580            AtomId::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
3581            AtomId::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
3582            AtomId::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
3583            AtomId::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
3584            AtomId::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
3585            AtomId::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
3586            AtomId::AtomImsServiceEntitlementUpdated => "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED",
3587            AtomId::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
3588            AtomId::AtomSimSpecificSettingsRestored => "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED",
3589            AtomId::AtomTextClassifierDownloadReported => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED",
3590            AtomId::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
3591            AtomId::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
3592            AtomId::AtomBluetoothHalCrashReasonReported => "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED",
3593            AtomId::AtomRebootEscrowPreparationReported => "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED",
3594            AtomId::AtomRebootEscrowLskfCaptureReported => "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED",
3595            AtomId::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
3596            AtomId::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
3597            AtomId::AtomMediametricsAaudiostreamReported => "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED",
3598            AtomId::AtomMediaTranscodingSessionEnded => "ATOM_MEDIA_TRANSCODING_SESSION_ENDED",
3599            AtomId::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
3600            AtomId::AtomMagnificationModeWithImeOnReported => "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED",
3601            AtomId::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
3602            AtomId::AtomAppSearchPutDocumentStatsReported => "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED",
3603            AtomId::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
3604            AtomId::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
3605            AtomId::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
3606            AtomId::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
3607            AtomId::AtomAuthPromptAuthenticateInvoked => "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED",
3608            AtomId::AtomAuthManagerCanAuthenticateInvoked => "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED",
3609            AtomId::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
3610            AtomId::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
3611            AtomId::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
3612            AtomId::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
3613            AtomId::AtomLocationTimeZoneProviderStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED",
3614            AtomId::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
3615            AtomId::AtomTimeoutAutoExtendedReported => "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED",
3616            AtomId::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
3617            AtomId::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
3618            AtomId::AtomCarWatchdogIoOveruseStatsReported => "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED",
3619            AtomId::AtomUserLevelHibernationStateChanged => "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED",
3620            AtomId::AtomAppSearchInitializeStatsReported => "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED",
3621            AtomId::AtomAppSearchQueryStatsReported => "ATOM_APP_SEARCH_QUERY_STATS_REPORTED",
3622            AtomId::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
3623            AtomId::AtomNetworkIpReachabilityMonitorReported => "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED",
3624            AtomId::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
3625            AtomId::AtomAnrOccurredProcessingStarted => "ATOM_ANR_OCCURRED_PROCESSING_STARTED",
3626            AtomId::AtomAppSearchRemoveStatsReported => "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED",
3627            AtomId::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
3628            AtomId::AtomPermissionUsageFragmentInteraction => "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION",
3629            AtomId::AtomPermissionDetailsInteraction => "ATOM_PERMISSION_DETAILS_INTERACTION",
3630            AtomId::AtomPrivacySensorToggleInteraction => "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION",
3631            AtomId::AtomPrivacyToggleDialogInteraction => "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION",
3632            AtomId::AtomAppSearchOptimizeStatsReported => "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED",
3633            AtomId::AtomNonA11yToolServiceWarningReport => "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT",
3634            AtomId::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
3635            AtomId::AtomSizeCompatRestartButtonEventReported => "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED",
3636            AtomId::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
3637            AtomId::AtomNetworkDnsHandshakeReported => "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED",
3638            AtomId::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
3639            AtomId::AtomBluetoothLeBatchScanReportDelay => "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY",
3640            AtomId::AtomAccessibilityFloatingMenuUiChanged => "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED",
3641            AtomId::AtomNeuralnetworksCompilationCompleted => "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED",
3642            AtomId::AtomNeuralnetworksExecutionCompleted => "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED",
3643            AtomId::AtomNeuralnetworksCompilationFailed => "ATOM_NEURALNETWORKS_COMPILATION_FAILED",
3644            AtomId::AtomNeuralnetworksExecutionFailed => "ATOM_NEURALNETWORKS_EXECUTION_FAILED",
3645            AtomId::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
3646            AtomId::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
3647            AtomId::AtomContextHubLoadedNanoappSnapshotReported => "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED",
3648            AtomId::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
3649            AtomId::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
3650            AtomId::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
3651            AtomId::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
3652            AtomId::AtomUwbRangingMeasurementReceived => "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED",
3653            AtomId::AtomTextClassifierDownloadWorkScheduled => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED",
3654            AtomId::AtomTextClassifierDownloadWorkCompleted => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED",
3655            AtomId::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
3656            AtomId::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
3657            AtomId::AtomNearbyDeviceScanStateChanged => "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED",
3658            AtomId::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
3659            AtomId::AtomMediametricsAudiotrackstatusReported => "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED",
3660            AtomId::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
3661            AtomId::AtomLocationTimeZoneProviderControllerStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED",
3662            AtomId::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
3663            AtomId::AtomDisplayHbmBrightnessChanged => "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED",
3664            AtomId::AtomPersistentUriPermissionsFlushed => "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED",
3665            AtomId::AtomEarlyBootCompOsArtifactsCheckReported => "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED",
3666            AtomId::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
3667            AtomId::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
3668            AtomId::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
3669            AtomId::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
3670            AtomId::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
3671            AtomId::AtomMediametricsAudiorecordstatusReported => "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED",
3672            AtomId::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
3673            AtomId::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
3674            AtomId::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
3675            AtomId::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
3676            AtomId::AtomHotwordDetectorCreateRequested => "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED",
3677            AtomId::AtomHotwordDetectionServiceInitResultReported => "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED",
3678            AtomId::AtomHotwordDetectionServiceRestarted => "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED",
3679            AtomId::AtomHotwordDetectorKeyphraseTriggered => "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED",
3680            AtomId::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
3681            AtomId::AtomBootCompletedBroadcastCompletionLatencyReported => "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED",
3682            AtomId::AtomContactsIndexerUpdateStatsReported => "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED",
3683            AtomId::AtomAppBackgroundRestrictionsInfo => "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO",
3684            AtomId::AtomMmsSmsProviderGetThreadIdFailed => "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED",
3685            AtomId::AtomMmsSmsDatabaseHelperOnUpgradeFailed => "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED",
3686            AtomId::AtomPermissionReminderNotificationInteracted => "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED",
3687            AtomId::AtomRecentPermissionDecisionsInteracted => "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED",
3688            AtomId::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
3689            AtomId::AtomLeAudioConnectionSessionReported => "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED",
3690            AtomId::AtomLeAudioBroadcastSessionReported => "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED",
3691            AtomId::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
3692            AtomId::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
3693            AtomId::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
3694            AtomId::AtomMagnificationTripleTapAndHoldActivatedSessionReported => "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED",
3695            AtomId::AtomMagnificationFollowTypingFocusActivatedSessionReported => "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED",
3696            AtomId::AtomAccessibilityTextReadingOptionsChanged => "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED",
3697            AtomId::AtomWifiSetupFailureCrashReported => "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED",
3698            AtomId::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
3699            AtomId::AtomIsolatedCompilationScheduled => "ATOM_ISOLATED_COMPILATION_SCHEDULED",
3700            AtomId::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
3701            AtomId::AtomOnsOpportunisticEsimProvisioningComplete => "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE",
3702            AtomId::AtomSystemServerPreWatchdogOccurred => "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED",
3703            AtomId::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
3704            AtomId::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
3705            AtomId::AtomRemoteKeyProvisioningAttempt => "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT",
3706            AtomId::AtomRemoteKeyProvisioningNetworkInfo => "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO",
3707            AtomId::AtomRemoteKeyProvisioningTiming => "ATOM_REMOTE_KEY_PROVISIONING_TIMING",
3708            AtomId::AtomMediaoutputOpInteractionReport => "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT",
3709            AtomId::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
3710            AtomId::AtomAutofillPresentationEventReported => "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED",
3711            AtomId::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
3712            AtomId::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
3713            AtomId::AtomSafetyCenterSystemEventReported => "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED",
3714            AtomId::AtomSafetyCenterInteractionReported => "ATOM_SAFETY_CENTER_INTERACTION_REPORTED",
3715            AtomId::AtomSettingsProviderSettingChanged => "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED",
3716            AtomId::AtomBroadcastDeliveryEventReported => "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED",
3717            AtomId::AtomServiceRequestEventReported => "ATOM_SERVICE_REQUEST_EVENT_REPORTED",
3718            AtomId::AtomProviderAcquisitionEventReported => "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED",
3719            AtomId::AtomBluetoothDeviceNameReported => "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED",
3720            AtomId::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
3721            AtomId::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
3722            AtomId::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
3723            AtomId::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
3724            AtomId::AtomPrivacySignalNotificationInteraction => "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION",
3725            AtomId::AtomPrivacySignalIssueCardInteraction => "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION",
3726            AtomId::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
3727            AtomId::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
3728            AtomId::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
3729            AtomId::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
3730            AtomId::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
3731            AtomId::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
3732            AtomId::AtomNetworkDnsServerSupportReported => "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED",
3733            AtomId::AtomVmBooted => "ATOM_VM_BOOTED",
3734            AtomId::AtomVmExited => "ATOM_VM_EXITED",
3735            AtomId::AtomAmbientBrightnessStatsReported => "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED",
3736            AtomId::AtomMediametricsSpatializercapabilitiesReported => "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED",
3737            AtomId::AtomMediametricsSpatializerdeviceenabledReported => "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED",
3738            AtomId::AtomMediametricsHeadtrackerdeviceenabledReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED",
3739            AtomId::AtomMediametricsHeadtrackerdevicesupportedReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED",
3740            AtomId::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
3741            AtomId::AtomDeviceWideJobConstraintChanged => "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED",
3742            AtomId::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
3743            AtomId::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
3744            AtomId::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
3745            AtomId::AtomSystemDefaultNetworkChanged => "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED",
3746            AtomId::AtomIwlanSetupDataCallResultReported => "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED",
3747            AtomId::AtomIwlanPdnDisconnectedReasonReported => "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED",
3748            AtomId::AtomAirplaneModeSessionReported => "ATOM_AIRPLANE_MODE_SESSION_REPORTED",
3749            AtomId::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
3750            AtomId::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
3751            AtomId::AtomPackageInstallationSessionReported => "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED",
3752            AtomId::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
3753            AtomId::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
3754            AtomId::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
3755            AtomId::AtomBluetoothDisconnectionReasonReported => "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED",
3756            AtomId::AtomBluetoothLocalVersionsReported => "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED",
3757            AtomId::AtomBluetoothRemoteSupportedFeaturesReported => "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED",
3758            AtomId::AtomBluetoothLocalSupportedFeaturesReported => "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED",
3759            AtomId::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
3760            AtomId::AtomBrightnessConfigurationUpdated => "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED",
3761            AtomId::AtomWearMediaOutputSwitcherLaunched => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED",
3762            AtomId::AtomWearMediaOutputSwitcherFinished => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED",
3763            AtomId::AtomWearMediaOutputSwitcherConnectionReported => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED",
3764            AtomId::AtomWearMediaOutputSwitcherDeviceScanTriggered => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED",
3765            AtomId::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY",
3766            AtomId::AtomWearMediaOutputSwitcherConnectDeviceLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY",
3767            AtomId::AtomPackageManagerSnapshotReported => "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED",
3768            AtomId::AtomPackageManagerAppsFilterCacheBuildReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED",
3769            AtomId::AtomPackageManagerAppsFilterCacheUpdateReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED",
3770            AtomId::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
3771            AtomId::AtomWearMediaOutputSwitcherAllDevicesScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY",
3772            AtomId::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
3773            AtomId::AtomWsWatchFaceFavoriteActionReported => "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED",
3774            AtomId::AtomWsWatchFaceSetActionReported => "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED",
3775            AtomId::AtomPackageUninstallationReported => "ATOM_PACKAGE_UNINSTALLATION_REPORTED",
3776            AtomId::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
3777            AtomId::AtomGameModeConfigurationChanged => "ATOM_GAME_MODE_CONFIGURATION_CHANGED",
3778            AtomId::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
3779            AtomId::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
3780            AtomId::AtomNetworkSliceDailyDataUsageReported => "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED",
3781            AtomId::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
3782            AtomId::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
3783            AtomId::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
3784            AtomId::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
3785            AtomId::AtomGetTypeAccessedWithoutPermission => "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION",
3786            AtomId::AtomMobileBundledAppInfoGathered => "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED",
3787            AtomId::AtomWsWatchFaceComplicationSetChanged => "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED",
3788            AtomId::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
3789            AtomId::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
3790            AtomId::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
3791            AtomId::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
3792            AtomId::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
3793            AtomId::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
3794            AtomId::AtomPerformanceHintSessionReported => "ATOM_PERFORMANCE_HINT_SESSION_REPORTED",
3795            AtomId::AtomMediametricsMidiDeviceCloseReported => "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED",
3796            AtomId::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
3797            AtomId::AtomHotwordAudioEgressEventReported => "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED",
3798            AtomId::AtomLocationEnabledStateChanged => "ATOM_LOCATION_ENABLED_STATE_CHANGED",
3799            AtomId::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
3800            AtomId::AtomUsbComplianceWarningsReported => "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED",
3801            AtomId::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
3802            AtomId::AtomMediaProviderVolumeRecoveryReported => "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED",
3803            AtomId::AtomBiometricPropertiesCollected => "ATOM_BIOMETRIC_PROPERTIES_COLLECTED",
3804            AtomId::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
3805            AtomId::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
3806            AtomId::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
3807            AtomId::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
3808            AtomId::AtomDeviceLogAccessEventReported => "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED",
3809            AtomId::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
3810            AtomId::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
3811            AtomId::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
3812            AtomId::AtomNetworkValidationFailureStatsDailyReported => "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED",
3813            AtomId::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
3814            AtomId::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
3815            AtomId::AtomWsNotificationBridgemodeUpdated => "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED",
3816            AtomId::AtomWsNotificationDismissalActioned => "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED",
3817            AtomId::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
3818            AtomId::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
3819            AtomId::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
3820            AtomId::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
3821            AtomId::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
3822            AtomId::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
3823            AtomId::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
3824            AtomId::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
3825            AtomId::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
3826            AtomId::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
3827            AtomId::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
3828            AtomId::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
3829            AtomId::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
3830            AtomId::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
3831            AtomId::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
3832            AtomId::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
3833            AtomId::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
3834            AtomId::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
3835            AtomId::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
3836            AtomId::AtomDiskSpace => "ATOM_DISK_SPACE",
3837            AtomId::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
3838            AtomId::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
3839            AtomId::AtomTemperature => "ATOM_TEMPERATURE",
3840            AtomId::AtomBinderCalls => "ATOM_BINDER_CALLS",
3841            AtomId::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
3842            AtomId::AtomLooperStats => "ATOM_LOOPER_STATS",
3843            AtomId::AtomDiskStats => "ATOM_DISK_STATS",
3844            AtomId::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
3845            AtomId::AtomAppSize => "ATOM_APP_SIZE",
3846            AtomId::AtomCategorySize => "ATOM_CATEGORY_SIZE",
3847            AtomId::AtomProcStats => "ATOM_PROC_STATS",
3848            AtomId::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
3849            AtomId::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
3850            AtomId::AtomDiskIo => "ATOM_DISK_IO",
3851            AtomId::AtomPowerProfile => "ATOM_POWER_PROFILE",
3852            AtomId::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
3853            AtomId::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
3854            AtomId::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
3855            AtomId::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
3856            AtomId::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
3857            AtomId::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
3858            AtomId::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
3859            AtomId::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
3860            AtomId::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
3861            AtomId::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
3862            AtomId::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
3863            AtomId::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
3864            AtomId::AtomRoleHolder => "ATOM_ROLE_HOLDER",
3865            AtomId::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
3866            AtomId::AtomTrainInfo => "ATOM_TRAIN_INFO",
3867            AtomId::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
3868            AtomId::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
3869            AtomId::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
3870            AtomId::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
3871            AtomId::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
3872            AtomId::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
3873            AtomId::AtomFaceSettings => "ATOM_FACE_SETTINGS",
3874            AtomId::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
3875            AtomId::AtomAppOps => "ATOM_APP_OPS",
3876            AtomId::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
3877            AtomId::AtomSurfaceflingerStatsGlobalInfo => "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO",
3878            AtomId::AtomSurfaceflingerStatsLayerInfo => "ATOM_SURFACEFLINGER_STATS_LAYER_INFO",
3879            AtomId::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
3880            AtomId::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
3881            AtomId::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
3882            AtomId::AtomDangerousPermissionStateSampled => "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED",
3883            AtomId::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
3884            AtomId::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
3885            AtomId::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
3886            AtomId::AtomPackageNotificationPreferences => "ATOM_PACKAGE_NOTIFICATION_PREFERENCES",
3887            AtomId::AtomPackageNotificationChannelPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES",
3888            AtomId::AtomPackageNotificationChannelGroupPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES",
3889            AtomId::AtomGnssStats => "ATOM_GNSS_STATS",
3890            AtomId::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
3891            AtomId::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
3892            AtomId::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
3893            AtomId::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
3894            AtomId::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
3895            AtomId::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
3896            AtomId::AtomBlobInfo => "ATOM_BLOB_INFO",
3897            AtomId::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
3898            AtomId::AtomBytesTransferByTagAndMetered => "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED",
3899            AtomId::AtomDndModeRule => "ATOM_DND_MODE_RULE",
3900            AtomId::AtomGeneralExternalStorageAccessStats => "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS",
3901            AtomId::AtomIncomingSms => "ATOM_INCOMING_SMS",
3902            AtomId::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
3903            AtomId::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
3904            AtomId::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
3905            AtomId::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
3906            AtomId::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
3907            AtomId::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
3908            AtomId::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
3909            AtomId::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
3910            AtomId::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
3911            AtomId::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
3912            AtomId::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
3913            AtomId::AtomCpuCyclesPerThreadGroupCluster => "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER",
3914            AtomId::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
3915            AtomId::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
3916            AtomId::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
3917            AtomId::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
3918            AtomId::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
3919            AtomId::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
3920            AtomId::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
3921            AtomId::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
3922            AtomId::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
3923            AtomId::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
3924            AtomId::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
3925            AtomId::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
3926            AtomId::AtomBatteryUsageStatsBeforeReset => "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET",
3927            AtomId::AtomBatteryUsageStatsSinceReset => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET",
3928            AtomId::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL",
3929            AtomId::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
3930            AtomId::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
3931            AtomId::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
3932            AtomId::AtomVmstat => "ATOM_VMSTAT",
3933            AtomId::AtomKeystore2KeyCreationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO",
3934            AtomId::AtomKeystore2KeyCreationWithAuthInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO",
3935            AtomId::AtomKeystore2KeyCreationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO",
3936            AtomId::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
3937            AtomId::AtomKeystore2KeyOperationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO",
3938            AtomId::AtomKeystore2KeyOperationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO",
3939            AtomId::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
3940            AtomId::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
3941            AtomId::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
3942            AtomId::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
3943            AtomId::AtomAccessibilityFloatingMenuStats => "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS",
3944            AtomId::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
3945            AtomId::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
3946            AtomId::AtomCarWatchdogSystemIoUsageSummary => "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY",
3947            AtomId::AtomCarWatchdogUidIoUsageSummary => "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY",
3948            AtomId::AtomImsRegistrationFeatureTagStats => "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS",
3949            AtomId::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
3950            AtomId::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
3951            AtomId::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
3952            AtomId::AtomSipTransportFeatureTagStats => "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS",
3953            AtomId::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
3954            AtomId::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
3955            AtomId::AtomImsDedicatedBearerListenerEvent => "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT",
3956            AtomId::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
3957            AtomId::AtomImsRegistrationServiceDescStats => "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS",
3958            AtomId::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
3959            AtomId::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
3960            AtomId::AtomGbaEvent => "ATOM_GBA_EVENT",
3961            AtomId::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
3962            AtomId::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
3963            AtomId::AtomPersistentUriPermissionsAmountPerPackage => "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE",
3964            AtomId::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
3965            AtomId::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
3966            AtomId::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
3967            AtomId::AtomUserInfo => "ATOM_USER_INFO",
3968            AtomId::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
3969            AtomId::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
3970            AtomId::AtomRemoteKeyProvisioningErrorCounts => "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS",
3971            AtomId::AtomSafetyState => "ATOM_SAFETY_STATE",
3972            AtomId::AtomIncomingMms => "ATOM_INCOMING_MMS",
3973            AtomId::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
3974            AtomId::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
3975            AtomId::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
3976            AtomId::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
3977            AtomId::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
3978            AtomId::AtomNetworkSelectionRematchReasonsInfo => "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO",
3979            AtomId::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
3980            AtomId::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
3981            AtomId::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
3982            AtomId::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
3983            AtomId::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
3984            AtomId::AtomWsActiveWatchFaceComplicationSetSnapshot => "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT",
3985            AtomId::AtomProcessState => "ATOM_PROCESS_STATE",
3986            AtomId::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
3987            AtomId::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
3988            AtomId::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
3989            AtomId::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
3990            AtomId::AtomWsFavouriteWatchFaceListSnapshot => "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT",
3991            AtomId::AtomAccessibilityCheckResultReported => "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED",
3992            AtomId::AtomAdaptiveAuthUnlockAfterLockReported => "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED",
3993            AtomId::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
3994            AtomId::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
3995            AtomId::AtomThermalHeadroomThresholdsCalled => "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED",
3996            AtomId::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
3997            AtomId::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
3998            AtomId::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
3999            AtomId::AtomJsscriptengineLatencyReported => "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED",
4000            AtomId::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
4001            AtomId::AtomAdServicesMesurementReportsUploaded => "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED",
4002            AtomId::AtomMobileDataDownloadFileGroupStatusReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED",
4003            AtomId::AtomMobileDataDownloadDownloadResultReported => "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED",
4004            AtomId::AtomAdServicesSettingsUsageReported => "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED",
4005            AtomId::AtomBackgroundFetchProcessReported => "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED",
4006            AtomId::AtomUpdateCustomAudienceProcessReported => "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED",
4007            AtomId::AtomRunAdBiddingProcessReported => "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED",
4008            AtomId::AtomRunAdScoringProcessReported => "ATOM_RUN_AD_SCORING_PROCESS_REPORTED",
4009            AtomId::AtomRunAdSelectionProcessReported => "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED",
4010            AtomId::AtomRunAdBiddingPerCaProcessReported => "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED",
4011            AtomId::AtomMobileDataDownloadFileGroupStorageStatsReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED",
4012            AtomId::AtomAdServicesMeasurementRegistrations => "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS",
4013            AtomId::AtomAdServicesGetTopicsReported => "ATOM_AD_SERVICES_GET_TOPICS_REPORTED",
4014            AtomId::AtomAdServicesEpochComputationGetTopTopicsReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED",
4015            AtomId::AtomAdServicesEpochComputationClassifierReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
4016            AtomId::AtomAdServicesBackCompatGetTopicsReported => "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED",
4017            AtomId::AtomAdServicesBackCompatEpochComputationClassifierReported => "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
4018            AtomId::AtomAdServicesMeasurementDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS",
4019            AtomId::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
4020            AtomId::AtomAdServicesBackgroundJobsExecutionReported => "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED",
4021            AtomId::AtomAdServicesMeasurementDelayedSourceRegistration => "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION",
4022            AtomId::AtomAdServicesMeasurementAttribution => "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION",
4023            AtomId::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
4024            AtomId::AtomAdServicesMeasurementWipeout => "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT",
4025            AtomId::AtomAdServicesMeasurementAdIdMatchForDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS",
4026            AtomId::AtomAdServicesEnrollmentDataStored => "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED",
4027            AtomId::AtomAdServicesEnrollmentFileDownloaded => "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED",
4028            AtomId::AtomAdServicesEnrollmentMatched => "ATOM_AD_SERVICES_ENROLLMENT_MATCHED",
4029            AtomId::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
4030            AtomId::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
4031            AtomId::AtomAdServicesMeasurementClickVerification => "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION",
4032            AtomId::AtomAdServicesEncryptionKeyFetched => "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED",
4033            AtomId::AtomAdServicesEncryptionKeyDbTransactionEnded => "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED",
4034            AtomId::AtomDestinationRegisteredBeacons => "ATOM_DESTINATION_REGISTERED_BEACONS",
4035            AtomId::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
4036            AtomId::AtomInteractionReportingTableCleared => "ATOM_INTERACTION_REPORTING_TABLE_CLEARED",
4037            AtomId::AtomAppManifestConfigHelperCalled => "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED",
4038            AtomId::AtomAdFilteringProcessJoinCaReported => "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED",
4039            AtomId::AtomAdFilteringProcessAdSelectionReported => "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED",
4040            AtomId::AtomAdCounterHistogramUpdaterReported => "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED",
4041            AtomId::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
4042            AtomId::AtomKAnonImmediateSignJoinStatusReported => "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED",
4043            AtomId::AtomKAnonBackgroundJobStatusReported => "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED",
4044            AtomId::AtomKAnonInitializeStatusReported => "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED",
4045            AtomId::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
4046            AtomId::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
4047            AtomId::AtomKAnonKeyAttestationStatusReported => "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED",
4048            AtomId::AtomGetAdSelectionDataApiCalled => "ATOM_GET_AD_SELECTION_DATA_API_CALLED",
4049            AtomId::AtomGetAdSelectionDataBuyerInputGenerated => "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED",
4050            AtomId::AtomBackgroundJobSchedulingReported => "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED",
4051            AtomId::AtomTopicsEncryptionEpochComputationReported => "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED",
4052            AtomId::AtomTopicsEncryptionGetTopicsReported => "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED",
4053            AtomId::AtomAdservicesShellCommandCalled => "ATOM_ADSERVICES_SHELL_COMMAND_CALLED",
4054            AtomId::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
4055            AtomId::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
4056            AtomId::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
4057            AtomId::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
4058            AtomId::AtomPersistAdSelectionResultCalled => "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED",
4059            AtomId::AtomServerAuctionKeyFetchCalled => "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED",
4060            AtomId::AtomServerAuctionBackgroundKeyFetchEnabled => "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED",
4061            AtomId::AtomAdServicesMeasurementProcessOdpRegistration => "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION",
4062            AtomId::AtomAdServicesMeasurementNotifyRegistrationToOdp => "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP",
4063            AtomId::AtomSelectAdsFromOutcomesApiCalled => "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED",
4064            AtomId::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
4065            AtomId::AtomAdServicesEnrollmentTransactionStats => "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS",
4066            AtomId::AtomAdServicesCobaltLoggerEventReported => "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED",
4067            AtomId::AtomAdServicesCobaltPeriodicJobEventReported => "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED",
4068            AtomId::AtomUpdateSignalsProcessReported => "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED",
4069            AtomId::AtomTopicsScheduleEpochJobSettingReported => "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED",
4070            AtomId::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
4071            AtomId::AtomAiWallpapersTemplateSelected => "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED",
4072            AtomId::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
4073            AtomId::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
4074            AtomId::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
4075            AtomId::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
4076            AtomId::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
4077            AtomId::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
4078            AtomId::AtomAppSearchSetSchemaStatsReported => "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED",
4079            AtomId::AtomAppSearchSchemaMigrationStatsReported => "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED",
4080            AtomId::AtomAppSearchUsageSearchIntentStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED",
4081            AtomId::AtomAppSearchUsageSearchIntentRawQueryStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED",
4082            AtomId::AtomAppSearchAppsIndexerStatsReported => "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED",
4083            AtomId::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
4084            AtomId::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
4085            AtomId::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
4086            AtomId::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
4087            AtomId::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
4088            AtomId::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
4089            AtomId::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
4090            AtomId::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
4091            AtomId::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
4092            AtomId::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
4093            AtomId::AtomAutofillFillRequestReported => "ATOM_AUTOFILL_FILL_REQUEST_REPORTED",
4094            AtomId::AtomAutofillFillResponseReported => "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED",
4095            AtomId::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
4096            AtomId::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
4097            AtomId::AtomAutofillFieldClassificationEventReported => "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED",
4098            AtomId::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
4099            AtomId::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
4100            AtomId::AtomCarWakeupFromSuspendReported => "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED",
4101            AtomId::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
4102            AtomId::AtomBluetoothHashedDeviceNameReported => "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED",
4103            AtomId::AtomBluetoothL2capCocClientConnection => "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION",
4104            AtomId::AtomBluetoothL2capCocServerConnection => "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION",
4105            AtomId::AtomBluetoothLeSessionConnected => "ATOM_BLUETOOTH_LE_SESSION_CONNECTED",
4106            AtomId::AtomRestrictedBluetoothDeviceNameReported => "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED",
4107            AtomId::AtomBluetoothProfileConnectionAttempted => "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED",
4108            AtomId::AtomBluetoothContentProfileErrorReported => "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED",
4109            AtomId::AtomBluetoothRfcommConnectionAttempted => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED",
4110            AtomId::AtomRemoteDeviceInformationWithMetricId => "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID",
4111            AtomId::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
4112            AtomId::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
4113            AtomId::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
4114            AtomId::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
4115            AtomId::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
4116            AtomId::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
4117            AtomId::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
4118            AtomId::AtomBluetoothCrossLayerEventReported => "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED",
4119            AtomId::AtomBroadcastAudioSessionReported => "ATOM_BROADCAST_AUDIO_SESSION_REPORTED",
4120            AtomId::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
4121            AtomId::AtomBluetoothRfcommConnectionReportedAtClose => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE",
4122            AtomId::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
4123            AtomId::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
4124            AtomId::AtomCameraFeatureCombinationQueryEvent => "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT",
4125            AtomId::AtomCertificateTransparencyLogListStateChanged => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED",
4126            AtomId::AtomCertificateTransparencyLogListUpdateFailed => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED",
4127            AtomId::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
4128            AtomId::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
4129            AtomId::AtomTetheringActiveSessionsReported => "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED",
4130            AtomId::AtomNetworkStatsRecorderFileOperated => "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED",
4131            AtomId::AtomCoreNetworkingTerribleErrorOccurred => "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED",
4132            AtomId::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
4133            AtomId::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
4134            AtomId::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
4135            AtomId::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
4136            AtomId::AtomCpuPolicy => "ATOM_CPU_POLICY",
4137            AtomId::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
4138            AtomId::AtomCredentialManagerInitPhaseReported => "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED",
4139            AtomId::AtomCredentialManagerCandidatePhaseReported => "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED",
4140            AtomId::AtomCredentialManagerFinalPhaseReported => "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED",
4141            AtomId::AtomCredentialManagerTotalReported => "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED",
4142            AtomId::AtomCredentialManagerFinalnouidReported => "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED",
4143            AtomId::AtomCredentialManagerGetReported => "ATOM_CREDENTIAL_MANAGER_GET_REPORTED",
4144            AtomId::AtomCredentialManagerAuthClickReported => "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED",
4145            AtomId::AtomCredentialManagerApiv2Called => "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED",
4146            AtomId::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
4147            AtomId::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
4148            AtomId::AtomCronetEngineBuilderInitialized => "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED",
4149            AtomId::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
4150            AtomId::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
4151            AtomId::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
4152            AtomId::AtomDesktopModeSessionTaskUpdate => "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE",
4153            AtomId::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
4154            AtomId::AtomDeviceLockCheckInRequestReported => "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED",
4155            AtomId::AtomDeviceLockProvisioningCompleteReported => "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED",
4156            AtomId::AtomDeviceLockKioskAppRequestReported => "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED",
4157            AtomId::AtomDeviceLockCheckInRetryReported => "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED",
4158            AtomId::AtomDeviceLockProvisionFailureReported => "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED",
4159            AtomId::AtomDeviceLockLockUnlockDeviceFailureReported => "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED",
4160            AtomId::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
4161            AtomId::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
4162            AtomId::AtomDisplayModeDirectorVoteChanged => "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED",
4163            AtomId::AtomExternalDisplayStateChanged => "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED",
4164            AtomId::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
4165            AtomId::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
4166            AtomId::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
4167            AtomId::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
4168            AtomId::AtomExpressHistogramSampleReported => "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED",
4169            AtomId::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
4170            AtomId::AtomExpressUidHistogramSampleReported => "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED",
4171            AtomId::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
4172            AtomId::AtomFederatedComputeTrainingEventReported => "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED",
4173            AtomId::AtomExampleIteratorNextLatencyReported => "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED",
4174            AtomId::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
4175            AtomId::AtomBalAllowed => "ATOM_BAL_ALLOWED",
4176            AtomId::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
4177            AtomId::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
4178            AtomId::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
4179            AtomId::AtomStylusPredictionMetricsReported => "ATOM_STYLUS_PREDICTION_METRICS_REPORTED",
4180            AtomId::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
4181            AtomId::AtomMediaProjectionStateChanged => "ATOM_MEDIA_PROJECTION_STATE_CHANGED",
4182            AtomId::AtomMediaProjectionTargetChanged => "ATOM_MEDIA_PROJECTION_TARGET_CHANGED",
4183            AtomId::AtomExcessiveBinderProxyCountReported => "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED",
4184            AtomId::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
4185            AtomId::AtomMobileBytesTransferByProcState => "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE",
4186            AtomId::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
4187            AtomId::AtomSensitiveContentMediaProjectionSession => "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION",
4188            AtomId::AtomSensitiveNotificationAppProtectionSession => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION",
4189            AtomId::AtomSensitiveNotificationAppProtectionApplied => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED",
4190            AtomId::AtomSensitiveNotificationRedaction => "ATOM_SENSITIVE_NOTIFICATION_REDACTION",
4191            AtomId::AtomSensitiveContentAppProtection => "ATOM_SENSITIVE_CONTENT_APP_PROTECTION",
4192            AtomId::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
4193            AtomId::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
4194            AtomId::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
4195            AtomId::AtomPowerSaveTempAllowlistChanged => "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED",
4196            AtomId::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
4197            AtomId::AtomContentOrFileUriEventReported => "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED",
4198            AtomId::AtomApplicationGrammaticalInflectionChanged => "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED",
4199            AtomId::AtomSystemGrammaticalInflectionChanged => "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED",
4200            AtomId::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
4201            AtomId::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
4202            AtomId::AtomHdmiSoundbarModeStatusReported => "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED",
4203            AtomId::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
4204            AtomId::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
4205            AtomId::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
4206            AtomId::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
4207            AtomId::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
4208            AtomId::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
4209            AtomId::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
4210            AtomId::AtomHealthConnectExportImportStatsReported => "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED",
4211            AtomId::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
4212            AtomId::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
4213            AtomId::AtomHealthConnectAppOpenedReported => "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED",
4214            AtomId::AtomHotwordEgressSizeAtomReported => "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED",
4215            AtomId::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
4216            AtomId::AtomIkeLivenessCheckSessionValidated => "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED",
4217            AtomId::AtomNegotiatedSecurityAssociation => "ATOM_NEGOTIATED_SECURITY_ASSOCIATION",
4218            AtomId::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
4219            AtomId::AtomKeyboardSystemsEventReported => "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED",
4220            AtomId::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
4221            AtomId::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
4222            AtomId::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
4223            AtomId::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
4224            AtomId::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
4225            AtomId::AtomChreSignificantMotionStateChanged => "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED",
4226            AtomId::AtomPopulationDensityProviderLoadingReported => "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED",
4227            AtomId::AtomDensityBasedCoarseLocationsUsageReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED",
4228            AtomId::AtomDensityBasedCoarseLocationsProviderQueryReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED",
4229            AtomId::AtomMediaCodecReclaimRequestCompleted => "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED",
4230            AtomId::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
4231            AtomId::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
4232            AtomId::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
4233            AtomId::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
4234            AtomId::AtomMteState => "ATOM_MTE_STATE",
4235            AtomId::AtomMicroxrDeviceBootCompleteReported => "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED",
4236            AtomId::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
4237            AtomId::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
4238            AtomId::AtomNfcPollingLoopNotificationReported => "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED",
4239            AtomId::AtomNfcProprietaryCapabilitiesReported => "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED",
4240            AtomId::AtomOndevicepersonalizationApiCalled => "ATOM_ONDEVICEPERSONALIZATION_API_CALLED",
4241            AtomId::AtomComponentStateChangedReported => "ATOM_COMPONENT_STATE_CHANGED_REPORTED",
4242            AtomId::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
4243            AtomId::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
4244            AtomId::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
4245            AtomId::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
4246            AtomId::AtomPermissionRationaleDialogViewed => "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED",
4247            AtomId::AtomPermissionRationaleDialogActionReported => "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED",
4248            AtomId::AtomAppDataSharingUpdatesNotificationInteraction => "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION",
4249            AtomId::AtomAppDataSharingUpdatesFragmentViewed => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED",
4250            AtomId::AtomAppDataSharingUpdatesFragmentActionReported => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED",
4251            AtomId::AtomEnhancedConfirmationDialogResultReported => "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED",
4252            AtomId::AtomEnhancedConfirmationRestrictionCleared => "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED",
4253            AtomId::AtomPhotopickerSessionInfoReported => "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED",
4254            AtomId::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
4255            AtomId::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
4256            AtomId::AtomPhotopickerMediaItemStatusReported => "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED",
4257            AtomId::AtomPhotopickerPreviewInfoLogged => "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED",
4258            AtomId::AtomPhotopickerMenuInteractionLogged => "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED",
4259            AtomId::AtomPhotopickerBannerInteractionLogged => "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED",
4260            AtomId::AtomPhotopickerMediaLibraryInfoLogged => "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED",
4261            AtomId::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
4262            AtomId::AtomPhotopickerMediaGridSyncInfoReported => "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED",
4263            AtomId::AtomPhotopickerAlbumSyncInfoReported => "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED",
4264            AtomId::AtomPhotopickerSearchInfoReported => "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED",
4265            AtomId::AtomSearchDataExtractionDetailsReported => "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED",
4266            AtomId::AtomEmbeddedPhotopickerInfoReported => "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED",
4267            AtomId::AtomAtom9999 => "ATOM_ATOM_9999",
4268            AtomId::AtomAtom99999 => "ATOM_ATOM_99999",
4269            AtomId::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
4270            AtomId::AtomScreenTimeoutOverrideReported => "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED",
4271            AtomId::AtomScreenInteractiveSessionReported => "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED",
4272            AtomId::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
4273            AtomId::AtomMediaProviderDatabaseRollbackReported => "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED",
4274            AtomId::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
4275            AtomId::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
4276            AtomId::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
4277            AtomId::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
4278            AtomId::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
4279            AtomId::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
4280            AtomId::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
4281            AtomId::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
4282            AtomId::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
4283            AtomId::AtomSandboxActivityEventOccurred => "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED",
4284            AtomId::AtomSdkSandboxRestrictedAccessInSession => "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION",
4285            AtomId::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
4286            AtomId::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
4287            AtomId::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
4288            AtomId::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
4289            AtomId::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
4290            AtomId::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
4291            AtomId::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
4292            AtomId::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
4293            AtomId::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
4294            AtomId::AtomDisplaySwitchLatencyTracked => "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED",
4295            AtomId::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
4296            AtomId::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
4297            AtomId::AtomCommunalHubWidgetEventReported => "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED",
4298            AtomId::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
4299            AtomId::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
4300            AtomId::AtomCallStats => "ATOM_CALL_STATS",
4301            AtomId::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
4302            AtomId::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
4303            AtomId::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
4304            AtomId::AtomCellularRadioPowerStateChanged => "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED",
4305            AtomId::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
4306            AtomId::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
4307            AtomId::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
4308            AtomId::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
4309            AtomId::AtomIwlanUnderlyingNetworkValidationResultReported => "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED",
4310            AtomId::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
4311            AtomId::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
4312            AtomId::AtomQnsFallbackRestrictionChanged => "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED",
4313            AtomId::AtomQnsRatPreferenceMismatchInfo => "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO",
4314            AtomId::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
4315            AtomId::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
4316            AtomId::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
4317            AtomId::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
4318            AtomId::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
4319            AtomId::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
4320            AtomId::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
4321            AtomId::AtomSatelliteSosMessageRecommender => "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER",
4322            AtomId::AtomCarrierRoamingSatelliteSession => "ATOM_CARRIER_ROAMING_SATELLITE_SESSION",
4323            AtomId::AtomCarrierRoamingSatelliteControllerStats => "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS",
4324            AtomId::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
4325            AtomId::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
4326            AtomId::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
4327            AtomId::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
4328            AtomId::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
4329            AtomId::AtomThreadnetworkTelemetryDataReported => "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED",
4330            AtomId::AtomThreadnetworkTopoEntryRepeated => "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED",
4331            AtomId::AtomThreadnetworkDeviceInfoReported => "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED",
4332            AtomId::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
4333            AtomId::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
4334            AtomId::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
4335            AtomId::AtomTestUprobestatsAtomReported => "ATOM_TEST_UPROBESTATS_ATOM_REPORTED",
4336            AtomId::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
4337            AtomId::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
4338            AtomId::AtomSysproxyBluetoothBytesTransfer => "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER",
4339            AtomId::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
4340            AtomId::AtomWearCompanionConnectionState => "ATOM_WEAR_COMPANION_CONNECTION_STATE",
4341            AtomId::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
4342            AtomId::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
4343            AtomId::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
4344            AtomId::AtomWearMediaOutputSwitcherDeviceScanApiLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY",
4345            AtomId::AtomWearMediaOutputSwitcherSassDeviceUnavailable => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE",
4346            AtomId::AtomWearMediaOutputSwitcherFastpairApiTimeout => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT",
4347            AtomId::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
4348            AtomId::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
4349            AtomId::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
4350            AtomId::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
4351            AtomId::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
4352            AtomId::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
4353            AtomId::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
4354            AtomId::AtomTileRequested => "ATOM_TILE_REQUESTED",
4355            AtomId::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
4356            AtomId::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
4357            AtomId::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
4358            AtomId::AtomInflationFailed => "ATOM_INFLATION_FAILED",
4359            AtomId::AtomIgnoredInflationFailuresReported => "ATOM_IGNORED_INFLATION_FAILURES_REPORTED",
4360            AtomId::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
4361            AtomId::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
4362            AtomId::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
4363            AtomId::AtomWearTimeSyncAttemptCompleted => "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED",
4364            AtomId::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
4365            AtomId::AtomWearAdaptiveSuspendStatsReported => "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED",
4366            AtomId::AtomWearPowerAnomalyServiceOperationalStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED",
4367            AtomId::AtomWearPowerAnomalyServiceEventStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED",
4368            AtomId::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
4369            AtomId::AtomWsIncomingCallActionReported => "ATOM_WS_INCOMING_CALL_ACTION_REPORTED",
4370            AtomId::AtomWsCallDisconnectionReported => "ATOM_WS_CALL_DISCONNECTION_REPORTED",
4371            AtomId::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
4372            AtomId::AtomWsCallUserExperienceLatencyReported => "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED",
4373            AtomId::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
4374            AtomId::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
4375            AtomId::AtomWsWatchFaceRestrictedComplicationsImpacted => "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED",
4376            AtomId::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED",
4377            AtomId::AtomWsComplicationsImpactedNotificationEventReported => "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED",
4378            AtomId::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
4379            AtomId::AtomWsBugreportRequested => "ATOM_WS_BUGREPORT_REQUESTED",
4380            AtomId::AtomWsBugreportTriggered => "ATOM_WS_BUGREPORT_TRIGGERED",
4381            AtomId::AtomWsBugreportFinished => "ATOM_WS_BUGREPORT_FINISHED",
4382            AtomId::AtomWsBugreportResultReceived => "ATOM_WS_BUGREPORT_RESULT_RECEIVED",
4383            AtomId::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
4384            AtomId::AtomWsFavoriteWatchFaceSnapshot => "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT",
4385            AtomId::AtomWsPhotosWatchFaceFeatureSnapshot => "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT",
4386            AtomId::AtomWsWatchFaceCustomizationSnapshot => "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT",
4387            AtomId::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
4388            AtomId::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
4389            AtomId::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
4390            AtomId::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
4391            AtomId::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
4392            AtomId::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
4393            AtomId::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
4394            AtomId::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
4395            AtomId::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
4396            AtomId::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
4397            AtomId::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
4398            AtomId::AtomWifiAwareResourceUsingChanged => "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED",
4399            AtomId::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
4400            AtomId::AtomWifiLocalOnlyRequestReceived => "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED",
4401            AtomId::AtomWifiLocalOnlyRequestScanTriggered => "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED",
4402            AtomId::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
4403            AtomId::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
4404            AtomId::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
4405            AtomId::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
4406            AtomId::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
4407            AtomId::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
4408            AtomId::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
4409            AtomId::AtomScorerPredictionResultReported => "ATOM_SCORER_PREDICTION_RESULT_REPORTED",
4410            AtomId::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
4411            AtomId::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
4412            AtomId::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
4413            AtomId::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
4414            AtomId::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
4415        }
4416    }
4417}
4418/// This file is named 'statsd_tracing_config.proto' rather than
4419/// 'statsd_config.proto' (which would be more consistent with the other
4420/// config protos) so it doesn't show up and confuse folks looking for
4421/// the existing statsd_config.proto for configuring statsd itself.
4422/// Same for the config proto itself.
4423#[derive(Clone, PartialEq, ::prost::Message)]
4424pub struct StatsdTracingConfig {
4425    /// This is for the common case of the atom id being known in the enum AtomId.
4426    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
4427    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
4428    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
4429    /// (e.g. non-upstream atoms that don't exist in AOSP).
4430    #[prost(int32, repeated, packed="false", tag="2")]
4431    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
4432    #[prost(message, repeated, tag="3")]
4433    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
4434}
4435#[derive(Clone, PartialEq, ::prost::Message)]
4436pub struct StatsdPullAtomConfig {
4437    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
4438    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
4439    #[prost(int32, repeated, packed="false", tag="2")]
4440    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
4441    #[prost(int32, optional, tag="3")]
4442    pub pull_frequency_ms: ::core::option::Option<i32>,
4443    #[prost(string, repeated, tag="4")]
4444    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4445}
4446/// Configuration that allows to boost the priority of the 'traced' or
4447/// 'traced_probs' processes, by changing the scheduler configuration.
4448/// Only supported on Linux and Android the boosted process must have
4449/// 'CAP_SYS_NICE' capability.
4450#[derive(Clone, PartialEq, ::prost::Message)]
4451pub struct PriorityBoostConfig {
4452    #[prost(enumeration="priority_boost_config::BoostPolicy", optional, tag="1")]
4453    pub policy: ::core::option::Option<i32>,
4454    #[prost(uint32, optional, tag="2")]
4455    pub priority: ::core::option::Option<u32>,
4456}
4457/// Nested message and enum types in `PriorityBoostConfig`.
4458pub mod priority_boost_config {
4459    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4460    #[repr(i32)]
4461    pub enum BoostPolicy {
4462        PolicyUnspecified = 0,
4463        /// The default policy (e.g., CFS on Linux). Priority range: [0; 20]
4464        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
4465        /// than default 0, 20 is the highest priority.
4466        /// Note: this is the opposite semantic of the cmdline nice, and is done for
4467        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
4468        PolicySchedOther = 1,
4469        /// The Real-time policy, Priority range: [1; 99]
4470        PolicySchedFifo = 2,
4471    }
4472    impl BoostPolicy {
4473        /// String value of the enum field names used in the ProtoBuf definition.
4474        ///
4475        /// The values are not transformed in any way and thus are considered stable
4476        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4477        pub fn as_str_name(&self) -> &'static str {
4478            match self {
4479                BoostPolicy::PolicyUnspecified => "POLICY_UNSPECIFIED",
4480                BoostPolicy::PolicySchedOther => "POLICY_SCHED_OTHER",
4481                BoostPolicy::PolicySchedFifo => "POLICY_SCHED_FIFO",
4482            }
4483        }
4484    }
4485}
4486#[derive(Clone, PartialEq, ::prost::Message)]
4487pub struct ProcessStatsConfig {
4488    #[prost(enumeration="process_stats_config::Quirks", repeated, packed="false", tag="1")]
4489    pub quirks: ::prost::alloc::vec::Vec<i32>,
4490    /// If enabled all processes will be scanned and dumped when the trace starts.
4491    #[prost(bool, optional, tag="2")]
4492    pub scan_all_processes_on_start: ::core::option::Option<bool>,
4493    /// If enabled thread names are also recoded (this is redundant if sched_switch
4494    /// is enabled).
4495    #[prost(bool, optional, tag="3")]
4496    pub record_thread_names: ::core::option::Option<bool>,
4497    /// If > 0 samples counters (see process_stats.proto) from
4498    /// /proc/pid/status and oom_score_adj every X ms.
4499    /// It will also sample /proc/pid/smaps_rollup if scan_smaps_rollup = true.
4500    /// This is required to be > 100ms to avoid excessive CPU usage.
4501    #[prost(uint32, optional, tag="4")]
4502    pub proc_stats_poll_ms: ::core::option::Option<u32>,
4503    // id 5 never used
4504
4505    /// This is required to be either = 0 or a multiple of |proc_stats_poll_ms|
4506    /// (default: |proc_stats_poll_ms|). If = 0, will be set to
4507    /// |proc_stats_poll_ms|. Non-multiples will be rounded down to the nearest
4508    /// multiple.
4509    #[prost(uint32, optional, tag="6")]
4510    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
4511    /// Niche feature: If true this will resolve file descriptors for each process
4512    /// so these can be mapped to their actual device or file.
4513    /// Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled or
4514    /// new fds opened after initially scanning a process will not be
4515    /// recognized.
4516    #[prost(bool, optional, tag="9")]
4517    pub resolve_process_fds: ::core::option::Option<bool>,
4518    /// If true, output will include memory stats from /proc/pid/smaps_rollup.
4519    ///
4520    /// Does NOT work with the Android system daemon by default, as it requires
4521    /// running the recording process (traced_probes or tracebox) as root. It is
4522    /// possible to avoid the root requirement, but the exact steps depend on the
4523    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
4524    /// check, and might be further covered by the procfs "hidepid" mount option.
4525    #[prost(bool, optional, tag="10")]
4526    pub scan_smaps_rollup: ::core::option::Option<bool>,
4527    /// If true: process descriptions will include process age (starttime in
4528    /// /proc/pid/stat).
4529    /// Introduced in: perfetto v44.
4530    #[prost(bool, optional, tag="11")]
4531    pub record_process_age: ::core::option::Option<bool>,
4532    /// If true and |proc_stats_poll_ms| is true, process stats will include time
4533    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
4534    /// Introduced in: perfetto v44.
4535    #[prost(bool, optional, tag="12")]
4536    pub record_process_runtime: ::core::option::Option<bool>,
4537}
4538/// Nested message and enum types in `ProcessStatsConfig`.
4539pub mod process_stats_config {
4540    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4541    #[repr(i32)]
4542    pub enum Quirks {
4543        Unspecified = 0,
4544        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
4545        /// startup is now disabled by default and can be re-enabled using the
4546        /// |scan_all_processes_on_start| arg.
4547        DisableInitialDump = 1,
4548        DisableOnDemand = 2,
4549    }
4550    impl Quirks {
4551        /// String value of the enum field names used in the ProtoBuf definition.
4552        ///
4553        /// The values are not transformed in any way and thus are considered stable
4554        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4555        pub fn as_str_name(&self) -> &'static str {
4556            match self {
4557                Quirks::Unspecified => "QUIRKS_UNSPECIFIED",
4558                Quirks::DisableInitialDump => "DISABLE_INITIAL_DUMP",
4559                Quirks::DisableOnDemand => "DISABLE_ON_DEMAND",
4560            }
4561        }
4562    }
4563}
4564/// Configuration for go/heapprofd.
4565/// Next id: 28
4566#[derive(Clone, PartialEq, ::prost::Message)]
4567pub struct HeapprofdConfig {
4568    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
4569    ///
4570    /// These are:
4571    /// * All heaps if heap_sampling_intervals is empty.
4572    /// * Those profiled due to all_heaps and not named in heaps if
4573    ///    heap_sampling_intervals is not empty.
4574    /// * The implicit libc.malloc heap if heaps is empty.
4575    ///
4576    /// Set to 1 for perfect accuracy.
4577    /// Otherwise, sample every sample_interval_bytes on average.
4578    ///
4579    /// See
4580    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
4581    /// for more details.
4582    ///
4583    /// BUGS
4584    /// Before Android 12, setting this to 0 would crash the target process.
4585    ///
4586    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
4587    /// this field or with heap_sampling_intervals), otherwise the producer will
4588    /// not start.
4589    #[prost(uint64, optional, tag="1")]
4590    pub sampling_interval_bytes: ::core::option::Option<u64>,
4591    /// If less than the given numbers of bytes are left free in the shared
4592    /// memory buffer, increase sampling interval by a factor of two.
4593    /// Adaptive sampling is disabled when set to 0.
4594    #[prost(uint64, optional, tag="24")]
4595    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
4596    /// Stop doubling the sampling_interval once the sampling interval has reached
4597    /// this value.
4598    #[prost(uint64, optional, tag="25")]
4599    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
4600    /// E.g. surfaceflinger, com.android.phone
4601    /// This input is normalized in the following way: if it contains slashes,
4602    /// everything up to the last slash is discarded. If it contains "@",
4603    /// everything after the first @ is discared.
4604    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
4605    /// This transformation is also applied to the processes' command lines when
4606    /// matching.
4607    #[prost(string, repeated, tag="2")]
4608    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4609    /// For watermark based triggering or local debugging.
4610    #[prost(uint64, repeated, packed="false", tag="4")]
4611    pub pid: ::prost::alloc::vec::Vec<u64>,
4612    /// Only profile target if it was installed by one of the packages given.
4613    /// Special values are:
4614    /// * @system: installed on the system partition
4615    /// * @product: installed on the product partition
4616    /// * @null: sideloaded
4617    /// Supported on Android 12+.
4618    #[prost(string, repeated, tag="26")]
4619    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4620    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
4621    /// "malloc".
4622    ///
4623    /// Introduced in Android 12.
4624    #[prost(string, repeated, tag="20")]
4625    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4626    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
4627    /// combination with all_heaps;
4628    ///
4629    /// Introduced in Android 12.
4630    #[prost(string, repeated, tag="27")]
4631    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4632    #[prost(bool, optional, tag="23")]
4633    pub stream_allocations: ::core::option::Option<bool>,
4634    /// If given, needs to be the same length as heaps and gives the sampling
4635    /// interval for the respective entry in heaps.
4636    ///
4637    /// Otherwise, sampling_interval_bytes is used.
4638    ///
4639    /// It is recommended to set sampling_interval_bytes to a reasonable default
4640    /// value when using this, as a value of 0 for sampling_interval_bytes will
4641    /// crash the target process before Android 12.
4642    ///
4643    /// Introduced in Android 12.
4644    ///
4645    /// All values must be non-zero or the producer will not start.
4646    #[prost(uint64, repeated, packed="false", tag="22")]
4647    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
4648    /// Sample all heaps registered by target process. Introduced in Android 12.
4649    #[prost(bool, optional, tag="21")]
4650    pub all_heaps: ::core::option::Option<bool>,
4651    /// Profile all processes eligible for profiling on the system.
4652    /// See
4653    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
4654    /// for which processes are eligible.
4655    ///
4656    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
4657    /// will crash when trying to launch a new process as it will have an
4658    /// unexpected open socket to heapprofd.
4659    ///
4660    /// heapprofd will likely be overloaded by the amount of data for low
4661    /// sampling intervals.
4662    #[prost(bool, optional, tag="5")]
4663    pub all: ::core::option::Option<bool>,
4664    /// Do not profile processes whose anon RSS + swap < given value.
4665    /// Introduced in Android 11.
4666    #[prost(uint32, optional, tag="15")]
4667    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
4668    /// Stop profile if heapprofd memory usage goes beyond the given value.
4669    /// Introduced in Android 11.
4670    #[prost(uint32, optional, tag="16")]
4671    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
4672    /// Stop profile if heapprofd CPU time since start of this data-source
4673    /// goes beyond given value.
4674    /// Introduced in Android 11.
4675    #[prost(uint64, optional, tag="17")]
4676    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
4677    /// Do not emit function names for mappings starting with this prefix.
4678    /// E.g. /system to not emit symbols for any system libraries.
4679    #[prost(string, repeated, tag="7")]
4680    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4681    /// Dump at a predefined interval.
4682    #[prost(message, optional, tag="6")]
4683    pub continuous_dump_config: ::core::option::Option<heapprofd_config::ContinuousDumpConfig>,
4684    /// Size of the shared memory buffer between the profiled processes and
4685    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
4686    /// MiB.
4687    ///
4688    /// Needs to be:
4689    /// * at least 8192,
4690    /// * a power of two,
4691    /// * a multiple of 4096.
4692    #[prost(uint64, optional, tag="8")]
4693    pub shmem_size_bytes: ::core::option::Option<u64>,
4694    /// When the shmem buffer is full, block the client instead of ending the
4695    /// trace. Use with caution as this will significantly slow down the target
4696    /// process.
4697    #[prost(bool, optional, tag="9")]
4698    pub block_client: ::core::option::Option<bool>,
4699    /// If set, stop the trace session after blocking the client for this
4700    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
4701    /// Introduced in Android 11.
4702    #[prost(uint32, optional, tag="14")]
4703    pub block_client_timeout_us: ::core::option::Option<u32>,
4704    /// Do not profile processes from startup, only match already running
4705    /// processes.
4706    ///
4707    /// Can not be set at the same time as no_running.
4708    /// Introduced in Android 11.
4709    #[prost(bool, optional, tag="10")]
4710    pub no_startup: ::core::option::Option<bool>,
4711    /// Do not profile running processes. Only match processes on startup.
4712    ///
4713    /// Can not be set at the same time as no_startup.
4714    /// Introduced in Android 11.
4715    #[prost(bool, optional, tag="11")]
4716    pub no_running: ::core::option::Option<bool>,
4717    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
4718    /// at the point in time when the sampled heap usage of the process was at its
4719    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
4720    /// self_allocated and self_freed to not be set.
4721    /// Introduced in Android 11.
4722    #[prost(bool, optional, tag="13")]
4723    pub dump_at_max: ::core::option::Option<bool>,
4724    // FEATURE FLAGS. THERE BE DRAGONS.
4725
4726    /// Escape hatch if the session is being torn down because of a forked child
4727    /// that shares memory space, but is not correctly identified as a vforked
4728    /// child.
4729    /// Introduced in Android 11.
4730    #[prost(bool, optional, tag="18")]
4731    pub disable_fork_teardown: ::core::option::Option<bool>,
4732    /// We try to automatically detect when a target applicatation vforks but then
4733    /// does a memory allocation (or free). This auto-detection can be disabled
4734    /// with this.
4735    /// Introduced in Android 11.
4736    #[prost(bool, optional, tag="19")]
4737    pub disable_vfork_detection: ::core::option::Option<bool>,
4738}
4739/// Nested message and enum types in `HeapprofdConfig`.
4740pub mod heapprofd_config {
4741    #[derive(Clone, PartialEq, ::prost::Message)]
4742    pub struct ContinuousDumpConfig {
4743        /// ms to wait before first dump.
4744        #[prost(uint32, optional, tag="5")]
4745        pub dump_phase_ms: ::core::option::Option<u32>,
4746        /// ms to wait between following dumps.
4747        #[prost(uint32, optional, tag="6")]
4748        pub dump_interval_ms: ::core::option::Option<u32>,
4749    }
4750}
4751/// Configuration for managed app heap graph snapshots.
4752#[derive(Clone, PartialEq, ::prost::Message)]
4753pub struct JavaHprofConfig {
4754    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
4755    /// comm string). The semantics of this field were changed since its original
4756    /// introduction.
4757    ///
4758    /// On Android T+ (13+), this field can specify a single wildcard (*), and
4759    /// the profiler will attempt to match it in two possible ways:
4760    /// * if the pattern starts with a '/', then it is matched against the first
4761    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
4762    ///    "/bin/echo".
4763    /// * otherwise the pattern is matched against the part of argv0
4764    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
4765    ///    For example "echo" would match "/bin/echo".
4766    ///
4767    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
4768    /// normalized prior to an exact string comparison. Normalization is as
4769    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
4770    /// the string contains forward slashes, trim everything up to and including
4771    /// the last one.
4772    ///
4773    /// Implementation note: in either case, at most 511 characters of cmdline
4774    /// are considered.
4775    #[prost(string, repeated, tag="1")]
4776    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4777    /// For watermark based triggering or local debugging.
4778    #[prost(uint64, repeated, packed="false", tag="2")]
4779    pub pid: ::prost::alloc::vec::Vec<u64>,
4780    /// Only profile target if it was installed by one of the packages given.
4781    /// Special values are:
4782    /// * @system: installed on the system partition
4783    /// * @product: installed on the product partition
4784    /// * @null: sideloaded
4785    /// Supported on Android 12+.
4786    #[prost(string, repeated, tag="7")]
4787    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4788    /// Dump at a predefined interval.
4789    #[prost(message, optional, tag="3")]
4790    pub continuous_dump_config: ::core::option::Option<java_hprof_config::ContinuousDumpConfig>,
4791    /// Do not profile processes whose anon RSS + swap < given value.
4792    #[prost(uint32, optional, tag="4")]
4793    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
4794    /// Include the process' /proc/self/smaps.
4795    /// This only shows maps that:
4796    /// * start with /system
4797    /// * start with /vendor
4798    /// * start with /data/app
4799    /// * contain "extracted in memory from Y", where Y matches any of the above
4800    #[prost(bool, optional, tag="5")]
4801    pub dump_smaps: ::core::option::Option<bool>,
4802    /// Exclude objects of the following types from the profile. This can be
4803    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
4804    #[prost(string, repeated, tag="6")]
4805    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4806}
4807/// Nested message and enum types in `JavaHprofConfig`.
4808pub mod java_hprof_config {
4809    /// If dump_interval_ms != 0, the following configuration is used.
4810    #[derive(Clone, PartialEq, ::prost::Message)]
4811    pub struct ContinuousDumpConfig {
4812        /// ms to wait before first continuous dump.
4813        /// A dump is always created at the beginning of the trace.
4814        #[prost(uint32, optional, tag="1")]
4815        pub dump_phase_ms: ::core::option::Option<u32>,
4816        /// ms to wait between following dumps.
4817        #[prost(uint32, optional, tag="2")]
4818        pub dump_interval_ms: ::core::option::Option<u32>,
4819        /// If true, scans all the processes to find `process_cmdline` and filter by
4820        /// `min_anonymous_memory_kb` only at data source start. Default on Android
4821        /// S-.
4822        ///
4823        /// If false, rescans all the processes to find on every dump. Default on
4824        /// Android T+.
4825        #[prost(bool, optional, tag="3")]
4826        pub scan_pids_only_on_start: ::core::option::Option<bool>,
4827    }
4828}
4829#[derive(Clone, PartialEq, ::prost::Message)]
4830pub struct PerfEvents {
4831}
4832/// Nested message and enum types in `PerfEvents`.
4833pub mod perf_events {
4834    /// The primary event to count. If recording multiple events, this
4835    /// counter is the "group leader".
4836    /// Commented from the perspective of its use in |PerfEventConfig|.
4837    /// Next id: 12
4838    #[derive(Clone, PartialEq, ::prost::Message)]
4839    pub struct Timebase {
4840        /// If set, samples will be timestamped with the given clock.
4841        /// If unset, the clock is chosen by the implementation.
4842        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
4843        /// used for hardware events (due to interrupt safety), for which the
4844        /// recommendation is to use one of the monotonic clocks.
4845        #[prost(enumeration="PerfClock", optional, tag="11")]
4846        pub timestamp_clock: ::core::option::Option<i32>,
4847        /// Optional arbitrary name for the event, to identify it in the parsed
4848        /// trace. Does *not* affect the profiling itself. If unset, the trace
4849        /// parser will choose a suitable name.
4850        #[prost(string, optional, tag="10")]
4851        pub name: ::core::option::Option<::prost::alloc::string::String>,
4852        /// How often to snapshot the counter, along with any follower events and
4853        /// any additional sampled data such as callstacks.
4854        ///
4855        /// This choice also controls how the readings are taken:
4856        /// * With |frequency| or |period|, samples are taken by the kernel
4857        ///    into a ring buffer. Analogous to `perf record`.
4858        /// * With |poll_period_ms|, the userspace periodically snapshots
4859        ///    the counters using the read syscall. Analogous to `perf stat -I`.
4860        /// Prefer the sampling options unless you're recording PMUs whose
4861        /// perf drivers only support the reading mode.
4862        ///
4863        /// If unset, an implementation-defined sampling default is used.
4864        #[prost(oneof="timebase::Interval", tags="2, 1, 6")]
4865        pub interval: ::core::option::Option<timebase::Interval>,
4866        /// Counting event to use as the timebase.
4867        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
4868        /// which is what you usually want.
4869        #[prost(oneof="timebase::Event", tags="4, 3, 5")]
4870        pub event: ::core::option::Option<timebase::Event>,
4871    }
4872    /// Nested message and enum types in `Timebase`.
4873    pub mod timebase {
4874        /// How often to snapshot the counter, along with any follower events and
4875        /// any additional sampled data such as callstacks.
4876        ///
4877        /// This choice also controls how the readings are taken:
4878        /// * With |frequency| or |period|, samples are taken by the kernel
4879        ///    into a ring buffer. Analogous to `perf record`.
4880        /// * With |poll_period_ms|, the userspace periodically snapshots
4881        ///    the counters using the read syscall. Analogous to `perf stat -I`.
4882        /// Prefer the sampling options unless you're recording PMUs whose
4883        /// perf drivers only support the reading mode.
4884        ///
4885        /// If unset, an implementation-defined sampling default is used.
4886        #[derive(Clone, PartialEq, ::prost::Oneof)]
4887        pub enum Interval {
4888            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
4889            /// same as 1/period.
4890            /// Details: the actual sampling will still be based on a period, but the
4891            /// kernel will dynamically adjust it based on the observed event rate, to
4892            /// approximate this frequency. Works best with steady-rate events like
4893            /// timers.
4894            /// Not guaranteed to be honored as the kernel can throttle the sampling
4895            /// rate if it's too high.
4896            #[prost(uint64, tag="2")]
4897            Frequency(u64),
4898            /// Per-cpu sampling will occur every |period| counts of |event|.
4899            /// Prefer |frequency| by default, as it's easier to oversample with a
4900            /// fixed period.
4901            /// Not guaranteed to be honored as the kernel can throttle the sampling
4902            /// rate if it's too high.
4903            #[prost(uint64, tag="1")]
4904            Period(u64),
4905            /// Per-cpu values are read by the userspace every interval. If using this
4906            /// mode, only follower events are supported. Options such as
4907            /// |PerfEventConfig.CallstackSampling| are incompatible.
4908            /// The period can't be guaranteed to be exact since the readings are taken
4909            /// by userspace.
4910            #[prost(uint32, tag="6")]
4911            PollPeriodMs(u32),
4912        }
4913        /// Counting event to use as the timebase.
4914        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
4915        /// which is what you usually want.
4916        #[derive(Clone, PartialEq, ::prost::Oneof)]
4917        pub enum Event {
4918            #[prost(enumeration="super::Counter", tag="4")]
4919            Counter(i32),
4920            #[prost(message, tag="3")]
4921            Tracepoint(super::Tracepoint),
4922            #[prost(message, tag="5")]
4923            RawEvent(super::RawEvent),
4924        }
4925    }
4926    #[derive(Clone, PartialEq, ::prost::Message)]
4927    pub struct Tracepoint {
4928        /// Group and name for the tracepoint, acceptable forms:
4929        /// * "sched/sched_switch"
4930        /// * "sched:sched_switch"
4931        #[prost(string, optional, tag="1")]
4932        pub name: ::core::option::Option<::prost::alloc::string::String>,
4933        /// Optional field-level filter for the tracepoint. Only events matching this
4934        /// filter will be counted (and therefore contribute to the sampling period).
4935        /// Example: "prev_pid >= 42 && next_pid == 0".
4936        /// For full syntax, see kernel documentation on "Event filtering":
4937        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
4938        #[prost(string, optional, tag="2")]
4939        pub filter: ::core::option::Option<::prost::alloc::string::String>,
4940    }
4941    /// Syscall-level description of the event, propagated to the perf_event_attr
4942    /// struct. Primarily for local use-cases, since the event availability and
4943    /// encoding is hardware-specific.
4944    #[derive(Clone, PartialEq, ::prost::Message)]
4945    pub struct RawEvent {
4946        #[prost(uint32, optional, tag="1")]
4947        pub r#type: ::core::option::Option<u32>,
4948        #[prost(uint64, optional, tag="2")]
4949        pub config: ::core::option::Option<u64>,
4950        #[prost(uint64, optional, tag="3")]
4951        pub config1: ::core::option::Option<u64>,
4952        #[prost(uint64, optional, tag="4")]
4953        pub config2: ::core::option::Option<u64>,
4954    }
4955    /// Builtin counter names from the uapi header. Commented with their perf tool
4956    /// aliases.
4957    /// TODO(rsavitski): consider generating enums for cache events (should be
4958    /// finite), and generally make this list as extensive as possible. Excluding
4959    /// things like dynamic PMUs since those don't fit into a static enum.
4960    /// Next id: 21
4961    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4962    #[repr(i32)]
4963    pub enum Counter {
4964        UnknownCounter = 0,
4965        /// cpu-clock
4966        SwCpuClock = 1,
4967        /// page-faults, faults
4968        SwPageFaults = 2,
4969        /// task-clock
4970        SwTaskClock = 3,
4971        /// context-switches, cs
4972        SwContextSwitches = 4,
4973        /// cpu-migrations, migrations
4974        SwCpuMigrations = 5,
4975        /// minor-faults
4976        SwPageFaultsMin = 6,
4977        /// major-faults
4978        SwPageFaultsMaj = 7,
4979        /// alignment-faults
4980        SwAlignmentFaults = 8,
4981        /// emulation-faults
4982        SwEmulationFaults = 9,
4983        /// dummy
4984        SwDummy = 20,
4985        /// cpu-cycles, cycles
4986        HwCpuCycles = 10,
4987        /// instructions
4988        HwInstructions = 11,
4989        /// cache-references
4990        HwCacheReferences = 12,
4991        /// cache-misses
4992        HwCacheMisses = 13,
4993        /// branch-instructions, branches
4994        HwBranchInstructions = 14,
4995        /// branch-misses
4996        HwBranchMisses = 15,
4997        /// bus-cycles
4998        HwBusCycles = 16,
4999        /// stalled-cycles-frontend, idle-cycles-frontend
5000        HwStalledCyclesFrontend = 17,
5001        /// stalled-cycles-backend, idle-cycles-backend
5002        HwStalledCyclesBackend = 18,
5003        /// ref-cycles
5004        HwRefCpuCycles = 19,
5005    }
5006    impl Counter {
5007        /// String value of the enum field names used in the ProtoBuf definition.
5008        ///
5009        /// The values are not transformed in any way and thus are considered stable
5010        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5011        pub fn as_str_name(&self) -> &'static str {
5012            match self {
5013                Counter::UnknownCounter => "UNKNOWN_COUNTER",
5014                Counter::SwCpuClock => "SW_CPU_CLOCK",
5015                Counter::SwPageFaults => "SW_PAGE_FAULTS",
5016                Counter::SwTaskClock => "SW_TASK_CLOCK",
5017                Counter::SwContextSwitches => "SW_CONTEXT_SWITCHES",
5018                Counter::SwCpuMigrations => "SW_CPU_MIGRATIONS",
5019                Counter::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
5020                Counter::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
5021                Counter::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
5022                Counter::SwEmulationFaults => "SW_EMULATION_FAULTS",
5023                Counter::SwDummy => "SW_DUMMY",
5024                Counter::HwCpuCycles => "HW_CPU_CYCLES",
5025                Counter::HwInstructions => "HW_INSTRUCTIONS",
5026                Counter::HwCacheReferences => "HW_CACHE_REFERENCES",
5027                Counter::HwCacheMisses => "HW_CACHE_MISSES",
5028                Counter::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
5029                Counter::HwBranchMisses => "HW_BRANCH_MISSES",
5030                Counter::HwBusCycles => "HW_BUS_CYCLES",
5031                Counter::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
5032                Counter::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
5033                Counter::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
5034            }
5035        }
5036    }
5037    /// Subset of clocks that is supported by perf timestamping.
5038    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
5039    /// would require additions to the trace clock synchronisation logic.
5040    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5041    #[repr(i32)]
5042    pub enum PerfClock {
5043        UnknownPerfClock = 0,
5044        Realtime = 1,
5045        Monotonic = 2,
5046        MonotonicRaw = 3,
5047        Boottime = 4,
5048    }
5049    impl PerfClock {
5050        /// String value of the enum field names used in the ProtoBuf definition.
5051        ///
5052        /// The values are not transformed in any way and thus are considered stable
5053        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5054        pub fn as_str_name(&self) -> &'static str {
5055            match self {
5056                PerfClock::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
5057                PerfClock::Realtime => "PERF_CLOCK_REALTIME",
5058                PerfClock::Monotonic => "PERF_CLOCK_MONOTONIC",
5059                PerfClock::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
5060                PerfClock::Boottime => "PERF_CLOCK_BOOTTIME",
5061            }
5062        }
5063    }
5064}
5065/// Additional events associated with a leader.
5066/// Configuration is similar to Timebase event. Because data acquisition is
5067/// driven by the leader there is no option to configure the clock or the
5068/// frequency.
5069#[derive(Clone, PartialEq, ::prost::Message)]
5070pub struct FollowerEvent {
5071    #[prost(string, optional, tag="4")]
5072    pub name: ::core::option::Option<::prost::alloc::string::String>,
5073    #[prost(oneof="follower_event::Event", tags="1, 2, 3")]
5074    pub event: ::core::option::Option<follower_event::Event>,
5075}
5076/// Nested message and enum types in `FollowerEvent`.
5077pub mod follower_event {
5078    #[derive(Clone, PartialEq, ::prost::Oneof)]
5079    pub enum Event {
5080        #[prost(enumeration="super::perf_events::Counter", tag="1")]
5081        Counter(i32),
5082        #[prost(message, tag="2")]
5083        Tracepoint(super::perf_events::Tracepoint),
5084        #[prost(message, tag="3")]
5085        RawEvent(super::perf_events::RawEvent),
5086    }
5087}
5088/// Configuration for the traced_perf profiler.
5089///
5090/// Example config for basic cpu profiling:
5091///    perf_event_config {
5092///      timebase {
5093///        frequency: 80
5094///      }
5095///      callstack_sampling {
5096///        scope {
5097///          target_cmdline: "surfaceflinger"
5098///          target_cmdline: "system_server"
5099///        }
5100///        kernel_frames: true
5101///      }
5102///    }
5103///
5104/// Next id: 21
5105#[derive(Clone, PartialEq, ::prost::Message)]
5106pub struct PerfEventConfig {
5107    /// What event to sample on, and how often.
5108    /// Defined in common/perf_events.proto.
5109    #[prost(message, optional, tag="15")]
5110    pub timebase: ::core::option::Option<perf_events::Timebase>,
5111    /// Other events associated with the leader described in the timebase.
5112    #[prost(message, repeated, tag="19")]
5113    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
5114    /// If set, the profiler will sample userspace processes' callstacks at the
5115    /// interval specified by the |timebase|.
5116    /// If unset, the profiler will record only the event counts.
5117    #[prost(message, optional, tag="16")]
5118    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
5119    /// List of cpu indices for counting. If empty, the default is all cpus.
5120    ///
5121    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
5122    /// counter-only traces. A future change will likely reorganise the options,
5123    /// but this field will continue to be supported.
5124    ///
5125    /// Available since: perfetto v50.
5126    #[prost(uint32, repeated, packed="false", tag="20")]
5127    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
5128    //
5129    // Kernel <-> userspace ring buffer options:
5130    //
5131
5132    /// How often the per-cpu ring buffers are read by the producer.
5133    /// If unset, an implementation-defined default is used.
5134    #[prost(uint32, optional, tag="8")]
5135    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
5136    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
5137    /// kernel. If set, must be a power of two.
5138    /// If unset, an implementation-defined default is used.
5139    #[prost(uint32, optional, tag="3")]
5140    pub ring_buffer_pages: ::core::option::Option<u32>,
5141    //
5142    // Daemon's resource usage limits:
5143    //
5144
5145    /// Drop samples if the heap memory held by the samples in the unwinder queue
5146    /// is above the given limit. This counts the memory across all concurrent data
5147    /// sources (not just this one's), and there is no fairness guarantee - the
5148    /// whole quota might be used up by a concurrent source.
5149    #[prost(uint64, optional, tag="17")]
5150    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
5151    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
5152    /// footprint exceeds this value.
5153    #[prost(uint32, optional, tag="13")]
5154    pub max_daemon_memory_kb: ::core::option::Option<u32>,
5155    //
5156    // Uncommon options:
5157    //
5158
5159    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
5160    /// sampled process. This is primarily for Android, where this lookup is
5161    /// asynchronous. As long as the producer is waiting, the associated samples
5162    /// will be kept enqueued (putting pressure on the capacity of the shared
5163    /// unwinding queue). Once a lookup for a process expires, all associated
5164    /// samples are discarded. However, if the lookup still succeeds after the
5165    /// timeout, future samples will be handled normally.
5166    /// If unset, an implementation-defined default is used.
5167    #[prost(uint32, optional, tag="9")]
5168    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
5169    /// Optional period for clearing state cached by the unwinder. This is a heavy
5170    /// operation that is only necessary for traces that target a wide set of
5171    /// processes, and require the memory footprint to be reset periodically.
5172    /// If unset, the cached state will not be cleared.
5173    #[prost(uint32, optional, tag="10")]
5174    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
5175    /// If set, only profile target if it was installed by a package with one of
5176    /// these names. Special values:
5177    /// * "@system": installed on the system partition
5178    /// * "@product": installed on the product partition
5179    /// * "@null": sideloaded
5180    /// Supported on Android 12+.
5181    #[prost(string, repeated, tag="18")]
5182    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5183    //
5184    // Deprecated (superseded by options above):
5185    //
5186    // Do not set *any* of these fields in new configs.
5187    //
5188
5189    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
5190    /// We rely on this to detect such configs.
5191    #[prost(bool, optional, tag="1")]
5192    pub all_cpus: ::core::option::Option<bool>,
5193    #[prost(uint32, optional, tag="2")]
5194    pub sampling_frequency: ::core::option::Option<u32>,
5195    #[prost(bool, optional, tag="12")]
5196    pub kernel_frames: ::core::option::Option<bool>,
5197    #[prost(int32, repeated, packed="false", tag="4")]
5198    pub target_pid: ::prost::alloc::vec::Vec<i32>,
5199    #[prost(string, repeated, tag="5")]
5200    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5201    #[prost(int32, repeated, packed="false", tag="6")]
5202    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
5203    #[prost(string, repeated, tag="7")]
5204    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5205    #[prost(uint32, optional, tag="11")]
5206    pub additional_cmdline_count: ::core::option::Option<u32>,
5207}
5208/// Nested message and enum types in `PerfEventConfig`.
5209pub mod perf_event_config {
5210    //
5211    // Sub-messages (nested for generated code namespacing).
5212    //
5213
5214    #[derive(Clone, PartialEq, ::prost::Message)]
5215    pub struct CallstackSampling {
5216        /// Defines a set of processes for which samples are retained/skipped. If
5217        /// unset, all samples are kept, but beware that it will be very heavy on the
5218        /// stack unwinder, which might start dropping samples due to overload.
5219        #[prost(message, optional, tag="1")]
5220        pub scope: ::core::option::Option<Scope>,
5221        /// If true, callstacks will include the kernel-space frames. Such frames can
5222        /// be identified by a magical "kernel" string as their mapping name.
5223        /// Requires traced_perf to be running as root, or kptr_restrict to have been
5224        /// manually unrestricted. On Android, the platform should do the right thing
5225        /// on debug builds.
5226        /// This does *not* disclose KASLR, as only the function names are emitted.
5227        #[prost(bool, optional, tag="2")]
5228        pub kernel_frames: ::core::option::Option<bool>,
5229        /// Whether to record and unwind userspace callstacks. If unset, defaults to
5230        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
5231        /// as the most common default (this defaulting is only applicable if the
5232        /// outer CallstackSampling message is explicitly set).
5233        #[prost(enumeration="UnwindMode", optional, tag="3")]
5234        pub user_frames: ::core::option::Option<i32>,
5235    }
5236    #[derive(Clone, PartialEq, ::prost::Message)]
5237    pub struct Scope {
5238        /// Process ID (TGID) allowlist. If this list is not empty, only matching
5239        /// samples will be retained. If multiple allow/deny-lists are
5240        /// specified by the config, then all of them are evaluated for each sampled
5241        /// process.
5242        #[prost(int32, repeated, packed="false", tag="1")]
5243        pub target_pid: ::prost::alloc::vec::Vec<i32>,
5244        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
5245        /// comm string). The semantics of this field were changed since its original
5246        /// introduction.
5247        ///
5248        /// On Android T+ (13+), this field can specify a single wildcard (*), and
5249        /// the profiler will attempt to match it in two possible ways:
5250        /// * if the pattern starts with a '/', then it is matched against the first
5251        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
5252        ///    "/bin/echo".
5253        /// * otherwise the pattern is matched against the part of argv0
5254        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
5255        ///    For example "echo" would match "/bin/echo".
5256        ///
5257        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
5258        /// normalized prior to an exact string comparison. Normalization is as
5259        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
5260        /// the string contains forward slashes, trim everything up to and including
5261        /// the last one.
5262        ///
5263        /// Implementation note: in either case, at most 511 characters of cmdline
5264        /// are considered.
5265        #[prost(string, repeated, tag="2")]
5266        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5267        /// List of excluded pids.
5268        #[prost(int32, repeated, packed="false", tag="3")]
5269        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
5270        /// List of excluded cmdlines. See description of |target_cmdline| for how
5271        /// this is handled.
5272        #[prost(string, repeated, tag="4")]
5273        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5274        // Niche features for systemwide callstacks:
5275
5276        /// Number of additional command lines to sample. Only those which are
5277        /// neither explicitly included nor excluded will be considered. Processes
5278        /// are accepted on a first come, first served basis.
5279        #[prost(uint32, optional, tag="5")]
5280        pub additional_cmdline_count: ::core::option::Option<u32>,
5281        /// If set to N, all encountered processes will be put into one of the N
5282        /// possible bins, and only one randomly-chosen bin will be selected for
5283        /// unwinding. The binning is simply "pid % N", under the assumption that
5284        /// low-order bits of pids are roughly uniformly distributed. Other explicit
5285        /// inclusions/exclusions in this |Scope| message are still respected.
5286        ///
5287        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
5288        /// values will be queryable in trace processor under the "stats" table as
5289        /// "perf_process_shard_count" and "perf_chosen_process_shard".
5290        ///
5291        /// NB: all data sources in a config that set |process_shard_count| must set
5292        /// it to the same value. The profiler will choose one bin for all those data
5293        /// sources.
5294        #[prost(uint32, optional, tag="6")]
5295        pub process_shard_count: ::core::option::Option<u32>,
5296    }
5297    /// Userspace unwinding mode. A possible future addition is kernel-unwound
5298    /// callchains for frame pointer based systems.
5299    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5300    #[repr(i32)]
5301    pub enum UnwindMode {
5302        UnwindUnknown = 0,
5303        /// Do not unwind userspace:
5304        UnwindSkip = 1,
5305        /// Use libunwindstack (default):
5306        UnwindDwarf = 2,
5307        /// Use userspace frame pointer unwinder:
5308        UnwindFramePointer = 3,
5309    }
5310    impl UnwindMode {
5311        /// String value of the enum field names used in the ProtoBuf definition.
5312        ///
5313        /// The values are not transformed in any way and thus are considered stable
5314        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5315        pub fn as_str_name(&self) -> &'static str {
5316            match self {
5317                UnwindMode::UnwindUnknown => "UNWIND_UNKNOWN",
5318                UnwindMode::UnwindSkip => "UNWIND_SKIP",
5319                UnwindMode::UnwindDwarf => "UNWIND_DWARF",
5320                UnwindMode::UnwindFramePointer => "UNWIND_FRAME_POINTER",
5321            }
5322        }
5323    }
5324}
5325// When editing entries here remember also to update "sys_stats_counters.h" with
5326// the corresponding string definitions for the actual /proc files parser.
5327
5328/// Counter definitions for Linux's /proc/meminfo.
5329#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5330#[repr(i32)]
5331pub enum MeminfoCounters {
5332    MeminfoUnspecified = 0,
5333    MeminfoMemTotal = 1,
5334    MeminfoMemFree = 2,
5335    MeminfoMemAvailable = 3,
5336    MeminfoBuffers = 4,
5337    MeminfoCached = 5,
5338    MeminfoSwapCached = 6,
5339    MeminfoActive = 7,
5340    MeminfoInactive = 8,
5341    MeminfoActiveAnon = 9,
5342    MeminfoInactiveAnon = 10,
5343    MeminfoActiveFile = 11,
5344    MeminfoInactiveFile = 12,
5345    MeminfoUnevictable = 13,
5346    MeminfoMlocked = 14,
5347    MeminfoSwapTotal = 15,
5348    MeminfoSwapFree = 16,
5349    MeminfoDirty = 17,
5350    MeminfoWriteback = 18,
5351    MeminfoAnonPages = 19,
5352    MeminfoMapped = 20,
5353    MeminfoShmem = 21,
5354    MeminfoSlab = 22,
5355    MeminfoSlabReclaimable = 23,
5356    MeminfoSlabUnreclaimable = 24,
5357    MeminfoKernelStack = 25,
5358    MeminfoPageTables = 26,
5359    MeminfoCommitLimit = 27,
5360    MeminfoCommitedAs = 28,
5361    MeminfoVmallocTotal = 29,
5362    MeminfoVmallocUsed = 30,
5363    MeminfoVmallocChunk = 31,
5364    MeminfoCmaTotal = 32,
5365    MeminfoCmaFree = 33,
5366    MeminfoGpu = 34,
5367    MeminfoZram = 35,
5368    MeminfoMisc = 36,
5369    MeminfoIonHeap = 37,
5370    MeminfoIonHeapPool = 38,
5371}
5372impl MeminfoCounters {
5373    /// String value of the enum field names used in the ProtoBuf definition.
5374    ///
5375    /// The values are not transformed in any way and thus are considered stable
5376    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5377    pub fn as_str_name(&self) -> &'static str {
5378        match self {
5379            MeminfoCounters::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
5380            MeminfoCounters::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
5381            MeminfoCounters::MeminfoMemFree => "MEMINFO_MEM_FREE",
5382            MeminfoCounters::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
5383            MeminfoCounters::MeminfoBuffers => "MEMINFO_BUFFERS",
5384            MeminfoCounters::MeminfoCached => "MEMINFO_CACHED",
5385            MeminfoCounters::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
5386            MeminfoCounters::MeminfoActive => "MEMINFO_ACTIVE",
5387            MeminfoCounters::MeminfoInactive => "MEMINFO_INACTIVE",
5388            MeminfoCounters::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
5389            MeminfoCounters::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
5390            MeminfoCounters::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
5391            MeminfoCounters::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
5392            MeminfoCounters::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
5393            MeminfoCounters::MeminfoMlocked => "MEMINFO_MLOCKED",
5394            MeminfoCounters::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
5395            MeminfoCounters::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
5396            MeminfoCounters::MeminfoDirty => "MEMINFO_DIRTY",
5397            MeminfoCounters::MeminfoWriteback => "MEMINFO_WRITEBACK",
5398            MeminfoCounters::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
5399            MeminfoCounters::MeminfoMapped => "MEMINFO_MAPPED",
5400            MeminfoCounters::MeminfoShmem => "MEMINFO_SHMEM",
5401            MeminfoCounters::MeminfoSlab => "MEMINFO_SLAB",
5402            MeminfoCounters::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
5403            MeminfoCounters::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
5404            MeminfoCounters::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
5405            MeminfoCounters::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
5406            MeminfoCounters::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
5407            MeminfoCounters::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
5408            MeminfoCounters::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
5409            MeminfoCounters::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
5410            MeminfoCounters::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
5411            MeminfoCounters::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
5412            MeminfoCounters::MeminfoCmaFree => "MEMINFO_CMA_FREE",
5413            MeminfoCounters::MeminfoGpu => "MEMINFO_GPU",
5414            MeminfoCounters::MeminfoZram => "MEMINFO_ZRAM",
5415            MeminfoCounters::MeminfoMisc => "MEMINFO_MISC",
5416            MeminfoCounters::MeminfoIonHeap => "MEMINFO_ION_HEAP",
5417            MeminfoCounters::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
5418        }
5419    }
5420}
5421/// Counter definitions for Linux's /proc/vmstat.
5422#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5423#[repr(i32)]
5424pub enum VmstatCounters {
5425    VmstatUnspecified = 0,
5426    VmstatNrFreePages = 1,
5427    VmstatNrAllocBatch = 2,
5428    VmstatNrInactiveAnon = 3,
5429    VmstatNrActiveAnon = 4,
5430    VmstatNrInactiveFile = 5,
5431    VmstatNrActiveFile = 6,
5432    VmstatNrUnevictable = 7,
5433    VmstatNrMlock = 8,
5434    VmstatNrAnonPages = 9,
5435    VmstatNrMapped = 10,
5436    VmstatNrFilePages = 11,
5437    VmstatNrDirty = 12,
5438    VmstatNrWriteback = 13,
5439    VmstatNrSlabReclaimable = 14,
5440    VmstatNrSlabUnreclaimable = 15,
5441    VmstatNrPageTablePages = 16,
5442    VmstatNrKernelStack = 17,
5443    VmstatNrOverhead = 18,
5444    VmstatNrUnstable = 19,
5445    VmstatNrBounce = 20,
5446    VmstatNrVmscanWrite = 21,
5447    VmstatNrVmscanImmediateReclaim = 22,
5448    VmstatNrWritebackTemp = 23,
5449    VmstatNrIsolatedAnon = 24,
5450    VmstatNrIsolatedFile = 25,
5451    VmstatNrShmem = 26,
5452    VmstatNrDirtied = 27,
5453    VmstatNrWritten = 28,
5454    VmstatNrPagesScanned = 29,
5455    VmstatWorkingsetRefault = 30,
5456    VmstatWorkingsetActivate = 31,
5457    VmstatWorkingsetNodereclaim = 32,
5458    VmstatNrAnonTransparentHugepages = 33,
5459    VmstatNrFreeCma = 34,
5460    VmstatNrSwapcache = 35,
5461    VmstatNrDirtyThreshold = 36,
5462    VmstatNrDirtyBackgroundThreshold = 37,
5463    VmstatPgpgin = 38,
5464    VmstatPgpgout = 39,
5465    VmstatPgpgoutclean = 40,
5466    VmstatPswpin = 41,
5467    VmstatPswpout = 42,
5468    VmstatPgallocDma = 43,
5469    VmstatPgallocNormal = 44,
5470    VmstatPgallocMovable = 45,
5471    VmstatPgfree = 46,
5472    VmstatPgactivate = 47,
5473    VmstatPgdeactivate = 48,
5474    VmstatPgfault = 49,
5475    VmstatPgmajfault = 50,
5476    VmstatPgrefillDma = 51,
5477    VmstatPgrefillNormal = 52,
5478    VmstatPgrefillMovable = 53,
5479    VmstatPgstealKswapdDma = 54,
5480    VmstatPgstealKswapdNormal = 55,
5481    VmstatPgstealKswapdMovable = 56,
5482    VmstatPgstealDirectDma = 57,
5483    VmstatPgstealDirectNormal = 58,
5484    VmstatPgstealDirectMovable = 59,
5485    VmstatPgscanKswapdDma = 60,
5486    VmstatPgscanKswapdNormal = 61,
5487    VmstatPgscanKswapdMovable = 62,
5488    VmstatPgscanDirectDma = 63,
5489    VmstatPgscanDirectNormal = 64,
5490    VmstatPgscanDirectMovable = 65,
5491    VmstatPgscanDirectThrottle = 66,
5492    VmstatPginodesteal = 67,
5493    VmstatSlabsScanned = 68,
5494    VmstatKswapdInodesteal = 69,
5495    VmstatKswapdLowWmarkHitQuickly = 70,
5496    VmstatKswapdHighWmarkHitQuickly = 71,
5497    VmstatPageoutrun = 72,
5498    VmstatAllocstall = 73,
5499    VmstatPgrotated = 74,
5500    VmstatDropPagecache = 75,
5501    VmstatDropSlab = 76,
5502    VmstatPgmigrateSuccess = 77,
5503    VmstatPgmigrateFail = 78,
5504    VmstatCompactMigrateScanned = 79,
5505    VmstatCompactFreeScanned = 80,
5506    VmstatCompactIsolated = 81,
5507    VmstatCompactStall = 82,
5508    VmstatCompactFail = 83,
5509    VmstatCompactSuccess = 84,
5510    VmstatCompactDaemonWake = 85,
5511    VmstatUnevictablePgsCulled = 86,
5512    VmstatUnevictablePgsScanned = 87,
5513    VmstatUnevictablePgsRescued = 88,
5514    VmstatUnevictablePgsMlocked = 89,
5515    VmstatUnevictablePgsMunlocked = 90,
5516    VmstatUnevictablePgsCleared = 91,
5517    VmstatUnevictablePgsStranded = 92,
5518    VmstatNrZspages = 93,
5519    VmstatNrIonHeap = 94,
5520    VmstatNrGpuHeap = 95,
5521    VmstatAllocstallDma = 96,
5522    VmstatAllocstallMovable = 97,
5523    VmstatAllocstallNormal = 98,
5524    VmstatCompactDaemonFreeScanned = 99,
5525    VmstatCompactDaemonMigrateScanned = 100,
5526    VmstatNrFastrpc = 101,
5527    VmstatNrIndirectlyReclaimable = 102,
5528    VmstatNrIonHeapPool = 103,
5529    VmstatNrKernelMiscReclaimable = 104,
5530    VmstatNrShadowCallStackBytes = 105,
5531    VmstatNrShmemHugepages = 106,
5532    VmstatNrShmemPmdmapped = 107,
5533    VmstatNrUnreclaimablePages = 108,
5534    VmstatNrZoneActiveAnon = 109,
5535    VmstatNrZoneActiveFile = 110,
5536    VmstatNrZoneInactiveAnon = 111,
5537    VmstatNrZoneInactiveFile = 112,
5538    VmstatNrZoneUnevictable = 113,
5539    VmstatNrZoneWritePending = 114,
5540    VmstatOomKill = 115,
5541    VmstatPglazyfree = 116,
5542    VmstatPglazyfreed = 117,
5543    VmstatPgrefill = 118,
5544    VmstatPgscanDirect = 119,
5545    VmstatPgscanKswapd = 120,
5546    VmstatPgskipDma = 121,
5547    VmstatPgskipMovable = 122,
5548    VmstatPgskipNormal = 123,
5549    VmstatPgstealDirect = 124,
5550    VmstatPgstealKswapd = 125,
5551    VmstatSwapRa = 126,
5552    VmstatSwapRaHit = 127,
5553    VmstatWorkingsetRestore = 128,
5554    VmstatAllocstallDevice = 129,
5555    VmstatAllocstallDma32 = 130,
5556    VmstatBalloonDeflate = 131,
5557    VmstatBalloonInflate = 132,
5558    VmstatBalloonMigrate = 133,
5559    VmstatCmaAllocFail = 134,
5560    VmstatCmaAllocSuccess = 135,
5561    VmstatNrFileHugepages = 136,
5562    VmstatNrFilePmdmapped = 137,
5563    VmstatNrFollPinAcquired = 138,
5564    VmstatNrFollPinReleased = 139,
5565    VmstatNrSecPageTablePages = 140,
5566    VmstatNrShadowCallStack = 141,
5567    VmstatNrSwapcached = 142,
5568    VmstatNrThrottledWritten = 143,
5569    VmstatPgallocDevice = 144,
5570    VmstatPgallocDma32 = 145,
5571    VmstatPgdemoteDirect = 146,
5572    VmstatPgdemoteKswapd = 147,
5573    VmstatPgreuse = 148,
5574    VmstatPgscanAnon = 149,
5575    VmstatPgscanFile = 150,
5576    VmstatPgskipDevice = 151,
5577    VmstatPgskipDma32 = 152,
5578    VmstatPgstealAnon = 153,
5579    VmstatPgstealFile = 154,
5580    VmstatThpCollapseAlloc = 155,
5581    VmstatThpCollapseAllocFailed = 156,
5582    VmstatThpDeferredSplitPage = 157,
5583    VmstatThpFaultAlloc = 158,
5584    VmstatThpFaultFallback = 159,
5585    VmstatThpFaultFallbackCharge = 160,
5586    VmstatThpFileAlloc = 161,
5587    VmstatThpFileFallback = 162,
5588    VmstatThpFileFallbackCharge = 163,
5589    VmstatThpFileMapped = 164,
5590    VmstatThpMigrationFail = 165,
5591    VmstatThpMigrationSplit = 166,
5592    VmstatThpMigrationSuccess = 167,
5593    VmstatThpScanExceedNonePte = 168,
5594    VmstatThpScanExceedSharePte = 169,
5595    VmstatThpScanExceedSwapPte = 170,
5596    VmstatThpSplitPage = 171,
5597    VmstatThpSplitPageFailed = 172,
5598    VmstatThpSplitPmd = 173,
5599    VmstatThpSwpout = 174,
5600    VmstatThpSwpoutFallback = 175,
5601    VmstatThpZeroPageAlloc = 176,
5602    VmstatThpZeroPageAllocFailed = 177,
5603    VmstatVmaLockAbort = 178,
5604    VmstatVmaLockMiss = 179,
5605    VmstatVmaLockRetry = 180,
5606    VmstatVmaLockSuccess = 181,
5607    VmstatWorkingsetActivateAnon = 182,
5608    VmstatWorkingsetActivateFile = 183,
5609    VmstatWorkingsetNodes = 184,
5610    VmstatWorkingsetRefaultAnon = 185,
5611    VmstatWorkingsetRefaultFile = 186,
5612    VmstatWorkingsetRestoreAnon = 187,
5613    VmstatWorkingsetRestoreFile = 188,
5614}
5615impl VmstatCounters {
5616    /// String value of the enum field names used in the ProtoBuf definition.
5617    ///
5618    /// The values are not transformed in any way and thus are considered stable
5619    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5620    pub fn as_str_name(&self) -> &'static str {
5621        match self {
5622            VmstatCounters::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
5623            VmstatCounters::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
5624            VmstatCounters::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
5625            VmstatCounters::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
5626            VmstatCounters::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
5627            VmstatCounters::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
5628            VmstatCounters::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
5629            VmstatCounters::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
5630            VmstatCounters::VmstatNrMlock => "VMSTAT_NR_MLOCK",
5631            VmstatCounters::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
5632            VmstatCounters::VmstatNrMapped => "VMSTAT_NR_MAPPED",
5633            VmstatCounters::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
5634            VmstatCounters::VmstatNrDirty => "VMSTAT_NR_DIRTY",
5635            VmstatCounters::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
5636            VmstatCounters::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
5637            VmstatCounters::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
5638            VmstatCounters::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
5639            VmstatCounters::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
5640            VmstatCounters::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
5641            VmstatCounters::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
5642            VmstatCounters::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
5643            VmstatCounters::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
5644            VmstatCounters::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
5645            VmstatCounters::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
5646            VmstatCounters::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
5647            VmstatCounters::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
5648            VmstatCounters::VmstatNrShmem => "VMSTAT_NR_SHMEM",
5649            VmstatCounters::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
5650            VmstatCounters::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
5651            VmstatCounters::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
5652            VmstatCounters::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
5653            VmstatCounters::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
5654            VmstatCounters::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
5655            VmstatCounters::VmstatNrAnonTransparentHugepages => "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES",
5656            VmstatCounters::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
5657            VmstatCounters::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
5658            VmstatCounters::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
5659            VmstatCounters::VmstatNrDirtyBackgroundThreshold => "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD",
5660            VmstatCounters::VmstatPgpgin => "VMSTAT_PGPGIN",
5661            VmstatCounters::VmstatPgpgout => "VMSTAT_PGPGOUT",
5662            VmstatCounters::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
5663            VmstatCounters::VmstatPswpin => "VMSTAT_PSWPIN",
5664            VmstatCounters::VmstatPswpout => "VMSTAT_PSWPOUT",
5665            VmstatCounters::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
5666            VmstatCounters::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
5667            VmstatCounters::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
5668            VmstatCounters::VmstatPgfree => "VMSTAT_PGFREE",
5669            VmstatCounters::VmstatPgactivate => "VMSTAT_PGACTIVATE",
5670            VmstatCounters::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
5671            VmstatCounters::VmstatPgfault => "VMSTAT_PGFAULT",
5672            VmstatCounters::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
5673            VmstatCounters::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
5674            VmstatCounters::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
5675            VmstatCounters::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
5676            VmstatCounters::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
5677            VmstatCounters::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
5678            VmstatCounters::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
5679            VmstatCounters::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
5680            VmstatCounters::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
5681            VmstatCounters::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
5682            VmstatCounters::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
5683            VmstatCounters::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
5684            VmstatCounters::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
5685            VmstatCounters::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
5686            VmstatCounters::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
5687            VmstatCounters::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
5688            VmstatCounters::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
5689            VmstatCounters::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
5690            VmstatCounters::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
5691            VmstatCounters::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
5692            VmstatCounters::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
5693            VmstatCounters::VmstatKswapdHighWmarkHitQuickly => "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY",
5694            VmstatCounters::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
5695            VmstatCounters::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
5696            VmstatCounters::VmstatPgrotated => "VMSTAT_PGROTATED",
5697            VmstatCounters::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
5698            VmstatCounters::VmstatDropSlab => "VMSTAT_DROP_SLAB",
5699            VmstatCounters::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
5700            VmstatCounters::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
5701            VmstatCounters::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
5702            VmstatCounters::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
5703            VmstatCounters::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
5704            VmstatCounters::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
5705            VmstatCounters::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
5706            VmstatCounters::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
5707            VmstatCounters::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
5708            VmstatCounters::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
5709            VmstatCounters::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
5710            VmstatCounters::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
5711            VmstatCounters::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
5712            VmstatCounters::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
5713            VmstatCounters::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
5714            VmstatCounters::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
5715            VmstatCounters::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
5716            VmstatCounters::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
5717            VmstatCounters::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
5718            VmstatCounters::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
5719            VmstatCounters::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
5720            VmstatCounters::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
5721            VmstatCounters::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
5722            VmstatCounters::VmstatCompactDaemonMigrateScanned => "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED",
5723            VmstatCounters::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
5724            VmstatCounters::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
5725            VmstatCounters::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
5726            VmstatCounters::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
5727            VmstatCounters::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
5728            VmstatCounters::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
5729            VmstatCounters::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
5730            VmstatCounters::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
5731            VmstatCounters::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
5732            VmstatCounters::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
5733            VmstatCounters::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
5734            VmstatCounters::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
5735            VmstatCounters::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
5736            VmstatCounters::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
5737            VmstatCounters::VmstatOomKill => "VMSTAT_OOM_KILL",
5738            VmstatCounters::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
5739            VmstatCounters::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
5740            VmstatCounters::VmstatPgrefill => "VMSTAT_PGREFILL",
5741            VmstatCounters::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
5742            VmstatCounters::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
5743            VmstatCounters::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
5744            VmstatCounters::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
5745            VmstatCounters::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
5746            VmstatCounters::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
5747            VmstatCounters::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
5748            VmstatCounters::VmstatSwapRa => "VMSTAT_SWAP_RA",
5749            VmstatCounters::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
5750            VmstatCounters::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
5751            VmstatCounters::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
5752            VmstatCounters::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
5753            VmstatCounters::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
5754            VmstatCounters::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
5755            VmstatCounters::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
5756            VmstatCounters::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
5757            VmstatCounters::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
5758            VmstatCounters::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
5759            VmstatCounters::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
5760            VmstatCounters::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
5761            VmstatCounters::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
5762            VmstatCounters::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
5763            VmstatCounters::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
5764            VmstatCounters::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
5765            VmstatCounters::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
5766            VmstatCounters::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
5767            VmstatCounters::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
5768            VmstatCounters::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
5769            VmstatCounters::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
5770            VmstatCounters::VmstatPgreuse => "VMSTAT_PGREUSE",
5771            VmstatCounters::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
5772            VmstatCounters::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
5773            VmstatCounters::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
5774            VmstatCounters::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
5775            VmstatCounters::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
5776            VmstatCounters::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
5777            VmstatCounters::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
5778            VmstatCounters::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
5779            VmstatCounters::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
5780            VmstatCounters::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
5781            VmstatCounters::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
5782            VmstatCounters::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
5783            VmstatCounters::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
5784            VmstatCounters::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
5785            VmstatCounters::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
5786            VmstatCounters::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
5787            VmstatCounters::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
5788            VmstatCounters::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
5789            VmstatCounters::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
5790            VmstatCounters::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
5791            VmstatCounters::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
5792            VmstatCounters::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
5793            VmstatCounters::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
5794            VmstatCounters::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
5795            VmstatCounters::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
5796            VmstatCounters::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
5797            VmstatCounters::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
5798            VmstatCounters::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
5799            VmstatCounters::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
5800            VmstatCounters::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
5801            VmstatCounters::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
5802            VmstatCounters::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
5803            VmstatCounters::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
5804            VmstatCounters::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
5805            VmstatCounters::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
5806            VmstatCounters::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
5807            VmstatCounters::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
5808            VmstatCounters::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
5809            VmstatCounters::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
5810            VmstatCounters::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
5811        }
5812    }
5813}
5814/// This file defines the configuration for the Linux /proc poller data source,
5815/// which injects counters in the trace.
5816/// Counters that are needed in the trace must be explicitly listed in the
5817/// *_counters fields. This is to avoid spamming the trace with all counters
5818/// at all times.
5819/// The sampling rate is configurable. All polling rates (*_period_ms) need
5820/// to be integer multiples of each other.
5821/// OK:     [10ms, 10ms, 10ms],  [10ms, 20ms, 10ms],  [10ms, 20ms, 60ms]
5822/// Not OK: [10ms, 10ms, 11ms],  [10ms, 15ms, 20ms]
5823#[derive(Clone, PartialEq, ::prost::Message)]
5824pub struct SysStatsConfig {
5825    /// Polls /proc/meminfo every X ms, if non-zero.
5826    /// This is required to be > 10ms to avoid excessive CPU usage.
5827    /// Cost: 0.3 ms \[read\] + 0.07 ms [parse + trace injection]
5828    #[prost(uint32, optional, tag="1")]
5829    pub meminfo_period_ms: ::core::option::Option<u32>,
5830    /// If empty all known counters are reported. Otherwise, only the counters
5831    /// specified below are reported.
5832    #[prost(enumeration="MeminfoCounters", repeated, packed="false", tag="2")]
5833    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
5834    /// Polls /proc/vmstat every X ms, if non-zero.
5835    /// This is required to be > 10ms to avoid excessive CPU usage.
5836    /// Cost: 0.2 ms \[read\] + 0.3 ms [parse + trace injection]
5837    #[prost(uint32, optional, tag="3")]
5838    pub vmstat_period_ms: ::core::option::Option<u32>,
5839    #[prost(enumeration="VmstatCounters", repeated, packed="false", tag="4")]
5840    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
5841    /// Pols /proc/stat every X ms, if non-zero.
5842    /// This is required to be > 10ms to avoid excessive CPU usage.
5843    /// Cost: 4.1 ms \[read\] + 1.9 ms [parse + trace injection]
5844    #[prost(uint32, optional, tag="5")]
5845    pub stat_period_ms: ::core::option::Option<u32>,
5846    #[prost(enumeration="sys_stats_config::StatCounters", repeated, packed="false", tag="6")]
5847    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
5848    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
5849    /// This is required to be > 10ms to avoid excessive CPU usage.
5850    /// This option can be used to record unchanging values.
5851    /// Updates from frequency changes can come from ftrace/set_clock_rate.
5852    #[prost(uint32, optional, tag="7")]
5853    pub devfreq_period_ms: ::core::option::Option<u32>,
5854    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
5855    /// This is required to be > 10ms to avoid excessive CPU usage.
5856    #[prost(uint32, optional, tag="8")]
5857    pub cpufreq_period_ms: ::core::option::Option<u32>,
5858    /// Polls /proc/buddyinfo every X ms, if non-zero.
5859    /// This is required to be > 10ms to avoid excessive CPU usage.
5860    #[prost(uint32, optional, tag="9")]
5861    pub buddyinfo_period_ms: ::core::option::Option<u32>,
5862    /// Polls /proc/diskstats every X ms, if non-zero.
5863    /// This is required to be > 10ms to avoid excessive CPU usage.
5864    #[prost(uint32, optional, tag="10")]
5865    pub diskstat_period_ms: ::core::option::Option<u32>,
5866    /// Polls /proc/pressure/* every X ms, if non-zero.
5867    /// This is required to be > 10ms to avoid excessive CPU usage.
5868    #[prost(uint32, optional, tag="11")]
5869    pub psi_period_ms: ::core::option::Option<u32>,
5870    /// Polls /sys/class/thermal/* every X ms, if non-zero.
5871    /// This is required to be > 10ms to avoid excessive CPU usage.
5872    #[prost(uint32, optional, tag="12")]
5873    pub thermal_period_ms: ::core::option::Option<u32>,
5874    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
5875    /// This is required to be > 10ms to avoid excessive CPU usage.
5876    #[prost(uint32, optional, tag="13")]
5877    pub cpuidle_period_ms: ::core::option::Option<u32>,
5878    /// Polls device-specific GPU frequency info every X ms, if non-zero.
5879    /// This is required to be > 10ms to avoid excessive CPU usage.
5880    #[prost(uint32, optional, tag="14")]
5881    pub gpufreq_period_ms: ::core::option::Option<u32>,
5882}
5883/// Nested message and enum types in `SysStatsConfig`.
5884pub mod sys_stats_config {
5885    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5886    #[repr(i32)]
5887    pub enum StatCounters {
5888        StatUnspecified = 0,
5889        StatCpuTimes = 1,
5890        StatIrqCounts = 2,
5891        StatSoftirqCounts = 3,
5892        StatForkCount = 4,
5893    }
5894    impl StatCounters {
5895        /// String value of the enum field names used in the ProtoBuf definition.
5896        ///
5897        /// The values are not transformed in any way and thus are considered stable
5898        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5899        pub fn as_str_name(&self) -> &'static str {
5900            match self {
5901                StatCounters::StatUnspecified => "STAT_UNSPECIFIED",
5902                StatCounters::StatCpuTimes => "STAT_CPU_TIMES",
5903                StatCounters::StatIrqCounts => "STAT_IRQ_COUNTS",
5904                StatCounters::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
5905                StatCounters::StatForkCount => "STAT_FORK_COUNT",
5906            }
5907        }
5908    }
5909}
5910/// The configuration for a fake producer used in tests.
5911#[derive(Clone, PartialEq, ::prost::Message)]
5912pub struct TestConfig {
5913    /// The number of messages the fake producer should send.
5914    #[prost(uint32, optional, tag="1")]
5915    pub message_count: ::core::option::Option<u32>,
5916    /// The maximum number of messages which should be sent each second.
5917    /// The actual obserced speed may be lower if the producer is unable to
5918    /// work fast enough.
5919    /// If this is zero or unset, the producer will send as fast as possible.
5920    #[prost(uint32, optional, tag="2")]
5921    pub max_messages_per_second: ::core::option::Option<u32>,
5922    /// The seed value for a simple multiplicative congruential pseudo-random
5923    /// number sequence.
5924    #[prost(uint32, optional, tag="3")]
5925    pub seed: ::core::option::Option<u32>,
5926    /// The size of each message in bytes. Should be greater than or equal 5 to
5927    /// account for the number of bytes needed to encode the random number and a
5928    /// null byte for the string.
5929    #[prost(uint32, optional, tag="4")]
5930    pub message_size: ::core::option::Option<u32>,
5931    /// Whether the producer should send a event batch when the data source is
5932    /// is initially registered.
5933    #[prost(bool, optional, tag="5")]
5934    pub send_batch_on_register: ::core::option::Option<bool>,
5935    #[prost(message, optional, tag="6")]
5936    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
5937}
5938/// Nested message and enum types in `TestConfig`.
5939pub mod test_config {
5940    #[derive(Clone, PartialEq, ::prost::Message)]
5941    pub struct DummyFields {
5942        #[prost(uint32, optional, tag="1")]
5943        pub field_uint32: ::core::option::Option<u32>,
5944        #[prost(int32, optional, tag="2")]
5945        pub field_int32: ::core::option::Option<i32>,
5946        #[prost(uint64, optional, tag="3")]
5947        pub field_uint64: ::core::option::Option<u64>,
5948        #[prost(int64, optional, tag="4")]
5949        pub field_int64: ::core::option::Option<i64>,
5950        #[prost(fixed64, optional, tag="5")]
5951        pub field_fixed64: ::core::option::Option<u64>,
5952        #[prost(sfixed64, optional, tag="6")]
5953        pub field_sfixed64: ::core::option::Option<i64>,
5954        #[prost(fixed32, optional, tag="7")]
5955        pub field_fixed32: ::core::option::Option<u32>,
5956        #[prost(sfixed32, optional, tag="8")]
5957        pub field_sfixed32: ::core::option::Option<i32>,
5958        #[prost(double, optional, tag="9")]
5959        pub field_double: ::core::option::Option<f64>,
5960        #[prost(float, optional, tag="10")]
5961        pub field_float: ::core::option::Option<f32>,
5962        #[prost(sint64, optional, tag="11")]
5963        pub field_sint64: ::core::option::Option<i64>,
5964        #[prost(sint32, optional, tag="12")]
5965        pub field_sint32: ::core::option::Option<i32>,
5966        #[prost(string, optional, tag="13")]
5967        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
5968        #[prost(bytes="vec", optional, tag="14")]
5969        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5970    }
5971}
5972/// The following fields define the set of enabled trace categories. Each list
5973/// item is a glob.
5974///
5975/// To determine if category is enabled, it is checked against the filters in
5976/// the following order:
5977///
5978///    1. Exact matches in enabled categories.
5979///    2. Exact matches in enabled tags.
5980///    3. Exact matches in disabled categories.
5981///    4. Exact matches in disabled tags.
5982///    5. Pattern matches in enabled categories.
5983///    6. Pattern matches in enabled tags.
5984///    7. Pattern matches in disabled categories.
5985///    8. Pattern matches in disabled tags.
5986///
5987/// If none of the steps produced a match:
5988///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
5989///   default.
5990///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
5991///
5992/// Examples:
5993///
5994///   - To enable all non-slow/debug categories:
5995///
5996///        enabled_categories: "*"
5997///
5998///   - To enable specific categories:
5999///
6000///        disabled_categories: "*"
6001///        enabled_categories: "my_category"
6002///        enabled_categories: "my_category2"
6003///
6004///   - To enable only categories with a specific tag:
6005///
6006///        disabled_tags: "*"
6007///        enabled_tags: "my_tag"
6008///
6009#[derive(Clone, PartialEq, ::prost::Message)]
6010pub struct TrackEventConfig {
6011    /// Default: []
6012    #[prost(string, repeated, tag="1")]
6013    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6014    /// Default: []
6015    #[prost(string, repeated, tag="2")]
6016    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6017    /// Default: ["slow", "debug"]
6018    #[prost(string, repeated, tag="3")]
6019    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6020    /// Default: []
6021    #[prost(string, repeated, tag="4")]
6022    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6023    /// Default: false (i.e. enabled by default)
6024    #[prost(bool, optional, tag="5")]
6025    pub disable_incremental_timestamps: ::core::option::Option<bool>,
6026    /// Allows to specify a custom unit different than the default (ns).
6027    /// Also affects thread timestamps if enable_thread_time_sampling = true.
6028    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
6029    /// 3000 ns = 3 us.
6030    /// Default: 1 (if unset, it should be read as 1).
6031    #[prost(uint64, optional, tag="6")]
6032    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
6033    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
6034    /// When true, any debug annotations provided as arguments to the
6035    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
6036    /// still be emitted even if set to true.
6037    #[prost(bool, optional, tag="7")]
6038    pub filter_debug_annotations: ::core::option::Option<bool>,
6039    /// Default: false (i.e. disabled)
6040    /// When true, the SDK samples and emits the current thread time counter value
6041    /// for each event on the current thread's track. This value represents the
6042    /// total CPU time consumed by that thread since its creation.
6043    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
6044    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
6045    #[prost(bool, optional, tag="8")]
6046    pub enable_thread_time_sampling: ::core::option::Option<bool>,
6047    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
6048    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
6049    /// out.
6050    #[prost(bool, optional, tag="9")]
6051    pub filter_dynamic_event_names: ::core::option::Option<bool>,
6052}
6053/// This data-source does a one-off recording of system information when
6054/// the trace starts.
6055/// Currently this includes:
6056/// - Values of
6057/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
6058/// datasource has no configuration options at present.
6059#[derive(Clone, PartialEq, ::prost::Message)]
6060pub struct SystemInfoConfig {
6061}
6062#[derive(Clone, PartialEq, ::prost::Message)]
6063pub struct ChromiumHistogramSamplesConfig {
6064    /// List of histograms to record. If no histogram is specified, all histograms
6065    /// are recorded.
6066    #[prost(message, repeated, tag="1")]
6067    pub histograms: ::prost::alloc::vec::Vec<chromium_histogram_samples_config::HistogramSample>,
6068    /// Default: false (i.e. histogram names are NOT filtered out by default)
6069    /// When true, histogram_name will be filtered out.
6070    #[prost(bool, optional, tag="2")]
6071    pub filter_histogram_names: ::core::option::Option<bool>,
6072}
6073/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
6074pub mod chromium_histogram_samples_config {
6075    /// Records when a value within the specified bounds [min_value, max_value] is
6076    /// emitted into a Chrome histogram.
6077    #[derive(Clone, PartialEq, ::prost::Message)]
6078    pub struct HistogramSample {
6079        #[prost(string, optional, tag="1")]
6080        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
6081        #[prost(int64, optional, tag="2")]
6082        pub min_value: ::core::option::Option<i64>,
6083        #[prost(int64, optional, tag="3")]
6084        pub max_value: ::core::option::Option<i64>,
6085    }
6086}
6087/// The configuration that is passed to each data source when starting tracing.
6088/// Next id: 138
6089#[derive(Clone, PartialEq, ::prost::Message)]
6090pub struct DataSourceConfig {
6091    /// Data source unique name, e.g., "linux.ftrace". This must match
6092    /// the name passed by the data source when it registers (see
6093    /// RegisterDataSource()).
6094    #[prost(string, optional, tag="1")]
6095    pub name: ::core::option::Option<::prost::alloc::string::String>,
6096    /// The index of the logging buffer where TracePacket(s) will be stored.
6097    /// This field doesn't make a major difference for the Producer(s). The final
6098    /// logging buffers, in fact, are completely owned by the Service. We just ask
6099    /// the Producer to copy this number into the chunk headers it emits, so that
6100    /// the Service can quickly identify the buffer where to move the chunks into
6101    /// without expensive lookups on its fastpath.
6102    #[prost(uint32, optional, tag="2")]
6103    pub target_buffer: ::core::option::Option<u32>,
6104    /// Set by the service to indicate the duration of the trace.
6105    /// DO NOT SET in consumer as this will be overridden by the service.
6106    #[prost(uint32, optional, tag="3")]
6107    pub trace_duration_ms: ::core::option::Option<u32>,
6108    /// If true, |trace_duration_ms| should count also time in suspend. This
6109    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
6110    #[prost(bool, optional, tag="122")]
6111    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
6112    /// Set by the service to indicate how long it waits after StopDataSource.
6113    /// DO NOT SET in consumer as this will be overridden by the service.
6114    #[prost(uint32, optional, tag="7")]
6115    pub stop_timeout_ms: ::core::option::Option<u32>,
6116    /// Set by the service to indicate whether this tracing session has extra
6117    /// guardrails.
6118    /// DO NOT SET in consumer as this will be overridden by the service.
6119    #[prost(bool, optional, tag="6")]
6120    pub enable_extra_guardrails: ::core::option::Option<bool>,
6121    /// Set by the service to indicate which user initiated this trace.
6122    /// DO NOT SET in consumer as this will be overridden by the service.
6123    #[prost(enumeration="data_source_config::SessionInitiator", optional, tag="8")]
6124    pub session_initiator: ::core::option::Option<i32>,
6125    /// Set by the service to indicate which tracing session the data source
6126    /// belongs to. The intended use case for this is checking if two data sources,
6127    /// one of which produces metadata for the other one, belong to the same trace
6128    /// session and hence should be linked together.
6129    /// This field was introduced in Aug 2018 after Android P.
6130    /// DO NOT SET in consumer as this will be overridden by the service.
6131    #[prost(uint64, optional, tag="4")]
6132    pub tracing_session_id: ::core::option::Option<u64>,
6133    /// How to behave when the producer runs out of space in the shared memory
6134    /// buffer. This is only honored by some data sources (in the SDK, the data
6135    /// sources registered with a configurable buffer exhausted policy).
6136    #[prost(enumeration="data_source_config::BufferExhaustedPolicy", optional, tag="9")]
6137    pub buffer_exhausted_policy: ::core::option::Option<i32>,
6138    #[prost(message, optional, tag="10")]
6139    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
6140    // Keep the lower IDs (up to 99) for fields that are *not* specific to
6141    // data-sources and needs to be processed by the traced daemon.
6142
6143    // All data source config fields must be marked as \[lazy=true\]. This prevents
6144    // the proto-to-cpp generator from recursing into those when generating the
6145    // cpp classes and polluting tracing/core with data-source-specific classes.
6146    // Instead they are treated as opaque strings containing raw proto bytes.
6147
6148    /// Data source name: linux.ftrace
6149    #[prost(message, optional, tag="100")]
6150    pub ftrace_config: ::core::option::Option<FtraceConfig>,
6151    /// Data source name: linux.inode_file_map
6152    #[prost(message, optional, tag="102")]
6153    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
6154    /// Data source name: linux.process_stats
6155    #[prost(message, optional, tag="103")]
6156    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
6157    /// Data source name: linux.sys_stats
6158    #[prost(message, optional, tag="104")]
6159    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
6160    /// Data source name: android.heapprofd
6161    /// Introduced in Android 10.
6162    #[prost(message, optional, tag="105")]
6163    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
6164    /// Data source name: android.java_hprof
6165    /// Introduced in Android 11.
6166    #[prost(message, optional, tag="110")]
6167    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
6168    /// Data source name: android.power
6169    #[prost(message, optional, tag="106")]
6170    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
6171    /// Data source name: android.log
6172    #[prost(message, optional, tag="107")]
6173    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
6174    /// Data source name: gpu.counters
6175    #[prost(message, optional, tag="108")]
6176    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
6177    /// Data source name: android.game_interventions
6178    #[prost(message, optional, tag="116")]
6179    pub android_game_intervention_list_config: ::core::option::Option<AndroidGameInterventionListConfig>,
6180    /// Data source name: android.packages_list
6181    #[prost(message, optional, tag="109")]
6182    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
6183    /// Data source name: linux.perf
6184    #[prost(message, optional, tag="111")]
6185    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
6186    /// Data source name: vulkan.memory_tracker
6187    #[prost(message, optional, tag="112")]
6188    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
6189    /// Data source name: track_event
6190    #[prost(message, optional, tag="113")]
6191    pub track_event_config: ::core::option::Option<TrackEventConfig>,
6192    /// Data source name: android.polled_state
6193    #[prost(message, optional, tag="114")]
6194    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
6195    /// Data source name: android.system_property
6196    #[prost(message, optional, tag="118")]
6197    pub android_system_property_config: ::core::option::Option<AndroidSystemPropertyConfig>,
6198    /// Data source name: android.statsd
6199    #[prost(message, optional, tag="117")]
6200    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
6201    /// Data source name: linux.system_info
6202    #[prost(message, optional, tag="119")]
6203    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
6204    /// Data source name: linux.frozen_ftrace
6205    #[prost(message, optional, tag="136")]
6206    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
6207    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
6208    /// avoid proto serialization and de-serialization there because that would
6209    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
6210    /// C++ class for it so it can pass around plain C++ objets.
6211    #[prost(message, optional, tag="101")]
6212    pub chrome_config: ::core::option::Option<ChromeConfig>,
6213    /// Data source name: code.v8.dev
6214    #[prost(message, optional, tag="127")]
6215    pub v8_config: ::core::option::Option<V8Config>,
6216    /// If an interceptor is specified here, packets for this data source will be
6217    /// rerouted to the interceptor instead of the main trace buffer. This can be
6218    /// used, for example, to write trace data into ETW or for logging trace points
6219    /// to the console.
6220    ///
6221    /// Note that interceptors are only supported by data sources registered
6222    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
6223    /// traced_probes) may not support interception.
6224    #[prost(message, optional, tag="115")]
6225    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
6226    /// Data source name: android.network_packets.
6227    /// Introduced in Android 14 (U).
6228    #[prost(message, optional, tag="120")]
6229    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
6230    /// Data source name: android.surfaceflinger.layers
6231    #[prost(message, optional, tag="121")]
6232    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
6233    /// Data source name: android.surfaceflinger.transactions
6234    #[prost(message, optional, tag="123")]
6235    pub surfaceflinger_transactions_config: ::core::option::Option<SurfaceFlingerTransactionsConfig>,
6236    /// Data source name: android.sdk_sysprop_guard
6237    /// Introduced in Android 14 (U) QPR1.
6238    #[prost(message, optional, tag="124")]
6239    pub android_sdk_sysprop_guard_config: ::core::option::Option<AndroidSdkSyspropGuardConfig>,
6240    /// Data source name: windows.etw
6241    #[prost(message, optional, tag="125")]
6242    pub etw_config: ::core::option::Option<EtwConfig>,
6243    /// Data source name: android.protolog
6244    #[prost(message, optional, tag="126")]
6245    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
6246    /// Data source name: android.input.inputevent
6247    #[prost(message, optional, tag="128")]
6248    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
6249    /// Data source name: android.pixel.modem
6250    #[prost(message, optional, tag="129")]
6251    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
6252    /// Data source name: android.windowmanager
6253    #[prost(message, optional, tag="130")]
6254    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
6255    /// Data source name: org.chromium.system_metrics
6256    #[prost(message, optional, tag="131")]
6257    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
6258    /// Data source name: android.kernel_wakelocks
6259    #[prost(message, optional, tag="132")]
6260    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
6261    /// Data source name: gpu.renderstages
6262    #[prost(message, optional, tag="133")]
6263    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
6264    /// Data source name: org.chromium.histogram_samples
6265    #[prost(message, optional, tag="134")]
6266    pub chromium_histogram_samples: ::core::option::Option<ChromiumHistogramSamplesConfig>,
6267    /// Data source name: android.app_wakelocks
6268    #[prost(message, optional, tag="135")]
6269    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
6270    /// Data source name: android.cpu_per_uid
6271    #[prost(message, optional, tag="137")]
6272    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
6273    /// This is a fallback mechanism to send a free-form text config to the
6274    /// producer. In theory this should never be needed. All the code that
6275    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
6276    /// the trace config proto and propagate unknown fields. However, if anything
6277    /// in the pipeline (client or backend) ends up breaking this forward compat
6278    /// plan, this field will become the escape hatch to allow future data sources
6279    /// to get some meaningful configuration.
6280    #[prost(string, optional, tag="1000")]
6281    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
6282    /// This field is only used for testing.
6283    #[prost(message, optional, tag="1001")]
6284    pub for_testing: ::core::option::Option<TestConfig>,
6285}
6286/// Nested message and enum types in `DataSourceConfig`.
6287pub mod data_source_config {
6288    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6289    #[repr(i32)]
6290    pub enum SessionInitiator {
6291        Unspecified = 0,
6292        /// This trace was initiated from a trusted system app has DUMP and
6293        /// USAGE_STATS permission. This system app is expected to not expose the
6294        /// trace to the user of the device.
6295        /// This is determined by checking the UID initiating the trace.
6296        TrustedSystem = 1,
6297    }
6298    impl SessionInitiator {
6299        /// String value of the enum field names used in the ProtoBuf definition.
6300        ///
6301        /// The values are not transformed in any way and thus are considered stable
6302        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6303        pub fn as_str_name(&self) -> &'static str {
6304            match self {
6305                SessionInitiator::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
6306                SessionInitiator::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
6307            }
6308        }
6309    }
6310    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6311    #[repr(i32)]
6312    pub enum BufferExhaustedPolicy {
6313        /// The data source will use its default buffer exhausted policy, specified
6314        /// by the code when the data source is registered.
6315        BufferExhaustedUnspecified = 0,
6316        /// The data source will drop packets when there's no space in the shared
6317        /// memory buffer.
6318        BufferExhaustedDrop = 1,
6319        /// The data source will wait when there's no space in the shared memory
6320        /// buffer. If there's still not space, after a few seconds, the whole
6321        /// producer process will be aborted.
6322        BufferExhaustedStallThenAbort = 2,
6323        /// The data source will wait when there's no space in the shared memory
6324        /// buffer.  If there's still not space, after a few seconds, the data source
6325        /// will drop packets.
6326        BufferExhaustedStallThenDrop = 3,
6327    }
6328    impl BufferExhaustedPolicy {
6329        /// String value of the enum field names used in the ProtoBuf definition.
6330        ///
6331        /// The values are not transformed in any way and thus are considered stable
6332        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6333        pub fn as_str_name(&self) -> &'static str {
6334            match self {
6335                BufferExhaustedPolicy::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
6336                BufferExhaustedPolicy::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
6337                BufferExhaustedPolicy::BufferExhaustedStallThenAbort => "BUFFER_EXHAUSTED_STALL_THEN_ABORT",
6338                BufferExhaustedPolicy::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
6339            }
6340        }
6341    }
6342}
6343/// The overall config that is used when starting a new tracing session through
6344/// ProducerPort::StartTracing().
6345/// It contains the general config for the logging buffer(s) and the configs for
6346/// all the data source being enabled.
6347///
6348/// Next id: 41.
6349#[derive(Clone, PartialEq, ::prost::Message)]
6350pub struct TraceConfig {
6351    #[prost(message, repeated, tag="1")]
6352    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
6353    #[prost(message, repeated, tag="2")]
6354    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
6355    #[prost(message, optional, tag="20")]
6356    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
6357    /// If specified, the trace will be stopped |duration_ms| after starting.
6358    /// This does *not* count the time the system is suspended, so we will run
6359    /// for duration_ms of system activity, not wall time.
6360    ///
6361    /// However in case of traces with triggers, see
6362    /// TriggerConfig.trigger_timeout_ms instead.
6363    #[prost(uint32, optional, tag="3")]
6364    pub duration_ms: ::core::option::Option<u32>,
6365    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
6366    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
6367    /// Linux/Android, no-op on other platforms. This is used when dealing with
6368    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
6369    /// wall-time, making them more likely to hit device reboots (and hence loss).
6370    /// This option also changes consistently the semantic of
6371    /// TriggerConfig.stop_delay_ms.
6372    #[prost(bool, optional, tag="36")]
6373    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
6374    /// This is set when --dropbox is passed to the Perfetto command line client
6375    /// and enables guardrails that limit resource usage for traces requested
6376    /// by statsd.
6377    #[prost(bool, optional, tag="4")]
6378    pub enable_extra_guardrails: ::core::option::Option<bool>,
6379    /// Reject producers that are not running under the same UID as the tracing
6380    /// service.
6381    #[prost(enumeration="trace_config::LockdownModeOperation", optional, tag="5")]
6382    pub lockdown_mode: ::core::option::Option<i32>,
6383    #[prost(message, repeated, tag="6")]
6384    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
6385    /// Statsd-specific metadata.
6386    #[prost(message, optional, tag="7")]
6387    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
6388    /// When true && |output_path| is empty, the EnableTracing() request must
6389    /// provide a file descriptor. The service will then periodically read packets
6390    /// out of the trace buffer and store it into the passed file.
6391    /// If |output_path| is not empty no fd should be passed, the service
6392    /// will create a new file and write into that (see comment below).
6393    #[prost(bool, optional, tag="8")]
6394    pub write_into_file: ::core::option::Option<bool>,
6395    /// This must point to a non-existing file. If the file exists the service
6396    /// will NOT overwrite and will fail instead as a security precaution.
6397    /// On Android, when this is used with the system traced, the path must be
6398    /// within /data/misc/perfetto-traces/ or the trace will fail.
6399    /// This option has been introduced in Android R. Before R write_into_file
6400    /// can be used only with the "pass a file descriptor over IPC" mode.
6401    #[prost(string, optional, tag="29")]
6402    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
6403    /// Optional. If non-zero tunes the write period. A min value of 100ms is
6404    /// enforced (i.e. smaller values are ignored).
6405    #[prost(uint32, optional, tag="9")]
6406    pub file_write_period_ms: ::core::option::Option<u32>,
6407    /// Optional. When non zero the periodic write stops once at most X bytes
6408    /// have been written into the file. Tracing is disabled when this limit is
6409    /// reached, even if |duration_ms| has not been reached yet.
6410    #[prost(uint64, optional, tag="10")]
6411    pub max_file_size_bytes: ::core::option::Option<u64>,
6412    #[prost(message, optional, tag="11")]
6413    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
6414    /// When true, data sources are not started until an explicit call to
6415    /// StartTracing() on the consumer port. This is to support early
6416    /// initialization and fast trace triggering. This can be used only when the
6417    /// Consumer explicitly triggers the StartTracing() method.
6418    /// This should not be used in a remote trace config via statsd, doing so will
6419    /// result in a hung trace session.
6420    #[prost(bool, optional, tag="12")]
6421    pub deferred_start: ::core::option::Option<bool>,
6422    /// When set, it periodically issues a Flush() to all data source, forcing them
6423    /// to commit their data into the tracing service. This can be used for
6424    /// quasi-real-time streaming mode and to guarantee some partial ordering of
6425    /// events in the trace in windows of X ms.
6426    #[prost(uint32, optional, tag="13")]
6427    pub flush_period_ms: ::core::option::Option<u32>,
6428    /// Wait for this long for producers to acknowledge flush requests.
6429    /// Default 5s.
6430    #[prost(uint32, optional, tag="14")]
6431    pub flush_timeout_ms: ::core::option::Option<u32>,
6432    /// Wait for this long for producers to acknowledge stop requests.
6433    /// Default 5s.
6434    #[prost(uint32, optional, tag="23")]
6435    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
6436    /// Android-only. If set, sends an intent to the Traceur system app when the
6437    /// trace ends to notify it about the trace readiness.
6438    #[prost(bool, optional, tag="16")]
6439    pub notify_traceur: ::core::option::Option<bool>,
6440    /// This field was introduced in Android S.
6441    /// Android-only. If set to a value > 0, marks the trace session as a candidate
6442    /// for being attached to a bugreport. This field effectively acts as a z-index
6443    /// for bugreports. When Android's dumpstate runs perfetto
6444    /// --save-for-bugreport, traced will pick the tracing session with the highest
6445    /// score (score <= 0 is ignored) and:
6446    /// On Android S, T:  will steal its contents, save the trace into
6447    ///      a known path and stop prematurely.
6448    /// On Android U+: will create a read-only snapshot and save that into a known
6449    ///      path, without stoppin the original tracing session.
6450    /// When this field is set the tracing session becomes eligible to be cloned
6451    /// by other UIDs.
6452    #[prost(int32, optional, tag="30")]
6453    pub bugreport_score: ::core::option::Option<i32>,
6454    /// When set, defines name of the file that will be saved under
6455    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
6456    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
6457    /// starting from the highest `bugreport_score`.
6458    /// Introduced in v42 / Android V.
6459    #[prost(string, optional, tag="38")]
6460    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
6461    #[prost(message, optional, tag="17")]
6462    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
6463    /// When this is non-empty the perfetto command line tool will ignore the rest
6464    /// of this TraceConfig and instead connect to the perfetto service as a
6465    /// producer and send these triggers, potentially stopping or starting traces
6466    /// that were previous configured to use a TriggerConfig.
6467    #[prost(string, repeated, tag="18")]
6468    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6469    #[prost(message, optional, tag="21")]
6470    pub incremental_state_config: ::core::option::Option<trace_config::IncrementalStateConfig>,
6471    /// No longer needed as we unconditionally allow tracing on user builds.
6472    #[deprecated]
6473    #[prost(bool, optional, tag="19")]
6474    pub allow_user_build_tracing: ::core::option::Option<bool>,
6475    /// If set the tracing service will ensure there is at most one tracing session
6476    /// with this key.
6477    #[prost(string, optional, tag="22")]
6478    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
6479    #[prost(enumeration="trace_config::CompressionType", optional, tag="24")]
6480    pub compression_type: ::core::option::Option<i32>,
6481    #[prost(message, optional, tag="25")]
6482    pub incident_report_config: ::core::option::Option<trace_config::IncidentReportConfig>,
6483    /// Android-only. Not for general use. If specified, sets the logging to statsd
6484    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
6485    /// this to enabled (if not explicitly set in the config) when specifying
6486    /// --upload.
6487    #[prost(enumeration="trace_config::StatsdLogging", optional, tag="31")]
6488    pub statsd_logging: ::core::option::Option<i32>,
6489    /// An identifier clients can use to tie this trace to other logging.
6490    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
6491    /// Trace UUID. If this field is set, the tracing service will respect the
6492    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
6493    /// gap-less snapshotting is not used.
6494    #[deprecated]
6495    #[prost(int64, optional, tag="27")]
6496    pub trace_uuid_msb: ::core::option::Option<i64>,
6497    #[deprecated]
6498    #[prost(int64, optional, tag="28")]
6499    pub trace_uuid_lsb: ::core::option::Option<i64>,
6500    #[prost(message, optional, tag="33")]
6501    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
6502    #[prost(message, optional, tag="34")]
6503    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
6504    #[prost(message, optional, tag="35")]
6505    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
6506    #[prost(message, repeated, tag="39")]
6507    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
6508    /// Priority boost to be applied to the traced process, when the session is
6509    /// running.
6510    #[prost(message, optional, tag="40")]
6511    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
6512}
6513/// Nested message and enum types in `TraceConfig`.
6514pub mod trace_config {
6515    #[derive(Clone, PartialEq, ::prost::Message)]
6516    pub struct BufferConfig {
6517        #[prost(uint32, optional, tag="1")]
6518        pub size_kb: ::core::option::Option<u32>,
6519        #[prost(enumeration="buffer_config::FillPolicy", optional, tag="4")]
6520        pub fill_policy: ::core::option::Option<i32>,
6521        /// When true the buffer is moved (rather than copied) onto the cloned
6522        /// session, and an empty buffer of the same size is allocated in the source
6523        /// tracing session. This feature will likely get deprecated in the future.
6524        /// It been introduced mainly to support the surfaceflinger snapshot dump
6525        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
6526        /// that case we don't want to retain another in-memory copy of the buffer.
6527        #[prost(bool, optional, tag="5")]
6528        pub transfer_on_clone: ::core::option::Option<bool>,
6529        /// Used in conjunction with transfer_on_clone. When true the buffer is
6530        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
6531        /// that if the data source took too long to write the data in a previous
6532        /// clone-related flush, we don't end up with a mixture of leftovers from
6533        /// the previous write and new data.
6534        #[prost(bool, optional, tag="6")]
6535        pub clear_before_clone: ::core::option::Option<bool>,
6536    }
6537    /// Nested message and enum types in `BufferConfig`.
6538    pub mod buffer_config {
6539        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6540        #[repr(i32)]
6541        pub enum FillPolicy {
6542            Unspecified = 0,
6543            /// Default behavior. The buffer operates as a conventional ring buffer.
6544            /// If the writer is faster than the reader (or if the reader reads only
6545            /// after tracing is stopped) newly written packets will overwrite old
6546            /// packets.
6547            RingBuffer = 1,
6548            /// Behaves like RING_BUFFER as long as there is space in the buffer or
6549            /// the reader catches up with the writer. As soon as the writer hits
6550            /// an unread chunk, it stops accepting new data in the buffer.
6551            Discard = 2,
6552        }
6553        impl FillPolicy {
6554            /// String value of the enum field names used in the ProtoBuf definition.
6555            ///
6556            /// The values are not transformed in any way and thus are considered stable
6557            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6558            pub fn as_str_name(&self) -> &'static str {
6559                match self {
6560                    FillPolicy::Unspecified => "UNSPECIFIED",
6561                    FillPolicy::RingBuffer => "RING_BUFFER",
6562                    FillPolicy::Discard => "DISCARD",
6563                }
6564            }
6565        }
6566    }
6567    #[derive(Clone, PartialEq, ::prost::Message)]
6568    pub struct DataSource {
6569        /// Filters and data-source specific config. It contains also the unique name
6570        /// of the data source, the one passed in the  DataSourceDescriptor when they
6571        /// register on the service.
6572        #[prost(message, optional, tag="1")]
6573        pub config: ::core::option::Option<super::DataSourceConfig>,
6574        /// Optional. If multiple producers (~processes) expose the same data source
6575        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
6576        /// the data source is enabled only for producers whose names match any of
6577        /// the filters.
6578        /// |producer_name_filter| has to be an exact match, while
6579        /// |producer_name_regex_filter| is a regular expression.
6580        /// This allows to enable a data source only for specific processes.
6581        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
6582        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
6583        #[prost(string, repeated, tag="2")]
6584        pub producer_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6585        #[prost(string, repeated, tag="3")]
6586        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6587    }
6588    /// Config for disabling builtin data sources in the tracing service.
6589    #[derive(Clone, PartialEq, ::prost::Message)]
6590    pub struct BuiltinDataSource {
6591        /// Disable emitting clock timestamps into the trace.
6592        #[prost(bool, optional, tag="1")]
6593        pub disable_clock_snapshotting: ::core::option::Option<bool>,
6594        /// Disable echoing the original trace config in the trace.
6595        #[prost(bool, optional, tag="2")]
6596        pub disable_trace_config: ::core::option::Option<bool>,
6597        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
6598        #[prost(bool, optional, tag="3")]
6599        pub disable_system_info: ::core::option::Option<bool>,
6600        /// Disable emitting events for data-source state changes (e.g. the marker
6601        /// for all data sources having ACKed the start of the trace).
6602        #[prost(bool, optional, tag="4")]
6603        pub disable_service_events: ::core::option::Option<bool>,
6604        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
6605        /// also ClockSnapshot's primary_trace_clock. The configured value is written
6606        /// into the trace as part of the ClockSnapshots emitted by the service.
6607        /// Trace processor will attempt to translate packet/event timestamps from
6608        /// various data sources (and their chosen clock domains) to this domain
6609        /// during import. Added in Android R.
6610        #[prost(enumeration="super::BuiltinClock", optional, tag="5")]
6611        pub primary_trace_clock: ::core::option::Option<i32>,
6612        /// Time interval in between snapshotting of sync markers, clock snapshots,
6613        /// stats, and other periodic service-emitted events. Note that the service
6614        /// only keeps track of the first and the most recent snapshot until
6615        /// ReadBuffers() is called.
6616        #[prost(uint32, optional, tag="6")]
6617        pub snapshot_interval_ms: ::core::option::Option<u32>,
6618        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
6619        /// clock should be used for periodic snapshots of service-emitted events.
6620        /// This means, if a snapshot *should* have happened during suspend, it will
6621        /// happen immediately after the device resumes.
6622        ///
6623        /// Choosing a clock like this is done on best-effort basis; not all
6624        /// platforms (e.g. Windows) expose a clock which can be used for periodic
6625        /// tasks counting suspend. If such a clock is not available, the service
6626        /// falls back to the best-available alternative.
6627        ///
6628        /// Introduced in Android S.
6629        /// TODO(lalitm): deprecate this in T and make this the default if nothing
6630        /// crashes in S.
6631        #[prost(bool, optional, tag="7")]
6632        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
6633        /// Disables the reporting of per-trace-writer histograms in TraceStats.
6634        #[prost(bool, optional, tag="8")]
6635        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
6636    }
6637    #[derive(Clone, PartialEq, ::prost::Message)]
6638    pub struct ProducerConfig {
6639        /// Identifies the producer for which this config is for.
6640        #[prost(string, optional, tag="1")]
6641        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
6642        /// Specifies the preferred size of the shared memory buffer. If the size is
6643        /// larger than the max size, the max will be used. If it is smaller than
6644        /// the page size or doesn't fit pages evenly into it, it will fall back to
6645        /// the size specified by the producer or finally the default shared memory
6646        /// size.
6647        #[prost(uint32, optional, tag="2")]
6648        pub shm_size_kb: ::core::option::Option<u32>,
6649        /// Specifies the preferred size of each page in the shared memory buffer.
6650        /// Must be an integer multiple of 4K.
6651        #[prost(uint32, optional, tag="3")]
6652        pub page_size_kb: ::core::option::Option<u32>,
6653    }
6654    /// Contains statsd-specific metadata about an alert associated with the trace.
6655    #[derive(Clone, PartialEq, ::prost::Message)]
6656    pub struct StatsdMetadata {
6657        /// The identifier of the alert which triggered this trace.
6658        #[prost(int64, optional, tag="1")]
6659        pub triggering_alert_id: ::core::option::Option<i64>,
6660        /// The uid which registered the triggering configuration with statsd.
6661        #[prost(int32, optional, tag="2")]
6662        pub triggering_config_uid: ::core::option::Option<i32>,
6663        /// The identifier of the config which triggered the alert.
6664        #[prost(int64, optional, tag="3")]
6665        pub triggering_config_id: ::core::option::Option<i64>,
6666        /// The identifier of the subscription which triggered this trace.
6667        #[prost(int64, optional, tag="4")]
6668        pub triggering_subscription_id: ::core::option::Option<i64>,
6669    }
6670    /// Contains flags which override the default values of the guardrails inside
6671    /// Perfetto.
6672    #[derive(Clone, PartialEq, ::prost::Message)]
6673    pub struct GuardrailOverrides {
6674        /// Override the default limit (in bytes) for uploading data to server within
6675        /// a 24 hour period.
6676        /// On R-, this override only affected userdebug builds. Since S, it also
6677        /// affects user builds.
6678        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
6679        /// was removed from Perfetto.
6680        #[deprecated]
6681        #[prost(uint64, optional, tag="1")]
6682        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
6683        /// Overrides the guardrail for maximum trace buffer size.
6684        /// Available on U+
6685        #[prost(uint32, optional, tag="2")]
6686        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
6687    }
6688    /// Triggers allow producers to start or stop the tracing session when an event
6689    /// occurs.
6690    ///
6691    /// For example if we are tracing probabilistically, most traces will be
6692    /// uninteresting. Triggers allow us to keep only the interesting ones such as
6693    /// those traces during which the device temperature reached a certain
6694    /// threshold. In this case the producer can activate a trigger to keep
6695    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
6696    /// (START_TRACING) because it knows something is about to happen.
6697    #[derive(Clone, PartialEq, ::prost::Message)]
6698    pub struct TriggerConfig {
6699        #[prost(enumeration="trigger_config::TriggerMode", optional, tag="1")]
6700        pub trigger_mode: ::core::option::Option<i32>,
6701        /// This flag is really a workaround for b/274931668. This is needed only
6702        /// when deploying configs to different versions of the tracing service.
6703        /// When this is set to true this has the same effect of setting trigger_mode
6704        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
6705        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
6706        /// versions of Android and fall back to STOP_TRACING on older versions where
6707        /// CLONE_SNAPSHOT did not exist.
6708        /// When using this flag, trigger_mode must be set to STOP_TRACING.
6709        #[prost(bool, optional, tag="5")]
6710        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
6711        /// A list of triggers which are related to this configuration. If ANY
6712        /// trigger is seen then an action will be performed based on |trigger_mode|.
6713        #[prost(message, repeated, tag="2")]
6714        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
6715        /// Required and must be positive if a TriggerConfig is specified. This is
6716        /// how long this TraceConfig should wait for a trigger to arrive. After this
6717        /// period of time if no trigger is seen the TracingSession will be cleaned
6718        /// up.
6719        #[prost(uint32, optional, tag="3")]
6720        pub trigger_timeout_ms: ::core::option::Option<u32>,
6721    }
6722    /// Nested message and enum types in `TriggerConfig`.
6723    pub mod trigger_config {
6724        #[derive(Clone, PartialEq, ::prost::Message)]
6725        pub struct Trigger {
6726            /// The producer must specify this name to activate the trigger.
6727            #[prost(string, optional, tag="1")]
6728            pub name: ::core::option::Option<::prost::alloc::string::String>,
6729            /// An std::regex that will match the producer that can activate this
6730            /// trigger. This is optional. If unset any producers can activate this
6731            /// trigger.
6732            #[prost(string, optional, tag="2")]
6733            pub producer_name_regex: ::core::option::Option<::prost::alloc::string::String>,
6734            /// After a trigger is received either in START_TRACING or STOP_TRACING
6735            /// mode then the trace will end |stop_delay_ms| after triggering.
6736            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
6737            /// snapshot.
6738            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
6739            /// based on wall-clock, counting also time in suspend.
6740            #[prost(uint32, optional, tag="3")]
6741            pub stop_delay_ms: ::core::option::Option<u32>,
6742            /// Limits the number of traces this trigger can start/stop in a rolling
6743            /// 24 hour window. If this field is unset or zero, no limit is applied and
6744            /// activiation of this trigger *always* starts/stops the trace.
6745            #[prost(uint32, optional, tag="4")]
6746            pub max_per_24_h: ::core::option::Option<u32>,
6747            /// A value between 0 and 1 which encodes the probability of skipping a
6748            /// trigger with this name. This is useful for reducing the probability
6749            /// of high-frequency triggers from dominating trace finaization. If this
6750            /// field is unset or zero, the trigger will *never* be skipped. If this
6751            /// field is greater than or equal to 1, this trigger will *always* be
6752            /// skipped i.e. it will be as if this trigger was never included in the
6753            /// first place.
6754            /// This probability check is applied *before* any other limits. For
6755            /// example, if |max_per_24_h| is also set, first we will check if the
6756            /// probability bar is met and only then will we check the |max_per_24_h|
6757            /// limit.
6758            #[prost(double, optional, tag="5")]
6759            pub skip_probability: ::core::option::Option<f64>,
6760        }
6761        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6762        #[repr(i32)]
6763        pub enum TriggerMode {
6764            Unspecified = 0,
6765            /// When this mode is chosen, data sources are not started until one of the
6766            /// |triggers| are received. This supports early initialization and fast
6767            /// starting of the tracing system. On triggering, the session will then
6768            /// record for |stop_delay_ms|. However if no trigger is seen
6769            /// after |trigger_timeout_ms| the session will be stopped and no data will
6770            /// be returned.
6771            StartTracing = 1,
6772            /// When this mode is chosen, the session will be started via the normal
6773            /// EnableTracing() & StartTracing(). If no trigger is ever seen
6774            /// the session will be stopped after |trigger_timeout_ms| and no data will
6775            /// be returned. However if triggered the trace will stop after
6776            /// |stop_delay_ms| and any data in the buffer will be returned to the
6777            /// consumer.
6778            StopTracing = 2,
6779            /// When this mode is chosen, this causes a snapshot of the current tracing
6780            /// session to be created after |stop_delay_ms| while the current tracing
6781            /// session continues undisturbed (% an extra flush). This mode can be
6782            /// used only when the tracing session is handled by the "perfetto" cmdline
6783            /// client (which is true in 90% of cases). Part of the business logic
6784            /// necessary for this behavior, and ensuing file handling, lives in
6785            /// perfetto_cmd.cc . On other consumers, this causes only a notification
6786            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
6787            /// consumer is supposed to call CloneSession() itself after the event.
6788            /// Use use_clone_snapshot_if_available=true when targeting older versions
6789            /// of perfetto.
6790            CloneSnapshot = 4,
6791        }
6792        impl TriggerMode {
6793            /// String value of the enum field names used in the ProtoBuf definition.
6794            ///
6795            /// The values are not transformed in any way and thus are considered stable
6796            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6797            pub fn as_str_name(&self) -> &'static str {
6798                match self {
6799                    TriggerMode::Unspecified => "UNSPECIFIED",
6800                    TriggerMode::StartTracing => "START_TRACING",
6801                    TriggerMode::StopTracing => "STOP_TRACING",
6802                    TriggerMode::CloneSnapshot => "CLONE_SNAPSHOT",
6803                }
6804            }
6805        }
6806    }
6807    /// Configuration for trace contents that reference earlier trace data. For
6808    /// example, a data source might intern strings, and emit packets containing
6809    /// {interned id : string} pairs. Future packets from that data source can then
6810    /// use the interned ids instead of duplicating the raw string contents. The
6811    /// trace parser will then need to use that interning table to fully interpret
6812    /// the rest of the trace.
6813    #[derive(Clone, PartialEq, ::prost::Message)]
6814    pub struct IncrementalStateConfig {
6815        /// If nonzero, notify eligible data sources to clear their incremental state
6816        /// periodically, with the given period. The notification is sent only to
6817        /// data sources that have |handles_incremental_state_clear| set in their
6818        /// DataSourceDescriptor. The notification requests that the data source
6819        /// stops referring to past trace contents. This is particularly useful when
6820        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
6821        /// trace data.
6822        ///
6823        /// Warning: this time-based global clearing is likely to be removed in the
6824        /// future, to be replaced with a smarter way of sending the notifications
6825        /// only when necessary.
6826        #[prost(uint32, optional, tag="1")]
6827        pub clear_period_ms: ::core::option::Option<u32>,
6828    }
6829    /// Android-only. Not for general use. If set, saves the trace into an
6830    /// incident. This field is read by perfetto_cmd, rather than the tracing
6831    /// service. This field must be set when passing the --upload flag to
6832    /// perfetto_cmd.
6833    ///
6834    /// In this message, either:
6835    ///   * all of |destination_package|, |destination_class| and |privacy_level|
6836    ///     must be set.
6837    ///   * |skip_incidentd| must be explicitly set to true.
6838    #[derive(Clone, PartialEq, ::prost::Message)]
6839    pub struct IncidentReportConfig {
6840        #[prost(string, optional, tag="1")]
6841        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
6842        #[prost(string, optional, tag="2")]
6843        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
6844        /// Level of filtering in the requested incident. See |Destination| in
6845        /// frameworks/base/core/proto/android/privacy.proto.
6846        #[prost(int32, optional, tag="3")]
6847        pub privacy_level: ::core::option::Option<i32>,
6848        /// If true, then skips saving the trace to incidentd.
6849        ///
6850        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
6851        /// or when we explicitly don't want traces to go to incidentd even when they
6852        /// usually would (e.g. configs deployed using statsd but only used for
6853        /// inclusion in bugreports using |bugreport_score|).
6854        ///
6855        /// The motivation for having this flag, instead of just not setting
6856        /// |incident_report_config|, is prevent accidents where
6857        /// |incident_report_config| is omitted by mistake.
6858        #[prost(bool, optional, tag="5")]
6859        pub skip_incidentd: ::core::option::Option<bool>,
6860        /// If true, do not write the trace into dropbox (i.e. incident only).
6861        /// Otherwise, write to both dropbox and incident.
6862        /// TODO(lalitm): remove this field as we no longer use Dropbox.
6863        #[deprecated]
6864        #[prost(bool, optional, tag="4")]
6865        pub skip_dropbox: ::core::option::Option<bool>,
6866    }
6867    /// When set applies a post-filter to the trace contents using the filter
6868    /// provided. The filter is applied at ReadBuffers() time and works both in the
6869    /// case of IPC readback and write_into_file. This filter can be generated
6870    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
6871    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
6872    /// design.
6873    ///
6874    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
6875    /// Android T with a different field number. Updated in Android U with a new
6876    /// bytecode version which supports string filtering.
6877    ///
6878    /// =========================
6879    /// Filter bytecode.
6880    /// =========================
6881    #[derive(Clone, PartialEq, ::prost::Message)]
6882    pub struct TraceFilter {
6883        /// The bytecode as implemented in Android T.
6884        #[prost(bytes="vec", optional, tag="1")]
6885        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6886        /// The bytecode as implemented in Android U. Adds support for string
6887        /// filtering.
6888        #[prost(bytes="vec", optional, tag="2")]
6889        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6890        #[prost(message, optional, tag="3")]
6891        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
6892    }
6893    /// Nested message and enum types in `TraceFilter`.
6894    pub mod trace_filter {
6895        /// A rule specifies how strings should be filtered.
6896        #[derive(Clone, PartialEq, ::prost::Message)]
6897        pub struct StringFilterRule {
6898            /// The policy (i.e. algorithm) dictating how strings matching this rule
6899            /// should be handled.
6900            #[prost(enumeration="StringFilterPolicy", optional, tag="1")]
6901            pub policy: ::core::option::Option<i32>,
6902            /// The regex pattern used to match against each string.
6903            #[prost(string, optional, tag="2")]
6904            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
6905            /// The string which should appear after the tgid in atrace tracepoint
6906            /// strings.
6907            #[prost(string, optional, tag="3")]
6908            pub atrace_payload_starts_with: ::core::option::Option<::prost::alloc::string::String>,
6909        }
6910        /// A chain is a list of rules which string will be sequentially checked
6911        /// against.
6912        #[derive(Clone, PartialEq, ::prost::Message)]
6913        pub struct StringFilterChain {
6914            #[prost(message, repeated, tag="1")]
6915            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
6916        }
6917        // =========================
6918        // String filtering
6919        // =========================
6920
6921        // The principles and terminology of string filtering is heavily inspired by
6922        // iptables. A "rule" decide how strings should be filtered. Each rule
6923        // contains a "policy" which indicates the algorithm to use for filtering.
6924        // A "chain" is a list of rules which will be sequentially checked against
6925        // each string.
6926        //
6927        // The first rule which applies to the string terminates filtering for that
6928        // string. If no rules apply, the string is left unchanged.
6929
6930        /// A policy specifies which algorithm should be used for filtering the
6931        /// string.
6932        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6933        #[repr(i32)]
6934        pub enum StringFilterPolicy {
6935            SfpUnspecified = 0,
6936            /// Tries to match the string field against |regex_pattern|. If it
6937            /// matches, all matching groups are "redacted" (i.e. replaced with a
6938            /// constant string) and filtering is terminated (i.e. no further rules are
6939            /// checked). If it doesn't match, the string is left unchanged and the
6940            /// next rule in chain is considered.
6941            SfpMatchRedactGroups = 1,
6942            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
6943            /// checking the regex. Specifically, it tries to parse the string field as
6944            /// an atrace tracepoint and checks if the post-tgid field starts with
6945            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
6946            /// this check succeeds.
6947            SfpAtraceMatchRedactGroups = 2,
6948            /// Tries to match the string field against |regex_pattern|. If it
6949            /// matches, filtering is terminated (i.e. no further rules are checked).
6950            /// If it doesn't match, the string is left unchanged and the next rule in
6951            /// chain is considered.
6952            SfpMatchBreak = 3,
6953            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
6954            /// the regex. Specifically, it tries to parse the string field as an
6955            /// atrace tracepoint and checks if the post-tgid field starts with
6956            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
6957            /// this check succeeds.
6958            SfpAtraceMatchBreak = 4,
6959            /// Tries to repeatedly search (i.e. find substrings of) the string field
6960            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
6961            /// replaced with a constant string). Once there are no further matches,
6962            /// filtering is terminated (i.e. no further rules are checked).
6963            ///
6964            /// Note that this is policy is a "search" policy not a "match" policy
6965            /// unlike the above policies:
6966            ///   * Match policies require matching the full string i.e. there is an
6967            ///     implicit leading `^` and trailing `$`.
6968            ///   * Search policies perform repeated partial matching of the string
6969            ///     e.g.
6970            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
6971            ///       - Pattern: `foo=(\d+)`
6972            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
6973            ///     where P6O is the redaction string
6974            ///
6975            /// All of this is only performed after some pre-work where we try to parse
6976            /// the string field as an atrace tracepoint and check if the post-tgid
6977            /// field starts with |atrace_post_tgid_starts_with|.
6978            ///
6979            /// If there are no partial matches, the string is left unchanged and the
6980            /// next rule in chain is considered.
6981            SfpAtraceRepeatedSearchRedactGroups = 5,
6982        }
6983        impl StringFilterPolicy {
6984            /// String value of the enum field names used in the ProtoBuf definition.
6985            ///
6986            /// The values are not transformed in any way and thus are considered stable
6987            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6988            pub fn as_str_name(&self) -> &'static str {
6989                match self {
6990                    StringFilterPolicy::SfpUnspecified => "SFP_UNSPECIFIED",
6991                    StringFilterPolicy::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
6992                    StringFilterPolicy::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
6993                    StringFilterPolicy::SfpMatchBreak => "SFP_MATCH_BREAK",
6994                    StringFilterPolicy::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
6995                    StringFilterPolicy::SfpAtraceRepeatedSearchRedactGroups => "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS",
6996                }
6997            }
6998        }
6999    }
7000    /// Android-only. Not for general use. If set, reports the trace to the
7001    /// Android framework. This field is read by perfetto_cmd, rather than the
7002    /// tracing service. This field must be set when passing the --upload flag to
7003    /// perfetto_cmd.
7004    ///
7005    /// In this message, either:
7006    ///   * |reporter_service_package| and |reporter_service_class| must be set.
7007    ///   * |skip_reporting| must be explicitly set to true.
7008    #[derive(Clone, PartialEq, ::prost::Message)]
7009    pub struct AndroidReportConfig {
7010        #[prost(string, optional, tag="1")]
7011        pub reporter_service_package: ::core::option::Option<::prost::alloc::string::String>,
7012        #[prost(string, optional, tag="2")]
7013        pub reporter_service_class: ::core::option::Option<::prost::alloc::string::String>,
7014        /// If true, then skips reporting the trace to Android framework.
7015        ///
7016        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
7017        /// or when we explicitly don't want to report traces to the framework even
7018        /// when they usually would (e.g. configs deployed using statsd but only
7019        /// used for inclusion in bugreports using |bugreport_score|).
7020        ///
7021        /// The motivation for having this flag, instead of just not setting
7022        /// |framework_report_config|, is prevent accidents where
7023        /// |framework_report_config| is omitted by mistake.
7024        #[prost(bool, optional, tag="3")]
7025        pub skip_report: ::core::option::Option<bool>,
7026        /// If true, will direct the Android framework to read the data in trace
7027        /// file and pass it to the reporter class over a pipe instead of passing
7028        /// the file descriptor directly.
7029        ///
7030        /// This flag is needed because the Android test framework does not
7031        /// currently support priv-app helper apps (in terms of SELinux) and we
7032        /// really don't want to add an allow rule for untrusted_app to receive
7033        /// trace fds.
7034        ///
7035        /// Because of this, we instead will direct the framework to create a new
7036        /// pipe and pass this to the reporter process instead. As the pipe is
7037        /// created by the framework, we won't have any problems with SELinux
7038        /// (system_server is already allowed to pass pipe fds, even
7039        /// to untrusted apps).
7040        ///
7041        /// As the name suggests this option *MUST* only be used for testing.
7042        /// Note that the framework will reject (and drop) files which are too
7043        /// large both for simplicity and to be minimize the amount of data we
7044        /// pass to a non-priv app (note that the framework will still check
7045        /// manifest permissions even though SELinux permissions are worked around).
7046        #[prost(bool, optional, tag="4")]
7047        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
7048    }
7049    /// If set, delays the start of tracing by a random duration. The duration is
7050    /// chosen from a uniform distribution between the specified minimum and
7051    /// maximum.
7052    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
7053    /// not work if you communicate with traced directly over the consumer API.
7054    /// Introduced in Android T.
7055    #[derive(Clone, PartialEq, ::prost::Message)]
7056    pub struct CmdTraceStartDelay {
7057        #[prost(uint32, optional, tag="1")]
7058        pub min_delay_ms: ::core::option::Option<u32>,
7059        #[prost(uint32, optional, tag="2")]
7060        pub max_delay_ms: ::core::option::Option<u32>,
7061    }
7062    /// When non-empty, ensures that for a each semaphore named `name at most
7063    /// `max_other_session_count`` *other* sessions (whose value is taken of the
7064    /// minimum of all values specified by this config or any already-running
7065    /// session) can be be running.
7066    ///
7067    /// If a semaphore "acquisition" fails, EnableTracing will return an error
7068    /// and the tracing session will not be started (or elgible to start in
7069    /// the case of deferred sessions).
7070    ///
7071    /// This is easiest to explain with an example. Suppose the tracing service has
7072    /// the following active tracing sessions:
7073    ///    S1 = [{name=foo, max_other_session_count=2},
7074    ///          {name=bar, max_other_session_count=0}]
7075    ///    S2 = [{name=foo, max_other_session_count=1},
7076    ///          {name=baz, max_other_session_count=1}]
7077    ///
7078    /// Then, for a new session, the following would be the expected behaviour of
7079    /// EnableSession given the state of `session_semaphores`.
7080    ///    Q: session_semaphores = []
7081    ///    A: Allowed because it does not specify any semaphores. Will be allowed
7082    ///       no matter the state of any other tracing session.
7083    ///    Q: session_semaphores = [{name=baz, max_other_session_count=1}]
7084    ///    A: Allowed because both S2 and this config specify
7085    ///       max_other_session_count=1 for baz.
7086    ///    Q: session_semaphores = [{name=foo, max_other_session_count=3}]
7087    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
7088    ///       takes that slot.
7089    ///    Q: session_semaphores = [{name=bar, max_other_session_count=0}]
7090    ///    A: Denied because S1 takes the the slot specified by both S1 and
7091    ///       this config.
7092    ///
7093    /// Introduced in 24Q3 (Android V).
7094    #[derive(Clone, PartialEq, ::prost::Message)]
7095    pub struct SessionSemaphore {
7096        /// The name of the semaphore. Acts as a unique identifier across all
7097        /// tracing sessions (including the one being started).
7098        #[prost(string, optional, tag="1")]
7099        pub name: ::core::option::Option<::prost::alloc::string::String>,
7100        /// The maximum number of *other* sesssions which specify the same semaphore
7101        /// which can be active. The minimum of this value across all tracing
7102        /// sessions and the value specified by the config is used when deciding
7103        /// whether the tracing session can be started.
7104        #[prost(uint64, optional, tag="2")]
7105        pub max_other_session_count: ::core::option::Option<u64>,
7106    }
7107    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7108    #[repr(i32)]
7109    pub enum LockdownModeOperation {
7110        LockdownUnchanged = 0,
7111        LockdownClear = 1,
7112        LockdownSet = 2,
7113    }
7114    impl LockdownModeOperation {
7115        /// String value of the enum field names used in the ProtoBuf definition.
7116        ///
7117        /// The values are not transformed in any way and thus are considered stable
7118        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7119        pub fn as_str_name(&self) -> &'static str {
7120            match self {
7121                LockdownModeOperation::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
7122                LockdownModeOperation::LockdownClear => "LOCKDOWN_CLEAR",
7123                LockdownModeOperation::LockdownSet => "LOCKDOWN_SET",
7124            }
7125        }
7126    }
7127    /// Compress trace with the given method. Best effort.
7128    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7129    #[repr(i32)]
7130    pub enum CompressionType {
7131        Unspecified = 0,
7132        Deflate = 1,
7133    }
7134    impl CompressionType {
7135        /// String value of the enum field names used in the ProtoBuf definition.
7136        ///
7137        /// The values are not transformed in any way and thus are considered stable
7138        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7139        pub fn as_str_name(&self) -> &'static str {
7140            match self {
7141                CompressionType::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
7142                CompressionType::Deflate => "COMPRESSION_TYPE_DEFLATE",
7143            }
7144        }
7145    }
7146    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7147    #[repr(i32)]
7148    pub enum StatsdLogging {
7149        Unspecified = 0,
7150        Enabled = 1,
7151        Disabled = 2,
7152    }
7153    impl StatsdLogging {
7154        /// String value of the enum field names used in the ProtoBuf definition.
7155        ///
7156        /// The values are not transformed in any way and thus are considered stable
7157        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7158        pub fn as_str_name(&self) -> &'static str {
7159            match self {
7160                StatsdLogging::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
7161                StatsdLogging::Enabled => "STATSD_LOGGING_ENABLED",
7162                StatsdLogging::Disabled => "STATSD_LOGGING_DISABLED",
7163            }
7164        }
7165    }
7166}
7167/// Arguments for rpc EnableTracing().
7168#[derive(Clone, PartialEq, ::prost::Message)]
7169pub struct EnableTracingRequest {
7170    #[prost(message, optional, tag="1")]
7171    pub trace_config: ::core::option::Option<TraceConfig>,
7172    /// Introduced in Android Q. This is used for re-attaching to the end-of-trace
7173    /// EnableTracingResponse notification after a Detach+Attach request.
7174    /// When this flag is set the |trace_config| is ignored and no method is called
7175    /// on the tracing service.
7176    #[prost(bool, optional, tag="2")]
7177    pub attach_notification_only: ::core::option::Option<bool>,
7178}
7179#[derive(Clone, PartialEq, ::prost::Message)]
7180pub struct EnableTracingResponse {
7181    /// If present and non-empty tracing was disabled because of an error.
7182    /// Introduced in Android S.
7183    #[prost(string, optional, tag="3")]
7184    pub error: ::core::option::Option<::prost::alloc::string::String>,
7185    #[prost(oneof="enable_tracing_response::State", tags="1")]
7186    pub state: ::core::option::Option<enable_tracing_response::State>,
7187}
7188/// Nested message and enum types in `EnableTracingResponse`.
7189pub mod enable_tracing_response {
7190    #[derive(Clone, PartialEq, ::prost::Oneof)]
7191    pub enum State {
7192        #[prost(bool, tag="1")]
7193        Disabled(bool),
7194    }
7195}
7196/// Arguments for rpc StartTracing().
7197#[derive(Clone, PartialEq, ::prost::Message)]
7198pub struct StartTracingRequest {
7199}
7200#[derive(Clone, PartialEq, ::prost::Message)]
7201pub struct StartTracingResponse {
7202}
7203/// Arguments for rpc ChangeTraceConfig().
7204#[derive(Clone, PartialEq, ::prost::Message)]
7205pub struct ChangeTraceConfigRequest {
7206    #[prost(message, optional, tag="1")]
7207    pub trace_config: ::core::option::Option<TraceConfig>,
7208}
7209#[derive(Clone, PartialEq, ::prost::Message)]
7210pub struct ChangeTraceConfigResponse {
7211}
7212/// Arguments for rpc DisableTracing().
7213///
7214/// TODO: not supported yet, selectively disable only some data sources.
7215/// repeated string data_source_name;
7216#[derive(Clone, PartialEq, ::prost::Message)]
7217pub struct DisableTracingRequest {
7218}
7219#[derive(Clone, PartialEq, ::prost::Message)]
7220pub struct DisableTracingResponse {
7221}
7222/// Arguments for rpc ReadBuffers().
7223///
7224/// The |id|s of the buffer, as passed to CreateBuffers().
7225/// TODO: repeated uint32 buffer_ids = 1;
7226#[derive(Clone, PartialEq, ::prost::Message)]
7227pub struct ReadBuffersRequest {
7228}
7229/// TODO: uint32 buffer_id = 1;
7230#[derive(Clone, PartialEq, ::prost::Message)]
7231pub struct ReadBuffersResponse {
7232    #[prost(message, repeated, tag="2")]
7233    pub slices: ::prost::alloc::vec::Vec<read_buffers_response::Slice>,
7234}
7235/// Nested message and enum types in `ReadBuffersResponse`.
7236pub mod read_buffers_response {
7237    /// Each streaming reply returns one or more slices for one or more trace
7238    /// packets, or even just a portion of it (if it's too big to fit within one
7239    /// IPC). The returned slices are ordered and contiguous: packets' slices are
7240    /// not interleaved and slices are sent only once all slices for a packet are
7241    /// available (i.e. the consumer will never see any gap).
7242    #[derive(Clone, PartialEq, ::prost::Message)]
7243    pub struct Slice {
7244        #[prost(bytes="vec", optional, tag="1")]
7245        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7246        /// When true, this is the last slice for the packet. A ReadBufferResponse
7247        /// might have no slices marked as |last_slice_for_packet|==true, in the case
7248        /// of a very large packet that gets chunked into several IPCs (in which case
7249        /// only the last IPC for the packet will have this flag set).
7250        #[prost(bool, optional, tag="2")]
7251        pub last_slice_for_packet: ::core::option::Option<bool>,
7252    }
7253}
7254/// Arguments for rpc FreeBuffers().
7255#[derive(Clone, PartialEq, ::prost::Message)]
7256pub struct FreeBuffersRequest {
7257    /// The |id|s of the buffer, as passed to CreateBuffers().
7258    #[prost(uint32, repeated, packed="false", tag="1")]
7259    pub buffer_ids: ::prost::alloc::vec::Vec<u32>,
7260}
7261#[derive(Clone, PartialEq, ::prost::Message)]
7262pub struct FreeBuffersResponse {
7263}
7264/// Arguments for rpc Flush().
7265#[derive(Clone, PartialEq, ::prost::Message)]
7266pub struct FlushRequest {
7267    #[prost(uint32, optional, tag="1")]
7268    pub timeout_ms: ::core::option::Option<u32>,
7269    /// More details such as flush reason and originator. Introduced in v38 / V.
7270    /// See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
7271    #[prost(uint64, optional, tag="2")]
7272    pub flags: ::core::option::Option<u64>,
7273}
7274#[derive(Clone, PartialEq, ::prost::Message)]
7275pub struct FlushResponse {
7276}
7277/// Arguments for rpc Detach
7278#[derive(Clone, PartialEq, ::prost::Message)]
7279pub struct DetachRequest {
7280    #[prost(string, optional, tag="1")]
7281    pub key: ::core::option::Option<::prost::alloc::string::String>,
7282}
7283#[derive(Clone, PartialEq, ::prost::Message)]
7284pub struct DetachResponse {
7285}
7286/// Arguments for rpc Attach.
7287#[derive(Clone, PartialEq, ::prost::Message)]
7288pub struct AttachRequest {
7289    #[prost(string, optional, tag="1")]
7290    pub key: ::core::option::Option<::prost::alloc::string::String>,
7291}
7292#[derive(Clone, PartialEq, ::prost::Message)]
7293pub struct AttachResponse {
7294    #[prost(message, optional, tag="1")]
7295    pub trace_config: ::core::option::Option<TraceConfig>,
7296}
7297// Arguments for rpc GetTraceStats.
7298
7299#[derive(Clone, PartialEq, ::prost::Message)]
7300pub struct GetTraceStatsRequest {
7301}
7302#[derive(Clone, PartialEq, ::prost::Message)]
7303pub struct GetTraceStatsResponse {
7304    #[prost(message, optional, tag="1")]
7305    pub trace_stats: ::core::option::Option<TraceStats>,
7306}
7307// Arguments for rpc ObserveEvents.
7308
7309/// To stop observing events of a certain type, send a request with the remaining
7310/// types. To stop observing completely, send an empty request.
7311#[derive(Clone, PartialEq, ::prost::Message)]
7312pub struct ObserveEventsRequest {
7313    #[prost(enumeration="observable_events::Type", repeated, packed="false", tag="1")]
7314    pub events_to_observe: ::prost::alloc::vec::Vec<i32>,
7315}
7316#[derive(Clone, PartialEq, ::prost::Message)]
7317pub struct ObserveEventsResponse {
7318    #[prost(message, optional, tag="1")]
7319    pub events: ::core::option::Option<ObservableEvents>,
7320}
7321/// Arguments for rpc QueryServiceState.
7322#[derive(Clone, PartialEq, ::prost::Message)]
7323pub struct QueryServiceStateRequest {
7324    /// If set, only the TracingServiceState.tracing_sessions is filled. Producers
7325    /// and data sources are omitted.
7326    #[prost(bool, optional, tag="1")]
7327    pub sessions_only: ::core::option::Option<bool>,
7328}
7329#[derive(Clone, PartialEq, ::prost::Message)]
7330pub struct QueryServiceStateResponse {
7331    /// In order to avoid hitting IPC message size limitations, the service will
7332    /// return >1 replies for each query, chunking the TracingServiceState. The
7333    /// receiver is expected to merge replies together and parse that when the
7334    /// last reply is received (i.e. when IPC's |has_more| == false).
7335    #[prost(message, optional, tag="1")]
7336    pub service_state: ::core::option::Option<TracingServiceState>,
7337}
7338/// Arguments for rpc QueryCapabilities.
7339#[derive(Clone, PartialEq, ::prost::Message)]
7340pub struct QueryCapabilitiesRequest {
7341}
7342#[derive(Clone, PartialEq, ::prost::Message)]
7343pub struct QueryCapabilitiesResponse {
7344    #[prost(message, optional, tag="1")]
7345    pub capabilities: ::core::option::Option<TracingServiceCapabilities>,
7346}
7347/// Arguments for rpc SaveTraceForBugreport.
7348#[derive(Clone, PartialEq, ::prost::Message)]
7349pub struct SaveTraceForBugreportRequest {
7350}
7351/// This response is sent only after the trace was saved into file (if succeeded)
7352/// or something failed.
7353#[derive(Clone, PartialEq, ::prost::Message)]
7354pub struct SaveTraceForBugreportResponse {
7355    /// If true, an eligible the trace was saved into a known location (on Android
7356    /// /data/misc/perfetto-traces, see GetBugreportTracePath()).
7357    /// If false no trace with bugreport_score > 0 was found or an error occurred.
7358    /// see |msg| in that case for details about the failure.
7359    #[prost(bool, optional, tag="1")]
7360    pub success: ::core::option::Option<bool>,
7361    #[prost(string, optional, tag="2")]
7362    pub msg: ::core::option::Option<::prost::alloc::string::String>,
7363}
7364/// Arguments for rpc CloneSession.
7365#[derive(Clone, PartialEq, ::prost::Message)]
7366pub struct CloneSessionRequest {
7367    /// If set, the trace filter will not have effect on the cloned session.
7368    /// Used for bugreports.
7369    #[prost(bool, optional, tag="2")]
7370    pub skip_trace_filter: ::core::option::Option<bool>,
7371    /// If set, affects the generation of the FlushFlags::CloneTarget to be set
7372    /// to kBugreport when requesting the flush to the producers.
7373    #[prost(bool, optional, tag="3")]
7374    pub for_bugreport: ::core::option::Option<bool>,
7375    /// If set, this is stored in the trace as name of the trigger that caused the
7376    /// clone.
7377    #[prost(string, optional, tag="5")]
7378    pub clone_trigger_name: ::core::option::Option<::prost::alloc::string::String>,
7379    /// If set, this is stored in the trace as name of the producer that triggered
7380    /// the clone.
7381    #[prost(string, optional, tag="6")]
7382    pub clone_trigger_producer_name: ::core::option::Option<::prost::alloc::string::String>,
7383    /// If set, this is stored in the trace as uid of the producer that triggered
7384    /// the clone.
7385    #[prost(int32, optional, tag="7")]
7386    pub clone_trigger_trusted_producer_uid: ::core::option::Option<i32>,
7387    /// If set, this is stored in the trace as timestamp of the trigger that caused
7388    /// the clone.
7389    #[prost(uint64, optional, tag="8")]
7390    pub clone_trigger_boot_time_ns: ::core::option::Option<u64>,
7391    /// If set, this is stored in the trace as the configured delay of the trigger
7392    /// that caused the clone.
7393    #[prost(uint64, optional, tag="9")]
7394    pub clone_trigger_delay_ms: ::core::option::Option<u64>,
7395    #[prost(oneof="clone_session_request::Selector", tags="1, 4")]
7396    pub selector: ::core::option::Option<clone_session_request::Selector>,
7397}
7398/// Nested message and enum types in `CloneSessionRequest`.
7399pub mod clone_session_request {
7400    #[derive(Clone, PartialEq, ::prost::Oneof)]
7401    pub enum Selector {
7402        /// The session ID to clone. If session_id == kBugreportSessionId (0xff...ff)
7403        /// the session with the highest bugreport score is cloned (if any exists).
7404        #[prost(uint64, tag="1")]
7405        SessionId(u64),
7406        /// The unique_session_name of the tracing session to clone. Tracing sessions
7407        /// that are clones of other tracing sessions are ignored.
7408        #[prost(string, tag="4")]
7409        UniqueSessionName(::prost::alloc::string::String),
7410    }
7411}
7412#[derive(Clone, PartialEq, ::prost::Message)]
7413pub struct CloneSessionResponse {
7414    /// If true, the clone was successful. If false it failed and |error| contains
7415    /// the details about the failure.
7416    #[prost(bool, optional, tag="1")]
7417    pub success: ::core::option::Option<bool>,
7418    #[prost(string, optional, tag="2")]
7419    pub error: ::core::option::Option<::prost::alloc::string::String>,
7420    /// The UUID of the cloned session.
7421    #[prost(int64, optional, tag="3")]
7422    pub uuid_msb: ::core::option::Option<i64>,
7423    #[prost(int64, optional, tag="4")]
7424    pub uuid_lsb: ::core::option::Option<i64>,
7425}
7426#[derive(Clone, PartialEq, ::prost::Message)]
7427pub struct CommitDataRequest {
7428    #[prost(message, repeated, tag="1")]
7429    pub chunks_to_move: ::prost::alloc::vec::Vec<commit_data_request::ChunksToMove>,
7430    #[prost(message, repeated, tag="2")]
7431    pub chunks_to_patch: ::prost::alloc::vec::Vec<commit_data_request::ChunkToPatch>,
7432    /// Optional. If this commit is made in response to a Flush(id) request coming
7433    /// from the service, copy back the id of the request so the service can tell
7434    /// when the flush happened.
7435    #[prost(uint64, optional, tag="3")]
7436    pub flush_request_id: ::core::option::Option<u64>,
7437}
7438/// Nested message and enum types in `CommitDataRequest`.
7439pub mod commit_data_request {
7440    /// When |chunks_to_move| is present, the producer is requesting the service to
7441    /// move the given chunks form the share memory buffer into the central
7442    /// trace buffer(s).
7443    #[derive(Clone, PartialEq, ::prost::Message)]
7444    pub struct ChunksToMove {
7445        /// The 0-based index of the page in the Shared Memory Buffer.
7446        #[prost(uint32, optional, tag="1")]
7447        pub page: ::core::option::Option<u32>,
7448        /// The 0-based chunk index \[0..13\] within the page.
7449        #[prost(uint32, optional, tag="2")]
7450        pub chunk: ::core::option::Option<u32>,
7451        /// The target buffer it should be moved onto. The service will check that
7452        /// the producer is allowed to write into that buffer before the move.
7453        #[prost(uint32, optional, tag="3")]
7454        pub target_buffer: ::core::option::Option<u32>,
7455        /// Sending the chunk data over the wire. Used for transports that don't
7456        /// support shared memory (e.g. vsock or TCP sockets). In the default case
7457        /// (tracing protocol over a Unix socket), this field is not used and tracing
7458        /// data is stored in the shmem buffer and referenced by the fields above.
7459        /// See |use_shemem_emulation| in the codebase for reference.
7460        #[prost(bytes="vec", optional, tag="4")]
7461        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7462    }
7463    /// Used to patch chunks that have already been sent to the service. The chunk
7464    /// might not be in the shared memory buffer anymore as it could have been
7465    /// moved by the service in response to a prior CommitDataRequest.
7466    /// It is perfectly valid to patch a chunk that is being notified in the same
7467    /// message (a chunk can show up both in the |changed_pages| and |patches|
7468    /// field within the same CommitDataRequest message).
7469    /// In other words, |chunks_to_patch| is always processed after
7470    /// |chunks_to_move|.
7471    #[derive(Clone, PartialEq, ::prost::Message)]
7472    pub struct ChunkToPatch {
7473        #[prost(uint32, optional, tag="1")]
7474        pub target_buffer: ::core::option::Option<u32>,
7475        /// {WriterID, ChunkID} uniquely identify a chunk for the current producer.
7476        #[prost(uint32, optional, tag="2")]
7477        pub writer_id: ::core::option::Option<u32>,
7478        #[prost(uint32, optional, tag="3")]
7479        pub chunk_id: ::core::option::Option<u32>,
7480        /// List of patches to apply to the given chunk.
7481        #[prost(message, repeated, tag="4")]
7482        pub patches: ::prost::alloc::vec::Vec<chunk_to_patch::Patch>,
7483        /// When true more patches will follow in future requests and the chunk
7484        /// should be still considered as patch-pending. When false the chunk becomes
7485        /// eligible for reading.
7486        #[prost(bool, optional, tag="5")]
7487        pub has_more_patches: ::core::option::Option<bool>,
7488    }
7489    /// Nested message and enum types in `ChunkToPatch`.
7490    pub mod chunk_to_patch {
7491        #[derive(Clone, PartialEq, ::prost::Message)]
7492        pub struct Patch {
7493            /// Offset in bytes from the start of the chunk payload. e.g., offset == 0
7494            /// corresponds to the first byte of the first packet (or fragment) in the
7495            /// chunk.
7496            #[prost(uint32, optional, tag="1")]
7497            pub offset: ::core::option::Option<u32>,
7498            /// Bytes to patch at the given offset.
7499            #[prost(bytes="vec", optional, tag="2")]
7500            pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7501        }
7502    }
7503}
7504/// Arguments for rpc InitializeConnection().
7505#[derive(Clone, PartialEq, ::prost::Message)]
7506pub struct InitializeConnectionRequest {
7507    /// Optional. Provides a hint to the tracing service about the suggested size
7508    /// of the shared memory buffer pages. The service is not required to respect
7509    /// this if it has already another value in the configuration or if the hint
7510    /// is unreasonably large. Must be an integer multiple of 4096. See tradeoff
7511    /// considerations in shared_memory_abi.h.
7512    #[prost(uint32, optional, tag="1")]
7513    pub shared_memory_page_size_hint_bytes: ::core::option::Option<u32>,
7514    /// Optional. Provides a hint to the tracing service about the suggested size
7515    /// of the shared memory buffer. The service is not required to respect this
7516    /// and might return a smaller buffer.
7517    #[prost(uint32, optional, tag="2")]
7518    pub shared_memory_size_hint_bytes: ::core::option::Option<u32>,
7519    /// Required to match the producer config set by the service to the correct
7520    /// producer.
7521    #[prost(string, optional, tag="3")]
7522    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
7523    /// If provided, overrides the service's SMB scraping setting for the producer.
7524    #[prost(enumeration="initialize_connection_request::ProducerSmbScrapingMode", optional, tag="4")]
7525    pub smb_scraping_mode: ::core::option::Option<i32>,
7526    // ---------------------------------------------------
7527    // All fields below have been introduced in Android R.
7528    // ---------------------------------------------------
7529
7530    /// Since Android R, this request can also transport an FD for the producer's
7531    /// shared memory buffer, if allocated by the producer (e.g. for startup
7532    /// tracing). In this case, |shared_memory_page_size_hint_bytes| is a required
7533    /// field, and describes the SMB's page size. Note that the service may not
7534    /// accept this SMB (e.g. because it is too old or its size / page size are
7535    /// invalid) and instead allocate a new SMB which is provided in the
7536    /// SetupTracing response. See TracingService::ConnectProducer() and
7537    /// |using_shmem_provided_by_producer| in InitializeConnectionResponse.
7538    #[prost(bool, optional, tag="6")]
7539    pub producer_provided_shmem: ::core::option::Option<bool>,
7540    // ---------------------------------------------------
7541    // All fields below have been introduced in Android S.
7542    // ---------------------------------------------------
7543
7544    /// The version of the client library used by the producer.
7545    /// This is a human readable string with and its format varies depending on
7546    /// the build system that is used to build the code and the repo (standalone
7547    /// vs AOSP). This is intended for human debugging only.
7548    #[prost(string, optional, tag="8")]
7549    pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
7550    /// On Windows, when producer_provided_shmem = true, the client creates a named
7551    /// SHM region and passes the name (an unguessable token) back to the service.
7552    /// Introduced in v13.
7553    #[prost(string, optional, tag="7")]
7554    pub shm_key_windows: ::core::option::Option<::prost::alloc::string::String>,
7555}
7556/// Nested message and enum types in `InitializeConnectionRequest`.
7557pub mod initialize_connection_request {
7558    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7559    #[repr(i32)]
7560    pub enum ProducerSmbScrapingMode {
7561        /// Use the service's default setting for SMB scraping.
7562        SmbScrapingUnspecified = 0,
7563        /// Enable scraping of uncommitted chunks from the producer's shared memory
7564        /// buffer.
7565        SmbScrapingEnabled = 1,
7566        /// Disable scraping of uncommitted chunks from the producer's shared memory
7567        /// buffer.
7568        SmbScrapingDisabled = 2,
7569    }
7570    impl ProducerSmbScrapingMode {
7571        /// String value of the enum field names used in the ProtoBuf definition.
7572        ///
7573        /// The values are not transformed in any way and thus are considered stable
7574        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7575        pub fn as_str_name(&self) -> &'static str {
7576            match self {
7577                ProducerSmbScrapingMode::SmbScrapingUnspecified => "SMB_SCRAPING_UNSPECIFIED",
7578                ProducerSmbScrapingMode::SmbScrapingEnabled => "SMB_SCRAPING_ENABLED",
7579                ProducerSmbScrapingMode::SmbScrapingDisabled => "SMB_SCRAPING_DISABLED",
7580            }
7581        }
7582    }
7583}
7584#[derive(Clone, PartialEq, ::prost::Message)]
7585pub struct InitializeConnectionResponse {
7586    /// Indicates whether the service accepted the SMB provided by the producer in
7587    /// InitializeConnectionRequest (if any). If false, the shared memory buffer FD
7588    /// will provided by the service via the SetupTracing async command.
7589    #[prost(bool, optional, tag="1")]
7590    pub using_shmem_provided_by_producer: ::core::option::Option<bool>,
7591    /// Indicates to the producer that the service allows direct SMB patching of
7592    /// chunks that have not yet been committed to it.
7593    /// This field has been introduced in Android S.
7594    #[prost(bool, optional, tag="2")]
7595    pub direct_smb_patching_supported: ::core::option::Option<bool>,
7596    /// Indicates whether the service would like to use SMB emulation for the
7597    /// connection, and request the client to send chunk data over the socket e.g.
7598    /// for remote connection from a VM guest.
7599    #[prost(bool, optional, tag="3")]
7600    pub use_shmem_emulation: ::core::option::Option<bool>,
7601}
7602// Arguments for rpc RegisterDataSource().
7603
7604#[derive(Clone, PartialEq, ::prost::Message)]
7605pub struct RegisterDataSourceRequest {
7606    #[prost(message, optional, tag="1")]
7607    pub data_source_descriptor: ::core::option::Option<DataSourceDescriptor>,
7608}
7609#[derive(Clone, PartialEq, ::prost::Message)]
7610pub struct RegisterDataSourceResponse {
7611    /// Only set in case of errors, when |data_source_id| == 0.
7612    #[prost(string, optional, tag="1")]
7613    pub error: ::core::option::Option<::prost::alloc::string::String>,
7614}
7615// Arguments for rpc UpdateDataSource().
7616
7617#[derive(Clone, PartialEq, ::prost::Message)]
7618pub struct UpdateDataSourceRequest {
7619    /// The new data_source_descriptor.{id, name} must match {id, name} of a
7620    /// data source previously registered via RegisterDataSource().
7621    #[prost(message, optional, tag="1")]
7622    pub data_source_descriptor: ::core::option::Option<DataSourceDescriptor>,
7623}
7624#[derive(Clone, PartialEq, ::prost::Message)]
7625pub struct UpdateDataSourceResponse {
7626}
7627// Arguments for rpc UnregisterDataSource().
7628
7629#[derive(Clone, PartialEq, ::prost::Message)]
7630pub struct UnregisterDataSourceRequest {
7631    /// The name of the data source to unregister, as previously passed in
7632    /// |RegisterDataSourceRequest.name|.
7633    #[prost(string, optional, tag="1")]
7634    pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
7635}
7636#[derive(Clone, PartialEq, ::prost::Message)]
7637pub struct UnregisterDataSourceResponse {
7638}
7639// Arguments for rpc RegisterTraceWriter().
7640
7641#[derive(Clone, PartialEq, ::prost::Message)]
7642pub struct RegisterTraceWriterRequest {
7643    /// The ID of a producer's trace writer.
7644    #[prost(uint32, optional, tag="1")]
7645    pub trace_writer_id: ::core::option::Option<u32>,
7646    /// The ID of the target buffer that the trace writer commits its chunks to.
7647    #[prost(uint32, optional, tag="2")]
7648    pub target_buffer: ::core::option::Option<u32>,
7649}
7650#[derive(Clone, PartialEq, ::prost::Message)]
7651pub struct RegisterTraceWriterResponse {
7652}
7653// Arguments for rpc UnregisterTraceWriter().
7654
7655#[derive(Clone, PartialEq, ::prost::Message)]
7656pub struct UnregisterTraceWriterRequest {
7657    /// The ID of a producer's trace writer.
7658    #[prost(uint32, optional, tag="1")]
7659    pub trace_writer_id: ::core::option::Option<u32>,
7660}
7661#[derive(Clone, PartialEq, ::prost::Message)]
7662pub struct UnregisterTraceWriterResponse {
7663}
7664// Arguments for rpc CommitData().
7665// See commit_data_request.proto for CommitDataRequest. That has its own file
7666// because it is used also as input to generate C++ classes (xxx.gen.h).
7667
7668#[derive(Clone, PartialEq, ::prost::Message)]
7669pub struct CommitDataResponse {
7670}
7671// Arguments for rpc NotifyDataSourceStarted().
7672
7673#[derive(Clone, PartialEq, ::prost::Message)]
7674pub struct NotifyDataSourceStartedRequest {
7675    /// ID of the data source that has successfully started.
7676    #[prost(uint64, optional, tag="1")]
7677    pub data_source_id: ::core::option::Option<u64>,
7678}
7679#[derive(Clone, PartialEq, ::prost::Message)]
7680pub struct NotifyDataSourceStartedResponse {
7681}
7682// Arguments for rpc NotifyDataSourceStopped().
7683
7684#[derive(Clone, PartialEq, ::prost::Message)]
7685pub struct NotifyDataSourceStoppedRequest {
7686    /// ID of the data source that has successfully stopped.
7687    #[prost(uint64, optional, tag="1")]
7688    pub data_source_id: ::core::option::Option<u64>,
7689}
7690#[derive(Clone, PartialEq, ::prost::Message)]
7691pub struct NotifyDataSourceStoppedResponse {
7692}
7693// Arguments for rpc ActivateTriggersRequest().
7694
7695#[derive(Clone, PartialEq, ::prost::Message)]
7696pub struct ActivateTriggersRequest {
7697    #[prost(string, repeated, tag="1")]
7698    pub trigger_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7699}
7700#[derive(Clone, PartialEq, ::prost::Message)]
7701pub struct ActivateTriggersResponse {
7702}
7703// Arguments for rpc GetAsyncCommand().
7704
7705#[derive(Clone, PartialEq, ::prost::Message)]
7706pub struct GetAsyncCommandRequest {
7707}
7708#[derive(Clone, PartialEq, ::prost::Message)]
7709pub struct GetAsyncCommandResponse {
7710    /// Next id: 8.
7711    #[prost(oneof="get_async_command_response::Cmd", tags="3, 6, 1, 2, 5, 7")]
7712    pub cmd: ::core::option::Option<get_async_command_response::Cmd>,
7713}
7714/// Nested message and enum types in `GetAsyncCommandResponse`.
7715pub mod get_async_command_response {
7716    /// Called after SetupTracing and before StartDataSource.
7717    /// This message was introduced in Android Q.
7718    #[derive(Clone, PartialEq, ::prost::Message)]
7719    pub struct SetupDataSource {
7720        #[prost(uint64, optional, tag="1")]
7721        pub new_instance_id: ::core::option::Option<u64>,
7722        #[prost(message, optional, tag="2")]
7723        pub config: ::core::option::Option<super::DataSourceConfig>,
7724    }
7725    #[derive(Clone, PartialEq, ::prost::Message)]
7726    pub struct StartDataSource {
7727        #[prost(uint64, optional, tag="1")]
7728        pub new_instance_id: ::core::option::Option<u64>,
7729        /// For backwards compat reasons (with Android P), the config passed here
7730        /// is identical to the one passed to SetupDataSource.config.
7731        #[prost(message, optional, tag="2")]
7732        pub config: ::core::option::Option<super::DataSourceConfig>,
7733    }
7734    #[derive(Clone, PartialEq, ::prost::Message)]
7735    pub struct StopDataSource {
7736        #[prost(uint64, optional, tag="1")]
7737        pub instance_id: ::core::option::Option<u64>,
7738    }
7739    /// On Android/Linux/Mac this message also transports the file descriptor for
7740    /// the shared memory buffer (not a proto field).
7741    #[derive(Clone, PartialEq, ::prost::Message)]
7742    pub struct SetupTracing {
7743        #[prost(uint32, optional, tag="1")]
7744        pub shared_buffer_page_size_kb: ::core::option::Option<u32>,
7745        /// On Windows, instead, we pass the name (an unguessable token) of a shared
7746        /// memory region that can be attached by the other process by name.
7747        /// Introduced in v13.
7748        #[prost(string, optional, tag="2")]
7749        pub shm_key_windows: ::core::option::Option<::prost::alloc::string::String>,
7750    }
7751    #[derive(Clone, PartialEq, ::prost::Message)]
7752    pub struct Flush {
7753        /// The instance id (i.e. StartDataSource.new_instance_id) of the data
7754        /// sources to flush.
7755        #[prost(uint64, repeated, packed="false", tag="1")]
7756        pub data_source_ids: ::prost::alloc::vec::Vec<u64>,
7757        /// A monotonic counter generated by the service. The producer is simply
7758        /// expected to copy this value back into the CommitDataRequest, so the
7759        /// service can tell when the data for this flush has been committed.
7760        #[prost(uint64, optional, tag="2")]
7761        pub request_id: ::core::option::Option<u64>,
7762        /// More details such as flush reason and originator. Introduced in v38 / V.
7763        /// See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
7764        #[prost(uint64, optional, tag="3")]
7765        pub flags: ::core::option::Option<u64>,
7766    }
7767    /// Instructs the given data sources to stop referring to any trace contents
7768    /// emitted so far. Sent only to active data sources that set
7769    /// |handles_incremental_state_clear| in their DataSourceDescriptor.
7770    ///
7771    /// Added to perfetto tree in May 2019.
7772    #[derive(Clone, PartialEq, ::prost::Message)]
7773    pub struct ClearIncrementalState {
7774        /// The instance id (i.e. StartDataSource.new_instance_id) of the data
7775        /// sources that should clear their incremental state.
7776        #[prost(uint64, repeated, packed="false", tag="1")]
7777        pub data_source_ids: ::prost::alloc::vec::Vec<u64>,
7778    }
7779    /// Next id: 8.
7780    #[derive(Clone, PartialEq, ::prost::Oneof)]
7781    pub enum Cmd {
7782        #[prost(message, tag="3")]
7783        SetupTracing(SetupTracing),
7784        #[prost(message, tag="6")]
7785        SetupDataSource(SetupDataSource),
7786        #[prost(message, tag="1")]
7787        StartDataSource(StartDataSource),
7788        #[prost(message, tag="2")]
7789        StopDataSource(StopDataSource),
7790        /// id == 4 was teardown_tracing, never implemented.
7791        #[prost(message, tag="5")]
7792        Flush(Flush),
7793        #[prost(message, tag="7")]
7794        ClearIncrementalState(ClearIncrementalState),
7795    }
7796}
7797/// Arguments for rpc Sync().
7798#[derive(Clone, PartialEq, ::prost::Message)]
7799pub struct SyncRequest {
7800}
7801#[derive(Clone, PartialEq, ::prost::Message)]
7802pub struct SyncResponse {
7803}
7804#[derive(Clone, PartialEq, ::prost::Message)]
7805pub struct IpcFrame {
7806    /// The client is expected to send requests with monotonically increasing
7807    /// request_id. The host will match the request_id sent from the client.
7808    /// In the case of a Streaming response (has_more = true) the host will send
7809    /// several InvokeMethodReply with the same request_id.
7810    #[prost(uint64, optional, tag="2")]
7811    pub request_id: ::core::option::Option<u64>,
7812    /// Used only in unittests to generate a parsable message of arbitrary size.
7813    #[prost(bytes="vec", repeated, tag="1")]
7814    pub data_for_testing: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
7815    #[prost(oneof="ipc_frame::Msg", tags="3, 4, 5, 6, 7, 8")]
7816    pub msg: ::core::option::Option<ipc_frame::Msg>,
7817}
7818/// Nested message and enum types in `IPCFrame`.
7819pub mod ipc_frame {
7820    /// Client -> Host.
7821    #[derive(Clone, PartialEq, ::prost::Message)]
7822    pub struct BindService {
7823        #[prost(string, optional, tag="1")]
7824        pub service_name: ::core::option::Option<::prost::alloc::string::String>,
7825    }
7826    /// Host -> Client.
7827    #[derive(Clone, PartialEq, ::prost::Message)]
7828    pub struct BindServiceReply {
7829        #[prost(bool, optional, tag="1")]
7830        pub success: ::core::option::Option<bool>,
7831        #[prost(uint32, optional, tag="2")]
7832        pub service_id: ::core::option::Option<u32>,
7833        #[prost(message, repeated, tag="3")]
7834        pub methods: ::prost::alloc::vec::Vec<bind_service_reply::MethodInfo>,
7835    }
7836    /// Nested message and enum types in `BindServiceReply`.
7837    pub mod bind_service_reply {
7838        #[derive(Clone, PartialEq, ::prost::Message)]
7839        pub struct MethodInfo {
7840            #[prost(uint32, optional, tag="1")]
7841            pub id: ::core::option::Option<u32>,
7842            #[prost(string, optional, tag="2")]
7843            pub name: ::core::option::Option<::prost::alloc::string::String>,
7844        }
7845    }
7846    /// Client -> Host.
7847    #[derive(Clone, PartialEq, ::prost::Message)]
7848    pub struct InvokeMethod {
7849        /// BindServiceReply.id.
7850        #[prost(uint32, optional, tag="1")]
7851        pub service_id: ::core::option::Option<u32>,
7852        /// BindServiceReply.method.id.
7853        #[prost(uint32, optional, tag="2")]
7854        pub method_id: ::core::option::Option<u32>,
7855        /// Proto-encoded request argument.
7856        #[prost(bytes="vec", optional, tag="3")]
7857        pub args_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7858        /// When true the client specifies that a reply is not needed. The use case
7859        /// is a method with an empty, where the client doesn't care about the
7860        /// success/failure of the method invocation and rather prefers avoiding the
7861        /// IPC roundtrip + context switch associated with the reply.
7862        #[prost(bool, optional, tag="4")]
7863        pub drop_reply: ::core::option::Option<bool>,
7864    }
7865    /// Host -> Client.
7866    #[derive(Clone, PartialEq, ::prost::Message)]
7867    pub struct InvokeMethodReply {
7868        #[prost(bool, optional, tag="1")]
7869        pub success: ::core::option::Option<bool>,
7870        /// only for streaming RPCs.
7871        #[prost(bool, optional, tag="2")]
7872        pub has_more: ::core::option::Option<bool>,
7873        /// proto-encoded response value.
7874        #[prost(bytes="vec", optional, tag="3")]
7875        pub reply_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7876    }
7877    /// Host -> Client.
7878    #[derive(Clone, PartialEq, ::prost::Message)]
7879    pub struct RequestError {
7880        #[prost(string, optional, tag="1")]
7881        pub error: ::core::option::Option<::prost::alloc::string::String>,
7882    }
7883    /// Client (relay service) -> Host. This is generated by the relay service to
7884    /// fill the producer identity in the guest. This message is sent to the host
7885    /// service *before* any IPCFrame is from a local producer is relayed. This is
7886    /// accepted only on AF_VSOCK and AF_INET sockets, where we cannot validate the
7887    /// endpoont of the connection. for AF_UNIX sockets, this is ignored and traced
7888    /// uses instead the SO_PEERCRED.
7889    #[derive(Clone, PartialEq, ::prost::Message)]
7890    pub struct SetPeerIdentity {
7891        /// The UID and PID of the producer process.
7892        #[prost(int32, optional, tag="1")]
7893        pub pid: ::core::option::Option<i32>,
7894        #[prost(int32, optional, tag="2")]
7895        pub uid: ::core::option::Option<i32>,
7896        /// The hint for the tracing service to infer the machine ID. This field
7897        /// should satisfy the requriement that different machines should have
7898        /// different values. In practice, this filed contains the Linux kernel
7899        /// boot_id, or a hash of kernel bootup timestamp and uname(2) if boot_id
7900        /// isn't available.
7901        #[prost(string, optional, tag="3")]
7902        pub machine_id_hint: ::core::option::Option<::prost::alloc::string::String>,
7903    }
7904    #[derive(Clone, PartialEq, ::prost::Oneof)]
7905    pub enum Msg {
7906        #[prost(message, tag="3")]
7907        MsgBindService(BindService),
7908        #[prost(message, tag="4")]
7909        MsgBindServiceReply(BindServiceReply),
7910        #[prost(message, tag="5")]
7911        MsgInvokeMethod(InvokeMethod),
7912        #[prost(message, tag="6")]
7913        MsgInvokeMethodReply(InvokeMethodReply),
7914        #[prost(message, tag="7")]
7915        MsgRequestError(RequestError),
7916        #[prost(message, tag="8")]
7917        SetPeerIdentity(SetPeerIdentity),
7918    }
7919}