Skip to main content

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