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    #[prost(message, repeated, tag="6")]
128    pub counter_groups: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterGroupSpec>,
129    /// optional.  Minimum sampling period supported by the producer in
130    /// nanoseconds.
131    #[prost(uint64, optional, tag="3")]
132    pub min_sampling_period_ns: ::core::option::Option<u64>,
133    /// optional.  Maximum sampling period supported by the producer in
134    /// nanoseconds.
135    #[prost(uint64, optional, tag="4")]
136    pub max_sampling_period_ns: ::core::option::Option<u64>,
137    /// optional.  The producer supports counter sampling by instrumenting the
138    /// command buffer.
139    #[prost(bool, optional, tag="5")]
140    pub supports_instrumented_sampling: ::core::option::Option<bool>,
141    /// optional.  The producer supports selecting counters by name via
142    /// GpuCounterConfig.counter_names. Not all producers support this; Android
143    /// GPU producers typically do not.
144    #[prost(bool, optional, tag="7")]
145    pub supports_counter_names: ::core::option::Option<bool>,
146    /// optional.  The producer supports glob patterns in
147    /// GpuCounterConfig.counter_names for matching multiple counters by name.
148    #[prost(bool, optional, tag="8")]
149    pub supports_counter_name_globs: ::core::option::Option<bool>,
150}
151/// Nested message and enum types in `GpuCounterDescriptor`.
152pub mod gpu_counter_descriptor {
153    #[derive(Clone, PartialEq, ::prost::Message)]
154    pub struct GpuCounterSpec {
155        #[prost(uint32, optional, tag="1")]
156        pub counter_id: ::core::option::Option<u32>,
157        #[prost(string, optional, tag="2")]
158        pub name: ::core::option::Option<::prost::alloc::string::String>,
159        #[prost(string, optional, tag="3")]
160        pub description: ::core::option::Option<::prost::alloc::string::String>,
161        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="7")]
162        pub numerator_units: ::prost::alloc::vec::Vec<i32>,
163        #[prost(enumeration="MeasureUnit", repeated, packed="false", tag="8")]
164        pub denominator_units: ::prost::alloc::vec::Vec<i32>,
165        #[prost(bool, optional, tag="9")]
166        pub select_by_default: ::core::option::Option<bool>,
167        #[prost(enumeration="GpuCounterGroup", repeated, packed="false", tag="10")]
168        pub groups: ::prost::alloc::vec::Vec<i32>,
169        #[prost(enumeration="gpu_counter_spec::ValueDirection", optional, tag="11")]
170        pub value_direction: ::core::option::Option<i32>,
171        #[prost(oneof="gpu_counter_spec::PeakValue", tags="5, 6")]
172        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
173    }
174    /// Nested message and enum types in `GpuCounterSpec`.
175    pub mod gpu_counter_spec {
176        /// Direction of the time interval that each emitted sample applies to.
177        /// A GPU counter is sampled at discrete timestamps, but its value really
178        /// represents a measurement over some interval around that timestamp
179        /// (e.g. average GPU utilization over the sampling window). This field
180        /// tells trace processor on which side of the timestamp that interval
181        /// lies, which controls where the value is drawn in the UI.
182        ///
183        /// Example: samples at t=10, 20, 30 with values 5, 7, 0.
184        ///    BACKWARDS_LOOKING: 5 covers (-inf, 10], 7 covers (10, 20], 0 covers
185        ///      (20, 30]; the UI draws 7 between t=10 and t=20.
186        ///    FORWARDS_LOOKING:  5 covers [10, 20), 7 covers [20, 30), 0 covers
187        ///      [30, +inf); the UI draws 5 between t=10 and t=20.
188        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
189        #[repr(i32)]
190        pub enum ValueDirection {
191            /// Treated as BACKWARDS_LOOKING (the historical default).
192            Unspecified = 0,
193            /// The value applies to the interval ending at this event's timestamp.
194            /// This is the convention used by AGI and most existing GPU producers,
195            /// where a sample reports what happened during the window leading up
196            /// to the timestamp.
197            BackwardsLooking = 1,
198            /// The value applies to the interval starting at this event's
199            /// timestamp, matching standard Perfetto counters. Producers that emit
200            /// explicit zero samples to denote "no activity from here on" should
201            /// use this so the zero is not back-propagated over earlier non-zero
202            /// samples (<https://github.com/google/perfetto/issues/5683>).
203            ForwardsLooking = 2,
204        }
205        impl ValueDirection {
206            /// String value of the enum field names used in the ProtoBuf definition.
207            ///
208            /// The values are not transformed in any way and thus are considered stable
209            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
210            pub fn as_str_name(&self) -> &'static str {
211                match self {
212                    ValueDirection::Unspecified => "VALUE_DIRECTION_UNSPECIFIED",
213                    ValueDirection::BackwardsLooking => "VALUE_DIRECTION_BACKWARDS_LOOKING",
214                    ValueDirection::ForwardsLooking => "VALUE_DIRECTION_FORWARDS_LOOKING",
215                }
216            }
217        }
218        #[derive(Clone, PartialEq, ::prost::Oneof)]
219        pub enum PeakValue {
220            #[prost(int64, tag="5")]
221            IntPeakValue(i64),
222            #[prost(double, tag="6")]
223            DoublePeakValue(f64),
224        }
225    }
226    /// Allow producer to group counters into block to represent counter islands.
227    /// A capacity may be specified to indicate the number of counters that can be
228    /// enable simultaneously in that block.
229    #[derive(Clone, PartialEq, ::prost::Message)]
230    pub struct GpuCounterBlock {
231        /// required. Unique ID for the counter group.
232        #[prost(uint32, optional, tag="1")]
233        pub block_id: ::core::option::Option<u32>,
234        /// optional. Number of counters supported by the block. No limit if unset.
235        #[prost(uint32, optional, tag="2")]
236        pub block_capacity: ::core::option::Option<u32>,
237        /// optional. Name of block.
238        #[prost(string, optional, tag="3")]
239        pub name: ::core::option::Option<::prost::alloc::string::String>,
240        /// optional. Description for the block.
241        #[prost(string, optional, tag="4")]
242        pub description: ::core::option::Option<::prost::alloc::string::String>,
243        /// list of counters that are part of the block.
244        #[prost(uint32, repeated, packed="false", tag="5")]
245        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
246    }
247    /// Allow producer to define custom counter groups. Unlike the fixed
248    /// GpuCounterGroup enum (which provides broad categories), these groups
249    /// let the producer define hardware-specific groupings that the UI uses
250    /// to organize counter tracks. Can also be used to provide display names
251    /// and descriptions for the fixed GpuCounterGroup enum values by setting
252    /// group_id to the enum value.
253    #[derive(Clone, PartialEq, ::prost::Message)]
254    pub struct GpuCounterGroupSpec {
255        /// required. Unique ID for this group within the descriptor.
256        #[prost(uint32, optional, tag="1")]
257        pub group_id: ::core::option::Option<u32>,
258        /// optional. Display name for the group.
259        #[prost(string, optional, tag="2")]
260        pub name: ::core::option::Option<::prost::alloc::string::String>,
261        /// optional. Description of the group.
262        #[prost(string, optional, tag="3")]
263        pub description: ::core::option::Option<::prost::alloc::string::String>,
264        /// Counters that belong directly to this group (by counter_id).
265        #[prost(uint32, repeated, packed="false", tag="4")]
266        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
267    }
268    /// Logical groups for a counter.  This is used in the UI to present the
269    /// related counters together.
270    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
271    #[repr(i32)]
272    pub enum GpuCounterGroup {
273        Unclassified = 0,
274        System = 1,
275        Vertices = 2,
276        Fragments = 3,
277        Primitives = 4,
278        /// Includes counters relating to caching and bandwidth.
279        Memory = 5,
280        Compute = 6,
281        RayTracing = 7,
282    }
283    impl GpuCounterGroup {
284        /// String value of the enum field names used in the ProtoBuf definition.
285        ///
286        /// The values are not transformed in any way and thus are considered stable
287        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
288        pub fn as_str_name(&self) -> &'static str {
289            match self {
290                GpuCounterGroup::Unclassified => "UNCLASSIFIED",
291                GpuCounterGroup::System => "SYSTEM",
292                GpuCounterGroup::Vertices => "VERTICES",
293                GpuCounterGroup::Fragments => "FRAGMENTS",
294                GpuCounterGroup::Primitives => "PRIMITIVES",
295                GpuCounterGroup::Memory => "MEMORY",
296                GpuCounterGroup::Compute => "COMPUTE",
297                GpuCounterGroup::RayTracing => "RAY_TRACING",
298            }
299        }
300    }
301    /// next id: 41
302    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
303    #[repr(i32)]
304    pub enum MeasureUnit {
305        None = 0,
306        Bit = 1,
307        Kilobit = 2,
308        Megabit = 3,
309        Gigabit = 4,
310        Terabit = 5,
311        Petabit = 6,
312        Byte = 7,
313        Kilobyte = 8,
314        Megabyte = 9,
315        Gigabyte = 10,
316        Terabyte = 11,
317        Petabyte = 12,
318        Hertz = 13,
319        Kilohertz = 14,
320        Megahertz = 15,
321        Gigahertz = 16,
322        Terahertz = 17,
323        Petahertz = 18,
324        Nanosecond = 19,
325        Microsecond = 20,
326        Millisecond = 21,
327        Second = 22,
328        Minute = 23,
329        Hour = 24,
330        Vertex = 25,
331        Pixel = 26,
332        Triangle = 27,
333        Primitive = 38,
334        Fragment = 39,
335        Milliwatt = 28,
336        Watt = 29,
337        Kilowatt = 30,
338        Joule = 31,
339        Volt = 32,
340        Ampere = 33,
341        Celsius = 34,
342        Fahrenheit = 35,
343        Kelvin = 36,
344        /// Values should be out of 100.
345        Percent = 37,
346        Instruction = 40,
347    }
348    impl MeasureUnit {
349        /// String value of the enum field names used in the ProtoBuf definition.
350        ///
351        /// The values are not transformed in any way and thus are considered stable
352        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
353        pub fn as_str_name(&self) -> &'static str {
354            match self {
355                MeasureUnit::None => "NONE",
356                MeasureUnit::Bit => "BIT",
357                MeasureUnit::Kilobit => "KILOBIT",
358                MeasureUnit::Megabit => "MEGABIT",
359                MeasureUnit::Gigabit => "GIGABIT",
360                MeasureUnit::Terabit => "TERABIT",
361                MeasureUnit::Petabit => "PETABIT",
362                MeasureUnit::Byte => "BYTE",
363                MeasureUnit::Kilobyte => "KILOBYTE",
364                MeasureUnit::Megabyte => "MEGABYTE",
365                MeasureUnit::Gigabyte => "GIGABYTE",
366                MeasureUnit::Terabyte => "TERABYTE",
367                MeasureUnit::Petabyte => "PETABYTE",
368                MeasureUnit::Hertz => "HERTZ",
369                MeasureUnit::Kilohertz => "KILOHERTZ",
370                MeasureUnit::Megahertz => "MEGAHERTZ",
371                MeasureUnit::Gigahertz => "GIGAHERTZ",
372                MeasureUnit::Terahertz => "TERAHERTZ",
373                MeasureUnit::Petahertz => "PETAHERTZ",
374                MeasureUnit::Nanosecond => "NANOSECOND",
375                MeasureUnit::Microsecond => "MICROSECOND",
376                MeasureUnit::Millisecond => "MILLISECOND",
377                MeasureUnit::Second => "SECOND",
378                MeasureUnit::Minute => "MINUTE",
379                MeasureUnit::Hour => "HOUR",
380                MeasureUnit::Vertex => "VERTEX",
381                MeasureUnit::Pixel => "PIXEL",
382                MeasureUnit::Triangle => "TRIANGLE",
383                MeasureUnit::Primitive => "PRIMITIVE",
384                MeasureUnit::Fragment => "FRAGMENT",
385                MeasureUnit::Milliwatt => "MILLIWATT",
386                MeasureUnit::Watt => "WATT",
387                MeasureUnit::Kilowatt => "KILOWATT",
388                MeasureUnit::Joule => "JOULE",
389                MeasureUnit::Volt => "VOLT",
390                MeasureUnit::Ampere => "AMPERE",
391                MeasureUnit::Celsius => "CELSIUS",
392                MeasureUnit::Fahrenheit => "FAHRENHEIT",
393                MeasureUnit::Kelvin => "KELVIN",
394                MeasureUnit::Percent => "PERCENT",
395                MeasureUnit::Instruction => "INSTRUCTION",
396            }
397        }
398    }
399}
400#[derive(Clone, PartialEq, ::prost::Message)]
401pub struct TrackEventCategory {
402    #[prost(string, optional, tag="1")]
403    pub name: ::core::option::Option<::prost::alloc::string::String>,
404    #[prost(string, optional, tag="2")]
405    pub description: ::core::option::Option<::prost::alloc::string::String>,
406    #[prost(string, repeated, tag="3")]
407    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
408}
409#[derive(Clone, PartialEq, ::prost::Message)]
410pub struct TrackEventDescriptor {
411    #[prost(message, repeated, tag="1")]
412    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
413}
414#[derive(Clone, PartialEq, ::prost::Message)]
415pub struct VmProgram {
416    #[prost(uint32, optional, tag="1")]
417    pub version: ::core::option::Option<u32>,
418    #[prost(message, repeated, tag="2")]
419    pub instructions: ::prost::alloc::vec::Vec<VmInstruction>,
420}
421#[derive(Clone, PartialEq, ::prost::Message)]
422pub struct VmInstruction {
423    #[prost(enumeration="vm_instruction::AbortLevel", optional, tag="6")]
424    pub abort_level: ::core::option::Option<i32>,
425    /// Sub-instructions executed if the current instruction succeeds
426    #[prost(message, repeated, tag="7")]
427    pub nested_instructions: ::prost::alloc::vec::Vec<VmInstruction>,
428    #[prost(oneof="vm_instruction::Operation", tags="1, 2, 3, 4, 5")]
429    pub operation: ::core::option::Option<vm_instruction::Operation>,
430}
431/// Nested message and enum types in `VmInstruction`.
432pub mod vm_instruction {
433    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
434    #[repr(i32)]
435    pub enum AbortLevel {
436        /// Skip current instruction but execute following ones
437        SkipCurrentInstruction = 1,
438        /// Skip current instruction as well as following ones (default)
439        SkipCurrentInstructionAndBreakOuter = 2,
440        /// Abort whole program
441        Abort = 3,
442    }
443    impl AbortLevel {
444        /// String value of the enum field names used in the ProtoBuf definition.
445        ///
446        /// The values are not transformed in any way and thus are considered stable
447        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
448        pub fn as_str_name(&self) -> &'static str {
449            match self {
450                AbortLevel::SkipCurrentInstruction => "SKIP_CURRENT_INSTRUCTION",
451                AbortLevel::SkipCurrentInstructionAndBreakOuter => "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER",
452                AbortLevel::Abort => "ABORT",
453            }
454        }
455    }
456    #[derive(Clone, PartialEq, ::prost::Oneof)]
457    pub enum Operation {
458        #[prost(message, tag="1")]
459        Select(super::VmOpSelect),
460        #[prost(message, tag="2")]
461        RegLoad(super::VmOpRegLoad),
462        #[prost(message, tag="3")]
463        Merge(super::VmOpMerge),
464        #[prost(message, tag="4")]
465        Set(super::VmOpSet),
466        #[prost(message, tag="5")]
467        Del(super::VmOpDel),
468    }
469}
470#[derive(Clone, PartialEq, ::prost::Message)]
471pub struct VmOpSelect {
472    /// Enum SRC|DST|BOTH. Default=SRC.
473    #[prost(enumeration="VmCursorEnum", optional, tag="1")]
474    pub cursor: ::core::option::Option<i32>,
475    #[prost(message, repeated, tag="2")]
476    pub relative_path: ::prost::alloc::vec::Vec<vm_op_select::PathComponent>,
477    /// Creates the submessage if doesn't exist in the DST cursor
478    /// (think of mkdir -p). Only valid when cursor=DST|BOTH.
479    #[prost(bool, optional, tag="3")]
480    pub create_if_not_exist: ::core::option::Option<bool>,
481}
482/// Nested message and enum types in `VmOpSelect`.
483pub mod vm_op_select {
484    /// A path component is either: (1) a field id to descend into (common case);
485    /// (2) an array index (for repeated fields); (3) a map lookup operation (for
486    /// repeated fields, where we snoop a sub-field as a map key)
487    #[derive(Clone, PartialEq, ::prost::Message)]
488    pub struct PathComponent {
489        // When we are selecting a leaf field, tell what's the field type
490        // to disambiguate integer types. Using uint64 by default will likely
491        // do the right thing in 99% cases (so probably we don't need to impl
492        // this until much later if somebody does a map with a fixed64 key)
493        // enum ProtoFieldType field_type = 4;  // bool | int32 | fixed32 | ...
494
495        /// Only valid when using field_id. This makes select have foreach
496        /// semantics. This means that the body of nested_instructions is
497        /// executed several times, once per each repeated submessage.
498        #[prost(bool, optional, tag="5")]
499        pub is_repeated: ::core::option::Option<bool>,
500        /// Only valid when using map_key_field_id. This defines which
501        /// register (R1..R32) should be used to match the key of the dict
502        /// in a map lookup operation.
503        /// In other words:
504        /// foreach msg in repeated message {
505        ///    if msg\[map_key_field_id\] == R\[register_to_match\] {
506        ///       break;  // Lookup succeeded, PathComponent resolves here.
507        ///    }
508        /// }
509        #[prost(uint32, optional, tag="6")]
510        pub register_to_match: ::core::option::Option<u32>,
511        /// Only valid when using field_id and is_repeated=true. When iterating
512        /// over repeated fields, stores the current iteration index into the
513        /// the register R1..R32 defined below. This can be used to do complex
514        /// operations like "find the entry in the array that has width==100,
515        /// remember its offset in the SRC array and overwrite the matching
516        /// i-th element in the DST array. We will probably never implement
517        /// this but it's here for completeness.
518        #[prost(uint32, optional, tag="7")]
519        pub store_foreach_index_into_register: ::core::option::Option<u32>,
520        #[prost(oneof="path_component::Field", tags="1, 2, 3")]
521        pub field: ::core::option::Option<path_component::Field>,
522    }
523    /// Nested message and enum types in `PathComponent`.
524    pub mod path_component {
525        #[derive(Clone, PartialEq, ::prost::Oneof)]
526        pub enum Field {
527            #[prost(uint32, tag="1")]
528            FieldId(u32),
529            #[prost(uint32, tag="2")]
530            ArrayIndex(u32),
531            /// The ID of the field in the repeated submessage that we
532            /// use as a key (e.g. LayerState.layer_id). When setting this
533            /// register_to_match must also be set, to tell what's the
534            /// expected value of the key we are looking up.
535            #[prost(uint32, tag="3")]
536            MapKeyFieldId(u32),
537        }
538    }
539}
540#[derive(Clone, PartialEq, ::prost::Message)]
541pub struct VmOpRegLoad {
542    /// SRC(default) | DST.
543    #[prost(enumeration="VmCursorEnum", optional, tag="1")]
544    pub cursor: ::core::option::Option<i32>,
545    /// 1=R1, 2=R2... 32=R32
546    #[prost(uint32, optional, tag="2")]
547    pub dst_register: ::core::option::Option<u32>,
548}
549/// Merges SRC into DST. Both need to point to a message (not a field).
550#[derive(Clone, PartialEq, ::prost::Message)]
551pub struct VmOpMerge {
552    /// When true, the merge operation will skip any field that is already
553    /// resolved as a message node in the destination tree.
554    ///
555    /// This is used to support merging of nested messages. Because ProtoVM
556    /// does not know the schema, a standard MERGE cannot distinguish
557    /// between a string and a message on the wire and it would overwrite
558    /// the entire blob, destroying granular updates.
559    ///
560    /// By setting this to true, a program can be implemented to do a
561    /// bottom-up, multi-step merge by traversing into and merging
562    /// the deepest submessages first, then moving up to the parent
563    /// message and merging it with skip_submessages = true.
564    #[prost(bool, optional, tag="1")]
565    pub skip_submessages: ::core::option::Option<bool>,
566    /// When true, the merge operation will remove the dst field if the src field
567    /// is empty.
568    ///
569    /// This can be used to replicate the removal of a subobject within the
570    /// producer's state. E.g.
571    /// This event on the producer side: mProducerState.mSubobject = nullptr
572    /// can be represented by this patch: { producer_state { subobject {} }}
573    #[prost(bool, optional, tag="2")]
574    pub del_if_src_empty: ::core::option::Option<bool>,
575}
576/// Copies SRC into DST. If a message, replaces the DST node, discarding any
577/// pre-existing field.
578#[derive(Clone, PartialEq, ::prost::Message)]
579pub struct VmOpSet {
580}
581/// Delete the field or message pointed by DST.
582#[derive(Clone, PartialEq, ::prost::Message)]
583pub struct VmOpDel {
584}
585#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
586#[repr(i32)]
587pub enum VmCursorEnum {
588    VmCursorUnspecified = 0,
589    VmCursorSrc = 1,
590    VmCursorDst = 2,
591    VmCursorBoth = 3,
592}
593impl VmCursorEnum {
594    /// String value of the enum field names used in the ProtoBuf definition.
595    ///
596    /// The values are not transformed in any way and thus are considered stable
597    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
598    pub fn as_str_name(&self) -> &'static str {
599        match self {
600            VmCursorEnum::VmCursorUnspecified => "VM_CURSOR_UNSPECIFIED",
601            VmCursorEnum::VmCursorSrc => "VM_CURSOR_SRC",
602            VmCursorEnum::VmCursorDst => "VM_CURSOR_DST",
603            VmCursorEnum::VmCursorBoth => "VM_CURSOR_BOTH",
604        }
605    }
606}
607/// This message is sent from Producer(s) to the tracing Service when registering
608/// to advertise their capabilities. It describes the structure of tracing
609/// protos that will be produced by the data source and the supported filters.
610#[derive(Clone, PartialEq, ::prost::Message)]
611pub struct DataSourceDescriptor {
612    /// e.g., "linux.ftrace", "chromium.tracing"
613    #[prost(string, optional, tag="1")]
614    pub name: ::core::option::Option<::prost::alloc::string::String>,
615    /// When non-zero, this is a unique ID within the scope of the Producer for
616    /// this data source (it is NOT globally unique). This is useful to
617    /// differentiate between data sources with matching names when calling
618    /// UpdateDataSource(). This field has been introduced in November 2021
619    /// (v22, Android T) and is not supported on older versions.
620    #[prost(uint64, optional, tag="7")]
621    pub id: ::core::option::Option<u64>,
622    /// When true the data source is expected to ack the stop request through the
623    /// NotifyDataSourceStopped() IPC. This field has been introduced after
624    /// Android P in Jul 2018 and is not supported on older versions.
625    #[prost(bool, optional, tag="2")]
626    pub will_notify_on_stop: ::core::option::Option<bool>,
627    /// When true the data source is expected to ack the start request through the
628    /// NotifyDataSourceStarted() IPC. This field has been introduced after
629    /// Android P in March 2019 and is not supported on older versions.
630    #[prost(bool, optional, tag="3")]
631    pub will_notify_on_start: ::core::option::Option<bool>,
632    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
633    /// set if the data source writes packets that refer to previous trace
634    /// contents, and knows how to stop referring to the already-emitted data.
635    #[prost(bool, optional, tag="4")]
636    pub handles_incremental_state_clear: ::core::option::Option<bool>,
637    /// If true, indicates that the data source does nothing upon Flush. This
638    /// allows the service to reduce the flush-related IPC traffic and better deal
639    /// with frozen producers (see go/perfetto-frozen). This is usually the case
640    /// for data sources like 'track_event' that don't have access to the various
641    /// thread task runners to post a flush task and rely purely on server-side
642    /// scraping.
643    /// Introduced in v39 / Android V.
644    #[prost(bool, optional, tag="9")]
645    pub no_flush: ::core::option::Option<bool>,
646    /// If present, the tracing service executes this program within a ProtoVM to
647    /// process overwritten packets (patches). The service computes a hash of the
648    /// program to detect and disambiguate between different versions; if multiple
649    /// versions (from different producers) are specified for the same data source,
650    /// the service instantiates a dedicated ProtoVM for each.
651    #[prost(message, optional, tag="10")]
652    pub protovm_program: ::core::option::Option<VmProgram>,
653    /// Optional specification about available GPU counters.
654    #[prost(message, optional, tag="5")]
655    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
656    #[prost(message, optional, tag="6")]
657    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
658    #[prost(message, optional, tag="8")]
659    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
660}
661/// Reports the state of the tracing service. Used to gather details about the
662/// data sources connected.
663/// See ConsumerPort::QueryServiceState().
664#[derive(Clone, PartialEq, ::prost::Message)]
665pub struct TracingServiceState {
666    /// Lists all the producers connected.
667    #[prost(message, repeated, tag="1")]
668    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
669    /// Lists the data sources available.
670    #[prost(message, repeated, tag="2")]
671    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
672    /// Lists the tracing sessions active AND owned by a consumer that has the same
673    /// UID of the caller (or all of them if the caller is root).
674    /// Introduced in v24 / Android T.
675    #[prost(message, repeated, tag="6")]
676    pub tracing_sessions: ::prost::alloc::vec::Vec<tracing_service_state::TracingSession>,
677    /// This is always set to true from v24 and beyond. This flag is only used to
678    /// tell the difference between: (1) talking to a recent service which happens
679    /// to have no tracing session active; (2) talking to an older version of the
680    /// service which will never report any tracing session.
681    #[prost(bool, optional, tag="7")]
682    pub supports_tracing_sessions: ::core::option::Option<bool>,
683    /// Total number of tracing sessions.
684    #[prost(int32, optional, tag="3")]
685    pub num_sessions: ::core::option::Option<i32>,
686    /// Number of tracing sessions in the started state. Always <= num_sessions.
687    #[prost(int32, optional, tag="4")]
688    pub num_sessions_started: ::core::option::Option<i32>,
689    /// The version of traced (the same returned by `traced --version`).
690    /// This is a human readable string with and its format varies depending on
691    /// the build system and the repo (standalone vs AOSP).
692    /// This is intended for human debugging only.
693    #[prost(string, optional, tag="5")]
694    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
695}
696/// Nested message and enum types in `TracingServiceState`.
697pub mod tracing_service_state {
698    /// Describes a producer process.
699    #[derive(Clone, PartialEq, ::prost::Message)]
700    pub struct Producer {
701        /// Unique ID of the producer (monotonic counter).
702        #[prost(int32, optional, tag="1")]
703        pub id: ::core::option::Option<i32>,
704        /// Typically matches the process name.
705        #[prost(string, optional, tag="2")]
706        pub name: ::core::option::Option<::prost::alloc::string::String>,
707        /// Unix pid of the remote process. Supported only on Linux-based systems.
708        /// Introduced in v24 / Android T.
709        #[prost(int32, optional, tag="5")]
710        pub pid: ::core::option::Option<i32>,
711        /// Unix uid of the remote process.
712        #[prost(int32, optional, tag="3")]
713        pub uid: ::core::option::Option<i32>,
714        /// The version of the client library used by the producer.
715        /// This is a human readable string with and its format varies depending on
716        /// the build system and the repo (standalone vs AOSP).
717        /// This is intended for human debugging only.
718        #[prost(string, optional, tag="4")]
719        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
720        /// Returns true if the process appears to be frozen (Android only).
721        /// Introduced in Perfetto V49 / Android 24Q4.
722        #[prost(bool, optional, tag="6")]
723        pub frozen: ::core::option::Option<bool>,
724        /// Identifies the machine this producer is connected from in multi-machine
725        /// tracing setups (e.g. when going through traced_relay). Unset (or zero)
726        /// means the producer is connected from the local/host machine where the
727        /// tracing service is running.
728        /// Introduced in Perfetto V56 / Android 26Q3.
729        #[prost(uint32, optional, tag="7")]
730        pub machine_id: ::core::option::Option<u32>,
731        /// Human-readable name of the machine, as advertised by the relay (usually
732        /// the value of PERFETTO_MACHINE_NAME on the remote, falling back to the
733        /// remote's `uname -s`). Only set when machine_id is non-zero.
734        /// Introduced in Perfetto V56 / Android 26Q3.
735        #[prost(string, optional, tag="8")]
736        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
737    }
738    /// Describes a data source registered by a producer. Data sources are listed
739    /// regardless of the fact that they are being used or not.
740    #[derive(Clone, PartialEq, ::prost::Message)]
741    pub struct DataSource {
742        /// Descriptor passed by the data source when calling RegisterDataSource().
743        #[prost(message, optional, tag="1")]
744        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
745        /// ID of the producer, as per Producer.id.
746        #[prost(int32, optional, tag="2")]
747        pub producer_id: ::core::option::Option<i32>,
748    }
749    #[derive(Clone, PartialEq, ::prost::Message)]
750    pub struct TracingSession {
751        /// The TracingSessionID.
752        #[prost(uint64, optional, tag="1")]
753        pub id: ::core::option::Option<u64>,
754        /// The Unix uid of the consumer that started the session.
755        /// This is meaningful only if the caller is root. In all other cases only
756        /// tracing sessions that match the caller UID will be displayed.
757        #[prost(int32, optional, tag="2")]
758        pub consumer_uid: ::core::option::Option<i32>,
759        /// Internal state of the tracing session.
760        /// These strings are FYI only and subjected to change.
761        #[prost(string, optional, tag="3")]
762        pub state: ::core::option::Option<::prost::alloc::string::String>,
763        /// The unique_session_name as set in the trace config (might be empty).
764        #[prost(string, optional, tag="4")]
765        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
766        /// The number and size of each buffer.
767        #[prost(uint32, repeated, packed="false", tag="5")]
768        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
769        /// Duration, as specified in the TraceConfig.duration_ms.
770        #[prost(uint32, optional, tag="6")]
771        pub duration_ms: ::core::option::Option<u32>,
772        /// Number of data sources involved in the session.
773        #[prost(uint32, optional, tag="7")]
774        pub num_data_sources: ::core::option::Option<u32>,
775        /// Time when the session was started, in the CLOCK_REALTIME domain.
776        /// Available only on Linux-based systems.
777        #[prost(int64, optional, tag="8")]
778        pub start_realtime_ns: ::core::option::Option<i64>,
779        // The fields below have been introduced in v42.
780
781        /// The bugreport_score, as set in TraceConfig.bugreport_score.
782        #[prost(int32, optional, tag="9")]
783        pub bugreport_score: ::core::option::Option<i32>,
784        /// As per TraceConfig.bugreport_filename.
785        #[prost(string, optional, tag="10")]
786        pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
787        /// If true, the session is in the STARTED state. If false the session is in
788        /// any other state (see `state` field).
789        #[prost(bool, optional, tag="11")]
790        pub is_started: ::core::option::Option<bool>,
791    }
792}
793#[derive(Clone, PartialEq, ::prost::Message)]
794pub struct TracingServiceCapabilities {
795    /// Whether the service supports QueryCapabilities() at all or not.
796    /// This is only used at the C++ level to distinguish the case of talking to
797    /// an older version of the service that doesn't support QueryCapabilities().
798    /// In that case the IPC layer will just reject the unknown call, and the
799    /// consumer_ipc_client_impl.cc will return an empty message where this field
800    /// is false. In all other cases, this is always set to true.
801    #[prost(bool, optional, tag="1")]
802    pub has_query_capabilities: ::core::option::Option<bool>,
803    /// The set of known events that can be passed to ConsumerPort.ObserveEvents().
804    #[prost(enumeration="observable_events::Type", repeated, packed="false", tag="2")]
805    pub observable_events: ::prost::alloc::vec::Vec<i32>,
806    /// Whether the service supports TraceConfig.output_path (for asking traced to
807    /// create the output file instead of passing a file descriptor).
808    #[prost(bool, optional, tag="3")]
809    pub has_trace_config_output_path: ::core::option::Option<bool>,
810    /// Whether the service supports CloneSession and CLONE_SNAPSHOT triggers.
811    #[prost(bool, optional, tag="4")]
812    pub has_clone_session: ::core::option::Option<bool>,
813}
814/// Statistics for the internals of the tracing service.
815///
816/// Next id: 19.
817#[derive(Clone, PartialEq, ::prost::Message)]
818pub struct TraceStats {
819    /// Stats for the TraceBuffer(s) of the current trace session.
820    #[prost(message, repeated, tag="1")]
821    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
822    /// The thresholds of each the `writer_stats` histogram buckets. This is
823    /// emitted only once as all WriterStats share the same bucket layout.
824    /// This field has the same cardinality of the
825    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
826    /// (The -1 is because the last overflow bucket is not reported in the _def).
827    /// An array of values [10, 100, 1000] in the _def array means that there are
828    /// four buckets (3 + the implicit overflow bucket):
829    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
830    #[prost(int64, repeated, packed="false", tag="17")]
831    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
832    #[prost(message, repeated, tag="18")]
833    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
834    /// Num. producers connected (whether they are involved in the current tracing
835    /// session or not).
836    #[prost(uint32, optional, tag="2")]
837    pub producers_connected: ::core::option::Option<u32>,
838    /// Num. producers ever seen for all trace sessions since startup (it's a good
839    /// proxy for inferring num. producers crashed / killed).
840    #[prost(uint64, optional, tag="3")]
841    pub producers_seen: ::core::option::Option<u64>,
842    /// Num. data sources registered for all trace sessions.
843    #[prost(uint32, optional, tag="4")]
844    pub data_sources_registered: ::core::option::Option<u32>,
845    /// Num. data sources ever seen for all trace sessions since startup.
846    #[prost(uint64, optional, tag="5")]
847    pub data_sources_seen: ::core::option::Option<u64>,
848    /// Num. concurrently active tracing sessions.
849    #[prost(uint32, optional, tag="6")]
850    pub tracing_sessions: ::core::option::Option<u32>,
851    /// Num. buffers for all tracing session (not just the current one). This will
852    /// be >= buffer_stats.size(), because the latter is only about the current
853    /// session.
854    #[prost(uint32, optional, tag="7")]
855    pub total_buffers: ::core::option::Option<u32>,
856    // The fields below have been introduced in Android Q.
857
858    /// Num. chunks that were discarded by the service before attempting to commit
859    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
860    #[prost(uint64, optional, tag="8")]
861    pub chunks_discarded: ::core::option::Option<u64>,
862    /// Num. patches that were discarded by the service before attempting to apply
863    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
864    #[prost(uint64, optional, tag="9")]
865    pub patches_discarded: ::core::option::Option<u64>,
866    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
867    /// is a bug in the producer.
868    #[prost(uint64, optional, tag="10")]
869    pub invalid_packets: ::core::option::Option<u64>,
870    #[prost(message, optional, tag="11")]
871    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
872    /// Count of Flush() requests (either from the Consumer, or self-induced
873    /// periodic flushes). The final Flush() is also included in the count.
874    #[prost(uint64, optional, tag="12")]
875    pub flushes_requested: ::core::option::Option<u64>,
876    /// The count of the Flush() requests that were completed successfully.
877    /// In a well behaving trace this should always be == `flush_requests`.
878    #[prost(uint64, optional, tag="13")]
879    pub flushes_succeeded: ::core::option::Option<u64>,
880    /// The count of the Flush() requests that failed (in most timed out).
881    /// In a well behaving trace this should always be == 0.
882    #[prost(uint64, optional, tag="14")]
883    pub flushes_failed: ::core::option::Option<u64>,
884    #[prost(enumeration="trace_stats::FinalFlushOutcome", optional, tag="15")]
885    pub final_flush_outcome: ::core::option::Option<i32>,
886}
887/// Nested message and enum types in `TraceStats`.
888pub mod trace_stats {
889    /// From TraceBuffer::Stats.
890    ///
891    /// Next id: 22.
892    #[derive(Clone, PartialEq, ::prost::Message)]
893    pub struct BufferStats {
894        /// Size of the circular buffer in bytes.
895        #[prost(uint64, optional, tag="12")]
896        pub buffer_size: ::core::option::Option<u64>,
897        /// Num. bytes written into the circular buffer, including chunk headers.
898        #[prost(uint64, optional, tag="1")]
899        pub bytes_written: ::core::option::Option<u64>,
900        /// Num. bytes overwritten before they have been read (i.e. loss of data).
901        #[prost(uint64, optional, tag="13")]
902        pub bytes_overwritten: ::core::option::Option<u64>,
903        /// Total size of chunks that were fully read from the circular buffer by the
904        /// consumer. This may not be equal to |bytes_written| either in the middle
905        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
906        /// size of the chunks read from the buffer, including chunk headers, which
907        /// will be different from the total size of packets returned to the
908        /// consumer.
909        ///
910        /// The current utilization of the trace buffer (mid-tracing) can be obtained
911        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
912        /// adding the difference of |padding_bytes_written| and
913        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
914        /// Note that this represents the total size of buffered data in the buffer,
915        /// yet this data may be spread non-contiguously through the buffer and may
916        /// be overridden before the utilization reaches 100%.
917        #[prost(uint64, optional, tag="14")]
918        pub bytes_read: ::core::option::Option<u64>,
919        /// Num. bytes that were allocated as padding between chunks in the circular
920        /// buffer.
921        #[prost(uint64, optional, tag="15")]
922        pub padding_bytes_written: ::core::option::Option<u64>,
923        /// Num. of padding bytes that were removed from the circular buffer when
924        /// they were overwritten.
925        ///
926        /// The difference between |padding_bytes_written| and
927        /// |padding_bytes_cleared| denotes the total size of padding currently
928        /// present in the buffer.
929        #[prost(uint64, optional, tag="16")]
930        pub padding_bytes_cleared: ::core::option::Option<u64>,
931        /// Num. chunks (!= packets) written into the buffer.
932        #[prost(uint64, optional, tag="2")]
933        pub chunks_written: ::core::option::Option<u64>,
934        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
935        /// the same chunk with additional packets appended to the end.
936        #[prost(uint64, optional, tag="10")]
937        pub chunks_rewritten: ::core::option::Option<u64>,
938        /// Num. chunks overwritten before they have been read (i.e. loss of data).
939        #[prost(uint64, optional, tag="3")]
940        pub chunks_overwritten: ::core::option::Option<u64>,
941        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
942        /// is configured with FillPolicy == DISCARD.
943        #[prost(uint64, optional, tag="18")]
944        pub chunks_discarded: ::core::option::Option<u64>,
945        /// Num. chunks (!= packets) that were fully read from the circular buffer by
946        /// the consumer. This may not be equal to |chunks_written| either in the
947        /// middle of tracing, or if |chunks_overwritten| is non-zero.
948        #[prost(uint64, optional, tag="17")]
949        pub chunks_read: ::core::option::Option<u64>,
950        /// Num. chunks that were committed out of order.
951        #[prost(uint64, optional, tag="11")]
952        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
953        /// Num. times the ring buffer wrapped around.
954        #[prost(uint64, optional, tag="4")]
955        pub write_wrap_count: ::core::option::Option<u64>,
956        /// Num. out-of-band (OOB) patches that succeeded.
957        #[prost(uint64, optional, tag="5")]
958        pub patches_succeeded: ::core::option::Option<u64>,
959        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
960        #[prost(uint64, optional, tag="6")]
961        pub patches_failed: ::core::option::Option<u64>,
962        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
963        /// successful packet read.
964        #[prost(uint64, optional, tag="7")]
965        pub readaheads_succeeded: ::core::option::Option<u64>,
966        /// Num. readaheads aborted because of missing chunks in the sequence stream.
967        /// Note that a small number > 0 is totally expected: occasionally, when
968        /// issuing a read, the very last packet in a sequence might be incomplete
969        /// (because the producer is still writing it while we read). The read will
970        /// stop at that point, for that sequence, increasing this counter.
971        #[prost(uint64, optional, tag="8")]
972        pub readaheads_failed: ::core::option::Option<u64>,
973        /// Num. of violations of the SharedMemoryABI found while writing or reading
974        /// the buffer. This is an indication of either a bug in the producer(s) or
975        /// malicious producer(s).
976        #[prost(uint64, optional, tag="9")]
977        pub abi_violations: ::core::option::Option<u64>,
978        // The fields below have been introduced in Android R.
979
980        /// Num. of times the service detected packet loss on a trace writer
981        /// sequence. This is usually caused by exhaustion of available chunks in the
982        /// writer process's SMB. Note that this relies on the client's TraceWriter
983        /// indicating this loss to the service -- packets lost for other reasons are
984        /// not reflected in this stat.
985        #[prost(uint64, optional, tag="19")]
986        pub trace_writer_packet_loss: ::core::option::Option<u64>,
987        #[prost(message, optional, tag="21")]
988        pub shadow_buffer_stats: ::core::option::Option<buffer_stats::ShadowBufferStats>,
989    }
990    /// Nested message and enum types in `BufferStats`.
991    pub mod buffer_stats {
992        /// Statistics for TRACE_BUFFER_V2_SHADOW_MODE comparison.
993        /// Only populated when the buffer is configured with shadow mode.
994        #[derive(Clone, PartialEq, ::prost::Message)]
995        pub struct ShadowBufferStats {
996            /// Total num. packets read. This is not affected by capping of the hasher
997            /// to 32K elements.
998            #[prost(uint64, optional, tag="1")]
999            pub packets_seen: ::core::option::Option<u64>,
1000            // The stats below are keps only for 32k packets. After reading 32K
1001            // packets hashes are randomly evicted and that might lead to slightly
1002            // inconsistent results.
1003
1004            /// Num. packets found in both V1 and V2 buffers (matched by content hash).
1005            #[prost(uint64, optional, tag="2")]
1006            pub packets_in_both: ::core::option::Option<u64>,
1007            /// Num. packets found only in V1 buffer but not in V2.
1008            #[prost(uint64, optional, tag="3")]
1009            pub packets_only_v1: ::core::option::Option<u64>,
1010            /// Num. packets found only in V2 buffer but not in V1.
1011            #[prost(uint64, optional, tag="4")]
1012            pub packets_only_v2: ::core::option::Option<u64>,
1013            /// Num. patch operations attempted.
1014            #[prost(uint64, optional, tag="5")]
1015            pub patches_attempted: ::core::option::Option<u64>,
1016            /// Num. patches that succeeded on V1 buffer.
1017            #[prost(uint64, optional, tag="6")]
1018            pub v1_patches_succeeded: ::core::option::Option<u64>,
1019            /// Num. patches that succeeded on V2 buffer.
1020            #[prost(uint64, optional, tag="7")]
1021            pub v2_patches_succeeded: ::core::option::Option<u64>,
1022            /// This is to distinguish the updated calculations after fixing the
1023            /// hashes. This field is either empty or "2"
1024            #[prost(uint32, optional, tag="8")]
1025            pub stats_version: ::core::option::Option<u32>,
1026        }
1027    }
1028    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
1029    /// visible as a unique sequence ID in the trace.
1030    #[derive(Clone, PartialEq, ::prost::Message)]
1031    pub struct WriterStats {
1032        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
1033        /// correlate the stats with the actual packet types.
1034        #[prost(uint64, optional, tag="1")]
1035        pub sequence_id: ::core::option::Option<u64>,
1036        /// The buffer index (0..N, as defined in the TraceConfig).
1037        #[prost(uint32, optional, tag="4")]
1038        pub buffer: ::core::option::Option<u32>,
1039        /// These two arrays have the same cardinality and match the cardinality of
1040        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
1041        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
1042        /// for each bucket.
1043        #[prost(uint64, repeated, tag="2")]
1044        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
1045        #[prost(int64, repeated, tag="3")]
1046        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
1047    }
1048    /// This is set only when the TraceConfig specifies a TraceFilter.
1049    #[derive(Clone, PartialEq, ::prost::Message)]
1050    pub struct FilterStats {
1051        #[prost(uint64, optional, tag="1")]
1052        pub input_packets: ::core::option::Option<u64>,
1053        #[prost(uint64, optional, tag="2")]
1054        pub input_bytes: ::core::option::Option<u64>,
1055        #[prost(uint64, optional, tag="3")]
1056        pub output_bytes: ::core::option::Option<u64>,
1057        #[prost(uint64, optional, tag="4")]
1058        pub errors: ::core::option::Option<u64>,
1059        #[prost(uint64, optional, tag="5")]
1060        pub time_taken_ns: ::core::option::Option<u64>,
1061        /// The number of bytes discarded by the filter (i.e. output - input).
1062        /// The array has one entry for each buffer defined in the config (unless no
1063        /// packets for that buffer were seen and hence filtered).
1064        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
1065        /// (output_bytes - input_bytes) because the filter might also discard
1066        /// server-generated synthetic packets, that have no buffer index.
1067        #[prost(uint64, repeated, packed="false", tag="20")]
1068        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
1069    }
1070    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1071    #[repr(i32)]
1072    pub enum FinalFlushOutcome {
1073        FinalFlushUnspecified = 0,
1074        FinalFlushSucceeded = 1,
1075        FinalFlushFailed = 2,
1076    }
1077    impl FinalFlushOutcome {
1078        /// String value of the enum field names used in the ProtoBuf definition.
1079        ///
1080        /// The values are not transformed in any way and thus are considered stable
1081        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1082        pub fn as_str_name(&self) -> &'static str {
1083            match self {
1084                FinalFlushOutcome::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
1085                FinalFlushOutcome::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
1086                FinalFlushOutcome::FinalFlushFailed => "FINAL_FLUSH_FAILED",
1087            }
1088        }
1089    }
1090}
1091/// Builtin clock domains used in Perfetto traces.
1092///
1093/// The default trace time clock is BUILTIN_CLOCK_TRACE_FILE: a synthetic clock
1094/// representing the trace file's own timeline. Each trace file gets its own
1095/// instance (scoped by trace file index).
1096///
1097/// For backwards compatibility, Perfetto proto traces register BOOTTIME as a
1098/// fallback: if the first timestamp conversion uses a clock other than the
1099/// trace file clock and no explicit clock snapshot data exists, the trace time
1100/// is switched to BOOTTIME. This fallback does not fire for modern traces that
1101/// include ClockSnapshots or that only use the trace file clock directly.
1102///
1103/// The `primary_trace_clock` field in ClockSnapshot can definitively override
1104/// the trace time clock regardless of the above.
1105#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1106#[repr(i32)]
1107pub enum BuiltinClock {
1108    Unknown = 0,
1109    /// Corresponds to CLOCK_REALTIME. See clock_gettime(2).
1110    Realtime = 1,
1111    /// Corresponds to CLOCK_REALTIME_COARSE. See clock_gettime(2).
1112    RealtimeCoarse = 2,
1113    /// Corresponds to CLOCK_MONOTONIC. See clock_gettime(2).
1114    Monotonic = 3,
1115    /// Corresponds to CLOCK_MONOTONIC_COARSE. See clock_gettime(2).
1116    MonotonicCoarse = 4,
1117    /// Corresponds to CLOCK_MONOTONIC_RAW. See clock_gettime(2).
1118    MonotonicRaw = 5,
1119    /// Corresponds to CLOCK_BOOTTIME. See clock_gettime(2).
1120    /// For proto traces, this is used as a backwards-compatible fallback trace
1121    /// time clock when no explicit clock snapshots are present.
1122    Boottime = 6,
1123    /// TSC (Time Stamp Counter). Architecture-specific high-resolution counter.
1124    Tsc = 9,
1125    /// Corresponds to the perf event clock (PERF_CLOCK).
1126    Perf = 10,
1127    /// A synthetic clock representing the trace file's own timeline. Each trace
1128    /// file gets its own instance (scoped by trace file index). This is the
1129    /// default trace time clock before any clock snapshot or format-specific
1130    /// override takes effect.
1131    TraceFile = 11,
1132    MaxId = 63,
1133}
1134impl BuiltinClock {
1135    /// String value of the enum field names used in the ProtoBuf definition.
1136    ///
1137    /// The values are not transformed in any way and thus are considered stable
1138    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1139    pub fn as_str_name(&self) -> &'static str {
1140        match self {
1141            BuiltinClock::Unknown => "BUILTIN_CLOCK_UNKNOWN",
1142            BuiltinClock::Realtime => "BUILTIN_CLOCK_REALTIME",
1143            BuiltinClock::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
1144            BuiltinClock::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
1145            BuiltinClock::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
1146            BuiltinClock::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
1147            BuiltinClock::Boottime => "BUILTIN_CLOCK_BOOTTIME",
1148            BuiltinClock::Tsc => "BUILTIN_CLOCK_TSC",
1149            BuiltinClock::Perf => "BUILTIN_CLOCK_PERF",
1150            BuiltinClock::TraceFile => "BUILTIN_CLOCK_TRACE_FILE",
1151            BuiltinClock::MaxId => "BUILTIN_CLOCK_MAX_ID",
1152        }
1153    }
1154}
1155/// Semantic types for string fields. This tells the filter what kind of
1156/// data the field contains, so it can apply the right filtering rules.
1157/// See /rfcs/0011-subset-string-filter-rules.md for design details.
1158/// Introduced in: Perfetto v54.
1159#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1160#[repr(i32)]
1161pub enum SemanticType {
1162    Unspecified = 0,
1163    Atrace = 1,
1164    Job = 2,
1165    Wakelock = 3,
1166}
1167impl SemanticType {
1168    /// String value of the enum field names used in the ProtoBuf definition.
1169    ///
1170    /// The values are not transformed in any way and thus are considered stable
1171    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1172    pub fn as_str_name(&self) -> &'static str {
1173        match self {
1174            SemanticType::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
1175            SemanticType::Atrace => "SEMANTIC_TYPE_ATRACE",
1176            SemanticType::Job => "SEMANTIC_TYPE_JOB",
1177            SemanticType::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
1178        }
1179    }
1180}
1181/// Options for the android.aflags data source.
1182/// This data source captures snapshots of Android aconfig flags.
1183/// See <https://source.android.com/docs/setup/build/feature-flagging/declare-flag>
1184/// for more information on aconfig flags.
1185#[derive(Clone, PartialEq, ::prost::Message)]
1186pub struct AndroidAflagsConfig {
1187    /// Frequency of polling. If absent or 0, the state will be recorded once,
1188    /// at the start of the trace.
1189    ///
1190    /// It is recommended to either leave this absent or set it to a large
1191    /// value as each invocation of the `aflags` tool can be time consuming
1192    /// (approx. 350ms) and also triggers an expensive flush. This is required to
1193    /// be > 1000ms if set, to avoid excessive CPU usage.
1194    #[prost(uint32, optional, tag="1")]
1195    pub poll_ms: ::core::option::Option<u32>,
1196}
1197/// Data source that lists game modes and game interventions of games
1198/// on an Android device.
1199#[derive(Clone, PartialEq, ::prost::Message)]
1200pub struct AndroidGameInterventionListConfig {
1201    /// If not empty, emit info about only the following list of package names
1202    /// (exact match, no regex). Otherwise, emit info about all packages.
1203    #[prost(string, repeated, tag="1")]
1204    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1205}
1206/// Custom configuration for the "android.input.inputevent" data source.
1207///
1208/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
1209///
1210/// Next ID: 6
1211#[derive(Clone, PartialEq, ::prost::Message)]
1212pub struct AndroidInputEventConfig {
1213    /// The tracing mode to use. If unspecified, it will default to
1214    /// TRACE_MODE_USE_RULES.
1215    #[prost(enumeration="android_input_event_config::TraceMode", optional, tag="1")]
1216    pub mode: ::core::option::Option<i32>,
1217    /// The list of rules to use to determine the trace level of events.
1218    /// Each event will be traced using the TraceLevel of the first rule that it
1219    /// triggers from this list. The rules are evaluated in the order in which they
1220    /// are specified. If an event does not match any of the rules,
1221    /// TRACE_LEVEL_NONE will be used by default.
1222    #[prost(message, repeated, tag="2")]
1223    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
1224    // --- Control flags ---
1225
1226    /// Trace input events processed by the system as they are being dispatched
1227    /// to application windows. All trace rules will apply.
1228    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
1229    ///    it will
1230    ///      trace InputDispatcher's inbound events (which does not include events
1231    ///      synthesized within InputDispatcher) that match the rules.
1232    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
1233    ///    events
1234    ///      matching the rules, including all events synthesized within
1235    ///      InputDispatcher, will be traced.
1236    #[prost(bool, optional, tag="3")]
1237    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
1238    /// Trace details about which windows the system is sending each input event
1239    /// to. All trace rules will apply.
1240    #[prost(bool, optional, tag="4")]
1241    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
1242    /// Trace evdev events received from the kernel, including device additions and
1243    /// removals.
1244    #[prost(bool, optional, tag="5")]
1245    pub trace_evdev_events: ::core::option::Option<bool>,
1246}
1247/// Nested message and enum types in `AndroidInputEventConfig`.
1248pub mod android_input_event_config {
1249    /// A rule that specifies the TraceLevel for an event based on matching
1250    /// conditions. All matchers in the rule are optional. To trigger this rule, an
1251    /// event must match all of its specified matchers (i.e. the matchers function
1252    /// like a series of conditions connected by a logical 'AND' operator). A rule
1253    /// with no specified matchers will match all events. Next ID: 6
1254    #[derive(Clone, PartialEq, ::prost::Message)]
1255    pub struct TraceRule {
1256        /// The trace level to be used for events that trigger this rule.
1257        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
1258        #[prost(enumeration="TraceLevel", optional, tag="1")]
1259        pub trace_level: ::core::option::Option<i32>,
1260        // --- Optional Matchers ---
1261
1262        /// Package matchers
1263        ///
1264        /// Respectively matches if all or any of the target apps for this event are
1265        /// contained in the specified list of package names.
1266        ///
1267        /// Intended usage:
1268        ///    - Use match_all_packages to selectively allow tracing for the listed
1269        ///    packages.
1270        ///    - Use match_any_packages to selectively deny tracing for certain
1271        ///    packages.
1272        ///
1273        /// WARNING: Great care must be taken when designing rules for field tracing!
1274        ///           This is because each event is almost always sent to more than
1275        ///           one app.
1276        ///               For example, when allowing tracing for a package that has a
1277        ///               spy window
1278        ///           over the display (e.g. SystemUI) using match_any_packages,
1279        ///           essentially all input will be recorded on that display. This is
1280        ///           because the events will be sent to the spy as well as the
1281        ///           foreground app, and regardless of what the foreground app is,
1282        ///           the event will end up being traced.
1283        ///               Alternatively, when attempting to block tracing for specific
1284        ///               packages using
1285        ///           match_all_packages, no events will likely be blocked. This is
1286        ///           because the event will also be sent to other apps (such as, but
1287        ///           not limited to, ones with spy windows), so the matcher will not
1288        ///           match unless all other targets are also listed under the
1289        ///           match_all_packages list.
1290        #[prost(string, repeated, tag="2")]
1291        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1292        #[prost(string, repeated, tag="3")]
1293        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1294        /// Matches if the event is secure, which means that at least one of the
1295        /// targets of this event is using the window flag FLAG_SECURE.
1296        #[prost(bool, optional, tag="4")]
1297        pub match_secure: ::core::option::Option<bool>,
1298        /// Matches if there was an active IME connection while this event was being
1299        /// processed.
1300        #[prost(bool, optional, tag="5")]
1301        pub match_ime_connection_active: ::core::option::Option<bool>,
1302    }
1303    /// Trace modes are tracing presets that are included in the system.
1304    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1305    #[repr(i32)]
1306    pub enum TraceMode {
1307        /// Preset mode for maximal tracing.
1308        /// WARNING: This will bypass all privacy measures on debuggable builds, and
1309        /// will record all
1310        ///           input events processed by the system, regardless of the context
1311        ///           in which they were processed. It should only be used for tracing
1312        ///           on a local device or for tests. It should NEVER be used for
1313        ///           field tracing.
1314        TraceAll = 0,
1315        /// Use the tracing rules defined in this config to specify what events to
1316        /// trace.
1317        UseRules = 1,
1318    }
1319    impl TraceMode {
1320        /// String value of the enum field names used in the ProtoBuf definition.
1321        ///
1322        /// The values are not transformed in any way and thus are considered stable
1323        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1324        pub fn as_str_name(&self) -> &'static str {
1325            match self {
1326                TraceMode::TraceAll => "TRACE_MODE_TRACE_ALL",
1327                TraceMode::UseRules => "TRACE_MODE_USE_RULES",
1328            }
1329        }
1330    }
1331    /// The level of tracing that should be applied to an event.
1332    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1333    #[repr(i32)]
1334    pub enum TraceLevel {
1335        /// Do not trace the input event.
1336        None = 0,
1337        /// Trace the event as a redacted event, where certain sensitive fields are
1338        /// omitted from the trace, including the coordinates of pointer events and
1339        /// the key/scan codes of key events.
1340        Redacted = 1,
1341        /// Trace the complete event.
1342        Complete = 2,
1343    }
1344    impl TraceLevel {
1345        /// String value of the enum field names used in the ProtoBuf definition.
1346        ///
1347        /// The values are not transformed in any way and thus are considered stable
1348        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1349        pub fn as_str_name(&self) -> &'static str {
1350            match self {
1351                TraceLevel::None => "TRACE_LEVEL_NONE",
1352                TraceLevel::Redacted => "TRACE_LEVEL_REDACTED",
1353                TraceLevel::Complete => "TRACE_LEVEL_COMPLETE",
1354            }
1355        }
1356    }
1357}
1358/// Values from NDK's android/log.h.
1359#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1360#[repr(i32)]
1361pub enum AndroidLogId {
1362    /// MAIN.
1363    LidDefault = 0,
1364    LidRadio = 1,
1365    LidEvents = 2,
1366    LidSystem = 3,
1367    LidCrash = 4,
1368    LidStats = 5,
1369    LidSecurity = 6,
1370    LidKernel = 7,
1371}
1372impl AndroidLogId {
1373    /// String value of the enum field names used in the ProtoBuf definition.
1374    ///
1375    /// The values are not transformed in any way and thus are considered stable
1376    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1377    pub fn as_str_name(&self) -> &'static str {
1378        match self {
1379            AndroidLogId::LidDefault => "LID_DEFAULT",
1380            AndroidLogId::LidRadio => "LID_RADIO",
1381            AndroidLogId::LidEvents => "LID_EVENTS",
1382            AndroidLogId::LidSystem => "LID_SYSTEM",
1383            AndroidLogId::LidCrash => "LID_CRASH",
1384            AndroidLogId::LidStats => "LID_STATS",
1385            AndroidLogId::LidSecurity => "LID_SECURITY",
1386            AndroidLogId::LidKernel => "LID_KERNEL",
1387        }
1388    }
1389}
1390#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1391#[repr(i32)]
1392pub enum AndroidLogPriority {
1393    PrioUnspecified = 0,
1394    /// _DEFAULT, but should never be seen in logs.
1395    PrioUnused = 1,
1396    PrioVerbose = 2,
1397    PrioDebug = 3,
1398    PrioInfo = 4,
1399    PrioWarn = 5,
1400    PrioError = 6,
1401    PrioFatal = 7,
1402}
1403impl AndroidLogPriority {
1404    /// String value of the enum field names used in the ProtoBuf definition.
1405    ///
1406    /// The values are not transformed in any way and thus are considered stable
1407    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1408    pub fn as_str_name(&self) -> &'static str {
1409        match self {
1410            AndroidLogPriority::PrioUnspecified => "PRIO_UNSPECIFIED",
1411            AndroidLogPriority::PrioUnused => "PRIO_UNUSED",
1412            AndroidLogPriority::PrioVerbose => "PRIO_VERBOSE",
1413            AndroidLogPriority::PrioDebug => "PRIO_DEBUG",
1414            AndroidLogPriority::PrioInfo => "PRIO_INFO",
1415            AndroidLogPriority::PrioWarn => "PRIO_WARN",
1416            AndroidLogPriority::PrioError => "PRIO_ERROR",
1417            AndroidLogPriority::PrioFatal => "PRIO_FATAL",
1418        }
1419    }
1420}
1421#[derive(Clone, PartialEq, ::prost::Message)]
1422pub struct AndroidLogConfig {
1423    #[prost(enumeration="AndroidLogId", repeated, packed="false", tag="1")]
1424    pub log_ids: ::prost::alloc::vec::Vec<i32>,
1425    /// If set ignores all log messages whose prio is < the given value.
1426    #[prost(enumeration="AndroidLogPriority", optional, tag="3")]
1427    pub min_prio: ::core::option::Option<i32>,
1428    /// If non-empty ignores all log messages whose tag doesn't match one of the
1429    /// specified values.
1430    #[prost(string, repeated, tag="4")]
1431    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1432    /// If true, includes the contents of the logcat buffers that were already
1433    /// present before the data source started. By default (false), only new
1434    /// log entries produced after the data source starts are recorded.
1435    /// Can be useful for boot traces or situations where logs from before
1436    /// traced started are important.
1437    #[prost(bool, optional, tag="5")]
1438    pub preserve_log_buffer: ::core::option::Option<bool>,
1439}
1440/// Data source that polls for display state. This should only be used for
1441/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
1442#[derive(Clone, PartialEq, ::prost::Message)]
1443pub struct AndroidPolledStateConfig {
1444    /// Frequency of polling. If absent the state will be recorded once, at the
1445    /// start of the trace.
1446    /// This is required to be > 100ms to avoid excessive CPU usage.
1447    #[prost(uint32, optional, tag="1")]
1448    pub poll_ms: ::core::option::Option<u32>,
1449}
1450/// Data source that polls for system properties.
1451#[derive(Clone, PartialEq, ::prost::Message)]
1452pub struct AndroidSystemPropertyConfig {
1453    /// Frequency of polling. If absent the state will be recorded once, at the
1454    /// start of the trace.
1455    /// This is required to be > 100ms to avoid excessive CPU usage.
1456    #[prost(uint32, optional, tag="1")]
1457    pub poll_ms: ::core::option::Option<u32>,
1458    /// Properties to poll. All property names must start with "debug.tracing.".
1459    #[prost(string, repeated, tag="2")]
1460    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1461}
1462/// Data source that controls the system properties used to guard initialization
1463/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
1464/// processes like SurfaceFlinger.
1465///
1466/// This data source only tells Skia to initialized the Perfetto SDK and start
1467/// routing data to the Track Event system instead of ATrace. For those events
1468/// to actually show up in a trace, the track_event data source must be used as
1469/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
1470/// processes may need to be restarted for Skia to revert to using ATrace if
1471/// Track Events are no longer desired.
1472///
1473/// In addition to switching Skia to use Perfetto's track_event data source,
1474/// this "guard" also controls Skia's "broad tracing", which removes Skia's
1475/// internal tracing constraints and allows the track_event config to specify
1476/// which categories should be traced. Filtering to the "skia.always" category
1477/// *tag* in a track_event config can be used to re-enable the standard
1478/// constraints typically used with ATrace.
1479///
1480/// Data source name: android.sdk_sysprop_guard
1481/// Introduced in Android 14 (U) QPR1.
1482/// Next id: 4
1483#[derive(Clone, PartialEq, ::prost::Message)]
1484pub struct AndroidSdkSyspropGuardConfig {
1485    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
1486    /// integration with the track_event data source in RenderEngine.
1487    /// If false or omitted, the simpler ATrace fallback is used.
1488    ///
1489    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
1490    /// restarted.
1491    ///
1492    /// Specifically this sets the following system properties:
1493    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
1494    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
1495    ///
1496    /// Does not affect actual track_event data *collection*, which must be
1497    /// configured separately.
1498    #[prost(bool, optional, tag="1")]
1499    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
1500    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
1501    /// with the track_event data source. hwui_package_name_filter
1502    /// can be used to control which apps are affected.
1503    /// If false or omitted, the simpler ATrace fallback is used.
1504    ///
1505    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
1506    /// restarted.
1507    ///
1508    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
1509    /// If filtering is NOT set, this controls these GLOBAL system properties:
1510    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
1511    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
1512    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
1513    /// for each package listed in the filter:
1514    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
1515    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
1516    ///
1517    /// Does not affect actual track_event data *collection*, which must be
1518    /// configured separately.
1519    #[prost(bool, optional, tag="2")]
1520    pub hwui_skia_track_events: ::core::option::Option<bool>,
1521    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
1522    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
1523    #[prost(string, repeated, tag="3")]
1524    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1525}
1526/// Configuration for the android.app_wakelocks data source.
1527#[derive(Clone, PartialEq, ::prost::Message)]
1528pub struct AppWakelocksConfig {
1529    /// Specifies the delay (in milliseconds) after which the data source will
1530    /// attempt to write events. Writing less frequently reduces the trace size by
1531    /// making better use of the packed arrays and reducing the total number of
1532    /// TracePackets needed (which each have dozens of bytes of overhead). The
1533    /// suggested delay is 5000ms.
1534    #[prost(int32, optional, tag="1")]
1535    pub write_delay_ms: ::core::option::Option<i32>,
1536    /// When set, wakelocks held for less than this amount of time are filtered
1537    /// from the resulting trace. Note: duration is computed by matching wakelocks
1538    /// with identical attributes, not by tracking the underlying objects. The
1539    /// threshold should be < the trace's flush_period_ms.
1540    #[prost(int32, optional, tag="2")]
1541    pub filter_duration_below_ms: ::core::option::Option<i32>,
1542    /// When true, the owner_pid is dropped from the resulting output, reducing the
1543    /// size of the interning tables.
1544    #[prost(bool, optional, tag="3")]
1545    pub drop_owner_pid: ::core::option::Option<bool>,
1546}
1547/// Data source that records CPU per UID data.
1548#[derive(Clone, PartialEq, ::prost::Message)]
1549pub struct CpuPerUidConfig {
1550    /// Record at this frequency.
1551    #[prost(uint32, optional, tag="1")]
1552    pub poll_ms: ::core::option::Option<u32>,
1553}
1554/// Custom configuration for the "android.inputmethod" data source.
1555#[derive(Clone, PartialEq, ::prost::Message)]
1556pub struct InputMethodConfig {
1557    /// If true, enables tracing in the clients.
1558    #[prost(bool, optional, tag="1")]
1559    pub client: ::core::option::Option<bool>,
1560    /// If true, enables tracing in InputMethodService.
1561    #[prost(bool, optional, tag="2")]
1562    pub service: ::core::option::Option<bool>,
1563    /// If true, enables tracing in InputMethodManagerService.
1564    #[prost(bool, optional, tag="3")]
1565    pub manager_service: ::core::option::Option<bool>,
1566}
1567/// Data source that records kernel (and native) wakelock data.
1568#[derive(Clone, PartialEq, ::prost::Message)]
1569pub struct KernelWakelocksConfig {
1570    /// Record at this frequency.
1571    #[prost(uint32, optional, tag="1")]
1572    pub poll_ms: ::core::option::Option<u32>,
1573}
1574/// Network tracing data source that records details on all packets sent or
1575/// received by the network.
1576#[derive(Clone, PartialEq, ::prost::Message)]
1577pub struct NetworkPacketTraceConfig {
1578    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
1579    /// ring buffer. The polling interval should be such that the ring buffer is
1580    /// unlikely to fill in that interval (or that filling is an acceptable risk).
1581    /// The minimum polling rate is 100ms (values below this are ignored).
1582    /// Introduced in Android 14 (U).
1583    #[prost(uint32, optional, tag="1")]
1584    pub poll_ms: ::core::option::Option<u32>,
1585    /// The aggregation_threshold is the number of packets at which an event will
1586    /// switch from per-packet details to aggregate details. For example, a value
1587    /// of 50 means that if a particular event (grouped by the unique combinations
1588    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
1589    /// packets, the exact timestamp and length are recorded for each packet. If
1590    /// there were 50 or more packets in an event, it would only record the total
1591    /// duration, packets, and length. A value of zero or unspecified will always
1592    /// / record per-packet details. A value of 1 always records aggregate details.
1593    #[prost(uint32, optional, tag="2")]
1594    pub aggregation_threshold: ::core::option::Option<u32>,
1595    /// Specifies the maximum number of packet contexts to intern at a time. This
1596    /// prevents the interning table from growing too large and controls whether
1597    /// interning is enabled or disabled (a value of zero disables interning and
1598    /// is the default). When a data sources interning table reaches this amount,
1599    /// packet contexts will be inlined into NetworkPacketEvents.
1600    #[prost(uint32, optional, tag="3")]
1601    pub intern_limit: ::core::option::Option<u32>,
1602    /// The following fields specify whether certain fields should be dropped from
1603    /// the output. Dropping fields improves normalization results, reduces the
1604    /// size of the interning table, and slightly reduces event size.
1605    #[prost(bool, optional, tag="4")]
1606    pub drop_local_port: ::core::option::Option<bool>,
1607    #[prost(bool, optional, tag="5")]
1608    pub drop_remote_port: ::core::option::Option<bool>,
1609    #[prost(bool, optional, tag="6")]
1610    pub drop_tcp_flags: ::core::option::Option<bool>,
1611}
1612/// Data source that lists details (such as version code) about packages on an
1613/// Android device.
1614#[derive(Clone, PartialEq, ::prost::Message)]
1615pub struct PackagesListConfig {
1616    /// If not empty, emit info about only the following list of package names
1617    /// (exact match, no regex). Can be combined with
1618    /// |package_name_regex_filter|: a package is included if it matches either
1619    /// filter. If both filters are empty, emit info about all packages.
1620    #[prost(string, repeated, tag="1")]
1621    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1622    /// If not empty, emit info about only the packages whose names match any of
1623    /// the following regexes (full match, not partial). Can be combined with
1624    /// |package_name_filter|: a package is included if it matches either filter.
1625    /// If both filters are empty, emit info about all packages.
1626    /// This field was introduced in Android 26Q2 (Perfetto v55).
1627    #[prost(string, repeated, tag="3")]
1628    pub package_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1629    /// If present and non-zero, the data source will periodically poll for CPU
1630    /// use by packages and only emit results for those that it sees. If absent,
1631    /// the data source will emit results for all packages at startup. The package
1632    /// name filters apply either way.
1633    #[prost(uint32, optional, tag="2")]
1634    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
1635}
1636/// Data source that records events from the modem.
1637#[derive(Clone, PartialEq, ::prost::Message)]
1638pub struct PixelModemConfig {
1639    #[prost(enumeration="pixel_modem_config::EventGroup", optional, tag="1")]
1640    pub event_group: ::core::option::Option<i32>,
1641    /// If set, record only events with these hashes.
1642    #[prost(int64, repeated, packed="false", tag="2")]
1643    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
1644    /// If set and allow_list is not set, deny events with these hashes.
1645    #[prost(int64, repeated, packed="false", tag="3")]
1646    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
1647}
1648/// Nested message and enum types in `PixelModemConfig`.
1649pub mod pixel_modem_config {
1650    /// Event group to record, as defined by the modem.
1651    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1652    #[repr(i32)]
1653    pub enum EventGroup {
1654        Unknown = 0,
1655        /// Events suitable for low bandwidth tracing only.
1656        LowBandwidth = 1,
1657        /// Events suitable for high and low bandwidth tracing.
1658        HighAndLowBandwidth = 2,
1659    }
1660    impl EventGroup {
1661        /// String value of the enum field names used in the ProtoBuf definition.
1662        ///
1663        /// The values are not transformed in any way and thus are considered stable
1664        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1665        pub fn as_str_name(&self) -> &'static str {
1666            match self {
1667                EventGroup::Unknown => "EVENT_GROUP_UNKNOWN",
1668                EventGroup::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
1669                EventGroup::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
1670            }
1671        }
1672    }
1673}
1674/// Custom configuration for the "android.protolog" data source.
1675/// ProtoLog is a logging mechanism that is intented to be more efficient than
1676/// logcat. This configures what logs to capture in the tracing instance.
1677#[derive(Clone, PartialEq, ::prost::Message)]
1678pub struct ProtoLogConfig {
1679    /// Specified the configurations for each of the logging groups. If none is
1680    /// specified for a group the defaults will be used.
1681    #[prost(message, repeated, tag="1")]
1682    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
1683    /// Specified what tracing mode to use for the tracing instance.
1684    #[prost(enumeration="proto_log_config::TracingMode", optional, tag="2")]
1685    pub tracing_mode: ::core::option::Option<i32>,
1686    /// If set, any message with log level higher than this level (inclusive) will
1687    /// be traced. Group overrides take precedence over this value.
1688    #[prost(enumeration="ProtoLogLevel", optional, tag="3")]
1689    pub default_log_from_level: ::core::option::Option<i32>,
1690}
1691/// Nested message and enum types in `ProtoLogConfig`.
1692pub mod proto_log_config {
1693    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1694    #[repr(i32)]
1695    pub enum TracingMode {
1696        /// When using the DEFAULT tracing mode, only log groups and levels specified
1697        /// in the group_overrides are traced.
1698        Default = 0,
1699        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
1700        /// traced, unless specified in the group_overrides.
1701        EnableAll = 1,
1702    }
1703    impl TracingMode {
1704        /// String value of the enum field names used in the ProtoBuf definition.
1705        ///
1706        /// The values are not transformed in any way and thus are considered stable
1707        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1708        pub fn as_str_name(&self) -> &'static str {
1709            match self {
1710                TracingMode::Default => "DEFAULT",
1711                TracingMode::EnableAll => "ENABLE_ALL",
1712            }
1713        }
1714    }
1715}
1716#[derive(Clone, PartialEq, ::prost::Message)]
1717pub struct ProtoLogGroup {
1718    /// The ProtoLog group name this configuration entry applies to.
1719    #[prost(string, optional, tag="1")]
1720    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
1721    /// Specify the level from which to start capturing protologs.
1722    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
1723    /// message will be traced.
1724    #[prost(enumeration="ProtoLogLevel", optional, tag="2")]
1725    pub log_from: ::core::option::Option<i32>,
1726    /// When set to true we will collect the stacktrace for each protolog message
1727    /// in this group that we are tracing.
1728    #[prost(bool, optional, tag="3")]
1729    pub collect_stacktrace: ::core::option::Option<bool>,
1730}
1731#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1732#[repr(i32)]
1733pub enum ProtoLogLevel {
1734    ProtologLevelUndefined = 0,
1735    ProtologLevelDebug = 1,
1736    ProtologLevelVerbose = 2,
1737    ProtologLevelInfo = 3,
1738    ProtologLevelWarn = 4,
1739    ProtologLevelError = 5,
1740    ProtologLevelWtf = 6,
1741}
1742impl ProtoLogLevel {
1743    /// String value of the enum field names used in the ProtoBuf definition.
1744    ///
1745    /// The values are not transformed in any way and thus are considered stable
1746    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1747    pub fn as_str_name(&self) -> &'static str {
1748        match self {
1749            ProtoLogLevel::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
1750            ProtoLogLevel::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
1751            ProtoLogLevel::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
1752            ProtoLogLevel::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
1753            ProtoLogLevel::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
1754            ProtoLogLevel::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
1755            ProtoLogLevel::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
1756        }
1757    }
1758}
1759/// Config for the "android.display.video" data source. Unset/0 fields use
1760/// the producer's default.
1761#[derive(Clone, PartialEq, ::prost::Message)]
1762pub struct DisplayVideoConfig {
1763    /// Scale applied to each display's resolution before capture (0.25 =
1764    /// quarter size).
1765    #[prost(float, optional, tag="1")]
1766    pub scale: ::core::option::Option<f32>,
1767    #[prost(enumeration="display_video_config::Format", optional, tag="2")]
1768    pub format: ::core::option::Option<i32>,
1769    /// Keyframe interval in seconds. Smaller = snappier seeking, larger trace.
1770    #[prost(uint32, optional, tag="3")]
1771    pub key_frame_interval_secs: ::core::option::Option<u32>,
1772    /// Per-display cap on emitted bytes. On reaching it the stream is torn
1773    /// down with a VideoFrameError (SIZE_CAP_HIT).
1774    #[prost(uint64, optional, tag="4")]
1775    pub max_stream_size_bytes: ::core::option::Option<u64>,
1776}
1777/// Nested message and enum types in `DisplayVideoConfig`.
1778pub mod display_video_config {
1779    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1780    #[repr(i32)]
1781    pub enum Format {
1782        /// Default (H.264).
1783        Unspecified = 0,
1784        H264 = 1,
1785        Hevc = 2,
1786    }
1787    impl Format {
1788        /// String value of the enum field names used in the ProtoBuf definition.
1789        ///
1790        /// The values are not transformed in any way and thus are considered stable
1791        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1792        pub fn as_str_name(&self) -> &'static str {
1793            match self {
1794                Format::Unspecified => "FORMAT_UNSPECIFIED",
1795                Format::H264 => "FORMAT_H264",
1796                Format::Hevc => "FORMAT_HEVC",
1797            }
1798        }
1799    }
1800}
1801/// Custom configuration for the "android.surfaceflinger.layers" data source.
1802#[derive(Clone, PartialEq, ::prost::Message)]
1803pub struct SurfaceFlingerLayersConfig {
1804    #[prost(enumeration="surface_flinger_layers_config::Mode", optional, tag="1")]
1805    pub mode: ::core::option::Option<i32>,
1806    #[prost(enumeration="surface_flinger_layers_config::TraceFlag", repeated, packed="false", tag="2")]
1807    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
1808}
1809/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
1810pub mod surface_flinger_layers_config {
1811    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1812    #[repr(i32)]
1813    pub enum Mode {
1814        Unspecified = 0,
1815        /// Trace layers snapshots. A snapshot is taken every time a layers change
1816        /// occurs.
1817        Active = 1,
1818        /// Generate layers snapshots from the transactions kept in the
1819        /// SurfaceFlinger's internal ring buffer.
1820        /// The layers snapshots generation occurs when this data source is flushed.
1821        Generated = 2,
1822        /// Trace a single layers snapshot.
1823        Dump = 3,
1824        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1825        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
1826        /// when a bugreport is taken.
1827        GeneratedBugreportOnly = 4,
1828        /// Layer snapshots are generated by ProtoVM from layer patches
1829        Protovm = 5,
1830    }
1831    impl Mode {
1832        /// String value of the enum field names used in the ProtoBuf definition.
1833        ///
1834        /// The values are not transformed in any way and thus are considered stable
1835        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1836        pub fn as_str_name(&self) -> &'static str {
1837            match self {
1838                Mode::Unspecified => "MODE_UNSPECIFIED",
1839                Mode::Active => "MODE_ACTIVE",
1840                Mode::Generated => "MODE_GENERATED",
1841                Mode::Dump => "MODE_DUMP",
1842                Mode::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
1843                Mode::Protovm => "MODE_PROTOVM",
1844            }
1845        }
1846    }
1847    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1848    #[repr(i32)]
1849    pub enum TraceFlag {
1850        Unspecified = 0,
1851        Input = 2,
1852        Composition = 4,
1853        Extra = 8,
1854        Hwc = 16,
1855        Buffers = 32,
1856        VirtualDisplays = 64,
1857        /// INPUT | COMPOSITION | EXTRA
1858        All = 14,
1859    }
1860    impl TraceFlag {
1861        /// String value of the enum field names used in the ProtoBuf definition.
1862        ///
1863        /// The values are not transformed in any way and thus are considered stable
1864        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1865        pub fn as_str_name(&self) -> &'static str {
1866            match self {
1867                TraceFlag::Unspecified => "TRACE_FLAG_UNSPECIFIED",
1868                TraceFlag::Input => "TRACE_FLAG_INPUT",
1869                TraceFlag::Composition => "TRACE_FLAG_COMPOSITION",
1870                TraceFlag::Extra => "TRACE_FLAG_EXTRA",
1871                TraceFlag::Hwc => "TRACE_FLAG_HWC",
1872                TraceFlag::Buffers => "TRACE_FLAG_BUFFERS",
1873                TraceFlag::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
1874                TraceFlag::All => "TRACE_FLAG_ALL",
1875            }
1876        }
1877    }
1878}
1879/// Custom configuration for the "android.surfaceflinger.transactions" data
1880/// source.
1881#[derive(Clone, PartialEq, ::prost::Message)]
1882pub struct SurfaceFlingerTransactionsConfig {
1883    #[prost(enumeration="surface_flinger_transactions_config::Mode", optional, tag="1")]
1884    pub mode: ::core::option::Option<i32>,
1885}
1886/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
1887pub mod surface_flinger_transactions_config {
1888    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1889    #[repr(i32)]
1890    pub enum Mode {
1891        Unspecified = 0,
1892        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1893        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1894        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1895        /// initial state and the latest transactions.
1896        Continuous = 1,
1897        /// SurfaceFlinger writes the initial state and then each incoming
1898        /// transaction until the data source is stopped.
1899        Active = 2,
1900    }
1901    impl Mode {
1902        /// String value of the enum field names used in the ProtoBuf definition.
1903        ///
1904        /// The values are not transformed in any way and thus are considered stable
1905        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1906        pub fn as_str_name(&self) -> &'static str {
1907            match self {
1908                Mode::Unspecified => "MODE_UNSPECIFIED",
1909                Mode::Continuous => "MODE_CONTINUOUS",
1910                Mode::Active => "MODE_ACTIVE",
1911            }
1912        }
1913    }
1914}
1915/// Data source that lists details (such as version code) about users on an
1916/// Android device.
1917#[derive(Clone, PartialEq, ::prost::Message)]
1918pub struct AndroidUserListConfig {
1919    /// An allowlist of user type strings, used to control the granularity of
1920    /// user type information emitted in the trace. Exact, case-sensitive string
1921    /// matching is used.
1922    ///
1923    /// Any user type read from the device that is NOT present in the
1924    /// effective allowlist will have its type reported as
1925    /// "android.os.usertype.FILTERED".
1926    ///
1927    /// The effective allowlist is determined as follows:
1928    ///
1929    /// 1. If this 'user_type_filter' field is provided and non-empty:
1930    ///     This list itself is the effective allowlist.
1931    ///     Example TraceConfig:
1932    ///     --------------------
1933    ///     data_sources {
1934    ///         config {
1935    ///             name: "android.user_list"
1936    ///             target_buffer: 0
1937    ///             user_list_config {
1938    ///               # Only report these specific types, others become FILTERED.
1939    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
1940    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
1941    ///             }
1942    ///         }
1943    ///     }
1944    ///
1945    ///
1946    /// Note: This field does not support regular expressions.
1947    #[prost(string, repeated, tag="1")]
1948    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1949}
1950/// Custom configuration for the "android.windowmanager" data source.
1951#[derive(Clone, PartialEq, ::prost::Message)]
1952pub struct WindowManagerConfig {
1953    #[prost(enumeration="window_manager_config::LogFrequency", optional, tag="1")]
1954    pub log_frequency: ::core::option::Option<i32>,
1955    #[prost(enumeration="window_manager_config::LogLevel", optional, tag="2")]
1956    pub log_level: ::core::option::Option<i32>,
1957    #[prost(enumeration="window_manager_config::LogMode", optional, tag="3")]
1958    pub log_mode: ::core::option::Option<i32>,
1959}
1960/// Nested message and enum types in `WindowManagerConfig`.
1961pub mod window_manager_config {
1962    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1963    #[repr(i32)]
1964    pub enum LogFrequency {
1965        Unspecified = 0,
1966        /// Trace state snapshots when a frame is committed.
1967        Frame = 1,
1968        /// Trace state snapshots every time a transaction is committed.
1969        Transaction = 2,
1970        /// Trace single state snapshots when the data source is started.
1971        SingleDump = 3,
1972    }
1973    impl LogFrequency {
1974        /// String value of the enum field names used in the ProtoBuf definition.
1975        ///
1976        /// The values are not transformed in any way and thus are considered stable
1977        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1978        pub fn as_str_name(&self) -> &'static str {
1979            match self {
1980                LogFrequency::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1981                LogFrequency::Frame => "LOG_FREQUENCY_FRAME",
1982                LogFrequency::Transaction => "LOG_FREQUENCY_TRANSACTION",
1983                LogFrequency::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1984            }
1985        }
1986    }
1987    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1988    #[repr(i32)]
1989    pub enum LogLevel {
1990        Unspecified = 0,
1991        /// Logs all elements with maximum amount of information.
1992        Verbose = 1,
1993        /// Logs all elements but doesn't write all configuration data.
1994        Debug = 2,
1995        /// Logs only visible elements, with the minimum amount of performance
1996        /// overhead
1997        Critical = 3,
1998    }
1999    impl LogLevel {
2000        /// String value of the enum field names used in the ProtoBuf definition.
2001        ///
2002        /// The values are not transformed in any way and thus are considered stable
2003        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2004        pub fn as_str_name(&self) -> &'static str {
2005            match self {
2006                LogLevel::Unspecified => "LOG_LEVEL_UNSPECIFIED",
2007                LogLevel::Verbose => "LOG_LEVEL_VERBOSE",
2008                LogLevel::Debug => "LOG_LEVEL_DEBUG",
2009                LogLevel::Critical => "LOG_LEVEL_CRITICAL",
2010            }
2011        }
2012    }
2013    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2014    #[repr(i32)]
2015    pub enum LogMode {
2016        Unspecified = 0,
2017        /// Always logs a full state dump of the window hierarchy.
2018        FullState = 1,
2019        /// Logs a full state dump of the window hierarchy only when tracing starts.
2020        /// The following trace packets are lightweight patches containing only the
2021        /// last changes.
2022        Incremental = 2,
2023    }
2024    impl LogMode {
2025        /// String value of the enum field names used in the ProtoBuf definition.
2026        ///
2027        /// The values are not transformed in any way and thus are considered stable
2028        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2029        pub fn as_str_name(&self) -> &'static str {
2030            match self {
2031                LogMode::Unspecified => "LOG_MODE_UNSPECIFIED",
2032                LogMode::FullState => "LOG_MODE_FULL_STATE",
2033                LogMode::Incremental => "LOG_MODE_INCREMENTAL",
2034            }
2035        }
2036    }
2037}
2038#[derive(Clone, PartialEq, ::prost::Message)]
2039pub struct ChromeConfig {
2040    #[prost(string, optional, tag="1")]
2041    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
2042    /// When enabled, the data source should only fill in fields in the output that
2043    /// are not potentially privacy sensitive.
2044    #[prost(bool, optional, tag="2")]
2045    pub privacy_filtering_enabled: ::core::option::Option<bool>,
2046    /// Instead of emitting binary protobuf, convert the trace data to the legacy
2047    /// JSON format. Note that the trace data will still be returned as a series of
2048    /// TracePackets, but the embedded data will be JSON instead of serialized
2049    /// protobuf.
2050    #[prost(bool, optional, tag="3")]
2051    pub convert_to_legacy_json: ::core::option::Option<bool>,
2052    #[prost(enumeration="chrome_config::ClientPriority", optional, tag="4")]
2053    pub client_priority: ::core::option::Option<i32>,
2054    /// Applicable only when using legacy JSON format.
2055    /// If |json_agent_label_filter| is not empty, only data pertaining to
2056    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
2057    #[prost(string, optional, tag="5")]
2058    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
2059    ///   When enabled, event names should not contain package names.
2060    #[prost(bool, optional, tag="6")]
2061    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
2062}
2063/// Nested message and enum types in `ChromeConfig`.
2064pub mod chrome_config {
2065    /// Priority of the tracing session client. A higher priority session may
2066    /// preempt a lower priority one in configurations where concurrent sessions
2067    /// aren't supported.
2068    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2069    #[repr(i32)]
2070    pub enum ClientPriority {
2071        Unknown = 0,
2072        Background = 1,
2073        UserInitiated = 2,
2074    }
2075    impl ClientPriority {
2076        /// String value of the enum field names used in the ProtoBuf definition.
2077        ///
2078        /// The values are not transformed in any way and thus are considered stable
2079        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2080        pub fn as_str_name(&self) -> &'static str {
2081            match self {
2082                ClientPriority::Unknown => "UNKNOWN",
2083                ClientPriority::Background => "BACKGROUND",
2084                ClientPriority::UserInitiated => "USER_INITIATED",
2085            }
2086        }
2087    }
2088}
2089#[derive(Clone, PartialEq, ::prost::Message)]
2090pub struct V8Config {
2091    /// Whether to log the actual content of scripts (e.g. content of the JS file
2092    /// that was compiled to generate code).
2093    /// ATTENTION: This could considerably increase the size of the resuling trace
2094    ///             file.
2095    #[prost(bool, optional, tag="1")]
2096    pub log_script_sources: ::core::option::Option<bool>,
2097    /// Whether to log the generated code for jitted functions (machine code or
2098    /// bytecode).
2099    /// ATTENTION: This could considerably increase the size of the resuling trace
2100    ///             file.
2101    #[prost(bool, optional, tag="2")]
2102    pub log_instructions: ::core::option::Option<bool>,
2103}
2104/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
2105/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
2106/// ns-evntrace-event_trace_properties
2107#[derive(Clone, PartialEq, ::prost::Message)]
2108pub struct EtwConfig {
2109    /// The kernel_flags determines the flags that will be used by the etw tracing
2110    /// session. These kernel flags have been built to expose the useful events
2111    /// captured from the kernel mode only.
2112    #[deprecated]
2113    #[prost(enumeration="etw_config::KernelFlag", repeated, packed="false", tag="1")]
2114    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
2115    // See the list of keywords for for individual providers.
2116    // <https://learn.microsoft.com/en-us/windows/win32/etw/system-providers>
2117
2118    /// Provides events relating to the scheduler.
2119    #[prost(string, repeated, tag="2")]
2120    pub scheduler_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2121    /// Provides events relating to the memory manager.
2122    #[prost(string, repeated, tag="3")]
2123    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2124    /// Provides events relating to file I/O.
2125    #[deprecated]
2126    #[prost(string, repeated, tag="4")]
2127    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2128    /// Events for which stacks should be collected.
2129    #[prost(string, repeated, tag="5")]
2130    pub stack_sampling_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2131    /// Provides events relating to disk I/O.
2132    #[deprecated]
2133    #[prost(string, repeated, tag="6")]
2134    pub disk_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2135    /// Provides events relating to multiple kinds of IO including disk, cache, and
2136    /// network.
2137    #[prost(string, repeated, tag="7")]
2138    pub system_io_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2139}
2140/// Nested message and enum types in `EtwConfig`.
2141pub mod etw_config {
2142    /// The KernelFlag represent list of kernel flags that we are intrested in.
2143    /// To get a more extensive list run 'xperf -providers k'.
2144    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2145    #[repr(i32)]
2146    pub enum KernelFlag {
2147        Cswitch = 0,
2148        Dispatcher = 1,
2149    }
2150    impl KernelFlag {
2151        /// String value of the enum field names used in the ProtoBuf definition.
2152        ///
2153        /// The values are not transformed in any way and thus are considered stable
2154        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2155        pub fn as_str_name(&self) -> &'static str {
2156            match self {
2157                KernelFlag::Cswitch => "CSWITCH",
2158                KernelFlag::Dispatcher => "DISPATCHER",
2159            }
2160        }
2161    }
2162}
2163#[derive(Clone, PartialEq, ::prost::Message)]
2164pub struct ChromiumSystemMetricsConfig {
2165    /// Samples counters every X ms.
2166    #[prost(uint32, optional, tag="1")]
2167    pub sampling_interval_ms: ::core::option::Option<u32>,
2168}
2169/// Next id: 38
2170#[derive(Clone, PartialEq, ::prost::Message)]
2171pub struct FtraceConfig {
2172    /// Ftrace events to record, example: "sched/sched_switch".
2173    #[prost(string, repeated, tag="1")]
2174    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2175    /// Android-specific event categories:
2176    #[prost(string, repeated, tag="2")]
2177    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2178    #[prost(string, repeated, tag="3")]
2179    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2180    /// Some processes can emit data through atrace or through the perfetto SDK via
2181    /// the "track_event" data source. For these categories, the SDK will be
2182    /// preferred, if possible, for this config.
2183    #[prost(string, repeated, tag="28")]
2184    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2185    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
2186    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
2187    /// events for convenience (and the vendor-specific events on top).
2188    /// Introduced in: perfetto v52.
2189    #[prost(bool, optional, tag="34")]
2190    pub atrace_userspace_only: ::core::option::Option<bool>,
2191    /// Size of each per-cpu kernel ftrace ring buffer.
2192    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
2193    /// buffers cannot be resized without pausing recording in the kernel.
2194    #[prost(uint32, optional, tag="10")]
2195    pub buffer_size_kb: ::core::option::Option<u32>,
2196    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
2197    /// implementation to choose a bigger buffer size.
2198    ///
2199    /// Most configs for perfetto v43+ should simply leave both fields unset.
2200    ///
2201    /// If you need a config compatible with a range of perfetto builds and you
2202    /// used to set a non-default buffer_size_kb, consider setting both fields.
2203    /// Example:
2204    ///    buffer_size_kb: 4096
2205    ///    buffer_size_lower_bound: true
2206    /// On older builds, the per-cpu buffers will be exactly 4 MB.
2207    /// On v43+, buffers will be at least 4 MB.
2208    /// In both cases, neither is guaranteed if there are other concurrent
2209    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
2210    /// the recording in the kernel.
2211    /// Introduced in: perfetto v43.
2212    #[prost(bool, optional, tag="27")]
2213    pub buffer_size_lower_bound: ::core::option::Option<bool>,
2214    /// If set, specifies how often the tracing daemon reads from the kernel ring
2215    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
2216    /// Leave unset unless you're fine-tuning a local config.
2217    #[prost(uint32, optional, tag="11")]
2218    pub drain_period_ms: ::core::option::Option<u32>,
2219    /// If set, the tracing daemon will read kernel ring buffers as soon as
2220    /// they're filled past this percentage of occupancy. In other words, a value
2221    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
2222    /// half-full. Not guaranteed if there are multiple concurrent tracing
2223    /// sessions.
2224    /// Currently does nothing on Linux kernels below v6.9.
2225    /// Introduced in: perfetto v48.
2226    #[prost(uint32, optional, tag="29")]
2227    pub drain_buffer_percent: ::core::option::Option<u32>,
2228    #[prost(message, optional, tag="12")]
2229    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
2230    #[prost(message, optional, tag="22")]
2231    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
2232    /// Enables symbol name resolution against /proc/kallsyms.
2233    /// It requires that either traced_probes is running as root or that
2234    /// kptr_restrict has been manually lowered.
2235    /// It does not disclose KASLR, symbol addresses are mangled.
2236    #[prost(bool, optional, tag="13")]
2237    pub symbolize_ksyms: ::core::option::Option<bool>,
2238    #[prost(enumeration="ftrace_config::KsymsMemPolicy", optional, tag="17")]
2239    pub ksyms_mem_policy: ::core::option::Option<i32>,
2240    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
2241    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
2242    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
2243    /// The historical context for this is the following:
2244    /// - Up to Android S (12), the rss_stat was internally throttled in its
2245    ///    kernel implementation.
2246    /// - A change introduced in the kernels after S has introduced a new
2247    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
2248    ///    (hence very spammy).
2249    /// - Not all Android T/13 devices will receive a new kernel though, hence we
2250    ///    need to deal with both cases.
2251    /// For more context: go/rss-stat-throttled.
2252    #[prost(bool, optional, tag="15")]
2253    pub throttle_rss_stat: ::core::option::Option<bool>,
2254    /// If true, use self-describing proto messages when writing events not known
2255    /// at compile time (aka generic events). Each event bundle will have a set of
2256    /// serialised proto descriptors for events within that bundle.
2257    ///
2258    /// Default if unset:
2259    /// * v53+: true
2260    /// * before v53: false
2261    ///
2262    /// Added in: perfetto v50.
2263    #[prost(bool, optional, tag="32")]
2264    pub denser_generic_event_encoding: ::core::option::Option<bool>,
2265    /// If true, avoid enabling events that aren't statically known by
2266    /// traced_probes. Otherwise, the default is to emit such events as
2267    /// GenericFtraceEvent protos.
2268    /// Prefer to keep this flag at its default. This was added for Android
2269    /// tracing, where atrace categories and/or atrace HAL requested events can
2270    /// expand to events that aren't of interest to the tracing user.
2271    /// Introduced in: Android T.
2272    #[prost(bool, optional, tag="16")]
2273    pub disable_generic_events: ::core::option::Option<bool>,
2274    /// The subset of syscalls to record. To record all syscalls, leave this unset
2275    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
2276    /// * before perfetto v43, requires the config to also enable
2277    ///    raw_syscalls/sys_{enter,exit}.
2278    /// * perfetto v43+ does the right thing if you set only this field.
2279    /// Example: ["sys_read", "sys_open"].
2280    /// Introduced in: Android U.
2281    #[prost(string, repeated, tag="18")]
2282    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2283    /// If true, enable the "function_graph" kernel tracer that emits events
2284    /// whenever a kernel function is entered and exited
2285    /// (funcgraph_entry/funcgraph_exit).
2286    /// Notes on use:
2287    /// * Requires |symbolize_ksyms| for function name resolution.
2288    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
2289    ///    set of functions, otherwise the event bandwidth will be too high for
2290    ///    practical use.
2291    /// * The data source might be rejected if there is already a concurrent
2292    ///    ftrace data source that does not use function graph itself, as we do not
2293    ///    support switching kernel tracers mid-trace.
2294    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
2295    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
2296    ///    "function_graph".
2297    /// Android:
2298    /// * Available only on debuggable builds.
2299    /// * Introduced in: Android U.
2300    #[prost(bool, optional, tag="19")]
2301    pub enable_function_graph: ::core::option::Option<bool>,
2302    /// Constrains the set of functions traced when |enable_function_graph| is
2303    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
2304    /// in which case all matching functions will be traced. See kernel
2305    /// documentation on ftrace "set_ftrace_filter" file for more details.
2306    /// Android:
2307    /// * Available only on debuggable builds.
2308    /// * Introduced in: Android U.
2309    #[prost(string, repeated, tag="20")]
2310    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2311    /// If |enable_function_graph| is true, trace this set of functions *and* all
2312    /// of its callees. Supports globs. Can be set together with
2313    /// |function_filters|, in which case only callees matching the filter will be
2314    /// traced. If setting both, you most likely want all roots to also be
2315    /// included in |function_filters|.
2316    /// Android:
2317    /// * Available only on debuggable builds.
2318    /// * Introduced in: Android U.
2319    #[prost(string, repeated, tag="21")]
2320    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2321    /// If |enable_function_graph| is true, only trace the specified
2322    /// number of calls down the stack. Sets the max_graph_depth value
2323    /// in sys/kernel/tracing/
2324    ///
2325    /// Only respected for the first tracing session that enables
2326    /// function_graph tracing.
2327    ///
2328    /// Introduced in: perfetto v51.
2329    /// Supported on: Android 25Q3+.
2330    #[prost(uint32, optional, tag="33")]
2331    pub function_graph_max_depth: ::core::option::Option<u32>,
2332    /// Ftrace events to record, specific for kprobes and kretprobes
2333    #[prost(message, repeated, tag="30")]
2334    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
2335    /// If true, does not clear kernel ftrace buffers when starting the trace.
2336    /// This makes sense only if this is the first ftrace data source instance
2337    /// created after the daemon has been started. Can be useful for gathering boot
2338    /// traces, if ftrace has been separately configured (e.g. via kernel
2339    /// commandline).
2340    /// NB: when configuring the pre-perfetto ftrace, prefer to set
2341    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
2342    /// anything besides ftrace. Otherwise timestamps might be skewed.
2343    #[prost(bool, optional, tag="23")]
2344    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
2345    /// If true, overrides the default timestamp clock and uses a raw hardware
2346    /// based monotonic clock for getting timestamps.
2347    /// * Introduced in: Android U.
2348    #[prost(bool, optional, tag="24")]
2349    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
2350    /// If |instance_name| is not empty, then attempt to use that tracefs instance
2351    /// for event recording. Normally, this means
2352    /// `/sys/kernel/tracing/instances/$instance_name`.
2353    ///
2354    /// Names "hyp" and "hypervisor" are reserved.
2355    ///
2356    /// The instance must already exist, the tracing daemon *will not* create it
2357    /// for you as it typically doesn't have such permissions.
2358    /// Only a subset of features is guaranteed to work with non-default instances,
2359    /// at the time of writing:
2360    ///   * ftrace_events
2361    ///   * buffer_size_kb
2362    #[prost(string, optional, tag="25")]
2363    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
2364    /// For perfetto developer use. If true and on a debuggable android build,
2365    /// serialise raw tracing pages that the implementation cannot parse.
2366    #[prost(bool, optional, tag="31")]
2367    pub debug_ftrace_abi: ::core::option::Option<bool>,
2368    // =================================================
2369    // Exclusive single-tenant features: HERE BE DRAGONS
2370    // =================================================
2371    // The features below are considered "advanced" and require an exclusive
2372    // tracing session (as of Android 25Q3+ and Perfetto v52).
2373    //
2374    // These features directly manipulate the kernel's global ftrace state and
2375    // are incompatible with concurrent ftrace sessions. They are only enabled
2376    // if included in the *first* ftrace data source configured. Subsequent
2377    // ftrace data sources (even those not using advanced features) will be
2378    // rejected while a session with these features is active.
2379    //
2380    // To run the session in exclusive mode, see:
2381    // <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2382
2383    /// Filter ftrace events by Thread ID (TID).
2384    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
2385    ///
2386    /// Note: this is an exclusive feature, see:
2387    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2388    ///
2389    /// Introduced in: perfetto v52.
2390    /// Supported on: Android 25Q3+.
2391    #[prost(uint32, repeated, packed="false", tag="35")]
2392    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
2393    #[prost(message, repeated, tag="36")]
2394    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
2395    /// This mask restricts tracing to a specific set of CPUs using a
2396    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
2397    /// 32-bit chunk of the CPU mask.
2398    ///
2399    /// The chunks are ordered from high CPUs to low CPUs (left to right):
2400    ///    - Rightmost chunk: CPUs 0-31
2401    ///    - 2nd chunk from right: CPUs 32-63
2402    ///    - ...and so on.
2403    ///
2404    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
2405    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
2406    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
2407    /// chunk0 to 0-31.
2408    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
2409    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
2410    ///
2411    /// Note: This is an exclusive feature, see:
2412    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2413    ///
2414    /// Introduced in: perfetto v52.
2415    /// Supported on: Android 25Q3+.
2416    #[prost(string, optional, tag="37")]
2417    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
2418    /// No-op in perfetto v28+. Name preserved because of existing references in
2419    /// textproto configs.
2420    #[deprecated]
2421    #[prost(bool, optional, tag="14")]
2422    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
2423}
2424/// Nested message and enum types in `FtraceConfig`.
2425pub mod ftrace_config {
2426    /// Configuration for compact encoding of scheduler events. When enabled (and
2427    /// recording the relevant ftrace events), specific high-volume events are
2428    /// encoded in a denser format than normal.
2429    #[derive(Clone, PartialEq, ::prost::Message)]
2430    pub struct CompactSchedConfig {
2431        /// If true, and sched_switch or sched_waking ftrace events are enabled,
2432        /// record those events in the compact format.
2433        ///
2434        /// If the field is unset, the default is:
2435        /// * perfetto v42.0+: enabled
2436        /// * before: disabled
2437        #[prost(bool, optional, tag="1")]
2438        pub enabled: ::core::option::Option<bool>,
2439    }
2440    /// Optional filter for "ftrace/print" events.
2441    ///
2442    /// The filter consists of multiple rules. As soon as a rule matches (the rules
2443    /// are processed in order), its `allow` field will be used as the outcome: if
2444    /// `allow` is true, the event will be included in the trace, otherwise it will
2445    /// be discarded. If an event does not match any rule, it will be allowed by
2446    /// default (a rule with an empty prefix and allow=false, disallows everything
2447    /// by default).
2448    #[derive(Clone, PartialEq, ::prost::Message)]
2449    pub struct PrintFilter {
2450        #[prost(message, repeated, tag="1")]
2451        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
2452    }
2453    /// Nested message and enum types in `PrintFilter`.
2454    pub mod print_filter {
2455        #[derive(Clone, PartialEq, ::prost::Message)]
2456        pub struct Rule {
2457            #[prost(bool, optional, tag="2")]
2458            pub allow: ::core::option::Option<bool>,
2459            #[prost(oneof="rule::Match", tags="1, 3")]
2460            pub r#match: ::core::option::Option<rule::Match>,
2461        }
2462        /// Nested message and enum types in `Rule`.
2463        pub mod rule {
2464            /// Matches an atrace message of the form:
2465            /// <type>|pid|<prefix>...
2466            #[derive(Clone, PartialEq, ::prost::Message)]
2467            pub struct AtraceMessage {
2468                #[prost(string, optional, tag="1")]
2469                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
2470                #[prost(string, optional, tag="2")]
2471                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
2472            }
2473            #[derive(Clone, PartialEq, ::prost::Oneof)]
2474            pub enum Match {
2475                /// This rule matches if `prefix` matches exactly with the beginning of
2476                /// the "ftrace/print" "buf" field.
2477                #[prost(string, tag="1")]
2478                Prefix(::prost::alloc::string::String),
2479                /// This rule matches if the "buf" field contains an atrace-style print
2480                /// message as specified in `atrace_msg`.
2481                #[prost(message, tag="3")]
2482                AtraceMsg(AtraceMessage),
2483            }
2484        }
2485    }
2486    #[derive(Clone, PartialEq, ::prost::Message)]
2487    pub struct KprobeEvent {
2488        /// Kernel function name to attach to, for example "fuse_file_write_iter"
2489        #[prost(string, optional, tag="1")]
2490        pub probe: ::core::option::Option<::prost::alloc::string::String>,
2491        #[prost(enumeration="kprobe_event::KprobeType", optional, tag="2")]
2492        pub r#type: ::core::option::Option<i32>,
2493    }
2494    /// Nested message and enum types in `KprobeEvent`.
2495    pub mod kprobe_event {
2496        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2497        #[repr(i32)]
2498        pub enum KprobeType {
2499            Unknown = 0,
2500            Kprobe = 1,
2501            Kretprobe = 2,
2502            Both = 3,
2503        }
2504        impl KprobeType {
2505            /// String value of the enum field names used in the ProtoBuf definition.
2506            ///
2507            /// The values are not transformed in any way and thus are considered stable
2508            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2509            pub fn as_str_name(&self) -> &'static str {
2510                match self {
2511                    KprobeType::Unknown => "KPROBE_TYPE_UNKNOWN",
2512                    KprobeType::Kprobe => "KPROBE_TYPE_KPROBE",
2513                    KprobeType::Kretprobe => "KPROBE_TYPE_KRETPROBE",
2514                    KprobeType::Both => "KPROBE_TYPE_BOTH",
2515                }
2516            }
2517        }
2518    }
2519    /// Tracefs options to set directly in the tracefs instance. This is a very
2520    /// niche feature since almost all of the options deal with formatting textual
2521    /// output (the /trace file), which perfetto doesn't use.
2522    ///
2523    /// The options with a known use-case:
2524    /// * event-fork: when using `tids_to_trace` above, the kernel will
2525    ///    automatically add newly spawned descendant threads to the set of TIDs.
2526    ///
2527    /// Full list of options is available at
2528    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
2529    ///
2530    /// Note: this is an exclusive feature, see:
2531    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2532    ///
2533    /// Introduced in: perfetto v52.
2534    /// Supported on: Android 25Q3+.
2535    #[derive(Clone, PartialEq, ::prost::Message)]
2536    pub struct TracefsOption {
2537        /// The name of the tracefs option as found in tracefs/trace_options (without
2538        /// the "no" prefix).
2539        #[prost(string, optional, tag="1")]
2540        pub name: ::core::option::Option<::prost::alloc::string::String>,
2541        #[prost(enumeration="tracefs_option::State", optional, tag="2")]
2542        pub state: ::core::option::Option<i32>,
2543    }
2544    /// Nested message and enum types in `TracefsOption`.
2545    pub mod tracefs_option {
2546        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2547        #[repr(i32)]
2548        pub enum State {
2549            Unknown = 0,
2550            Enabled = 1,
2551            Disabled = 2,
2552        }
2553        impl State {
2554            /// String value of the enum field names used in the ProtoBuf definition.
2555            ///
2556            /// The values are not transformed in any way and thus are considered stable
2557            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2558            pub fn as_str_name(&self) -> &'static str {
2559                match self {
2560                    State::Unknown => "STATE_UNKNOWN",
2561                    State::Enabled => "STATE_ENABLED",
2562                    State::Disabled => "STATE_DISABLED",
2563                }
2564            }
2565        }
2566    }
2567    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
2568    /// should keep the symbol map in memory (and reuse it for future tracing
2569    /// sessions) or clear it (saving memory) and re-create it on each tracing
2570    /// session (wasting cpu and wall time).
2571    /// The tradeoff is roughly:
2572    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
2573    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
2574    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
2575    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2576    #[repr(i32)]
2577    pub enum KsymsMemPolicy {
2578        KsymsUnspecified = 0,
2579        KsymsCleanupOnStop = 1,
2580        KsymsRetain = 2,
2581    }
2582    impl KsymsMemPolicy {
2583        /// String value of the enum field names used in the ProtoBuf definition.
2584        ///
2585        /// The values are not transformed in any way and thus are considered stable
2586        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2587        pub fn as_str_name(&self) -> &'static str {
2588            match self {
2589                KsymsMemPolicy::KsymsUnspecified => "KSYMS_UNSPECIFIED",
2590                KsymsMemPolicy::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
2591                KsymsMemPolicy::KsymsRetain => "KSYMS_RETAIN",
2592            }
2593        }
2594    }
2595}
2596#[derive(Clone, PartialEq, ::prost::Message)]
2597pub struct FrozenFtraceConfig {
2598    /// The instance name which stores the previous boot ftrace data. Required.
2599    #[prost(string, optional, tag="1")]
2600    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
2601}
2602#[derive(Clone, PartialEq, ::prost::Message)]
2603pub struct GpuCounterConfig {
2604    /// Desired sampling interval for counters.
2605    #[prost(uint64, optional, tag="1")]
2606    pub counter_period_ns: ::core::option::Option<u64>,
2607    // Selects which counters to sample. Use either counter_ids or counter_names,
2608    // not both. Counter IDs and names correspond to the ones described in
2609    // GpuCounterSpec in the data source descriptor.
2610
2611    /// List of counter IDs to be sampled.
2612    #[prost(uint32, repeated, packed="false", tag="2")]
2613    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
2614    /// List of counter names to be sampled. Requires producer support; check
2615    /// GpuCounterDescriptor.supports_counter_names in the data source descriptor.
2616    /// Glob patterns may be used to match multiple counters by name; check
2617    /// GpuCounterDescriptor.supports_counter_name_globs for support.
2618    #[prost(string, repeated, tag="6")]
2619    pub counter_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2620    /// Fix gpu clock rate during trace session.
2621    #[prost(bool, optional, tag="4")]
2622    pub fix_gpu_clock: ::core::option::Option<bool>,
2623    /// Sample counters by instrumenting command buffers.
2624    #[prost(oneof="gpu_counter_config::InstrumentedSamplingMode", tags="3, 5")]
2625    pub instrumented_sampling_mode: ::core::option::Option<gpu_counter_config::InstrumentedSamplingMode>,
2626}
2627/// Nested message and enum types in `GpuCounterConfig`.
2628pub mod gpu_counter_config {
2629    /// Configuration for sampling counters by instrumenting command buffers.
2630    ///
2631    /// When instrumented_sampling_config is used (instead of the
2632    /// instrumented_sampling bool), the following steps determine whether
2633    /// instrumented counters are enabled for a given GPU activity:
2634    ///
2635    /// 1. Activity name filtering: If activity_name_filters is non-empty, the
2636    ///     activity must match at least one filter. If empty, all activities
2637    ///     pass this step.
2638    /// 2. TX range filtering: If activity_tx_include_globs is non-empty, the
2639    ///     activity must fall within a matching TX range. Activities in TX
2640    ///     ranges matching activity_tx_exclude_globs are excluded (excludes
2641    ///     take precedence over includes). If both are empty, all activities
2642    ///     pass this step.
2643    /// 3. Range-based sampling: If activity_ranges is non-empty, only
2644    ///     activities within the specified skip/count ranges are instrumented.
2645    ///     If empty, all activities that passed the previous steps are
2646    ///     instrumented.
2647    #[derive(Clone, PartialEq, ::prost::Message)]
2648    pub struct InstrumentedSamplingConfig {
2649        /// GPU activity name filters. An activity matches if it matches any filter.
2650        #[prost(message, repeated, tag="3")]
2651        pub activity_name_filters: ::prost::alloc::vec::Vec<instrumented_sampling_config::ActivityNameFilter>,
2652        /// Glob patterns to use for including GPU activities in TX ranges. TX
2653        /// ranges are in-process annotations that mark different sections of GPU
2654        /// work (e.g. NVTX ranges for CUDA). TX ranges can be nested, and an
2655        /// activity is included if any range in its nesting hierarchy matches.
2656        /// Only activities that fall within a matching TX range will be
2657        /// instrumented.
2658        #[prost(string, repeated, tag="6")]
2659        pub activity_tx_include_globs: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2660        /// Glob patterns to use for excluding GPU activities from TX ranges.
2661        /// TX ranges can be nested, and an activity is excluded if any range
2662        /// in its nesting hierarchy matches. Excludes take precedence over
2663        /// includes.
2664        #[prost(string, repeated, tag="7")]
2665        pub activity_tx_exclude_globs: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2666        /// Ranges of GPU activities to instrument. Applied after activity name
2667        /// and TX range filters. If empty, all activities that passed the
2668        /// previous filters are instrumented.
2669        #[prost(message, repeated, tag="5")]
2670        pub activity_ranges: ::prost::alloc::vec::Vec<instrumented_sampling_config::ActivityRange>,
2671    }
2672    /// Nested message and enum types in `InstrumentedSamplingConfig`.
2673    pub mod instrumented_sampling_config {
2674        /// Filters GPU activities by name. Each filter specifies a glob pattern
2675        /// and the basis for matching (mangled or demangled kernel name).
2676        #[derive(Clone, PartialEq, ::prost::Message)]
2677        pub struct ActivityNameFilter {
2678            /// required. Glob pattern to use for GPU activity name filtering.
2679            #[prost(string, optional, tag="1")]
2680            pub name_glob: ::core::option::Option<::prost::alloc::string::String>,
2681            /// Basis for name filtering. Defaults to MANGLED_KERNEL_NAME if not
2682            /// specified.
2683            #[prost(enumeration="activity_name_filter::NameBase", optional, tag="2")]
2684            pub name_base: ::core::option::Option<i32>,
2685        }
2686        /// Nested message and enum types in `ActivityNameFilter`.
2687        pub mod activity_name_filter {
2688            #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2689            #[repr(i32)]
2690            pub enum NameBase {
2691                /// Match against the mangled (compiler-encoded) kernel name.
2692                /// Example: for a kernel whose demangled name is
2693                /// "matmul(float*,int,int)", the mangled name might be
2694                /// "_Z6matmulPfii". The glob pattern is matched against this
2695                /// mangled form.
2696                MangledKernelName = 0,
2697                /// Match against the fully demangled kernel name, including
2698                /// parameters, templates, and qualifiers.
2699                /// Example: "matmul(float*,int,int)". The glob pattern is
2700                /// matched against this full demangled form.
2701                DemangledKernelName = 1,
2702                /// Match against only the function name portion of the
2703                /// demangled kernel name, without parameters, templates,
2704                /// return types, or namespaces.
2705                /// Example: "matmul". The glob pattern is matched against
2706                /// just the bare function name.
2707                FunctionName = 2,
2708            }
2709            impl NameBase {
2710                /// String value of the enum field names used in the ProtoBuf definition.
2711                ///
2712                /// The values are not transformed in any way and thus are considered stable
2713                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2714                pub fn as_str_name(&self) -> &'static str {
2715                    match self {
2716                        NameBase::MangledKernelName => "MANGLED_KERNEL_NAME",
2717                        NameBase::DemangledKernelName => "DEMANGLED_KERNEL_NAME",
2718                        NameBase::FunctionName => "FUNCTION_NAME",
2719                    }
2720                }
2721            }
2722        }
2723        /// Defines a range of GPU activities to instrument.
2724        #[derive(Clone, PartialEq, ::prost::Message)]
2725        pub struct ActivityRange {
2726            /// Number of GPU activities to skip before starting to instrument
2727            /// command buffers. Defaults to 0 if not specified.
2728            #[prost(uint32, optional, tag="1")]
2729            pub skip: ::core::option::Option<u32>,
2730            /// Limit for the number of GPU activities to sample counters for by
2731            /// instrumenting command buffers. Defaults to UINT32_MAX (all
2732            /// remaining activities) if not specified.
2733            #[prost(uint32, optional, tag="2")]
2734            pub count: ::core::option::Option<u32>,
2735        }
2736    }
2737    /// Sample counters by instrumenting command buffers.
2738    #[derive(Clone, PartialEq, ::prost::Oneof)]
2739    pub enum InstrumentedSamplingMode {
2740        #[prost(bool, tag="3")]
2741        InstrumentedSampling(bool),
2742        #[prost(message, tag="5")]
2743        InstrumentedSamplingConfig(InstrumentedSamplingConfig),
2744    }
2745}
2746#[derive(Clone, PartialEq, ::prost::Message)]
2747pub struct VulkanMemoryConfig {
2748    /// Tracking driver memory usage events
2749    #[prost(bool, optional, tag="1")]
2750    pub track_driver_memory_usage: ::core::option::Option<bool>,
2751    /// Tracking device memory usage events
2752    #[prost(bool, optional, tag="2")]
2753    pub track_device_memory_usage: ::core::option::Option<bool>,
2754}
2755#[derive(Clone, PartialEq, ::prost::Message)]
2756pub struct GpuRenderStagesConfig {
2757    /// Enable to separate the color and depth/stencil load and store stages
2758    /// into a separate stages. If disabled, the depth/stencil load and store
2759    /// stages will be combined.  Disabled by default. This option has no effect if
2760    /// Low Overhead mode is enabled.
2761    #[prost(bool, optional, tag="1")]
2762    pub full_loadstore: ::core::option::Option<bool>,
2763    /// Use the low overhead mode for traces. In this mode render stages are
2764    /// combined into a single workload stage. This provides less granular data but
2765    /// induces minimal GPU overhead. Disabled by default.
2766    #[prost(bool, optional, tag="2")]
2767    pub low_overhead: ::core::option::Option<bool>,
2768    /// Trace metrics to capture for each render stage
2769    #[prost(string, repeated, tag="3")]
2770    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2771}
2772/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
2773/// systems.
2774#[derive(Clone, PartialEq, ::prost::Message)]
2775pub struct InodeFileConfig {
2776    /// How long to pause between batches.
2777    #[prost(uint32, optional, tag="1")]
2778    pub scan_interval_ms: ::core::option::Option<u32>,
2779    /// How long to wait before the first scan in order to accumulate inodes.
2780    #[prost(uint32, optional, tag="2")]
2781    pub scan_delay_ms: ::core::option::Option<u32>,
2782    /// How many inodes to scan in one batch.
2783    #[prost(uint32, optional, tag="3")]
2784    pub scan_batch_size: ::core::option::Option<u32>,
2785    /// Do not scan for inodes not found in the static map.
2786    #[prost(bool, optional, tag="4")]
2787    pub do_not_scan: ::core::option::Option<bool>,
2788    /// If non-empty, only scan inodes corresponding to block devices named in
2789    /// this list.
2790    #[prost(string, repeated, tag="5")]
2791    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2792    /// When encountering an inode belonging to a block device corresponding
2793    /// to one of the mount points in this map, scan its scan_roots instead.
2794    #[prost(message, repeated, tag="6")]
2795    pub mount_point_mapping: ::prost::alloc::vec::Vec<inode_file_config::MountPointMappingEntry>,
2796}
2797/// Nested message and enum types in `InodeFileConfig`.
2798pub mod inode_file_config {
2799    #[derive(Clone, PartialEq, ::prost::Message)]
2800    pub struct MountPointMappingEntry {
2801        #[prost(string, optional, tag="1")]
2802        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
2803        #[prost(string, repeated, tag="2")]
2804        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2805    }
2806}
2807#[derive(Clone, PartialEq, ::prost::Message)]
2808pub struct ConsoleConfig {
2809    #[prost(enumeration="console_config::Output", optional, tag="1")]
2810    pub output: ::core::option::Option<i32>,
2811    #[prost(bool, optional, tag="2")]
2812    pub enable_colors: ::core::option::Option<bool>,
2813}
2814/// Nested message and enum types in `ConsoleConfig`.
2815pub mod console_config {
2816    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2817    #[repr(i32)]
2818    pub enum Output {
2819        Unspecified = 0,
2820        Stdout = 1,
2821        Stderr = 2,
2822    }
2823    impl Output {
2824        /// String value of the enum field names used in the ProtoBuf definition.
2825        ///
2826        /// The values are not transformed in any way and thus are considered stable
2827        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2828        pub fn as_str_name(&self) -> &'static str {
2829            match self {
2830                Output::Unspecified => "OUTPUT_UNSPECIFIED",
2831                Output::Stdout => "OUTPUT_STDOUT",
2832                Output::Stderr => "OUTPUT_STDERR",
2833            }
2834        }
2835    }
2836}
2837/// Configuration for trace packet interception. Used for diverting trace data to
2838/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
2839/// Perfetto SDK.
2840#[derive(Clone, PartialEq, ::prost::Message)]
2841pub struct InterceptorConfig {
2842    /// Matches the name given to RegisterInterceptor().
2843    #[prost(string, optional, tag="1")]
2844    pub name: ::core::option::Option<::prost::alloc::string::String>,
2845    #[prost(message, optional, tag="100")]
2846    pub console_config: ::core::option::Option<ConsoleConfig>,
2847}
2848#[derive(Clone, PartialEq, ::prost::Message)]
2849pub struct AndroidPowerConfig {
2850    #[prost(uint32, optional, tag="1")]
2851    pub battery_poll_ms: ::core::option::Option<u32>,
2852    #[prost(enumeration="android_power_config::BatteryCounters", repeated, packed="false", tag="2")]
2853    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
2854    /// Where available enables per-power-rail measurements.
2855    #[prost(bool, optional, tag="3")]
2856    pub collect_power_rails: ::core::option::Option<bool>,
2857    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
2858    /// Available from Android S.
2859    #[prost(bool, optional, tag="4")]
2860    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
2861    /// Provides a breakdown of time in state for various subsystems.
2862    /// Available from Android U.
2863    #[prost(bool, optional, tag="5")]
2864    pub collect_entity_state_residency: ::core::option::Option<bool>,
2865}
2866/// Nested message and enum types in `AndroidPowerConfig`.
2867pub mod android_power_config {
2868    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2869    #[repr(i32)]
2870    pub enum BatteryCounters {
2871        BatteryCounterUnspecified = 0,
2872        /// Coulomb counter.
2873        BatteryCounterCharge = 1,
2874        /// Charge (%).
2875        BatteryCounterCapacityPercent = 2,
2876        /// Instantaneous current.
2877        BatteryCounterCurrent = 3,
2878        /// Avg current.
2879        BatteryCounterCurrentAvg = 4,
2880        /// Instantaneous voltage.
2881        BatteryCounterVoltage = 5,
2882    }
2883    impl BatteryCounters {
2884        /// String value of the enum field names used in the ProtoBuf definition.
2885        ///
2886        /// The values are not transformed in any way and thus are considered stable
2887        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2888        pub fn as_str_name(&self) -> &'static str {
2889            match self {
2890                BatteryCounters::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
2891                BatteryCounters::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
2892                BatteryCounters::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
2893                BatteryCounters::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
2894                BatteryCounters::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
2895                BatteryCounters::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
2896            }
2897        }
2898    }
2899}
2900#[derive(Clone, PartialEq, ::prost::Message)]
2901pub struct ProtoVmConfig {
2902    #[prost(uint32, optional, tag="1")]
2903    pub memory_limit_kb: ::core::option::Option<u32>,
2904}
2905/// This enum is obtained by post-processing
2906/// AOSP/frameworks/proto_logging/stats/atoms.proto through
2907/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
2908/// enum value for each proto field defined in the upstream atoms.proto.
2909#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2910#[repr(i32)]
2911pub enum AtomId {
2912    AtomUnspecified = 0,
2913    AtomBleScanStateChanged = 2,
2914    AtomProcessStateChanged = 3,
2915    AtomBleScanResultReceived = 4,
2916    AtomSensorStateChanged = 5,
2917    AtomGpsScanStateChanged = 6,
2918    AtomSyncStateChanged = 7,
2919    AtomScheduledJobStateChanged = 8,
2920    AtomScreenBrightnessChanged = 9,
2921    AtomWakelockStateChanged = 10,
2922    AtomLongPartialWakelockStateChanged = 11,
2923    AtomMobileRadioPowerStateChanged = 12,
2924    AtomWifiRadioPowerStateChanged = 13,
2925    AtomActivityManagerSleepStateChanged = 14,
2926    AtomMemoryFactorStateChanged = 15,
2927    AtomExcessiveCpuUsageReported = 16,
2928    AtomCachedKillReported = 17,
2929    AtomProcessMemoryStatReported = 18,
2930    AtomLauncherEvent = 19,
2931    AtomBatterySaverModeStateChanged = 20,
2932    AtomDeviceIdleModeStateChanged = 21,
2933    AtomDeviceIdlingModeStateChanged = 22,
2934    AtomAudioStateChanged = 23,
2935    AtomMediaCodecStateChanged = 24,
2936    AtomCameraStateChanged = 25,
2937    AtomFlashlightStateChanged = 26,
2938    AtomUidProcessStateChanged = 27,
2939    AtomProcessLifeCycleStateChanged = 28,
2940    AtomScreenStateChanged = 29,
2941    AtomBatteryLevelChanged = 30,
2942    AtomChargingStateChanged = 31,
2943    AtomPluggedStateChanged = 32,
2944    AtomInteractiveStateChanged = 33,
2945    AtomTouchEventReported = 34,
2946    AtomWakeupAlarmOccurred = 35,
2947    AtomKernelWakeupReported = 36,
2948    AtomWifiLockStateChanged = 37,
2949    AtomWifiSignalStrengthChanged = 38,
2950    AtomWifiScanStateChanged = 39,
2951    AtomPhoneSignalStrengthChanged = 40,
2952    AtomSettingChanged = 41,
2953    AtomActivityForegroundStateChanged = 42,
2954    AtomIsolatedUidChanged = 43,
2955    AtomPacketWakeupOccurred = 44,
2956    AtomWallClockTimeShifted = 45,
2957    AtomAnomalyDetected = 46,
2958    AtomAppBreadcrumbReported = 47,
2959    AtomAppStartOccurred = 48,
2960    AtomAppStartCanceled = 49,
2961    AtomAppStartFullyDrawn = 50,
2962    AtomLmkKillOccurred = 51,
2963    AtomPictureInPictureStateChanged = 52,
2964    AtomWifiMulticastLockStateChanged = 53,
2965    AtomAppStartMemoryStateCaptured = 55,
2966    AtomShutdownSequenceReported = 56,
2967    AtomBootSequenceReported = 57,
2968    AtomOverlayStateChanged = 59,
2969    AtomForegroundServiceStateChanged = 60,
2970    AtomCallStateChanged = 61,
2971    AtomKeyguardStateChanged = 62,
2972    AtomKeyguardBouncerStateChanged = 63,
2973    AtomKeyguardBouncerPasswordEntered = 64,
2974    AtomAppDied = 65,
2975    AtomResourceConfigurationChanged = 66,
2976    AtomBluetoothEnabledStateChanged = 67,
2977    AtomBluetoothConnectionStateChanged = 68,
2978    AtomGpsSignalQualityChanged = 69,
2979    AtomUsbConnectorStateChanged = 70,
2980    AtomSpeakerImpedanceReported = 71,
2981    AtomHardwareFailed = 72,
2982    AtomPhysicalDropDetected = 73,
2983    AtomChargeCyclesReported = 74,
2984    AtomMobileConnectionStateChanged = 75,
2985    AtomMobileRadioTechnologyChanged = 76,
2986    AtomUsbDeviceAttached = 77,
2987    AtomAppCrashOccurred = 78,
2988    AtomAnrOccurred = 79,
2989    AtomWtfOccurred = 80,
2990    AtomLowMemReported = 81,
2991    AtomGenericAtom = 82,
2992    AtomVibratorStateChanged = 84,
2993    AtomDeferredJobStatsReported = 85,
2994    AtomThermalThrottling = 86,
2995    AtomBiometricAcquired = 87,
2996    AtomBiometricAuthenticated = 88,
2997    AtomBiometricErrorOccurred = 89,
2998    AtomUiEventReported = 90,
2999    AtomBatteryHealthSnapshot = 91,
3000    AtomSlowIo = 92,
3001    AtomBatteryCausedShutdown = 93,
3002    AtomPhoneServiceStateChanged = 94,
3003    AtomPhoneStateChanged = 95,
3004    AtomUserRestrictionChanged = 96,
3005    AtomSettingsUiChanged = 97,
3006    AtomConnectivityStateChanged = 98,
3007    AtomServiceStateChanged = 99,
3008    AtomServiceLaunchReported = 100,
3009    AtomFlagFlipUpdateOccurred = 101,
3010    AtomBinaryPushStateChanged = 102,
3011    AtomDevicePolicyEvent = 103,
3012    AtomDocsUiFileOpCanceled = 104,
3013    AtomDocsUiFileOpCopyMoveModeReported = 105,
3014    AtomDocsUiFileOpFailure = 106,
3015    AtomDocsUiProviderFileOp = 107,
3016    AtomDocsUiInvalidScopedAccessRequest = 108,
3017    AtomDocsUiLaunchReported = 109,
3018    AtomDocsUiRootVisited = 110,
3019    AtomDocsUiStartupMs = 111,
3020    AtomDocsUiUserActionReported = 112,
3021    AtomWifiEnabledStateChanged = 113,
3022    AtomWifiRunningStateChanged = 114,
3023    AtomAppCompacted = 115,
3024    AtomNetworkDnsEventReported = 116,
3025    AtomDocsUiPickerLaunchedFromReported = 117,
3026    AtomDocsUiPickResultReported = 118,
3027    AtomDocsUiSearchModeReported = 119,
3028    AtomDocsUiSearchTypeReported = 120,
3029    AtomDataStallEvent = 121,
3030    AtomRescuePartyResetReported = 122,
3031    AtomSignedConfigReported = 123,
3032    AtomGnssNiEventReported = 124,
3033    AtomBluetoothLinkLayerConnectionEvent = 125,
3034    AtomBluetoothAclConnectionStateChanged = 126,
3035    AtomBluetoothScoConnectionStateChanged = 127,
3036    AtomAppDowngraded = 128,
3037    AtomAppOptimizedAfterDowngraded = 129,
3038    AtomLowStorageStateChanged = 130,
3039    AtomGnssNfwNotificationReported = 131,
3040    AtomGnssConfigurationReported = 132,
3041    AtomUsbPortOverheatEventReported = 133,
3042    AtomNfcErrorOccurred = 134,
3043    AtomNfcStateChanged = 135,
3044    AtomNfcBeamOccurred = 136,
3045    AtomNfcCardemulationOccurred = 137,
3046    AtomNfcTagOccurred = 138,
3047    AtomNfcHceTransactionOccurred = 139,
3048    AtomSeStateChanged = 140,
3049    AtomSeOmapiReported = 141,
3050    AtomBroadcastDispatchLatencyReported = 142,
3051    AtomAttentionManagerServiceResultReported = 143,
3052    AtomAdbConnectionChanged = 144,
3053    AtomSpeechDspStatReported = 145,
3054    AtomUsbContaminantReported = 146,
3055    AtomWatchdogRollbackOccurred = 147,
3056    AtomBiometricSystemHealthIssueDetected = 148,
3057    AtomBubbleUiChanged = 149,
3058    AtomScheduledJobConstraintChanged = 150,
3059    AtomBluetoothActiveDeviceChanged = 151,
3060    AtomBluetoothA2dpPlaybackStateChanged = 152,
3061    AtomBluetoothA2dpCodecConfigChanged = 153,
3062    AtomBluetoothA2dpCodecCapabilityChanged = 154,
3063    AtomBluetoothA2dpAudioUnderrunReported = 155,
3064    AtomBluetoothA2dpAudioOverrunReported = 156,
3065    AtomBluetoothDeviceRssiReported = 157,
3066    AtomBluetoothDeviceFailedContactCounterReported = 158,
3067    AtomBluetoothDeviceTxPowerLevelReported = 159,
3068    AtomBluetoothHciTimeoutReported = 160,
3069    AtomBluetoothQualityReportReported = 161,
3070    AtomBluetoothDeviceInfoReported = 162,
3071    AtomBluetoothRemoteVersionInfoReported = 163,
3072    AtomBluetoothSdpAttributeReported = 164,
3073    AtomBluetoothBondStateChanged = 165,
3074    AtomBluetoothClassicPairingEventReported = 166,
3075    AtomBluetoothSmpPairingEventReported = 167,
3076    AtomScreenTimeoutExtensionReported = 168,
3077    AtomProcessStartTime = 169,
3078    AtomPermissionGrantRequestResultReported = 170,
3079    AtomBluetoothSocketConnectionStateChanged = 171,
3080    AtomDeviceIdentifierAccessDenied = 172,
3081    AtomBubbleDeveloperErrorReported = 173,
3082    AtomAssistGestureStageReported = 174,
3083    AtomAssistGestureFeedbackReported = 175,
3084    AtomAssistGestureProgressReported = 176,
3085    AtomTouchGestureClassified = 177,
3086    AtomHiddenApiUsed = 178,
3087    AtomStyleUiChanged = 179,
3088    AtomPrivacyIndicatorsInteracted = 180,
3089    AtomAppInstallOnExternalStorageReported = 181,
3090    AtomNetworkStackReported = 182,
3091    AtomAppMovedStorageReported = 183,
3092    AtomBiometricEnrolled = 184,
3093    AtomSystemServerWatchdogOccurred = 185,
3094    AtomTombStoneOccurred = 186,
3095    AtomBluetoothClassOfDeviceReported = 187,
3096    AtomIntelligenceEventReported = 188,
3097    AtomThermalThrottlingSeverityStateChanged = 189,
3098    AtomRoleRequestResultReported = 190,
3099    AtomMediametricsAudiopolicyReported = 191,
3100    AtomMediametricsAudiorecordReported = 192,
3101    AtomMediametricsAudiothreadReported = 193,
3102    AtomMediametricsAudiotrackReported = 194,
3103    AtomMediametricsCodecReported = 195,
3104    AtomMediametricsDrmWidevineReported = 196,
3105    AtomMediametricsExtractorReported = 197,
3106    AtomMediametricsMediadrmReported = 198,
3107    AtomMediametricsNuplayerReported = 199,
3108    AtomMediametricsRecorderReported = 200,
3109    AtomMediametricsDrmmanagerReported = 201,
3110    AtomCarPowerStateChanged = 203,
3111    AtomGarageModeInfo = 204,
3112    AtomTestAtomReported = 205,
3113    AtomContentCaptureCallerMismatchReported = 206,
3114    AtomContentCaptureServiceEvents = 207,
3115    AtomContentCaptureSessionEvents = 208,
3116    AtomContentCaptureFlushed = 209,
3117    AtomLocationManagerApiUsageReported = 210,
3118    AtomReviewPermissionsFragmentResultReported = 211,
3119    AtomRuntimePermissionsUpgradeResult = 212,
3120    AtomGrantPermissionsActivityButtonActions = 213,
3121    AtomLocationAccessCheckNotificationAction = 214,
3122    AtomAppPermissionFragmentActionReported = 215,
3123    AtomAppPermissionFragmentViewed = 216,
3124    AtomAppPermissionsFragmentViewed = 217,
3125    AtomPermissionAppsFragmentViewed = 218,
3126    AtomTextSelectionEvent = 219,
3127    AtomTextLinkifyEvent = 220,
3128    AtomConversationActionsEvent = 221,
3129    AtomLanguageDetectionEvent = 222,
3130    AtomExclusionRectStateChanged = 223,
3131    AtomBackGestureReportedReported = 224,
3132    AtomUpdateEngineUpdateAttemptReported = 225,
3133    AtomUpdateEngineSuccessfulUpdateReported = 226,
3134    AtomCameraActionEvent = 227,
3135    AtomAppCompatibilityChangeReported = 228,
3136    AtomPerfettoUploaded = 229,
3137    AtomVmsClientConnectionStateChanged = 230,
3138    AtomMediaProviderScanOccurred = 233,
3139    AtomMediaContentDeleted = 234,
3140    AtomMediaProviderPermissionRequested = 235,
3141    AtomMediaProviderSchemaChanged = 236,
3142    AtomMediaProviderIdleMaintenanceFinished = 237,
3143    AtomRebootEscrowRecoveryReported = 238,
3144    AtomBootTimeEventDurationReported = 239,
3145    AtomBootTimeEventElapsedTimeReported = 240,
3146    AtomBootTimeEventUtcTimeReported = 241,
3147    AtomBootTimeEventErrorCodeReported = 242,
3148    AtomUserspaceRebootReported = 243,
3149    AtomNotificationReported = 244,
3150    AtomNotificationPanelReported = 245,
3151    AtomNotificationChannelModified = 246,
3152    AtomIntegrityCheckResultReported = 247,
3153    AtomIntegrityRulesPushed = 248,
3154    AtomCbMessageReported = 249,
3155    AtomCbMessageError = 250,
3156    AtomWifiHealthStatReported = 251,
3157    AtomWifiFailureStatReported = 252,
3158    AtomWifiConnectionResultReported = 253,
3159    AtomAppFreezeChanged = 254,
3160    AtomSnapshotMergeReported = 255,
3161    AtomForegroundServiceAppOpSessionEnded = 256,
3162    AtomDisplayJankReported = 257,
3163    AtomAppStandbyBucketChanged = 258,
3164    AtomSharesheetStarted = 259,
3165    AtomRankingSelected = 260,
3166    AtomTvsettingsUiInteracted = 261,
3167    AtomLauncherSnapshot = 262,
3168    AtomPackageInstallerV2Reported = 263,
3169    AtomUserLifecycleJourneyReported = 264,
3170    AtomUserLifecycleEventOccurred = 265,
3171    AtomAccessibilityShortcutReported = 266,
3172    AtomAccessibilityServiceReported = 267,
3173    AtomDocsUiDragAndDropReported = 268,
3174    AtomAppUsageEventOccurred = 269,
3175    AtomAutoRevokeNotificationClicked = 270,
3176    AtomAutoRevokeFragmentAppViewed = 271,
3177    AtomAutoRevokedAppInteraction = 272,
3178    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
3179    AtomEvsUsageStatsReported = 274,
3180    AtomAudioPowerUsageDataReported = 275,
3181    AtomTvTunerStateChanged = 276,
3182    AtomMediaoutputOpSwitchReported = 277,
3183    AtomCbMessageFiltered = 278,
3184    AtomTvTunerDvrStatus = 279,
3185    AtomTvCasSessionOpenStatus = 280,
3186    AtomAssistantInvocationReported = 281,
3187    AtomDisplayWakeReported = 282,
3188    AtomCarUserHalModifyUserRequestReported = 283,
3189    AtomCarUserHalModifyUserResponseReported = 284,
3190    AtomCarUserHalPostSwitchResponseReported = 285,
3191    AtomCarUserHalInitialUserInfoRequestReported = 286,
3192    AtomCarUserHalInitialUserInfoResponseReported = 287,
3193    AtomCarUserHalUserAssociationRequestReported = 288,
3194    AtomCarUserHalSetUserAssociationResponseReported = 289,
3195    AtomNetworkIpProvisioningReported = 290,
3196    AtomNetworkDhcpRenewReported = 291,
3197    AtomNetworkValidationReported = 292,
3198    AtomNetworkStackQuirkReported = 293,
3199    AtomMediametricsAudiorecorddeviceusageReported = 294,
3200    AtomMediametricsAudiothreaddeviceusageReported = 295,
3201    AtomMediametricsAudiotrackdeviceusageReported = 296,
3202    AtomMediametricsAudiodeviceconnectionReported = 297,
3203    AtomBlobCommitted = 298,
3204    AtomBlobLeased = 299,
3205    AtomBlobOpened = 300,
3206    AtomContactsProviderStatusReported = 301,
3207    AtomKeystoreKeyEventReported = 302,
3208    AtomNetworkTetheringReported = 303,
3209    AtomImeTouchReported = 304,
3210    AtomUiInteractionFrameInfoReported = 305,
3211    AtomUiActionLatencyReported = 306,
3212    AtomWifiDisconnectReported = 307,
3213    AtomWifiConnectionStateChanged = 308,
3214    AtomHdmiCecActiveSourceChanged = 309,
3215    AtomHdmiCecMessageReported = 310,
3216    AtomAirplaneMode = 311,
3217    AtomModemRestart = 312,
3218    AtomCarrierIdMismatchReported = 313,
3219    AtomCarrierIdTableUpdated = 314,
3220    AtomDataStallRecoveryReported = 315,
3221    AtomMediametricsMediaparserReported = 316,
3222    AtomTlsHandshakeReported = 317,
3223    AtomTextClassifierApiUsageReported = 318,
3224    AtomCarWatchdogKillStatsReported = 319,
3225    AtomMediametricsPlaybackReported = 320,
3226    AtomMediaNetworkInfoChanged = 321,
3227    AtomMediaPlaybackStateChanged = 322,
3228    AtomMediaPlaybackErrorReported = 323,
3229    AtomMediaPlaybackTrackChanged = 324,
3230    AtomWifiScanReported = 325,
3231    AtomWifiPnoScanReported = 326,
3232    AtomTifTuneChanged = 327,
3233    AtomAutoRotateReported = 328,
3234    AtomPerfettoTrigger = 329,
3235    AtomTranscodingData = 330,
3236    AtomImsServiceEntitlementUpdated = 331,
3237    AtomDeviceRotated = 333,
3238    AtomSimSpecificSettingsRestored = 334,
3239    AtomTextClassifierDownloadReported = 335,
3240    AtomPinStorageEvent = 336,
3241    AtomFaceDownReported = 337,
3242    AtomBluetoothHalCrashReasonReported = 338,
3243    AtomRebootEscrowPreparationReported = 339,
3244    AtomRebootEscrowLskfCaptureReported = 340,
3245    AtomRebootEscrowRebootReported = 341,
3246    AtomBinderLatencyReported = 342,
3247    AtomMediametricsAaudiostreamReported = 343,
3248    AtomMediaTranscodingSessionEnded = 344,
3249    AtomMagnificationUsageReported = 345,
3250    AtomMagnificationModeWithImeOnReported = 346,
3251    AtomAppSearchCallStatsReported = 347,
3252    AtomAppSearchPutDocumentStatsReported = 348,
3253    AtomDeviceControlChanged = 349,
3254    AtomDeviceStateChanged = 350,
3255    AtomInputdeviceRegistered = 351,
3256    AtomSmartspaceCardReported = 352,
3257    AtomAuthPromptAuthenticateInvoked = 353,
3258    AtomAuthManagerCanAuthenticateInvoked = 354,
3259    AtomAuthEnrollActionInvoked = 355,
3260    AtomAuthDeprecatedApiUsed = 356,
3261    AtomUnattendedRebootOccurred = 357,
3262    AtomLongRebootBlockingReported = 358,
3263    AtomLocationTimeZoneProviderStateChanged = 359,
3264    AtomFdtrackEventOccurred = 364,
3265    AtomTimeoutAutoExtendedReported = 365,
3266    AtomAlarmBatchDelivered = 367,
3267    AtomAlarmScheduled = 368,
3268    AtomCarWatchdogIoOveruseStatsReported = 369,
3269    AtomUserLevelHibernationStateChanged = 370,
3270    AtomAppSearchInitializeStatsReported = 371,
3271    AtomAppSearchQueryStatsReported = 372,
3272    AtomAppProcessDied = 373,
3273    AtomNetworkIpReachabilityMonitorReported = 374,
3274    AtomSlowInputEventReported = 375,
3275    AtomAnrOccurredProcessingStarted = 376,
3276    AtomAppSearchRemoveStatsReported = 377,
3277    AtomMediaCodecReported = 378,
3278    AtomPermissionUsageFragmentInteraction = 379,
3279    AtomPermissionDetailsInteraction = 380,
3280    AtomPrivacySensorToggleInteraction = 381,
3281    AtomPrivacyToggleDialogInteraction = 382,
3282    AtomAppSearchOptimizeStatsReported = 383,
3283    AtomNonA11yToolServiceWarningReport = 384,
3284    AtomAppCompatStateChanged = 386,
3285    AtomSizeCompatRestartButtonEventReported = 387,
3286    AtomSplitscreenUiChanged = 388,
3287    AtomNetworkDnsHandshakeReported = 389,
3288    AtomBluetoothCodePathCounter = 390,
3289    AtomBluetoothLeBatchScanReportDelay = 392,
3290    AtomAccessibilityFloatingMenuUiChanged = 393,
3291    AtomNeuralnetworksCompilationCompleted = 394,
3292    AtomNeuralnetworksExecutionCompleted = 395,
3293    AtomNeuralnetworksCompilationFailed = 396,
3294    AtomNeuralnetworksExecutionFailed = 397,
3295    AtomContextHubBooted = 398,
3296    AtomContextHubRestarted = 399,
3297    AtomContextHubLoadedNanoappSnapshotReported = 400,
3298    AtomChreCodeDownloadTransacted = 401,
3299    AtomUwbSessionInited = 402,
3300    AtomUwbSessionClosed = 403,
3301    AtomUwbFirstRangingReceived = 404,
3302    AtomUwbRangingMeasurementReceived = 405,
3303    AtomTextClassifierDownloadWorkScheduled = 406,
3304    AtomTextClassifierDownloadWorkCompleted = 407,
3305    AtomClipboardCleared = 408,
3306    AtomVmCreationRequested = 409,
3307    AtomNearbyDeviceScanStateChanged = 410,
3308    AtomApplicationLocalesChanged = 412,
3309    AtomMediametricsAudiotrackstatusReported = 413,
3310    AtomFoldStateDurationReported = 414,
3311    AtomLocationTimeZoneProviderControllerStateChanged = 415,
3312    AtomDisplayHbmStateChanged = 416,
3313    AtomDisplayHbmBrightnessChanged = 417,
3314    AtomPersistentUriPermissionsFlushed = 418,
3315    AtomEarlyBootCompOsArtifactsCheckReported = 419,
3316    AtomVbmetaDigestReported = 420,
3317    AtomApexInfoGathered = 421,
3318    AtomPvmInfoGathered = 422,
3319    AtomWearSettingsUiInteracted = 423,
3320    AtomTracingServiceReportEvent = 424,
3321    AtomMediametricsAudiorecordstatusReported = 425,
3322    AtomLauncherLatency = 426,
3323    AtomDropboxEntryDropped = 427,
3324    AtomWifiP2pConnectionReported = 428,
3325    AtomGameStateChanged = 429,
3326    AtomHotwordDetectorCreateRequested = 430,
3327    AtomHotwordDetectionServiceInitResultReported = 431,
3328    AtomHotwordDetectionServiceRestarted = 432,
3329    AtomHotwordDetectorKeyphraseTriggered = 433,
3330    AtomHotwordDetectorEvents = 434,
3331    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
3332    AtomContactsIndexerUpdateStatsReported = 440,
3333    AtomAppBackgroundRestrictionsInfo = 441,
3334    AtomMmsSmsProviderGetThreadIdFailed = 442,
3335    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
3336    AtomPermissionReminderNotificationInteracted = 444,
3337    AtomRecentPermissionDecisionsInteracted = 445,
3338    AtomGnssPsdsDownloadReported = 446,
3339    AtomLeAudioConnectionSessionReported = 447,
3340    AtomLeAudioBroadcastSessionReported = 448,
3341    AtomDreamUiEventReported = 449,
3342    AtomTaskManagerEventReported = 450,
3343    AtomCdmAssociationAction = 451,
3344    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
3345    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
3346    AtomAccessibilityTextReadingOptionsChanged = 454,
3347    AtomWifiSetupFailureCrashReported = 455,
3348    AtomUwbDeviceErrorReported = 456,
3349    AtomIsolatedCompilationScheduled = 457,
3350    AtomIsolatedCompilationEnded = 458,
3351    AtomOnsOpportunisticEsimProvisioningComplete = 459,
3352    AtomSystemServerPreWatchdogOccurred = 460,
3353    AtomTelephonyAnomalyDetected = 461,
3354    AtomLetterboxPositionChanged = 462,
3355    AtomRemoteKeyProvisioningAttempt = 463,
3356    AtomRemoteKeyProvisioningNetworkInfo = 464,
3357    AtomRemoteKeyProvisioningTiming = 465,
3358    AtomMediaoutputOpInteractionReport = 466,
3359    AtomSyncExemptionOccurred = 468,
3360    AtomAutofillPresentationEventReported = 469,
3361    AtomDockStateChanged = 470,
3362    AtomSafetySourceStateCollected = 471,
3363    AtomSafetyCenterSystemEventReported = 472,
3364    AtomSafetyCenterInteractionReported = 473,
3365    AtomSettingsProviderSettingChanged = 474,
3366    AtomBroadcastDeliveryEventReported = 475,
3367    AtomServiceRequestEventReported = 476,
3368    AtomProviderAcquisitionEventReported = 477,
3369    AtomBluetoothDeviceNameReported = 478,
3370    AtomCbConfigUpdated = 479,
3371    AtomCbModuleErrorReported = 480,
3372    AtomCbServiceFeatureChanged = 481,
3373    AtomCbReceiverFeatureChanged = 482,
3374    AtomPrivacySignalNotificationInteraction = 484,
3375    AtomPrivacySignalIssueCardInteraction = 485,
3376    AtomPrivacySignalsJobFailure = 486,
3377    AtomVibrationReported = 487,
3378    AtomUwbRangingStart = 489,
3379    AtomAppCompactedV2 = 491,
3380    AtomDisplayBrightnessChanged = 494,
3381    AtomActivityActionBlocked = 495,
3382    AtomNetworkDnsServerSupportReported = 504,
3383    AtomVmBooted = 505,
3384    AtomVmExited = 506,
3385    AtomAmbientBrightnessStatsReported = 507,
3386    AtomMediametricsSpatializercapabilitiesReported = 508,
3387    AtomMediametricsSpatializerdeviceenabledReported = 509,
3388    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
3389    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
3390    AtomHearingAidInfoReported = 513,
3391    AtomDeviceWideJobConstraintChanged = 514,
3392    AtomAmbientModeChanged = 515,
3393    AtomAnrLatencyReported = 516,
3394    AtomResourceApiInfo = 517,
3395    AtomSystemDefaultNetworkChanged = 518,
3396    AtomIwlanSetupDataCallResultReported = 519,
3397    AtomIwlanPdnDisconnectedReasonReported = 520,
3398    AtomAirplaneModeSessionReported = 521,
3399    AtomVmCpuStatusReported = 522,
3400    AtomVmMemStatusReported = 523,
3401    AtomPackageInstallationSessionReported = 524,
3402    AtomDefaultNetworkRematchInfo = 525,
3403    AtomNetworkSelectionPerformance = 526,
3404    AtomNetworkNsdReported = 527,
3405    AtomBluetoothDisconnectionReasonReported = 529,
3406    AtomBluetoothLocalVersionsReported = 530,
3407    AtomBluetoothRemoteSupportedFeaturesReported = 531,
3408    AtomBluetoothLocalSupportedFeaturesReported = 532,
3409    AtomBluetoothGattAppInfo = 533,
3410    AtomBrightnessConfigurationUpdated = 534,
3411    AtomWearMediaOutputSwitcherLaunched = 538,
3412    AtomWearMediaOutputSwitcherFinished = 539,
3413    AtomWearMediaOutputSwitcherConnectionReported = 540,
3414    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
3415    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
3416    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
3417    AtomPackageManagerSnapshotReported = 544,
3418    AtomPackageManagerAppsFilterCacheBuildReported = 545,
3419    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
3420    AtomLauncherImpressionEvent = 547,
3421    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
3422    AtomWsWatchFaceEdited = 551,
3423    AtomWsWatchFaceFavoriteActionReported = 552,
3424    AtomWsWatchFaceSetActionReported = 553,
3425    AtomPackageUninstallationReported = 554,
3426    AtomGameModeChanged = 555,
3427    AtomGameModeConfigurationChanged = 556,
3428    AtomBedtimeModeStateChanged = 557,
3429    AtomNetworkSliceSessionEnded = 558,
3430    AtomNetworkSliceDailyDataUsageReported = 559,
3431    AtomNfcTagTypeOccurred = 560,
3432    AtomNfcAidConflictOccurred = 561,
3433    AtomNfcReaderConflictOccurred = 562,
3434    AtomWsTileListChanged = 563,
3435    AtomGetTypeAccessedWithoutPermission = 564,
3436    AtomMobileBundledAppInfoGathered = 566,
3437    AtomWsWatchFaceComplicationSetChanged = 567,
3438    AtomMediaDrmCreated = 568,
3439    AtomMediaDrmErrored = 569,
3440    AtomMediaDrmSessionOpened = 570,
3441    AtomMediaDrmSessionClosed = 571,
3442    AtomUserSelectedResolution = 572,
3443    AtomUnsafeIntentEventReported = 573,
3444    AtomPerformanceHintSessionReported = 574,
3445    AtomMediametricsMidiDeviceCloseReported = 576,
3446    AtomBiometricTouchReported = 577,
3447    AtomHotwordAudioEgressEventReported = 578,
3448    AtomLocationEnabledStateChanged = 580,
3449    AtomImeRequestFinished = 581,
3450    AtomUsbComplianceWarningsReported = 582,
3451    AtomAppSupportedLocalesChanged = 583,
3452    AtomMediaProviderVolumeRecoveryReported = 586,
3453    AtomBiometricPropertiesCollected = 587,
3454    AtomKernelWakeupAttributed = 588,
3455    AtomScreenStateChangedV2 = 589,
3456    AtomWsBackupActionReported = 590,
3457    AtomWsRestoreActionReported = 591,
3458    AtomDeviceLogAccessEventReported = 592,
3459    AtomMediaSessionUpdated = 594,
3460    AtomWearOobeStateChanged = 595,
3461    AtomWsNotificationUpdated = 596,
3462    AtomNetworkValidationFailureStatsDailyReported = 601,
3463    AtomWsComplicationTapped = 602,
3464    AtomWsNotificationBlocking = 780,
3465    AtomWsNotificationBridgemodeUpdated = 822,
3466    AtomWsNotificationDismissalActioned = 823,
3467    AtomWsNotificationActioned = 824,
3468    AtomWsNotificationLatency = 880,
3469    AtomWifiBytesTransfer = 10000,
3470    AtomWifiBytesTransferByFgBg = 10001,
3471    AtomMobileBytesTransfer = 10002,
3472    AtomMobileBytesTransferByFgBg = 10003,
3473    AtomBluetoothBytesTransfer = 10006,
3474    AtomKernelWakelock = 10004,
3475    AtomSubsystemSleepState = 10005,
3476    AtomCpuTimePerUid = 10009,
3477    AtomCpuTimePerUidFreq = 10010,
3478    AtomWifiActivityInfo = 10011,
3479    AtomModemActivityInfo = 10012,
3480    AtomBluetoothActivityInfo = 10007,
3481    AtomProcessMemoryState = 10013,
3482    AtomSystemElapsedRealtime = 10014,
3483    AtomSystemUptime = 10015,
3484    AtomCpuActiveTime = 10016,
3485    AtomCpuClusterTime = 10017,
3486    AtomDiskSpace = 10018,
3487    AtomRemainingBatteryCapacity = 10019,
3488    AtomFullBatteryCapacity = 10020,
3489    AtomTemperature = 10021,
3490    AtomBinderCalls = 10022,
3491    AtomBinderCallsExceptions = 10023,
3492    AtomLooperStats = 10024,
3493    AtomDiskStats = 10025,
3494    AtomDirectoryUsage = 10026,
3495    AtomAppSize = 10027,
3496    AtomCategorySize = 10028,
3497    AtomProcStats = 10029,
3498    AtomBatteryVoltage = 10030,
3499    AtomNumFingerprintsEnrolled = 10031,
3500    AtomDiskIo = 10032,
3501    AtomPowerProfile = 10033,
3502    AtomProcStatsPkgProc = 10034,
3503    AtomProcessCpuTime = 10035,
3504    AtomCpuTimePerThreadFreq = 10037,
3505    AtomOnDevicePowerMeasurement = 10038,
3506    AtomDeviceCalculatedPowerUse = 10039,
3507    AtomProcessMemoryHighWaterMark = 10042,
3508    AtomBatteryLevel = 10043,
3509    AtomBuildInformation = 10044,
3510    AtomBatteryCycleCount = 10045,
3511    AtomDebugElapsedClock = 10046,
3512    AtomDebugFailingElapsedClock = 10047,
3513    AtomNumFacesEnrolled = 10048,
3514    AtomRoleHolder = 10049,
3515    AtomDangerousPermissionState = 10050,
3516    AtomTrainInfo = 10051,
3517    AtomTimeZoneDataInfo = 10052,
3518    AtomExternalStorageInfo = 10053,
3519    AtomGpuStatsGlobalInfo = 10054,
3520    AtomGpuStatsAppInfo = 10055,
3521    AtomSystemIonHeapSize = 10056,
3522    AtomAppsOnExternalStorageInfo = 10057,
3523    AtomFaceSettings = 10058,
3524    AtomCoolingDevice = 10059,
3525    AtomAppOps = 10060,
3526    AtomProcessSystemIonHeapSize = 10061,
3527    AtomSurfaceflingerStatsGlobalInfo = 10062,
3528    AtomSurfaceflingerStatsLayerInfo = 10063,
3529    AtomProcessMemorySnapshot = 10064,
3530    AtomVmsClientStats = 10065,
3531    AtomNotificationRemoteViews = 10066,
3532    AtomDangerousPermissionStateSampled = 10067,
3533    AtomGraphicsStats = 10068,
3534    AtomRuntimeAppOpAccess = 10069,
3535    AtomIonHeapSize = 10070,
3536    AtomPackageNotificationPreferences = 10071,
3537    AtomPackageNotificationChannelPreferences = 10072,
3538    AtomPackageNotificationChannelGroupPreferences = 10073,
3539    AtomGnssStats = 10074,
3540    AtomAttributedAppOps = 10075,
3541    AtomVoiceCallSession = 10076,
3542    AtomVoiceCallRatUsage = 10077,
3543    AtomSimSlotState = 10078,
3544    AtomSupportedRadioAccessFamily = 10079,
3545    AtomSettingSnapshot = 10080,
3546    AtomBlobInfo = 10081,
3547    AtomDataUsageBytesTransfer = 10082,
3548    AtomBytesTransferByTagAndMetered = 10083,
3549    AtomDndModeRule = 10084,
3550    AtomGeneralExternalStorageAccessStats = 10085,
3551    AtomIncomingSms = 10086,
3552    AtomOutgoingSms = 10087,
3553    AtomCarrierIdTableVersion = 10088,
3554    AtomDataCallSession = 10089,
3555    AtomCellularServiceState = 10090,
3556    AtomCellularDataServiceSwitch = 10091,
3557    AtomSystemMemory = 10092,
3558    AtomImsRegistrationTermination = 10093,
3559    AtomImsRegistrationStats = 10094,
3560    AtomCpuTimePerClusterFreq = 10095,
3561    AtomCpuCyclesPerUidCluster = 10096,
3562    AtomDeviceRotatedData = 10097,
3563    AtomCpuCyclesPerThreadGroupCluster = 10098,
3564    AtomMediaDrmActivityInfo = 10099,
3565    AtomOemManagedBytesTransfer = 10100,
3566    AtomGnssPowerStats = 10101,
3567    AtomTimeZoneDetectorState = 10102,
3568    AtomKeystore2StorageStats = 10103,
3569    AtomRkpPoolStats = 10104,
3570    AtomProcessDmabufMemory = 10105,
3571    AtomPendingAlarmInfo = 10106,
3572    AtomUserLevelHibernatedApps = 10107,
3573    AtomLauncherLayoutSnapshot = 10108,
3574    AtomGlobalHibernatedApps = 10109,
3575    AtomInputEventLatencySketch = 10110,
3576    AtomBatteryUsageStatsBeforeReset = 10111,
3577    AtomBatteryUsageStatsSinceReset = 10112,
3578    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
3579    AtomInstalledIncrementalPackage = 10114,
3580    AtomTelephonyNetworkRequests = 10115,
3581    AtomAppSearchStorageInfo = 10116,
3582    AtomVmstat = 10117,
3583    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
3584    AtomKeystore2KeyCreationWithAuthInfo = 10119,
3585    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
3586    AtomKeystore2AtomWithOverflow = 10121,
3587    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
3588    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
3589    AtomRkpErrorStats = 10124,
3590    AtomKeystore2CrashStats = 10125,
3591    AtomVendorApexInfo = 10126,
3592    AtomAccessibilityShortcutStats = 10127,
3593    AtomAccessibilityFloatingMenuStats = 10128,
3594    AtomDataUsageBytesTransferV2 = 10129,
3595    AtomMediaCapabilities = 10130,
3596    AtomCarWatchdogSystemIoUsageSummary = 10131,
3597    AtomCarWatchdogUidIoUsageSummary = 10132,
3598    AtomImsRegistrationFeatureTagStats = 10133,
3599    AtomRcsClientProvisioningStats = 10134,
3600    AtomRcsAcsProvisioningStats = 10135,
3601    AtomSipDelegateStats = 10136,
3602    AtomSipTransportFeatureTagStats = 10137,
3603    AtomSipMessageResponse = 10138,
3604    AtomSipTransportSession = 10139,
3605    AtomImsDedicatedBearerListenerEvent = 10140,
3606    AtomImsDedicatedBearerEvent = 10141,
3607    AtomImsRegistrationServiceDescStats = 10142,
3608    AtomUceEventStats = 10143,
3609    AtomPresenceNotifyEvent = 10144,
3610    AtomGbaEvent = 10145,
3611    AtomPerSimStatus = 10146,
3612    AtomGpuWorkPerUid = 10147,
3613    AtomPersistentUriPermissionsAmountPerPackage = 10148,
3614    AtomSignedPartitionInfo = 10149,
3615    AtomPinnedFileSizesPerPackage = 10150,
3616    AtomPendingIntentsPerPackage = 10151,
3617    AtomUserInfo = 10152,
3618    AtomTelephonyNetworkRequestsV2 = 10153,
3619    AtomDeviceTelephonyProperties = 10154,
3620    AtomRemoteKeyProvisioningErrorCounts = 10155,
3621    AtomSafetyState = 10156,
3622    AtomIncomingMms = 10157,
3623    AtomOutgoingMms = 10158,
3624    AtomMultiUserInfo = 10160,
3625    AtomNetworkBpfMapInfo = 10161,
3626    AtomOutgoingShortCodeSms = 10162,
3627    AtomConnectivityStateSample = 10163,
3628    AtomNetworkSelectionRematchReasonsInfo = 10164,
3629    AtomGameModeInfo = 10165,
3630    AtomGameModeConfiguration = 10166,
3631    AtomGameModeListener = 10167,
3632    AtomNetworkSliceRequestCount = 10168,
3633    AtomWsTileSnapshot = 10169,
3634    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
3635    AtomProcessState = 10171,
3636    AtomProcessAssociation = 10172,
3637    AtomAdpfSystemComponentInfo = 10173,
3638    AtomNotificationMemoryUse = 10174,
3639    AtomHdrCapabilities = 10175,
3640    AtomWsFavouriteWatchFaceListSnapshot = 10176,
3641    AtomAccessibilityCheckResultReported = 910,
3642    AtomAdaptiveAuthUnlockAfterLockReported = 820,
3643    AtomThermalStatusCalled = 772,
3644    AtomThermalHeadroomCalled = 773,
3645    AtomThermalHeadroomThresholdsCalled = 774,
3646    AtomAdpfHintSessionTidCleanup = 839,
3647    AtomThermalHeadroomThresholds = 10201,
3648    AtomAdpfSessionSnapshot = 10218,
3649    AtomJsscriptengineLatencyReported = 483,
3650    AtomAdServicesApiCalled = 435,
3651    AtomAdServicesMesurementReportsUploaded = 436,
3652    AtomMobileDataDownloadFileGroupStatusReported = 490,
3653    AtomMobileDataDownloadDownloadResultReported = 502,
3654    AtomAdServicesSettingsUsageReported = 493,
3655    AtomBackgroundFetchProcessReported = 496,
3656    AtomUpdateCustomAudienceProcessReported = 497,
3657    AtomRunAdBiddingProcessReported = 498,
3658    AtomRunAdScoringProcessReported = 499,
3659    AtomRunAdSelectionProcessReported = 500,
3660    AtomRunAdBiddingPerCaProcessReported = 501,
3661    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
3662    AtomAdServicesMeasurementRegistrations = 512,
3663    AtomAdServicesGetTopicsReported = 535,
3664    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
3665    AtomAdServicesEpochComputationClassifierReported = 537,
3666    AtomAdServicesBackCompatGetTopicsReported = 598,
3667    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
3668    AtomAdServicesMeasurementDebugKeys = 640,
3669    AtomAdServicesErrorReported = 662,
3670    AtomAdServicesBackgroundJobsExecutionReported = 663,
3671    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
3672    AtomAdServicesMeasurementAttribution = 674,
3673    AtomAdServicesMeasurementJobs = 675,
3674    AtomAdServicesMeasurementWipeout = 676,
3675    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
3676    AtomAdServicesEnrollmentDataStored = 697,
3677    AtomAdServicesEnrollmentFileDownloaded = 698,
3678    AtomAdServicesEnrollmentMatched = 699,
3679    AtomAdServicesConsentMigrated = 702,
3680    AtomAdServicesEnrollmentFailed = 714,
3681    AtomAdServicesMeasurementClickVerification = 756,
3682    AtomAdServicesEncryptionKeyFetched = 765,
3683    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
3684    AtomDestinationRegisteredBeacons = 767,
3685    AtomReportInteractionApiCalled = 768,
3686    AtomInteractionReportingTableCleared = 769,
3687    AtomAppManifestConfigHelperCalled = 788,
3688    AtomAdFilteringProcessJoinCaReported = 793,
3689    AtomAdFilteringProcessAdSelectionReported = 794,
3690    AtomAdCounterHistogramUpdaterReported = 795,
3691    AtomSignatureVerification = 807,
3692    AtomKAnonImmediateSignJoinStatusReported = 808,
3693    AtomKAnonBackgroundJobStatusReported = 809,
3694    AtomKAnonInitializeStatusReported = 810,
3695    AtomKAnonSignStatusReported = 811,
3696    AtomKAnonJoinStatusReported = 812,
3697    AtomKAnonKeyAttestationStatusReported = 813,
3698    AtomGetAdSelectionDataApiCalled = 814,
3699    AtomGetAdSelectionDataBuyerInputGenerated = 815,
3700    AtomBackgroundJobSchedulingReported = 834,
3701    AtomTopicsEncryptionEpochComputationReported = 840,
3702    AtomTopicsEncryptionGetTopicsReported = 841,
3703    AtomAdservicesShellCommandCalled = 842,
3704    AtomUpdateSignalsApiCalled = 843,
3705    AtomEncodingJobRun = 844,
3706    AtomEncodingJsFetch = 845,
3707    AtomEncodingJsExecution = 846,
3708    AtomPersistAdSelectionResultCalled = 847,
3709    AtomServerAuctionKeyFetchCalled = 848,
3710    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
3711    AtomAdServicesMeasurementProcessOdpRegistration = 864,
3712    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
3713    AtomSelectAdsFromOutcomesApiCalled = 876,
3714    AtomReportImpressionApiCalled = 877,
3715    AtomAdServicesEnrollmentTransactionStats = 885,
3716    AtomAdServicesCobaltLoggerEventReported = 902,
3717    AtomAdServicesCobaltPeriodicJobEventReported = 903,
3718    AtomUpdateSignalsProcessReported = 905,
3719    AtomTopicsScheduleEpochJobSettingReported = 930,
3720    AtomAiWallpapersButtonPressed = 706,
3721    AtomAiWallpapersTemplateSelected = 707,
3722    AtomAiWallpapersTermSelected = 708,
3723    AtomAiWallpapersWallpaperSet = 709,
3724    AtomAiWallpapersSessionSummary = 710,
3725    AtomApexInstallationRequested = 732,
3726    AtomApexInstallationStaged = 733,
3727    AtomApexInstallationEnded = 734,
3728    AtomAppSearchSetSchemaStatsReported = 385,
3729    AtomAppSearchSchemaMigrationStatsReported = 579,
3730    AtomAppSearchUsageSearchIntentStatsReported = 825,
3731    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
3732    AtomAppSearchAppsIndexerStatsReported = 909,
3733    AtomArtDatumReported = 332,
3734    AtomArtDeviceDatumReported = 550,
3735    AtomArtDatumDeltaReported = 565,
3736    AtomArtDex2oatReported = 929,
3737    AtomArtDeviceStatus = 10205,
3738    AtomBackgroundDexoptJobEnded = 467,
3739    AtomPrerebootDexoptJobEnded = 883,
3740    AtomOdrefreshReported = 366,
3741    AtomOdsignReported = 548,
3742    AtomAutofillUiEventReported = 603,
3743    AtomAutofillFillRequestReported = 604,
3744    AtomAutofillFillResponseReported = 605,
3745    AtomAutofillSaveEventReported = 606,
3746    AtomAutofillSessionCommitted = 607,
3747    AtomAutofillFieldClassificationEventReported = 659,
3748    AtomCarRecentsEventReported = 770,
3749    AtomCarCalmModeEventReported = 797,
3750    AtomCarWakeupFromSuspendReported = 852,
3751    AtomPluginInitialized = 655,
3752    AtomBluetoothHashedDeviceNameReported = 613,
3753    AtomBluetoothL2capCocClientConnection = 614,
3754    AtomBluetoothL2capCocServerConnection = 615,
3755    AtomBluetoothLeSessionConnected = 656,
3756    AtomRestrictedBluetoothDeviceNameReported = 666,
3757    AtomBluetoothProfileConnectionAttempted = 696,
3758    AtomBluetoothContentProfileErrorReported = 781,
3759    AtomBluetoothRfcommConnectionAttempted = 782,
3760    AtomRemoteDeviceInformationWithMetricId = 862,
3761    AtomLeAppScanStateChanged = 870,
3762    AtomLeRadioScanStopped = 871,
3763    AtomLeScanResultReceived = 872,
3764    AtomLeScanAbused = 873,
3765    AtomLeAdvStateChanged = 874,
3766    AtomLeAdvErrorReported = 875,
3767    AtomA2dpSessionReported = 904,
3768    AtomBluetoothCrossLayerEventReported = 916,
3769    AtomBroadcastAudioSessionReported = 927,
3770    AtomBroadcastAudioSyncReported = 928,
3771    AtomBluetoothRfcommConnectionReportedAtClose = 982,
3772    AtomBluetoothLeConnection = 988,
3773    AtomBroadcastSent = 922,
3774    AtomCameraFeatureCombinationQueryEvent = 900,
3775    AtomCertificateTransparencyLogListStateChanged = 934,
3776    AtomCertificateTransparencyLogListUpdateFailed = 972,
3777    AtomDailyKeepaliveInfoReported = 650,
3778    AtomNetworkRequestStateChanged = 779,
3779    AtomTetheringActiveSessionsReported = 925,
3780    AtomNetworkStatsRecorderFileOperated = 783,
3781    AtomCoreNetworkingTerribleErrorOccurred = 979,
3782    AtomApfSessionInfoReported = 777,
3783    AtomIpClientRaInfoReported = 778,
3784    AtomVpnConnectionStateChanged = 850,
3785    AtomVpnConnectionReported = 851,
3786    AtomCpuPolicy = 10199,
3787    AtomCredentialManagerApiCalled = 585,
3788    AtomCredentialManagerInitPhaseReported = 651,
3789    AtomCredentialManagerCandidatePhaseReported = 652,
3790    AtomCredentialManagerFinalPhaseReported = 653,
3791    AtomCredentialManagerTotalReported = 667,
3792    AtomCredentialManagerFinalnouidReported = 668,
3793    AtomCredentialManagerGetReported = 669,
3794    AtomCredentialManagerAuthClickReported = 670,
3795    AtomCredentialManagerApiv2Called = 671,
3796    AtomCronetEngineCreated = 703,
3797    AtomCronetTrafficReported = 704,
3798    AtomCronetEngineBuilderInitialized = 762,
3799    AtomCronetHttpFlagsInitialized = 763,
3800    AtomCronetInitialized = 764,
3801    AtomDesktopModeUiChanged = 818,
3802    AtomDesktopModeSessionTaskUpdate = 819,
3803    AtomDesktopModeTaskSizeUpdated = 935,
3804    AtomDeviceLockCheckInRequestReported = 726,
3805    AtomDeviceLockProvisioningCompleteReported = 727,
3806    AtomDeviceLockKioskAppRequestReported = 728,
3807    AtomDeviceLockCheckInRetryReported = 789,
3808    AtomDeviceLockProvisionFailureReported = 790,
3809    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
3810    AtomDevicePolicyManagementMode = 10216,
3811    AtomDevicePolicyState = 10217,
3812    AtomDisplayModeDirectorVoteChanged = 792,
3813    AtomExternalDisplayStateChanged = 806,
3814    AtomDndStateChanged = 657,
3815    AtomDreamSettingChanged = 705,
3816    AtomDreamSettingSnapshot = 10192,
3817    AtomExpressEventReported = 528,
3818    AtomExpressHistogramSampleReported = 593,
3819    AtomExpressUidEventReported = 644,
3820    AtomExpressUidHistogramSampleReported = 658,
3821    AtomFederatedComputeApiCalled = 712,
3822    AtomFederatedComputeTrainingEventReported = 771,
3823    AtomExampleIteratorNextLatencyReported = 838,
3824    AtomFullScreenIntentLaunched = 631,
3825    AtomBalAllowed = 632,
3826    AtomInTaskActivityStarted = 685,
3827    AtomDeviceOrientationChanged = 906,
3828    AtomCachedAppsHighWatermark = 10189,
3829    AtomStylusPredictionMetricsReported = 718,
3830    AtomUserRiskEventReported = 725,
3831    AtomMediaProjectionStateChanged = 729,
3832    AtomMediaProjectionTargetChanged = 730,
3833    AtomExcessiveBinderProxyCountReported = 853,
3834    AtomProxyBytesTransferByFgBg = 10200,
3835    AtomMobileBytesTransferByProcState = 10204,
3836    AtomBiometricFrrNotification = 817,
3837    AtomSensitiveContentMediaProjectionSession = 830,
3838    AtomSensitiveNotificationAppProtectionSession = 831,
3839    AtomSensitiveNotificationAppProtectionApplied = 832,
3840    AtomSensitiveNotificationRedaction = 833,
3841    AtomSensitiveContentAppProtection = 835,
3842    AtomAppRestrictionStateChanged = 866,
3843    AtomBatteryUsageStatsPerUid = 10209,
3844    AtomPostgcMemorySnapshot = 924,
3845    AtomPowerSaveTempAllowlistChanged = 926,
3846    AtomAppOpAccessTracked = 931,
3847    AtomContentOrFileUriEventReported = 933,
3848    AtomApplicationGrammaticalInflectionChanged = 584,
3849    AtomSystemGrammaticalInflectionChanged = 816,
3850    AtomBatteryHealth = 10220,
3851    AtomHdmiEarcStatusReported = 701,
3852    AtomHdmiSoundbarModeStatusReported = 724,
3853    AtomHealthConnectApiCalled = 616,
3854    AtomHealthConnectUsageStats = 617,
3855    AtomHealthConnectStorageStats = 618,
3856    AtomHealthConnectApiInvoked = 643,
3857    AtomExerciseRouteApiCalled = 654,
3858    AtomHealthConnectExportInvoked = 907,
3859    AtomHealthConnectImportInvoked = 918,
3860    AtomHealthConnectExportImportStatsReported = 919,
3861    AtomHealthConnectUiImpression = 623,
3862    AtomHealthConnectUiInteraction = 624,
3863    AtomHealthConnectAppOpenedReported = 625,
3864    AtomHotwordEgressSizeAtomReported = 761,
3865    AtomIkeSessionTerminated = 678,
3866    AtomIkeLivenessCheckSessionValidated = 760,
3867    AtomNegotiatedSecurityAssociation = 821,
3868    AtomKeyboardConfigured = 682,
3869    AtomKeyboardSystemsEventReported = 683,
3870    AtomInputdeviceUsageReported = 686,
3871    AtomInputEventLatencyReported = 932,
3872    AtomTouchpadUsage = 10191,
3873    AtomKernelOomKillOccurred = 754,
3874    AtomEmergencyStateChanged = 633,
3875    AtomChreSignificantMotionStateChanged = 868,
3876    AtomPopulationDensityProviderLoadingReported = 1002,
3877    AtomDensityBasedCoarseLocationsUsageReported = 1003,
3878    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
3879    AtomMediaCodecReclaimRequestCompleted = 600,
3880    AtomMediaCodecStarted = 641,
3881    AtomMediaCodecStopped = 642,
3882    AtomMediaCodecRendered = 684,
3883    AtomMediaEditingEndedReported = 798,
3884    AtomMteState = 10181,
3885    AtomMicroxrDeviceBootCompleteReported = 901,
3886    AtomNfcObserveModeStateChanged = 855,
3887    AtomNfcFieldChanged = 856,
3888    AtomNfcPollingLoopNotificationReported = 857,
3889    AtomNfcProprietaryCapabilitiesReported = 858,
3890    AtomOndevicepersonalizationApiCalled = 711,
3891    AtomComponentStateChangedReported = 863,
3892    AtomPdfLoadReported = 859,
3893    AtomPdfApiUsageReported = 860,
3894    AtomPdfSearchReported = 861,
3895    AtomPressureStallInformation = 10229,
3896    AtomPermissionRationaleDialogViewed = 645,
3897    AtomPermissionRationaleDialogActionReported = 646,
3898    AtomAppDataSharingUpdatesNotificationInteraction = 647,
3899    AtomAppDataSharingUpdatesFragmentViewed = 648,
3900    AtomAppDataSharingUpdatesFragmentActionReported = 649,
3901    AtomEnhancedConfirmationDialogResultReported = 827,
3902    AtomEnhancedConfirmationRestrictionCleared = 828,
3903    AtomPhotopickerSessionInfoReported = 886,
3904    AtomPhotopickerApiInfoReported = 887,
3905    AtomPhotopickerUiEventLogged = 888,
3906    AtomPhotopickerMediaItemStatusReported = 889,
3907    AtomPhotopickerPreviewInfoLogged = 890,
3908    AtomPhotopickerMenuInteractionLogged = 891,
3909    AtomPhotopickerBannerInteractionLogged = 892,
3910    AtomPhotopickerMediaLibraryInfoLogged = 893,
3911    AtomPhotopickerPageInfoLogged = 894,
3912    AtomPhotopickerMediaGridSyncInfoReported = 895,
3913    AtomPhotopickerAlbumSyncInfoReported = 896,
3914    AtomPhotopickerSearchInfoReported = 897,
3915    AtomSearchDataExtractionDetailsReported = 898,
3916    AtomEmbeddedPhotopickerInfoReported = 899,
3917    AtomAtom9999 = 9999,
3918    AtomAtom99999 = 99999,
3919    AtomScreenOffReported = 776,
3920    AtomScreenTimeoutOverrideReported = 836,
3921    AtomScreenInteractiveSessionReported = 837,
3922    AtomScreenDimReported = 867,
3923    AtomMediaProviderDatabaseRollbackReported = 784,
3924    AtomBackupSetupStatusReported = 785,
3925    AtomRangingSessionConfigured = 993,
3926    AtomRangingSessionStarted = 994,
3927    AtomRangingSessionClosed = 995,
3928    AtomRangingTechnologyStarted = 996,
3929    AtomRangingTechnologyStopped = 997,
3930    AtomRkpdPoolStats = 664,
3931    AtomRkpdClientOperation = 665,
3932    AtomSandboxApiCalled = 488,
3933    AtomSandboxActivityEventOccurred = 735,
3934    AtomSdkSandboxRestrictedAccessInSession = 796,
3935    AtomSandboxSdkStorage = 10159,
3936    AtomSelinuxAuditLog = 799,
3937    AtomSettingsSpaReported = 622,
3938    AtomTestExtensionAtomReported = 660,
3939    AtomTestRestrictedAtomReported = 672,
3940    AtomStatsSocketLossReported = 752,
3941    AtomLockscreenShortcutSelected = 611,
3942    AtomLockscreenShortcutTriggered = 612,
3943    AtomLauncherImpressionEventV2 = 716,
3944    AtomDisplaySwitchLatencyTracked = 753,
3945    AtomNotificationListenerService = 829,
3946    AtomNavHandleTouchPoints = 869,
3947    AtomCommunalHubWidgetEventReported = 908,
3948    AtomCommunalHubSnapshot = 10226,
3949    AtomEmergencyNumberDialed = 637,
3950    AtomCallStats = 10221,
3951    AtomCallAudioRouteStats = 10222,
3952    AtomTelecomApiStats = 10223,
3953    AtomTelecomErrorStats = 10224,
3954    AtomCellularRadioPowerStateChanged = 713,
3955    AtomEmergencyNumbersInfo = 10180,
3956    AtomDataNetworkValidation = 10207,
3957    AtomDataRatStateChanged = 854,
3958    AtomConnectedChannelChanged = 882,
3959    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
3960    AtomQualifiedRatListChanged = 634,
3961    AtomQnsImsCallDropStats = 635,
3962    AtomQnsFallbackRestrictionChanged = 636,
3963    AtomQnsRatPreferenceMismatchInfo = 10177,
3964    AtomQnsHandoverTimeMillis = 10178,
3965    AtomQnsHandoverPingpong = 10179,
3966    AtomSatelliteController = 10182,
3967    AtomSatelliteSession = 10183,
3968    AtomSatelliteIncomingDatagram = 10184,
3969    AtomSatelliteOutgoingDatagram = 10185,
3970    AtomSatelliteProvision = 10186,
3971    AtomSatelliteSosMessageRecommender = 10187,
3972    AtomCarrierRoamingSatelliteSession = 10211,
3973    AtomCarrierRoamingSatelliteControllerStats = 10212,
3974    AtomControllerStatsPerPackage = 10213,
3975    AtomSatelliteEntitlement = 10214,
3976    AtomSatelliteConfigUpdater = 10215,
3977    AtomSatelliteAccessController = 10219,
3978    AtomCellularIdentifierDisclosed = 800,
3979    AtomThreadnetworkTelemetryDataReported = 738,
3980    AtomThreadnetworkTopoEntryRepeated = 739,
3981    AtomThreadnetworkDeviceInfoReported = 740,
3982    AtomBootIntegrityInfoReported = 775,
3983    AtomTvLowPowerStandbyPolicy = 679,
3984    AtomExternalTvInputEvent = 717,
3985    AtomTestUprobestatsAtomReported = 915,
3986    AtomUwbActivityInfo = 10188,
3987    AtomMediatorUpdated = 721,
3988    AtomSysproxyBluetoothBytesTransfer = 10196,
3989    AtomSysproxyConnectionUpdated = 786,
3990    AtomWearCompanionConnectionState = 921,
3991    AtomMediaActionReported = 608,
3992    AtomMediaControlsLaunched = 609,
3993    AtomMediaSessionStateChanged = 677,
3994    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
3995    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
3996    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
3997    AtomWearModeStateChanged = 715,
3998    AtomRendererInitialized = 736,
3999    AtomSchemaVersionReceived = 737,
4000    AtomLayoutInspected = 741,
4001    AtomLayoutExpressionInspected = 742,
4002    AtomLayoutAnimationsInspected = 743,
4003    AtomMaterialComponentsInspected = 744,
4004    AtomTileRequested = 745,
4005    AtomStateResponseReceived = 746,
4006    AtomTileResponseReceived = 747,
4007    AtomInflationFinished = 748,
4008    AtomInflationFailed = 749,
4009    AtomIgnoredInflationFailuresReported = 750,
4010    AtomDrawableRendered = 751,
4011    AtomWearTimeSyncRequested = 911,
4012    AtomWearTimeUpdateStarted = 912,
4013    AtomWearTimeSyncAttemptCompleted = 913,
4014    AtomWearTimeChanged = 914,
4015    AtomWearAdaptiveSuspendStatsReported = 619,
4016    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
4017    AtomWearPowerAnomalyServiceEventStatsReported = 621,
4018    AtomWsWearTimeSession = 610,
4019    AtomWsIncomingCallActionReported = 626,
4020    AtomWsCallDisconnectionReported = 627,
4021    AtomWsCallDurationReported = 628,
4022    AtomWsCallUserExperienceLatencyReported = 629,
4023    AtomWsCallInteractionReported = 630,
4024    AtomWsOnBodyStateChanged = 787,
4025    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
4026    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
4027    AtomWsComplicationsImpactedNotificationEventReported = 804,
4028    AtomWsRemoteEventUsageReported = 920,
4029    AtomWsBugreportRequested = 936,
4030    AtomWsBugreportTriggered = 937,
4031    AtomWsBugreportFinished = 938,
4032    AtomWsBugreportResultReceived = 939,
4033    AtomWsStandaloneModeSnapshot = 10197,
4034    AtomWsFavoriteWatchFaceSnapshot = 10206,
4035    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
4036    AtomWsWatchFaceCustomizationSnapshot = 10227,
4037    AtomWearPowerMenuOpened = 731,
4038    AtomWearAssistantOpened = 755,
4039    AtomFirstOverlayStateChanged = 917,
4040    AtomWifiAwareNdpReported = 638,
4041    AtomWifiAwareAttachReported = 639,
4042    AtomWifiSelfRecoveryTriggered = 661,
4043    AtomSoftApStarted = 680,
4044    AtomSoftApStopped = 681,
4045    AtomWifiLockReleased = 687,
4046    AtomWifiLockDeactivated = 688,
4047    AtomWifiConfigSaved = 689,
4048    AtomWifiAwareResourceUsingChanged = 690,
4049    AtomWifiAwareHalApiCalled = 691,
4050    AtomWifiLocalOnlyRequestReceived = 692,
4051    AtomWifiLocalOnlyRequestScanTriggered = 693,
4052    AtomWifiThreadTaskExecuted = 694,
4053    AtomWifiStateChanged = 700,
4054    AtomPnoScanStarted = 719,
4055    AtomPnoScanStopped = 720,
4056    AtomWifiIsUnusableReported = 722,
4057    AtomWifiApCapabilitiesReported = 723,
4058    AtomSoftApStateChanged = 805,
4059    AtomScorerPredictionResultReported = 884,
4060    AtomWifiAwareCapabilities = 10190,
4061    AtomWifiModuleInfo = 10193,
4062    AtomWifiSettingInfo = 10194,
4063    AtomWifiComplexSettingInfo = 10195,
4064    AtomWifiConfiguredNetworkInfo = 10198,
4065}
4066impl AtomId {
4067    /// String value of the enum field names used in the ProtoBuf definition.
4068    ///
4069    /// The values are not transformed in any way and thus are considered stable
4070    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4071    pub fn as_str_name(&self) -> &'static str {
4072        match self {
4073            AtomId::AtomUnspecified => "ATOM_UNSPECIFIED",
4074            AtomId::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
4075            AtomId::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
4076            AtomId::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
4077            AtomId::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
4078            AtomId::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
4079            AtomId::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
4080            AtomId::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
4081            AtomId::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
4082            AtomId::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
4083            AtomId::AtomLongPartialWakelockStateChanged => "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED",
4084            AtomId::AtomMobileRadioPowerStateChanged => "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED",
4085            AtomId::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
4086            AtomId::AtomActivityManagerSleepStateChanged => "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED",
4087            AtomId::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
4088            AtomId::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
4089            AtomId::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
4090            AtomId::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
4091            AtomId::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
4092            AtomId::AtomBatterySaverModeStateChanged => "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED",
4093            AtomId::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
4094            AtomId::AtomDeviceIdlingModeStateChanged => "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED",
4095            AtomId::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
4096            AtomId::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
4097            AtomId::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
4098            AtomId::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
4099            AtomId::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
4100            AtomId::AtomProcessLifeCycleStateChanged => "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED",
4101            AtomId::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
4102            AtomId::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
4103            AtomId::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
4104            AtomId::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
4105            AtomId::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
4106            AtomId::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
4107            AtomId::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
4108            AtomId::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
4109            AtomId::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
4110            AtomId::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
4111            AtomId::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
4112            AtomId::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
4113            AtomId::AtomSettingChanged => "ATOM_SETTING_CHANGED",
4114            AtomId::AtomActivityForegroundStateChanged => "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED",
4115            AtomId::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
4116            AtomId::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
4117            AtomId::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
4118            AtomId::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
4119            AtomId::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
4120            AtomId::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
4121            AtomId::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
4122            AtomId::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
4123            AtomId::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
4124            AtomId::AtomPictureInPictureStateChanged => "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED",
4125            AtomId::AtomWifiMulticastLockStateChanged => "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED",
4126            AtomId::AtomAppStartMemoryStateCaptured => "ATOM_APP_START_MEMORY_STATE_CAPTURED",
4127            AtomId::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
4128            AtomId::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
4129            AtomId::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
4130            AtomId::AtomForegroundServiceStateChanged => "ATOM_FOREGROUND_SERVICE_STATE_CHANGED",
4131            AtomId::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
4132            AtomId::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
4133            AtomId::AtomKeyguardBouncerStateChanged => "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED",
4134            AtomId::AtomKeyguardBouncerPasswordEntered => "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED",
4135            AtomId::AtomAppDied => "ATOM_APP_DIED",
4136            AtomId::AtomResourceConfigurationChanged => "ATOM_RESOURCE_CONFIGURATION_CHANGED",
4137            AtomId::AtomBluetoothEnabledStateChanged => "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED",
4138            AtomId::AtomBluetoothConnectionStateChanged => "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED",
4139            AtomId::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
4140            AtomId::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
4141            AtomId::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
4142            AtomId::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
4143            AtomId::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
4144            AtomId::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
4145            AtomId::AtomMobileConnectionStateChanged => "ATOM_MOBILE_CONNECTION_STATE_CHANGED",
4146            AtomId::AtomMobileRadioTechnologyChanged => "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED",
4147            AtomId::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
4148            AtomId::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
4149            AtomId::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
4150            AtomId::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
4151            AtomId::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
4152            AtomId::AtomGenericAtom => "ATOM_GENERIC_ATOM",
4153            AtomId::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
4154            AtomId::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
4155            AtomId::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
4156            AtomId::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
4157            AtomId::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
4158            AtomId::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
4159            AtomId::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
4160            AtomId::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
4161            AtomId::AtomSlowIo => "ATOM_SLOW_IO",
4162            AtomId::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
4163            AtomId::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
4164            AtomId::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
4165            AtomId::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
4166            AtomId::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
4167            AtomId::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
4168            AtomId::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
4169            AtomId::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
4170            AtomId::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
4171            AtomId::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
4172            AtomId::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
4173            AtomId::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
4174            AtomId::AtomDocsUiFileOpCopyMoveModeReported => "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED",
4175            AtomId::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
4176            AtomId::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
4177            AtomId::AtomDocsUiInvalidScopedAccessRequest => "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST",
4178            AtomId::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
4179            AtomId::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
4180            AtomId::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
4181            AtomId::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
4182            AtomId::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
4183            AtomId::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
4184            AtomId::AtomAppCompacted => "ATOM_APP_COMPACTED",
4185            AtomId::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
4186            AtomId::AtomDocsUiPickerLaunchedFromReported => "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED",
4187            AtomId::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
4188            AtomId::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
4189            AtomId::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
4190            AtomId::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
4191            AtomId::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
4192            AtomId::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
4193            AtomId::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
4194            AtomId::AtomBluetoothLinkLayerConnectionEvent => "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT",
4195            AtomId::AtomBluetoothAclConnectionStateChanged => "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED",
4196            AtomId::AtomBluetoothScoConnectionStateChanged => "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED",
4197            AtomId::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
4198            AtomId::AtomAppOptimizedAfterDowngraded => "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED",
4199            AtomId::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
4200            AtomId::AtomGnssNfwNotificationReported => "ATOM_GNSS_NFW_NOTIFICATION_REPORTED",
4201            AtomId::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
4202            AtomId::AtomUsbPortOverheatEventReported => "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED",
4203            AtomId::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
4204            AtomId::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
4205            AtomId::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
4206            AtomId::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
4207            AtomId::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
4208            AtomId::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
4209            AtomId::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
4210            AtomId::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
4211            AtomId::AtomBroadcastDispatchLatencyReported => "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED",
4212            AtomId::AtomAttentionManagerServiceResultReported => "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED",
4213            AtomId::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
4214            AtomId::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
4215            AtomId::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
4216            AtomId::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
4217            AtomId::AtomBiometricSystemHealthIssueDetected => "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED",
4218            AtomId::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
4219            AtomId::AtomScheduledJobConstraintChanged => "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED",
4220            AtomId::AtomBluetoothActiveDeviceChanged => "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED",
4221            AtomId::AtomBluetoothA2dpPlaybackStateChanged => "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED",
4222            AtomId::AtomBluetoothA2dpCodecConfigChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED",
4223            AtomId::AtomBluetoothA2dpCodecCapabilityChanged => "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED",
4224            AtomId::AtomBluetoothA2dpAudioUnderrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED",
4225            AtomId::AtomBluetoothA2dpAudioOverrunReported => "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED",
4226            AtomId::AtomBluetoothDeviceRssiReported => "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED",
4227            AtomId::AtomBluetoothDeviceFailedContactCounterReported => "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED",
4228            AtomId::AtomBluetoothDeviceTxPowerLevelReported => "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED",
4229            AtomId::AtomBluetoothHciTimeoutReported => "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED",
4230            AtomId::AtomBluetoothQualityReportReported => "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED",
4231            AtomId::AtomBluetoothDeviceInfoReported => "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED",
4232            AtomId::AtomBluetoothRemoteVersionInfoReported => "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED",
4233            AtomId::AtomBluetoothSdpAttributeReported => "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED",
4234            AtomId::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
4235            AtomId::AtomBluetoothClassicPairingEventReported => "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED",
4236            AtomId::AtomBluetoothSmpPairingEventReported => "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED",
4237            AtomId::AtomScreenTimeoutExtensionReported => "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED",
4238            AtomId::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
4239            AtomId::AtomPermissionGrantRequestResultReported => "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED",
4240            AtomId::AtomBluetoothSocketConnectionStateChanged => "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED",
4241            AtomId::AtomDeviceIdentifierAccessDenied => "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED",
4242            AtomId::AtomBubbleDeveloperErrorReported => "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED",
4243            AtomId::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
4244            AtomId::AtomAssistGestureFeedbackReported => "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED",
4245            AtomId::AtomAssistGestureProgressReported => "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED",
4246            AtomId::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
4247            AtomId::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
4248            AtomId::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
4249            AtomId::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
4250            AtomId::AtomAppInstallOnExternalStorageReported => "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED",
4251            AtomId::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
4252            AtomId::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
4253            AtomId::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
4254            AtomId::AtomSystemServerWatchdogOccurred => "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED",
4255            AtomId::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
4256            AtomId::AtomBluetoothClassOfDeviceReported => "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED",
4257            AtomId::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
4258            AtomId::AtomThermalThrottlingSeverityStateChanged => "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED",
4259            AtomId::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
4260            AtomId::AtomMediametricsAudiopolicyReported => "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED",
4261            AtomId::AtomMediametricsAudiorecordReported => "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED",
4262            AtomId::AtomMediametricsAudiothreadReported => "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED",
4263            AtomId::AtomMediametricsAudiotrackReported => "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED",
4264            AtomId::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
4265            AtomId::AtomMediametricsDrmWidevineReported => "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED",
4266            AtomId::AtomMediametricsExtractorReported => "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED",
4267            AtomId::AtomMediametricsMediadrmReported => "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED",
4268            AtomId::AtomMediametricsNuplayerReported => "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED",
4269            AtomId::AtomMediametricsRecorderReported => "ATOM_MEDIAMETRICS_RECORDER_REPORTED",
4270            AtomId::AtomMediametricsDrmmanagerReported => "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED",
4271            AtomId::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
4272            AtomId::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
4273            AtomId::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
4274            AtomId::AtomContentCaptureCallerMismatchReported => "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED",
4275            AtomId::AtomContentCaptureServiceEvents => "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS",
4276            AtomId::AtomContentCaptureSessionEvents => "ATOM_CONTENT_CAPTURE_SESSION_EVENTS",
4277            AtomId::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
4278            AtomId::AtomLocationManagerApiUsageReported => "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED",
4279            AtomId::AtomReviewPermissionsFragmentResultReported => "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED",
4280            AtomId::AtomRuntimePermissionsUpgradeResult => "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT",
4281            AtomId::AtomGrantPermissionsActivityButtonActions => "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS",
4282            AtomId::AtomLocationAccessCheckNotificationAction => "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION",
4283            AtomId::AtomAppPermissionFragmentActionReported => "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED",
4284            AtomId::AtomAppPermissionFragmentViewed => "ATOM_APP_PERMISSION_FRAGMENT_VIEWED",
4285            AtomId::AtomAppPermissionsFragmentViewed => "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED",
4286            AtomId::AtomPermissionAppsFragmentViewed => "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED",
4287            AtomId::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
4288            AtomId::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
4289            AtomId::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
4290            AtomId::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
4291            AtomId::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
4292            AtomId::AtomBackGestureReportedReported => "ATOM_BACK_GESTURE_REPORTED_REPORTED",
4293            AtomId::AtomUpdateEngineUpdateAttemptReported => "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED",
4294            AtomId::AtomUpdateEngineSuccessfulUpdateReported => "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED",
4295            AtomId::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
4296            AtomId::AtomAppCompatibilityChangeReported => "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED",
4297            AtomId::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
4298            AtomId::AtomVmsClientConnectionStateChanged => "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED",
4299            AtomId::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
4300            AtomId::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
4301            AtomId::AtomMediaProviderPermissionRequested => "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED",
4302            AtomId::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
4303            AtomId::AtomMediaProviderIdleMaintenanceFinished => "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED",
4304            AtomId::AtomRebootEscrowRecoveryReported => "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED",
4305            AtomId::AtomBootTimeEventDurationReported => "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED",
4306            AtomId::AtomBootTimeEventElapsedTimeReported => "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED",
4307            AtomId::AtomBootTimeEventUtcTimeReported => "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED",
4308            AtomId::AtomBootTimeEventErrorCodeReported => "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED",
4309            AtomId::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
4310            AtomId::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
4311            AtomId::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
4312            AtomId::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
4313            AtomId::AtomIntegrityCheckResultReported => "ATOM_INTEGRITY_CHECK_RESULT_REPORTED",
4314            AtomId::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
4315            AtomId::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
4316            AtomId::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
4317            AtomId::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
4318            AtomId::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
4319            AtomId::AtomWifiConnectionResultReported => "ATOM_WIFI_CONNECTION_RESULT_REPORTED",
4320            AtomId::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
4321            AtomId::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
4322            AtomId::AtomForegroundServiceAppOpSessionEnded => "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED",
4323            AtomId::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
4324            AtomId::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
4325            AtomId::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
4326            AtomId::AtomRankingSelected => "ATOM_RANKING_SELECTED",
4327            AtomId::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
4328            AtomId::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
4329            AtomId::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
4330            AtomId::AtomUserLifecycleJourneyReported => "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED",
4331            AtomId::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
4332            AtomId::AtomAccessibilityShortcutReported => "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED",
4333            AtomId::AtomAccessibilityServiceReported => "ATOM_ACCESSIBILITY_SERVICE_REPORTED",
4334            AtomId::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
4335            AtomId::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
4336            AtomId::AtomAutoRevokeNotificationClicked => "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED",
4337            AtomId::AtomAutoRevokeFragmentAppViewed => "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED",
4338            AtomId::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
4339            AtomId::AtomAppPermissionGroupsFragmentAutoRevokeAction => "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION",
4340            AtomId::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
4341            AtomId::AtomAudioPowerUsageDataReported => "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED",
4342            AtomId::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
4343            AtomId::AtomMediaoutputOpSwitchReported => "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED",
4344            AtomId::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
4345            AtomId::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
4346            AtomId::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
4347            AtomId::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
4348            AtomId::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
4349            AtomId::AtomCarUserHalModifyUserRequestReported => "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED",
4350            AtomId::AtomCarUserHalModifyUserResponseReported => "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED",
4351            AtomId::AtomCarUserHalPostSwitchResponseReported => "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED",
4352            AtomId::AtomCarUserHalInitialUserInfoRequestReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED",
4353            AtomId::AtomCarUserHalInitialUserInfoResponseReported => "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED",
4354            AtomId::AtomCarUserHalUserAssociationRequestReported => "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED",
4355            AtomId::AtomCarUserHalSetUserAssociationResponseReported => "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED",
4356            AtomId::AtomNetworkIpProvisioningReported => "ATOM_NETWORK_IP_PROVISIONING_REPORTED",
4357            AtomId::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
4358            AtomId::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
4359            AtomId::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
4360            AtomId::AtomMediametricsAudiorecorddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED",
4361            AtomId::AtomMediametricsAudiothreaddeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED",
4362            AtomId::AtomMediametricsAudiotrackdeviceusageReported => "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED",
4363            AtomId::AtomMediametricsAudiodeviceconnectionReported => "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED",
4364            AtomId::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
4365            AtomId::AtomBlobLeased => "ATOM_BLOB_LEASED",
4366            AtomId::AtomBlobOpened => "ATOM_BLOB_OPENED",
4367            AtomId::AtomContactsProviderStatusReported => "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED",
4368            AtomId::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
4369            AtomId::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
4370            AtomId::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
4371            AtomId::AtomUiInteractionFrameInfoReported => "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED",
4372            AtomId::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
4373            AtomId::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
4374            AtomId::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
4375            AtomId::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
4376            AtomId::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
4377            AtomId::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
4378            AtomId::AtomModemRestart => "ATOM_MODEM_RESTART",
4379            AtomId::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
4380            AtomId::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
4381            AtomId::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
4382            AtomId::AtomMediametricsMediaparserReported => "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED",
4383            AtomId::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
4384            AtomId::AtomTextClassifierApiUsageReported => "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED",
4385            AtomId::AtomCarWatchdogKillStatsReported => "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED",
4386            AtomId::AtomMediametricsPlaybackReported => "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED",
4387            AtomId::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
4388            AtomId::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
4389            AtomId::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
4390            AtomId::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
4391            AtomId::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
4392            AtomId::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
4393            AtomId::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
4394            AtomId::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
4395            AtomId::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
4396            AtomId::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
4397            AtomId::AtomImsServiceEntitlementUpdated => "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED",
4398            AtomId::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
4399            AtomId::AtomSimSpecificSettingsRestored => "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED",
4400            AtomId::AtomTextClassifierDownloadReported => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED",
4401            AtomId::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
4402            AtomId::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
4403            AtomId::AtomBluetoothHalCrashReasonReported => "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED",
4404            AtomId::AtomRebootEscrowPreparationReported => "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED",
4405            AtomId::AtomRebootEscrowLskfCaptureReported => "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED",
4406            AtomId::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
4407            AtomId::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
4408            AtomId::AtomMediametricsAaudiostreamReported => "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED",
4409            AtomId::AtomMediaTranscodingSessionEnded => "ATOM_MEDIA_TRANSCODING_SESSION_ENDED",
4410            AtomId::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
4411            AtomId::AtomMagnificationModeWithImeOnReported => "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED",
4412            AtomId::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
4413            AtomId::AtomAppSearchPutDocumentStatsReported => "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED",
4414            AtomId::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
4415            AtomId::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
4416            AtomId::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
4417            AtomId::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
4418            AtomId::AtomAuthPromptAuthenticateInvoked => "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED",
4419            AtomId::AtomAuthManagerCanAuthenticateInvoked => "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED",
4420            AtomId::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
4421            AtomId::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
4422            AtomId::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
4423            AtomId::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
4424            AtomId::AtomLocationTimeZoneProviderStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED",
4425            AtomId::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
4426            AtomId::AtomTimeoutAutoExtendedReported => "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED",
4427            AtomId::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
4428            AtomId::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
4429            AtomId::AtomCarWatchdogIoOveruseStatsReported => "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED",
4430            AtomId::AtomUserLevelHibernationStateChanged => "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED",
4431            AtomId::AtomAppSearchInitializeStatsReported => "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED",
4432            AtomId::AtomAppSearchQueryStatsReported => "ATOM_APP_SEARCH_QUERY_STATS_REPORTED",
4433            AtomId::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
4434            AtomId::AtomNetworkIpReachabilityMonitorReported => "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED",
4435            AtomId::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
4436            AtomId::AtomAnrOccurredProcessingStarted => "ATOM_ANR_OCCURRED_PROCESSING_STARTED",
4437            AtomId::AtomAppSearchRemoveStatsReported => "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED",
4438            AtomId::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
4439            AtomId::AtomPermissionUsageFragmentInteraction => "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION",
4440            AtomId::AtomPermissionDetailsInteraction => "ATOM_PERMISSION_DETAILS_INTERACTION",
4441            AtomId::AtomPrivacySensorToggleInteraction => "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION",
4442            AtomId::AtomPrivacyToggleDialogInteraction => "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION",
4443            AtomId::AtomAppSearchOptimizeStatsReported => "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED",
4444            AtomId::AtomNonA11yToolServiceWarningReport => "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT",
4445            AtomId::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
4446            AtomId::AtomSizeCompatRestartButtonEventReported => "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED",
4447            AtomId::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
4448            AtomId::AtomNetworkDnsHandshakeReported => "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED",
4449            AtomId::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
4450            AtomId::AtomBluetoothLeBatchScanReportDelay => "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY",
4451            AtomId::AtomAccessibilityFloatingMenuUiChanged => "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED",
4452            AtomId::AtomNeuralnetworksCompilationCompleted => "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED",
4453            AtomId::AtomNeuralnetworksExecutionCompleted => "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED",
4454            AtomId::AtomNeuralnetworksCompilationFailed => "ATOM_NEURALNETWORKS_COMPILATION_FAILED",
4455            AtomId::AtomNeuralnetworksExecutionFailed => "ATOM_NEURALNETWORKS_EXECUTION_FAILED",
4456            AtomId::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
4457            AtomId::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
4458            AtomId::AtomContextHubLoadedNanoappSnapshotReported => "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED",
4459            AtomId::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
4460            AtomId::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
4461            AtomId::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
4462            AtomId::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
4463            AtomId::AtomUwbRangingMeasurementReceived => "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED",
4464            AtomId::AtomTextClassifierDownloadWorkScheduled => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED",
4465            AtomId::AtomTextClassifierDownloadWorkCompleted => "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED",
4466            AtomId::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
4467            AtomId::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
4468            AtomId::AtomNearbyDeviceScanStateChanged => "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED",
4469            AtomId::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
4470            AtomId::AtomMediametricsAudiotrackstatusReported => "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED",
4471            AtomId::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
4472            AtomId::AtomLocationTimeZoneProviderControllerStateChanged => "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED",
4473            AtomId::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
4474            AtomId::AtomDisplayHbmBrightnessChanged => "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED",
4475            AtomId::AtomPersistentUriPermissionsFlushed => "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED",
4476            AtomId::AtomEarlyBootCompOsArtifactsCheckReported => "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED",
4477            AtomId::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
4478            AtomId::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
4479            AtomId::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
4480            AtomId::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
4481            AtomId::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
4482            AtomId::AtomMediametricsAudiorecordstatusReported => "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED",
4483            AtomId::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
4484            AtomId::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
4485            AtomId::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
4486            AtomId::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
4487            AtomId::AtomHotwordDetectorCreateRequested => "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED",
4488            AtomId::AtomHotwordDetectionServiceInitResultReported => "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED",
4489            AtomId::AtomHotwordDetectionServiceRestarted => "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED",
4490            AtomId::AtomHotwordDetectorKeyphraseTriggered => "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED",
4491            AtomId::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
4492            AtomId::AtomBootCompletedBroadcastCompletionLatencyReported => "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED",
4493            AtomId::AtomContactsIndexerUpdateStatsReported => "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED",
4494            AtomId::AtomAppBackgroundRestrictionsInfo => "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO",
4495            AtomId::AtomMmsSmsProviderGetThreadIdFailed => "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED",
4496            AtomId::AtomMmsSmsDatabaseHelperOnUpgradeFailed => "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED",
4497            AtomId::AtomPermissionReminderNotificationInteracted => "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED",
4498            AtomId::AtomRecentPermissionDecisionsInteracted => "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED",
4499            AtomId::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
4500            AtomId::AtomLeAudioConnectionSessionReported => "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED",
4501            AtomId::AtomLeAudioBroadcastSessionReported => "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED",
4502            AtomId::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
4503            AtomId::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
4504            AtomId::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
4505            AtomId::AtomMagnificationTripleTapAndHoldActivatedSessionReported => "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED",
4506            AtomId::AtomMagnificationFollowTypingFocusActivatedSessionReported => "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED",
4507            AtomId::AtomAccessibilityTextReadingOptionsChanged => "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED",
4508            AtomId::AtomWifiSetupFailureCrashReported => "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED",
4509            AtomId::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
4510            AtomId::AtomIsolatedCompilationScheduled => "ATOM_ISOLATED_COMPILATION_SCHEDULED",
4511            AtomId::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
4512            AtomId::AtomOnsOpportunisticEsimProvisioningComplete => "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE",
4513            AtomId::AtomSystemServerPreWatchdogOccurred => "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED",
4514            AtomId::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
4515            AtomId::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
4516            AtomId::AtomRemoteKeyProvisioningAttempt => "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT",
4517            AtomId::AtomRemoteKeyProvisioningNetworkInfo => "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO",
4518            AtomId::AtomRemoteKeyProvisioningTiming => "ATOM_REMOTE_KEY_PROVISIONING_TIMING",
4519            AtomId::AtomMediaoutputOpInteractionReport => "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT",
4520            AtomId::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
4521            AtomId::AtomAutofillPresentationEventReported => "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED",
4522            AtomId::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
4523            AtomId::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
4524            AtomId::AtomSafetyCenterSystemEventReported => "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED",
4525            AtomId::AtomSafetyCenterInteractionReported => "ATOM_SAFETY_CENTER_INTERACTION_REPORTED",
4526            AtomId::AtomSettingsProviderSettingChanged => "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED",
4527            AtomId::AtomBroadcastDeliveryEventReported => "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED",
4528            AtomId::AtomServiceRequestEventReported => "ATOM_SERVICE_REQUEST_EVENT_REPORTED",
4529            AtomId::AtomProviderAcquisitionEventReported => "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED",
4530            AtomId::AtomBluetoothDeviceNameReported => "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED",
4531            AtomId::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
4532            AtomId::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
4533            AtomId::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
4534            AtomId::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
4535            AtomId::AtomPrivacySignalNotificationInteraction => "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION",
4536            AtomId::AtomPrivacySignalIssueCardInteraction => "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION",
4537            AtomId::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
4538            AtomId::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
4539            AtomId::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
4540            AtomId::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
4541            AtomId::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
4542            AtomId::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
4543            AtomId::AtomNetworkDnsServerSupportReported => "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED",
4544            AtomId::AtomVmBooted => "ATOM_VM_BOOTED",
4545            AtomId::AtomVmExited => "ATOM_VM_EXITED",
4546            AtomId::AtomAmbientBrightnessStatsReported => "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED",
4547            AtomId::AtomMediametricsSpatializercapabilitiesReported => "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED",
4548            AtomId::AtomMediametricsSpatializerdeviceenabledReported => "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED",
4549            AtomId::AtomMediametricsHeadtrackerdeviceenabledReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED",
4550            AtomId::AtomMediametricsHeadtrackerdevicesupportedReported => "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED",
4551            AtomId::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
4552            AtomId::AtomDeviceWideJobConstraintChanged => "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED",
4553            AtomId::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
4554            AtomId::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
4555            AtomId::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
4556            AtomId::AtomSystemDefaultNetworkChanged => "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED",
4557            AtomId::AtomIwlanSetupDataCallResultReported => "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED",
4558            AtomId::AtomIwlanPdnDisconnectedReasonReported => "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED",
4559            AtomId::AtomAirplaneModeSessionReported => "ATOM_AIRPLANE_MODE_SESSION_REPORTED",
4560            AtomId::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
4561            AtomId::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
4562            AtomId::AtomPackageInstallationSessionReported => "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED",
4563            AtomId::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
4564            AtomId::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
4565            AtomId::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
4566            AtomId::AtomBluetoothDisconnectionReasonReported => "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED",
4567            AtomId::AtomBluetoothLocalVersionsReported => "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED",
4568            AtomId::AtomBluetoothRemoteSupportedFeaturesReported => "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED",
4569            AtomId::AtomBluetoothLocalSupportedFeaturesReported => "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED",
4570            AtomId::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
4571            AtomId::AtomBrightnessConfigurationUpdated => "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED",
4572            AtomId::AtomWearMediaOutputSwitcherLaunched => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED",
4573            AtomId::AtomWearMediaOutputSwitcherFinished => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED",
4574            AtomId::AtomWearMediaOutputSwitcherConnectionReported => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED",
4575            AtomId::AtomWearMediaOutputSwitcherDeviceScanTriggered => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED",
4576            AtomId::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY",
4577            AtomId::AtomWearMediaOutputSwitcherConnectDeviceLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY",
4578            AtomId::AtomPackageManagerSnapshotReported => "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED",
4579            AtomId::AtomPackageManagerAppsFilterCacheBuildReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED",
4580            AtomId::AtomPackageManagerAppsFilterCacheUpdateReported => "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED",
4581            AtomId::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
4582            AtomId::AtomWearMediaOutputSwitcherAllDevicesScanLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY",
4583            AtomId::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
4584            AtomId::AtomWsWatchFaceFavoriteActionReported => "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED",
4585            AtomId::AtomWsWatchFaceSetActionReported => "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED",
4586            AtomId::AtomPackageUninstallationReported => "ATOM_PACKAGE_UNINSTALLATION_REPORTED",
4587            AtomId::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
4588            AtomId::AtomGameModeConfigurationChanged => "ATOM_GAME_MODE_CONFIGURATION_CHANGED",
4589            AtomId::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
4590            AtomId::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
4591            AtomId::AtomNetworkSliceDailyDataUsageReported => "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED",
4592            AtomId::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
4593            AtomId::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
4594            AtomId::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
4595            AtomId::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
4596            AtomId::AtomGetTypeAccessedWithoutPermission => "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION",
4597            AtomId::AtomMobileBundledAppInfoGathered => "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED",
4598            AtomId::AtomWsWatchFaceComplicationSetChanged => "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED",
4599            AtomId::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
4600            AtomId::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
4601            AtomId::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
4602            AtomId::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
4603            AtomId::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
4604            AtomId::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
4605            AtomId::AtomPerformanceHintSessionReported => "ATOM_PERFORMANCE_HINT_SESSION_REPORTED",
4606            AtomId::AtomMediametricsMidiDeviceCloseReported => "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED",
4607            AtomId::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
4608            AtomId::AtomHotwordAudioEgressEventReported => "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED",
4609            AtomId::AtomLocationEnabledStateChanged => "ATOM_LOCATION_ENABLED_STATE_CHANGED",
4610            AtomId::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
4611            AtomId::AtomUsbComplianceWarningsReported => "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED",
4612            AtomId::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
4613            AtomId::AtomMediaProviderVolumeRecoveryReported => "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED",
4614            AtomId::AtomBiometricPropertiesCollected => "ATOM_BIOMETRIC_PROPERTIES_COLLECTED",
4615            AtomId::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
4616            AtomId::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
4617            AtomId::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
4618            AtomId::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
4619            AtomId::AtomDeviceLogAccessEventReported => "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED",
4620            AtomId::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
4621            AtomId::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
4622            AtomId::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
4623            AtomId::AtomNetworkValidationFailureStatsDailyReported => "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED",
4624            AtomId::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
4625            AtomId::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
4626            AtomId::AtomWsNotificationBridgemodeUpdated => "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED",
4627            AtomId::AtomWsNotificationDismissalActioned => "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED",
4628            AtomId::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
4629            AtomId::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
4630            AtomId::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
4631            AtomId::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
4632            AtomId::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
4633            AtomId::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
4634            AtomId::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
4635            AtomId::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
4636            AtomId::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
4637            AtomId::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
4638            AtomId::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
4639            AtomId::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
4640            AtomId::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
4641            AtomId::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
4642            AtomId::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
4643            AtomId::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
4644            AtomId::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
4645            AtomId::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
4646            AtomId::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
4647            AtomId::AtomDiskSpace => "ATOM_DISK_SPACE",
4648            AtomId::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
4649            AtomId::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
4650            AtomId::AtomTemperature => "ATOM_TEMPERATURE",
4651            AtomId::AtomBinderCalls => "ATOM_BINDER_CALLS",
4652            AtomId::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
4653            AtomId::AtomLooperStats => "ATOM_LOOPER_STATS",
4654            AtomId::AtomDiskStats => "ATOM_DISK_STATS",
4655            AtomId::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
4656            AtomId::AtomAppSize => "ATOM_APP_SIZE",
4657            AtomId::AtomCategorySize => "ATOM_CATEGORY_SIZE",
4658            AtomId::AtomProcStats => "ATOM_PROC_STATS",
4659            AtomId::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
4660            AtomId::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
4661            AtomId::AtomDiskIo => "ATOM_DISK_IO",
4662            AtomId::AtomPowerProfile => "ATOM_POWER_PROFILE",
4663            AtomId::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
4664            AtomId::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
4665            AtomId::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
4666            AtomId::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
4667            AtomId::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
4668            AtomId::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
4669            AtomId::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
4670            AtomId::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
4671            AtomId::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
4672            AtomId::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
4673            AtomId::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
4674            AtomId::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
4675            AtomId::AtomRoleHolder => "ATOM_ROLE_HOLDER",
4676            AtomId::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
4677            AtomId::AtomTrainInfo => "ATOM_TRAIN_INFO",
4678            AtomId::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
4679            AtomId::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
4680            AtomId::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
4681            AtomId::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
4682            AtomId::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
4683            AtomId::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
4684            AtomId::AtomFaceSettings => "ATOM_FACE_SETTINGS",
4685            AtomId::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
4686            AtomId::AtomAppOps => "ATOM_APP_OPS",
4687            AtomId::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
4688            AtomId::AtomSurfaceflingerStatsGlobalInfo => "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO",
4689            AtomId::AtomSurfaceflingerStatsLayerInfo => "ATOM_SURFACEFLINGER_STATS_LAYER_INFO",
4690            AtomId::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
4691            AtomId::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
4692            AtomId::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
4693            AtomId::AtomDangerousPermissionStateSampled => "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED",
4694            AtomId::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
4695            AtomId::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
4696            AtomId::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
4697            AtomId::AtomPackageNotificationPreferences => "ATOM_PACKAGE_NOTIFICATION_PREFERENCES",
4698            AtomId::AtomPackageNotificationChannelPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES",
4699            AtomId::AtomPackageNotificationChannelGroupPreferences => "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES",
4700            AtomId::AtomGnssStats => "ATOM_GNSS_STATS",
4701            AtomId::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
4702            AtomId::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
4703            AtomId::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
4704            AtomId::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
4705            AtomId::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
4706            AtomId::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
4707            AtomId::AtomBlobInfo => "ATOM_BLOB_INFO",
4708            AtomId::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
4709            AtomId::AtomBytesTransferByTagAndMetered => "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED",
4710            AtomId::AtomDndModeRule => "ATOM_DND_MODE_RULE",
4711            AtomId::AtomGeneralExternalStorageAccessStats => "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS",
4712            AtomId::AtomIncomingSms => "ATOM_INCOMING_SMS",
4713            AtomId::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
4714            AtomId::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
4715            AtomId::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
4716            AtomId::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
4717            AtomId::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
4718            AtomId::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
4719            AtomId::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
4720            AtomId::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
4721            AtomId::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
4722            AtomId::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
4723            AtomId::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
4724            AtomId::AtomCpuCyclesPerThreadGroupCluster => "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER",
4725            AtomId::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
4726            AtomId::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
4727            AtomId::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
4728            AtomId::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
4729            AtomId::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
4730            AtomId::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
4731            AtomId::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
4732            AtomId::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
4733            AtomId::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
4734            AtomId::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
4735            AtomId::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
4736            AtomId::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
4737            AtomId::AtomBatteryUsageStatsBeforeReset => "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET",
4738            AtomId::AtomBatteryUsageStatsSinceReset => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET",
4739            AtomId::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL",
4740            AtomId::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
4741            AtomId::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
4742            AtomId::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
4743            AtomId::AtomVmstat => "ATOM_VMSTAT",
4744            AtomId::AtomKeystore2KeyCreationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO",
4745            AtomId::AtomKeystore2KeyCreationWithAuthInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO",
4746            AtomId::AtomKeystore2KeyCreationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO",
4747            AtomId::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
4748            AtomId::AtomKeystore2KeyOperationWithPurposeAndModesInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO",
4749            AtomId::AtomKeystore2KeyOperationWithGeneralInfo => "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO",
4750            AtomId::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
4751            AtomId::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
4752            AtomId::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
4753            AtomId::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
4754            AtomId::AtomAccessibilityFloatingMenuStats => "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS",
4755            AtomId::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
4756            AtomId::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
4757            AtomId::AtomCarWatchdogSystemIoUsageSummary => "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY",
4758            AtomId::AtomCarWatchdogUidIoUsageSummary => "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY",
4759            AtomId::AtomImsRegistrationFeatureTagStats => "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS",
4760            AtomId::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
4761            AtomId::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
4762            AtomId::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
4763            AtomId::AtomSipTransportFeatureTagStats => "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS",
4764            AtomId::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
4765            AtomId::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
4766            AtomId::AtomImsDedicatedBearerListenerEvent => "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT",
4767            AtomId::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
4768            AtomId::AtomImsRegistrationServiceDescStats => "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS",
4769            AtomId::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
4770            AtomId::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
4771            AtomId::AtomGbaEvent => "ATOM_GBA_EVENT",
4772            AtomId::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
4773            AtomId::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
4774            AtomId::AtomPersistentUriPermissionsAmountPerPackage => "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE",
4775            AtomId::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
4776            AtomId::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
4777            AtomId::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
4778            AtomId::AtomUserInfo => "ATOM_USER_INFO",
4779            AtomId::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
4780            AtomId::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
4781            AtomId::AtomRemoteKeyProvisioningErrorCounts => "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS",
4782            AtomId::AtomSafetyState => "ATOM_SAFETY_STATE",
4783            AtomId::AtomIncomingMms => "ATOM_INCOMING_MMS",
4784            AtomId::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
4785            AtomId::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
4786            AtomId::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
4787            AtomId::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
4788            AtomId::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
4789            AtomId::AtomNetworkSelectionRematchReasonsInfo => "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO",
4790            AtomId::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
4791            AtomId::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
4792            AtomId::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
4793            AtomId::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
4794            AtomId::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
4795            AtomId::AtomWsActiveWatchFaceComplicationSetSnapshot => "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT",
4796            AtomId::AtomProcessState => "ATOM_PROCESS_STATE",
4797            AtomId::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
4798            AtomId::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
4799            AtomId::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
4800            AtomId::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
4801            AtomId::AtomWsFavouriteWatchFaceListSnapshot => "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT",
4802            AtomId::AtomAccessibilityCheckResultReported => "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED",
4803            AtomId::AtomAdaptiveAuthUnlockAfterLockReported => "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED",
4804            AtomId::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
4805            AtomId::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
4806            AtomId::AtomThermalHeadroomThresholdsCalled => "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED",
4807            AtomId::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
4808            AtomId::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
4809            AtomId::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
4810            AtomId::AtomJsscriptengineLatencyReported => "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED",
4811            AtomId::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
4812            AtomId::AtomAdServicesMesurementReportsUploaded => "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED",
4813            AtomId::AtomMobileDataDownloadFileGroupStatusReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED",
4814            AtomId::AtomMobileDataDownloadDownloadResultReported => "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED",
4815            AtomId::AtomAdServicesSettingsUsageReported => "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED",
4816            AtomId::AtomBackgroundFetchProcessReported => "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED",
4817            AtomId::AtomUpdateCustomAudienceProcessReported => "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED",
4818            AtomId::AtomRunAdBiddingProcessReported => "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED",
4819            AtomId::AtomRunAdScoringProcessReported => "ATOM_RUN_AD_SCORING_PROCESS_REPORTED",
4820            AtomId::AtomRunAdSelectionProcessReported => "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED",
4821            AtomId::AtomRunAdBiddingPerCaProcessReported => "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED",
4822            AtomId::AtomMobileDataDownloadFileGroupStorageStatsReported => "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED",
4823            AtomId::AtomAdServicesMeasurementRegistrations => "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS",
4824            AtomId::AtomAdServicesGetTopicsReported => "ATOM_AD_SERVICES_GET_TOPICS_REPORTED",
4825            AtomId::AtomAdServicesEpochComputationGetTopTopicsReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED",
4826            AtomId::AtomAdServicesEpochComputationClassifierReported => "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
4827            AtomId::AtomAdServicesBackCompatGetTopicsReported => "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED",
4828            AtomId::AtomAdServicesBackCompatEpochComputationClassifierReported => "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED",
4829            AtomId::AtomAdServicesMeasurementDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS",
4830            AtomId::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
4831            AtomId::AtomAdServicesBackgroundJobsExecutionReported => "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED",
4832            AtomId::AtomAdServicesMeasurementDelayedSourceRegistration => "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION",
4833            AtomId::AtomAdServicesMeasurementAttribution => "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION",
4834            AtomId::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
4835            AtomId::AtomAdServicesMeasurementWipeout => "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT",
4836            AtomId::AtomAdServicesMeasurementAdIdMatchForDebugKeys => "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS",
4837            AtomId::AtomAdServicesEnrollmentDataStored => "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED",
4838            AtomId::AtomAdServicesEnrollmentFileDownloaded => "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED",
4839            AtomId::AtomAdServicesEnrollmentMatched => "ATOM_AD_SERVICES_ENROLLMENT_MATCHED",
4840            AtomId::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
4841            AtomId::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
4842            AtomId::AtomAdServicesMeasurementClickVerification => "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION",
4843            AtomId::AtomAdServicesEncryptionKeyFetched => "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED",
4844            AtomId::AtomAdServicesEncryptionKeyDbTransactionEnded => "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED",
4845            AtomId::AtomDestinationRegisteredBeacons => "ATOM_DESTINATION_REGISTERED_BEACONS",
4846            AtomId::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
4847            AtomId::AtomInteractionReportingTableCleared => "ATOM_INTERACTION_REPORTING_TABLE_CLEARED",
4848            AtomId::AtomAppManifestConfigHelperCalled => "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED",
4849            AtomId::AtomAdFilteringProcessJoinCaReported => "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED",
4850            AtomId::AtomAdFilteringProcessAdSelectionReported => "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED",
4851            AtomId::AtomAdCounterHistogramUpdaterReported => "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED",
4852            AtomId::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
4853            AtomId::AtomKAnonImmediateSignJoinStatusReported => "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED",
4854            AtomId::AtomKAnonBackgroundJobStatusReported => "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED",
4855            AtomId::AtomKAnonInitializeStatusReported => "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED",
4856            AtomId::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
4857            AtomId::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
4858            AtomId::AtomKAnonKeyAttestationStatusReported => "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED",
4859            AtomId::AtomGetAdSelectionDataApiCalled => "ATOM_GET_AD_SELECTION_DATA_API_CALLED",
4860            AtomId::AtomGetAdSelectionDataBuyerInputGenerated => "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED",
4861            AtomId::AtomBackgroundJobSchedulingReported => "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED",
4862            AtomId::AtomTopicsEncryptionEpochComputationReported => "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED",
4863            AtomId::AtomTopicsEncryptionGetTopicsReported => "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED",
4864            AtomId::AtomAdservicesShellCommandCalled => "ATOM_ADSERVICES_SHELL_COMMAND_CALLED",
4865            AtomId::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
4866            AtomId::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
4867            AtomId::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
4868            AtomId::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
4869            AtomId::AtomPersistAdSelectionResultCalled => "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED",
4870            AtomId::AtomServerAuctionKeyFetchCalled => "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED",
4871            AtomId::AtomServerAuctionBackgroundKeyFetchEnabled => "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED",
4872            AtomId::AtomAdServicesMeasurementProcessOdpRegistration => "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION",
4873            AtomId::AtomAdServicesMeasurementNotifyRegistrationToOdp => "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP",
4874            AtomId::AtomSelectAdsFromOutcomesApiCalled => "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED",
4875            AtomId::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
4876            AtomId::AtomAdServicesEnrollmentTransactionStats => "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS",
4877            AtomId::AtomAdServicesCobaltLoggerEventReported => "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED",
4878            AtomId::AtomAdServicesCobaltPeriodicJobEventReported => "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED",
4879            AtomId::AtomUpdateSignalsProcessReported => "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED",
4880            AtomId::AtomTopicsScheduleEpochJobSettingReported => "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED",
4881            AtomId::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
4882            AtomId::AtomAiWallpapersTemplateSelected => "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED",
4883            AtomId::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
4884            AtomId::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
4885            AtomId::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
4886            AtomId::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
4887            AtomId::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
4888            AtomId::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
4889            AtomId::AtomAppSearchSetSchemaStatsReported => "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED",
4890            AtomId::AtomAppSearchSchemaMigrationStatsReported => "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED",
4891            AtomId::AtomAppSearchUsageSearchIntentStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED",
4892            AtomId::AtomAppSearchUsageSearchIntentRawQueryStatsReported => "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED",
4893            AtomId::AtomAppSearchAppsIndexerStatsReported => "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED",
4894            AtomId::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
4895            AtomId::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
4896            AtomId::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
4897            AtomId::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
4898            AtomId::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
4899            AtomId::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
4900            AtomId::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
4901            AtomId::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
4902            AtomId::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
4903            AtomId::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
4904            AtomId::AtomAutofillFillRequestReported => "ATOM_AUTOFILL_FILL_REQUEST_REPORTED",
4905            AtomId::AtomAutofillFillResponseReported => "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED",
4906            AtomId::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
4907            AtomId::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
4908            AtomId::AtomAutofillFieldClassificationEventReported => "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED",
4909            AtomId::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
4910            AtomId::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
4911            AtomId::AtomCarWakeupFromSuspendReported => "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED",
4912            AtomId::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
4913            AtomId::AtomBluetoothHashedDeviceNameReported => "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED",
4914            AtomId::AtomBluetoothL2capCocClientConnection => "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION",
4915            AtomId::AtomBluetoothL2capCocServerConnection => "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION",
4916            AtomId::AtomBluetoothLeSessionConnected => "ATOM_BLUETOOTH_LE_SESSION_CONNECTED",
4917            AtomId::AtomRestrictedBluetoothDeviceNameReported => "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED",
4918            AtomId::AtomBluetoothProfileConnectionAttempted => "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED",
4919            AtomId::AtomBluetoothContentProfileErrorReported => "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED",
4920            AtomId::AtomBluetoothRfcommConnectionAttempted => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED",
4921            AtomId::AtomRemoteDeviceInformationWithMetricId => "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID",
4922            AtomId::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
4923            AtomId::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
4924            AtomId::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
4925            AtomId::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
4926            AtomId::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
4927            AtomId::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
4928            AtomId::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
4929            AtomId::AtomBluetoothCrossLayerEventReported => "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED",
4930            AtomId::AtomBroadcastAudioSessionReported => "ATOM_BROADCAST_AUDIO_SESSION_REPORTED",
4931            AtomId::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
4932            AtomId::AtomBluetoothRfcommConnectionReportedAtClose => "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE",
4933            AtomId::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
4934            AtomId::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
4935            AtomId::AtomCameraFeatureCombinationQueryEvent => "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT",
4936            AtomId::AtomCertificateTransparencyLogListStateChanged => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED",
4937            AtomId::AtomCertificateTransparencyLogListUpdateFailed => "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_FAILED",
4938            AtomId::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
4939            AtomId::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
4940            AtomId::AtomTetheringActiveSessionsReported => "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED",
4941            AtomId::AtomNetworkStatsRecorderFileOperated => "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED",
4942            AtomId::AtomCoreNetworkingTerribleErrorOccurred => "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED",
4943            AtomId::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
4944            AtomId::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
4945            AtomId::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
4946            AtomId::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
4947            AtomId::AtomCpuPolicy => "ATOM_CPU_POLICY",
4948            AtomId::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
4949            AtomId::AtomCredentialManagerInitPhaseReported => "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED",
4950            AtomId::AtomCredentialManagerCandidatePhaseReported => "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED",
4951            AtomId::AtomCredentialManagerFinalPhaseReported => "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED",
4952            AtomId::AtomCredentialManagerTotalReported => "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED",
4953            AtomId::AtomCredentialManagerFinalnouidReported => "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED",
4954            AtomId::AtomCredentialManagerGetReported => "ATOM_CREDENTIAL_MANAGER_GET_REPORTED",
4955            AtomId::AtomCredentialManagerAuthClickReported => "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED",
4956            AtomId::AtomCredentialManagerApiv2Called => "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED",
4957            AtomId::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
4958            AtomId::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
4959            AtomId::AtomCronetEngineBuilderInitialized => "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED",
4960            AtomId::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
4961            AtomId::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
4962            AtomId::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
4963            AtomId::AtomDesktopModeSessionTaskUpdate => "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE",
4964            AtomId::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
4965            AtomId::AtomDeviceLockCheckInRequestReported => "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED",
4966            AtomId::AtomDeviceLockProvisioningCompleteReported => "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED",
4967            AtomId::AtomDeviceLockKioskAppRequestReported => "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED",
4968            AtomId::AtomDeviceLockCheckInRetryReported => "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED",
4969            AtomId::AtomDeviceLockProvisionFailureReported => "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED",
4970            AtomId::AtomDeviceLockLockUnlockDeviceFailureReported => "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED",
4971            AtomId::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
4972            AtomId::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
4973            AtomId::AtomDisplayModeDirectorVoteChanged => "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED",
4974            AtomId::AtomExternalDisplayStateChanged => "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED",
4975            AtomId::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
4976            AtomId::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
4977            AtomId::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
4978            AtomId::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
4979            AtomId::AtomExpressHistogramSampleReported => "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED",
4980            AtomId::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
4981            AtomId::AtomExpressUidHistogramSampleReported => "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED",
4982            AtomId::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
4983            AtomId::AtomFederatedComputeTrainingEventReported => "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED",
4984            AtomId::AtomExampleIteratorNextLatencyReported => "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED",
4985            AtomId::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
4986            AtomId::AtomBalAllowed => "ATOM_BAL_ALLOWED",
4987            AtomId::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
4988            AtomId::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
4989            AtomId::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
4990            AtomId::AtomStylusPredictionMetricsReported => "ATOM_STYLUS_PREDICTION_METRICS_REPORTED",
4991            AtomId::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
4992            AtomId::AtomMediaProjectionStateChanged => "ATOM_MEDIA_PROJECTION_STATE_CHANGED",
4993            AtomId::AtomMediaProjectionTargetChanged => "ATOM_MEDIA_PROJECTION_TARGET_CHANGED",
4994            AtomId::AtomExcessiveBinderProxyCountReported => "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED",
4995            AtomId::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
4996            AtomId::AtomMobileBytesTransferByProcState => "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE",
4997            AtomId::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
4998            AtomId::AtomSensitiveContentMediaProjectionSession => "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION",
4999            AtomId::AtomSensitiveNotificationAppProtectionSession => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION",
5000            AtomId::AtomSensitiveNotificationAppProtectionApplied => "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED",
5001            AtomId::AtomSensitiveNotificationRedaction => "ATOM_SENSITIVE_NOTIFICATION_REDACTION",
5002            AtomId::AtomSensitiveContentAppProtection => "ATOM_SENSITIVE_CONTENT_APP_PROTECTION",
5003            AtomId::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
5004            AtomId::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
5005            AtomId::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
5006            AtomId::AtomPowerSaveTempAllowlistChanged => "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED",
5007            AtomId::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
5008            AtomId::AtomContentOrFileUriEventReported => "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED",
5009            AtomId::AtomApplicationGrammaticalInflectionChanged => "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED",
5010            AtomId::AtomSystemGrammaticalInflectionChanged => "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED",
5011            AtomId::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
5012            AtomId::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
5013            AtomId::AtomHdmiSoundbarModeStatusReported => "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED",
5014            AtomId::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
5015            AtomId::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
5016            AtomId::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
5017            AtomId::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
5018            AtomId::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
5019            AtomId::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
5020            AtomId::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
5021            AtomId::AtomHealthConnectExportImportStatsReported => "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED",
5022            AtomId::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
5023            AtomId::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
5024            AtomId::AtomHealthConnectAppOpenedReported => "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED",
5025            AtomId::AtomHotwordEgressSizeAtomReported => "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED",
5026            AtomId::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
5027            AtomId::AtomIkeLivenessCheckSessionValidated => "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED",
5028            AtomId::AtomNegotiatedSecurityAssociation => "ATOM_NEGOTIATED_SECURITY_ASSOCIATION",
5029            AtomId::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
5030            AtomId::AtomKeyboardSystemsEventReported => "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED",
5031            AtomId::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
5032            AtomId::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
5033            AtomId::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
5034            AtomId::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
5035            AtomId::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
5036            AtomId::AtomChreSignificantMotionStateChanged => "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED",
5037            AtomId::AtomPopulationDensityProviderLoadingReported => "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED",
5038            AtomId::AtomDensityBasedCoarseLocationsUsageReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED",
5039            AtomId::AtomDensityBasedCoarseLocationsProviderQueryReported => "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED",
5040            AtomId::AtomMediaCodecReclaimRequestCompleted => "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED",
5041            AtomId::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
5042            AtomId::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
5043            AtomId::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
5044            AtomId::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
5045            AtomId::AtomMteState => "ATOM_MTE_STATE",
5046            AtomId::AtomMicroxrDeviceBootCompleteReported => "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED",
5047            AtomId::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
5048            AtomId::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
5049            AtomId::AtomNfcPollingLoopNotificationReported => "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED",
5050            AtomId::AtomNfcProprietaryCapabilitiesReported => "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED",
5051            AtomId::AtomOndevicepersonalizationApiCalled => "ATOM_ONDEVICEPERSONALIZATION_API_CALLED",
5052            AtomId::AtomComponentStateChangedReported => "ATOM_COMPONENT_STATE_CHANGED_REPORTED",
5053            AtomId::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
5054            AtomId::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
5055            AtomId::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
5056            AtomId::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
5057            AtomId::AtomPermissionRationaleDialogViewed => "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED",
5058            AtomId::AtomPermissionRationaleDialogActionReported => "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED",
5059            AtomId::AtomAppDataSharingUpdatesNotificationInteraction => "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION",
5060            AtomId::AtomAppDataSharingUpdatesFragmentViewed => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED",
5061            AtomId::AtomAppDataSharingUpdatesFragmentActionReported => "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED",
5062            AtomId::AtomEnhancedConfirmationDialogResultReported => "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED",
5063            AtomId::AtomEnhancedConfirmationRestrictionCleared => "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED",
5064            AtomId::AtomPhotopickerSessionInfoReported => "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED",
5065            AtomId::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
5066            AtomId::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
5067            AtomId::AtomPhotopickerMediaItemStatusReported => "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED",
5068            AtomId::AtomPhotopickerPreviewInfoLogged => "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED",
5069            AtomId::AtomPhotopickerMenuInteractionLogged => "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED",
5070            AtomId::AtomPhotopickerBannerInteractionLogged => "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED",
5071            AtomId::AtomPhotopickerMediaLibraryInfoLogged => "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED",
5072            AtomId::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
5073            AtomId::AtomPhotopickerMediaGridSyncInfoReported => "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED",
5074            AtomId::AtomPhotopickerAlbumSyncInfoReported => "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED",
5075            AtomId::AtomPhotopickerSearchInfoReported => "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED",
5076            AtomId::AtomSearchDataExtractionDetailsReported => "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED",
5077            AtomId::AtomEmbeddedPhotopickerInfoReported => "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED",
5078            AtomId::AtomAtom9999 => "ATOM_ATOM_9999",
5079            AtomId::AtomAtom99999 => "ATOM_ATOM_99999",
5080            AtomId::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
5081            AtomId::AtomScreenTimeoutOverrideReported => "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED",
5082            AtomId::AtomScreenInteractiveSessionReported => "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED",
5083            AtomId::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
5084            AtomId::AtomMediaProviderDatabaseRollbackReported => "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED",
5085            AtomId::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
5086            AtomId::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
5087            AtomId::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
5088            AtomId::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
5089            AtomId::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
5090            AtomId::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
5091            AtomId::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
5092            AtomId::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
5093            AtomId::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
5094            AtomId::AtomSandboxActivityEventOccurred => "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED",
5095            AtomId::AtomSdkSandboxRestrictedAccessInSession => "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION",
5096            AtomId::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
5097            AtomId::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
5098            AtomId::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
5099            AtomId::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
5100            AtomId::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
5101            AtomId::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
5102            AtomId::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
5103            AtomId::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
5104            AtomId::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
5105            AtomId::AtomDisplaySwitchLatencyTracked => "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED",
5106            AtomId::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
5107            AtomId::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
5108            AtomId::AtomCommunalHubWidgetEventReported => "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED",
5109            AtomId::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
5110            AtomId::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
5111            AtomId::AtomCallStats => "ATOM_CALL_STATS",
5112            AtomId::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
5113            AtomId::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
5114            AtomId::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
5115            AtomId::AtomCellularRadioPowerStateChanged => "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED",
5116            AtomId::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
5117            AtomId::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
5118            AtomId::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
5119            AtomId::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
5120            AtomId::AtomIwlanUnderlyingNetworkValidationResultReported => "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED",
5121            AtomId::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
5122            AtomId::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
5123            AtomId::AtomQnsFallbackRestrictionChanged => "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED",
5124            AtomId::AtomQnsRatPreferenceMismatchInfo => "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO",
5125            AtomId::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
5126            AtomId::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
5127            AtomId::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
5128            AtomId::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
5129            AtomId::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
5130            AtomId::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
5131            AtomId::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
5132            AtomId::AtomSatelliteSosMessageRecommender => "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER",
5133            AtomId::AtomCarrierRoamingSatelliteSession => "ATOM_CARRIER_ROAMING_SATELLITE_SESSION",
5134            AtomId::AtomCarrierRoamingSatelliteControllerStats => "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS",
5135            AtomId::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
5136            AtomId::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
5137            AtomId::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
5138            AtomId::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
5139            AtomId::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
5140            AtomId::AtomThreadnetworkTelemetryDataReported => "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED",
5141            AtomId::AtomThreadnetworkTopoEntryRepeated => "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED",
5142            AtomId::AtomThreadnetworkDeviceInfoReported => "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED",
5143            AtomId::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
5144            AtomId::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
5145            AtomId::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
5146            AtomId::AtomTestUprobestatsAtomReported => "ATOM_TEST_UPROBESTATS_ATOM_REPORTED",
5147            AtomId::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
5148            AtomId::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
5149            AtomId::AtomSysproxyBluetoothBytesTransfer => "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER",
5150            AtomId::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
5151            AtomId::AtomWearCompanionConnectionState => "ATOM_WEAR_COMPANION_CONNECTION_STATE",
5152            AtomId::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
5153            AtomId::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
5154            AtomId::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
5155            AtomId::AtomWearMediaOutputSwitcherDeviceScanApiLatency => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY",
5156            AtomId::AtomWearMediaOutputSwitcherSassDeviceUnavailable => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE",
5157            AtomId::AtomWearMediaOutputSwitcherFastpairApiTimeout => "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT",
5158            AtomId::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
5159            AtomId::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
5160            AtomId::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
5161            AtomId::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
5162            AtomId::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
5163            AtomId::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
5164            AtomId::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
5165            AtomId::AtomTileRequested => "ATOM_TILE_REQUESTED",
5166            AtomId::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
5167            AtomId::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
5168            AtomId::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
5169            AtomId::AtomInflationFailed => "ATOM_INFLATION_FAILED",
5170            AtomId::AtomIgnoredInflationFailuresReported => "ATOM_IGNORED_INFLATION_FAILURES_REPORTED",
5171            AtomId::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
5172            AtomId::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
5173            AtomId::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
5174            AtomId::AtomWearTimeSyncAttemptCompleted => "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED",
5175            AtomId::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
5176            AtomId::AtomWearAdaptiveSuspendStatsReported => "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED",
5177            AtomId::AtomWearPowerAnomalyServiceOperationalStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED",
5178            AtomId::AtomWearPowerAnomalyServiceEventStatsReported => "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED",
5179            AtomId::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
5180            AtomId::AtomWsIncomingCallActionReported => "ATOM_WS_INCOMING_CALL_ACTION_REPORTED",
5181            AtomId::AtomWsCallDisconnectionReported => "ATOM_WS_CALL_DISCONNECTION_REPORTED",
5182            AtomId::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
5183            AtomId::AtomWsCallUserExperienceLatencyReported => "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED",
5184            AtomId::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
5185            AtomId::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
5186            AtomId::AtomWsWatchFaceRestrictedComplicationsImpacted => "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED",
5187            AtomId::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED",
5188            AtomId::AtomWsComplicationsImpactedNotificationEventReported => "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED",
5189            AtomId::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
5190            AtomId::AtomWsBugreportRequested => "ATOM_WS_BUGREPORT_REQUESTED",
5191            AtomId::AtomWsBugreportTriggered => "ATOM_WS_BUGREPORT_TRIGGERED",
5192            AtomId::AtomWsBugreportFinished => "ATOM_WS_BUGREPORT_FINISHED",
5193            AtomId::AtomWsBugreportResultReceived => "ATOM_WS_BUGREPORT_RESULT_RECEIVED",
5194            AtomId::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
5195            AtomId::AtomWsFavoriteWatchFaceSnapshot => "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT",
5196            AtomId::AtomWsPhotosWatchFaceFeatureSnapshot => "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT",
5197            AtomId::AtomWsWatchFaceCustomizationSnapshot => "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT",
5198            AtomId::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
5199            AtomId::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
5200            AtomId::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
5201            AtomId::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
5202            AtomId::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
5203            AtomId::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
5204            AtomId::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
5205            AtomId::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
5206            AtomId::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
5207            AtomId::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
5208            AtomId::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
5209            AtomId::AtomWifiAwareResourceUsingChanged => "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED",
5210            AtomId::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
5211            AtomId::AtomWifiLocalOnlyRequestReceived => "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED",
5212            AtomId::AtomWifiLocalOnlyRequestScanTriggered => "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED",
5213            AtomId::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
5214            AtomId::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
5215            AtomId::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
5216            AtomId::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
5217            AtomId::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
5218            AtomId::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
5219            AtomId::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
5220            AtomId::AtomScorerPredictionResultReported => "ATOM_SCORER_PREDICTION_RESULT_REPORTED",
5221            AtomId::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
5222            AtomId::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
5223            AtomId::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
5224            AtomId::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
5225            AtomId::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
5226        }
5227    }
5228}
5229/// This file is named 'statsd_tracing_config.proto' rather than
5230/// 'statsd_config.proto' (which would be more consistent with the other
5231/// config protos) so it doesn't show up and confuse folks looking for
5232/// the existing statsd_config.proto for configuring statsd itself.
5233/// Same for the config proto itself.
5234#[derive(Clone, PartialEq, ::prost::Message)]
5235pub struct StatsdTracingConfig {
5236    /// This is for the common case of the atom id being known in the enum AtomId.
5237    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
5238    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
5239    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
5240    /// (e.g. non-upstream atoms that don't exist in AOSP).
5241    #[prost(int32, repeated, packed="false", tag="2")]
5242    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
5243    #[prost(message, repeated, tag="3")]
5244    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
5245}
5246#[derive(Clone, PartialEq, ::prost::Message)]
5247pub struct StatsdPullAtomConfig {
5248    #[prost(enumeration="AtomId", repeated, packed="false", tag="1")]
5249    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
5250    #[prost(int32, repeated, packed="false", tag="2")]
5251    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
5252    #[prost(int32, optional, tag="3")]
5253    pub pull_frequency_ms: ::core::option::Option<i32>,
5254    #[prost(string, repeated, tag="4")]
5255    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5256}
5257/// Configuration that allows to boost the priority of the 'traced' or
5258/// 'traced_probs' processes, by changing the scheduler configuration.
5259/// Only supported on Linux and Android the boosted process must have
5260/// 'CAP_SYS_NICE' capability.
5261#[derive(Clone, PartialEq, ::prost::Message)]
5262pub struct PriorityBoostConfig {
5263    #[prost(enumeration="priority_boost_config::BoostPolicy", optional, tag="1")]
5264    pub policy: ::core::option::Option<i32>,
5265    #[prost(uint32, optional, tag="2")]
5266    pub priority: ::core::option::Option<u32>,
5267}
5268/// Nested message and enum types in `PriorityBoostConfig`.
5269pub mod priority_boost_config {
5270    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5271    #[repr(i32)]
5272    pub enum BoostPolicy {
5273        PolicyUnspecified = 0,
5274        /// The default policy (e.g., CFS on Linux). Priority range: [0; 20]
5275        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
5276        /// than default 0, 20 is the highest priority.
5277        /// Note: this is the opposite semantic of the cmdline nice, and is done for
5278        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
5279        PolicySchedOther = 1,
5280        /// The Real-time policy, Priority range: [1; 99]
5281        PolicySchedFifo = 2,
5282    }
5283    impl BoostPolicy {
5284        /// String value of the enum field names used in the ProtoBuf definition.
5285        ///
5286        /// The values are not transformed in any way and thus are considered stable
5287        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5288        pub fn as_str_name(&self) -> &'static str {
5289            match self {
5290                BoostPolicy::PolicyUnspecified => "POLICY_UNSPECIFIED",
5291                BoostPolicy::PolicySchedOther => "POLICY_SCHED_OTHER",
5292                BoostPolicy::PolicySchedFifo => "POLICY_SCHED_FIFO",
5293            }
5294        }
5295    }
5296}
5297/// Config for polling process-related information from /proc/pid/status and
5298/// related files on Linux.
5299///
5300/// Data source name: "linux.process_stats".
5301#[derive(Clone, PartialEq, ::prost::Message)]
5302pub struct ProcessStatsConfig {
5303    #[prost(enumeration="process_stats_config::Quirks", repeated, packed="false", tag="1")]
5304    pub quirks: ::prost::alloc::vec::Vec<i32>,
5305    /// If enabled all processes will be scanned and dumped when the trace starts.
5306    #[prost(bool, optional, tag="2")]
5307    pub scan_all_processes_on_start: ::core::option::Option<bool>,
5308    /// If enabled thread names are also recoded (this is redundant if sched_switch
5309    /// is enabled).
5310    #[prost(bool, optional, tag="3")]
5311    pub record_thread_names: ::core::option::Option<bool>,
5312    /// If > 0 samples counters (see process_stats.proto) from
5313    /// /proc/pid/status and oom_score_adj every X ms.
5314    /// This is required to be > 100ms to avoid excessive CPU usage.
5315    #[prost(uint32, optional, tag="4")]
5316    pub proc_stats_poll_ms: ::core::option::Option<u32>,
5317    // id 5 never used
5318
5319    /// Explicit caching period during which the polling won't re-emit identical
5320    /// counter values. This is required to be either = 0 or a multiple of
5321    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
5322    /// rounded down to the nearest multiple.
5323    #[prost(uint32, optional, tag="6")]
5324    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
5325    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
5326    /// /proc/pid/smaps_rollup.
5327    ///
5328    /// Android: does NOT work with the system daemons by default, as it requires
5329    /// running the recording process (traced_probes or tracebox) as root. It is
5330    /// possible to avoid the root requirement, but the exact steps depend on the
5331    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
5332    /// check, and might be further covered by the procfs "hidepid" mount option.
5333    #[prost(bool, optional, tag="10")]
5334    pub scan_smaps_rollup: ::core::option::Option<bool>,
5335    /// If true: process descriptions will include process age (starttime in
5336    /// /proc/pid/stat).
5337    /// Introduced in: perfetto v44.
5338    #[prost(bool, optional, tag="11")]
5339    pub record_process_age: ::core::option::Option<bool>,
5340    /// If true and |proc_stats_poll_ms| is set, process stats will include time
5341    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
5342    /// Introduced in: perfetto v44.
5343    #[prost(bool, optional, tag="12")]
5344    pub record_process_runtime: ::core::option::Option<bool>,
5345    /// If true obtain per-process dmabuf resident set size from
5346    /// /proc/pid/dmabuf_rss.
5347    /// This feature is not in upstream linux, and is available only on some
5348    /// Android kernels.
5349    #[prost(bool, optional, tag="13")]
5350    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
5351    /// WARNING: unmaintained and deprecated. If true this will resolve file
5352    /// descriptors for each process so these can be mapped to their actual device
5353    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
5354    /// or new fds opened after initially scanning a process will not be
5355    /// recognized.
5356    #[prost(bool, optional, tag="9")]
5357    pub resolve_process_fds: ::core::option::Option<bool>,
5358}
5359/// Nested message and enum types in `ProcessStatsConfig`.
5360pub mod process_stats_config {
5361    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5362    #[repr(i32)]
5363    pub enum Quirks {
5364        Unspecified = 0,
5365        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
5366        /// startup is now disabled by default and can be re-enabled using the
5367        /// |scan_all_processes_on_start| arg.
5368        DisableInitialDump = 1,
5369        /// If set, disables the special interaction with "linux.ftrace" data source,
5370        /// where the process stats rescrapes any thread id seen in the ftrace
5371        /// stream.
5372        DisableOnDemand = 2,
5373    }
5374    impl Quirks {
5375        /// String value of the enum field names used in the ProtoBuf definition.
5376        ///
5377        /// The values are not transformed in any way and thus are considered stable
5378        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5379        pub fn as_str_name(&self) -> &'static str {
5380            match self {
5381                Quirks::Unspecified => "QUIRKS_UNSPECIFIED",
5382                Quirks::DisableInitialDump => "DISABLE_INITIAL_DUMP",
5383                Quirks::DisableOnDemand => "DISABLE_ON_DEMAND",
5384            }
5385        }
5386    }
5387}
5388/// Configuration for go/heapprofd.
5389/// Next id: 28
5390#[derive(Clone, PartialEq, ::prost::Message)]
5391pub struct HeapprofdConfig {
5392    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
5393    ///
5394    /// These are:
5395    /// * All heaps if heap_sampling_intervals is empty.
5396    /// * Those profiled due to all_heaps and not named in heaps if
5397    ///    heap_sampling_intervals is not empty.
5398    /// * The implicit libc.malloc heap if heaps is empty.
5399    ///
5400    /// Set to 1 for perfect accuracy.
5401    /// Otherwise, sample every sample_interval_bytes on average.
5402    ///
5403    /// See
5404    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
5405    /// for more details.
5406    ///
5407    /// BUGS
5408    /// Before Android 12, setting this to 0 would crash the target process.
5409    ///
5410    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
5411    /// this field or with heap_sampling_intervals), otherwise the producer will
5412    /// not start.
5413    #[prost(uint64, optional, tag="1")]
5414    pub sampling_interval_bytes: ::core::option::Option<u64>,
5415    /// If less than the given numbers of bytes are left free in the shared
5416    /// memory buffer, increase sampling interval by a factor of two.
5417    /// Adaptive sampling is disabled when set to 0.
5418    #[prost(uint64, optional, tag="24")]
5419    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
5420    /// Stop doubling the sampling_interval once the sampling interval has reached
5421    /// this value.
5422    #[prost(uint64, optional, tag="25")]
5423    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
5424    /// Names of process cmdlines to profile. The semantics before perfetto v57 are
5425    /// as the following section (A), and on newer versions are both (A) and (B):
5426    ///
5427    /// (A) E.g. surfaceflinger, com.android.phone
5428    /// This input is normalized in the following way: if it contains slashes,
5429    /// everything up to the last slash is discarded. If it contains "@",
5430    /// everything after the first @ is discared.
5431    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
5432    /// This transformation is also applied to the processes' command lines when
5433    /// matching.
5434    ///
5435    /// (B) Perfetto v57+: a pattern may also contain a wildcard ('*'), in which
5436    /// case it is matched against running processes' command lines using glob
5437    /// semantics. If the pattern starts with '/' it is matched against the full
5438    /// argv0 (e.g. "/system/bin/*"), otherwise it is matched against the binary
5439    /// name part of argv0 (e.g. "system_*"). Wildcard patterns are *not*
5440    /// normalized as described above.
5441    /// Wildcard patterns are supported only for profiling already-running
5442    /// processes. A config must set no_startup=true if using wildcards, or it will
5443    /// be rejected.
5444    #[prost(string, repeated, tag="2")]
5445    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5446    /// For watermark based triggering or local debugging.
5447    #[prost(uint64, repeated, packed="false", tag="4")]
5448    pub pid: ::prost::alloc::vec::Vec<u64>,
5449    /// Only profile target if it was installed by one of the packages given.
5450    /// Special values are:
5451    /// * @system: installed on the system partition
5452    /// * @product: installed on the product partition
5453    /// * @null: sideloaded
5454    /// Supported on Android 12+.
5455    #[prost(string, repeated, tag="26")]
5456    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5457    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
5458    /// "malloc".
5459    ///
5460    /// Introduced in Android 12.
5461    #[prost(string, repeated, tag="20")]
5462    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5463    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
5464    /// combination with all_heaps;
5465    ///
5466    /// Introduced in Android 12.
5467    #[prost(string, repeated, tag="27")]
5468    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5469    #[prost(bool, optional, tag="23")]
5470    pub stream_allocations: ::core::option::Option<bool>,
5471    /// If given, needs to be the same length as heaps and gives the sampling
5472    /// interval for the respective entry in heaps.
5473    ///
5474    /// Otherwise, sampling_interval_bytes is used.
5475    ///
5476    /// It is recommended to set sampling_interval_bytes to a reasonable default
5477    /// value when using this, as a value of 0 for sampling_interval_bytes will
5478    /// crash the target process before Android 12.
5479    ///
5480    /// Introduced in Android 12.
5481    ///
5482    /// All values must be non-zero or the producer will not start.
5483    #[prost(uint64, repeated, packed="false", tag="22")]
5484    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
5485    /// Sample all heaps registered by target process. Introduced in Android 12.
5486    #[prost(bool, optional, tag="21")]
5487    pub all_heaps: ::core::option::Option<bool>,
5488    /// Profile all processes eligible for profiling on the system.
5489    /// See
5490    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
5491    /// for which processes are eligible.
5492    ///
5493    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
5494    /// will crash when trying to launch a new process as it will have an
5495    /// unexpected open socket to heapprofd.
5496    ///
5497    /// heapprofd will likely be overloaded by the amount of data for low
5498    /// sampling intervals.
5499    #[prost(bool, optional, tag="5")]
5500    pub all: ::core::option::Option<bool>,
5501    /// Do not profile processes whose anon RSS + swap < given value.
5502    /// Introduced in Android 11.
5503    #[prost(uint32, optional, tag="15")]
5504    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
5505    /// Stop profile if heapprofd memory usage goes beyond the given value.
5506    /// Introduced in Android 11.
5507    #[prost(uint32, optional, tag="16")]
5508    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
5509    /// Stop profile if heapprofd CPU time since start of this data-source
5510    /// goes beyond given value.
5511    /// Introduced in Android 11.
5512    #[prost(uint64, optional, tag="17")]
5513    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
5514    /// Do not emit function names for mappings starting with this prefix.
5515    /// E.g. /system to not emit symbols for any system libraries.
5516    #[prost(string, repeated, tag="7")]
5517    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5518    /// Dump at a predefined interval.
5519    #[prost(message, optional, tag="6")]
5520    pub continuous_dump_config: ::core::option::Option<heapprofd_config::ContinuousDumpConfig>,
5521    /// Size of the shared memory buffer between the profiled processes and
5522    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
5523    /// MiB.
5524    ///
5525    /// Needs to be:
5526    /// * at least 8192,
5527    /// * a power of two,
5528    /// * a multiple of 4096.
5529    #[prost(uint64, optional, tag="8")]
5530    pub shmem_size_bytes: ::core::option::Option<u64>,
5531    /// When the shmem buffer is full, block the client instead of ending the
5532    /// trace. Use with caution as this will significantly slow down the target
5533    /// process.
5534    #[prost(bool, optional, tag="9")]
5535    pub block_client: ::core::option::Option<bool>,
5536    /// If set, stop the trace session after blocking the client for this
5537    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
5538    /// Introduced in Android 11.
5539    #[prost(uint32, optional, tag="14")]
5540    pub block_client_timeout_us: ::core::option::Option<u32>,
5541    /// Do not profile processes from startup, only match already running
5542    /// processes.
5543    ///
5544    /// Can not be set at the same time as no_running.
5545    /// Introduced in Android 11.
5546    #[prost(bool, optional, tag="10")]
5547    pub no_startup: ::core::option::Option<bool>,
5548    /// Do not profile running processes. Only match processes on startup.
5549    ///
5550    /// Can not be set at the same time as no_startup.
5551    /// Introduced in Android 11.
5552    #[prost(bool, optional, tag="11")]
5553    pub no_running: ::core::option::Option<bool>,
5554    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
5555    /// at the point in time when the sampled heap usage of the process was at its
5556    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
5557    /// self_allocated and self_freed to not be set.
5558    /// Introduced in Android 11.
5559    #[prost(bool, optional, tag="13")]
5560    pub dump_at_max: ::core::option::Option<bool>,
5561    // FEATURE FLAGS. THERE BE DRAGONS.
5562
5563    /// Escape hatch if the session is being torn down because of a forked child
5564    /// that shares memory space, but is not correctly identified as a vforked
5565    /// child.
5566    /// Introduced in Android 11.
5567    #[prost(bool, optional, tag="18")]
5568    pub disable_fork_teardown: ::core::option::Option<bool>,
5569    /// We try to automatically detect when a target applicatation vforks but then
5570    /// does a memory allocation (or free). This auto-detection can be disabled
5571    /// with this.
5572    /// Introduced in Android 11.
5573    #[prost(bool, optional, tag="19")]
5574    pub disable_vfork_detection: ::core::option::Option<bool>,
5575}
5576/// Nested message and enum types in `HeapprofdConfig`.
5577pub mod heapprofd_config {
5578    #[derive(Clone, PartialEq, ::prost::Message)]
5579    pub struct ContinuousDumpConfig {
5580        /// ms to wait before first dump.
5581        #[prost(uint32, optional, tag="5")]
5582        pub dump_phase_ms: ::core::option::Option<u32>,
5583        /// ms to wait between following dumps.
5584        #[prost(uint32, optional, tag="6")]
5585        pub dump_interval_ms: ::core::option::Option<u32>,
5586    }
5587}
5588/// Config for collecting /proc/pid/smaps.
5589#[derive(Clone, PartialEq, ::prost::Message)]
5590pub struct SmapsConfig {
5591    /// Set of fields to collect.
5592    /// If unset, defaults to: size, rss, anonymous, swap.
5593    #[prost(enumeration="smaps_config::VmaField", repeated, packed="false", tag="1")]
5594    pub vma_fields: ::prost::alloc::vec::Vec<i32>,
5595    /// If false, mappings are aggregated by their path name.
5596    /// If true, each mapping is serialised separately.
5597    #[prost(bool, optional, tag="2")]
5598    pub unaggregated: ::core::option::Option<bool>,
5599    /// Optional ordered list of redaction rules for the name of the mapping.
5600    /// Note that all mappings will still be emitted, these rules only affect the
5601    /// emitted name.
5602    /// If unset, all names are written as is.
5603    /// If set, the first matching rule decides on the action.
5604    /// If no rules match, the name is written as is.
5605    #[prost(message, repeated, tag="3")]
5606    pub name_redaction_rules: ::prost::alloc::vec::Vec<RedactionRule>,
5607}
5608/// Nested message and enum types in `SmapsConfig`.
5609pub mod smaps_config {
5610    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5611    #[repr(i32)]
5612    pub enum VmaField {
5613        Unknown = 0,
5614        Size = 1,
5615        Rss = 2,
5616        Anonymous = 3,
5617        Swap = 4,
5618        SharedClean = 5,
5619        SharedDirty = 6,
5620        PrivateClean = 7,
5621        PrivateDirty = 8,
5622        Locked = 9,
5623        Pss = 10,
5624        PssDirty = 11,
5625        SwapPss = 12,
5626    }
5627    impl VmaField {
5628        /// String value of the enum field names used in the ProtoBuf definition.
5629        ///
5630        /// The values are not transformed in any way and thus are considered stable
5631        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5632        pub fn as_str_name(&self) -> &'static str {
5633            match self {
5634                VmaField::Unknown => "VMA_FIELD_UNKNOWN",
5635                VmaField::Size => "VMA_FIELD_SIZE",
5636                VmaField::Rss => "VMA_FIELD_RSS",
5637                VmaField::Anonymous => "VMA_FIELD_ANONYMOUS",
5638                VmaField::Swap => "VMA_FIELD_SWAP",
5639                VmaField::SharedClean => "VMA_FIELD_SHARED_CLEAN",
5640                VmaField::SharedDirty => "VMA_FIELD_SHARED_DIRTY",
5641                VmaField::PrivateClean => "VMA_FIELD_PRIVATE_CLEAN",
5642                VmaField::PrivateDirty => "VMA_FIELD_PRIVATE_DIRTY",
5643                VmaField::Locked => "VMA_FIELD_LOCKED",
5644                VmaField::Pss => "VMA_FIELD_PSS",
5645                VmaField::PssDirty => "VMA_FIELD_PSS_DIRTY",
5646                VmaField::SwapPss => "VMA_FIELD_SWAP_PSS",
5647            }
5648        }
5649    }
5650}
5651#[derive(Clone, PartialEq, ::prost::Message)]
5652pub struct RedactionRule {
5653    /// The pattern to match against.
5654    #[prost(string, optional, tag="1")]
5655    pub pattern: ::core::option::Option<::prost::alloc::string::String>,
5656    #[prost(enumeration="redaction_rule::MatchMode", optional, tag="2")]
5657    pub match_mode: ::core::option::Option<i32>,
5658    /// If the pattern matches, keep the entire name. In other words, do not
5659    /// redact. This option exists since the rules are evaluated in order, so a
5660    /// more specific allow rule with keep_full can match before a more general
5661    /// deny rule. This option is mutually exclusive with |keep_file_extension| and
5662    /// |keep_path_elements|.
5663    #[prost(bool, optional, tag="3")]
5664    pub keep_full: ::core::option::Option<bool>,
5665    /// If the pattern matches, replace the name with this string (defaulting to
5666    /// <pf_redacted> if unset). The final emitted name might be further augmented
5667    /// by the options below keeping parts of the original name.
5668    #[prost(string, optional, tag="4")]
5669    pub replacement_name: ::core::option::Option<::prost::alloc::string::String>,
5670    /// If the pattern matches, keep the file extension, if any.
5671    /// Can be combined with |keep_path_elements|.
5672    #[prost(bool, optional, tag="5")]
5673    pub keep_file_extension: ::core::option::Option<bool>,
5674    /// If the pattern matches, keep the first N path elements (as separated by
5675    /// '/'). If the name is not a path, this option does nothing. Can be combined
5676    /// with |keep_file_extension|.
5677    #[prost(uint32, optional, tag="6")]
5678    pub keep_path_elements: ::core::option::Option<u32>,
5679}
5680/// Nested message and enum types in `RedactionRule`.
5681pub mod redaction_rule {
5682    /// How to match |pattern| against the name of the mapping.
5683    /// Note for future extensions: unrecognised enums are treated as always
5684    /// matching.
5685    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5686    #[repr(i32)]
5687    pub enum MatchMode {
5688        Unknown = 0,
5689        /// The pattern matches if it is a prefix of the mapping name.
5690        Prefix = 1,
5691        /// The pattern is matched against the mapping name as a pathname glob
5692        /// (see "man 7 glob" and FNM_PATHNAME in "man 3 fnmatch").
5693        /// The key distinction is that path separators in the name are *not* matched
5694        /// against wildcards. So a pattern of the form "/usr/*/llvm" would match
5695        /// "/usr/lib/llvm" but not "/usr/lib/nested/llvm".
5696        /// Note: any "(deleted)" suffix is excluded before matching.
5697        GlobPath = 2,
5698        /// The pattern is matched against the mapping name without special-casing
5699        /// path separators. So a pattern of the form "/usr/*/llvm" would match
5700        /// both "/usr/lib/llvm" and "/usr/lib/nested/llvm".
5701        /// Note: any "(deleted)" suffix is excluded before matching.
5702        GlobString = 3,
5703    }
5704    impl MatchMode {
5705        /// String value of the enum field names used in the ProtoBuf definition.
5706        ///
5707        /// The values are not transformed in any way and thus are considered stable
5708        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5709        pub fn as_str_name(&self) -> &'static str {
5710            match self {
5711                MatchMode::Unknown => "MATCH_MODE_UNKNOWN",
5712                MatchMode::Prefix => "MATCH_MODE_PREFIX",
5713                MatchMode::GlobPath => "MATCH_MODE_GLOB_PATH",
5714                MatchMode::GlobString => "MATCH_MODE_GLOB_STRING",
5715            }
5716        }
5717    }
5718}
5719/// Configuration for managed app heap graph snapshots.
5720#[derive(Clone, PartialEq, ::prost::Message)]
5721pub struct JavaHprofConfig {
5722    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
5723    /// comm string). The semantics of this field were changed since its original
5724    /// introduction.
5725    ///
5726    /// On Android T+ (13+), this field can specify a single wildcard (*), and
5727    /// the profiler will attempt to match it in two possible ways:
5728    /// * if the pattern starts with a '/', then it is matched against the first
5729    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
5730    ///    "/bin/echo".
5731    /// * otherwise the pattern is matched against the part of argv0
5732    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
5733    ///    For example "echo" would match "/bin/echo".
5734    ///
5735    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
5736    /// normalized prior to an exact string comparison. Normalization is as
5737    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
5738    /// the string contains forward slashes, trim everything up to and including
5739    /// the last one.
5740    ///
5741    /// Implementation note: in either case, at most 511 characters of cmdline
5742    /// are considered.
5743    #[prost(string, repeated, tag="1")]
5744    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5745    /// For watermark based triggering or local debugging.
5746    #[prost(uint64, repeated, packed="false", tag="2")]
5747    pub pid: ::prost::alloc::vec::Vec<u64>,
5748    /// Only profile target if it was installed by one of the packages given.
5749    /// Special values are:
5750    /// * @system: installed on the system partition
5751    /// * @product: installed on the product partition
5752    /// * @null: sideloaded
5753    /// Supported on Android 12+.
5754    #[prost(string, repeated, tag="7")]
5755    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5756    /// Dump at a predefined interval.
5757    #[prost(message, optional, tag="3")]
5758    pub continuous_dump_config: ::core::option::Option<java_hprof_config::ContinuousDumpConfig>,
5759    /// Do not profile processes whose anon RSS + swap < given value.
5760    #[prost(uint32, optional, tag="4")]
5761    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
5762    /// Do not profile processes whose Java heap size < given value.
5763    #[prost(uint32, optional, tag="9")]
5764    pub min_java_heap_size_kb: ::core::option::Option<u32>,
5765    /// Include the process' /proc/self/smaps.
5766    /// This only shows maps that:
5767    /// * start with /system
5768    /// * start with /vendor
5769    /// * start with /data/app
5770    /// * contain "extracted in memory from Y", where Y matches any of the above
5771    ///
5772    /// Superseded by |smaps_config| in perfetto v58+.
5773    #[prost(bool, optional, tag="5")]
5774    pub dump_smaps: ::core::option::Option<bool>,
5775    /// If set, include /proc/self/smaps memory mappings.
5776    ///
5777    /// Added in perfetto v58.
5778    #[prost(message, optional, tag="8")]
5779    pub smaps_config: ::core::option::Option<SmapsConfig>,
5780    /// Exclude objects of the following types from the profile. This can be
5781    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
5782    #[prost(string, repeated, tag="6")]
5783    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5784}
5785/// Nested message and enum types in `JavaHprofConfig`.
5786pub mod java_hprof_config {
5787    /// If dump_interval_ms != 0, the following configuration is used.
5788    #[derive(Clone, PartialEq, ::prost::Message)]
5789    pub struct ContinuousDumpConfig {
5790        /// ms to wait before first continuous dump.
5791        /// A dump is always created at the beginning of the trace.
5792        #[prost(uint32, optional, tag="1")]
5793        pub dump_phase_ms: ::core::option::Option<u32>,
5794        /// ms to wait between following dumps.
5795        #[prost(uint32, optional, tag="2")]
5796        pub dump_interval_ms: ::core::option::Option<u32>,
5797        /// If true, scans all the processes to find `process_cmdline` and filter by
5798        /// `min_anonymous_memory_kb` only at data source start. Default on Android
5799        /// S-.
5800        ///
5801        /// If false, rescans all the processes to find on every dump. Default on
5802        /// Android T+.
5803        #[prost(bool, optional, tag="3")]
5804        pub scan_pids_only_on_start: ::core::option::Option<bool>,
5805    }
5806}
5807#[derive(Clone, PartialEq, ::prost::Message)]
5808pub struct PerfEvents {
5809}
5810/// Nested message and enum types in `PerfEvents`.
5811pub mod perf_events {
5812    /// The primary event to count. If recording multiple events, this
5813    /// counter is the "group leader".
5814    /// Commented from the perspective of its use in |PerfEventConfig|.
5815    /// Next id: 13
5816    #[derive(Clone, PartialEq, ::prost::Message)]
5817    pub struct Timebase {
5818        /// Optional modifiers for the event. Modelled after the perftool's
5819        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
5820        /// Currently supported: count scoping such as :u, :k, :uk, ...
5821        /// Modifiers can differ between the timebase and followers.
5822        #[prost(enumeration="EventModifier", repeated, packed="false", tag="12")]
5823        pub modifiers: ::prost::alloc::vec::Vec<i32>,
5824        /// If set, samples will be timestamped with the given clock.
5825        /// If unset, the clock is chosen by the implementation.
5826        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
5827        /// used for hardware events (due to interrupt safety), for which the
5828        /// recommendation is to use one of the monotonic clocks.
5829        #[prost(enumeration="PerfClock", optional, tag="11")]
5830        pub timestamp_clock: ::core::option::Option<i32>,
5831        /// Optional arbitrary name for the event, to identify it in the parsed
5832        /// trace. Does *not* affect the profiling itself. If unset, the trace
5833        /// parser will choose a suitable name.
5834        #[prost(string, optional, tag="10")]
5835        pub name: ::core::option::Option<::prost::alloc::string::String>,
5836        /// How often to snapshot the counter, along with any follower events and
5837        /// any additional sampled data such as callstacks.
5838        ///
5839        /// This choice also controls how the readings are taken:
5840        /// * With |frequency| or |period|, samples are taken by the kernel
5841        ///    into a ring buffer. Analogous to `perf record`.
5842        /// * With |poll_period_ms|, the userspace periodically snapshots
5843        ///    the counters using the read syscall. Analogous to `perf stat -I`.
5844        /// Prefer the sampling options unless you're recording PMUs whose
5845        /// perf drivers only support the reading mode.
5846        ///
5847        /// If unset, an implementation-defined sampling default is used.
5848        #[prost(oneof="timebase::Interval", tags="2, 1, 6")]
5849        pub interval: ::core::option::Option<timebase::Interval>,
5850        /// Counting event to use as the timebase.
5851        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
5852        /// which is what you usually want.
5853        #[prost(oneof="timebase::Event", tags="4, 3, 5")]
5854        pub event: ::core::option::Option<timebase::Event>,
5855    }
5856    /// Nested message and enum types in `Timebase`.
5857    pub mod timebase {
5858        /// How often to snapshot the counter, along with any follower events and
5859        /// any additional sampled data such as callstacks.
5860        ///
5861        /// This choice also controls how the readings are taken:
5862        /// * With |frequency| or |period|, samples are taken by the kernel
5863        ///    into a ring buffer. Analogous to `perf record`.
5864        /// * With |poll_period_ms|, the userspace periodically snapshots
5865        ///    the counters using the read syscall. Analogous to `perf stat -I`.
5866        /// Prefer the sampling options unless you're recording PMUs whose
5867        /// perf drivers only support the reading mode.
5868        ///
5869        /// If unset, an implementation-defined sampling default is used.
5870        #[derive(Clone, PartialEq, ::prost::Oneof)]
5871        pub enum Interval {
5872            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
5873            /// same as 1/period.
5874            /// Details: the actual sampling will still be based on a period, but the
5875            /// kernel will dynamically adjust it based on the observed event rate, to
5876            /// approximate this frequency. Works best with steady-rate events like
5877            /// timers.
5878            /// Not guaranteed to be honored as the kernel can throttle the sampling
5879            /// rate if it's too high.
5880            #[prost(uint64, tag="2")]
5881            Frequency(u64),
5882            /// Per-cpu sampling will occur every |period| counts of |event|.
5883            /// Prefer |frequency| by default, as it's easier to oversample with a
5884            /// fixed period.
5885            /// Not guaranteed to be honored as the kernel can throttle the sampling
5886            /// rate if it's too high.
5887            #[prost(uint64, tag="1")]
5888            Period(u64),
5889            /// Per-cpu values are read by the userspace every interval. If using this
5890            /// mode, only follower events are supported. Options such as
5891            /// |PerfEventConfig.CallstackSampling| are incompatible.
5892            /// The period can't be guaranteed to be exact since the readings are taken
5893            /// by userspace.
5894            #[prost(uint32, tag="6")]
5895            PollPeriodMs(u32),
5896        }
5897        /// Counting event to use as the timebase.
5898        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
5899        /// which is what you usually want.
5900        #[derive(Clone, PartialEq, ::prost::Oneof)]
5901        pub enum Event {
5902            #[prost(enumeration="super::Counter", tag="4")]
5903            Counter(i32),
5904            #[prost(message, tag="3")]
5905            Tracepoint(super::Tracepoint),
5906            #[prost(message, tag="5")]
5907            RawEvent(super::RawEvent),
5908        }
5909    }
5910    #[derive(Clone, PartialEq, ::prost::Message)]
5911    pub struct Tracepoint {
5912        /// Group and name for the tracepoint, acceptable forms:
5913        /// * "sched/sched_switch"
5914        /// * "sched:sched_switch"
5915        #[prost(string, optional, tag="1")]
5916        pub name: ::core::option::Option<::prost::alloc::string::String>,
5917        /// Optional field-level filter for the tracepoint. Only events matching this
5918        /// filter will be counted (and therefore contribute to the sampling period).
5919        /// Example: "prev_pid >= 42 && next_pid == 0".
5920        /// For full syntax, see kernel documentation on "Event filtering":
5921        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
5922        #[prost(string, optional, tag="2")]
5923        pub filter: ::core::option::Option<::prost::alloc::string::String>,
5924    }
5925    /// Syscall-level description of the event, propagated to the perf_event_attr
5926    /// struct. Primarily for local use-cases, since the event availability and
5927    /// encoding is hardware-specific.
5928    #[derive(Clone, PartialEq, ::prost::Message)]
5929    pub struct RawEvent {
5930        /// Either |type| or |pmu_name| can be set.
5931        #[prost(uint32, optional, tag="1")]
5932        pub r#type: ::core::option::Option<u32>,
5933        #[prost(uint64, optional, tag="2")]
5934        pub config: ::core::option::Option<u64>,
5935        #[prost(uint64, optional, tag="3")]
5936        pub config1: ::core::option::Option<u64>,
5937        #[prost(uint64, optional, tag="4")]
5938        pub config2: ::core::option::Option<u64>,
5939        /// The name of a dynamic PMU under /sys/bus/event_source/devices
5940        /// (e.g. "armv8_pmuv3").
5941        /// If set, leave |type| unset.
5942        /// Android: the relevant sysfs paths are not allowlisted by default, so
5943        /// this option will require a rooted device with selinux disabled.
5944        #[prost(string, optional, tag="5")]
5945        pub pmu_name: ::core::option::Option<::prost::alloc::string::String>,
5946    }
5947    /// Builtin counter names from the uapi header. Commented with their perf tool
5948    /// aliases.
5949    /// TODO(rsavitski): consider generating enums for cache events (should be
5950    /// finite), and generally make this list as extensive as possible. Excluding
5951    /// things like dynamic PMUs since those don't fit into a static enum.
5952    /// Next id: 21
5953    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5954    #[repr(i32)]
5955    pub enum Counter {
5956        UnknownCounter = 0,
5957        /// cpu-clock
5958        SwCpuClock = 1,
5959        /// page-faults, faults
5960        SwPageFaults = 2,
5961        /// task-clock
5962        SwTaskClock = 3,
5963        /// context-switches, cs
5964        SwContextSwitches = 4,
5965        /// cpu-migrations, migrations
5966        SwCpuMigrations = 5,
5967        /// minor-faults
5968        SwPageFaultsMin = 6,
5969        /// major-faults
5970        SwPageFaultsMaj = 7,
5971        /// alignment-faults
5972        SwAlignmentFaults = 8,
5973        /// emulation-faults
5974        SwEmulationFaults = 9,
5975        /// dummy
5976        SwDummy = 20,
5977        /// cpu-cycles, cycles
5978        HwCpuCycles = 10,
5979        /// instructions
5980        HwInstructions = 11,
5981        /// cache-references
5982        HwCacheReferences = 12,
5983        /// cache-misses
5984        HwCacheMisses = 13,
5985        /// branch-instructions, branches
5986        HwBranchInstructions = 14,
5987        /// branch-misses
5988        HwBranchMisses = 15,
5989        /// bus-cycles
5990        HwBusCycles = 16,
5991        /// stalled-cycles-frontend, idle-cycles-frontend
5992        HwStalledCyclesFrontend = 17,
5993        /// stalled-cycles-backend, idle-cycles-backend
5994        HwStalledCyclesBackend = 18,
5995        /// ref-cycles
5996        HwRefCpuCycles = 19,
5997    }
5998    impl Counter {
5999        /// String value of the enum field names used in the ProtoBuf definition.
6000        ///
6001        /// The values are not transformed in any way and thus are considered stable
6002        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6003        pub fn as_str_name(&self) -> &'static str {
6004            match self {
6005                Counter::UnknownCounter => "UNKNOWN_COUNTER",
6006                Counter::SwCpuClock => "SW_CPU_CLOCK",
6007                Counter::SwPageFaults => "SW_PAGE_FAULTS",
6008                Counter::SwTaskClock => "SW_TASK_CLOCK",
6009                Counter::SwContextSwitches => "SW_CONTEXT_SWITCHES",
6010                Counter::SwCpuMigrations => "SW_CPU_MIGRATIONS",
6011                Counter::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
6012                Counter::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
6013                Counter::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
6014                Counter::SwEmulationFaults => "SW_EMULATION_FAULTS",
6015                Counter::SwDummy => "SW_DUMMY",
6016                Counter::HwCpuCycles => "HW_CPU_CYCLES",
6017                Counter::HwInstructions => "HW_INSTRUCTIONS",
6018                Counter::HwCacheReferences => "HW_CACHE_REFERENCES",
6019                Counter::HwCacheMisses => "HW_CACHE_MISSES",
6020                Counter::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
6021                Counter::HwBranchMisses => "HW_BRANCH_MISSES",
6022                Counter::HwBusCycles => "HW_BUS_CYCLES",
6023                Counter::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
6024                Counter::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
6025                Counter::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
6026            }
6027        }
6028    }
6029    /// Subset of clocks that is supported by perf timestamping.
6030    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
6031    /// would require additions to the trace clock synchronisation logic.
6032    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6033    #[repr(i32)]
6034    pub enum PerfClock {
6035        UnknownPerfClock = 0,
6036        Realtime = 1,
6037        Monotonic = 2,
6038        MonotonicRaw = 3,
6039        Boottime = 4,
6040    }
6041    impl PerfClock {
6042        /// String value of the enum field names used in the ProtoBuf definition.
6043        ///
6044        /// The values are not transformed in any way and thus are considered stable
6045        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6046        pub fn as_str_name(&self) -> &'static str {
6047            match self {
6048                PerfClock::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
6049                PerfClock::Realtime => "PERF_CLOCK_REALTIME",
6050                PerfClock::Monotonic => "PERF_CLOCK_MONOTONIC",
6051                PerfClock::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
6052                PerfClock::Boottime => "PERF_CLOCK_BOOTTIME",
6053            }
6054        }
6055    }
6056    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6057    #[repr(i32)]
6058    pub enum EventModifier {
6059        UnknownEventModifier = 0,
6060        /// count only while in userspace
6061        CountUserspace = 1,
6062        /// count only while in kernel
6063        CountKernel = 2,
6064        /// count only while in hypervisor
6065        CountHypervisor = 3,
6066    }
6067    impl EventModifier {
6068        /// String value of the enum field names used in the ProtoBuf definition.
6069        ///
6070        /// The values are not transformed in any way and thus are considered stable
6071        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6072        pub fn as_str_name(&self) -> &'static str {
6073            match self {
6074                EventModifier::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
6075                EventModifier::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
6076                EventModifier::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
6077                EventModifier::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
6078            }
6079        }
6080    }
6081}
6082/// Additional events associated with a leader.
6083/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
6084#[derive(Clone, PartialEq, ::prost::Message)]
6085pub struct FollowerEvent {
6086    /// Modifiers can differ between the timebase and followers.
6087    #[prost(enumeration="perf_events::EventModifier", repeated, packed="false", tag="5")]
6088    pub modifiers: ::prost::alloc::vec::Vec<i32>,
6089    /// Optional arbitrary name for the event, to identify it in the parsed
6090    /// trace. Does *not* affect the profiling itself. If unset, the trace
6091    /// parser will choose a suitable name.
6092    #[prost(string, optional, tag="4")]
6093    pub name: ::core::option::Option<::prost::alloc::string::String>,
6094    #[prost(oneof="follower_event::Event", tags="1, 2, 3")]
6095    pub event: ::core::option::Option<follower_event::Event>,
6096}
6097/// Nested message and enum types in `FollowerEvent`.
6098pub mod follower_event {
6099    #[derive(Clone, PartialEq, ::prost::Oneof)]
6100    pub enum Event {
6101        #[prost(enumeration="super::perf_events::Counter", tag="1")]
6102        Counter(i32),
6103        #[prost(message, tag="2")]
6104        Tracepoint(super::perf_events::Tracepoint),
6105        #[prost(message, tag="3")]
6106        RawEvent(super::perf_events::RawEvent),
6107    }
6108}
6109/// Configuration for the traced_perf profiler.
6110///
6111/// Example config for basic cpu profiling:
6112///    perf_event_config {
6113///      timebase {
6114///        frequency: 80
6115///      }
6116///      callstack_sampling {
6117///        scope {
6118///          target_cmdline: "surfaceflinger"
6119///          target_cmdline: "system_server"
6120///        }
6121///        kernel_frames: true
6122///      }
6123///    }
6124///
6125/// Next id: 23
6126#[derive(Clone, PartialEq, ::prost::Message)]
6127pub struct PerfEventConfig {
6128    /// What event to sample on, and how often.
6129    /// Defined in common/perf_events.proto.
6130    #[prost(message, optional, tag="15")]
6131    pub timebase: ::core::option::Option<perf_events::Timebase>,
6132    /// Other events associated with the leader described in the timebase.
6133    #[prost(message, repeated, tag="19")]
6134    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
6135    /// If set, the profiler will sample userspace processes' callstacks at the
6136    /// interval specified by the |timebase|.
6137    /// If unset, the profiler will record only the event counts.
6138    #[prost(message, optional, tag="16")]
6139    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
6140    /// List of cpu indices for counting. If empty, the default is all cpus.
6141    ///
6142    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
6143    /// counter-only traces. A future change will likely reorganise the options,
6144    /// but this field will continue to be supported.
6145    ///
6146    /// Available since: perfetto v50.
6147    #[prost(uint32, repeated, packed="false", tag="20")]
6148    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
6149    /// Allow failure of perf_event_open
6150    #[prost(bool, optional, tag="21")]
6151    pub ignore_open_failure: ::core::option::Option<bool>,
6152    /// If not empty, consider only CPUs whose CPUID matches one of these values.
6153    #[prost(string, repeated, tag="22")]
6154    pub cpuid: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6155    //
6156    // Kernel <-> userspace ring buffer options:
6157    //
6158
6159    /// How often the per-cpu ring buffers are read by the producer.
6160    /// If unset, an implementation-defined default is used.
6161    #[prost(uint32, optional, tag="8")]
6162    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
6163    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
6164    /// kernel. If set, must be a power of two.
6165    /// If unset, an implementation-defined default is used.
6166    #[prost(uint32, optional, tag="3")]
6167    pub ring_buffer_pages: ::core::option::Option<u32>,
6168    //
6169    // Daemon's resource usage limits:
6170    //
6171
6172    /// Drop samples if the heap memory held by the samples in the unwinder queue
6173    /// is above the given limit. This counts the memory across all concurrent data
6174    /// sources (not just this one's), and there is no fairness guarantee - the
6175    /// whole quota might be used up by a concurrent source.
6176    #[prost(uint64, optional, tag="17")]
6177    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
6178    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
6179    /// footprint exceeds this value.
6180    #[prost(uint32, optional, tag="13")]
6181    pub max_daemon_memory_kb: ::core::option::Option<u32>,
6182    //
6183    // Niche options:
6184    //
6185
6186    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
6187    /// sampled process. This is primarily for Android, where this lookup is
6188    /// asynchronous. As long as the producer is waiting, the associated samples
6189    /// will be kept enqueued (putting pressure on the capacity of the shared
6190    /// unwinding queue). Once a lookup for a process expires, all associated
6191    /// samples are discarded. However, if the lookup still succeeds after the
6192    /// timeout, future samples will be handled normally.
6193    /// If unset, an implementation-defined default is used.
6194    #[prost(uint32, optional, tag="9")]
6195    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
6196    /// Optional period for clearing state cached by the userspace unwinder. This
6197    /// is a heavy operation that is only necessary for traces that target a wide
6198    /// set of processes, and require the memory footprint to be reset
6199    /// periodically. To effectively disable the cache clearing, set to a value
6200    /// greater than your trace duration.
6201    ///
6202    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
6203    ///
6204    /// If zero or unset:
6205    /// * before perfetto v52: no cache clearing.
6206    /// * perfetto v52+: implementation chooses an infrequent default.
6207    #[prost(uint32, optional, tag="10")]
6208    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
6209    /// If set, only profile target if it was installed by a package with one of
6210    /// these names. Special values:
6211    /// * "@system": installed on the system partition
6212    /// * "@product": installed on the product partition
6213    /// * "@null": sideloaded
6214    /// Supported on Android 12+.
6215    #[prost(string, repeated, tag="18")]
6216    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6217    //
6218    // Deprecated (superseded by options above):
6219    //
6220    // Do not set *any* of these fields in new configs.
6221    //
6222
6223    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
6224    /// We rely on this to detect such configs.
6225    #[prost(bool, optional, tag="1")]
6226    pub all_cpus: ::core::option::Option<bool>,
6227    #[prost(uint32, optional, tag="2")]
6228    pub sampling_frequency: ::core::option::Option<u32>,
6229    #[prost(bool, optional, tag="12")]
6230    pub kernel_frames: ::core::option::Option<bool>,
6231    #[prost(int32, repeated, packed="false", tag="4")]
6232    pub target_pid: ::prost::alloc::vec::Vec<i32>,
6233    #[prost(string, repeated, tag="5")]
6234    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6235    #[prost(int32, repeated, packed="false", tag="6")]
6236    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
6237    #[prost(string, repeated, tag="7")]
6238    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6239    #[prost(uint32, optional, tag="11")]
6240    pub additional_cmdline_count: ::core::option::Option<u32>,
6241}
6242/// Nested message and enum types in `PerfEventConfig`.
6243pub mod perf_event_config {
6244    //
6245    // Sub-messages (nested for generated code namespacing).
6246    //
6247
6248    #[derive(Clone, PartialEq, ::prost::Message)]
6249    pub struct CallstackSampling {
6250        /// Defines a set of processes for which samples are retained/skipped. If
6251        /// unset, all samples are kept, but beware that it will be very heavy on the
6252        /// stack unwinder, which might start dropping samples due to overload.
6253        #[prost(message, optional, tag="1")]
6254        pub scope: ::core::option::Option<Scope>,
6255        /// If true, callstacks will include the kernel-space frames. Such frames can
6256        /// be identified by a magical "kernel" string as their mapping name.
6257        /// Requires traced_perf to be running as root, or kptr_restrict to have been
6258        /// manually unrestricted. On Android, the platform should do the right thing
6259        /// on debug builds.
6260        /// This does *not* disclose KASLR, as only the function names are emitted.
6261        #[prost(bool, optional, tag="2")]
6262        pub kernel_frames: ::core::option::Option<bool>,
6263        /// Whether to record and unwind userspace callstacks. If unset, defaults to
6264        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
6265        /// as the most common default (this defaulting is only applicable if the
6266        /// outer CallstackSampling message is explicitly set).
6267        #[prost(enumeration="UnwindMode", optional, tag="3")]
6268        pub user_frames: ::core::option::Option<i32>,
6269    }
6270    #[derive(Clone, PartialEq, ::prost::Message)]
6271    pub struct Scope {
6272        /// Process ID (TGID) allowlist. If this list is not empty, only matching
6273        /// samples will be retained. If multiple allow/deny-lists are
6274        /// specified by the config, then all of them are evaluated for each sampled
6275        /// process.
6276        #[prost(int32, repeated, packed="false", tag="1")]
6277        pub target_pid: ::prost::alloc::vec::Vec<i32>,
6278        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
6279        /// comm string). The semantics of this field were changed since its original
6280        /// introduction.
6281        ///
6282        /// On Android T+ (13+), this field can specify a single wildcard (*), and
6283        /// the profiler will attempt to match it in two possible ways:
6284        /// * if the pattern starts with a '/', then it is matched against the first
6285        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
6286        ///    "/bin/echo".
6287        /// * otherwise the pattern is matched against the part of argv0
6288        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
6289        ///    For example "echo" would match "/bin/echo".
6290        ///
6291        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
6292        /// normalized prior to an exact string comparison. Normalization is as
6293        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
6294        /// the string contains forward slashes, trim everything up to and including
6295        /// the last one.
6296        ///
6297        /// Implementation note: in either case, at most 511 characters of cmdline
6298        /// are considered.
6299        #[prost(string, repeated, tag="2")]
6300        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6301        /// List of excluded pids.
6302        #[prost(int32, repeated, packed="false", tag="3")]
6303        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
6304        /// List of excluded cmdlines. See description of |target_cmdline| for how
6305        /// this is handled.
6306        #[prost(string, repeated, tag="4")]
6307        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
6308        // Niche features for systemwide callstacks:
6309
6310        /// Number of additional command lines to sample. Only those which are
6311        /// neither explicitly included nor excluded will be considered. Processes
6312        /// are accepted on a first come, first served basis.
6313        #[prost(uint32, optional, tag="5")]
6314        pub additional_cmdline_count: ::core::option::Option<u32>,
6315        /// If set to N, all encountered processes will be put into one of the N
6316        /// possible bins, and only one randomly-chosen bin will be selected for
6317        /// unwinding. The binning is simply "pid % N", under the assumption that
6318        /// low-order bits of pids are roughly uniformly distributed. Other explicit
6319        /// inclusions/exclusions in this |Scope| message are still respected.
6320        ///
6321        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
6322        /// values will be queryable in trace processor under the "stats" table as
6323        /// "perf_process_shard_count" and "perf_chosen_process_shard".
6324        ///
6325        /// NB: all data sources in a config that set |process_shard_count| must set
6326        /// it to the same value. The profiler will choose one bin for all those data
6327        /// sources.
6328        #[prost(uint32, optional, tag="6")]
6329        pub process_shard_count: ::core::option::Option<u32>,
6330    }
6331    /// Userspace unwinding mode.
6332    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6333    #[repr(i32)]
6334    pub enum UnwindMode {
6335        UnwindUnknown = 0,
6336        /// Do not unwind userspace:
6337        UnwindSkip = 1,
6338        /// Use libunwindstack (default):
6339        UnwindDwarf = 2,
6340        /// Use userspace frame pointer unwinder:
6341        UnwindFramePointer = 3,
6342        /// Ask the kernel to unwind the userspace stack via frame pointers, using
6343        /// PERF_SAMPLE_CALLCHAIN. The user stack bytes are not copied into the
6344        /// sample, which avoids the per-sample copy cost and the depth limit
6345        /// imposed by PERF_SAMPLE_STACK_USER. Requires that the userspace code
6346        /// (including system libraries) is built with frame pointers - the kernel
6347        /// walks the chain and returns instruction addresses, which still need to
6348        /// be symbolized offline using the recorded process mappings.
6349        UnwindKernelFramePointer = 4,
6350    }
6351    impl UnwindMode {
6352        /// String value of the enum field names used in the ProtoBuf definition.
6353        ///
6354        /// The values are not transformed in any way and thus are considered stable
6355        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6356        pub fn as_str_name(&self) -> &'static str {
6357            match self {
6358                UnwindMode::UnwindUnknown => "UNWIND_UNKNOWN",
6359                UnwindMode::UnwindSkip => "UNWIND_SKIP",
6360                UnwindMode::UnwindDwarf => "UNWIND_DWARF",
6361                UnwindMode::UnwindFramePointer => "UNWIND_FRAME_POINTER",
6362                UnwindMode::UnwindKernelFramePointer => "UNWIND_KERNEL_FRAME_POINTER",
6363            }
6364        }
6365    }
6366}
6367// When editing entries here remember also to update "sys_stats_counters.h" with
6368// the corresponding string definitions for the actual /proc files parser.
6369
6370/// Counter definitions for Linux's /proc/meminfo.
6371#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6372#[repr(i32)]
6373pub enum MeminfoCounters {
6374    MeminfoUnspecified = 0,
6375    MeminfoMemTotal = 1,
6376    MeminfoMemFree = 2,
6377    MeminfoMemAvailable = 3,
6378    MeminfoBuffers = 4,
6379    MeminfoCached = 5,
6380    MeminfoSwapCached = 6,
6381    MeminfoActive = 7,
6382    MeminfoInactive = 8,
6383    MeminfoActiveAnon = 9,
6384    MeminfoInactiveAnon = 10,
6385    MeminfoActiveFile = 11,
6386    MeminfoInactiveFile = 12,
6387    MeminfoUnevictable = 13,
6388    MeminfoMlocked = 14,
6389    MeminfoSwapTotal = 15,
6390    MeminfoSwapFree = 16,
6391    MeminfoDirty = 17,
6392    MeminfoWriteback = 18,
6393    MeminfoAnonPages = 19,
6394    MeminfoMapped = 20,
6395    MeminfoShmem = 21,
6396    MeminfoSlab = 22,
6397    MeminfoSlabReclaimable = 23,
6398    MeminfoSlabUnreclaimable = 24,
6399    MeminfoKernelStack = 25,
6400    MeminfoPageTables = 26,
6401    MeminfoCommitLimit = 27,
6402    MeminfoCommitedAs = 28,
6403    MeminfoVmallocTotal = 29,
6404    MeminfoVmallocUsed = 30,
6405    MeminfoVmallocChunk = 31,
6406    MeminfoCmaTotal = 32,
6407    MeminfoCmaFree = 33,
6408    MeminfoGpu = 34,
6409    MeminfoZram = 35,
6410    MeminfoMisc = 36,
6411    MeminfoIonHeap = 37,
6412    MeminfoIonHeapPool = 38,
6413}
6414impl MeminfoCounters {
6415    /// String value of the enum field names used in the ProtoBuf definition.
6416    ///
6417    /// The values are not transformed in any way and thus are considered stable
6418    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6419    pub fn as_str_name(&self) -> &'static str {
6420        match self {
6421            MeminfoCounters::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
6422            MeminfoCounters::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
6423            MeminfoCounters::MeminfoMemFree => "MEMINFO_MEM_FREE",
6424            MeminfoCounters::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
6425            MeminfoCounters::MeminfoBuffers => "MEMINFO_BUFFERS",
6426            MeminfoCounters::MeminfoCached => "MEMINFO_CACHED",
6427            MeminfoCounters::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
6428            MeminfoCounters::MeminfoActive => "MEMINFO_ACTIVE",
6429            MeminfoCounters::MeminfoInactive => "MEMINFO_INACTIVE",
6430            MeminfoCounters::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
6431            MeminfoCounters::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
6432            MeminfoCounters::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
6433            MeminfoCounters::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
6434            MeminfoCounters::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
6435            MeminfoCounters::MeminfoMlocked => "MEMINFO_MLOCKED",
6436            MeminfoCounters::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
6437            MeminfoCounters::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
6438            MeminfoCounters::MeminfoDirty => "MEMINFO_DIRTY",
6439            MeminfoCounters::MeminfoWriteback => "MEMINFO_WRITEBACK",
6440            MeminfoCounters::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
6441            MeminfoCounters::MeminfoMapped => "MEMINFO_MAPPED",
6442            MeminfoCounters::MeminfoShmem => "MEMINFO_SHMEM",
6443            MeminfoCounters::MeminfoSlab => "MEMINFO_SLAB",
6444            MeminfoCounters::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
6445            MeminfoCounters::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
6446            MeminfoCounters::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
6447            MeminfoCounters::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
6448            MeminfoCounters::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
6449            MeminfoCounters::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
6450            MeminfoCounters::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
6451            MeminfoCounters::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
6452            MeminfoCounters::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
6453            MeminfoCounters::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
6454            MeminfoCounters::MeminfoCmaFree => "MEMINFO_CMA_FREE",
6455            MeminfoCounters::MeminfoGpu => "MEMINFO_GPU",
6456            MeminfoCounters::MeminfoZram => "MEMINFO_ZRAM",
6457            MeminfoCounters::MeminfoMisc => "MEMINFO_MISC",
6458            MeminfoCounters::MeminfoIonHeap => "MEMINFO_ION_HEAP",
6459            MeminfoCounters::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
6460        }
6461    }
6462}
6463/// Counter definitions for Linux's /proc/vmstat.
6464#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6465#[repr(i32)]
6466pub enum VmstatCounters {
6467    VmstatUnspecified = 0,
6468    VmstatNrFreePages = 1,
6469    VmstatNrAllocBatch = 2,
6470    VmstatNrInactiveAnon = 3,
6471    VmstatNrActiveAnon = 4,
6472    VmstatNrInactiveFile = 5,
6473    VmstatNrActiveFile = 6,
6474    VmstatNrUnevictable = 7,
6475    VmstatNrMlock = 8,
6476    VmstatNrAnonPages = 9,
6477    VmstatNrMapped = 10,
6478    VmstatNrFilePages = 11,
6479    VmstatNrDirty = 12,
6480    VmstatNrWriteback = 13,
6481    VmstatNrSlabReclaimable = 14,
6482    VmstatNrSlabUnreclaimable = 15,
6483    VmstatNrPageTablePages = 16,
6484    VmstatNrKernelStack = 17,
6485    VmstatNrOverhead = 18,
6486    VmstatNrUnstable = 19,
6487    VmstatNrBounce = 20,
6488    VmstatNrVmscanWrite = 21,
6489    VmstatNrVmscanImmediateReclaim = 22,
6490    VmstatNrWritebackTemp = 23,
6491    VmstatNrIsolatedAnon = 24,
6492    VmstatNrIsolatedFile = 25,
6493    VmstatNrShmem = 26,
6494    VmstatNrDirtied = 27,
6495    VmstatNrWritten = 28,
6496    VmstatNrPagesScanned = 29,
6497    VmstatWorkingsetRefault = 30,
6498    VmstatWorkingsetActivate = 31,
6499    VmstatWorkingsetNodereclaim = 32,
6500    VmstatNrAnonTransparentHugepages = 33,
6501    VmstatNrFreeCma = 34,
6502    VmstatNrSwapcache = 35,
6503    VmstatNrDirtyThreshold = 36,
6504    VmstatNrDirtyBackgroundThreshold = 37,
6505    VmstatPgpgin = 38,
6506    VmstatPgpgout = 39,
6507    VmstatPgpgoutclean = 40,
6508    VmstatPswpin = 41,
6509    VmstatPswpout = 42,
6510    VmstatPgallocDma = 43,
6511    VmstatPgallocNormal = 44,
6512    VmstatPgallocMovable = 45,
6513    VmstatPgfree = 46,
6514    VmstatPgactivate = 47,
6515    VmstatPgdeactivate = 48,
6516    VmstatPgfault = 49,
6517    VmstatPgmajfault = 50,
6518    VmstatPgrefillDma = 51,
6519    VmstatPgrefillNormal = 52,
6520    VmstatPgrefillMovable = 53,
6521    VmstatPgstealKswapdDma = 54,
6522    VmstatPgstealKswapdNormal = 55,
6523    VmstatPgstealKswapdMovable = 56,
6524    VmstatPgstealDirectDma = 57,
6525    VmstatPgstealDirectNormal = 58,
6526    VmstatPgstealDirectMovable = 59,
6527    VmstatPgscanKswapdDma = 60,
6528    VmstatPgscanKswapdNormal = 61,
6529    VmstatPgscanKswapdMovable = 62,
6530    VmstatPgscanDirectDma = 63,
6531    VmstatPgscanDirectNormal = 64,
6532    VmstatPgscanDirectMovable = 65,
6533    VmstatPgscanDirectThrottle = 66,
6534    VmstatPginodesteal = 67,
6535    VmstatSlabsScanned = 68,
6536    VmstatKswapdInodesteal = 69,
6537    VmstatKswapdLowWmarkHitQuickly = 70,
6538    VmstatKswapdHighWmarkHitQuickly = 71,
6539    VmstatPageoutrun = 72,
6540    VmstatAllocstall = 73,
6541    VmstatPgrotated = 74,
6542    VmstatDropPagecache = 75,
6543    VmstatDropSlab = 76,
6544    VmstatPgmigrateSuccess = 77,
6545    VmstatPgmigrateFail = 78,
6546    VmstatCompactMigrateScanned = 79,
6547    VmstatCompactFreeScanned = 80,
6548    VmstatCompactIsolated = 81,
6549    VmstatCompactStall = 82,
6550    VmstatCompactFail = 83,
6551    VmstatCompactSuccess = 84,
6552    VmstatCompactDaemonWake = 85,
6553    VmstatUnevictablePgsCulled = 86,
6554    VmstatUnevictablePgsScanned = 87,
6555    VmstatUnevictablePgsRescued = 88,
6556    VmstatUnevictablePgsMlocked = 89,
6557    VmstatUnevictablePgsMunlocked = 90,
6558    VmstatUnevictablePgsCleared = 91,
6559    VmstatUnevictablePgsStranded = 92,
6560    VmstatNrZspages = 93,
6561    VmstatNrIonHeap = 94,
6562    VmstatNrGpuHeap = 95,
6563    VmstatAllocstallDma = 96,
6564    VmstatAllocstallMovable = 97,
6565    VmstatAllocstallNormal = 98,
6566    VmstatCompactDaemonFreeScanned = 99,
6567    VmstatCompactDaemonMigrateScanned = 100,
6568    VmstatNrFastrpc = 101,
6569    VmstatNrIndirectlyReclaimable = 102,
6570    VmstatNrIonHeapPool = 103,
6571    VmstatNrKernelMiscReclaimable = 104,
6572    VmstatNrShadowCallStackBytes = 105,
6573    VmstatNrShmemHugepages = 106,
6574    VmstatNrShmemPmdmapped = 107,
6575    VmstatNrUnreclaimablePages = 108,
6576    VmstatNrZoneActiveAnon = 109,
6577    VmstatNrZoneActiveFile = 110,
6578    VmstatNrZoneInactiveAnon = 111,
6579    VmstatNrZoneInactiveFile = 112,
6580    VmstatNrZoneUnevictable = 113,
6581    VmstatNrZoneWritePending = 114,
6582    VmstatOomKill = 115,
6583    VmstatPglazyfree = 116,
6584    VmstatPglazyfreed = 117,
6585    VmstatPgrefill = 118,
6586    VmstatPgscanDirect = 119,
6587    VmstatPgscanKswapd = 120,
6588    VmstatPgskipDma = 121,
6589    VmstatPgskipMovable = 122,
6590    VmstatPgskipNormal = 123,
6591    VmstatPgstealDirect = 124,
6592    VmstatPgstealKswapd = 125,
6593    VmstatSwapRa = 126,
6594    VmstatSwapRaHit = 127,
6595    VmstatWorkingsetRestore = 128,
6596    VmstatAllocstallDevice = 129,
6597    VmstatAllocstallDma32 = 130,
6598    VmstatBalloonDeflate = 131,
6599    VmstatBalloonInflate = 132,
6600    VmstatBalloonMigrate = 133,
6601    VmstatCmaAllocFail = 134,
6602    VmstatCmaAllocSuccess = 135,
6603    VmstatNrFileHugepages = 136,
6604    VmstatNrFilePmdmapped = 137,
6605    VmstatNrFollPinAcquired = 138,
6606    VmstatNrFollPinReleased = 139,
6607    VmstatNrSecPageTablePages = 140,
6608    VmstatNrShadowCallStack = 141,
6609    VmstatNrSwapcached = 142,
6610    VmstatNrThrottledWritten = 143,
6611    VmstatPgallocDevice = 144,
6612    VmstatPgallocDma32 = 145,
6613    VmstatPgdemoteDirect = 146,
6614    VmstatPgdemoteKswapd = 147,
6615    VmstatPgreuse = 148,
6616    VmstatPgscanAnon = 149,
6617    VmstatPgscanFile = 150,
6618    VmstatPgskipDevice = 151,
6619    VmstatPgskipDma32 = 152,
6620    VmstatPgstealAnon = 153,
6621    VmstatPgstealFile = 154,
6622    VmstatThpCollapseAlloc = 155,
6623    VmstatThpCollapseAllocFailed = 156,
6624    VmstatThpDeferredSplitPage = 157,
6625    VmstatThpFaultAlloc = 158,
6626    VmstatThpFaultFallback = 159,
6627    VmstatThpFaultFallbackCharge = 160,
6628    VmstatThpFileAlloc = 161,
6629    VmstatThpFileFallback = 162,
6630    VmstatThpFileFallbackCharge = 163,
6631    VmstatThpFileMapped = 164,
6632    VmstatThpMigrationFail = 165,
6633    VmstatThpMigrationSplit = 166,
6634    VmstatThpMigrationSuccess = 167,
6635    VmstatThpScanExceedNonePte = 168,
6636    VmstatThpScanExceedSharePte = 169,
6637    VmstatThpScanExceedSwapPte = 170,
6638    VmstatThpSplitPage = 171,
6639    VmstatThpSplitPageFailed = 172,
6640    VmstatThpSplitPmd = 173,
6641    VmstatThpSwpout = 174,
6642    VmstatThpSwpoutFallback = 175,
6643    VmstatThpZeroPageAlloc = 176,
6644    VmstatThpZeroPageAllocFailed = 177,
6645    VmstatVmaLockAbort = 178,
6646    VmstatVmaLockMiss = 179,
6647    VmstatVmaLockRetry = 180,
6648    VmstatVmaLockSuccess = 181,
6649    VmstatWorkingsetActivateAnon = 182,
6650    VmstatWorkingsetActivateFile = 183,
6651    VmstatWorkingsetNodes = 184,
6652    VmstatWorkingsetRefaultAnon = 185,
6653    VmstatWorkingsetRefaultFile = 186,
6654    VmstatWorkingsetRestoreAnon = 187,
6655    VmstatWorkingsetRestoreFile = 188,
6656}
6657impl VmstatCounters {
6658    /// String value of the enum field names used in the ProtoBuf definition.
6659    ///
6660    /// The values are not transformed in any way and thus are considered stable
6661    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6662    pub fn as_str_name(&self) -> &'static str {
6663        match self {
6664            VmstatCounters::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
6665            VmstatCounters::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
6666            VmstatCounters::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
6667            VmstatCounters::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
6668            VmstatCounters::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
6669            VmstatCounters::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
6670            VmstatCounters::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
6671            VmstatCounters::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
6672            VmstatCounters::VmstatNrMlock => "VMSTAT_NR_MLOCK",
6673            VmstatCounters::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
6674            VmstatCounters::VmstatNrMapped => "VMSTAT_NR_MAPPED",
6675            VmstatCounters::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
6676            VmstatCounters::VmstatNrDirty => "VMSTAT_NR_DIRTY",
6677            VmstatCounters::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
6678            VmstatCounters::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
6679            VmstatCounters::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
6680            VmstatCounters::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
6681            VmstatCounters::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
6682            VmstatCounters::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
6683            VmstatCounters::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
6684            VmstatCounters::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
6685            VmstatCounters::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
6686            VmstatCounters::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
6687            VmstatCounters::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
6688            VmstatCounters::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
6689            VmstatCounters::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
6690            VmstatCounters::VmstatNrShmem => "VMSTAT_NR_SHMEM",
6691            VmstatCounters::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
6692            VmstatCounters::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
6693            VmstatCounters::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
6694            VmstatCounters::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
6695            VmstatCounters::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
6696            VmstatCounters::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
6697            VmstatCounters::VmstatNrAnonTransparentHugepages => "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES",
6698            VmstatCounters::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
6699            VmstatCounters::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
6700            VmstatCounters::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
6701            VmstatCounters::VmstatNrDirtyBackgroundThreshold => "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD",
6702            VmstatCounters::VmstatPgpgin => "VMSTAT_PGPGIN",
6703            VmstatCounters::VmstatPgpgout => "VMSTAT_PGPGOUT",
6704            VmstatCounters::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
6705            VmstatCounters::VmstatPswpin => "VMSTAT_PSWPIN",
6706            VmstatCounters::VmstatPswpout => "VMSTAT_PSWPOUT",
6707            VmstatCounters::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
6708            VmstatCounters::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
6709            VmstatCounters::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
6710            VmstatCounters::VmstatPgfree => "VMSTAT_PGFREE",
6711            VmstatCounters::VmstatPgactivate => "VMSTAT_PGACTIVATE",
6712            VmstatCounters::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
6713            VmstatCounters::VmstatPgfault => "VMSTAT_PGFAULT",
6714            VmstatCounters::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
6715            VmstatCounters::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
6716            VmstatCounters::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
6717            VmstatCounters::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
6718            VmstatCounters::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
6719            VmstatCounters::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
6720            VmstatCounters::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
6721            VmstatCounters::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
6722            VmstatCounters::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
6723            VmstatCounters::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
6724            VmstatCounters::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
6725            VmstatCounters::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
6726            VmstatCounters::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
6727            VmstatCounters::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
6728            VmstatCounters::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
6729            VmstatCounters::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
6730            VmstatCounters::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
6731            VmstatCounters::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
6732            VmstatCounters::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
6733            VmstatCounters::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
6734            VmstatCounters::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
6735            VmstatCounters::VmstatKswapdHighWmarkHitQuickly => "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY",
6736            VmstatCounters::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
6737            VmstatCounters::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
6738            VmstatCounters::VmstatPgrotated => "VMSTAT_PGROTATED",
6739            VmstatCounters::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
6740            VmstatCounters::VmstatDropSlab => "VMSTAT_DROP_SLAB",
6741            VmstatCounters::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
6742            VmstatCounters::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
6743            VmstatCounters::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
6744            VmstatCounters::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
6745            VmstatCounters::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
6746            VmstatCounters::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
6747            VmstatCounters::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
6748            VmstatCounters::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
6749            VmstatCounters::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
6750            VmstatCounters::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
6751            VmstatCounters::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
6752            VmstatCounters::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
6753            VmstatCounters::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
6754            VmstatCounters::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
6755            VmstatCounters::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
6756            VmstatCounters::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
6757            VmstatCounters::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
6758            VmstatCounters::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
6759            VmstatCounters::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
6760            VmstatCounters::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
6761            VmstatCounters::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
6762            VmstatCounters::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
6763            VmstatCounters::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
6764            VmstatCounters::VmstatCompactDaemonMigrateScanned => "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED",
6765            VmstatCounters::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
6766            VmstatCounters::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
6767            VmstatCounters::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
6768            VmstatCounters::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
6769            VmstatCounters::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
6770            VmstatCounters::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
6771            VmstatCounters::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
6772            VmstatCounters::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
6773            VmstatCounters::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
6774            VmstatCounters::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
6775            VmstatCounters::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
6776            VmstatCounters::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
6777            VmstatCounters::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
6778            VmstatCounters::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
6779            VmstatCounters::VmstatOomKill => "VMSTAT_OOM_KILL",
6780            VmstatCounters::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
6781            VmstatCounters::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
6782            VmstatCounters::VmstatPgrefill => "VMSTAT_PGREFILL",
6783            VmstatCounters::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
6784            VmstatCounters::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
6785            VmstatCounters::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
6786            VmstatCounters::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
6787            VmstatCounters::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
6788            VmstatCounters::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
6789            VmstatCounters::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
6790            VmstatCounters::VmstatSwapRa => "VMSTAT_SWAP_RA",
6791            VmstatCounters::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
6792            VmstatCounters::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
6793            VmstatCounters::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
6794            VmstatCounters::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
6795            VmstatCounters::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
6796            VmstatCounters::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
6797            VmstatCounters::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
6798            VmstatCounters::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
6799            VmstatCounters::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
6800            VmstatCounters::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
6801            VmstatCounters::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
6802            VmstatCounters::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
6803            VmstatCounters::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
6804            VmstatCounters::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
6805            VmstatCounters::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
6806            VmstatCounters::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
6807            VmstatCounters::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
6808            VmstatCounters::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
6809            VmstatCounters::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
6810            VmstatCounters::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
6811            VmstatCounters::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
6812            VmstatCounters::VmstatPgreuse => "VMSTAT_PGREUSE",
6813            VmstatCounters::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
6814            VmstatCounters::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
6815            VmstatCounters::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
6816            VmstatCounters::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
6817            VmstatCounters::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
6818            VmstatCounters::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
6819            VmstatCounters::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
6820            VmstatCounters::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
6821            VmstatCounters::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
6822            VmstatCounters::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
6823            VmstatCounters::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
6824            VmstatCounters::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
6825            VmstatCounters::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
6826            VmstatCounters::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
6827            VmstatCounters::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
6828            VmstatCounters::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
6829            VmstatCounters::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
6830            VmstatCounters::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
6831            VmstatCounters::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
6832            VmstatCounters::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
6833            VmstatCounters::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
6834            VmstatCounters::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
6835            VmstatCounters::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
6836            VmstatCounters::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
6837            VmstatCounters::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
6838            VmstatCounters::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
6839            VmstatCounters::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
6840            VmstatCounters::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
6841            VmstatCounters::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
6842            VmstatCounters::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
6843            VmstatCounters::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
6844            VmstatCounters::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
6845            VmstatCounters::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
6846            VmstatCounters::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
6847            VmstatCounters::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
6848            VmstatCounters::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
6849            VmstatCounters::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
6850            VmstatCounters::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
6851            VmstatCounters::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
6852            VmstatCounters::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
6853        }
6854    }
6855}
6856/// This file defines the configuration for the Linux /proc poller data source,
6857/// which injects counters in the trace.
6858/// Counters that are needed in the trace must be explicitly listed in the
6859/// *_counters fields. This is to avoid spamming the trace with all counters
6860/// at all times.
6861/// The sampling rate is configurable. All polling rates (*_period_ms) need
6862/// to be integer multiples of each other.
6863/// OK:     [10ms, 10ms, 10ms],  [10ms, 20ms, 10ms],  [10ms, 20ms, 60ms]
6864/// Not OK: [10ms, 10ms, 11ms],  [10ms, 15ms, 20ms]
6865#[derive(Clone, PartialEq, ::prost::Message)]
6866pub struct SysStatsConfig {
6867    /// Polls /proc/meminfo every X ms, if non-zero.
6868    /// This is required to be > 10ms to avoid excessive CPU usage.
6869    /// Cost: 0.3 ms \[read\] + 0.07 ms [parse + trace injection]
6870    #[prost(uint32, optional, tag="1")]
6871    pub meminfo_period_ms: ::core::option::Option<u32>,
6872    /// If empty all known counters are reported. Otherwise, only the counters
6873    /// specified below are reported.
6874    #[prost(enumeration="MeminfoCounters", repeated, packed="false", tag="2")]
6875    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
6876    /// Polls /proc/vmstat every X ms, if non-zero.
6877    /// This is required to be > 10ms to avoid excessive CPU usage.
6878    /// Cost: 0.2 ms \[read\] + 0.3 ms [parse + trace injection]
6879    #[prost(uint32, optional, tag="3")]
6880    pub vmstat_period_ms: ::core::option::Option<u32>,
6881    #[prost(enumeration="VmstatCounters", repeated, packed="false", tag="4")]
6882    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
6883    /// Pols /proc/stat every X ms, if non-zero.
6884    /// This is required to be > 10ms to avoid excessive CPU usage.
6885    /// Cost: 4.1 ms \[read\] + 1.9 ms [parse + trace injection]
6886    #[prost(uint32, optional, tag="5")]
6887    pub stat_period_ms: ::core::option::Option<u32>,
6888    #[prost(enumeration="sys_stats_config::StatCounters", repeated, packed="false", tag="6")]
6889    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
6890    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
6891    /// This is required to be > 10ms to avoid excessive CPU usage.
6892    /// This option can be used to record unchanging values.
6893    /// Updates from frequency changes can come from ftrace/set_clock_rate.
6894    #[prost(uint32, optional, tag="7")]
6895    pub devfreq_period_ms: ::core::option::Option<u32>,
6896    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
6897    /// This is required to be > 10ms to avoid excessive CPU usage.
6898    #[prost(uint32, optional, tag="8")]
6899    pub cpufreq_period_ms: ::core::option::Option<u32>,
6900    /// Polls /proc/buddyinfo every X ms, if non-zero.
6901    /// This is required to be > 10ms to avoid excessive CPU usage.
6902    #[prost(uint32, optional, tag="9")]
6903    pub buddyinfo_period_ms: ::core::option::Option<u32>,
6904    /// Polls /proc/diskstats every X ms, if non-zero.
6905    /// This is required to be > 10ms to avoid excessive CPU usage.
6906    #[prost(uint32, optional, tag="10")]
6907    pub diskstat_period_ms: ::core::option::Option<u32>,
6908    /// Polls /proc/pressure/* every X ms, if non-zero.
6909    /// This is required to be > 10ms to avoid excessive CPU usage.
6910    #[prost(uint32, optional, tag="11")]
6911    pub psi_period_ms: ::core::option::Option<u32>,
6912    /// Polls /sys/class/thermal/* every X ms, if non-zero.
6913    /// This is required to be > 10ms to avoid excessive CPU usage.
6914    #[prost(uint32, optional, tag="12")]
6915    pub thermal_period_ms: ::core::option::Option<u32>,
6916    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
6917    /// This is required to be > 10ms to avoid excessive CPU usage.
6918    #[prost(uint32, optional, tag="13")]
6919    pub cpuidle_period_ms: ::core::option::Option<u32>,
6920    /// Polls device-specific GPU frequency info every X ms, if non-zero.
6921    /// This is required to be > 10ms to avoid excessive CPU usage.
6922    #[prost(uint32, optional, tag="14")]
6923    pub gpufreq_period_ms: ::core::option::Option<u32>,
6924    /// Polls /proc/slabinfo every X ms, if non-zero.
6925    /// This is required to be > 10ms to avoid excessive CPU usage.
6926    #[prost(uint32, optional, tag="15")]
6927    pub slab_period_ms: ::core::option::Option<u32>,
6928}
6929/// Nested message and enum types in `SysStatsConfig`.
6930pub mod sys_stats_config {
6931    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6932    #[repr(i32)]
6933    pub enum StatCounters {
6934        StatUnspecified = 0,
6935        StatCpuTimes = 1,
6936        StatIrqCounts = 2,
6937        StatSoftirqCounts = 3,
6938        StatForkCount = 4,
6939    }
6940    impl StatCounters {
6941        /// String value of the enum field names used in the ProtoBuf definition.
6942        ///
6943        /// The values are not transformed in any way and thus are considered stable
6944        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6945        pub fn as_str_name(&self) -> &'static str {
6946            match self {
6947                StatCounters::StatUnspecified => "STAT_UNSPECIFIED",
6948                StatCounters::StatCpuTimes => "STAT_CPU_TIMES",
6949                StatCounters::StatIrqCounts => "STAT_IRQ_COUNTS",
6950                StatCounters::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
6951                StatCounters::StatForkCount => "STAT_FORK_COUNT",
6952            }
6953        }
6954    }
6955}
6956/// The configuration for a fake producer used in tests.
6957#[derive(Clone, PartialEq, ::prost::Message)]
6958pub struct TestConfig {
6959    /// The number of messages the fake producer should send.
6960    #[prost(uint32, optional, tag="1")]
6961    pub message_count: ::core::option::Option<u32>,
6962    /// The maximum number of messages which should be sent each second.
6963    /// The actual obserced speed may be lower if the producer is unable to
6964    /// work fast enough.
6965    /// If this is zero or unset, the producer will send as fast as possible.
6966    #[prost(uint32, optional, tag="2")]
6967    pub max_messages_per_second: ::core::option::Option<u32>,
6968    /// The seed value for a simple multiplicative congruential pseudo-random
6969    /// number sequence.
6970    #[prost(uint32, optional, tag="3")]
6971    pub seed: ::core::option::Option<u32>,
6972    /// The size of each message in bytes. Should be greater than or equal 5 to
6973    /// account for the number of bytes needed to encode the random number and a
6974    /// null byte for the string.
6975    #[prost(uint32, optional, tag="4")]
6976    pub message_size: ::core::option::Option<u32>,
6977    /// Whether the producer should send a event batch when the data source is
6978    /// is initially registered.
6979    #[prost(bool, optional, tag="5")]
6980    pub send_batch_on_register: ::core::option::Option<bool>,
6981    #[prost(message, optional, tag="6")]
6982    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
6983}
6984/// Nested message and enum types in `TestConfig`.
6985pub mod test_config {
6986    #[derive(Clone, PartialEq, ::prost::Message)]
6987    pub struct DummyFields {
6988        #[prost(uint32, optional, tag="1")]
6989        pub field_uint32: ::core::option::Option<u32>,
6990        #[prost(int32, optional, tag="2")]
6991        pub field_int32: ::core::option::Option<i32>,
6992        #[prost(uint64, optional, tag="3")]
6993        pub field_uint64: ::core::option::Option<u64>,
6994        #[prost(int64, optional, tag="4")]
6995        pub field_int64: ::core::option::Option<i64>,
6996        #[prost(fixed64, optional, tag="5")]
6997        pub field_fixed64: ::core::option::Option<u64>,
6998        #[prost(sfixed64, optional, tag="6")]
6999        pub field_sfixed64: ::core::option::Option<i64>,
7000        #[prost(fixed32, optional, tag="7")]
7001        pub field_fixed32: ::core::option::Option<u32>,
7002        #[prost(sfixed32, optional, tag="8")]
7003        pub field_sfixed32: ::core::option::Option<i32>,
7004        #[prost(double, optional, tag="9")]
7005        pub field_double: ::core::option::Option<f64>,
7006        #[prost(float, optional, tag="10")]
7007        pub field_float: ::core::option::Option<f32>,
7008        #[prost(sint64, optional, tag="11")]
7009        pub field_sint64: ::core::option::Option<i64>,
7010        #[prost(sint32, optional, tag="12")]
7011        pub field_sint32: ::core::option::Option<i32>,
7012        #[prost(string, optional, tag="13")]
7013        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
7014        #[prost(bytes="vec", optional, tag="14")]
7015        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7016    }
7017}
7018/// The following fields define the set of enabled trace categories. Each list
7019/// item is a glob.
7020///
7021/// To determine if category is enabled, it is checked against the filters in
7022/// the following order:
7023///
7024///    1. Exact matches in enabled categories.
7025///    2. Exact matches in enabled tags.
7026///    3. Exact matches in disabled categories.
7027///    4. Exact matches in disabled tags.
7028///    5. Pattern matches in enabled categories.
7029///    6. Pattern matches in enabled tags.
7030///    7. Pattern matches in disabled categories.
7031///    8. Pattern matches in disabled tags.
7032///
7033/// If none of the steps produced a match:
7034///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
7035///   default.
7036///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
7037///
7038/// Examples:
7039///
7040///   - To enable all non-slow/debug categories:
7041///
7042///        enabled_categories: "*"
7043///
7044///   - To enable specific categories:
7045///
7046///        disabled_categories: "*"
7047///        enabled_categories: "my_category"
7048///        enabled_categories: "my_category2"
7049///
7050///   - To enable only categories with a specific tag:
7051///
7052///        disabled_tags: "*"
7053///        enabled_tags: "my_tag"
7054///
7055#[derive(Clone, PartialEq, ::prost::Message)]
7056pub struct TrackEventConfig {
7057    /// Default: []
7058    #[prost(string, repeated, tag="1")]
7059    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7060    /// Default: []
7061    #[prost(string, repeated, tag="2")]
7062    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7063    /// Default: ["slow", "debug"]
7064    #[prost(string, repeated, tag="3")]
7065    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7066    /// Default: []
7067    #[prost(string, repeated, tag="4")]
7068    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7069    /// Default: false (i.e. enabled by default)
7070    #[prost(bool, optional, tag="5")]
7071    pub disable_incremental_timestamps: ::core::option::Option<bool>,
7072    /// Allows to specify a custom unit different than the default (ns).
7073    /// Also affects thread timestamps if enable_thread_time_sampling = true.
7074    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
7075    /// 3000 ns = 3 us.
7076    /// Default: 1 (if unset, it should be read as 1).
7077    #[prost(uint64, optional, tag="6")]
7078    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
7079    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
7080    /// When true, any debug annotations provided as arguments to the
7081    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
7082    /// still be emitted even if set to true.
7083    #[prost(bool, optional, tag="7")]
7084    pub filter_debug_annotations: ::core::option::Option<bool>,
7085    /// Default: false (i.e. disabled)
7086    /// When true, the SDK samples and emits the current thread time counter value
7087    /// for each event on the current thread's track. This value represents the
7088    /// total CPU time consumed by that thread since its creation.
7089    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
7090    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
7091    #[prost(bool, optional, tag="8")]
7092    pub enable_thread_time_sampling: ::core::option::Option<bool>,
7093    /// When enable_thread_time_sampling is true, and this is specified, thread
7094    /// time is sampled only if the elapsed wall time >
7095    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
7096    /// Effectively, this means thread time will have a leeway of
7097    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
7098    #[prost(uint64, optional, tag="10")]
7099    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
7100    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
7101    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
7102    /// out.
7103    #[prost(bool, optional, tag="9")]
7104    pub filter_dynamic_event_names: ::core::option::Option<bool>,
7105}
7106/// This data-source does a one-off recording of system information when
7107/// the trace starts.
7108/// Currently this includes:
7109/// - Values of
7110/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
7111/// datasource has no configuration options at present.
7112#[derive(Clone, PartialEq, ::prost::Message)]
7113pub struct SystemInfoConfig {
7114    /// If true, records hardware interrupt ID-to-name mappings from
7115    /// /proc/interrupts.
7116    #[prost(bool, optional, tag="1")]
7117    pub irq_names: ::core::option::Option<bool>,
7118}
7119#[derive(Clone, PartialEq, ::prost::Message)]
7120pub struct ChromiumHistogramSamplesConfig {
7121    /// List of histograms to record. If no histogram is specified, all histograms
7122    /// are recorded.
7123    #[prost(message, repeated, tag="1")]
7124    pub histograms: ::prost::alloc::vec::Vec<chromium_histogram_samples_config::HistogramSample>,
7125    /// Default: false (i.e. histogram names are NOT filtered out by default)
7126    /// When true, histogram_name will be filtered out.
7127    #[prost(bool, optional, tag="2")]
7128    pub filter_histogram_names: ::core::option::Option<bool>,
7129}
7130/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
7131pub mod chromium_histogram_samples_config {
7132    /// Records when a value within the specified bounds [min_value, max_value] is
7133    /// emitted into a Chrome histogram.
7134    #[derive(Clone, PartialEq, ::prost::Message)]
7135    pub struct HistogramSample {
7136        #[prost(string, optional, tag="1")]
7137        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
7138        #[prost(int64, optional, tag="2")]
7139        pub min_value: ::core::option::Option<i64>,
7140        #[prost(int64, optional, tag="3")]
7141        pub max_value: ::core::option::Option<i64>,
7142    }
7143}
7144/// Configuration for the "linux.systemd_journald" data source.
7145/// Next field id: 4
7146#[derive(Clone, PartialEq, ::prost::Message)]
7147pub struct SystemdJournaldConfig {
7148    /// Minimum syslog priority level to capture (inclusive).
7149    /// 0=EMERG, 1=ALERT, 2=CRIT, 3=ERR, 4=WARNING, 5=NOTICE, 6=INFO, 7=DEBUG.
7150    /// Default (0 / unset): capture all priorities (equivalent to 7).
7151    #[prost(uint32, optional, tag="1")]
7152    pub min_prio: ::core::option::Option<u32>,
7153    /// If non-empty, only capture journal entries whose SYSLOG_IDENTIFIER
7154    /// matches one of these strings.
7155    #[prost(string, repeated, tag="2")]
7156    pub filter_identifiers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7157    /// If non-empty, only capture journal entries from these systemd unit names.
7158    #[prost(string, repeated, tag="3")]
7159    pub filter_units: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7160}
7161/// QnxConfig is used with trace_qnx_probes build from
7162/// <https://github.com/qnx-ports/perfetto>
7163#[derive(Clone, PartialEq, ::prost::Message)]
7164pub struct QnxConfig {
7165    /// The number of buffers that tracelog will init for the QNX trace.
7166    #[prost(uint32, optional, tag="1")]
7167    pub qnx_kernel_buffers: ::core::option::Option<u32>,
7168    /// The number of kernel buffers that tracelog will init for the QNX trace.
7169    #[prost(uint32, optional, tag="2")]
7170    pub qnx_kernel_kbuffers: ::core::option::Option<u32>,
7171    /// Flag indicating whether the QNX kernel tracing should produce wide
7172    /// events which contain additional data or fast events which are most
7173    /// concise. In fast mode we lose the priority information
7174    #[prost(bool, optional, tag="3")]
7175    pub qnx_kernel_wide_events: ::core::option::Option<bool>,
7176    /// The number of pages initialized by default the parser's page cache.
7177    #[prost(uint32, optional, tag="4")]
7178    pub qnx_cache_pages: ::core::option::Option<u32>,
7179    /// The max pages the page cache should allocate (must be at least as big)
7180    /// as the qnx_cache_pages value. Using -1 will allow the cache to grow
7181    /// unbounded. The cache will prefer to re-use existing pages so growth will
7182    /// only happen when needed (when parser is not keeping up).
7183    #[prost(int32, optional, tag="5")]
7184    pub qnx_cache_max_pages: ::core::option::Option<i32>,
7185    /// The initial size of the the buffer used to hold the trace header values
7186    /// this dynamic buffer will grow as needed but reallocs can be avoided by
7187    /// selecting an initial size large enough to hold all the initial header
7188    /// data.
7189    #[prost(uint32, optional, tag="6")]
7190    pub qnx_trace_buffer_init_bytes: ::core::option::Option<u32>,
7191}
7192/// The configuration that is passed to each data source when starting tracing.
7193/// Next id: 143
7194#[derive(Clone, PartialEq, ::prost::Message)]
7195pub struct DataSourceConfig {
7196    /// Data source unique name, e.g., "linux.ftrace". This must match
7197    /// the name passed by the data source when it registers (see
7198    /// RegisterDataSource()).
7199    #[prost(string, optional, tag="1")]
7200    pub name: ::core::option::Option<::prost::alloc::string::String>,
7201    /// The index of the logging buffer where TracePacket(s) will be stored.
7202    /// This field is quite subtle as it has a double semantic:
7203    /// 1) When the config is passed, this field is a 0-based index relative to the
7204    ///     buffer array in the TraceConfig and defines the mapping between data
7205    ///     sources and config. From v54 this is optional because the user can
7206    ///     instead use target_buffer_name.
7207    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
7208    ///     producer, it overwrites this field with the global buffer index (which
7209    ///     depends on other tracing sessions active). This tells the producer which
7210    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
7211    ///     service always sets the resolved global id, even when using
7212    ///     `target_buffer_name`.
7213    /// In hindsight we should have used two different fields given even in v0 they
7214    /// had a different semantic. But now it's too late as this would be a major
7215    /// protocol breaking change.
7216    #[prost(uint32, optional, tag="2")]
7217    pub target_buffer: ::core::option::Option<u32>,
7218    /// Alternative to |target_buffer|. References a buffer by name (as specified
7219    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
7220    /// readable and less error-prone than using buffer indices.
7221    /// If both |target_buffer| and |target_buffer_name| are specified, they must
7222    /// refer to the same buffer, otherwise the service will reject the config.
7223    /// Using both fields allows configs to work with both old and new versions
7224    /// of the tracing service. Introduced in v54.
7225    #[prost(string, optional, tag="11")]
7226    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
7227    /// Set by the service to indicate the duration of the trace.
7228    /// DO NOT SET in consumer as this will be overridden by the service.
7229    #[prost(uint32, optional, tag="3")]
7230    pub trace_duration_ms: ::core::option::Option<u32>,
7231    /// If true, |trace_duration_ms| should count also time in suspend. This
7232    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
7233    #[prost(bool, optional, tag="122")]
7234    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
7235    /// Set by the service to indicate how long it waits after StopDataSource.
7236    /// DO NOT SET in consumer as this will be overridden by the service.
7237    #[prost(uint32, optional, tag="7")]
7238    pub stop_timeout_ms: ::core::option::Option<u32>,
7239    /// Set by the service to indicate whether this tracing session has extra
7240    /// guardrails.
7241    /// DO NOT SET in consumer as this will be overridden by the service.
7242    #[prost(bool, optional, tag="6")]
7243    pub enable_extra_guardrails: ::core::option::Option<bool>,
7244    /// Set by the service to indicate which user initiated this trace.
7245    /// DO NOT SET in consumer as this will be overridden by the service.
7246    #[prost(enumeration="data_source_config::SessionInitiator", optional, tag="8")]
7247    pub session_initiator: ::core::option::Option<i32>,
7248    /// Set by the service to indicate which tracing session the data source
7249    /// belongs to. The intended use case for this is checking if two data sources,
7250    /// one of which produces metadata for the other one, belong to the same trace
7251    /// session and hence should be linked together.
7252    /// This field was introduced in Aug 2018 after Android P.
7253    /// DO NOT SET in consumer as this will be overridden by the service.
7254    #[prost(uint64, optional, tag="4")]
7255    pub tracing_session_id: ::core::option::Option<u64>,
7256    /// How to behave when the producer runs out of space in the shared memory
7257    /// buffer. This is only honored by some data sources (in the SDK, the data
7258    /// sources registered with a configurable buffer exhausted policy).
7259    #[prost(enumeration="data_source_config::BufferExhaustedPolicy", optional, tag="9")]
7260    pub buffer_exhausted_policy: ::core::option::Option<i32>,
7261    #[prost(message, optional, tag="10")]
7262    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
7263    // If specified, the data source requires the tracing service to process
7264    // overwritten packets (patches) using a ProtoVM instance with this config.
7265    // The ProtoVM program is specified at data source registration time through
7266    // the descriptor.
7267
7268    /// TODO(primiano): today when we enable a protovm_config, we actually accept
7269    /// that if N producers advertise M different versions of the same program we
7270    /// will create M instances of that program.
7271    /// To overcome this, we could move the program to the TraceConfig. But doing
7272    /// so would bloat the trace config size too big and create problems to statsd.
7273    /// Once the config store (b/482305876) exists we should move protovm programs
7274    /// onto that.
7275    #[prost(message, optional, tag="12")]
7276    pub protovm_config: ::core::option::Option<ProtoVmConfig>,
7277    // Keep the lower IDs (up to 99) for fields that are *not* specific to
7278    // data-sources and needs to be processed by the traced daemon.
7279
7280    // All data source config fields must be marked as \[lazy=true\]. This prevents
7281    // the proto-to-cpp generator from recursing into those when generating the
7282    // cpp classes and polluting tracing/core with data-source-specific classes.
7283    // Instead they are treated as opaque strings containing raw proto bytes.
7284
7285    /// Data source name: linux.ftrace
7286    #[prost(message, optional, tag="100")]
7287    pub ftrace_config: ::core::option::Option<FtraceConfig>,
7288    /// Data source name: linux.inode_file_map
7289    #[prost(message, optional, tag="102")]
7290    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
7291    /// Data source name: linux.process_stats
7292    #[prost(message, optional, tag="103")]
7293    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
7294    /// Data source name: linux.sys_stats
7295    #[prost(message, optional, tag="104")]
7296    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
7297    /// Data source name: android.heapprofd
7298    /// Introduced in Android 10.
7299    #[prost(message, optional, tag="105")]
7300    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
7301    /// Data source name: android.java_hprof
7302    /// Introduced in Android 11.
7303    #[prost(message, optional, tag="110")]
7304    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
7305    /// Data source name: android.power
7306    #[prost(message, optional, tag="106")]
7307    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
7308    /// Data source name: android.log
7309    #[prost(message, optional, tag="107")]
7310    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
7311    /// Data source name: gpu.counters
7312    #[prost(message, optional, tag="108")]
7313    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
7314    /// Data source name: android.game_interventions
7315    #[prost(message, optional, tag="116")]
7316    pub android_game_intervention_list_config: ::core::option::Option<AndroidGameInterventionListConfig>,
7317    /// Data source name: android.packages_list
7318    #[prost(message, optional, tag="109")]
7319    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
7320    /// Data source name: linux.perf
7321    #[prost(message, optional, tag="111")]
7322    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
7323    /// Data source name: vulkan.memory_tracker
7324    #[prost(message, optional, tag="112")]
7325    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
7326    /// Data source name: track_event
7327    #[prost(message, optional, tag="113")]
7328    pub track_event_config: ::core::option::Option<TrackEventConfig>,
7329    /// Data source name: android.polled_state
7330    #[prost(message, optional, tag="114")]
7331    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
7332    /// Data source name: android.system_property
7333    #[prost(message, optional, tag="118")]
7334    pub android_system_property_config: ::core::option::Option<AndroidSystemPropertyConfig>,
7335    /// Data source name: android.statsd
7336    #[prost(message, optional, tag="117")]
7337    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
7338    /// Data source name: linux.system_info
7339    #[prost(message, optional, tag="119")]
7340    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
7341    /// Data source name: linux.frozen_ftrace
7342    #[prost(message, optional, tag="136")]
7343    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
7344    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
7345    /// avoid proto serialization and de-serialization there because that would
7346    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
7347    /// C++ class for it so it can pass around plain C++ objets.
7348    #[prost(message, optional, tag="101")]
7349    pub chrome_config: ::core::option::Option<ChromeConfig>,
7350    /// Data source name: code.v8.dev
7351    #[prost(message, optional, tag="127")]
7352    pub v8_config: ::core::option::Option<V8Config>,
7353    /// If an interceptor is specified here, packets for this data source will be
7354    /// rerouted to the interceptor instead of the main trace buffer. This can be
7355    /// used, for example, to write trace data into ETW or for logging trace points
7356    /// to the console.
7357    ///
7358    /// Note that interceptors are only supported by data sources registered
7359    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
7360    /// traced_probes) may not support interception.
7361    #[prost(message, optional, tag="115")]
7362    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
7363    /// Data source name: android.network_packets.
7364    /// Introduced in Android 14 (U).
7365    #[prost(message, optional, tag="120")]
7366    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
7367    /// Data source name: android.surfaceflinger.layers
7368    #[prost(message, optional, tag="121")]
7369    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
7370    /// Data source name: android.surfaceflinger.transactions
7371    #[prost(message, optional, tag="123")]
7372    pub surfaceflinger_transactions_config: ::core::option::Option<SurfaceFlingerTransactionsConfig>,
7373    /// Data source name: android.sdk_sysprop_guard
7374    /// Introduced in Android 14 (U) QPR1.
7375    #[prost(message, optional, tag="124")]
7376    pub android_sdk_sysprop_guard_config: ::core::option::Option<AndroidSdkSyspropGuardConfig>,
7377    /// Data source name: windows.etw
7378    #[prost(message, optional, tag="125")]
7379    pub etw_config: ::core::option::Option<EtwConfig>,
7380    /// Data source name: android.protolog
7381    #[prost(message, optional, tag="126")]
7382    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
7383    /// Data source name: android.input.inputevent
7384    #[prost(message, optional, tag="128")]
7385    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
7386    /// Data source name: android.pixel.modem
7387    #[prost(message, optional, tag="129")]
7388    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
7389    /// Data source name: android.windowmanager
7390    #[prost(message, optional, tag="130")]
7391    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
7392    /// Data source name: org.chromium.system_metrics
7393    #[prost(message, optional, tag="131")]
7394    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
7395    /// Data source name: android.kernel_wakelocks
7396    #[prost(message, optional, tag="132")]
7397    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
7398    /// Data source name: gpu.renderstages
7399    #[prost(message, optional, tag="133")]
7400    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
7401    /// Data source name: org.chromium.histogram_samples
7402    #[prost(message, optional, tag="134")]
7403    pub chromium_histogram_samples: ::core::option::Option<ChromiumHistogramSamplesConfig>,
7404    /// Data source name: android.app_wakelocks
7405    #[prost(message, optional, tag="135")]
7406    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
7407    /// Data source name: android.cpu_per_uid
7408    #[prost(message, optional, tag="137")]
7409    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
7410    /// Data source name: android.user_list
7411    #[prost(message, optional, tag="138")]
7412    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
7413    /// Data source name: android.inputmethod
7414    #[prost(message, optional, tag="139")]
7415    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
7416    /// Data source name: android.aflags
7417    #[prost(message, optional, tag="140")]
7418    pub android_aflags_config: ::core::option::Option<AndroidAflagsConfig>,
7419    /// Data source name: linux.systemd_journald
7420    #[prost(message, optional, tag="141")]
7421    pub journald_config: ::core::option::Option<SystemdJournaldConfig>,
7422    /// Data source name: android.display.video
7423    #[prost(message, optional, tag="142")]
7424    pub display_video_config: ::core::option::Option<DisplayVideoConfig>,
7425    /// Data source name: qnx.kernel
7426    #[prost(message, optional, tag="150")]
7427    pub qnx_config: ::core::option::Option<QnxConfig>,
7428    /// This is a fallback mechanism to send a free-form text config to the
7429    /// producer. In theory this should never be needed. All the code that
7430    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
7431    /// the trace config proto and propagate unknown fields. However, if anything
7432    /// in the pipeline (client or backend) ends up breaking this forward compat
7433    /// plan, this field will become the escape hatch to allow future data sources
7434    /// to get some meaningful configuration.
7435    #[prost(string, optional, tag="1000")]
7436    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
7437    /// This field is only used for testing.
7438    #[prost(message, optional, tag="1001")]
7439    pub for_testing: ::core::option::Option<TestConfig>,
7440}
7441/// Nested message and enum types in `DataSourceConfig`.
7442pub mod data_source_config {
7443    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7444    #[repr(i32)]
7445    pub enum SessionInitiator {
7446        Unspecified = 0,
7447        /// This trace was initiated from a trusted system app has DUMP and
7448        /// USAGE_STATS permission. This system app is expected to not expose the
7449        /// trace to the user of the device.
7450        /// This is determined by checking the UID initiating the trace.
7451        TrustedSystem = 1,
7452    }
7453    impl SessionInitiator {
7454        /// String value of the enum field names used in the ProtoBuf definition.
7455        ///
7456        /// The values are not transformed in any way and thus are considered stable
7457        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7458        pub fn as_str_name(&self) -> &'static str {
7459            match self {
7460                SessionInitiator::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
7461                SessionInitiator::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
7462            }
7463        }
7464    }
7465    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7466    #[repr(i32)]
7467    pub enum BufferExhaustedPolicy {
7468        /// The data source will use its default buffer exhausted policy, specified
7469        /// by the code when the data source is registered.
7470        BufferExhaustedUnspecified = 0,
7471        /// The data source will drop packets when there's no space in the shared
7472        /// memory buffer.
7473        BufferExhaustedDrop = 1,
7474        /// The data source will wait when there's no space in the shared memory
7475        /// buffer. If there's still not space, after a few seconds, the whole
7476        /// producer process will be aborted.
7477        BufferExhaustedStallThenAbort = 2,
7478        /// The data source will wait when there's no space in the shared memory
7479        /// buffer.  If there's still not space, after a few seconds, the data source
7480        /// will drop packets.
7481        BufferExhaustedStallThenDrop = 3,
7482    }
7483    impl BufferExhaustedPolicy {
7484        /// String value of the enum field names used in the ProtoBuf definition.
7485        ///
7486        /// The values are not transformed in any way and thus are considered stable
7487        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7488        pub fn as_str_name(&self) -> &'static str {
7489            match self {
7490                BufferExhaustedPolicy::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
7491                BufferExhaustedPolicy::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
7492                BufferExhaustedPolicy::BufferExhaustedStallThenAbort => "BUFFER_EXHAUSTED_STALL_THEN_ABORT",
7493                BufferExhaustedPolicy::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
7494            }
7495        }
7496    }
7497}
7498/// The overall config that is used when starting a new tracing session through
7499/// ProducerPort::StartTracing().
7500/// It contains the general config for the logging buffer(s) and the configs for
7501/// all the data source being enabled.
7502///
7503/// Next id: 47.
7504#[derive(Clone, PartialEq, ::prost::Message)]
7505pub struct TraceConfig {
7506    #[prost(message, repeated, tag="1")]
7507    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
7508    #[prost(message, repeated, tag="2")]
7509    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
7510    #[prost(message, optional, tag="20")]
7511    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
7512    /// If specified, the trace will be stopped |duration_ms| after starting.
7513    /// This does *not* count the time the system is suspended, so we will run
7514    /// for duration_ms of system activity, not wall time.
7515    ///
7516    /// However in case of traces with triggers, see
7517    /// TriggerConfig.trigger_timeout_ms instead.
7518    #[prost(uint32, optional, tag="3")]
7519    pub duration_ms: ::core::option::Option<u32>,
7520    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
7521    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
7522    /// Linux/Android, no-op on other platforms. This is used when dealing with
7523    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
7524    /// wall-time, making them more likely to hit device reboots (and hence loss).
7525    /// This option also changes consistently the semantic of
7526    /// TriggerConfig.stop_delay_ms.
7527    #[prost(bool, optional, tag="36")]
7528    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
7529    /// This is set when --dropbox is passed to the Perfetto command line client
7530    /// and enables guardrails that limit resource usage for traces requested
7531    /// by statsd.
7532    #[prost(bool, optional, tag="4")]
7533    pub enable_extra_guardrails: ::core::option::Option<bool>,
7534    /// Reject producers that are not running under the same UID as the tracing
7535    /// service.
7536    #[prost(enumeration="trace_config::LockdownModeOperation", optional, tag="5")]
7537    pub lockdown_mode: ::core::option::Option<i32>,
7538    #[prost(message, repeated, tag="6")]
7539    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
7540    /// Statsd-specific metadata.
7541    #[prost(message, optional, tag="7")]
7542    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
7543    /// When true && |output_path| is empty, the EnableTracing() request must
7544    /// provide a file descriptor. The service will then periodically read packets
7545    /// out of the trace buffer and store it into the passed file.
7546    /// If |output_path| is not empty no fd should be passed, the service
7547    /// will create a new file and write into that (see comment below).
7548    #[prost(bool, optional, tag="8")]
7549    pub write_into_file: ::core::option::Option<bool>,
7550    /// This must point to a non-existing file. If the file exists the service
7551    /// will NOT overwrite and will fail instead as a security precaution.
7552    /// On Android, when this is used with the system traced, the path must be
7553    /// within /data/misc/perfetto-traces/ or the trace will fail.
7554    /// This option has been introduced in Android R. Before R write_into_file
7555    /// can be used only with the "pass a file descriptor over IPC" mode.
7556    #[prost(string, optional, tag="29")]
7557    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
7558    /// Optional. If non-zero tunes the write period. A min value of 100ms is
7559    /// enforced (i.e. smaller values are ignored).
7560    #[prost(uint32, optional, tag="9")]
7561    pub file_write_period_ms: ::core::option::Option<u32>,
7562    /// Optional. When non zero the periodic write stops once at most X bytes
7563    /// have been written into the file. Tracing is disabled when this limit is
7564    /// reached, even if |duration_ms| has not been reached yet.
7565    #[prost(uint64, optional, tag="10")]
7566    pub max_file_size_bytes: ::core::option::Option<u64>,
7567    #[prost(message, optional, tag="11")]
7568    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
7569    /// When true, data sources are not started until an explicit call to
7570    /// StartTracing() on the consumer port. This is to support early
7571    /// initialization and fast trace triggering. This can be used only when the
7572    /// Consumer explicitly triggers the StartTracing() method.
7573    /// This should not be used in a remote trace config via statsd, doing so will
7574    /// result in a hung trace session.
7575    #[prost(bool, optional, tag="12")]
7576    pub deferred_start: ::core::option::Option<bool>,
7577    /// When set, it periodically issues a Flush() to all data source, forcing them
7578    /// to commit their data into the tracing service. This can be used for
7579    /// quasi-real-time streaming mode and to guarantee some partial ordering of
7580    /// events in the trace in windows of X ms.
7581    ///
7582    /// Warning: Perfetto automatically handles periodic flushing so in most
7583    /// scenarios setting this field is not needed. High frequency flushing can
7584    /// significantly impact performance.
7585    #[prost(uint32, optional, tag="13")]
7586    pub flush_period_ms: ::core::option::Option<u32>,
7587    /// Wait for this long for producers to acknowledge flush requests.
7588    /// Default 5s.
7589    #[prost(uint32, optional, tag="14")]
7590    pub flush_timeout_ms: ::core::option::Option<u32>,
7591    /// Wait for this long for producers to acknowledge stop requests.
7592    /// Default 5s.
7593    #[prost(uint32, optional, tag="23")]
7594    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
7595    /// Android-only. If set, sends an intent to the Traceur system app when the
7596    /// trace ends to notify it about the trace readiness.
7597    #[prost(bool, optional, tag="16")]
7598    pub notify_traceur: ::core::option::Option<bool>,
7599    /// This field was introduced in Android S.
7600    /// Android-only. If set to a value > 0, marks the trace session as a candidate
7601    /// for being attached to a bugreport. This field effectively acts as a z-index
7602    /// for bugreports. When Android's dumpstate runs perfetto
7603    /// --save-for-bugreport, traced will pick the tracing session with the highest
7604    /// score (score <= 0 is ignored) and:
7605    /// On Android S, T:  will steal its contents, save the trace into
7606    ///      a known path and stop prematurely.
7607    /// On Android U+: will create a read-only snapshot and save that into a known
7608    ///      path, without stoppin the original tracing session.
7609    /// When this field is set the tracing session becomes eligible to be cloned
7610    /// by other UIDs.
7611    #[prost(int32, optional, tag="30")]
7612    pub bugreport_score: ::core::option::Option<i32>,
7613    /// When set, defines name of the file that will be saved under
7614    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
7615    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
7616    /// starting from the highest `bugreport_score`.
7617    /// Introduced in v42 / Android V.
7618    #[prost(string, optional, tag="38")]
7619    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
7620    #[prost(message, optional, tag="17")]
7621    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
7622    /// When this is non-empty the perfetto command line tool will ignore the rest
7623    /// of this TraceConfig and instead connect to the perfetto service as a
7624    /// producer and send these triggers, potentially stopping or starting traces
7625    /// that were previous configured to use a TriggerConfig.
7626    #[prost(string, repeated, tag="18")]
7627    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7628    #[prost(message, optional, tag="21")]
7629    pub incremental_state_config: ::core::option::Option<trace_config::IncrementalStateConfig>,
7630    /// No longer needed as we unconditionally allow tracing on user builds.
7631    #[deprecated]
7632    #[prost(bool, optional, tag="19")]
7633    pub allow_user_build_tracing: ::core::option::Option<bool>,
7634    /// If set the tracing service will ensure there is at most one tracing session
7635    /// with this key.
7636    #[prost(string, optional, tag="22")]
7637    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
7638    #[prost(enumeration="trace_config::CompressionType", optional, tag="24")]
7639    pub compression_type: ::core::option::Option<i32>,
7640    #[prost(message, optional, tag="25")]
7641    pub incident_report_config: ::core::option::Option<trace_config::IncidentReportConfig>,
7642    /// Android-only. Not for general use. If specified, sets the logging to statsd
7643    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
7644    /// this to enabled (if not explicitly set in the config) when specifying
7645    /// --upload.
7646    #[prost(enumeration="trace_config::StatsdLogging", optional, tag="31")]
7647    pub statsd_logging: ::core::option::Option<i32>,
7648    /// An identifier clients can use to tie this trace to other logging.
7649    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
7650    /// Trace UUID. If this field is set, the tracing service will respect the
7651    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
7652    /// gap-less snapshotting is not used.
7653    #[deprecated]
7654    #[prost(int64, optional, tag="27")]
7655    pub trace_uuid_msb: ::core::option::Option<i64>,
7656    #[deprecated]
7657    #[prost(int64, optional, tag="28")]
7658    pub trace_uuid_lsb: ::core::option::Option<i64>,
7659    #[prost(message, optional, tag="33")]
7660    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
7661    #[prost(message, optional, tag="34")]
7662    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
7663    #[prost(message, optional, tag="35")]
7664    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
7665    #[prost(message, repeated, tag="39")]
7666    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
7667    /// Priority boost to be applied to the traced process, when the session is
7668    /// running.
7669    #[prost(message, optional, tag="40")]
7670    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
7671    /// When set to a value > 0, this tracing session will be started in
7672    /// "exclusive mode". This has the following semantics:
7673    /// - It can only be set by shell or root users.
7674    /// - A new exclusive session will only be started if its priority is strictly
7675    ///    higher than any other active tracing session.
7676    /// - If a new exclusive session is started, all other existing tracing
7677    ///    sessions (exclusive or not) are aborted.
7678    /// - While an exclusive session is active, any new non-exclusive session (or
7679    ///    any exclusive session with a lower or equal priority) will be rejected.
7680    ///
7681    /// Introduced in: perfetto v52.
7682    /// Supported on: Android 25Q3+.
7683    #[prost(uint32, optional, tag="41")]
7684    pub exclusive_prio: ::core::option::Option<u32>,
7685    /// Configures how the service should handle flushing data from producers
7686    /// before periodically writing the trace into the output file.
7687    /// Only applicable when |write_into_file| is true.
7688    ///
7689    /// By default, if |write_into_file| is set, the service periodically issues
7690    /// a Flush() to all data sources before writing buffers into the file.
7691    /// This ensures the file always contains the latest available data.
7692    ///
7693    /// Introduced in: perfetto v54.
7694    /// Supported on: Android 26Q1+.
7695    #[prost(enumeration="trace_config::WriteFlushMode", optional, tag="44")]
7696    pub write_flush_mode: ::core::option::Option<i32>,
7697    /// Whether to sync the output file to storage after each periodic write pass.
7698    /// Only applicable when |write_into_file| is true.
7699    ///
7700    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
7701    /// sync to storage on every write.
7702    ///
7703    /// Introduced in: perfetto v54.
7704    /// Supported on: Android 26Q1+.
7705    #[prost(enumeration="trace_config::FFlushMode", optional, tag="45")]
7706    pub fflush_post_write: ::core::option::Option<i32>,
7707    /// When true, data sources in remote producers (machines connected via
7708    /// traced_relay) will be matched by default. When false (the default), data
7709    /// sources only match the host machine. In either case, an explicit
7710    /// |DataSource.machine_name_filter| takes priority.
7711    ///
7712    /// NB: perfetto versions before v54 do not have this option and match across
7713    /// machines by default. To be compatible across this version boundary, either
7714    /// set this field to true, or set an explicit machine_name_filter on all data
7715    /// sources.
7716    ///
7717    /// Introduced in: perfetto v54.
7718    #[prost(bool, optional, tag="43")]
7719    pub trace_all_machines: ::core::option::Option<bool>,
7720    #[prost(message, repeated, tag="46")]
7721    pub notes: ::prost::alloc::vec::Vec<trace_config::Note>,
7722}
7723/// Nested message and enum types in `TraceConfig`.
7724pub mod trace_config {
7725    #[derive(Clone, PartialEq, ::prost::Message)]
7726    pub struct BufferConfig {
7727        #[prost(uint32, optional, tag="1")]
7728        pub size_kb: ::core::option::Option<u32>,
7729        #[prost(enumeration="buffer_config::FillPolicy", optional, tag="4")]
7730        pub fill_policy: ::core::option::Option<i32>,
7731        /// When true the buffer is moved (rather than copied) onto the cloned
7732        /// session, and an empty buffer of the same size is allocated in the source
7733        /// tracing session. This feature will likely get deprecated in the future.
7734        /// It been introduced mainly to support the surfaceflinger snapshot dump
7735        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
7736        /// that case we don't want to retain another in-memory copy of the buffer.
7737        #[prost(bool, optional, tag="5")]
7738        pub transfer_on_clone: ::core::option::Option<bool>,
7739        /// Used in conjunction with transfer_on_clone. When true the buffer is
7740        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
7741        /// that if the data source took too long to write the data in a previous
7742        /// clone-related flush, we don't end up with a mixture of leftovers from
7743        /// the previous write and new data.
7744        #[prost(bool, optional, tag="6")]
7745        pub clear_before_clone: ::core::option::Option<bool>,
7746        /// Optional name for this buffer. If set, data sources can reference this
7747        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
7748        /// using the buffer index. Buffer names must be unique within a tracing
7749        /// session. This provides a more human-readable and less error-prone way to
7750        /// configure which buffer a data source writes to.
7751        #[prost(string, optional, tag="7")]
7752        pub name: ::core::option::Option<::prost::alloc::string::String>,
7753        #[prost(enumeration="buffer_config::ExperimentalMode", optional, tag="8")]
7754        pub experimental_mode: ::core::option::Option<i32>,
7755    }
7756    /// Nested message and enum types in `BufferConfig`.
7757    pub mod buffer_config {
7758        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7759        #[repr(i32)]
7760        pub enum FillPolicy {
7761            Unspecified = 0,
7762            /// Default behavior. The buffer operates as a conventional ring buffer.
7763            /// If the writer is faster than the reader (or if the reader reads only
7764            /// after tracing is stopped) newly written packets will overwrite old
7765            /// packets.
7766            RingBuffer = 1,
7767            /// Behaves like RING_BUFFER as long as there is space in the buffer or
7768            /// the reader catches up with the writer. As soon as the writer hits
7769            /// an unread chunk, it stops accepting new data in the buffer.
7770            Discard = 2,
7771        }
7772        impl FillPolicy {
7773            /// String value of the enum field names used in the ProtoBuf definition.
7774            ///
7775            /// The values are not transformed in any way and thus are considered stable
7776            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7777            pub fn as_str_name(&self) -> &'static str {
7778                match self {
7779                    FillPolicy::Unspecified => "UNSPECIFIED",
7780                    FillPolicy::RingBuffer => "RING_BUFFER",
7781                    FillPolicy::Discard => "DISCARD",
7782                }
7783            }
7784        }
7785        /// When true, uses the experimental TraceBufferV2 implementation for this
7786        /// buffer. This is for testing purposes only and may be removed in future
7787        /// versions.
7788        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
7789        #[repr(i32)]
7790        pub enum ExperimentalMode {
7791            /// Use the default V1 implementation.
7792            ModeUnspecified = 0,
7793            /// Use TraceBufferV2.
7794            TraceBufferV2 = 1,
7795            /// Use both V1 and V2 in shadow mode. Data is written to both buffers,
7796            /// but only V1 data is returned. Comparison stats are reported to
7797            /// validate V2 returns equivalent data.
7798            TraceBufferV2ShadowMode = 2,
7799        }
7800        impl ExperimentalMode {
7801            /// String value of the enum field names used in the ProtoBuf definition.
7802            ///
7803            /// The values are not transformed in any way and thus are considered stable
7804            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7805            pub fn as_str_name(&self) -> &'static str {
7806                match self {
7807                    ExperimentalMode::ModeUnspecified => "MODE_UNSPECIFIED",
7808                    ExperimentalMode::TraceBufferV2 => "TRACE_BUFFER_V2",
7809                    ExperimentalMode::TraceBufferV2ShadowMode => "TRACE_BUFFER_V2_SHADOW_MODE",
7810                }
7811            }
7812        }
7813    }
7814    #[derive(Clone, PartialEq, ::prost::Message)]
7815    pub struct DataSource {
7816        /// Filters and data-source specific config. It contains also the unique name
7817        /// of the data source, the one passed in the  DataSourceDescriptor when they
7818        /// register on the service.
7819        #[prost(message, optional, tag="1")]
7820        pub config: ::core::option::Option<super::DataSourceConfig>,
7821        /// Optional. If multiple producers (~processes) expose the same data source
7822        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
7823        /// the data source is enabled only for producers whose names match any of
7824        /// the filters.
7825        /// |producer_name_filter| has to be an exact match, while
7826        /// |producer_name_regex_filter| is a regular expression.
7827        /// This allows to enable a data source only for specific processes.
7828        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
7829        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
7830        #[prost(string, repeated, tag="2")]
7831        pub producer_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7832        #[prost(string, repeated, tag="3")]
7833        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7834        /// Filter by machine names. The name of a machine is determined by the
7835        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
7836        /// variable is not set then the
7837        /// persist.traced_relay.machine_name system property is used. If the
7838        /// sysprop isn't set or not in an Android system, then the machine name by
7839        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
7840        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
7841        /// to the host machine, which is the machine running traced.
7842        #[prost(string, repeated, tag="4")]
7843        pub machine_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7844    }
7845    /// Config for disabling builtin data sources in the tracing service.
7846    #[derive(Clone, PartialEq, ::prost::Message)]
7847    pub struct BuiltinDataSource {
7848        /// Disable emitting clock timestamps into the trace.
7849        #[prost(bool, optional, tag="1")]
7850        pub disable_clock_snapshotting: ::core::option::Option<bool>,
7851        /// Disable echoing the original trace config in the trace.
7852        #[prost(bool, optional, tag="2")]
7853        pub disable_trace_config: ::core::option::Option<bool>,
7854        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
7855        #[prost(bool, optional, tag="3")]
7856        pub disable_system_info: ::core::option::Option<bool>,
7857        /// Disable emitting events for data-source state changes (e.g. the marker
7858        /// for all data sources having ACKed the start of the trace).
7859        #[prost(bool, optional, tag="4")]
7860        pub disable_service_events: ::core::option::Option<bool>,
7861        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
7862        /// also ClockSnapshot's primary_trace_clock. The configured value is written
7863        /// into the trace as part of the ClockSnapshots emitted by the service.
7864        /// Trace processor will attempt to translate packet/event timestamps from
7865        /// various data sources (and their chosen clock domains) to this domain
7866        /// during import. Added in Android R.
7867        #[prost(enumeration="super::BuiltinClock", optional, tag="5")]
7868        pub primary_trace_clock: ::core::option::Option<i32>,
7869        /// Time interval in between snapshotting of sync markers, clock snapshots,
7870        /// stats, and other periodic service-emitted events. Note that the service
7871        /// only keeps track of the first and the most recent snapshot until
7872        /// ReadBuffers() is called.
7873        #[prost(uint32, optional, tag="6")]
7874        pub snapshot_interval_ms: ::core::option::Option<u32>,
7875        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
7876        /// clock should be used for periodic snapshots of service-emitted events.
7877        /// This means, if a snapshot *should* have happened during suspend, it will
7878        /// happen immediately after the device resumes.
7879        ///
7880        /// Choosing a clock like this is done on best-effort basis; not all
7881        /// platforms (e.g. Windows) expose a clock which can be used for periodic
7882        /// tasks counting suspend. If such a clock is not available, the service
7883        /// falls back to the best-available alternative.
7884        ///
7885        /// Introduced in Android S.
7886        /// TODO(lalitm): deprecate this in T and make this the default if nothing
7887        /// crashes in S.
7888        #[prost(bool, optional, tag="7")]
7889        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
7890        /// Disables the reporting of per-trace-writer histograms in TraceStats.
7891        #[prost(bool, optional, tag="8")]
7892        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
7893        /// Disable emitting extension descriptors into the trace.
7894        #[prost(bool, optional, tag="9")]
7895        pub disable_extension_descriptors: ::core::option::Option<bool>,
7896    }
7897    #[derive(Clone, PartialEq, ::prost::Message)]
7898    pub struct ProducerConfig {
7899        /// Identifies the producer for which this config is for.
7900        #[prost(string, optional, tag="1")]
7901        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
7902        /// Specifies the preferred size of the shared memory buffer. If the size is
7903        /// larger than the max size, the max will be used. If it is smaller than
7904        /// the page size or doesn't fit pages evenly into it, it will fall back to
7905        /// the size specified by the producer or finally the default shared memory
7906        /// size.
7907        #[prost(uint32, optional, tag="2")]
7908        pub shm_size_kb: ::core::option::Option<u32>,
7909        /// Specifies the preferred size of each page in the shared memory buffer.
7910        /// Must be an integer multiple of 4K.
7911        #[prost(uint32, optional, tag="3")]
7912        pub page_size_kb: ::core::option::Option<u32>,
7913    }
7914    /// Contains statsd-specific metadata about an alert associated with the trace.
7915    #[derive(Clone, PartialEq, ::prost::Message)]
7916    pub struct StatsdMetadata {
7917        /// The identifier of the alert which triggered this trace.
7918        #[prost(int64, optional, tag="1")]
7919        pub triggering_alert_id: ::core::option::Option<i64>,
7920        /// The uid which registered the triggering configuration with statsd.
7921        #[prost(int32, optional, tag="2")]
7922        pub triggering_config_uid: ::core::option::Option<i32>,
7923        /// The identifier of the config which triggered the alert.
7924        #[prost(int64, optional, tag="3")]
7925        pub triggering_config_id: ::core::option::Option<i64>,
7926        /// The identifier of the subscription which triggered this trace.
7927        #[prost(int64, optional, tag="4")]
7928        pub triggering_subscription_id: ::core::option::Option<i64>,
7929    }
7930    /// Contains flags which override the default values of the guardrails inside
7931    /// Perfetto.
7932    #[derive(Clone, PartialEq, ::prost::Message)]
7933    pub struct GuardrailOverrides {
7934        /// Override the default limit (in bytes) for uploading data to server within
7935        /// a 24 hour period.
7936        /// On R-, this override only affected userdebug builds. Since S, it also
7937        /// affects user builds.
7938        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
7939        /// was removed from Perfetto.
7940        #[deprecated]
7941        #[prost(uint64, optional, tag="1")]
7942        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
7943        /// Overrides the guardrail for maximum trace buffer size.
7944        /// Available on U+
7945        #[prost(uint32, optional, tag="2")]
7946        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
7947    }
7948    /// Triggers allow producers to start or stop the tracing session when an event
7949    /// occurs.
7950    ///
7951    /// For example if we are tracing probabilistically, most traces will be
7952    /// uninteresting. Triggers allow us to keep only the interesting ones such as
7953    /// those traces during which the device temperature reached a certain
7954    /// threshold. In this case the producer can activate a trigger to keep
7955    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
7956    /// (START_TRACING) because it knows something is about to happen.
7957    #[derive(Clone, PartialEq, ::prost::Message)]
7958    pub struct TriggerConfig {
7959        #[prost(enumeration="trigger_config::TriggerMode", optional, tag="1")]
7960        pub trigger_mode: ::core::option::Option<i32>,
7961        /// This flag is really a workaround for b/274931668. This is needed only
7962        /// when deploying configs to different versions of the tracing service.
7963        /// When this is set to true this has the same effect of setting trigger_mode
7964        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
7965        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
7966        /// versions of Android and fall back to STOP_TRACING on older versions where
7967        /// CLONE_SNAPSHOT did not exist.
7968        /// When using this flag, trigger_mode must be set to STOP_TRACING.
7969        #[prost(bool, optional, tag="5")]
7970        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
7971        /// A list of triggers which are related to this configuration. If ANY
7972        /// trigger is seen then an action will be performed based on |trigger_mode|.
7973        #[prost(message, repeated, tag="2")]
7974        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
7975        /// Required and must be positive if a TriggerConfig is specified. This is
7976        /// how long this TraceConfig should wait for a trigger to arrive. After this
7977        /// period of time if no trigger is seen the TracingSession will be cleaned
7978        /// up.
7979        #[prost(uint32, optional, tag="3")]
7980        pub trigger_timeout_ms: ::core::option::Option<u32>,
7981    }
7982    /// Nested message and enum types in `TriggerConfig`.
7983    pub mod trigger_config {
7984        #[derive(Clone, PartialEq, ::prost::Message)]
7985        pub struct Trigger {
7986            /// The producer must specify this name to activate the trigger.
7987            #[prost(string, optional, tag="1")]
7988            pub name: ::core::option::Option<::prost::alloc::string::String>,
7989            /// An std::regex that will match the producer that can activate this
7990            /// trigger. This is optional. If unset any producers can activate this
7991            /// trigger.
7992            #[prost(string, optional, tag="2")]
7993            pub producer_name_regex: ::core::option::Option<::prost::alloc::string::String>,
7994            /// After a trigger is received either in START_TRACING or STOP_TRACING
7995            /// mode then the trace will end |stop_delay_ms| after triggering.
7996            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
7997            /// snapshot.
7998            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
7999            /// based on wall-clock, counting also time in suspend.
8000            #[prost(uint32, optional, tag="3")]
8001            pub stop_delay_ms: ::core::option::Option<u32>,
8002            /// Limits the number of traces this trigger can start/stop in a rolling
8003            /// 24 hour window. If this field is unset or zero, no limit is applied and
8004            /// activiation of this trigger *always* starts/stops the trace.
8005            #[prost(uint32, optional, tag="4")]
8006            pub max_per_24_h: ::core::option::Option<u32>,
8007            /// A value between 0 and 1 which encodes the probability of skipping a
8008            /// trigger with this name. This is useful for reducing the probability
8009            /// of high-frequency triggers from dominating trace finaization. If this
8010            /// field is unset or zero, the trigger will *never* be skipped. If this
8011            /// field is greater than or equal to 1, this trigger will *always* be
8012            /// skipped i.e. it will be as if this trigger was never included in the
8013            /// first place.
8014            /// This probability check is applied *before* any other limits. For
8015            /// example, if |max_per_24_h| is also set, first we will check if the
8016            /// probability bar is met and only then will we check the |max_per_24_h|
8017            /// limit.
8018            #[prost(double, optional, tag="5")]
8019            pub skip_probability: ::core::option::Option<f64>,
8020        }
8021        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8022        #[repr(i32)]
8023        pub enum TriggerMode {
8024            Unspecified = 0,
8025            /// When this mode is chosen, data sources are not started until one of the
8026            /// |triggers| are received. This supports early initialization and fast
8027            /// starting of the tracing system. On triggering, the session will then
8028            /// record for |stop_delay_ms|. However if no trigger is seen
8029            /// after |trigger_timeout_ms| the session will be stopped and no data will
8030            /// be returned.
8031            StartTracing = 1,
8032            /// When this mode is chosen, the session will be started via the normal
8033            /// EnableTracing() & StartTracing(). If no trigger is ever seen
8034            /// the session will be stopped after |trigger_timeout_ms| and no data will
8035            /// be returned. However if triggered the trace will stop after
8036            /// |stop_delay_ms| and any data in the buffer will be returned to the
8037            /// consumer.
8038            StopTracing = 2,
8039            /// When this mode is chosen, this causes a snapshot of the current tracing
8040            /// session to be created after |stop_delay_ms| while the current tracing
8041            /// session continues undisturbed (% an extra flush). This mode can be
8042            /// used only when the tracing session is handled by the "perfetto" cmdline
8043            /// client (which is true in 90% of cases). Part of the business logic
8044            /// necessary for this behavior, and ensuing file handling, lives in
8045            /// perfetto_cmd.cc . On other consumers, this causes only a notification
8046            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
8047            /// consumer is supposed to call CloneSession() itself after the event.
8048            /// Use use_clone_snapshot_if_available=true when targeting older versions
8049            /// of perfetto.
8050            CloneSnapshot = 4,
8051        }
8052        impl TriggerMode {
8053            /// String value of the enum field names used in the ProtoBuf definition.
8054            ///
8055            /// The values are not transformed in any way and thus are considered stable
8056            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8057            pub fn as_str_name(&self) -> &'static str {
8058                match self {
8059                    TriggerMode::Unspecified => "UNSPECIFIED",
8060                    TriggerMode::StartTracing => "START_TRACING",
8061                    TriggerMode::StopTracing => "STOP_TRACING",
8062                    TriggerMode::CloneSnapshot => "CLONE_SNAPSHOT",
8063                }
8064            }
8065        }
8066    }
8067    /// Configuration for trace contents that reference earlier trace data. For
8068    /// example, a data source might intern strings, and emit packets containing
8069    /// {interned id : string} pairs. Future packets from that data source can then
8070    /// use the interned ids instead of duplicating the raw string contents. The
8071    /// trace parser will then need to use that interning table to fully interpret
8072    /// the rest of the trace.
8073    #[derive(Clone, PartialEq, ::prost::Message)]
8074    pub struct IncrementalStateConfig {
8075        /// If nonzero, notify eligible data sources to clear their incremental state
8076        /// periodically, with the given period. The notification is sent only to
8077        /// data sources that have |handles_incremental_state_clear| set in their
8078        /// DataSourceDescriptor. The notification requests that the data source
8079        /// stops referring to past trace contents. This is particularly useful when
8080        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
8081        /// trace data.
8082        ///
8083        /// Warning: this time-based global clearing is likely to be removed in the
8084        /// future, to be replaced with a smarter way of sending the notifications
8085        /// only when necessary.
8086        #[prost(uint32, optional, tag="1")]
8087        pub clear_period_ms: ::core::option::Option<u32>,
8088    }
8089    /// Android-only. Not for general use. If set, saves the trace into an
8090    /// incident. This field is read by perfetto_cmd, rather than the tracing
8091    /// service. This field must be set when passing the --upload flag to
8092    /// perfetto_cmd.
8093    ///
8094    /// In this message, either:
8095    ///   * all of |destination_package|, |destination_class| and |privacy_level|
8096    ///     must be set.
8097    ///   * |skip_incidentd| must be explicitly set to true.
8098    #[derive(Clone, PartialEq, ::prost::Message)]
8099    pub struct IncidentReportConfig {
8100        #[prost(string, optional, tag="1")]
8101        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
8102        #[prost(string, optional, tag="2")]
8103        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
8104        /// Level of filtering in the requested incident. See |Destination| in
8105        /// frameworks/base/core/proto/android/privacy.proto.
8106        #[prost(int32, optional, tag="3")]
8107        pub privacy_level: ::core::option::Option<i32>,
8108        /// If true, then skips saving the trace to incidentd.
8109        ///
8110        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
8111        /// or when we explicitly don't want traces to go to incidentd even when they
8112        /// usually would (e.g. configs deployed using statsd but only used for
8113        /// inclusion in bugreports using |bugreport_score|).
8114        ///
8115        /// The motivation for having this flag, instead of just not setting
8116        /// |incident_report_config|, is prevent accidents where
8117        /// |incident_report_config| is omitted by mistake.
8118        #[prost(bool, optional, tag="5")]
8119        pub skip_incidentd: ::core::option::Option<bool>,
8120        /// If true, do not write the trace into dropbox (i.e. incident only).
8121        /// Otherwise, write to both dropbox and incident.
8122        /// TODO(lalitm): remove this field as we no longer use Dropbox.
8123        #[deprecated]
8124        #[prost(bool, optional, tag="4")]
8125        pub skip_dropbox: ::core::option::Option<bool>,
8126    }
8127    /// When set applies a post-filter to the trace contents using the filter
8128    /// provided. The filter is applied at ReadBuffers() time and works both in the
8129    /// case of IPC readback and write_into_file. This filter can be generated
8130    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
8131    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
8132    /// design.
8133    ///
8134    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
8135    /// Android T with a different field number. Updated in Android U with a new
8136    /// bytecode version which supports string filtering.
8137    ///
8138    /// =========================
8139    /// Filter bytecode.
8140    /// =========================
8141    #[derive(Clone, PartialEq, ::prost::Message)]
8142    pub struct TraceFilter {
8143        /// The bytecode as implemented in Android T.
8144        #[prost(bytes="vec", optional, tag="1")]
8145        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8146        /// The bytecode as implemented in Android U. Adds support for string
8147        /// filtering.
8148        #[prost(bytes="vec", optional, tag="2")]
8149        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8150        #[prost(message, optional, tag="3")]
8151        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
8152        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
8153        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
8154        /// versions ignore this field; new versions apply it.
8155        ///
8156        /// The motivation for this is that adding new opcodes in a backwards
8157        /// compatible way while also minimizing config size is hard. Instead, the
8158        /// overlay mechanism allows us to "patch" specific fields in the original
8159        /// bytecode_v2 with new semantics.
8160        ///
8161        /// See RFC 0011-subset-string-filter-rules.md for more info.
8162        ///
8163        /// Note:
8164        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
8165        /// markers), this overlay uses a triplet format with explicit indices:
8166        ///    [msg_index, field_id << 3 | opcode, argument] ... \[checksum\]
8167        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
8168        /// Entries must be sorted by (msg_index, field_id).
8169        ///
8170        /// The parser processes bytecode_v2 and this overlay simultaneously:
8171        ///   - any field not mentioned in the overlay is parsed as usual
8172        ///   - any field in the overlay but *not* in the bytecode_v2 is added
8173        ///     with its overlay value
8174        ///   - any field in both the overlay and bytecode_v2 takes the value in the
8175        ///     overlay, the bytecode_v2 value is ignored.
8176        ///
8177        /// Note: despite the name, this was broken in v54 (the overlay was not
8178        /// passed through to the bytecode parser). Only works in v55+.
8179        #[prost(bytes="vec", optional, tag="4")]
8180        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8181        /// String filter chain for Perfetto v54+. Rules in this chain either
8182        /// overwrite rules in string_filter_chain (if the name matches) or are
8183        /// appended (if the name doesn't match). This allows modifying existing
8184        /// rules (e.g., changing policy) without duplicating the entire chain.
8185        /// Rules without a name are always appended.
8186        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
8187        /// Introduced in: Perfetto v54.
8188        #[prost(message, optional, tag="5")]
8189        pub string_filter_chain_v54: ::core::option::Option<trace_filter::StringFilterChain>,
8190    }
8191    /// Nested message and enum types in `TraceFilter`.
8192    pub mod trace_filter {
8193        /// A rule specifies how strings should be filtered.
8194        #[derive(Clone, PartialEq, ::prost::Message)]
8195        pub struct StringFilterRule {
8196            /// The policy (i.e. algorithm) dictating how strings matching this rule
8197            /// should be handled.
8198            #[prost(enumeration="StringFilterPolicy", optional, tag="1")]
8199            pub policy: ::core::option::Option<i32>,
8200            /// The regex pattern used to match against each string.
8201            #[prost(string, optional, tag="2")]
8202            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
8203            /// The string which should appear after the tgid in atrace tracepoint
8204            /// strings.
8205            #[prost(string, optional, tag="3")]
8206            pub atrace_payload_starts_with: ::core::option::Option<::prost::alloc::string::String>,
8207            /// Optional name for the rule. When merging chains (e.g. via
8208            /// string_filter_chain_v54), rules with matching names in the newer chain
8209            /// will overwrite rules in the base chain. Rules without a name (empty or
8210            /// unset) are always treated as distinct and will be appended.
8211            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
8212            /// Introduced in: Perfetto v54.
8213            #[prost(string, optional, tag="4")]
8214            pub name: ::core::option::Option<::prost::alloc::string::String>,
8215            /// The semantic types this rule applies to.
8216            ///
8217            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
8218            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
8219            /// - If non-empty, the rule applies only to fields whose semantic type
8220            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
8221            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
8222            ///
8223            /// Examples:
8224            ///    semantic_type: []           -> matches only UNSPECIFIED fields
8225            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
8226            ///    semantic_type: [UNSPECIFIED, ATRACE] -> matches both
8227            ///
8228            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
8229            /// Introduced in: Perfetto v54.
8230            #[prost(enumeration="super::super::SemanticType", repeated, packed="false", tag="5")]
8231            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
8232        }
8233        /// A chain is a list of rules which string will be sequentially checked
8234        /// against.
8235        #[derive(Clone, PartialEq, ::prost::Message)]
8236        pub struct StringFilterChain {
8237            #[prost(message, repeated, tag="1")]
8238            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
8239        }
8240        // =========================
8241        // String filtering
8242        // =========================
8243
8244        // The principles and terminology of string filtering is heavily inspired by
8245        // iptables. A "rule" decide how strings should be filtered. Each rule
8246        // contains a "policy" which indicates the algorithm to use for filtering.
8247        // A "chain" is a list of rules which will be sequentially checked against
8248        // each string.
8249        //
8250        // The first rule which applies to the string terminates filtering for that
8251        // string. If no rules apply, the string is left unchanged.
8252
8253        /// A policy specifies which algorithm should be used for filtering the
8254        /// string.
8255        #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8256        #[repr(i32)]
8257        pub enum StringFilterPolicy {
8258            SfpUnspecified = 0,
8259            /// Tries to match the string field against |regex_pattern|. If it
8260            /// matches, all matching groups are "redacted" (i.e. replaced with a
8261            /// constant string) and filtering is terminated (i.e. no further rules are
8262            /// checked). If it doesn't match, the string is left unchanged and the
8263            /// next rule in chain is considered.
8264            SfpMatchRedactGroups = 1,
8265            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
8266            /// checking the regex. Specifically, it tries to parse the string field as
8267            /// an atrace tracepoint and checks if the post-tgid field starts with
8268            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
8269            /// this check succeeds.
8270            SfpAtraceMatchRedactGroups = 2,
8271            /// Tries to match the string field against |regex_pattern|. If it
8272            /// matches, filtering is terminated (i.e. no further rules are checked).
8273            /// If it doesn't match, the string is left unchanged and the next rule in
8274            /// chain is considered.
8275            SfpMatchBreak = 3,
8276            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
8277            /// the regex. Specifically, it tries to parse the string field as an
8278            /// atrace tracepoint and checks if the post-tgid field starts with
8279            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
8280            /// this check succeeds.
8281            SfpAtraceMatchBreak = 4,
8282            /// Tries to repeatedly search (i.e. find substrings of) the string field
8283            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
8284            /// replaced with a constant string). Once there are no further matches,
8285            /// filtering is terminated (i.e. no further rules are checked).
8286            ///
8287            /// Note that this is policy is a "search" policy not a "match" policy
8288            /// unlike the above policies:
8289            ///   * Match policies require matching the full string i.e. there is an
8290            ///     implicit leading `^` and trailing `$`.
8291            ///   * Search policies perform repeated partial matching of the string
8292            ///     e.g.
8293            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
8294            ///       - Pattern: `foo=(\d+)`
8295            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
8296            ///     where P6O is the redaction string
8297            ///
8298            /// All of this is only performed after some pre-work where we try to parse
8299            /// the string field as an atrace tracepoint and check if the post-tgid
8300            /// field starts with |atrace_post_tgid_starts_with|.
8301            ///
8302            /// If there are no partial matches, the string is left unchanged and the
8303            /// next rule in chain is considered.
8304            SfpAtraceRepeatedSearchRedactGroups = 5,
8305        }
8306        impl StringFilterPolicy {
8307            /// String value of the enum field names used in the ProtoBuf definition.
8308            ///
8309            /// The values are not transformed in any way and thus are considered stable
8310            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8311            pub fn as_str_name(&self) -> &'static str {
8312                match self {
8313                    StringFilterPolicy::SfpUnspecified => "SFP_UNSPECIFIED",
8314                    StringFilterPolicy::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
8315                    StringFilterPolicy::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
8316                    StringFilterPolicy::SfpMatchBreak => "SFP_MATCH_BREAK",
8317                    StringFilterPolicy::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
8318                    StringFilterPolicy::SfpAtraceRepeatedSearchRedactGroups => "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS",
8319                }
8320            }
8321        }
8322    }
8323    /// Android-only. Not for general use. If set, reports the trace to the
8324    /// Android framework. This field is read by perfetto_cmd, rather than the
8325    /// tracing service. This field must be set when passing the --upload flag to
8326    /// perfetto_cmd.
8327    ///
8328    /// In this message, either:
8329    ///   * |reporter_service_package| and |reporter_service_class| must be set.
8330    ///   * |skip_reporting| must be explicitly set to true.
8331    #[derive(Clone, PartialEq, ::prost::Message)]
8332    pub struct AndroidReportConfig {
8333        #[prost(string, optional, tag="1")]
8334        pub reporter_service_package: ::core::option::Option<::prost::alloc::string::String>,
8335        #[prost(string, optional, tag="2")]
8336        pub reporter_service_class: ::core::option::Option<::prost::alloc::string::String>,
8337        /// If true, then skips reporting the trace to Android framework.
8338        ///
8339        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
8340        /// or when we explicitly don't want to report traces to the framework even
8341        /// when they usually would (e.g. configs deployed using statsd but only
8342        /// used for inclusion in bugreports using |bugreport_score|).
8343        ///
8344        /// The motivation for having this flag, instead of just not setting
8345        /// |framework_report_config|, is prevent accidents where
8346        /// |framework_report_config| is omitted by mistake.
8347        #[prost(bool, optional, tag="3")]
8348        pub skip_report: ::core::option::Option<bool>,
8349        /// If true, will direct the Android framework to read the data in trace
8350        /// file and pass it to the reporter class over a pipe instead of passing
8351        /// the file descriptor directly.
8352        ///
8353        /// This flag is needed because the Android test framework does not
8354        /// currently support priv-app helper apps (in terms of SELinux) and we
8355        /// really don't want to add an allow rule for untrusted_app to receive
8356        /// trace fds.
8357        ///
8358        /// Because of this, we instead will direct the framework to create a new
8359        /// pipe and pass this to the reporter process instead. As the pipe is
8360        /// created by the framework, we won't have any problems with SELinux
8361        /// (system_server is already allowed to pass pipe fds, even
8362        /// to untrusted apps).
8363        ///
8364        /// As the name suggests this option *MUST* only be used for testing.
8365        /// Note that the framework will reject (and drop) files which are too
8366        /// large both for simplicity and to be minimize the amount of data we
8367        /// pass to a non-priv app (note that the framework will still check
8368        /// manifest permissions even though SELinux permissions are worked around).
8369        #[prost(bool, optional, tag="4")]
8370        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
8371    }
8372    /// If set, delays the start of tracing by a random duration. The duration is
8373    /// chosen from a uniform distribution between the specified minimum and
8374    /// maximum.
8375    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
8376    /// not work if you communicate with traced directly over the consumer API.
8377    /// Introduced in Android T.
8378    #[derive(Clone, PartialEq, ::prost::Message)]
8379    pub struct CmdTraceStartDelay {
8380        #[prost(uint32, optional, tag="1")]
8381        pub min_delay_ms: ::core::option::Option<u32>,
8382        #[prost(uint32, optional, tag="2")]
8383        pub max_delay_ms: ::core::option::Option<u32>,
8384    }
8385    /// When non-empty, ensures that for a each semaphore named `name at most
8386    /// `max_other_session_count`` *other* sessions (whose value is taken of the
8387    /// minimum of all values specified by this config or any already-running
8388    /// session) can be be running.
8389    ///
8390    /// If a semaphore "acquisition" fails, EnableTracing will return an error
8391    /// and the tracing session will not be started (or elgible to start in
8392    /// the case of deferred sessions).
8393    ///
8394    /// This is easiest to explain with an example. Suppose the tracing service has
8395    /// the following active tracing sessions:
8396    ///    S1 = [{name=foo, max_other_session_count=2},
8397    ///          {name=bar, max_other_session_count=0}]
8398    ///    S2 = [{name=foo, max_other_session_count=1},
8399    ///          {name=baz, max_other_session_count=1}]
8400    ///
8401    /// Then, for a new session, the following would be the expected behaviour of
8402    /// EnableSession given the state of `session_semaphores`.
8403    ///    Q: session_semaphores = []
8404    ///    A: Allowed because it does not specify any semaphores. Will be allowed
8405    ///       no matter the state of any other tracing session.
8406    ///    Q: session_semaphores = [{name=baz, max_other_session_count=1}]
8407    ///    A: Allowed because both S2 and this config specify
8408    ///       max_other_session_count=1 for baz.
8409    ///    Q: session_semaphores = [{name=foo, max_other_session_count=3}]
8410    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
8411    ///       takes that slot.
8412    ///    Q: session_semaphores = [{name=bar, max_other_session_count=0}]
8413    ///    A: Denied because S1 takes the the slot specified by both S1 and
8414    ///       this config.
8415    ///
8416    /// Introduced in 24Q3 (Android V).
8417    #[derive(Clone, PartialEq, ::prost::Message)]
8418    pub struct SessionSemaphore {
8419        /// The name of the semaphore. Acts as a unique identifier across all
8420        /// tracing sessions (including the one being started).
8421        #[prost(string, optional, tag="1")]
8422        pub name: ::core::option::Option<::prost::alloc::string::String>,
8423        /// The maximum number of *other* sesssions which specify the same semaphore
8424        /// which can be active. The minimum of this value across all tracing
8425        /// sessions and the value specified by the config is used when deciding
8426        /// whether the tracing session can be started.
8427        #[prost(uint64, optional, tag="2")]
8428        pub max_other_session_count: ::core::option::Option<u64>,
8429    }
8430    /// Allow key, value pairs to save arbitrary data about trace.
8431    #[derive(Clone, PartialEq, ::prost::Message)]
8432    pub struct Note {
8433        /// Required.
8434        #[prost(string, optional, tag="1")]
8435        pub key: ::core::option::Option<::prost::alloc::string::String>,
8436        /// Required.
8437        #[prost(string, optional, tag="2")]
8438        pub value: ::core::option::Option<::prost::alloc::string::String>,
8439    }
8440    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8441    #[repr(i32)]
8442    pub enum LockdownModeOperation {
8443        LockdownUnchanged = 0,
8444        LockdownClear = 1,
8445        LockdownSet = 2,
8446    }
8447    impl LockdownModeOperation {
8448        /// String value of the enum field names used in the ProtoBuf definition.
8449        ///
8450        /// The values are not transformed in any way and thus are considered stable
8451        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8452        pub fn as_str_name(&self) -> &'static str {
8453            match self {
8454                LockdownModeOperation::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
8455                LockdownModeOperation::LockdownClear => "LOCKDOWN_CLEAR",
8456                LockdownModeOperation::LockdownSet => "LOCKDOWN_SET",
8457            }
8458        }
8459    }
8460    /// Compress trace with the given method. Best effort.
8461    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8462    #[repr(i32)]
8463    pub enum CompressionType {
8464        Unspecified = 0,
8465        Deflate = 1,
8466    }
8467    impl CompressionType {
8468        /// String value of the enum field names used in the ProtoBuf definition.
8469        ///
8470        /// The values are not transformed in any way and thus are considered stable
8471        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8472        pub fn as_str_name(&self) -> &'static str {
8473            match self {
8474                CompressionType::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
8475                CompressionType::Deflate => "COMPRESSION_TYPE_DEFLATE",
8476            }
8477        }
8478    }
8479    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8480    #[repr(i32)]
8481    pub enum StatsdLogging {
8482        Unspecified = 0,
8483        Enabled = 1,
8484        Disabled = 2,
8485    }
8486    impl StatsdLogging {
8487        /// String value of the enum field names used in the ProtoBuf definition.
8488        ///
8489        /// The values are not transformed in any way and thus are considered stable
8490        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8491        pub fn as_str_name(&self) -> &'static str {
8492            match self {
8493                StatsdLogging::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
8494                StatsdLogging::Enabled => "STATSD_LOGGING_ENABLED",
8495                StatsdLogging::Disabled => "STATSD_LOGGING_DISABLED",
8496            }
8497        }
8498    }
8499    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8500    #[repr(i32)]
8501    pub enum WriteFlushMode {
8502        /// Same as WRITE_FLUSH_AUTO.
8503        WriteFlushUnspecified = 0,
8504        /// Default mode. The service automatically determines the flush frequency
8505        /// to balance performance and data freshness:
8506        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
8507        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
8508        ///     issued every 5s.
8509        /// 2) If file_write_period_ms > 5s:
8510        ///     A flush is issued before every periodic write into the file.
8511        WriteFlushAuto = 1,
8512        // The following modes are intended for advanced usage and not recommended
8513        // for general use.
8514
8515        /// Do not flush buffers before periodic writes into the file.
8516        /// Use this mode if you want to minimize the performance impact of flushes
8517        /// and can tolerate potentially missing the most recent data in the trace
8518        /// file until the end of the session or an explicit flush.
8519        /// When this mode is selected, |flush_period_ms| is respected.
8520        WriteFlushDisabled = 2,
8521        /// Issue a flush before every periodic write into the file.
8522        /// This ensures that each write into the file contains the most up-to-date
8523        /// data from all data sources, but may have a higher performance overhead.
8524        WriteFlushEnabled = 3,
8525    }
8526    impl WriteFlushMode {
8527        /// String value of the enum field names used in the ProtoBuf definition.
8528        ///
8529        /// The values are not transformed in any way and thus are considered stable
8530        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8531        pub fn as_str_name(&self) -> &'static str {
8532            match self {
8533                WriteFlushMode::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
8534                WriteFlushMode::WriteFlushAuto => "WRITE_FLUSH_AUTO",
8535                WriteFlushMode::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
8536                WriteFlushMode::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
8537            }
8538        }
8539    }
8540    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8541    #[repr(i32)]
8542    pub enum FFlushMode {
8543        /// Default: same as FFLUSH_DISABLED.
8544        FflushUnspecified = 0,
8545        /// Do not explicitly sync the file to storage after each write pass.
8546        FflushDisabled = 1,
8547        /// Explicitly sync the file to storage (via fdatasync) after each periodic
8548        /// write pass. Increases data durability at the cost of higher disk I/O
8549        /// overhead.
8550        FflushEnabled = 2,
8551    }
8552    impl FFlushMode {
8553        /// String value of the enum field names used in the ProtoBuf definition.
8554        ///
8555        /// The values are not transformed in any way and thus are considered stable
8556        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8557        pub fn as_str_name(&self) -> &'static str {
8558            match self {
8559                FFlushMode::FflushUnspecified => "FFLUSH_UNSPECIFIED",
8560                FFlushMode::FflushDisabled => "FFLUSH_DISABLED",
8561                FFlushMode::FflushEnabled => "FFLUSH_ENABLED",
8562            }
8563        }
8564    }
8565}
8566/// Arguments for rpc EnableTracing().
8567#[derive(Clone, PartialEq, ::prost::Message)]
8568pub struct EnableTracingRequest {
8569    #[prost(message, optional, tag="1")]
8570    pub trace_config: ::core::option::Option<TraceConfig>,
8571    /// Introduced in Android Q. This is used for re-attaching to the end-of-trace
8572    /// EnableTracingResponse notification after a Detach+Attach request.
8573    /// When this flag is set the |trace_config| is ignored and no method is called
8574    /// on the tracing service.
8575    #[prost(bool, optional, tag="2")]
8576    pub attach_notification_only: ::core::option::Option<bool>,
8577}
8578#[derive(Clone, PartialEq, ::prost::Message)]
8579pub struct EnableTracingResponse {
8580    /// If present and non-empty tracing was disabled because of an error.
8581    /// Introduced in Android S.
8582    #[prost(string, optional, tag="3")]
8583    pub error: ::core::option::Option<::prost::alloc::string::String>,
8584    #[prost(oneof="enable_tracing_response::State", tags="1")]
8585    pub state: ::core::option::Option<enable_tracing_response::State>,
8586}
8587/// Nested message and enum types in `EnableTracingResponse`.
8588pub mod enable_tracing_response {
8589    #[derive(Clone, PartialEq, ::prost::Oneof)]
8590    pub enum State {
8591        #[prost(bool, tag="1")]
8592        Disabled(bool),
8593    }
8594}
8595/// Arguments for rpc StartTracing().
8596#[derive(Clone, PartialEq, ::prost::Message)]
8597pub struct StartTracingRequest {
8598}
8599#[derive(Clone, PartialEq, ::prost::Message)]
8600pub struct StartTracingResponse {
8601}
8602/// Arguments for rpc ChangeTraceConfig().
8603#[derive(Clone, PartialEq, ::prost::Message)]
8604pub struct ChangeTraceConfigRequest {
8605    #[prost(message, optional, tag="1")]
8606    pub trace_config: ::core::option::Option<TraceConfig>,
8607}
8608#[derive(Clone, PartialEq, ::prost::Message)]
8609pub struct ChangeTraceConfigResponse {
8610}
8611/// Arguments for rpc DisableTracing().
8612///
8613/// TODO: not supported yet, selectively disable only some data sources.
8614/// repeated string data_source_name;
8615#[derive(Clone, PartialEq, ::prost::Message)]
8616pub struct DisableTracingRequest {
8617}
8618#[derive(Clone, PartialEq, ::prost::Message)]
8619pub struct DisableTracingResponse {
8620}
8621/// Arguments for rpc ReadBuffers().
8622///
8623/// The |id|s of the buffer, as passed to CreateBuffers().
8624/// TODO: repeated uint32 buffer_ids = 1;
8625#[derive(Clone, PartialEq, ::prost::Message)]
8626pub struct ReadBuffersRequest {
8627}
8628/// TODO: uint32 buffer_id = 1;
8629#[derive(Clone, PartialEq, ::prost::Message)]
8630pub struct ReadBuffersResponse {
8631    #[prost(message, repeated, tag="2")]
8632    pub slices: ::prost::alloc::vec::Vec<read_buffers_response::Slice>,
8633}
8634/// Nested message and enum types in `ReadBuffersResponse`.
8635pub mod read_buffers_response {
8636    /// Each streaming reply returns one or more slices for one or more trace
8637    /// packets, or even just a portion of it (if it's too big to fit within one
8638    /// IPC). The returned slices are ordered and contiguous: packets' slices are
8639    /// not interleaved and slices are sent only once all slices for a packet are
8640    /// available (i.e. the consumer will never see any gap).
8641    #[derive(Clone, PartialEq, ::prost::Message)]
8642    pub struct Slice {
8643        #[prost(bytes="vec", optional, tag="1")]
8644        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8645        /// When true, this is the last slice for the packet. A ReadBufferResponse
8646        /// might have no slices marked as |last_slice_for_packet|==true, in the case
8647        /// of a very large packet that gets chunked into several IPCs (in which case
8648        /// only the last IPC for the packet will have this flag set).
8649        #[prost(bool, optional, tag="2")]
8650        pub last_slice_for_packet: ::core::option::Option<bool>,
8651    }
8652}
8653/// Arguments for rpc FreeBuffers().
8654#[derive(Clone, PartialEq, ::prost::Message)]
8655pub struct FreeBuffersRequest {
8656    /// The |id|s of the buffer, as passed to CreateBuffers().
8657    #[prost(uint32, repeated, packed="false", tag="1")]
8658    pub buffer_ids: ::prost::alloc::vec::Vec<u32>,
8659}
8660#[derive(Clone, PartialEq, ::prost::Message)]
8661pub struct FreeBuffersResponse {
8662}
8663/// Arguments for rpc Flush().
8664#[derive(Clone, PartialEq, ::prost::Message)]
8665pub struct FlushRequest {
8666    #[prost(uint32, optional, tag="1")]
8667    pub timeout_ms: ::core::option::Option<u32>,
8668    /// More details such as flush reason and originator. Introduced in v38 / V.
8669    /// See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
8670    #[prost(uint64, optional, tag="2")]
8671    pub flags: ::core::option::Option<u64>,
8672}
8673#[derive(Clone, PartialEq, ::prost::Message)]
8674pub struct FlushResponse {
8675}
8676/// Arguments for rpc Detach
8677#[derive(Clone, PartialEq, ::prost::Message)]
8678pub struct DetachRequest {
8679    #[prost(string, optional, tag="1")]
8680    pub key: ::core::option::Option<::prost::alloc::string::String>,
8681}
8682#[derive(Clone, PartialEq, ::prost::Message)]
8683pub struct DetachResponse {
8684}
8685/// Arguments for rpc Attach.
8686#[derive(Clone, PartialEq, ::prost::Message)]
8687pub struct AttachRequest {
8688    #[prost(string, optional, tag="1")]
8689    pub key: ::core::option::Option<::prost::alloc::string::String>,
8690}
8691#[derive(Clone, PartialEq, ::prost::Message)]
8692pub struct AttachResponse {
8693    #[prost(message, optional, tag="1")]
8694    pub trace_config: ::core::option::Option<TraceConfig>,
8695}
8696// Arguments for rpc GetTraceStats.
8697
8698#[derive(Clone, PartialEq, ::prost::Message)]
8699pub struct GetTraceStatsRequest {
8700}
8701#[derive(Clone, PartialEq, ::prost::Message)]
8702pub struct GetTraceStatsResponse {
8703    #[prost(message, optional, tag="1")]
8704    pub trace_stats: ::core::option::Option<TraceStats>,
8705}
8706// Arguments for rpc ObserveEvents.
8707
8708/// To stop observing events of a certain type, send a request with the remaining
8709/// types. To stop observing completely, send an empty request.
8710#[derive(Clone, PartialEq, ::prost::Message)]
8711pub struct ObserveEventsRequest {
8712    #[prost(enumeration="observable_events::Type", repeated, packed="false", tag="1")]
8713    pub events_to_observe: ::prost::alloc::vec::Vec<i32>,
8714}
8715#[derive(Clone, PartialEq, ::prost::Message)]
8716pub struct ObserveEventsResponse {
8717    #[prost(message, optional, tag="1")]
8718    pub events: ::core::option::Option<ObservableEvents>,
8719}
8720/// Arguments for rpc QueryServiceState.
8721#[derive(Clone, PartialEq, ::prost::Message)]
8722pub struct QueryServiceStateRequest {
8723    /// If set, only the TracingServiceState.tracing_sessions is filled. Producers
8724    /// and data sources are omitted.
8725    #[prost(bool, optional, tag="1")]
8726    pub sessions_only: ::core::option::Option<bool>,
8727}
8728#[derive(Clone, PartialEq, ::prost::Message)]
8729pub struct QueryServiceStateResponse {
8730    /// In order to avoid hitting IPC message size limitations, the service will
8731    /// return >1 replies for each query, chunking the TracingServiceState. The
8732    /// receiver is expected to merge replies together and parse that when the
8733    /// last reply is received (i.e. when IPC's |has_more| == false).
8734    #[prost(message, optional, tag="1")]
8735    pub service_state: ::core::option::Option<TracingServiceState>,
8736}
8737/// Arguments for rpc QueryCapabilities.
8738#[derive(Clone, PartialEq, ::prost::Message)]
8739pub struct QueryCapabilitiesRequest {
8740}
8741#[derive(Clone, PartialEq, ::prost::Message)]
8742pub struct QueryCapabilitiesResponse {
8743    #[prost(message, optional, tag="1")]
8744    pub capabilities: ::core::option::Option<TracingServiceCapabilities>,
8745}
8746/// Arguments for rpc SaveTraceForBugreport.
8747#[derive(Clone, PartialEq, ::prost::Message)]
8748pub struct SaveTraceForBugreportRequest {
8749}
8750/// This response is sent only after the trace was saved into file (if succeeded)
8751/// or something failed.
8752#[derive(Clone, PartialEq, ::prost::Message)]
8753pub struct SaveTraceForBugreportResponse {
8754    /// If true, an eligible the trace was saved into a known location (on Android
8755    /// /data/misc/perfetto-traces, see GetBugreportTracePath()).
8756    /// If false no trace with bugreport_score > 0 was found or an error occurred.
8757    /// see |msg| in that case for details about the failure.
8758    #[prost(bool, optional, tag="1")]
8759    pub success: ::core::option::Option<bool>,
8760    #[prost(string, optional, tag="2")]
8761    pub msg: ::core::option::Option<::prost::alloc::string::String>,
8762}
8763/// Arguments for rpc CloneSession.
8764#[derive(Clone, PartialEq, ::prost::Message)]
8765pub struct CloneSessionRequest {
8766    /// If set, the trace filter will not have effect on the cloned session.
8767    /// Used for bugreports.
8768    #[prost(bool, optional, tag="2")]
8769    pub skip_trace_filter: ::core::option::Option<bool>,
8770    /// If set, affects the generation of the FlushFlags::CloneTarget to be set
8771    /// to kBugreport when requesting the flush to the producers.
8772    #[prost(bool, optional, tag="3")]
8773    pub for_bugreport: ::core::option::Option<bool>,
8774    /// If set, this is stored in the trace as name of the trigger that caused the
8775    /// clone.
8776    #[prost(string, optional, tag="5")]
8777    pub clone_trigger_name: ::core::option::Option<::prost::alloc::string::String>,
8778    /// If set, this is stored in the trace as name of the producer that triggered
8779    /// the clone.
8780    #[prost(string, optional, tag="6")]
8781    pub clone_trigger_producer_name: ::core::option::Option<::prost::alloc::string::String>,
8782    /// If set, this is stored in the trace as uid of the producer that triggered
8783    /// the clone.
8784    #[prost(int32, optional, tag="7")]
8785    pub clone_trigger_trusted_producer_uid: ::core::option::Option<i32>,
8786    /// If set, this is stored in the trace as timestamp of the trigger that caused
8787    /// the clone.
8788    #[prost(uint64, optional, tag="8")]
8789    pub clone_trigger_boot_time_ns: ::core::option::Option<u64>,
8790    /// If set, this is stored in the trace as the configured delay of the trigger
8791    /// that caused the clone.
8792    ///
8793    /// Consumer may also send a file descriptor with this rpc message. If the
8794    /// descriptor is valid, and the session that should be cloned is
8795    /// 'write_into_file' session, traced writes the cloned session content to that
8796    /// file descriptor, instead of writing it in the cloned session buffers.
8797    #[prost(uint64, optional, tag="9")]
8798    pub clone_trigger_delay_ms: ::core::option::Option<u64>,
8799    #[prost(oneof="clone_session_request::Selector", tags="1, 4")]
8800    pub selector: ::core::option::Option<clone_session_request::Selector>,
8801}
8802/// Nested message and enum types in `CloneSessionRequest`.
8803pub mod clone_session_request {
8804    #[derive(Clone, PartialEq, ::prost::Oneof)]
8805    pub enum Selector {
8806        /// The session ID to clone. If session_id == kBugreportSessionId (0xff...ff)
8807        /// the session with the highest bugreport score is cloned (if any exists).
8808        #[prost(uint64, tag="1")]
8809        SessionId(u64),
8810        /// The unique_session_name of the tracing session to clone. Tracing sessions
8811        /// that are clones of other tracing sessions are ignored.
8812        #[prost(string, tag="4")]
8813        UniqueSessionName(::prost::alloc::string::String),
8814    }
8815}
8816#[derive(Clone, PartialEq, ::prost::Message)]
8817pub struct CloneSessionResponse {
8818    /// If true, the clone was successful. If false it failed and |error| contains
8819    /// the details about the failure.
8820    #[prost(bool, optional, tag="1")]
8821    pub success: ::core::option::Option<bool>,
8822    #[prost(string, optional, tag="2")]
8823    pub error: ::core::option::Option<::prost::alloc::string::String>,
8824    /// The UUID of the cloned session.
8825    #[prost(int64, optional, tag="3")]
8826    pub uuid_msb: ::core::option::Option<i64>,
8827    #[prost(int64, optional, tag="4")]
8828    pub uuid_lsb: ::core::option::Option<i64>,
8829    /// TracingService sets this when the cloned session was write_into_file=true.
8830    /// The consumer cannot know upfront if a session is WIF or not.
8831    /// Introduced in v53.
8832    #[prost(bool, optional, tag="5")]
8833    pub was_write_into_file: ::core::option::Option<bool>,
8834}
8835#[derive(Clone, PartialEq, ::prost::Message)]
8836pub struct CommitDataRequest {
8837    #[prost(message, repeated, tag="1")]
8838    pub chunks_to_move: ::prost::alloc::vec::Vec<commit_data_request::ChunksToMove>,
8839    #[prost(message, repeated, tag="2")]
8840    pub chunks_to_patch: ::prost::alloc::vec::Vec<commit_data_request::ChunkToPatch>,
8841    /// Optional. If this commit is made in response to a Flush(id) request coming
8842    /// from the service, copy back the id of the request so the service can tell
8843    /// when the flush happened.
8844    #[prost(uint64, optional, tag="3")]
8845    pub flush_request_id: ::core::option::Option<u64>,
8846}
8847/// Nested message and enum types in `CommitDataRequest`.
8848pub mod commit_data_request {
8849    /// When |chunks_to_move| is present, the producer is requesting the service to
8850    /// move the given chunks form the share memory buffer into the central
8851    /// trace buffer(s).
8852    #[derive(Clone, PartialEq, ::prost::Message)]
8853    pub struct ChunksToMove {
8854        /// The 0-based index of the page in the Shared Memory Buffer.
8855        #[prost(uint32, optional, tag="1")]
8856        pub page: ::core::option::Option<u32>,
8857        /// The 0-based chunk index \[0..13\] within the page.
8858        #[prost(uint32, optional, tag="2")]
8859        pub chunk: ::core::option::Option<u32>,
8860        /// The target buffer it should be moved onto. The service will check that
8861        /// the producer is allowed to write into that buffer before the move.
8862        #[prost(uint32, optional, tag="3")]
8863        pub target_buffer: ::core::option::Option<u32>,
8864        /// Sending the chunk data over the wire. Used for transports that don't
8865        /// support shared memory (e.g. vsock or TCP sockets). In the default case
8866        /// (tracing protocol over a Unix socket), this field is not used and tracing
8867        /// data is stored in the shmem buffer and referenced by the fields above.
8868        /// See |use_shemem_emulation| in the codebase for reference.
8869        #[prost(bytes="vec", optional, tag="4")]
8870        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8871        /// Set to true when scraping data in shmem emulation (aka commits-over-ipc)
8872        /// AND the chunk was still in kChunkBeingWritten. This is necessary because
8873        /// in emulation mode, the service cannot tell whether this is a complete
8874        /// chunk coming from a regular TraceWriter commit, or a scraped one.
8875        /// This field is only set when `data` is present. It is never set (and is
8876        /// ignored by the service) for the regular case of doing commits over
8877        /// shmem. Introduced in Perfetto v54.
8878        /// See /rfcs/0010-smb-scraping-remote-producers.md .
8879        #[prost(bool, optional, tag="5")]
8880        pub chunk_incomplete: ::core::option::Option<bool>,
8881    }
8882    /// Used to patch chunks that have already been sent to the service. The chunk
8883    /// might not be in the shared memory buffer anymore as it could have been
8884    /// moved by the service in response to a prior CommitDataRequest.
8885    /// It is perfectly valid to patch a chunk that is being notified in the same
8886    /// message (a chunk can show up both in the |changed_pages| and |patches|
8887    /// field within the same CommitDataRequest message).
8888    /// In other words, |chunks_to_patch| is always processed after
8889    /// |chunks_to_move|.
8890    #[derive(Clone, PartialEq, ::prost::Message)]
8891    pub struct ChunkToPatch {
8892        #[prost(uint32, optional, tag="1")]
8893        pub target_buffer: ::core::option::Option<u32>,
8894        /// {WriterID, ChunkID} uniquely identify a chunk for the current producer.
8895        #[prost(uint32, optional, tag="2")]
8896        pub writer_id: ::core::option::Option<u32>,
8897        #[prost(uint32, optional, tag="3")]
8898        pub chunk_id: ::core::option::Option<u32>,
8899        /// List of patches to apply to the given chunk.
8900        #[prost(message, repeated, tag="4")]
8901        pub patches: ::prost::alloc::vec::Vec<chunk_to_patch::Patch>,
8902        /// When true more patches will follow in future requests and the chunk
8903        /// should be still considered as patch-pending. When false the chunk becomes
8904        /// eligible for reading.
8905        #[prost(bool, optional, tag="5")]
8906        pub has_more_patches: ::core::option::Option<bool>,
8907    }
8908    /// Nested message and enum types in `ChunkToPatch`.
8909    pub mod chunk_to_patch {
8910        #[derive(Clone, PartialEq, ::prost::Message)]
8911        pub struct Patch {
8912            /// Offset in bytes from the start of the chunk payload. e.g., offset == 0
8913            /// corresponds to the first byte of the first packet (or fragment) in the
8914            /// chunk.
8915            #[prost(uint32, optional, tag="1")]
8916            pub offset: ::core::option::Option<u32>,
8917            /// Bytes to patch at the given offset.
8918            #[prost(bytes="vec", optional, tag="2")]
8919            pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8920        }
8921    }
8922}
8923/// Arguments for rpc InitializeConnection().
8924#[derive(Clone, PartialEq, ::prost::Message)]
8925pub struct InitializeConnectionRequest {
8926    /// Optional. Provides a hint to the tracing service about the suggested size
8927    /// of the shared memory buffer pages. The service is not required to respect
8928    /// this if it has already another value in the configuration or if the hint
8929    /// is unreasonably large. Must be an integer multiple of 4096. See tradeoff
8930    /// considerations in shared_memory_abi.h.
8931    #[prost(uint32, optional, tag="1")]
8932    pub shared_memory_page_size_hint_bytes: ::core::option::Option<u32>,
8933    /// Optional. Provides a hint to the tracing service about the suggested size
8934    /// of the shared memory buffer. The service is not required to respect this
8935    /// and might return a smaller buffer.
8936    #[prost(uint32, optional, tag="2")]
8937    pub shared_memory_size_hint_bytes: ::core::option::Option<u32>,
8938    /// Required to match the producer config set by the service to the correct
8939    /// producer.
8940    #[prost(string, optional, tag="3")]
8941    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
8942    /// If provided, overrides the service's SMB scraping setting for the producer.
8943    #[prost(enumeration="initialize_connection_request::ProducerSmbScrapingMode", optional, tag="4")]
8944    pub smb_scraping_mode: ::core::option::Option<i32>,
8945    // ---------------------------------------------------
8946    // All fields below have been introduced in Android R.
8947    // ---------------------------------------------------
8948
8949    /// Since Android R, this request can also transport an FD for the producer's
8950    /// shared memory buffer, if allocated by the producer (e.g. for startup
8951    /// tracing). In this case, |shared_memory_page_size_hint_bytes| is a required
8952    /// field, and describes the SMB's page size. Note that the service may not
8953    /// accept this SMB (e.g. because it is too old or its size / page size are
8954    /// invalid) and instead allocate a new SMB which is provided in the
8955    /// SetupTracing response. See TracingService::ConnectProducer() and
8956    /// |using_shmem_provided_by_producer| in InitializeConnectionResponse.
8957    #[prost(bool, optional, tag="6")]
8958    pub producer_provided_shmem: ::core::option::Option<bool>,
8959    // ---------------------------------------------------
8960    // All fields below have been introduced in Android S.
8961    // ---------------------------------------------------
8962
8963    /// The version of the client library used by the producer.
8964    /// This is a human readable string with and its format varies depending on
8965    /// the build system that is used to build the code and the repo (standalone
8966    /// vs AOSP). This is intended for human debugging only.
8967    #[prost(string, optional, tag="8")]
8968    pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
8969    /// On Windows, when producer_provided_shmem = true, the client creates a named
8970    /// SHM region and passes the name (an unguessable token) back to the service.
8971    /// Introduced in v13.
8972    #[prost(string, optional, tag="7")]
8973    pub shm_key_windows: ::core::option::Option<::prost::alloc::string::String>,
8974}
8975/// Nested message and enum types in `InitializeConnectionRequest`.
8976pub mod initialize_connection_request {
8977    #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8978    #[repr(i32)]
8979    pub enum ProducerSmbScrapingMode {
8980        /// Use the service's default setting for SMB scraping.
8981        SmbScrapingUnspecified = 0,
8982        /// Enable scraping of uncommitted chunks from the producer's shared memory
8983        /// buffer.
8984        SmbScrapingEnabled = 1,
8985        /// Disable scraping of uncommitted chunks from the producer's shared memory
8986        /// buffer.
8987        SmbScrapingDisabled = 2,
8988    }
8989    impl ProducerSmbScrapingMode {
8990        /// String value of the enum field names used in the ProtoBuf definition.
8991        ///
8992        /// The values are not transformed in any way and thus are considered stable
8993        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8994        pub fn as_str_name(&self) -> &'static str {
8995            match self {
8996                ProducerSmbScrapingMode::SmbScrapingUnspecified => "SMB_SCRAPING_UNSPECIFIED",
8997                ProducerSmbScrapingMode::SmbScrapingEnabled => "SMB_SCRAPING_ENABLED",
8998                ProducerSmbScrapingMode::SmbScrapingDisabled => "SMB_SCRAPING_DISABLED",
8999            }
9000        }
9001    }
9002}
9003#[derive(Clone, PartialEq, ::prost::Message)]
9004pub struct InitializeConnectionResponse {
9005    /// Indicates whether the service accepted the SMB provided by the producer in
9006    /// InitializeConnectionRequest (if any). If false, the shared memory buffer FD
9007    /// will provided by the service via the SetupTracing async command.
9008    #[prost(bool, optional, tag="1")]
9009    pub using_shmem_provided_by_producer: ::core::option::Option<bool>,
9010    /// Indicates to the producer that the service allows direct SMB patching of
9011    /// chunks that have not yet been committed to it.
9012    /// This field has been introduced in Android S.
9013    #[prost(bool, optional, tag="2")]
9014    pub direct_smb_patching_supported: ::core::option::Option<bool>,
9015    /// Indicates whether the service would like to use SMB emulation for the
9016    /// connection, and request the client to send chunk data over the socket e.g.
9017    /// for remote connection from a VM guest.
9018    #[prost(bool, optional, tag="3")]
9019    pub use_shmem_emulation: ::core::option::Option<bool>,
9020}
9021// Arguments for rpc RegisterDataSource().
9022
9023#[derive(Clone, PartialEq, ::prost::Message)]
9024pub struct RegisterDataSourceRequest {
9025    #[prost(message, optional, tag="1")]
9026    pub data_source_descriptor: ::core::option::Option<DataSourceDescriptor>,
9027}
9028#[derive(Clone, PartialEq, ::prost::Message)]
9029pub struct RegisterDataSourceResponse {
9030    /// Only set in case of errors, when |data_source_id| == 0.
9031    #[prost(string, optional, tag="1")]
9032    pub error: ::core::option::Option<::prost::alloc::string::String>,
9033}
9034// Arguments for rpc UpdateDataSource().
9035
9036#[derive(Clone, PartialEq, ::prost::Message)]
9037pub struct UpdateDataSourceRequest {
9038    /// The new data_source_descriptor.{id, name} must match {id, name} of a
9039    /// data source previously registered via RegisterDataSource().
9040    #[prost(message, optional, tag="1")]
9041    pub data_source_descriptor: ::core::option::Option<DataSourceDescriptor>,
9042}
9043#[derive(Clone, PartialEq, ::prost::Message)]
9044pub struct UpdateDataSourceResponse {
9045}
9046// Arguments for rpc UnregisterDataSource().
9047
9048#[derive(Clone, PartialEq, ::prost::Message)]
9049pub struct UnregisterDataSourceRequest {
9050    /// The name of the data source to unregister, as previously passed in
9051    /// |RegisterDataSourceRequest.name|.
9052    #[prost(string, optional, tag="1")]
9053    pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
9054}
9055#[derive(Clone, PartialEq, ::prost::Message)]
9056pub struct UnregisterDataSourceResponse {
9057}
9058// Arguments for rpc RegisterTraceWriter().
9059
9060#[derive(Clone, PartialEq, ::prost::Message)]
9061pub struct RegisterTraceWriterRequest {
9062    /// The ID of a producer's trace writer.
9063    #[prost(uint32, optional, tag="1")]
9064    pub trace_writer_id: ::core::option::Option<u32>,
9065    /// The ID of the target buffer that the trace writer commits its chunks to.
9066    #[prost(uint32, optional, tag="2")]
9067    pub target_buffer: ::core::option::Option<u32>,
9068}
9069#[derive(Clone, PartialEq, ::prost::Message)]
9070pub struct RegisterTraceWriterResponse {
9071}
9072// Arguments for rpc UnregisterTraceWriter().
9073
9074#[derive(Clone, PartialEq, ::prost::Message)]
9075pub struct UnregisterTraceWriterRequest {
9076    /// The ID of a producer's trace writer.
9077    #[prost(uint32, optional, tag="1")]
9078    pub trace_writer_id: ::core::option::Option<u32>,
9079}
9080#[derive(Clone, PartialEq, ::prost::Message)]
9081pub struct UnregisterTraceWriterResponse {
9082}
9083// Arguments for rpc CommitData().
9084// See commit_data_request.proto for CommitDataRequest. That has its own file
9085// because it is used also as input to generate C++ classes (xxx.gen.h).
9086
9087#[derive(Clone, PartialEq, ::prost::Message)]
9088pub struct CommitDataResponse {
9089}
9090// Arguments for rpc NotifyDataSourceStarted().
9091
9092#[derive(Clone, PartialEq, ::prost::Message)]
9093pub struct NotifyDataSourceStartedRequest {
9094    /// ID of the data source that has successfully started.
9095    #[prost(uint64, optional, tag="1")]
9096    pub data_source_id: ::core::option::Option<u64>,
9097}
9098#[derive(Clone, PartialEq, ::prost::Message)]
9099pub struct NotifyDataSourceStartedResponse {
9100}
9101// Arguments for rpc NotifyDataSourceStopped().
9102
9103#[derive(Clone, PartialEq, ::prost::Message)]
9104pub struct NotifyDataSourceStoppedRequest {
9105    /// ID of the data source that has successfully stopped.
9106    #[prost(uint64, optional, tag="1")]
9107    pub data_source_id: ::core::option::Option<u64>,
9108}
9109#[derive(Clone, PartialEq, ::prost::Message)]
9110pub struct NotifyDataSourceStoppedResponse {
9111}
9112// Arguments for rpc ActivateTriggersRequest().
9113
9114#[derive(Clone, PartialEq, ::prost::Message)]
9115pub struct ActivateTriggersRequest {
9116    #[prost(string, repeated, tag="1")]
9117    pub trigger_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9118}
9119#[derive(Clone, PartialEq, ::prost::Message)]
9120pub struct ActivateTriggersResponse {
9121}
9122// Arguments for rpc GetAsyncCommand().
9123
9124#[derive(Clone, PartialEq, ::prost::Message)]
9125pub struct GetAsyncCommandRequest {
9126}
9127#[derive(Clone, PartialEq, ::prost::Message)]
9128pub struct GetAsyncCommandResponse {
9129    /// Next id: 8.
9130    #[prost(oneof="get_async_command_response::Cmd", tags="3, 6, 1, 2, 5, 7")]
9131    pub cmd: ::core::option::Option<get_async_command_response::Cmd>,
9132}
9133/// Nested message and enum types in `GetAsyncCommandResponse`.
9134pub mod get_async_command_response {
9135    /// Called after SetupTracing and before StartDataSource.
9136    /// This message was introduced in Android Q.
9137    #[derive(Clone, PartialEq, ::prost::Message)]
9138    pub struct SetupDataSource {
9139        #[prost(uint64, optional, tag="1")]
9140        pub new_instance_id: ::core::option::Option<u64>,
9141        #[prost(message, optional, tag="2")]
9142        pub config: ::core::option::Option<super::DataSourceConfig>,
9143    }
9144    #[derive(Clone, PartialEq, ::prost::Message)]
9145    pub struct StartDataSource {
9146        #[prost(uint64, optional, tag="1")]
9147        pub new_instance_id: ::core::option::Option<u64>,
9148        /// For backwards compat reasons (with Android P), the config passed here
9149        /// is identical to the one passed to SetupDataSource.config.
9150        #[prost(message, optional, tag="2")]
9151        pub config: ::core::option::Option<super::DataSourceConfig>,
9152    }
9153    #[derive(Clone, PartialEq, ::prost::Message)]
9154    pub struct StopDataSource {
9155        #[prost(uint64, optional, tag="1")]
9156        pub instance_id: ::core::option::Option<u64>,
9157    }
9158    /// On Android/Linux/Mac this message also transports the file descriptor for
9159    /// the shared memory buffer (not a proto field).
9160    #[derive(Clone, PartialEq, ::prost::Message)]
9161    pub struct SetupTracing {
9162        #[prost(uint32, optional, tag="1")]
9163        pub shared_buffer_page_size_kb: ::core::option::Option<u32>,
9164        /// On Windows, instead, we pass the name (an unguessable token) of a shared
9165        /// memory region that can be attached by the other process by name.
9166        /// Introduced in v13.
9167        #[prost(string, optional, tag="2")]
9168        pub shm_key_windows: ::core::option::Option<::prost::alloc::string::String>,
9169    }
9170    #[derive(Clone, PartialEq, ::prost::Message)]
9171    pub struct Flush {
9172        /// The instance id (i.e. StartDataSource.new_instance_id) of the data
9173        /// sources to flush.
9174        #[prost(uint64, repeated, packed="false", tag="1")]
9175        pub data_source_ids: ::prost::alloc::vec::Vec<u64>,
9176        /// A monotonic counter generated by the service. The producer is simply
9177        /// expected to copy this value back into the CommitDataRequest, so the
9178        /// service can tell when the data for this flush has been committed.
9179        #[prost(uint64, optional, tag="2")]
9180        pub request_id: ::core::option::Option<u64>,
9181        /// More details such as flush reason and originator. Introduced in v38 / V.
9182        /// See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
9183        #[prost(uint64, optional, tag="3")]
9184        pub flags: ::core::option::Option<u64>,
9185    }
9186    /// Instructs the given data sources to stop referring to any trace contents
9187    /// emitted so far. Sent only to active data sources that set
9188    /// |handles_incremental_state_clear| in their DataSourceDescriptor.
9189    ///
9190    /// Added to perfetto tree in May 2019.
9191    #[derive(Clone, PartialEq, ::prost::Message)]
9192    pub struct ClearIncrementalState {
9193        /// The instance id (i.e. StartDataSource.new_instance_id) of the data
9194        /// sources that should clear their incremental state.
9195        #[prost(uint64, repeated, packed="false", tag="1")]
9196        pub data_source_ids: ::prost::alloc::vec::Vec<u64>,
9197    }
9198    /// Next id: 8.
9199    #[derive(Clone, PartialEq, ::prost::Oneof)]
9200    pub enum Cmd {
9201        #[prost(message, tag="3")]
9202        SetupTracing(SetupTracing),
9203        #[prost(message, tag="6")]
9204        SetupDataSource(SetupDataSource),
9205        #[prost(message, tag="1")]
9206        StartDataSource(StartDataSource),
9207        #[prost(message, tag="2")]
9208        StopDataSource(StopDataSource),
9209        /// id == 4 was teardown_tracing, never implemented.
9210        #[prost(message, tag="5")]
9211        Flush(Flush),
9212        #[prost(message, tag="7")]
9213        ClearIncrementalState(ClearIncrementalState),
9214    }
9215}
9216/// Arguments for rpc Sync().
9217#[derive(Clone, PartialEq, ::prost::Message)]
9218pub struct SyncRequest {
9219}
9220#[derive(Clone, PartialEq, ::prost::Message)]
9221pub struct SyncResponse {
9222}
9223#[derive(Clone, PartialEq, ::prost::Message)]
9224pub struct IpcFrame {
9225    /// The client is expected to send requests with monotonically increasing
9226    /// request_id. The host will match the request_id sent from the client.
9227    /// In the case of a Streaming response (has_more = true) the host will send
9228    /// several InvokeMethodReply with the same request_id.
9229    #[prost(uint64, optional, tag="2")]
9230    pub request_id: ::core::option::Option<u64>,
9231    /// Used only in unittests to generate a parsable message of arbitrary size.
9232    #[prost(bytes="vec", repeated, tag="1")]
9233    pub data_for_testing: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
9234    #[prost(oneof="ipc_frame::Msg", tags="3, 4, 5, 6, 7, 8")]
9235    pub msg: ::core::option::Option<ipc_frame::Msg>,
9236}
9237/// Nested message and enum types in `IPCFrame`.
9238pub mod ipc_frame {
9239    /// Client -> Host.
9240    #[derive(Clone, PartialEq, ::prost::Message)]
9241    pub struct BindService {
9242        #[prost(string, optional, tag="1")]
9243        pub service_name: ::core::option::Option<::prost::alloc::string::String>,
9244    }
9245    /// Host -> Client.
9246    #[derive(Clone, PartialEq, ::prost::Message)]
9247    pub struct BindServiceReply {
9248        #[prost(bool, optional, tag="1")]
9249        pub success: ::core::option::Option<bool>,
9250        #[prost(uint32, optional, tag="2")]
9251        pub service_id: ::core::option::Option<u32>,
9252        #[prost(message, repeated, tag="3")]
9253        pub methods: ::prost::alloc::vec::Vec<bind_service_reply::MethodInfo>,
9254    }
9255    /// Nested message and enum types in `BindServiceReply`.
9256    pub mod bind_service_reply {
9257        #[derive(Clone, PartialEq, ::prost::Message)]
9258        pub struct MethodInfo {
9259            #[prost(uint32, optional, tag="1")]
9260            pub id: ::core::option::Option<u32>,
9261            #[prost(string, optional, tag="2")]
9262            pub name: ::core::option::Option<::prost::alloc::string::String>,
9263        }
9264    }
9265    /// Client -> Host.
9266    #[derive(Clone, PartialEq, ::prost::Message)]
9267    pub struct InvokeMethod {
9268        /// BindServiceReply.id.
9269        #[prost(uint32, optional, tag="1")]
9270        pub service_id: ::core::option::Option<u32>,
9271        /// BindServiceReply.method.id.
9272        #[prost(uint32, optional, tag="2")]
9273        pub method_id: ::core::option::Option<u32>,
9274        /// Proto-encoded request argument.
9275        #[prost(bytes="vec", optional, tag="3")]
9276        pub args_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9277        /// When true the client specifies that a reply is not needed. The use case
9278        /// is a method with an empty, where the client doesn't care about the
9279        /// success/failure of the method invocation and rather prefers avoiding the
9280        /// IPC roundtrip + context switch associated with the reply.
9281        #[prost(bool, optional, tag="4")]
9282        pub drop_reply: ::core::option::Option<bool>,
9283    }
9284    /// Host -> Client.
9285    #[derive(Clone, PartialEq, ::prost::Message)]
9286    pub struct InvokeMethodReply {
9287        #[prost(bool, optional, tag="1")]
9288        pub success: ::core::option::Option<bool>,
9289        /// only for streaming RPCs.
9290        #[prost(bool, optional, tag="2")]
9291        pub has_more: ::core::option::Option<bool>,
9292        /// proto-encoded response value.
9293        #[prost(bytes="vec", optional, tag="3")]
9294        pub reply_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9295    }
9296    /// Host -> Client.
9297    #[derive(Clone, PartialEq, ::prost::Message)]
9298    pub struct RequestError {
9299        #[prost(string, optional, tag="1")]
9300        pub error: ::core::option::Option<::prost::alloc::string::String>,
9301    }
9302    /// Client (relay service) -> Host. This is generated by the relay service to
9303    /// fill the producer identity in the guest. This message is sent to the host
9304    /// service *before* any IPCFrame is from a local producer is relayed. This is
9305    /// accepted only on AF_VSOCK and AF_INET sockets, where we cannot validate the
9306    /// endpoont of the connection. for AF_UNIX sockets, this is ignored and traced
9307    /// uses instead the SO_PEERCRED.
9308    #[derive(Clone, PartialEq, ::prost::Message)]
9309    pub struct SetPeerIdentity {
9310        /// The UID and PID of the producer process.
9311        #[prost(int32, optional, tag="1")]
9312        pub pid: ::core::option::Option<i32>,
9313        #[prost(int32, optional, tag="2")]
9314        pub uid: ::core::option::Option<i32>,
9315        /// The hint for the tracing service to infer the machine ID. This field
9316        /// should satisfy the requriement that different machines should have
9317        /// different values. In practice, this filed contains the Linux kernel
9318        /// boot_id, or a hash of kernel bootup timestamp and uname(2) if boot_id
9319        /// isn't available.
9320        #[prost(string, optional, tag="3")]
9321        pub machine_id_hint: ::core::option::Option<::prost::alloc::string::String>,
9322        /// Human-readable name associated to the producer's machine. Provides the
9323        /// tracing service a new dimension to filter data sources on. Given the
9324        /// perfetto machine name is provided by users, there is no expectation of
9325        /// uniqueness across machines in a tracing session.
9326        #[prost(string, optional, tag="4")]
9327        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
9328    }
9329    #[derive(Clone, PartialEq, ::prost::Oneof)]
9330    pub enum Msg {
9331        #[prost(message, tag="3")]
9332        MsgBindService(BindService),
9333        #[prost(message, tag="4")]
9334        MsgBindServiceReply(BindServiceReply),
9335        #[prost(message, tag="5")]
9336        MsgInvokeMethod(InvokeMethod),
9337        #[prost(message, tag="6")]
9338        MsgInvokeMethodReply(InvokeMethodReply),
9339        #[prost(message, tag="7")]
9340        MsgRequestError(RequestError),
9341        #[prost(message, tag="8")]
9342        SetPeerIdentity(SetPeerIdentity),
9343    }
9344}