// This file is @generated by prost-build.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FtraceDescriptor {
/// Report the available atrace categories.
///
/// Used by Traceur via `perfetto --query`.
#[prost(message, repeated, tag = "1")]
pub atrace_categories: ::prost::alloc::vec::Vec<ftrace_descriptor::AtraceCategory>,
}
/// Nested message and enum types in `FtraceDescriptor`.
pub mod ftrace_descriptor {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AtraceCategory {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub description: ::core::option::Option<::prost::alloc::string::String>,
}
}
/// Description of GPU counters.
/// This message is sent by a GPU counter producer to specify the counters
/// available in the hardware.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GpuCounterDescriptor {
#[prost(message, repeated, tag = "1")]
pub specs: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterSpec>,
#[prost(message, repeated, tag = "2")]
pub blocks: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterBlock>,
/// optional. Minimum sampling period supported by the producer in
/// nanoseconds.
#[prost(uint64, optional, tag = "3")]
pub min_sampling_period_ns: ::core::option::Option<u64>,
/// optional. Maximum sampling period supported by the producer in
/// nanoseconds.
#[prost(uint64, optional, tag = "4")]
pub max_sampling_period_ns: ::core::option::Option<u64>,
/// optional. The producer supports counter sampling by instrumenting the
/// command buffer.
#[prost(bool, optional, tag = "5")]
pub supports_instrumented_sampling: ::core::option::Option<bool>,
}
/// Nested message and enum types in `GpuCounterDescriptor`.
pub mod gpu_counter_descriptor {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GpuCounterSpec {
#[prost(uint32, optional, tag = "1")]
pub counter_id: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub description: ::core::option::Option<::prost::alloc::string::String>,
#[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "7")]
pub numerator_units: ::prost::alloc::vec::Vec<i32>,
#[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "8")]
pub denominator_units: ::prost::alloc::vec::Vec<i32>,
#[prost(bool, optional, tag = "9")]
pub select_by_default: ::core::option::Option<bool>,
#[prost(enumeration = "GpuCounterGroup", repeated, packed = "false", tag = "10")]
pub groups: ::prost::alloc::vec::Vec<i32>,
#[prost(oneof = "gpu_counter_spec::PeakValue", tags = "5, 6")]
pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
}
/// Nested message and enum types in `GpuCounterSpec`.
pub mod gpu_counter_spec {
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum PeakValue {
#[prost(int64, tag = "5")]
IntPeakValue(i64),
#[prost(double, tag = "6")]
DoublePeakValue(f64),
}
}
/// Allow producer to group counters into block to represent counter islands.
/// A capacity may be specified to indicate the number of counters that can be
/// enable simultaneously in that block.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GpuCounterBlock {
/// required. Unique ID for the counter group.
#[prost(uint32, optional, tag = "1")]
pub block_id: ::core::option::Option<u32>,
/// optional. Number of counters supported by the block. No limit if unset.
#[prost(uint32, optional, tag = "2")]
pub block_capacity: ::core::option::Option<u32>,
/// optional. Name of block.
#[prost(string, optional, tag = "3")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
/// optional. Description for the block.
#[prost(string, optional, tag = "4")]
pub description: ::core::option::Option<::prost::alloc::string::String>,
/// list of counters that are part of the block.
#[prost(uint32, repeated, packed = "false", tag = "5")]
pub counter_ids: ::prost::alloc::vec::Vec<u32>,
}
/// Logical groups for a counter. This is used in the UI to present the
/// related counters together.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum GpuCounterGroup {
Unclassified = 0,
System = 1,
Vertices = 2,
Fragments = 3,
Primitives = 4,
/// Includes counters relating to caching and bandwidth.
Memory = 5,
Compute = 6,
}
impl GpuCounterGroup {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unclassified => "UNCLASSIFIED",
Self::System => "SYSTEM",
Self::Vertices => "VERTICES",
Self::Fragments => "FRAGMENTS",
Self::Primitives => "PRIMITIVES",
Self::Memory => "MEMORY",
Self::Compute => "COMPUTE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNCLASSIFIED" => Some(Self::Unclassified),
"SYSTEM" => Some(Self::System),
"VERTICES" => Some(Self::Vertices),
"FRAGMENTS" => Some(Self::Fragments),
"PRIMITIVES" => Some(Self::Primitives),
"MEMORY" => Some(Self::Memory),
"COMPUTE" => Some(Self::Compute),
_ => None,
}
}
}
/// next id: 41
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum MeasureUnit {
None = 0,
Bit = 1,
Kilobit = 2,
Megabit = 3,
Gigabit = 4,
Terabit = 5,
Petabit = 6,
Byte = 7,
Kilobyte = 8,
Megabyte = 9,
Gigabyte = 10,
Terabyte = 11,
Petabyte = 12,
Hertz = 13,
Kilohertz = 14,
Megahertz = 15,
Gigahertz = 16,
Terahertz = 17,
Petahertz = 18,
Nanosecond = 19,
Microsecond = 20,
Millisecond = 21,
Second = 22,
Minute = 23,
Hour = 24,
Vertex = 25,
Pixel = 26,
Triangle = 27,
Primitive = 38,
Fragment = 39,
Milliwatt = 28,
Watt = 29,
Kilowatt = 30,
Joule = 31,
Volt = 32,
Ampere = 33,
Celsius = 34,
Fahrenheit = 35,
Kelvin = 36,
/// Values should be out of 100.
Percent = 37,
Instruction = 40,
}
impl MeasureUnit {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::None => "NONE",
Self::Bit => "BIT",
Self::Kilobit => "KILOBIT",
Self::Megabit => "MEGABIT",
Self::Gigabit => "GIGABIT",
Self::Terabit => "TERABIT",
Self::Petabit => "PETABIT",
Self::Byte => "BYTE",
Self::Kilobyte => "KILOBYTE",
Self::Megabyte => "MEGABYTE",
Self::Gigabyte => "GIGABYTE",
Self::Terabyte => "TERABYTE",
Self::Petabyte => "PETABYTE",
Self::Hertz => "HERTZ",
Self::Kilohertz => "KILOHERTZ",
Self::Megahertz => "MEGAHERTZ",
Self::Gigahertz => "GIGAHERTZ",
Self::Terahertz => "TERAHERTZ",
Self::Petahertz => "PETAHERTZ",
Self::Nanosecond => "NANOSECOND",
Self::Microsecond => "MICROSECOND",
Self::Millisecond => "MILLISECOND",
Self::Second => "SECOND",
Self::Minute => "MINUTE",
Self::Hour => "HOUR",
Self::Vertex => "VERTEX",
Self::Pixel => "PIXEL",
Self::Triangle => "TRIANGLE",
Self::Primitive => "PRIMITIVE",
Self::Fragment => "FRAGMENT",
Self::Milliwatt => "MILLIWATT",
Self::Watt => "WATT",
Self::Kilowatt => "KILOWATT",
Self::Joule => "JOULE",
Self::Volt => "VOLT",
Self::Ampere => "AMPERE",
Self::Celsius => "CELSIUS",
Self::Fahrenheit => "FAHRENHEIT",
Self::Kelvin => "KELVIN",
Self::Percent => "PERCENT",
Self::Instruction => "INSTRUCTION",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"NONE" => Some(Self::None),
"BIT" => Some(Self::Bit),
"KILOBIT" => Some(Self::Kilobit),
"MEGABIT" => Some(Self::Megabit),
"GIGABIT" => Some(Self::Gigabit),
"TERABIT" => Some(Self::Terabit),
"PETABIT" => Some(Self::Petabit),
"BYTE" => Some(Self::Byte),
"KILOBYTE" => Some(Self::Kilobyte),
"MEGABYTE" => Some(Self::Megabyte),
"GIGABYTE" => Some(Self::Gigabyte),
"TERABYTE" => Some(Self::Terabyte),
"PETABYTE" => Some(Self::Petabyte),
"HERTZ" => Some(Self::Hertz),
"KILOHERTZ" => Some(Self::Kilohertz),
"MEGAHERTZ" => Some(Self::Megahertz),
"GIGAHERTZ" => Some(Self::Gigahertz),
"TERAHERTZ" => Some(Self::Terahertz),
"PETAHERTZ" => Some(Self::Petahertz),
"NANOSECOND" => Some(Self::Nanosecond),
"MICROSECOND" => Some(Self::Microsecond),
"MILLISECOND" => Some(Self::Millisecond),
"SECOND" => Some(Self::Second),
"MINUTE" => Some(Self::Minute),
"HOUR" => Some(Self::Hour),
"VERTEX" => Some(Self::Vertex),
"PIXEL" => Some(Self::Pixel),
"TRIANGLE" => Some(Self::Triangle),
"PRIMITIVE" => Some(Self::Primitive),
"FRAGMENT" => Some(Self::Fragment),
"MILLIWATT" => Some(Self::Milliwatt),
"WATT" => Some(Self::Watt),
"KILOWATT" => Some(Self::Kilowatt),
"JOULE" => Some(Self::Joule),
"VOLT" => Some(Self::Volt),
"AMPERE" => Some(Self::Ampere),
"CELSIUS" => Some(Self::Celsius),
"FAHRENHEIT" => Some(Self::Fahrenheit),
"KELVIN" => Some(Self::Kelvin),
"PERCENT" => Some(Self::Percent),
"INSTRUCTION" => Some(Self::Instruction),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrackEventCategory {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub description: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "3")]
pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrackEventDescriptor {
#[prost(message, repeated, tag = "1")]
pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
}
/// This message is sent from Producer(s) to the tracing Service when registering
/// to advertise their capabilities. It describes the structure of tracing
/// protos that will be produced by the data source and the supported filters.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DataSourceDescriptor {
/// e.g., "linux.ftrace", "chromium.tracing"
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
/// When non-zero, this is a unique ID within the scope of the Producer for
/// this data source (it is NOT globally unique). This is useful to
/// differentiate between data sources with matching names when calling
/// UpdateDataSource(). This field has been introduced in November 2021
/// (v22, Android T) and is not supported on older versions.
#[prost(uint64, optional, tag = "7")]
pub id: ::core::option::Option<u64>,
/// When true the data source is expected to ack the stop request through the
/// NotifyDataSourceStopped() IPC. This field has been introduced after
/// Android P in Jul 2018 and is not supported on older versions.
#[prost(bool, optional, tag = "2")]
pub will_notify_on_stop: ::core::option::Option<bool>,
/// When true the data source is expected to ack the start request through the
/// NotifyDataSourceStarted() IPC. This field has been introduced after
/// Android P in March 2019 and is not supported on older versions.
#[prost(bool, optional, tag = "3")]
pub will_notify_on_start: ::core::option::Option<bool>,
/// If true, opt into receiving the ClearIncrementalState() IPC. This should be
/// set if the data source writes packets that refer to previous trace
/// contents, and knows how to stop referring to the already-emitted data.
#[prost(bool, optional, tag = "4")]
pub handles_incremental_state_clear: ::core::option::Option<bool>,
/// If true, indicates that the data source does nothing upon Flush. This
/// allows the service to reduce the flush-related IPC traffic and better deal
/// with frozen producers (see go/perfetto-frozen). This is usually the case
/// for data sources like 'track_event' that don't have access to the various
/// thread task runners to post a flush task and rely purely on server-side
/// scraping.
/// Introduced in v39 / Android V.
#[prost(bool, optional, tag = "9")]
pub no_flush: ::core::option::Option<bool>,
/// Optional specification about available GPU counters.
#[prost(message, optional, tag = "5")]
pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
#[prost(message, optional, tag = "6")]
pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
#[prost(message, optional, tag = "8")]
pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
}
/// Reports the state of the tracing service. Used to gather details about the
/// data sources connected.
/// See ConsumerPort::QueryServiceState().
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TracingServiceState {
/// Lists all the producers connected.
#[prost(message, repeated, tag = "1")]
pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
/// Lists the data sources available.
#[prost(message, repeated, tag = "2")]
pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
/// Lists the tracing sessions active AND owned by a consumer that has the same
/// UID of the caller (or all of them if the caller is root).
/// Introduced in v24 / Android T.
#[prost(message, repeated, tag = "6")]
pub tracing_sessions: ::prost::alloc::vec::Vec<
tracing_service_state::TracingSession,
>,
/// This is always set to true from v24 and beyond. This flag is only used to
/// tell the difference between: (1) talking to a recent service which happens
/// to have no tracing session active; (2) talking to an older version of the
/// service which will never report any tracing session.
#[prost(bool, optional, tag = "7")]
pub supports_tracing_sessions: ::core::option::Option<bool>,
/// Total number of tracing sessions.
#[prost(int32, optional, tag = "3")]
pub num_sessions: ::core::option::Option<i32>,
/// Number of tracing sessions in the started state. Always <= num_sessions.
#[prost(int32, optional, tag = "4")]
pub num_sessions_started: ::core::option::Option<i32>,
/// The version of traced (the same returned by `traced --version`).
/// This is a human readable string with and its format varies depending on
/// the build system and the repo (standalone vs AOSP).
/// This is intended for human debugging only.
#[prost(string, optional, tag = "5")]
pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
}
/// Nested message and enum types in `TracingServiceState`.
pub mod tracing_service_state {
/// Describes a producer process.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Producer {
/// Unique ID of the producer (monotonic counter).
#[prost(int32, optional, tag = "1")]
pub id: ::core::option::Option<i32>,
/// Typically matches the process name.
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
/// Unix pid of the remote process. Supported only on Linux-based systems.
/// Introduced in v24 / Android T.
#[prost(int32, optional, tag = "5")]
pub pid: ::core::option::Option<i32>,
/// Unix uid of the remote process.
#[prost(int32, optional, tag = "3")]
pub uid: ::core::option::Option<i32>,
/// The version of the client library used by the producer.
/// This is a human readable string with and its format varies depending on
/// the build system and the repo (standalone vs AOSP).
/// This is intended for human debugging only.
#[prost(string, optional, tag = "4")]
pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
}
/// Describes a data source registered by a producer. Data sources are listed
/// regardless of the fact that they are being used or not.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DataSource {
/// Descriptor passed by the data source when calling RegisterDataSource().
#[prost(message, optional, tag = "1")]
pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
/// ID of the producer, as per Producer.id.
#[prost(int32, optional, tag = "2")]
pub producer_id: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TracingSession {
/// The TracingSessionID.
#[prost(uint64, optional, tag = "1")]
pub id: ::core::option::Option<u64>,
/// The Unix uid of the consumer that started the session.
/// This is meaningful only if the caller is root. In all other cases only
/// tracing sessions that match the caller UID will be displayed.
#[prost(int32, optional, tag = "2")]
pub consumer_uid: ::core::option::Option<i32>,
/// Internal state of the tracing session.
/// These strings are FYI only and subjected to change.
#[prost(string, optional, tag = "3")]
pub state: ::core::option::Option<::prost::alloc::string::String>,
/// The unique_session_name as set in the trace config (might be empty).
#[prost(string, optional, tag = "4")]
pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
/// The number and size of each buffer.
#[prost(uint32, repeated, packed = "false", tag = "5")]
pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
/// Duration, as specified in the TraceConfig.duration_ms.
#[prost(uint32, optional, tag = "6")]
pub duration_ms: ::core::option::Option<u32>,
/// Number of data sources involved in the session.
#[prost(uint32, optional, tag = "7")]
pub num_data_sources: ::core::option::Option<u32>,
/// Time when the session was started, in the CLOCK_REALTIME domain.
/// Available only on Linux-based systems.
#[prost(int64, optional, tag = "8")]
pub start_realtime_ns: ::core::option::Option<i64>,
/// The bugreport_score, as set in TraceConfig.bugreport_score.
#[prost(int32, optional, tag = "9")]
pub bugreport_score: ::core::option::Option<i32>,
/// As per TraceConfig.bugreport_filename.
#[prost(string, optional, tag = "10")]
pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
/// If true, the session is in the STARTED state. If false the session is in
/// any other state (see `state` field).
#[prost(bool, optional, tag = "11")]
pub is_started: ::core::option::Option<bool>,
}
}
/// Data source that lists game modes and game interventions of games
/// on an Android device.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidGameInterventionListConfig {
/// If not empty, emit info about only the following list of package names
/// (exact match, no regex). Otherwise, emit info about all packages.
#[prost(string, repeated, tag = "1")]
pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// Custom configuration for the "android.input.inputevent" data source.
///
/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
///
/// Next ID: 5
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidInputEventConfig {
/// The tracing mode to use. If unspecified, it will default to
/// TRACE_MODE_USE_RULES.
#[prost(enumeration = "android_input_event_config::TraceMode", optional, tag = "1")]
pub mode: ::core::option::Option<i32>,
/// The list of rules to use to determine the trace level of events.
/// Each event will be traced using the TraceLevel of the first rule that it
/// triggers from this list. The rules are evaluated in the order in which they
/// are specified. If an event does not match any of the rules,
/// TRACE_LEVEL_NONE will be used by default.
#[prost(message, repeated, tag = "2")]
pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
/// Trace input events processed by the system as they are being dispatched
/// to application windows. All trace rules will apply.
/// - If this flag is used without enabling trace_dispatcher_window_dispatch,
/// it will
/// trace InputDispatcher's inbound events (which does not include events
/// synthesized within InputDispatcher) that match the rules.
/// - If used with trace_dispatcher_window_dispatch, all inbound and outbound
/// events
/// matching the rules, including all events synthesized within
/// InputDispatcher, will be traced.
#[prost(bool, optional, tag = "3")]
pub trace_dispatcher_input_events: ::core::option::Option<bool>,
/// Trace details about which windows the system is sending each input event
/// to. All trace rules will apply.
#[prost(bool, optional, tag = "4")]
pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
}
/// Nested message and enum types in `AndroidInputEventConfig`.
pub mod android_input_event_config {
/// A rule that specifies the TraceLevel for an event based on matching
/// conditions. All matchers in the rule are optional. To trigger this rule, an
/// event must match all of its specified matchers (i.e. the matchers function
/// like a series of conditions connected by a logical 'AND' operator). A rule
/// with no specified matchers will match all events. Next ID: 6
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TraceRule {
/// The trace level to be used for events that trigger this rule.
/// If unspecified, TRACE_LEVEL_NONE will be used by default.
#[prost(enumeration = "TraceLevel", optional, tag = "1")]
pub trace_level: ::core::option::Option<i32>,
/// Package matchers
///
/// Respectively matches if all or any of the target apps for this event are
/// contained in the specified list of package names.
///
/// Intended usage:
/// - Use match_all_packages to selectively allow tracing for the listed
/// packages.
/// - Use match_any_packages to selectively deny tracing for certain
/// packages.
///
/// WARNING: Great care must be taken when designing rules for field tracing!
/// This is because each event is almost always sent to more than
/// one app.
/// For example, when allowing tracing for a package that has a
/// spy window
/// over the display (e.g. SystemUI) using match_any_packages,
/// essentially all input will be recorded on that display. This is
/// because the events will be sent to the spy as well as the
/// foreground app, and regardless of what the foreground app is,
/// the event will end up being traced.
/// Alternatively, when attempting to block tracing for specific
/// packages using
/// match_all_packages, no events will likely be blocked. This is
/// because the event will also be sent to other apps (such as, but
/// not limited to, ones with spy windows), so the matcher will not
/// match unless all other targets are also listed under the
/// match_all_packages list.
#[prost(string, repeated, tag = "2")]
pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "3")]
pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Matches if the event is secure, which means that at least one of the
/// targets of this event is using the window flag FLAG_SECURE.
#[prost(bool, optional, tag = "4")]
pub match_secure: ::core::option::Option<bool>,
/// Matches if there was an active IME connection while this event was being
/// processed.
#[prost(bool, optional, tag = "5")]
pub match_ime_connection_active: ::core::option::Option<bool>,
}
/// Trace modes are tracing presets that are included in the system.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum TraceMode {
/// Preset mode for maximal tracing.
/// WARNING: This will bypass all privacy measures on debuggable builds, and
/// will record all
/// input events processed by the system, regardless of the context
/// in which they were processed. It should only be used for tracing
/// on a local device or for tests. It should NEVER be used for
/// field tracing.
TraceAll = 0,
/// Use the tracing rules defined in this config to specify what events to
/// trace.
UseRules = 1,
}
impl TraceMode {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::TraceAll => "TRACE_MODE_TRACE_ALL",
Self::UseRules => "TRACE_MODE_USE_RULES",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"TRACE_MODE_TRACE_ALL" => Some(Self::TraceAll),
"TRACE_MODE_USE_RULES" => Some(Self::UseRules),
_ => None,
}
}
}
/// The level of tracing that should be applied to an event.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum TraceLevel {
/// Do not trace the input event.
None = 0,
/// Trace the event as a redacted event, where certain sensitive fields are
/// omitted from the trace, including the coordinates of pointer events and
/// the key/scan codes of key events.
Redacted = 1,
/// Trace the complete event.
Complete = 2,
}
impl TraceLevel {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::None => "TRACE_LEVEL_NONE",
Self::Redacted => "TRACE_LEVEL_REDACTED",
Self::Complete => "TRACE_LEVEL_COMPLETE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"TRACE_LEVEL_NONE" => Some(Self::None),
"TRACE_LEVEL_REDACTED" => Some(Self::Redacted),
"TRACE_LEVEL_COMPLETE" => Some(Self::Complete),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidLogConfig {
#[prost(enumeration = "AndroidLogId", repeated, packed = "false", tag = "1")]
pub log_ids: ::prost::alloc::vec::Vec<i32>,
/// If set ignores all log messages whose prio is < the given value.
#[prost(enumeration = "AndroidLogPriority", optional, tag = "3")]
pub min_prio: ::core::option::Option<i32>,
/// If non-empty ignores all log messages whose tag doesn't match one of the
/// specified values.
#[prost(string, repeated, tag = "4")]
pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// Data source that polls for display state. This should only be used for
/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AndroidPolledStateConfig {
/// Frequency of polling. If absent the state will be recorded once, at the
/// start of the trace.
/// This is required to be > 100ms to avoid excessive CPU usage.
#[prost(uint32, optional, tag = "1")]
pub poll_ms: ::core::option::Option<u32>,
}
/// Data source that controls the system properties used to guard initialization
/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
/// processes like SurfaceFlinger.
///
/// This data source only tells Skia to initialized the Perfetto SDK and start
/// routing data to the Track Event system instead of ATrace. For those events
/// to actually show up in a trace, the track_event data source must be used as
/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
/// processes may need to be restarted for Skia to revert to using ATrace if
/// Track Events are no longer desired.
///
/// In addition to switching Skia to use Perfetto's track_event data source,
/// this "guard" also controls Skia's "broad tracing", which removes Skia's
/// internal tracing constraints and allows the track_event config to specify
/// which categories should be traced. Filtering to the "skia.always" category
/// *tag* in a track_event config can be used to re-enable the standard
/// constraints typically used with ATrace.
///
/// Data source name: android.sdk_sysprop_guard
/// Introduced in Android 14 (U) QPR1.
/// Next id: 4
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidSdkSyspropGuardConfig {
/// If true, configures SurfaceFlinger to initialize Skia's Perfetto
/// integration with the track_event data source in RenderEngine.
/// If false or omitted, the simpler ATrace fallback is used.
///
/// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
/// restarted.
///
/// Specifically this sets the following system properties:
/// - debug.tracing.ctl.renderengine.skia_tracing_enabled
/// - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
///
/// Does not affect actual track_event data *collection*, which must be
/// configured seperately.
#[prost(bool, optional, tag = "1")]
pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
/// If true, configures HWUI apps to initialize Skia's Perfetto integration
/// with the track_event data source. hwui_package_name_filter
/// can be used to control which apps are affected.
/// If false or omitted, the simpler ATrace fallback is used.
///
/// NOTE: once enabled, Skia will only revert to ATrace if the app is
/// restarted.
///
/// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
/// If filtering is NOT set, this controls these GLOBAL system properties:
/// - debug.tracing.ctl.hwui.skia_tracing_enabled
/// - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
/// If filtering IS set, this controls these APP-SPECIFIC system properties,
/// for each package listed in the filter:
/// - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
/// - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
///
/// Does not affect actual track_event data *collection*, which must be
/// configured seperately.
#[prost(bool, optional, tag = "2")]
pub hwui_skia_track_events: ::core::option::Option<bool>,
/// If non-empty, hwui_skia_track_events applies to only the packages listed.
/// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
#[prost(string, repeated, tag = "3")]
pub hwui_package_name_filter: ::prost::alloc::vec::Vec<
::prost::alloc::string::String,
>,
}
/// Data source that polls for system properties.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidSystemPropertyConfig {
/// Frequency of polling. If absent the state will be recorded once, at the
/// start of the trace.
/// This is required to be > 100ms to avoid excessive CPU usage.
#[prost(uint32, optional, tag = "1")]
pub poll_ms: ::core::option::Option<u32>,
/// Properties to poll. All property names must start with "debug.tracing.".
#[prost(string, repeated, tag = "2")]
pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// Network tracing data source that records details on all packets sent or
/// received by the network.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct NetworkPacketTraceConfig {
/// Polling frequency in milliseconds. Network tracing writes to a fixed size
/// ring buffer. The polling interval should be such that the ring buffer is
/// unlikely to fill in that interval (or that filling is an acceptable risk).
/// The minimum polling rate is 100ms (values below this are ignored).
/// Introduced in Android 14 (U).
#[prost(uint32, optional, tag = "1")]
pub poll_ms: ::core::option::Option<u32>,
/// The aggregation_threshold is the number of packets at which an event will
/// switch from per-packet details to aggregate details. For example, a value
/// of 50 means that if a particular event (grouped by the unique combinations
/// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
/// packets, the exact timestamp and length are recorded for each packet. If
/// there were 50 or more packets in an event, it would only record the total
/// duration, packets, and length. A value of zero or unspecified will always
/// / record per-packet details. A value of 1 always records aggregate details.
#[prost(uint32, optional, tag = "2")]
pub aggregation_threshold: ::core::option::Option<u32>,
/// Specifies the maximum number of packet contexts to intern at a time. This
/// prevents the interning table from growing too large and controls whether
/// interning is enabled or disabled (a value of zero disables interning and
/// is the default). When a data sources interning table reaches this amount,
/// packet contexts will be inlined into NetworkPacketEvents.
#[prost(uint32, optional, tag = "3")]
pub intern_limit: ::core::option::Option<u32>,
/// The following fields specify whether certain fields should be dropped from
/// the output. Dropping fields improves normalization results, reduces the
/// size of the interning table, and slightly reduces event size.
#[prost(bool, optional, tag = "4")]
pub drop_local_port: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "5")]
pub drop_remote_port: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "6")]
pub drop_tcp_flags: ::core::option::Option<bool>,
}
/// Data source that lists details (such as version code) about packages on an
/// Android device.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PackagesListConfig {
/// If not empty, emit info about only the following list of package names
/// (exact match, no regex). Otherwise, emit info about all packages.
#[prost(string, repeated, tag = "1")]
pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// Data source that records events from the modem.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PixelModemConfig {
#[prost(enumeration = "pixel_modem_config::EventGroup", optional, tag = "1")]
pub event_group: ::core::option::Option<i32>,
/// If set, record only events with these hashes.
#[prost(int64, repeated, packed = "false", tag = "2")]
pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
/// If set and allow_list is not set, deny events with these hashes.
#[prost(int64, repeated, packed = "false", tag = "3")]
pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
}
/// Nested message and enum types in `PixelModemConfig`.
pub mod pixel_modem_config {
/// Event group to record, as defined by the modem.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum EventGroup {
Unknown = 0,
/// Events suitable for low bandwidth tracing only.
LowBandwidth = 1,
/// Events suitable for high and low bandwidth tracing.
HighAndLowBandwidth = 2,
}
impl EventGroup {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "EVENT_GROUP_UNKNOWN",
Self::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
Self::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"EVENT_GROUP_UNKNOWN" => Some(Self::Unknown),
"EVENT_GROUP_LOW_BANDWIDTH" => Some(Self::LowBandwidth),
"EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH" => Some(Self::HighAndLowBandwidth),
_ => None,
}
}
}
}
/// Custom configuration for the "android.protolog" data source.
/// ProtoLog is a logging mechanism that is intented to be more efficient than
/// logcat. This configures what logs to capture in the tracing instance.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProtoLogConfig {
/// Specified the configurations for each of the logging groups. If none is
/// specified for a group the defaults will be used.
#[prost(message, repeated, tag = "1")]
pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
/// Specified what tracing mode to use for the tracing instance.
#[prost(enumeration = "proto_log_config::TracingMode", optional, tag = "2")]
pub tracing_mode: ::core::option::Option<i32>,
/// If set, any message with log level higher than this level (inclusive) will
/// be traced. Group overrides take precedence over this value.
#[prost(enumeration = "ProtoLogLevel", optional, tag = "3")]
pub default_log_from_level: ::core::option::Option<i32>,
}
/// Nested message and enum types in `ProtoLogConfig`.
pub mod proto_log_config {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum TracingMode {
/// When using the DEFAULT tracing mode, only log groups and levels specified
/// in the group_overrides are traced.
Default = 0,
/// When using the ENABLE_ALL tracing mode, all log groups and levels are
/// traced, unless specified in the group_overrides.
EnableAll = 1,
}
impl TracingMode {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Default => "DEFAULT",
Self::EnableAll => "ENABLE_ALL",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"DEFAULT" => Some(Self::Default),
"ENABLE_ALL" => Some(Self::EnableAll),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProtoLogGroup {
/// The ProtoLog group name this configuration entry applies to.
#[prost(string, optional, tag = "1")]
pub group_name: ::core::option::Option<::prost::alloc::string::String>,
/// Specify the level from which to start capturing protologs.
/// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
/// message will be traced.
#[prost(enumeration = "ProtoLogLevel", optional, tag = "2")]
pub log_from: ::core::option::Option<i32>,
/// When set to true we will collect the stacktrace for each protolog message
/// in this group that we are tracing.
#[prost(bool, optional, tag = "3")]
pub collect_stacktrace: ::core::option::Option<bool>,
}
/// Custom configuration for the "android.surfaceflinger.layers" data source.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SurfaceFlingerLayersConfig {
#[prost(enumeration = "surface_flinger_layers_config::Mode", optional, tag = "1")]
pub mode: ::core::option::Option<i32>,
#[prost(
enumeration = "surface_flinger_layers_config::TraceFlag",
repeated,
packed = "false",
tag = "2"
)]
pub trace_flags: ::prost::alloc::vec::Vec<i32>,
}
/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
pub mod surface_flinger_layers_config {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Mode {
Unspecified = 0,
/// Trace layers snapshots. A snapshot is taken every time a layers change
/// occurs.
Active = 1,
/// Generate layers snapshots from the transactions kept in the
/// SurfaceFlinger's internal ring buffer.
/// The layers snapshots generation occurs when this data source is flushed.
Generated = 2,
/// Trace a single layers snapshot.
Dump = 3,
/// Default mode (applied by SurfaceFlinger if no mode is specified).
/// Same as MODE_GENERATED, but triggers the layers snapshots generation only when a bugreport
/// is taken.
GeneratedBugreportOnly = 4,
}
impl Mode {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "MODE_UNSPECIFIED",
Self::Active => "MODE_ACTIVE",
Self::Generated => "MODE_GENERATED",
Self::Dump => "MODE_DUMP",
Self::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"MODE_UNSPECIFIED" => Some(Self::Unspecified),
"MODE_ACTIVE" => Some(Self::Active),
"MODE_GENERATED" => Some(Self::Generated),
"MODE_DUMP" => Some(Self::Dump),
"MODE_GENERATED_BUGREPORT_ONLY" => Some(Self::GeneratedBugreportOnly),
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum TraceFlag {
Unspecified = 0,
Input = 2,
Composition = 4,
Extra = 8,
Hwc = 16,
Buffers = 32,
VirtualDisplays = 64,
/// INPUT | COMPOSITION | EXTRA
All = 14,
}
impl TraceFlag {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
Self::Input => "TRACE_FLAG_INPUT",
Self::Composition => "TRACE_FLAG_COMPOSITION",
Self::Extra => "TRACE_FLAG_EXTRA",
Self::Hwc => "TRACE_FLAG_HWC",
Self::Buffers => "TRACE_FLAG_BUFFERS",
Self::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
Self::All => "TRACE_FLAG_ALL",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
"TRACE_FLAG_INPUT" => Some(Self::Input),
"TRACE_FLAG_COMPOSITION" => Some(Self::Composition),
"TRACE_FLAG_EXTRA" => Some(Self::Extra),
"TRACE_FLAG_HWC" => Some(Self::Hwc),
"TRACE_FLAG_BUFFERS" => Some(Self::Buffers),
"TRACE_FLAG_VIRTUAL_DISPLAYS" => Some(Self::VirtualDisplays),
"TRACE_FLAG_ALL" => Some(Self::All),
_ => None,
}
}
}
}
/// Custom configuration for the "android.surfaceflinger.transactions" data
/// source.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SurfaceFlingerTransactionsConfig {
#[prost(
enumeration = "surface_flinger_transactions_config::Mode",
optional,
tag = "1"
)]
pub mode: ::core::option::Option<i32>,
}
/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
pub mod surface_flinger_transactions_config {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Mode {
Unspecified = 0,
/// Default mode (applied by SurfaceFlinger if no mode is specified).
/// SurfaceFlinger writes its internal ring buffer of transactions every time
/// the data source is flushed. The ring buffer contains the SurfaceFlinger's
/// initial state and the latest transactions.
Continuous = 1,
/// SurfaceFlinger writes the initial state and then each incoming
/// transaction until the data source is stopped.
Active = 2,
}
impl Mode {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "MODE_UNSPECIFIED",
Self::Continuous => "MODE_CONTINUOUS",
Self::Active => "MODE_ACTIVE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"MODE_UNSPECIFIED" => Some(Self::Unspecified),
"MODE_CONTINUOUS" => Some(Self::Continuous),
"MODE_ACTIVE" => Some(Self::Active),
_ => None,
}
}
}
}
/// Custom configuration for the "android.windowmanager" data source.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct WindowManagerConfig {
#[prost(enumeration = "window_manager_config::LogFrequency", optional, tag = "1")]
pub log_frequency: ::core::option::Option<i32>,
#[prost(enumeration = "window_manager_config::LogLevel", optional, tag = "2")]
pub log_level: ::core::option::Option<i32>,
}
/// Nested message and enum types in `WindowManagerConfig`.
pub mod window_manager_config {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum LogFrequency {
Unspecified = 0,
/// Trace state snapshots when a frame is committed.
Frame = 1,
/// Trace state snapshots every time a transaction is committed.
Transaction = 2,
/// Trace single state snapshots when the data source is started.
SingleDump = 3,
}
impl LogFrequency {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
Self::Frame => "LOG_FREQUENCY_FRAME",
Self::Transaction => "LOG_FREQUENCY_TRANSACTION",
Self::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"LOG_FREQUENCY_UNSPECIFIED" => Some(Self::Unspecified),
"LOG_FREQUENCY_FRAME" => Some(Self::Frame),
"LOG_FREQUENCY_TRANSACTION" => Some(Self::Transaction),
"LOG_FREQUENCY_SINGLE_DUMP" => Some(Self::SingleDump),
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum LogLevel {
Unspecified = 0,
/// Logs all elements with maximum amount of information.
Verbose = 1,
/// Logs all elements but doesn't write all configuration data.
Debug = 2,
/// Logs only visible elements, with the minimum amount of performance
/// overhead
Critical = 3,
}
impl LogLevel {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "LOG_LEVEL_UNSPECIFIED",
Self::Verbose => "LOG_LEVEL_VERBOSE",
Self::Debug => "LOG_LEVEL_DEBUG",
Self::Critical => "LOG_LEVEL_CRITICAL",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"LOG_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
"LOG_LEVEL_VERBOSE" => Some(Self::Verbose),
"LOG_LEVEL_DEBUG" => Some(Self::Debug),
"LOG_LEVEL_CRITICAL" => Some(Self::Critical),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeConfig {
#[prost(string, optional, tag = "1")]
pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
/// When enabled, the data source should only fill in fields in the output that
/// are not potentially privacy sensitive.
#[prost(bool, optional, tag = "2")]
pub privacy_filtering_enabled: ::core::option::Option<bool>,
/// Instead of emitting binary protobuf, convert the trace data to the legacy
/// JSON format. Note that the trace data will still be returned as a series of
/// TracePackets, but the embedded data will be JSON instead of serialized
/// protobuf.
#[prost(bool, optional, tag = "3")]
pub convert_to_legacy_json: ::core::option::Option<bool>,
#[prost(enumeration = "chrome_config::ClientPriority", optional, tag = "4")]
pub client_priority: ::core::option::Option<i32>,
/// Applicable only when using legacy JSON format.
/// If |json_agent_label_filter| is not empty, only data pertaining to
/// the specified tracing agent label (e.g. "traceEvents") will be returned.
#[prost(string, optional, tag = "5")]
pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
}
/// Nested message and enum types in `ChromeConfig`.
pub mod chrome_config {
/// Priority of the tracing session client. A higher priority session may
/// preempt a lower priority one in configurations where concurrent sessions
/// aren't supported.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum ClientPriority {
Unknown = 0,
Background = 1,
UserInitiated = 2,
}
impl ClientPriority {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "UNKNOWN",
Self::Background => "BACKGROUND",
Self::UserInitiated => "USER_INITIATED",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNKNOWN" => Some(Self::Unknown),
"BACKGROUND" => Some(Self::Background),
"USER_INITIATED" => Some(Self::UserInitiated),
_ => None,
}
}
}
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ChromiumSystemMetricsConfig {
/// Samples counters every X ms.
#[prost(uint32, optional, tag = "1")]
pub sampling_interval_ms: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct V8Config {
/// Whether to log the actual content of scripts (e.g. content of the JS file
/// that was compiled to generate code).
/// ATTENTION: This could considerably increase the size of the resuling trace
/// file.
#[prost(bool, optional, tag = "1")]
pub log_script_sources: ::core::option::Option<bool>,
/// Whether to log the generated code for jitted functions (machine code or
/// bytecode).
/// ATTENTION: This could considerably increase the size of the resuling trace
/// file.
#[prost(bool, optional, tag = "2")]
pub log_instructions: ::core::option::Option<bool>,
}
/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
/// ns-evntrace-event_trace_properties
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EtwConfig {
/// The kernel_flags determines the flags that will be used by the etw tracing
/// session. These kernel flags have been built to expose the useful events
/// captured from the kernel mode only.
#[prost(
enumeration = "etw_config::KernelFlag",
repeated,
packed = "false",
tag = "1"
)]
pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
}
/// Nested message and enum types in `EtwConfig`.
pub mod etw_config {
/// The KernelFlag represent list of kernel flags that we are intrested in.
/// To get a more extensive list run 'xperf -providers k'.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum KernelFlag {
Cswitch = 0,
Dispatcher = 1,
}
impl KernelFlag {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Cswitch => "CSWITCH",
Self::Dispatcher => "DISPATCHER",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"CSWITCH" => Some(Self::Cswitch),
"DISPATCHER" => Some(Self::Dispatcher),
_ => None,
}
}
}
}
/// Next id: 31
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FtraceConfig {
/// Ftrace events to record, example: "sched/sched_switch".
#[prost(string, repeated, tag = "1")]
pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Ftrace events to record, specific for kprobes and kretprobes
#[prost(message, repeated, tag = "30")]
pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
/// Android-specific event categories:
#[prost(string, repeated, tag = "2")]
pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "3")]
pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Some processes can emit data through atrace or through the perfetto SDK via
/// the "track_event" data source. For these categories, the SDK will be
/// preferred, if possible, for this config.
#[prost(string, repeated, tag = "28")]
pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<
::prost::alloc::string::String,
>,
/// Size of each per-cpu kernel ftrace ring buffer.
/// Not guaranteed if there are multiple concurrent tracing sessions, as the
/// buffers cannot be resized without pausing recording in the kernel.
#[prost(uint32, optional, tag = "10")]
pub buffer_size_kb: ::core::option::Option<u32>,
/// If set, specifies how often the tracing daemon reads from the kernel ring
/// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
/// Leave unset unless you're fine-tuning a local config.
#[prost(uint32, optional, tag = "11")]
pub drain_period_ms: ::core::option::Option<u32>,
/// If set, the tracing daemon will read kernel ring buffers as soon as
/// they're filled past this percentage of occupancy. In other words, a value
/// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
/// half-full. Not guaranteed if there are multiple concurrent tracing
/// sessions.
/// Currently does nothing on Linux kernels below v6.9.
/// Introduced in: perfetto v48.
#[prost(uint32, optional, tag = "29")]
pub drain_buffer_percent: ::core::option::Option<u32>,
#[prost(message, optional, tag = "12")]
pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
#[prost(message, optional, tag = "22")]
pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
/// Enables symbol name resolution against /proc/kallsyms.
/// It requires that either traced_probes is running as root or that
/// kptr_restrict has been manually lowered.
/// It does not disclose KASLR, symbol addresses are mangled.
#[prost(bool, optional, tag = "13")]
pub symbolize_ksyms: ::core::option::Option<bool>,
#[prost(enumeration = "ftrace_config::KsymsMemPolicy", optional, tag = "17")]
pub ksyms_mem_policy: ::core::option::Option<i32>,
/// By default the kernel symbolizer is lazily initialized on a deferred task
/// to reduce ftrace's time-to-start-recording. Unfortunately that makes
/// ksyms integration tests hard. This flag forces the kernel symbolizer to be
/// initialized synchronously on the data source start and hence avoiding
/// timing races in tests.
/// DEPRECATED in v28 / Android U. This is now the default behavior, setting it
/// to true is a no-op.
#[deprecated]
#[prost(bool, optional, tag = "14")]
pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
/// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
/// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
/// event instead if present, and fall back to "kmem/rss_stat" if not present.
/// The historical context for this is the following:
/// - Up to Android S (12), the rss_stat was internally throttled in its
/// kernel implementation.
/// - A change introduced in the kernels after S has introduced a new
/// "rss_stat_throttled" making the original "rss_stat" event unthrottled
/// (hence very spammy).
/// - Not all Android T/13 devices will receive a new kernel though, hence we
/// need to deal with both cases.
/// For more context: go/rss-stat-throttled.
#[prost(bool, optional, tag = "15")]
pub throttle_rss_stat: ::core::option::Option<bool>,
/// If true, avoid enabling events that aren't statically known by
/// traced_probes. Otherwise, the default is to emit such events as
/// GenericFtraceEvent protos.
/// Prefer to keep this flag at its default. This was added for Android
/// tracing, where atrace categories and/or atrace HAL requested events can
/// expand to events that aren't of interest to the tracing user.
/// Introduced in: Android T.
#[prost(bool, optional, tag = "16")]
pub disable_generic_events: ::core::option::Option<bool>,
/// The subset of syscalls to record. To record all syscalls, leave this unset
/// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
/// * before perfetto v43, requires the config to also enable
/// raw_syscalls/sys_{enter,exit}.
/// * perfetto v43+ does the right thing if you set only this field.
/// Example: \["sys_read", "sys_open"\].
/// Introduced in: Android U.
#[prost(string, repeated, tag = "18")]
pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// If true, enable the "function_graph" kernel tracer that emits events
/// whenever a kernel function is entered and exited
/// (funcgraph_entry/funcgraph_exit).
/// Notes on use:
/// * Requires |symbolize_ksyms| for function name resolution.
/// * Use |function_filters| or |function_graph_roots| to constrain the traced
/// set of functions, otherwise the event bandwidth will be too high for
/// practical use.
/// * The data source might be rejected if there is already a concurrent
/// ftrace data source that does not use function graph itself, as we do not
/// support switching kernel tracers mid-trace.
/// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
/// enabled if "cat /sys/kernel/tracing/available_tracers" includes
/// "function_graph".
/// Android:
/// * Available only on debuggable builds.
/// * Introduced in: Android U.
#[prost(bool, optional, tag = "19")]
pub enable_function_graph: ::core::option::Option<bool>,
/// Constrains the set of functions traced when |enable_function_graph| is
/// true. Supports globs, e.g. "sched*". You can specify multiple filters,
/// in which case all matching functions will be traced. See kernel
/// documentation on ftrace "set_ftrace_filter" file for more details.
/// Android:
/// * Available only on debuggable builds.
/// * Introduced in: Android U.
#[prost(string, repeated, tag = "20")]
pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// If |enable_function_graph| is true, trace this set of functions *and* all
/// of its callees. Supports globs. Can be set together with
/// |function_filters|, in which case only callees matching the filter will be
/// traced. If setting both, you most likely want all roots to also be
/// included in |function_filters|.
/// Android:
/// * Available only on debuggable builds.
/// * Introduced in: Android U.
#[prost(string, repeated, tag = "21")]
pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// If true, does not clear ftrace buffers before the start of the program.
/// This makes sense only if this is the first ftrace data source instance
/// created after the daemon has been started. Can be useful for gathering boot
/// traces, if ftrace has been separately configured (e.g. via kernel
/// commandline).
#[prost(bool, optional, tag = "23")]
pub preserve_ftrace_buffer: ::core::option::Option<bool>,
/// If true, overrides the default timestamp clock and uses a raw hardware
/// based monotonic clock for getting timestamps.
/// * Introduced in: Android U.
#[prost(bool, optional, tag = "24")]
pub use_monotonic_raw_clock: ::core::option::Option<bool>,
/// If |instance_name| is not empty, then attempt to use that tracefs instance
/// for event recording. Normally, this means
/// `/sys/kernel/tracing/instances/$instance_name`.
///
/// The name "hyp" is reserved.
///
/// The instance must already exist, the tracing daemon *will not* create it
/// for you as it typically doesn't have such permissions.
/// Only a subset of features is guaranteed to work with non-default instances,
/// at the time of writing:
/// * ftrace_events
/// * buffer_size_kb
#[prost(string, optional, tag = "25")]
pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
/// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
/// implementation to choose a bigger buffer size.
///
/// Most configs for perfetto v43+ should simply leave both fields unset.
///
/// If you need a config compatible with a range of perfetto builds and you
/// used to set a non-default buffer_size_kb, consider setting both fields.
/// Example:
/// buffer_size_kb: 4096
/// buffer_size_lower_bound: true
/// On older builds, the per-cpu buffers will be exactly 4 MB.
/// On v43+, buffers will be at least 4 MB.
/// In both cases, neither is guaranteed if there are other concurrent
/// perfetto ftrace sessions, as the buffers cannot be resized without pausing
/// the recording in the kernel.
/// Introduced in: perfetto v43.
#[prost(bool, optional, tag = "27")]
pub buffer_size_lower_bound: ::core::option::Option<bool>,
}
/// Nested message and enum types in `FtraceConfig`.
pub mod ftrace_config {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct KprobeEvent {
/// Kernel function name to attach to, for example "fuse_file_write_iter"
#[prost(string, optional, tag = "1")]
pub probe: ::core::option::Option<::prost::alloc::string::String>,
#[prost(enumeration = "kprobe_event::KprobeType", optional, tag = "2")]
pub r#type: ::core::option::Option<i32>,
}
/// Nested message and enum types in `KprobeEvent`.
pub mod kprobe_event {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum KprobeType {
Unknown = 0,
Kprobe = 1,
Kretprobe = 2,
Both = 3,
}
impl KprobeType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "KPROBE_TYPE_UNKNOWN",
Self::Kprobe => "KPROBE_TYPE_KPROBE",
Self::Kretprobe => "KPROBE_TYPE_KRETPROBE",
Self::Both => "KPROBE_TYPE_BOTH",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"KPROBE_TYPE_UNKNOWN" => Some(Self::Unknown),
"KPROBE_TYPE_KPROBE" => Some(Self::Kprobe),
"KPROBE_TYPE_KRETPROBE" => Some(Self::Kretprobe),
"KPROBE_TYPE_BOTH" => Some(Self::Both),
_ => None,
}
}
}
}
/// Configuration for compact encoding of scheduler events. When enabled (and
/// recording the relevant ftrace events), specific high-volume events are
/// encoded in a denser format than normal.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CompactSchedConfig {
/// If true, and sched_switch or sched_waking ftrace events are enabled,
/// record those events in the compact format.
///
/// If the field is unset, the default is:
/// * perfetto v42.0+: enabled
/// * before: disabled
#[prost(bool, optional, tag = "1")]
pub enabled: ::core::option::Option<bool>,
}
/// Optional filter for "ftrace/print" events.
///
/// The filter consists of multiple rules. As soon as a rule matches (the rules
/// are processed in order), its `allow` field will be used as the outcome: if
/// `allow` is true, the event will be included in the trace, otherwise it will
/// be discarded. If an event does not match any rule, it will be allowed by
/// default (a rule with an empty prefix and allow=false, disallows everything
/// by default).
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PrintFilter {
#[prost(message, repeated, tag = "1")]
pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
}
/// Nested message and enum types in `PrintFilter`.
pub mod print_filter {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Rule {
#[prost(bool, optional, tag = "2")]
pub allow: ::core::option::Option<bool>,
#[prost(oneof = "rule::Match", tags = "1, 3")]
pub r#match: ::core::option::Option<rule::Match>,
}
/// Nested message and enum types in `Rule`.
pub mod rule {
/// Matches an atrace message of the form:
/// <type>|pid|<prefix>...
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AtraceMessage {
#[prost(string, optional, tag = "1")]
pub r#type: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub prefix: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Match {
/// This rule matches if `prefix` matches exactly with the beginning of
/// the "ftrace/print" "buf" field.
#[prost(string, tag = "1")]
Prefix(::prost::alloc::string::String),
/// This rule matches if the "buf" field contains an atrace-style print
/// message as specified in `atrace_msg`.
#[prost(message, tag = "3")]
AtraceMsg(AtraceMessage),
}
}
}
/// When symbolize_ksyms=true, determines whether the traced_probes daemon
/// should keep the symbol map in memory (and reuse it for future tracing
/// sessions) or clear it (saving memory) and re-create it on each tracing
/// session (wasting cpu and wall time).
/// The tradeoff is roughly:
/// KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
/// KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
/// Default behavior: KSYMS_CLEANUP_ON_STOP.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum KsymsMemPolicy {
KsymsUnspecified = 0,
KsymsCleanupOnStop = 1,
KsymsRetain = 2,
}
impl KsymsMemPolicy {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::KsymsUnspecified => "KSYMS_UNSPECIFIED",
Self::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
Self::KsymsRetain => "KSYMS_RETAIN",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"KSYMS_UNSPECIFIED" => Some(Self::KsymsUnspecified),
"KSYMS_CLEANUP_ON_STOP" => Some(Self::KsymsCleanupOnStop),
"KSYMS_RETAIN" => Some(Self::KsymsRetain),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GpuCounterConfig {
/// Desired sampling interval for counters.
#[prost(uint64, optional, tag = "1")]
pub counter_period_ns: ::core::option::Option<u64>,
/// List of counters to be sampled. Counter IDs correspond to the ones
/// described in GpuCounterSpec in the data source descriptor.
#[prost(uint32, repeated, packed = "false", tag = "2")]
pub counter_ids: ::prost::alloc::vec::Vec<u32>,
/// Sample counters by instrumenting command buffers.
#[prost(bool, optional, tag = "3")]
pub instrumented_sampling: ::core::option::Option<bool>,
/// Fix gpu clock rate during trace session.
#[prost(bool, optional, tag = "4")]
pub fix_gpu_clock: ::core::option::Option<bool>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct VulkanMemoryConfig {
/// Tracking driver memory usage events
#[prost(bool, optional, tag = "1")]
pub track_driver_memory_usage: ::core::option::Option<bool>,
/// Tracking device memory usage events
#[prost(bool, optional, tag = "2")]
pub track_device_memory_usage: ::core::option::Option<bool>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InodeFileConfig {
/// How long to pause between batches.
#[prost(uint32, optional, tag = "1")]
pub scan_interval_ms: ::core::option::Option<u32>,
/// How long to wait before the first scan in order to accumulate inodes.
#[prost(uint32, optional, tag = "2")]
pub scan_delay_ms: ::core::option::Option<u32>,
/// How many inodes to scan in one batch.
#[prost(uint32, optional, tag = "3")]
pub scan_batch_size: ::core::option::Option<u32>,
/// Do not scan for inodes not found in the static map.
#[prost(bool, optional, tag = "4")]
pub do_not_scan: ::core::option::Option<bool>,
/// If non-empty, only scan inodes corresponding to block devices named in
/// this list.
#[prost(string, repeated, tag = "5")]
pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// When encountering an inode belonging to a block device corresponding
/// to one of the mount points in this map, scan its scan_roots instead.
#[prost(message, repeated, tag = "6")]
pub mount_point_mapping: ::prost::alloc::vec::Vec<
inode_file_config::MountPointMappingEntry,
>,
}
/// Nested message and enum types in `InodeFileConfig`.
pub mod inode_file_config {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MountPointMappingEntry {
#[prost(string, optional, tag = "1")]
pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "2")]
pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ConsoleConfig {
#[prost(enumeration = "console_config::Output", optional, tag = "1")]
pub output: ::core::option::Option<i32>,
#[prost(bool, optional, tag = "2")]
pub enable_colors: ::core::option::Option<bool>,
}
/// Nested message and enum types in `ConsoleConfig`.
pub mod console_config {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Output {
Unspecified = 0,
Stdout = 1,
Stderr = 2,
}
impl Output {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "OUTPUT_UNSPECIFIED",
Self::Stdout => "OUTPUT_STDOUT",
Self::Stderr => "OUTPUT_STDERR",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"OUTPUT_UNSPECIFIED" => Some(Self::Unspecified),
"OUTPUT_STDOUT" => Some(Self::Stdout),
"OUTPUT_STDERR" => Some(Self::Stderr),
_ => None,
}
}
}
}
/// Configuration for trace packet interception. Used for diverting trace data to
/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
/// Perfetto SDK.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InterceptorConfig {
/// Matches the name given to RegisterInterceptor().
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, optional, tag = "100")]
pub console_config: ::core::option::Option<ConsoleConfig>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidPowerConfig {
#[prost(uint32, optional, tag = "1")]
pub battery_poll_ms: ::core::option::Option<u32>,
#[prost(
enumeration = "android_power_config::BatteryCounters",
repeated,
packed = "false",
tag = "2"
)]
pub battery_counters: ::prost::alloc::vec::Vec<i32>,
/// Where available enables per-power-rail measurements.
#[prost(bool, optional, tag = "3")]
pub collect_power_rails: ::core::option::Option<bool>,
/// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
/// Available from Android S.
#[prost(bool, optional, tag = "4")]
pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
/// Provides a breakdown of time in state for various subsystems.
/// Available from Android U.
#[prost(bool, optional, tag = "5")]
pub collect_entity_state_residency: ::core::option::Option<bool>,
}
/// Nested message and enum types in `AndroidPowerConfig`.
pub mod android_power_config {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum BatteryCounters {
BatteryCounterUnspecified = 0,
/// Coulomb counter.
BatteryCounterCharge = 1,
/// Charge (%).
BatteryCounterCapacityPercent = 2,
/// Instantaneous current.
BatteryCounterCurrent = 3,
/// Avg current.
BatteryCounterCurrentAvg = 4,
/// Instantaneous voltage.
BatteryCounterVoltage = 5,
}
impl BatteryCounters {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
Self::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
Self::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
Self::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
Self::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
Self::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"BATTERY_COUNTER_UNSPECIFIED" => Some(Self::BatteryCounterUnspecified),
"BATTERY_COUNTER_CHARGE" => Some(Self::BatteryCounterCharge),
"BATTERY_COUNTER_CAPACITY_PERCENT" => {
Some(Self::BatteryCounterCapacityPercent)
}
"BATTERY_COUNTER_CURRENT" => Some(Self::BatteryCounterCurrent),
"BATTERY_COUNTER_CURRENT_AVG" => Some(Self::BatteryCounterCurrentAvg),
"BATTERY_COUNTER_VOLTAGE" => Some(Self::BatteryCounterVoltage),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcessStatsConfig {
#[prost(
enumeration = "process_stats_config::Quirks",
repeated,
packed = "false",
tag = "1"
)]
pub quirks: ::prost::alloc::vec::Vec<i32>,
/// If enabled all processes will be scanned and dumped when the trace starts.
#[prost(bool, optional, tag = "2")]
pub scan_all_processes_on_start: ::core::option::Option<bool>,
/// If enabled thread names are also recoded (this is redundant if sched_switch
/// is enabled).
#[prost(bool, optional, tag = "3")]
pub record_thread_names: ::core::option::Option<bool>,
/// If > 0 samples counters (see process_stats.proto) from
/// /proc/pid/status and oom_score_adj every X ms.
/// It will also sample /proc/pid/smaps_rollup if scan_smaps_rollup = true.
/// This is required to be > 100ms to avoid excessive CPU usage.
#[prost(uint32, optional, tag = "4")]
pub proc_stats_poll_ms: ::core::option::Option<u32>,
/// This is required to be either = 0 or a multiple of |proc_stats_poll_ms|
/// (default: |proc_stats_poll_ms|). If = 0, will be set to
/// |proc_stats_poll_ms|. Non-multiples will be rounded down to the nearest
/// multiple.
#[prost(uint32, optional, tag = "6")]
pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
/// Niche feature: If true this will resolve file descriptors for each process
/// so these can be mapped to their actual device or file.
/// Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled or
/// new fds opened after initially scanning a process will not be
/// recognized.
#[prost(bool, optional, tag = "9")]
pub resolve_process_fds: ::core::option::Option<bool>,
/// If true, output will include memory stats from /proc/pid/smaps_rollup.
#[prost(bool, optional, tag = "10")]
pub scan_smaps_rollup: ::core::option::Option<bool>,
/// If true: process descriptions will include process age (starttime in
/// /proc/pid/stat).
/// Introduced in: perfetto v44.
#[prost(bool, optional, tag = "11")]
pub record_process_age: ::core::option::Option<bool>,
/// If true and |proc_stats_poll_ms| is true, process stats will include time
/// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
/// Introduced in: perfetto v44.
#[prost(bool, optional, tag = "12")]
pub record_process_runtime: ::core::option::Option<bool>,
}
/// Nested message and enum types in `ProcessStatsConfig`.
pub mod process_stats_config {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Quirks {
Unspecified = 0,
/// This has been deprecated and ignored as per 2018-05-01. Full scan at
/// startup is now disabled by default and can be re-enabled using the
/// |scan_all_processes_on_start| arg.
DisableInitialDump = 1,
DisableOnDemand = 2,
}
impl Quirks {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "QUIRKS_UNSPECIFIED",
Self::DisableInitialDump => "DISABLE_INITIAL_DUMP",
Self::DisableOnDemand => "DISABLE_ON_DEMAND",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"QUIRKS_UNSPECIFIED" => Some(Self::Unspecified),
"DISABLE_INITIAL_DUMP" => Some(Self::DisableInitialDump),
"DISABLE_ON_DEMAND" => Some(Self::DisableOnDemand),
_ => None,
}
}
}
}
/// Configuration for go/heapprofd.
/// Next id: 28
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HeapprofdConfig {
/// Sampling rate for all heaps not specified via heap_sampling_intervals.
///
/// These are:
/// * All heaps if heap_sampling_intervals is empty.
/// * Those profiled due to all_heaps and not named in heaps if
/// heap_sampling_intervals is not empty.
/// * The implicit libc.malloc heap if heaps is empty.
///
/// Set to 1 for perfect accuracy.
/// Otherwise, sample every sample_interval_bytes on average.
///
/// See
/// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
/// for more details.
///
/// BUGS
/// Before Android 12, setting this to 0 would crash the target process.
///
/// N.B. This must be explicitly set to a non-zero value for all heaps (with
/// this field or with heap_sampling_intervals), otherwise the producer will
/// not start.
#[prost(uint64, optional, tag = "1")]
pub sampling_interval_bytes: ::core::option::Option<u64>,
/// If less than the given numbers of bytes are left free in the shared
/// memory buffer, increase sampling interval by a factor of two.
/// Adaptive sampling is disabled when set to 0.
#[prost(uint64, optional, tag = "24")]
pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
/// Stop doubling the sampling_interval once the sampling interval has reached
/// this value.
#[prost(uint64, optional, tag = "25")]
pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
/// E.g. surfaceflinger, com.android.phone
/// This input is normalized in the following way: if it contains slashes,
/// everything up to the last slash is discarded. If it contains "@",
/// everything after the first @ is discared.
/// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
/// This transformation is also applied to the processes' command lines when
/// matching.
#[prost(string, repeated, tag = "2")]
pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// For watermark based triggering or local debugging.
#[prost(uint64, repeated, packed = "false", tag = "4")]
pub pid: ::prost::alloc::vec::Vec<u64>,
/// Only profile target if it was installed by one of the packages given.
/// Special values are:
/// * @system: installed on the system partition
/// * @product: installed on the product partition
/// * @null: sideloaded
/// Supported on Android 12+.
#[prost(string, repeated, tag = "26")]
pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
/// "malloc".
///
/// Introduced in Android 12.
#[prost(string, repeated, tag = "20")]
pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
/// combination with all_heaps;
///
/// Introduced in Android 12.
#[prost(string, repeated, tag = "27")]
pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(bool, optional, tag = "23")]
pub stream_allocations: ::core::option::Option<bool>,
/// If given, needs to be the same length as heaps and gives the sampling
/// interval for the respective entry in heaps.
///
/// Otherwise, sampling_interval_bytes is used.
///
/// It is recommended to set sampling_interval_bytes to a reasonable default
/// value when using this, as a value of 0 for sampling_interval_bytes will
/// crash the target process before Android 12.
///
/// Introduced in Android 12.
///
/// All values must be non-zero or the producer will not start.
#[prost(uint64, repeated, packed = "false", tag = "22")]
pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
/// Sample all heaps registered by target process. Introduced in Android 12.
#[prost(bool, optional, tag = "21")]
pub all_heaps: ::core::option::Option<bool>,
/// Profile all processes eligible for profiling on the system.
/// See
/// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
/// for which processes are eligible.
///
/// On unmodified userdebug builds, this will lead to system crashes. Zygote
/// will crash when trying to launch a new process as it will have an
/// unexpected open socket to heapprofd.
///
/// heapprofd will likely be overloaded by the amount of data for low
/// sampling intervals.
#[prost(bool, optional, tag = "5")]
pub all: ::core::option::Option<bool>,
/// Do not profile processes whose anon RSS + swap < given value.
/// Introduced in Android 11.
#[prost(uint32, optional, tag = "15")]
pub min_anonymous_memory_kb: ::core::option::Option<u32>,
/// Stop profile if heapprofd memory usage goes beyond the given value.
/// Introduced in Android 11.
#[prost(uint32, optional, tag = "16")]
pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
/// Stop profile if heapprofd CPU time since start of this data-source
/// goes beyond given value.
/// Introduced in Android 11.
#[prost(uint64, optional, tag = "17")]
pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
/// Do not emit function names for mappings starting with this prefix.
/// E.g. /system to not emit symbols for any system libraries.
#[prost(string, repeated, tag = "7")]
pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Dump at a predefined interval.
#[prost(message, optional, tag = "6")]
pub continuous_dump_config: ::core::option::Option<
heapprofd_config::ContinuousDumpConfig,
>,
/// Size of the shared memory buffer between the profiled processes and
/// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
/// MiB.
///
/// Needs to be:
/// * at least 8192,
/// * a power of two,
/// * a multiple of 4096.
#[prost(uint64, optional, tag = "8")]
pub shmem_size_bytes: ::core::option::Option<u64>,
/// When the shmem buffer is full, block the client instead of ending the
/// trace. Use with caution as this will significantly slow down the target
/// process.
#[prost(bool, optional, tag = "9")]
pub block_client: ::core::option::Option<bool>,
/// If set, stop the trace session after blocking the client for this
/// timeout. Needs to be larger than 100 us, otherwise no retries are done.
/// Introduced in Android 11.
#[prost(uint32, optional, tag = "14")]
pub block_client_timeout_us: ::core::option::Option<u32>,
/// Do not profile processes from startup, only match already running
/// processes.
///
/// Can not be set at the same time as no_running.
/// Introduced in Android 11.
#[prost(bool, optional, tag = "10")]
pub no_startup: ::core::option::Option<bool>,
/// Do not profile running processes. Only match processes on startup.
///
/// Can not be set at the same time as no_startup.
/// Introduced in Android 11.
#[prost(bool, optional, tag = "11")]
pub no_running: ::core::option::Option<bool>,
/// Cause heapprofd to emit a single dump at the end, showing the memory usage
/// at the point in time when the sampled heap usage of the process was at its
/// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
/// self_allocated and self_freed to not be set.
/// Introduced in Android 11.
#[prost(bool, optional, tag = "13")]
pub dump_at_max: ::core::option::Option<bool>,
/// Escape hatch if the session is being torn down because of a forked child
/// that shares memory space, but is not correctly identified as a vforked
/// child.
/// Introduced in Android 11.
#[prost(bool, optional, tag = "18")]
pub disable_fork_teardown: ::core::option::Option<bool>,
/// We try to automatically detect when a target applicatation vforks but then
/// does a memory allocation (or free). This auto-detection can be disabled
/// with this.
/// Introduced in Android 11.
#[prost(bool, optional, tag = "19")]
pub disable_vfork_detection: ::core::option::Option<bool>,
}
/// Nested message and enum types in `HeapprofdConfig`.
pub mod heapprofd_config {
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ContinuousDumpConfig {
/// ms to wait before first dump.
#[prost(uint32, optional, tag = "5")]
pub dump_phase_ms: ::core::option::Option<u32>,
/// ms to wait between following dumps.
#[prost(uint32, optional, tag = "6")]
pub dump_interval_ms: ::core::option::Option<u32>,
}
}
/// Configuration for managed app heap graph snapshots.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct JavaHprofConfig {
/// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
/// comm string). The semantics of this field were changed since its original
/// introduction.
///
/// On Android T+ (13+), this field can specify a single wildcard (*), and
/// the profiler will attempt to match it in two possible ways:
/// * if the pattern starts with a '/', then it is matched against the first
/// segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
/// "/bin/echo".
/// * otherwise the pattern is matched against the part of argv0
/// corresponding to the binary name (this is unrelated to /proc/pid/exe).
/// For example "echo" would match "/bin/echo".
///
/// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
/// normalized prior to an exact string comparison. Normalization is as
/// follows: (1) trim everything beyond the first null or "@" byte; (2) if
/// the string contains forward slashes, trim everything up to and including
/// the last one.
///
/// Implementation note: in either case, at most 511 characters of cmdline
/// are considered.
#[prost(string, repeated, tag = "1")]
pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// For watermark based triggering or local debugging.
#[prost(uint64, repeated, packed = "false", tag = "2")]
pub pid: ::prost::alloc::vec::Vec<u64>,
/// Only profile target if it was installed by one of the packages given.
/// Special values are:
/// * @system: installed on the system partition
/// * @product: installed on the product partition
/// * @null: sideloaded
/// Supported on Android 12+.
#[prost(string, repeated, tag = "7")]
pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Dump at a predefined interval.
#[prost(message, optional, tag = "3")]
pub continuous_dump_config: ::core::option::Option<
java_hprof_config::ContinuousDumpConfig,
>,
/// Do not profile processes whose anon RSS + swap < given value.
#[prost(uint32, optional, tag = "4")]
pub min_anonymous_memory_kb: ::core::option::Option<u32>,
/// Include the process' /proc/self/smaps.
/// This only shows maps that:
/// * start with /system
/// * start with /vendor
/// * start with /data/app
/// * contain "extracted in memory from Y", where Y matches any of the above
#[prost(bool, optional, tag = "5")]
pub dump_smaps: ::core::option::Option<bool>,
/// Exclude objects of the following types from the profile. This can be
/// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
#[prost(string, repeated, tag = "6")]
pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// Nested message and enum types in `JavaHprofConfig`.
pub mod java_hprof_config {
/// If dump_interval_ms != 0, the following configuration is used.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ContinuousDumpConfig {
/// ms to wait before first continuous dump.
/// A dump is always created at the beginning of the trace.
#[prost(uint32, optional, tag = "1")]
pub dump_phase_ms: ::core::option::Option<u32>,
/// ms to wait between following dumps.
#[prost(uint32, optional, tag = "2")]
pub dump_interval_ms: ::core::option::Option<u32>,
/// If true, scans all the processes to find `process_cmdline` and filter by
/// `min_anonymous_memory_kb` only at data source start. Default on Android
/// S-.
///
/// If false, rescans all the processes to find on every dump. Default on
/// Android T+.
#[prost(bool, optional, tag = "3")]
pub scan_pids_only_on_start: ::core::option::Option<bool>,
}
}
/// Next id: 12
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PerfEvents {}
/// Nested message and enum types in `PerfEvents`.
pub mod perf_events {
/// What event to sample on, and how often. Commented from the perspective of
/// its use in |PerfEventConfig|.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Timebase {
/// If set, samples will be timestamped with the given clock.
/// If unset, the clock is chosen by the implementation.
/// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
/// used for hardware events (due to interrupt safety), for which the
/// recommendation is to use one of the monotonic clocks.
#[prost(enumeration = "PerfClock", optional, tag = "11")]
pub timestamp_clock: ::core::option::Option<i32>,
/// Optional arbitrary name for the event, to identify it in the parsed
/// trace. Does *not* affect the profiling itself. If unset, the trace
/// parser will choose a suitable name.
#[prost(string, optional, tag = "10")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
/// How often the per-cpu sampling will occur. Not guaranteed to be honored
/// as the kernel can throttle the sampling rate if it's too high.
/// If unset, an implementation-defined default is used.
#[prost(oneof = "timebase::Interval", tags = "2, 1")]
pub interval: ::core::option::Option<timebase::Interval>,
/// Counting event to use as a timebase for the sampling.
/// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
/// which is what you usually want.
/// See common/perf_events.proto for the definitions.
#[prost(oneof = "timebase::Event", tags = "4, 3, 5")]
pub event: ::core::option::Option<timebase::Event>,
}
/// Nested message and enum types in `Timebase`.
pub mod timebase {
/// How often the per-cpu sampling will occur. Not guaranteed to be honored
/// as the kernel can throttle the sampling rate if it's too high.
/// If unset, an implementation-defined default is used.
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum Interval {
/// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
/// same as 1/period.
/// Details: the actual sampling will still be based on a period, but the
/// kernel will dynamically adjust it based on the observed event rate, to
/// approximate this frequency. Works best with steady-rate events like
/// timers.
#[prost(uint64, tag = "2")]
Frequency(u64),
/// Per-cpu sampling will occur every |period| counts of |event|.
/// Prefer |frequency| by default, as it's easier to oversample with a
/// fixed period.
#[prost(uint64, tag = "1")]
Period(u64),
}
/// Counting event to use as a timebase for the sampling.
/// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
/// which is what you usually want.
/// See common/perf_events.proto for the definitions.
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Event {
#[prost(enumeration = "super::Counter", tag = "4")]
Counter(i32),
#[prost(message, tag = "3")]
Tracepoint(super::Tracepoint),
#[prost(message, tag = "5")]
RawEvent(super::RawEvent),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Tracepoint {
/// Group and name for the tracepoint, acceptable forms:
/// * "sched/sched_switch"
/// * "sched:sched_switch"
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
/// Optional field-level filter for the tracepoint. Only events matching this
/// filter will be counted (and therefore contribute to the sampling period).
/// Example: "prev_pid >= 42 && next_pid == 0".
/// For full syntax, see kernel documentation on "Event filtering":
/// <https://www.kernel.org/doc/Documentation/trace/events.txt>
#[prost(string, optional, tag = "2")]
pub filter: ::core::option::Option<::prost::alloc::string::String>,
}
/// Syscall-level description of the event, propagated to the perf_event_attr
/// struct. Primarily for local use-cases, since the event availability and
/// encoding is hardware-specific.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct RawEvent {
#[prost(uint32, optional, tag = "1")]
pub r#type: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub config: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub config1: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub config2: ::core::option::Option<u64>,
}
/// Builtin counter names from the uapi header. Commented with their perf tool
/// aliases.
/// TODO(rsavitski): consider generating enums for cache events (should be
/// finite), and generally make this list as extensive as possible. Excluding
/// things like dynamic PMUs since those don't fit into a static enum.
/// Next id: 21
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Counter {
UnknownCounter = 0,
/// cpu-clock
SwCpuClock = 1,
/// page-faults, faults
SwPageFaults = 2,
/// task-clock
SwTaskClock = 3,
/// context-switches, cs
SwContextSwitches = 4,
/// cpu-migrations, migrations
SwCpuMigrations = 5,
/// minor-faults
SwPageFaultsMin = 6,
/// major-faults
SwPageFaultsMaj = 7,
/// alignment-faults
SwAlignmentFaults = 8,
/// emulation-faults
SwEmulationFaults = 9,
/// dummy
SwDummy = 20,
/// cpu-cycles, cycles
HwCpuCycles = 10,
/// instructions
HwInstructions = 11,
/// cache-references
HwCacheReferences = 12,
/// cache-misses
HwCacheMisses = 13,
/// branch-instructions, branches
HwBranchInstructions = 14,
/// branch-misses
HwBranchMisses = 15,
/// bus-cycles
HwBusCycles = 16,
/// stalled-cycles-frontend, idle-cycles-frontend
HwStalledCyclesFrontend = 17,
/// stalled-cycles-backend, idle-cycles-backend
HwStalledCyclesBackend = 18,
/// ref-cycles
HwRefCpuCycles = 19,
}
impl Counter {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::UnknownCounter => "UNKNOWN_COUNTER",
Self::SwCpuClock => "SW_CPU_CLOCK",
Self::SwPageFaults => "SW_PAGE_FAULTS",
Self::SwTaskClock => "SW_TASK_CLOCK",
Self::SwContextSwitches => "SW_CONTEXT_SWITCHES",
Self::SwCpuMigrations => "SW_CPU_MIGRATIONS",
Self::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
Self::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
Self::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
Self::SwEmulationFaults => "SW_EMULATION_FAULTS",
Self::SwDummy => "SW_DUMMY",
Self::HwCpuCycles => "HW_CPU_CYCLES",
Self::HwInstructions => "HW_INSTRUCTIONS",
Self::HwCacheReferences => "HW_CACHE_REFERENCES",
Self::HwCacheMisses => "HW_CACHE_MISSES",
Self::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
Self::HwBranchMisses => "HW_BRANCH_MISSES",
Self::HwBusCycles => "HW_BUS_CYCLES",
Self::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
Self::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
Self::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNKNOWN_COUNTER" => Some(Self::UnknownCounter),
"SW_CPU_CLOCK" => Some(Self::SwCpuClock),
"SW_PAGE_FAULTS" => Some(Self::SwPageFaults),
"SW_TASK_CLOCK" => Some(Self::SwTaskClock),
"SW_CONTEXT_SWITCHES" => Some(Self::SwContextSwitches),
"SW_CPU_MIGRATIONS" => Some(Self::SwCpuMigrations),
"SW_PAGE_FAULTS_MIN" => Some(Self::SwPageFaultsMin),
"SW_PAGE_FAULTS_MAJ" => Some(Self::SwPageFaultsMaj),
"SW_ALIGNMENT_FAULTS" => Some(Self::SwAlignmentFaults),
"SW_EMULATION_FAULTS" => Some(Self::SwEmulationFaults),
"SW_DUMMY" => Some(Self::SwDummy),
"HW_CPU_CYCLES" => Some(Self::HwCpuCycles),
"HW_INSTRUCTIONS" => Some(Self::HwInstructions),
"HW_CACHE_REFERENCES" => Some(Self::HwCacheReferences),
"HW_CACHE_MISSES" => Some(Self::HwCacheMisses),
"HW_BRANCH_INSTRUCTIONS" => Some(Self::HwBranchInstructions),
"HW_BRANCH_MISSES" => Some(Self::HwBranchMisses),
"HW_BUS_CYCLES" => Some(Self::HwBusCycles),
"HW_STALLED_CYCLES_FRONTEND" => Some(Self::HwStalledCyclesFrontend),
"HW_STALLED_CYCLES_BACKEND" => Some(Self::HwStalledCyclesBackend),
"HW_REF_CPU_CYCLES" => Some(Self::HwRefCpuCycles),
_ => None,
}
}
}
/// Subset of clocks that is supported by perf timestamping.
/// CLOCK_TAI is excluded since it's not expected to be used in practice, but
/// would require additions to the trace clock synchronisation logic.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum PerfClock {
UnknownPerfClock = 0,
Realtime = 1,
Monotonic = 2,
MonotonicRaw = 3,
Boottime = 4,
}
impl PerfClock {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
Self::Realtime => "PERF_CLOCK_REALTIME",
Self::Monotonic => "PERF_CLOCK_MONOTONIC",
Self::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
Self::Boottime => "PERF_CLOCK_BOOTTIME",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNKNOWN_PERF_CLOCK" => Some(Self::UnknownPerfClock),
"PERF_CLOCK_REALTIME" => Some(Self::Realtime),
"PERF_CLOCK_MONOTONIC" => Some(Self::Monotonic),
"PERF_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
"PERF_CLOCK_BOOTTIME" => Some(Self::Boottime),
_ => None,
}
}
}
}
/// Additional events associated with a leader.
/// Configuration is similar to Timebase event. Because data acquisition is
/// driven by the leader there is no option to configure the clock or the
/// frequency.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FollowerEvent {
#[prost(string, optional, tag = "4")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(oneof = "follower_event::Event", tags = "1, 2, 3")]
pub event: ::core::option::Option<follower_event::Event>,
}
/// Nested message and enum types in `FollowerEvent`.
pub mod follower_event {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Event {
#[prost(enumeration = "super::perf_events::Counter", tag = "1")]
Counter(i32),
#[prost(message, tag = "2")]
Tracepoint(super::perf_events::Tracepoint),
#[prost(message, tag = "3")]
RawEvent(super::perf_events::RawEvent),
}
}
/// Configuration for the traced_perf profiler.
///
/// Example config for basic cpu profiling:
/// perf_event_config {
/// timebase {
/// frequency: 80
/// }
/// callstack_sampling {
/// scope {
/// target_cmdline: "surfaceflinger"
/// target_cmdline: "system_server"
/// }
/// kernel_frames: true
/// }
/// }
///
/// Next id: 20
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PerfEventConfig {
/// What event to sample on, and how often.
/// Defined in common/perf_events.proto.
#[prost(message, optional, tag = "15")]
pub timebase: ::core::option::Option<perf_events::Timebase>,
/// Other events associated with the leader described in the timebase.
#[prost(message, repeated, tag = "19")]
pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
/// If set, the profiler will sample userspace processes' callstacks at the
/// interval specified by the |timebase|.
/// If unset, the profiler will record only the event counts.
#[prost(message, optional, tag = "16")]
pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
/// How often the per-cpu ring buffers are read by the producer.
/// If unset, an implementation-defined default is used.
#[prost(uint32, optional, tag = "8")]
pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
/// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
/// kernel. If set, must be a power of two.
/// If unset, an implementation-defined default is used.
#[prost(uint32, optional, tag = "3")]
pub ring_buffer_pages: ::core::option::Option<u32>,
/// Drop samples if the heap memory held by the samples in the unwinder queue
/// is above the given limit. This counts the memory across all concurrent data
/// sources (not just this one's), and there is no fairness guarantee - the
/// whole quota might be used up by a concurrent source.
#[prost(uint64, optional, tag = "17")]
pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
/// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
/// footprint exceeds this value.
#[prost(uint32, optional, tag = "13")]
pub max_daemon_memory_kb: ::core::option::Option<u32>,
/// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
/// sampled process. This is primarily for Android, where this lookup is
/// asynchronous. As long as the producer is waiting, the associated samples
/// will be kept enqueued (putting pressure on the capacity of the shared
/// unwinding queue). Once a lookup for a process expires, all associated
/// samples are discarded. However, if the lookup still succeeds after the
/// timeout, future samples will be handled normally.
/// If unset, an implementation-defined default is used.
#[prost(uint32, optional, tag = "9")]
pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
/// Optional period for clearing state cached by the unwinder. This is a heavy
/// operation that is only necessary for traces that target a wide set of
/// processes, and require the memory footprint to be reset periodically.
/// If unset, the cached state will not be cleared.
#[prost(uint32, optional, tag = "10")]
pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
/// If set, only profile target if it was installed by a package with one of
/// these names. Special values:
/// * "@system": installed on the system partition
/// * "@product": installed on the product partition
/// * "@null": sideloaded
/// Supported on Android 12+.
#[prost(string, repeated, tag = "18")]
pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Note: legacy configs had to set |all_cpus| to true to pass parsing.
/// We rely on this to detect such configs.
#[prost(bool, optional, tag = "1")]
pub all_cpus: ::core::option::Option<bool>,
#[prost(uint32, optional, tag = "2")]
pub sampling_frequency: ::core::option::Option<u32>,
#[prost(bool, optional, tag = "12")]
pub kernel_frames: ::core::option::Option<bool>,
#[prost(int32, repeated, packed = "false", tag = "4")]
pub target_pid: ::prost::alloc::vec::Vec<i32>,
#[prost(string, repeated, tag = "5")]
pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(int32, repeated, packed = "false", tag = "6")]
pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
#[prost(string, repeated, tag = "7")]
pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "11")]
pub additional_cmdline_count: ::core::option::Option<u32>,
}
/// Nested message and enum types in `PerfEventConfig`.
pub mod perf_event_config {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CallstackSampling {
/// Defines a set of processes for which samples are retained/skipped. If
/// unset, all samples are kept, but beware that it will be very heavy on the
/// stack unwinder, which might start dropping samples due to overload.
#[prost(message, optional, tag = "1")]
pub scope: ::core::option::Option<Scope>,
/// If true, callstacks will include the kernel-space frames. Such frames can
/// be identified by a magical "kernel" string as their mapping name.
/// Requires traced_perf to be running as root, or kptr_restrict to have been
/// manually unrestricted. On Android, the platform should do the right thing
/// on debug builds.
/// This does *not* disclose KASLR, as only the function names are emitted.
#[prost(bool, optional, tag = "2")]
pub kernel_frames: ::core::option::Option<bool>,
/// Whether to record and unwind userspace callstacks. If unset, defaults to
/// including userspace (UNWIND_DWARF) both for backwards compatibility and
/// as the most common default (this defaulting is only applicable if the
/// outer CallstackSampling message is explicitly set).
#[prost(enumeration = "UnwindMode", optional, tag = "3")]
pub user_frames: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Scope {
/// Process ID (TGID) allowlist. If this list is not empty, only matching
/// samples will be retained. If multiple allow/deny-lists are
/// specified by the config, then all of them are evaluated for each sampled
/// process.
#[prost(int32, repeated, packed = "false", tag = "1")]
pub target_pid: ::prost::alloc::vec::Vec<i32>,
/// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
/// comm string). The semantics of this field were changed since its original
/// introduction.
///
/// On Android T+ (13+), this field can specify a single wildcard (*), and
/// the profiler will attempt to match it in two possible ways:
/// * if the pattern starts with a '/', then it is matched against the first
/// segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
/// "/bin/echo".
/// * otherwise the pattern is matched against the part of argv0
/// corresponding to the binary name (this is unrelated to /proc/pid/exe).
/// For example "echo" would match "/bin/echo".
///
/// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
/// normalized prior to an exact string comparison. Normalization is as
/// follows: (1) trim everything beyond the first null or "@" byte; (2) if
/// the string contains forward slashes, trim everything up to and including
/// the last one.
///
/// Implementation note: in either case, at most 511 characters of cmdline
/// are considered.
#[prost(string, repeated, tag = "2")]
pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// List of excluded pids.
#[prost(int32, repeated, packed = "false", tag = "3")]
pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
/// List of excluded cmdlines. See description of |target_cmdline| for how
/// this is handled.
#[prost(string, repeated, tag = "4")]
pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Number of additional command lines to sample. Only those which are
/// neither explicitly included nor excluded will be considered. Processes
/// are accepted on a first come, first served basis.
#[prost(uint32, optional, tag = "5")]
pub additional_cmdline_count: ::core::option::Option<u32>,
/// If set to N, all encountered processes will be put into one of the N
/// possible bins, and only one randomly-chosen bin will be selected for
/// unwinding. The binning is simply "pid % N", under the assumption that
/// low-order bits of pids are roughly uniformly distributed. Other explicit
/// inclusions/exclusions in this |Scope| message are still respected.
///
/// The profiler will report the chosen shard in PerfSampleDefaults, and the
/// values will be queryable in trace processor under the "stats" table as
/// "perf_process_shard_count" and "perf_chosen_process_shard".
///
/// NB: all data sources in a config that set |process_shard_count| must set
/// it to the same value. The profiler will choose one bin for all those data
/// sources.
#[prost(uint32, optional, tag = "6")]
pub process_shard_count: ::core::option::Option<u32>,
}
/// Userspace unwinding mode. A possible future addition is kernel-unwound
/// callchains for frame pointer based systems.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum UnwindMode {
UnwindUnknown = 0,
/// Do not unwind userspace:
UnwindSkip = 1,
/// Use libunwindstack (default):
UnwindDwarf = 2,
/// Use userspace frame pointer unwinder:
UnwindFramePointer = 3,
}
impl UnwindMode {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::UnwindUnknown => "UNWIND_UNKNOWN",
Self::UnwindSkip => "UNWIND_SKIP",
Self::UnwindDwarf => "UNWIND_DWARF",
Self::UnwindFramePointer => "UNWIND_FRAME_POINTER",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNWIND_UNKNOWN" => Some(Self::UnwindUnknown),
"UNWIND_SKIP" => Some(Self::UnwindSkip),
"UNWIND_DWARF" => Some(Self::UnwindDwarf),
"UNWIND_FRAME_POINTER" => Some(Self::UnwindFramePointer),
_ => None,
}
}
}
}
/// This file is named 'statsd_tracing_config.proto' rather than
/// 'statsd_config.proto' (which would be more consistent with the other
/// config protos) so it doesn't show up and confuse folks looking for
/// the existing statsd_config.proto for configuring statsd itself.
/// Same for the config proto itself.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StatsdTracingConfig {
/// This is for the common case of the atom id being known in the enum AtomId.
#[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
/// Escape hatch for Atom IDs that are not yet in the AtomId enum
/// (e.g. non-upstream atoms that don't exist in AOSP).
#[prost(int32, repeated, packed = "false", tag = "2")]
pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
#[prost(message, repeated, tag = "3")]
pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StatsdPullAtomConfig {
#[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
#[prost(int32, repeated, packed = "false", tag = "2")]
pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
#[prost(int32, optional, tag = "3")]
pub pull_frequency_ms: ::core::option::Option<i32>,
#[prost(string, repeated, tag = "4")]
pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// This file defines the configuration for the Linux /proc poller data source,
/// which injects counters in the trace.
/// Counters that are needed in the trace must be explicitly listed in the
/// *_counters fields. This is to avoid spamming the trace with all counters
/// at all times.
/// The sampling rate is configurable. All polling rates (*_period_ms) need
/// to be integer multiples of each other.
/// OK: \[10ms, 10ms, 10ms\], \[10ms, 20ms, 10ms\], \[10ms, 20ms, 60ms\]
/// Not OK: \[10ms, 10ms, 11ms\], \[10ms, 15ms, 20ms\]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SysStatsConfig {
/// Polls /proc/meminfo every X ms, if non-zero.
/// This is required to be > 10ms to avoid excessive CPU usage.
/// Cost: 0.3 ms \[read\] + 0.07 ms \[parse + trace injection\]
#[prost(uint32, optional, tag = "1")]
pub meminfo_period_ms: ::core::option::Option<u32>,
/// If empty all known counters are reported. Otherwise, only the counters
/// specified below are reported.
#[prost(enumeration = "MeminfoCounters", repeated, packed = "false", tag = "2")]
pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
/// Polls /proc/vmstat every X ms, if non-zero.
/// This is required to be > 10ms to avoid excessive CPU usage.
/// Cost: 0.2 ms \[read\] + 0.3 ms \[parse + trace injection\]
#[prost(uint32, optional, tag = "3")]
pub vmstat_period_ms: ::core::option::Option<u32>,
#[prost(enumeration = "VmstatCounters", repeated, packed = "false", tag = "4")]
pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
/// Pols /proc/stat every X ms, if non-zero.
/// This is required to be > 10ms to avoid excessive CPU usage.
/// Cost: 4.1 ms \[read\] + 1.9 ms \[parse + trace injection\]
#[prost(uint32, optional, tag = "5")]
pub stat_period_ms: ::core::option::Option<u32>,
#[prost(
enumeration = "sys_stats_config::StatCounters",
repeated,
packed = "false",
tag = "6"
)]
pub stat_counters: ::prost::alloc::vec::Vec<i32>,
/// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
/// This is required to be > 10ms to avoid excessive CPU usage.
/// This option can be used to record unchanging values.
/// Updates from frequency changes can come from ftrace/set_clock_rate.
#[prost(uint32, optional, tag = "7")]
pub devfreq_period_ms: ::core::option::Option<u32>,
/// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
/// This is required to be > 10ms to avoid excessive CPU usage.
#[prost(uint32, optional, tag = "8")]
pub cpufreq_period_ms: ::core::option::Option<u32>,
/// Polls /proc/buddyinfo every X ms, if non-zero.
/// This is required to be > 10ms to avoid excessive CPU usage.
#[prost(uint32, optional, tag = "9")]
pub buddyinfo_period_ms: ::core::option::Option<u32>,
/// Polls /proc/diskstats every X ms, if non-zero.
/// This is required to be > 10ms to avoid excessive CPU usage.
#[prost(uint32, optional, tag = "10")]
pub diskstat_period_ms: ::core::option::Option<u32>,
/// Polls /proc/pressure/* every X ms, if non-zero.
/// This is required to be > 10ms to avoid excessive CPU usage.
#[prost(uint32, optional, tag = "11")]
pub psi_period_ms: ::core::option::Option<u32>,
/// Polls /sys/class/thermal/* every X ms, if non-zero.
/// This is required to be > 10ms to avoid excessive CPU usage.
#[prost(uint32, optional, tag = "12")]
pub thermal_period_ms: ::core::option::Option<u32>,
/// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
/// This is required to be > 10ms to avoid excessive CPU usage.
#[prost(uint32, optional, tag = "13")]
pub cpuidle_period_ms: ::core::option::Option<u32>,
/// Polls device-specific GPU frequency info every X ms, if non-zero.
/// This is required to be > 10ms to avoid excessive CPU usage.
#[prost(uint32, optional, tag = "14")]
pub gpufreq_period_ms: ::core::option::Option<u32>,
}
/// Nested message and enum types in `SysStatsConfig`.
pub mod sys_stats_config {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum StatCounters {
StatUnspecified = 0,
StatCpuTimes = 1,
StatIrqCounts = 2,
StatSoftirqCounts = 3,
StatForkCount = 4,
}
impl StatCounters {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::StatUnspecified => "STAT_UNSPECIFIED",
Self::StatCpuTimes => "STAT_CPU_TIMES",
Self::StatIrqCounts => "STAT_IRQ_COUNTS",
Self::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
Self::StatForkCount => "STAT_FORK_COUNT",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"STAT_UNSPECIFIED" => Some(Self::StatUnspecified),
"STAT_CPU_TIMES" => Some(Self::StatCpuTimes),
"STAT_IRQ_COUNTS" => Some(Self::StatIrqCounts),
"STAT_SOFTIRQ_COUNTS" => Some(Self::StatSoftirqCounts),
"STAT_FORK_COUNT" => Some(Self::StatForkCount),
_ => None,
}
}
}
}
/// This data-source does a one-off recording of system information when
/// the trace starts.
/// Currently this includes:
/// - Values of
/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
/// datasource has no configuration options at present.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SystemInfoConfig {}
/// The configuration for a fake producer used in tests.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TestConfig {
/// The number of messages the fake producer should send.
#[prost(uint32, optional, tag = "1")]
pub message_count: ::core::option::Option<u32>,
/// The maximum number of messages which should be sent each second.
/// The actual obserced speed may be lower if the producer is unable to
/// work fast enough.
/// If this is zero or unset, the producer will send as fast as possible.
#[prost(uint32, optional, tag = "2")]
pub max_messages_per_second: ::core::option::Option<u32>,
/// The seed value for a simple multiplicative congruential pseudo-random
/// number sequence.
#[prost(uint32, optional, tag = "3")]
pub seed: ::core::option::Option<u32>,
/// The size of each message in bytes. Should be greater than or equal 5 to
/// account for the number of bytes needed to encode the random number and a
/// null byte for the string.
#[prost(uint32, optional, tag = "4")]
pub message_size: ::core::option::Option<u32>,
/// Whether the producer should send a event batch when the data source is
/// is initially registered.
#[prost(bool, optional, tag = "5")]
pub send_batch_on_register: ::core::option::Option<bool>,
#[prost(message, optional, tag = "6")]
pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
}
/// Nested message and enum types in `TestConfig`.
pub mod test_config {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DummyFields {
#[prost(uint32, optional, tag = "1")]
pub field_uint32: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub field_int32: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "3")]
pub field_uint64: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "4")]
pub field_int64: ::core::option::Option<i64>,
#[prost(fixed64, optional, tag = "5")]
pub field_fixed64: ::core::option::Option<u64>,
#[prost(sfixed64, optional, tag = "6")]
pub field_sfixed64: ::core::option::Option<i64>,
#[prost(fixed32, optional, tag = "7")]
pub field_fixed32: ::core::option::Option<u32>,
#[prost(sfixed32, optional, tag = "8")]
pub field_sfixed32: ::core::option::Option<i32>,
#[prost(double, optional, tag = "9")]
pub field_double: ::core::option::Option<f64>,
#[prost(float, optional, tag = "10")]
pub field_float: ::core::option::Option<f32>,
#[prost(sint64, optional, tag = "11")]
pub field_sint64: ::core::option::Option<i64>,
#[prost(sint32, optional, tag = "12")]
pub field_sint32: ::core::option::Option<i32>,
#[prost(string, optional, tag = "13")]
pub field_string: ::core::option::Option<::prost::alloc::string::String>,
#[prost(bytes = "vec", optional, tag = "14")]
pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
}
/// The following fields define the set of enabled trace categories. Each list
/// item is a glob.
///
/// To determine if category is enabled, it is checked against the filters in
/// the following order:
///
/// 1. Exact matches in enabled categories.
/// 2. Exact matches in enabled tags.
/// 3. Exact matches in disabled categories.
/// 4. Exact matches in disabled tags.
/// 5. Pattern matches in enabled categories.
/// 6. Pattern matches in enabled tags.
/// 7. Pattern matches in disabled categories.
/// 8. Pattern matches in disabled tags.
///
/// If none of the steps produced a match:
/// - In the C++ SDK (`perfetto::Category`), categories are enabled by
/// default.
/// - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
///
/// Examples:
///
/// - To enable all non-slow/debug categories:
///
/// enabled_categories: "*"
///
/// - To enable specific categories:
///
/// disabled_categories: "*"
/// enabled_categories: "my_category"
/// enabled_categories: "my_category2"
///
/// - To enable only categories with a specific tag:
///
/// disabled_tags: "*"
/// enabled_tags: "my_tag"
///
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrackEventConfig {
/// Default: \[\]
#[prost(string, repeated, tag = "1")]
pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Default: \[\]
#[prost(string, repeated, tag = "2")]
pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Default: \["slow", "debug"\]
#[prost(string, repeated, tag = "3")]
pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Default: \[\]
#[prost(string, repeated, tag = "4")]
pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Default: false (i.e. enabled by default)
#[prost(bool, optional, tag = "5")]
pub disable_incremental_timestamps: ::core::option::Option<bool>,
/// Allows to specify a custom unit different than the default (ns).
/// Also affects thread timestamps if enable_thread_time_sampling = true.
/// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
/// 3000 ns = 3 us.
/// Default: 1 (if unset, it should be read as 1).
#[prost(uint64, optional, tag = "6")]
pub timestamp_unit_multiplier: ::core::option::Option<u64>,
/// Default: false (i.e. debug_annotations is NOT filtered out by default)
/// When true, any debug annotations provided as arguments to the
/// TRACE_EVENT macros are not written into the trace. Typed arguments will
/// still be emitted even if set to true.
#[prost(bool, optional, tag = "7")]
pub filter_debug_annotations: ::core::option::Option<bool>,
/// Default : false (i.e. disabled)
/// When true, the SDK samples and emits the current thread time counter value
/// for each event on the current thread's track. This value represents the
/// total CPU time consumed by that thread since its creation. Note that if a
/// thread is not scheduled by OS for some duration, that time won't be
/// included in thread_time.
/// Learn more : "CLOCK_THREAD_CPUTIME_ID" flag at
/// <https://linux.die.net/man/3/clock_gettime>
#[prost(bool, optional, tag = "8")]
pub enable_thread_time_sampling: ::core::option::Option<bool>,
/// Default: false (i.e. dynamic event names are NOT filtered out by default)
/// When true, event_names wrapped in perfetto::DynamicString will be filtered
/// out.
#[prost(bool, optional, tag = "9")]
pub filter_dynamic_event_names: ::core::option::Option<bool>,
}
/// The configuration that is passed to each data source when starting tracing.
/// Next id: 132
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DataSourceConfig {
/// Data source unique name, e.g., "linux.ftrace". This must match
/// the name passed by the data source when it registers (see
/// RegisterDataSource()).
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
/// The index of the logging buffer where TracePacket(s) will be stored.
/// This field doesn't make a major difference for the Producer(s). The final
/// logging buffers, in fact, are completely owned by the Service. We just ask
/// the Producer to copy this number into the chunk headers it emits, so that
/// the Service can quickly identify the buffer where to move the chunks into
/// without expensive lookups on its fastpath.
#[prost(uint32, optional, tag = "2")]
pub target_buffer: ::core::option::Option<u32>,
/// Set by the service to indicate the duration of the trace.
/// DO NOT SET in consumer as this will be overridden by the service.
#[prost(uint32, optional, tag = "3")]
pub trace_duration_ms: ::core::option::Option<u32>,
/// If true, |trace_duration_ms| should count also time in suspend. This
/// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
#[prost(bool, optional, tag = "122")]
pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
/// Set by the service to indicate how long it waits after StopDataSource.
/// DO NOT SET in consumer as this will be overridden by the service.
#[prost(uint32, optional, tag = "7")]
pub stop_timeout_ms: ::core::option::Option<u32>,
/// Set by the service to indicate whether this tracing session has extra
/// guardrails.
/// DO NOT SET in consumer as this will be overridden by the service.
#[prost(bool, optional, tag = "6")]
pub enable_extra_guardrails: ::core::option::Option<bool>,
/// Set by the service to indicate which user initiated this trace.
/// DO NOT SET in consumer as this will be overridden by the service.
#[prost(enumeration = "data_source_config::SessionInitiator", optional, tag = "8")]
pub session_initiator: ::core::option::Option<i32>,
/// Set by the service to indicate which tracing session the data source
/// belongs to. The intended use case for this is checking if two data sources,
/// one of which produces metadata for the other one, belong to the same trace
/// session and hence should be linked together.
/// This field was introduced in Aug 2018 after Android P.
/// DO NOT SET in consumer as this will be overridden by the service.
#[prost(uint64, optional, tag = "4")]
pub tracing_session_id: ::core::option::Option<u64>,
/// Data source name: linux.ftrace
#[prost(message, optional, tag = "100")]
pub ftrace_config: ::core::option::Option<FtraceConfig>,
/// Data source name: linux.inode_file_map
#[prost(message, optional, tag = "102")]
pub inode_file_config: ::core::option::Option<InodeFileConfig>,
/// Data source name: linux.process_stats
#[prost(message, optional, tag = "103")]
pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
/// Data source name: linux.sys_stats
#[prost(message, optional, tag = "104")]
pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
/// Data source name: android.heapprofd
/// Introduced in Android 10.
#[prost(message, optional, tag = "105")]
pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
/// Data source name: android.java_hprof
/// Introduced in Android 11.
#[prost(message, optional, tag = "110")]
pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
/// Data source name: android.power
#[prost(message, optional, tag = "106")]
pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
/// Data source name: android.log
#[prost(message, optional, tag = "107")]
pub android_log_config: ::core::option::Option<AndroidLogConfig>,
/// TODO(fmayer): Add data source name for this.
#[prost(message, optional, tag = "108")]
pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
/// Data source name: android.game_interventions
#[prost(message, optional, tag = "116")]
pub android_game_intervention_list_config: ::core::option::Option<
AndroidGameInterventionListConfig,
>,
/// Data source name: android.packages_list
#[prost(message, optional, tag = "109")]
pub packages_list_config: ::core::option::Option<PackagesListConfig>,
/// Data source name: linux.perf
#[prost(message, optional, tag = "111")]
pub perf_event_config: ::core::option::Option<PerfEventConfig>,
/// Data source name: vulkan.memory_tracker
#[prost(message, optional, tag = "112")]
pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
/// Data source name: track_event
#[prost(message, optional, tag = "113")]
pub track_event_config: ::core::option::Option<TrackEventConfig>,
/// Data source name: android.polled_state
#[prost(message, optional, tag = "114")]
pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
/// Data source name: android.system_property
#[prost(message, optional, tag = "118")]
pub android_system_property_config: ::core::option::Option<
AndroidSystemPropertyConfig,
>,
/// Data source name: android.statsd
#[prost(message, optional, tag = "117")]
pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
/// Data source name: linux.system_info
#[prost(message, optional, tag = "119")]
pub system_info_config: ::core::option::Option<SystemInfoConfig>,
/// Chrome is special as it doesn't use the perfetto IPC layer. We want to
/// avoid proto serialization and de-serialization there because that would
/// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
/// C++ class for it so it can pass around plain C++ objets.
#[prost(message, optional, tag = "101")]
pub chrome_config: ::core::option::Option<ChromeConfig>,
/// Data source name: code.v8.dev
#[prost(message, optional, tag = "127")]
pub v8_config: ::core::option::Option<V8Config>,
/// If an interceptor is specified here, packets for this data source will be
/// rerouted to the interceptor instead of the main trace buffer. This can be
/// used, for example, to write trace data into ETW or for logging trace points
/// to the console.
///
/// Note that interceptors are only supported by data sources registered
/// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
/// traced_probes) may not support interception.
#[prost(message, optional, tag = "115")]
pub interceptor_config: ::core::option::Option<InterceptorConfig>,
/// Data source name: android.network_packets.
/// Introduced in Android 14 (U).
#[prost(message, optional, tag = "120")]
pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
/// Data source name: android.surfaceflinger.layers
#[prost(message, optional, tag = "121")]
pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
/// Data source name: android.surfaceflinger.transactions
#[prost(message, optional, tag = "123")]
pub surfaceflinger_transactions_config: ::core::option::Option<
SurfaceFlingerTransactionsConfig,
>,
/// Data source name: android.sdk_sysprop_guard
/// Introduced in Android 14 (U) QPR1.
#[prost(message, optional, tag = "124")]
pub android_sdk_sysprop_guard_config: ::core::option::Option<
AndroidSdkSyspropGuardConfig,
>,
/// Data source name: windows.etw
#[prost(message, optional, tag = "125")]
pub etw_config: ::core::option::Option<EtwConfig>,
/// Data source name: android.protolog
#[prost(message, optional, tag = "126")]
pub protolog_config: ::core::option::Option<ProtoLogConfig>,
/// Data source name: android.input.inputevent
#[prost(message, optional, tag = "128")]
pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
/// Data source name: android.pixel.modem
#[prost(message, optional, tag = "129")]
pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
/// Data source name: android.windowmanager
#[prost(message, optional, tag = "130")]
pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
/// Data source name: org.chromium.system_metrics
#[prost(message, optional, tag = "131")]
pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
/// This is a fallback mechanism to send a free-form text config to the
/// producer. In theory this should never be needed. All the code that
/// is part of the platform (i.e. traced service) is supposed to *not* truncate
/// the trace config proto and propagate unknown fields. However, if anything
/// in the pipeline (client or backend) ends up breaking this forward compat
/// plan, this field will become the escape hatch to allow future data sources
/// to get some meaningful configuration.
#[prost(string, optional, tag = "1000")]
pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
/// This field is only used for testing.
#[prost(message, optional, tag = "1001")]
pub for_testing: ::core::option::Option<TestConfig>,
}
/// Nested message and enum types in `DataSourceConfig`.
pub mod data_source_config {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum SessionInitiator {
Unspecified = 0,
/// This trace was initiated from a trusted system app has DUMP and
/// USAGE_STATS permission. This system app is expected to not expose the
/// trace to the user of the device.
/// This is determined by checking the UID initiating the trace.
TrustedSystem = 1,
}
impl SessionInitiator {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
Self::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SESSION_INITIATOR_UNSPECIFIED" => Some(Self::Unspecified),
"SESSION_INITIATOR_TRUSTED_SYSTEM" => Some(Self::TrustedSystem),
_ => None,
}
}
}
}
/// The overall config that is used when starting a new tracing session through
/// ProducerPort::StartTracing().
/// It contains the general config for the logging buffer(s) and the configs for
/// all the data source being enabled.
///
/// Next id: 40.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TraceConfig {
#[prost(message, repeated, tag = "1")]
pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
#[prost(message, repeated, tag = "2")]
pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
#[prost(message, optional, tag = "20")]
pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
/// If specified, the trace will be stopped |duration_ms| after starting.
/// This does *not* count the time the system is suspended, so we will run
/// for duration_ms of system activity, not wall time.
///
/// However in case of traces with triggers, see
/// TriggerConfig.trigger_timeout_ms instead.
#[prost(uint32, optional, tag = "3")]
pub duration_ms: ::core::option::Option<u32>,
/// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
/// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
/// Linux/Android, no-op on other platforms. This is used when dealing with
/// long (e.g. 24h) traces, where suspend can inflate them to weeks of
/// wall-time, making them more likely to hit device reboots (and hence loss).
/// This option also changes consistently the semantic of
/// TriggerConfig.stop_delay_ms.
#[prost(bool, optional, tag = "36")]
pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
/// This is set when --dropbox is passed to the Perfetto command line client
/// and enables guardrails that limit resource usage for traces requested
/// by statsd.
#[prost(bool, optional, tag = "4")]
pub enable_extra_guardrails: ::core::option::Option<bool>,
/// Reject producers that are not running under the same UID as the tracing
/// service.
#[prost(enumeration = "trace_config::LockdownModeOperation", optional, tag = "5")]
pub lockdown_mode: ::core::option::Option<i32>,
#[prost(message, repeated, tag = "6")]
pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
/// Statsd-specific metadata.
#[prost(message, optional, tag = "7")]
pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
/// When true && |output_path| is empty, the EnableTracing() request must
/// provide a file descriptor. The service will then periodically read packets
/// out of the trace buffer and store it into the passed file.
/// If |output_path| is not empty no fd should be passed, the service
/// will create a new file and write into that (see comment below).
#[prost(bool, optional, tag = "8")]
pub write_into_file: ::core::option::Option<bool>,
/// This must point to a non-existing file. If the file exists the service
/// will NOT overwrite and will fail instead as a security precaution.
/// On Android, when this is used with the system traced, the path must be
/// within /data/misc/perfetto-traces/ or the trace will fail.
/// This option has been introduced in Android R. Before R write_into_file
/// can be used only with the "pass a file descriptor over IPC" mode.
#[prost(string, optional, tag = "29")]
pub output_path: ::core::option::Option<::prost::alloc::string::String>,
/// Optional. If non-zero tunes the write period. A min value of 100ms is
/// enforced (i.e. smaller values are ignored).
#[prost(uint32, optional, tag = "9")]
pub file_write_period_ms: ::core::option::Option<u32>,
/// Optional. When non zero the periodic write stops once at most X bytes
/// have been written into the file. Tracing is disabled when this limit is
/// reached, even if |duration_ms| has not been reached yet.
#[prost(uint64, optional, tag = "10")]
pub max_file_size_bytes: ::core::option::Option<u64>,
#[prost(message, optional, tag = "11")]
pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
/// When true, data sources are not started until an explicit call to
/// StartTracing() on the consumer port. This is to support early
/// initialization and fast trace triggering. This can be used only when the
/// Consumer explicitly triggers the StartTracing() method.
/// This should not be used in a remote trace config via statsd, doing so will
/// result in a hung trace session.
#[prost(bool, optional, tag = "12")]
pub deferred_start: ::core::option::Option<bool>,
/// When set, it periodically issues a Flush() to all data source, forcing them
/// to commit their data into the tracing service. This can be used for
/// quasi-real-time streaming mode and to guarantee some partial ordering of
/// events in the trace in windows of X ms.
#[prost(uint32, optional, tag = "13")]
pub flush_period_ms: ::core::option::Option<u32>,
/// Wait for this long for producers to acknowledge flush requests.
/// Default 5s.
#[prost(uint32, optional, tag = "14")]
pub flush_timeout_ms: ::core::option::Option<u32>,
/// Wait for this long for producers to acknowledge stop requests.
/// Default 5s.
#[prost(uint32, optional, tag = "23")]
pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
/// Android-only. If set, sends an intent to the Traceur system app when the
/// trace ends to notify it about the trace readiness.
#[prost(bool, optional, tag = "16")]
pub notify_traceur: ::core::option::Option<bool>,
/// This field was introduced in Android S.
/// Android-only. If set to a value > 0, marks the trace session as a candidate
/// for being attached to a bugreport. This field effectively acts as a z-index
/// for bugreports. When Android's dumpstate runs perfetto
/// --save-for-bugreport, traced will pick the tracing session with the highest
/// score (score <= 0 is ignored) and:
/// On Android S, T: will steal its contents, save the trace into
/// a known path and stop prematurely.
/// On Android U+: will create a read-only snapshot and save that into a known
/// path, without stoppin the original tracing session.
/// When this field is set the tracing session becomes eligible to be cloned
/// by other UIDs.
#[prost(int32, optional, tag = "30")]
pub bugreport_score: ::core::option::Option<i32>,
/// When set, defines name of the file that will be saved under
/// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
/// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
/// starting from the highest `bugreport_score`.
/// Introduced in v42 / Android V.
#[prost(string, optional, tag = "38")]
pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, optional, tag = "17")]
pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
/// When this is non-empty the perfetto command line tool will ignore the rest
/// of this TraceConfig and instead connect to the perfetto service as a
/// producer and send these triggers, potentially stopping or starting traces
/// that were previous configured to use a TriggerConfig.
#[prost(string, repeated, tag = "18")]
pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(message, optional, tag = "21")]
pub incremental_state_config: ::core::option::Option<
trace_config::IncrementalStateConfig,
>,
/// No longer needed as we unconditionally allow tracing on user builds.
#[deprecated]
#[prost(bool, optional, tag = "19")]
pub allow_user_build_tracing: ::core::option::Option<bool>,
/// If set the tracing service will ensure there is at most one tracing session
/// with this key.
#[prost(string, optional, tag = "22")]
pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(enumeration = "trace_config::CompressionType", optional, tag = "24")]
pub compression_type: ::core::option::Option<i32>,
#[prost(message, optional, tag = "25")]
pub incident_report_config: ::core::option::Option<
trace_config::IncidentReportConfig,
>,
/// Android-only. Not for general use. If specified, sets the logging to statsd
/// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
/// this to enabled (if not explicitly set in the config) when specifying
/// --upload.
#[prost(enumeration = "trace_config::StatsdLogging", optional, tag = "31")]
pub statsd_logging: ::core::option::Option<i32>,
/// An identifier clients can use to tie this trace to other logging.
/// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
/// Trace UUID. If this field is set, the tracing service will respect the
/// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
/// gap-less snapshotting is not used.
#[deprecated]
#[prost(int64, optional, tag = "27")]
pub trace_uuid_msb: ::core::option::Option<i64>,
#[deprecated]
#[prost(int64, optional, tag = "28")]
pub trace_uuid_lsb: ::core::option::Option<i64>,
#[prost(message, optional, tag = "33")]
pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
#[prost(message, optional, tag = "34")]
pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
#[prost(message, optional, tag = "35")]
pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
#[prost(message, repeated, tag = "39")]
pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
}
/// Nested message and enum types in `TraceConfig`.
pub mod trace_config {
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BufferConfig {
#[prost(uint32, optional, tag = "1")]
pub size_kb: ::core::option::Option<u32>,
#[prost(enumeration = "buffer_config::FillPolicy", optional, tag = "4")]
pub fill_policy: ::core::option::Option<i32>,
/// When true the buffer is moved (rather than copied) onto the cloned
/// session, and an empty buffer of the same size is allocated in the source
/// tracing session. This feature will likely get deprecated in the future.
/// It been introduced mainly to support the surfaceflinger snapshot dump
/// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
/// that case we don't want to retain another in-memory copy of the buffer.
#[prost(bool, optional, tag = "5")]
pub transfer_on_clone: ::core::option::Option<bool>,
/// Used in conjuction with transfer_on_clone. When true the buffer is
/// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
/// that if the data source took too long to write the data in a previous
/// clone-related flush, we don't end up with a mixture of leftovers from
/// the previous write and new data.
#[prost(bool, optional, tag = "6")]
pub clear_before_clone: ::core::option::Option<bool>,
}
/// Nested message and enum types in `BufferConfig`.
pub mod buffer_config {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum FillPolicy {
Unspecified = 0,
/// Default behavior. The buffer operates as a conventional ring buffer.
/// If the writer is faster than the reader (or if the reader reads only
/// after tracing is stopped) newly written packets will overwrite old
/// packets.
RingBuffer = 1,
/// Behaves like RING_BUFFER as long as there is space in the buffer or
/// the reader catches up with the writer. As soon as the writer hits
/// an unread chunk, it stops accepting new data in the buffer.
Discard = 2,
}
impl FillPolicy {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "UNSPECIFIED",
Self::RingBuffer => "RING_BUFFER",
Self::Discard => "DISCARD",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNSPECIFIED" => Some(Self::Unspecified),
"RING_BUFFER" => Some(Self::RingBuffer),
"DISCARD" => Some(Self::Discard),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DataSource {
/// Filters and data-source specific config. It contains also the unique name
/// of the data source, the one passed in the DataSourceDescriptor when they
/// register on the service.
#[prost(message, optional, tag = "1")]
pub config: ::core::option::Option<super::DataSourceConfig>,
/// Optional. If multiple producers (~processes) expose the same data source
/// and either |producer_name_filter| or |producer_name_regex_filter| is set,
/// the data source is enabled only for producers whose names match any of
/// the filters.
/// |producer_name_filter| has to be an exact match, while
/// |producer_name_regex_filter| is a regular expression.
/// This allows to enable a data source only for specific processes.
/// The "repeated" fields have OR semantics: specifying a filter ["foo",
/// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
#[prost(string, repeated, tag = "2")]
pub producer_name_filter: ::prost::alloc::vec::Vec<
::prost::alloc::string::String,
>,
#[prost(string, repeated, tag = "3")]
pub producer_name_regex_filter: ::prost::alloc::vec::Vec<
::prost::alloc::string::String,
>,
}
/// Config for disabling builtin data sources in the tracing service.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BuiltinDataSource {
/// Disable emitting clock timestamps into the trace.
#[prost(bool, optional, tag = "1")]
pub disable_clock_snapshotting: ::core::option::Option<bool>,
/// Disable echoing the original trace config in the trace.
#[prost(bool, optional, tag = "2")]
pub disable_trace_config: ::core::option::Option<bool>,
/// Disable emitting system info (build fingerprint, cpuinfo, etc).
#[prost(bool, optional, tag = "3")]
pub disable_system_info: ::core::option::Option<bool>,
/// Disable emitting events for data-source state changes (e.g. the marker
/// for all data sources having ACKed the start of the trace).
#[prost(bool, optional, tag = "4")]
pub disable_service_events: ::core::option::Option<bool>,
/// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
/// also ClockSnapshot's primary_trace_clock. The configured value is written
/// into the trace as part of the ClockSnapshots emitted by the service.
/// Trace processor will attempt to translate packet/event timestamps from
/// various data sources (and their chosen clock domains) to this domain
/// during import. Added in Android R.
#[prost(enumeration = "super::BuiltinClock", optional, tag = "5")]
pub primary_trace_clock: ::core::option::Option<i32>,
/// Time interval in between snapshotting of sync markers, clock snapshots,
/// stats, and other periodic service-emitted events. Note that the service
/// only keeps track of the first and the most recent snapshot until
/// ReadBuffers() is called.
#[prost(uint32, optional, tag = "6")]
pub snapshot_interval_ms: ::core::option::Option<u32>,
/// Hints to the service that a suspend-aware (i.e. counting time in suspend)
/// clock should be used for periodic snapshots of service-emitted events.
/// This means, if a snapshot *should* have happened during suspend, it will
/// happen immediately after the device resumes.
///
/// Choosing a clock like this is done on best-effort basis; not all
/// platforms (e.g. Windows) expose a clock which can be used for periodic
/// tasks counting suspend. If such a clock is not available, the service
/// falls back to the best-available alternative.
///
/// Introduced in Android S.
/// TODO(lalitm): deprecate this in T and make this the default if nothing
/// crashes in S.
#[prost(bool, optional, tag = "7")]
pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
/// Disables the reporting of per-trace-writer histograms in TraceStats.
#[prost(bool, optional, tag = "8")]
pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProducerConfig {
/// Identifies the producer for which this config is for.
#[prost(string, optional, tag = "1")]
pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
/// Specifies the preferred size of the shared memory buffer. If the size is
/// larger than the max size, the max will be used. If it is smaller than
/// the page size or doesn't fit pages evenly into it, it will fall back to
/// the size specified by the producer or finally the default shared memory
/// size.
#[prost(uint32, optional, tag = "2")]
pub shm_size_kb: ::core::option::Option<u32>,
/// Specifies the preferred size of each page in the shared memory buffer.
/// Must be an integer multiple of 4K.
#[prost(uint32, optional, tag = "3")]
pub page_size_kb: ::core::option::Option<u32>,
}
/// Contains statsd-specific metadata about an alert associated with the trace.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct StatsdMetadata {
/// The identifier of the alert which triggered this trace.
#[prost(int64, optional, tag = "1")]
pub triggering_alert_id: ::core::option::Option<i64>,
/// The uid which registered the triggering configuration with statsd.
#[prost(int32, optional, tag = "2")]
pub triggering_config_uid: ::core::option::Option<i32>,
/// The identifier of the config which triggered the alert.
#[prost(int64, optional, tag = "3")]
pub triggering_config_id: ::core::option::Option<i64>,
/// The identifier of the subscription which triggered this trace.
#[prost(int64, optional, tag = "4")]
pub triggering_subscription_id: ::core::option::Option<i64>,
}
/// Contains flags which override the default values of the guardrails inside
/// Perfetto.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GuardrailOverrides {
/// Override the default limit (in bytes) for uploading data to server within
/// a 24 hour period.
/// On R-, this override only affected userdebug builds. Since S, it also
/// affects user builds.
/// In 24Q3+ (V+), this override is a noop because upload guardrail logic
/// was removed from Perfetto.
#[deprecated]
#[prost(uint64, optional, tag = "1")]
pub max_upload_per_day_bytes: ::core::option::Option<u64>,
/// Overrides the guardrail for maximum trace buffer size.
/// Available on U+
#[prost(uint32, optional, tag = "2")]
pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
}
/// Triggers allow producers to start or stop the tracing session when an event
/// occurs.
///
/// For example if we are tracing probabilistically, most traces will be
/// uninteresting. Triggers allow us to keep only the interesting ones such as
/// those traces during which the device temperature reached a certain
/// threshold. In this case the producer can activate a trigger to keep
/// (STOP_TRACING) the trace, otherwise it can also begin a trace
/// (START_TRACING) because it knows something is about to happen.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TriggerConfig {
#[prost(enumeration = "trigger_config::TriggerMode", optional, tag = "1")]
pub trigger_mode: ::core::option::Option<i32>,
/// This flag is really a workaround for b/274931668. This is needed only
/// when deploying configs to different versions of the tracing service.
/// When this is set to true this has the same effect of setting trigger_mode
/// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
/// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
/// versions of Android and fall back to STOP_TRACING on older versions where
/// CLONE_SNAPSHOT did not exist.
/// When using this flag, trigger_mode must be set to STOP_TRACING.
#[prost(bool, optional, tag = "5")]
pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
/// A list of triggers which are related to this configuration. If ANY
/// trigger is seen then an action will be performed based on |trigger_mode|.
#[prost(message, repeated, tag = "2")]
pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
/// Required and must be positive if a TriggerConfig is specified. This is
/// how long this TraceConfig should wait for a trigger to arrive. After this
/// period of time if no trigger is seen the TracingSession will be cleaned
/// up.
#[prost(uint32, optional, tag = "3")]
pub trigger_timeout_ms: ::core::option::Option<u32>,
}
/// Nested message and enum types in `TriggerConfig`.
pub mod trigger_config {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Trigger {
/// The producer must specify this name to activate the trigger.
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
/// An std::regex that will match the producer that can activate this
/// trigger. This is optional. If unset any producers can activate this
/// trigger.
#[prost(string, optional, tag = "2")]
pub producer_name_regex: ::core::option::Option<
::prost::alloc::string::String,
>,
/// After a trigger is received either in START_TRACING or STOP_TRACING
/// mode then the trace will end |stop_delay_ms| after triggering.
/// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
/// snapshot.
/// If |prefer_suspend_clock_for_duration| is set, the duration will be
/// based on wall-clock, counting also time in suspend.
#[prost(uint32, optional, tag = "3")]
pub stop_delay_ms: ::core::option::Option<u32>,
/// Limits the number of traces this trigger can start/stop in a rolling
/// 24 hour window. If this field is unset or zero, no limit is applied and
/// activiation of this trigger *always* starts/stops the trace.
#[prost(uint32, optional, tag = "4")]
pub max_per_24_h: ::core::option::Option<u32>,
/// A value between 0 and 1 which encodes the probability of skipping a
/// trigger with this name. This is useful for reducing the probability
/// of high-frequency triggers from dominating trace finaization. If this
/// field is unset or zero, the trigger will *never* be skipped. If this
/// field is greater than or equal to 1, this trigger will *always* be
/// skipped i.e. it will be as if this trigger was never included in the
/// first place.
/// This probability check is applied *before* any other limits. For
/// example, if |max_per_24_h| is also set, first we will check if the
/// probability bar is met and only then will we check the |max_per_24_h|
/// limit.
#[prost(double, optional, tag = "5")]
pub skip_probability: ::core::option::Option<f64>,
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum TriggerMode {
Unspecified = 0,
/// When this mode is chosen, data sources are not started until one of the
/// |triggers| are received. This supports early initialization and fast
/// starting of the tracing system. On triggering, the session will then
/// record for |stop_delay_ms|. However if no trigger is seen
/// after |trigger_timeout_ms| the session will be stopped and no data will
/// be returned.
StartTracing = 1,
/// When this mode is chosen, the session will be started via the normal
/// EnableTracing() & StartTracing(). If no trigger is ever seen
/// the session will be stopped after |trigger_timeout_ms| and no data will
/// be returned. However if triggered the trace will stop after
/// |stop_delay_ms| and any data in the buffer will be returned to the
/// consumer.
StopTracing = 2,
/// When this mode is chosen, this causes a snapshot of the current tracing
/// session to be created after |stop_delay_ms| while the current tracing
/// session continues undisturbed (% an extra flush). This mode can be
/// used only when the tracing session is handled by the "perfetto" cmdline
/// client (which is true in 90% of cases). Part of the business logic
/// necessary for this behavior, and ensuing file handling, lives in
/// perfetto_cmd.cc . On other consumers, this causes only a notification
/// of the trigger through a CloneTriggerHit ObservableEvent. The custom
/// consumer is supposed to call CloneSession() itself after the event.
/// Use use_clone_snapshot_if_available=true when targeting older versions
/// of perfetto.
CloneSnapshot = 4,
}
impl TriggerMode {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "UNSPECIFIED",
Self::StartTracing => "START_TRACING",
Self::StopTracing => "STOP_TRACING",
Self::CloneSnapshot => "CLONE_SNAPSHOT",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNSPECIFIED" => Some(Self::Unspecified),
"START_TRACING" => Some(Self::StartTracing),
"STOP_TRACING" => Some(Self::StopTracing),
"CLONE_SNAPSHOT" => Some(Self::CloneSnapshot),
_ => None,
}
}
}
}
/// Configuration for trace contents that reference earlier trace data. For
/// example, a data source might intern strings, and emit packets containing
/// {interned id : string} pairs. Future packets from that data source can then
/// use the interned ids instead of duplicating the raw string contents. The
/// trace parser will then need to use that interning table to fully interpret
/// the rest of the trace.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct IncrementalStateConfig {
/// If nonzero, notify eligible data sources to clear their incremental state
/// periodically, with the given period. The notification is sent only to
/// data sources that have |handles_incremental_state_clear| set in their
/// DataSourceDescriptor. The notification requests that the data source
/// stops referring to past trace contents. This is particularly useful when
/// tracing in ring buffer mode, where it is not exceptional to overwrite old
/// trace data.
///
/// Warning: this time-based global clearing is likely to be removed in the
/// future, to be replaced with a smarter way of sending the notifications
/// only when necessary.
#[prost(uint32, optional, tag = "1")]
pub clear_period_ms: ::core::option::Option<u32>,
}
/// Android-only. Not for general use. If set, saves the trace into an
/// incident. This field is read by perfetto_cmd, rather than the tracing
/// service. This field must be set when passing the --upload flag to
/// perfetto_cmd.
///
/// In this message, either:
/// * all of |destination_package|, |destination_class| and |privacy_level|
/// must be set.
/// * |skip_incidentd| must be explicitly set to true.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IncidentReportConfig {
#[prost(string, optional, tag = "1")]
pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
/// Level of filtering in the requested incident. See |Destination| in
/// frameworks/base/core/proto/android/privacy.proto.
#[prost(int32, optional, tag = "3")]
pub privacy_level: ::core::option::Option<i32>,
/// If true, then skips saving the trace to incidentd.
///
/// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
/// or when we explicitly don't want traces to go to incidentd even when they
/// usually would (e.g. configs deployed using statsd but only used for
/// inclusion in bugreports using |bugreport_score|).
///
/// The motivation for having this flag, instead of just not setting
/// |incident_report_config|, is prevent accidents where
/// |incident_report_config| is omitted by mistake.
#[prost(bool, optional, tag = "5")]
pub skip_incidentd: ::core::option::Option<bool>,
/// If true, do not write the trace into dropbox (i.e. incident only).
/// Otherwise, write to both dropbox and incident.
/// TODO(lalitm): remove this field as we no longer use Dropbox.
#[deprecated]
#[prost(bool, optional, tag = "4")]
pub skip_dropbox: ::core::option::Option<bool>,
}
/// When set applies a post-filter to the trace contents using the filter
/// provided. The filter is applied at ReadBuffers() time and works both in the
/// case of IPC readback and write_into_file. This filter can be generated
/// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
/// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
/// design.
///
/// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
/// Android T with a different field number. Updated in Android U with a new
/// bytecode version which supports string filtering.
///
/// =========================
/// Filter bytecode.
/// =========================
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TraceFilter {
/// The bytecode as implemented in Android T.
#[prost(bytes = "vec", optional, tag = "1")]
pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
/// The bytecode as implemented in Android U. Adds support for string
/// filtering.
#[prost(bytes = "vec", optional, tag = "2")]
pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
#[prost(message, optional, tag = "3")]
pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
}
/// Nested message and enum types in `TraceFilter`.
pub mod trace_filter {
/// A rule specifies how strings should be filtered.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StringFilterRule {
/// The policy (i.e. algorithm) dictating how strings matching this rule
/// should be handled.
#[prost(enumeration = "StringFilterPolicy", optional, tag = "1")]
pub policy: ::core::option::Option<i32>,
/// The regex pattern used to match against each string.
#[prost(string, optional, tag = "2")]
pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
/// The string which should appear after the tgid in atrace tracepoint
/// strings.
#[prost(string, optional, tag = "3")]
pub atrace_payload_starts_with: ::core::option::Option<
::prost::alloc::string::String,
>,
}
/// A chain is a list of rules which string will be sequentially checked
/// against.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StringFilterChain {
#[prost(message, repeated, tag = "1")]
pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
}
/// A policy specifies which algorithm should be used for filtering the
/// string.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum StringFilterPolicy {
SfpUnspecified = 0,
/// Tries to match the string field against |regex_pattern|. If it
/// matches, all matching groups are "redacted" (i.e. replaced with a
/// constant string) and filtering is terminated (i.e. no further rules are
/// checked). If it doesn't match, the string is left unchanged and the
/// next rule in chain is considered.
SfpMatchRedactGroups = 1,
/// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
/// checking the regex. Specifically, it tries to parse the string field as
/// an atrace tracepoint and checks if the post-tgid field starts with
/// |atrace_post_tgid_starts_with|. The regex matching is only performed if
/// this check succeeds.
SfpAtraceMatchRedactGroups = 2,
/// Tries to match the string field against |regex_pattern|. If it
/// matches, filtering is terminated (i.e. no further rules are checked).
/// If it doesn't match, the string is left unchanged and the next rule in
/// chain is considered.
SfpMatchBreak = 3,
/// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
/// the regex. Specifically, it tries to parse the string field as an
/// atrace tracepoint and checks if the post-tgid field starts with
/// |atrace_post_tgid_starts_with|. The regex matching is only performed if
/// this check succeeds.
SfpAtraceMatchBreak = 4,
/// Tries to repeatedly search (i.e. find substrings of) the string field
/// with |regex_pattern|. For each match, redacts any matching groups (i.e.
/// replaced with a constant string). Once there are no further matches,
/// filtering is terminated (i.e. no further rules are checked).
///
/// Note that this is policy is a "search" policy not a "match" policy
/// unlike the above policies:
/// * Match policies require matching the full string i.e. there is an
/// implicit leading `^` and trailing `$`.
/// * Search policies perform repeated partial matching of the string
/// e.g.
/// - String: `foo=aaa,bar=123,foo=bbb,baz=456`
/// - Pattern: `foo=(\d+)`
/// - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
/// where P6O is the redaction string
///
/// All of this is only performed after some pre-work where we try to parse
/// the string field as an atrace tracepoint and check if the post-tgid
/// field starts with |atrace_post_tgid_starts_with|.
///
/// If there are no partial matches, the string is left unchanged and the
/// next rule in chain is considered.
SfpAtraceRepeatedSearchRedactGroups = 5,
}
impl StringFilterPolicy {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::SfpUnspecified => "SFP_UNSPECIFIED",
Self::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
Self::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
Self::SfpMatchBreak => "SFP_MATCH_BREAK",
Self::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
Self::SfpAtraceRepeatedSearchRedactGroups => {
"SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS"
}
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SFP_UNSPECIFIED" => Some(Self::SfpUnspecified),
"SFP_MATCH_REDACT_GROUPS" => Some(Self::SfpMatchRedactGroups),
"SFP_ATRACE_MATCH_REDACT_GROUPS" => {
Some(Self::SfpAtraceMatchRedactGroups)
}
"SFP_MATCH_BREAK" => Some(Self::SfpMatchBreak),
"SFP_ATRACE_MATCH_BREAK" => Some(Self::SfpAtraceMatchBreak),
"SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS" => {
Some(Self::SfpAtraceRepeatedSearchRedactGroups)
}
_ => None,
}
}
}
}
/// Android-only. Not for general use. If set, reports the trace to the
/// Android framework. This field is read by perfetto_cmd, rather than the
/// tracing service. This field must be set when passing the --upload flag to
/// perfetto_cmd.
///
/// In this message, either:
/// * |reporter_service_package| and |reporter_service_class| must be set.
/// * |skip_reporting| must be explicitly set to true.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidReportConfig {
#[prost(string, optional, tag = "1")]
pub reporter_service_package: ::core::option::Option<
::prost::alloc::string::String,
>,
#[prost(string, optional, tag = "2")]
pub reporter_service_class: ::core::option::Option<
::prost::alloc::string::String,
>,
/// If true, then skips reporting the trace to Android framework.
///
/// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
/// or when we explicitly don't want to report traces to the framework even
/// when they usually would (e.g. configs deployed using statsd but only
/// used for inclusion in bugreports using |bugreport_score|).
///
/// The motivation for having this flag, instead of just not setting
/// |framework_report_config|, is prevent accidents where
/// |framework_report_config| is omitted by mistake.
#[prost(bool, optional, tag = "3")]
pub skip_report: ::core::option::Option<bool>,
/// If true, will direct the Android framework to read the data in trace
/// file and pass it to the reporter class over a pipe instead of passing
/// the file descriptor directly.
///
/// This flag is needed because the Android test framework does not
/// currently support priv-app helper apps (in terms of SELinux) and we
/// really don't want to add an allow rule for untrusted_app to receive
/// trace fds.
///
/// Because of this, we instead will direct the framework to create a new
/// pipe and pass this to the reporter process instead. As the pipe is
/// created by the framework, we won't have any problems with SELinux
/// (system_server is already allowed to pass pipe fds, even
/// to untrusted apps).
///
/// As the name suggests this option *MUST* only be used for testing.
/// Note that the framework will reject (and drop) files which are too
/// large both for simplicity and to be minimize the amount of data we
/// pass to a non-priv app (note that the framework will still check
/// manifest permissions even though SELinux permissions are worked around).
#[prost(bool, optional, tag = "4")]
pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
}
/// If set, delays the start of tracing by a random duration. The duration is
/// chosen from a uniform distribution between the specified minimum and
/// maximum.
/// Note: this delay is implemented by perfetto_cmd *not* by traced so will
/// not work if you communicate with traced directly over the consumer API.
/// Introduced in Android T.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CmdTraceStartDelay {
#[prost(uint32, optional, tag = "1")]
pub min_delay_ms: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub max_delay_ms: ::core::option::Option<u32>,
}
/// When non-empty, ensures that for a each semaphore named `name at most
/// `max_other_session_count`` *other* sessions (whose value is taken of the
/// minimum of all values specified by this config or any already-running
/// session) can be be running.
///
/// If a semaphore "acquisition" fails, EnableTracing will return an error
/// and the tracing session will not be started (or elgible to start in
/// the case of deferred sessions).
///
/// This is easiest to explain with an example. Suppose the tracing service has
/// the following active tracing sessions:
/// S1 = [{name=foo, max_other_session_count=2},
/// {name=bar, max_other_session_count=0}]
/// S2 = [{name=foo, max_other_session_count=1},
/// {name=baz, max_other_session_count=1}]
///
/// Then, for a new session, the following would be the expected behaviour of
/// EnableSession given the state of `session_semaphores`.
/// Q: session_semaphores = \[\]
/// A: Allowed because it does not specify any semaphores. Will be allowed
/// no matter the state of any other tracing session.
/// Q: session_semaphores = \[{name=baz, max_other_session_count=1}\]
/// A: Allowed because both S2 and this config specify
/// max_other_session_count=1 for baz.
/// Q: session_semaphores = \[{name=foo, max_other_session_count=3}\]
/// A: Denied because S2 specified max_other_session_count=1 for foo and S1
/// takes that slot.
/// Q: session_semaphores = \[{name=bar, max_other_session_count=0}\]
/// A: Denied because S1 takes the the slot specified by both S1 and
/// this config.
///
/// Introduced in 24Q3 (Android V).
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SessionSemaphore {
/// The name of the semaphore. Acts as a unique identifier across all
/// tracing sessions (including the one being started).
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
/// The maximum number of *other* sesssions which specify the same semaphore
/// which can be active. The minimum of this value across all tracing
/// sessions and the value specified by the config is used when deciding
/// whether the tracing session can be started.
#[prost(uint64, optional, tag = "2")]
pub max_other_session_count: ::core::option::Option<u64>,
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum LockdownModeOperation {
LockdownUnchanged = 0,
LockdownClear = 1,
LockdownSet = 2,
}
impl LockdownModeOperation {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
Self::LockdownClear => "LOCKDOWN_CLEAR",
Self::LockdownSet => "LOCKDOWN_SET",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"LOCKDOWN_UNCHANGED" => Some(Self::LockdownUnchanged),
"LOCKDOWN_CLEAR" => Some(Self::LockdownClear),
"LOCKDOWN_SET" => Some(Self::LockdownSet),
_ => None,
}
}
}
/// Compress trace with the given method. Best effort.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum CompressionType {
Unspecified = 0,
Deflate = 1,
}
impl CompressionType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
Self::Deflate => "COMPRESSION_TYPE_DEFLATE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"COMPRESSION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
"COMPRESSION_TYPE_DEFLATE" => Some(Self::Deflate),
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum StatsdLogging {
Unspecified = 0,
Enabled = 1,
Disabled = 2,
}
impl StatsdLogging {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
Self::Enabled => "STATSD_LOGGING_ENABLED",
Self::Disabled => "STATSD_LOGGING_DISABLED",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"STATSD_LOGGING_UNSPECIFIED" => Some(Self::Unspecified),
"STATSD_LOGGING_ENABLED" => Some(Self::Enabled),
"STATSD_LOGGING_DISABLED" => Some(Self::Disabled),
_ => None,
}
}
}
}
/// Statistics for the internals of the tracing service.
///
/// Next id: 19.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TraceStats {
/// Stats for the TraceBuffer(s) of the current trace session.
#[prost(message, repeated, tag = "1")]
pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
/// The thresholds of each the `writer_stats` histogram buckets. This is
/// emitted only once as all WriterStats share the same bucket layout.
/// This field has the same cardinality of the
/// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
/// (The -1 is because the last overflow bucket is not reported in the _def).
/// An array of values \[10, 100, 1000\] in the _def array means that there are
/// four buckets (3 + the implicit overflow bucket):
/// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
#[prost(int64, repeated, packed = "false", tag = "17")]
pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
#[prost(message, repeated, tag = "18")]
pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
/// Num. producers connected (whether they are involved in the current tracing
/// session or not).
#[prost(uint32, optional, tag = "2")]
pub producers_connected: ::core::option::Option<u32>,
/// Num. producers ever seen for all trace sessions since startup (it's a good
/// proxy for inferring num. producers crashed / killed).
#[prost(uint64, optional, tag = "3")]
pub producers_seen: ::core::option::Option<u64>,
/// Num. data sources registered for all trace sessions.
#[prost(uint32, optional, tag = "4")]
pub data_sources_registered: ::core::option::Option<u32>,
/// Num. data sources ever seen for all trace sessions since startup.
#[prost(uint64, optional, tag = "5")]
pub data_sources_seen: ::core::option::Option<u64>,
/// Num. concurrently active tracing sessions.
#[prost(uint32, optional, tag = "6")]
pub tracing_sessions: ::core::option::Option<u32>,
/// Num. buffers for all tracing session (not just the current one). This will
/// be >= buffer_stats.size(), because the latter is only about the current
/// session.
#[prost(uint32, optional, tag = "7")]
pub total_buffers: ::core::option::Option<u32>,
/// Num. chunks that were discarded by the service before attempting to commit
/// them to a buffer, e.g. because the producer specified an invalid buffer ID.
#[prost(uint64, optional, tag = "8")]
pub chunks_discarded: ::core::option::Option<u64>,
/// Num. patches that were discarded by the service before attempting to apply
/// them to a buffer, e.g. because the producer specified an invalid buffer ID.
#[prost(uint64, optional, tag = "9")]
pub patches_discarded: ::core::option::Option<u64>,
/// Packets that failed validation of the TrustedPacket. If this is > 0, there
/// is a bug in the producer.
#[prost(uint64, optional, tag = "10")]
pub invalid_packets: ::core::option::Option<u64>,
#[prost(message, optional, tag = "11")]
pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
/// Count of Flush() requests (either from the Consumer, or self-induced
/// periodic flushes). The final Flush() is also included in the count.
#[prost(uint64, optional, tag = "12")]
pub flushes_requested: ::core::option::Option<u64>,
/// The count of the Flush() requests that were completed successfully.
/// In a well behaving trace this should always be == `flush_requests`.
#[prost(uint64, optional, tag = "13")]
pub flushes_succeeded: ::core::option::Option<u64>,
/// The count of the Flush() requests that failed (in most timed out).
/// In a well behaving trace this should always be == 0.
#[prost(uint64, optional, tag = "14")]
pub flushes_failed: ::core::option::Option<u64>,
#[prost(enumeration = "trace_stats::FinalFlushOutcome", optional, tag = "15")]
pub final_flush_outcome: ::core::option::Option<i32>,
}
/// Nested message and enum types in `TraceStats`.
pub mod trace_stats {
/// From TraceBuffer::Stats.
///
/// Next id: 21.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BufferStats {
/// Size of the circular buffer in bytes.
#[prost(uint64, optional, tag = "12")]
pub buffer_size: ::core::option::Option<u64>,
/// Num. bytes written into the circular buffer, including chunk headers.
#[prost(uint64, optional, tag = "1")]
pub bytes_written: ::core::option::Option<u64>,
/// Num. bytes overwritten before they have been read (i.e. loss of data).
#[prost(uint64, optional, tag = "13")]
pub bytes_overwritten: ::core::option::Option<u64>,
/// Total size of chunks that were fully read from the circular buffer by the
/// consumer. This may not be equal to |bytes_written| either in the middle
/// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
/// size of the chunks read from the buffer, including chunk headers, which
/// will be different from the total size of packets returned to the
/// consumer.
///
/// The current utilization of the trace buffer (mid-tracing) can be obtained
/// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
/// adding the difference of |padding_bytes_written| and
/// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
/// Note that this represents the total size of buffered data in the buffer,
/// yet this data may be spread non-contiguously through the buffer and may
/// be overridden before the utilization reaches 100%.
#[prost(uint64, optional, tag = "14")]
pub bytes_read: ::core::option::Option<u64>,
/// Num. bytes that were allocated as padding between chunks in the circular
/// buffer.
#[prost(uint64, optional, tag = "15")]
pub padding_bytes_written: ::core::option::Option<u64>,
/// Num. of padding bytes that were removed from the circular buffer when
/// they were overwritten.
///
/// The difference between |padding_bytes_written| and
/// |padding_bytes_cleared| denotes the total size of padding currently
/// present in the buffer.
#[prost(uint64, optional, tag = "16")]
pub padding_bytes_cleared: ::core::option::Option<u64>,
/// Num. chunks (!= packets) written into the buffer.
#[prost(uint64, optional, tag = "2")]
pub chunks_written: ::core::option::Option<u64>,
/// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
/// the same chunk with additional packets appended to the end.
#[prost(uint64, optional, tag = "10")]
pub chunks_rewritten: ::core::option::Option<u64>,
/// Num. chunks overwritten before they have been read (i.e. loss of data).
#[prost(uint64, optional, tag = "3")]
pub chunks_overwritten: ::core::option::Option<u64>,
/// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
/// is configured with FillPolicy == DISCARD.
#[prost(uint64, optional, tag = "18")]
pub chunks_discarded: ::core::option::Option<u64>,
/// Num. chunks (!= packets) that were fully read from the circular buffer by
/// the consumer. This may not be equal to |chunks_written| either in the
/// middle of tracing, or if |chunks_overwritten| is non-zero.
#[prost(uint64, optional, tag = "17")]
pub chunks_read: ::core::option::Option<u64>,
/// Num. chunks that were committed out of order.
#[prost(uint64, optional, tag = "11")]
pub chunks_committed_out_of_order: ::core::option::Option<u64>,
/// Num. times the ring buffer wrapped around.
#[prost(uint64, optional, tag = "4")]
pub write_wrap_count: ::core::option::Option<u64>,
/// Num. out-of-band (OOB) patches that succeeded.
#[prost(uint64, optional, tag = "5")]
pub patches_succeeded: ::core::option::Option<u64>,
/// Num. OOB patches that failed (e.g., the chunk to patch was gone).
#[prost(uint64, optional, tag = "6")]
pub patches_failed: ::core::option::Option<u64>,
/// Num. readaheads (for large multi-chunk packet reads) that ended up in a
/// successful packet read.
#[prost(uint64, optional, tag = "7")]
pub readaheads_succeeded: ::core::option::Option<u64>,
/// Num. readaheads aborted because of missing chunks in the sequence stream.
/// Note that a small number > 0 is totally expected: occasionally, when
/// issuing a read, the very last packet in a sequence might be incomplete
/// (because the producer is still writing it while we read). The read will
/// stop at that point, for that sequence, increasing this counter.
#[prost(uint64, optional, tag = "8")]
pub readaheads_failed: ::core::option::Option<u64>,
/// Num. of violations of the SharedMemoryABI found while writing or reading
/// the buffer. This is an indication of either a bug in the producer(s) or
/// malicious producer(s).
#[prost(uint64, optional, tag = "9")]
pub abi_violations: ::core::option::Option<u64>,
/// Num. of times the service detected packet loss on a trace writer
/// sequence. This is usually caused by exhaustion of available chunks in the
/// writer process's SMB. Note that this relies on the client's TraceWriter
/// indicating this loss to the service -- packets lost for other reasons are
/// not reflected in this stat.
#[prost(uint64, optional, tag = "19")]
pub trace_writer_packet_loss: ::core::option::Option<u64>,
}
/// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
/// visible as a unique sequence ID in the trace.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WriterStats {
/// This matches the TracePacket.trusted_packet_sequence_id and is used to
/// correlate the stats with the actual packet types.
#[prost(uint64, optional, tag = "1")]
pub sequence_id: ::core::option::Option<u64>,
/// The buffer index (0..N, as defined in the TraceConfig).
#[prost(uint32, optional, tag = "4")]
pub buffer: ::core::option::Option<u32>,
/// These two arrays have the same cardinality and match the cardinality of
/// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
/// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
/// for each bucket.
#[prost(uint64, repeated, tag = "2")]
pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
#[prost(int64, repeated, tag = "3")]
pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
}
/// This is set only when the TraceConfig specifies a TraceFilter.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FilterStats {
#[prost(uint64, optional, tag = "1")]
pub input_packets: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub input_bytes: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub output_bytes: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub errors: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub time_taken_ns: ::core::option::Option<u64>,
/// The number of bytes discarded by the filter (i.e. output - input).
/// The array has one entry for each buffer defined in the config (unless no
/// packets for that buffer were seen and hence filtered).
/// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
/// (output_bytes - input_bytes) because the filter might also discard
/// server-generated synthetic packets, that have no buffer index.
#[prost(uint64, repeated, packed = "false", tag = "20")]
pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum FinalFlushOutcome {
FinalFlushUnspecified = 0,
FinalFlushSucceeded = 1,
FinalFlushFailed = 2,
}
impl FinalFlushOutcome {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
Self::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
Self::FinalFlushFailed => "FINAL_FLUSH_FAILED",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"FINAL_FLUSH_UNSPECIFIED" => Some(Self::FinalFlushUnspecified),
"FINAL_FLUSH_SUCCEEDED" => Some(Self::FinalFlushSucceeded),
"FINAL_FLUSH_FAILED" => Some(Self::FinalFlushFailed),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidGameInterventionList {
#[prost(message, repeated, tag = "1")]
pub game_packages: ::prost::alloc::vec::Vec<
android_game_intervention_list::GamePackageInfo,
>,
/// True when at least one error occurred when parsing
/// game_mode_intervention.list
#[prost(bool, optional, tag = "2")]
pub parse_error: ::core::option::Option<bool>,
/// Failed to open / read game_mode_intervention.list
#[prost(bool, optional, tag = "3")]
pub read_error: ::core::option::Option<bool>,
}
/// Nested message and enum types in `AndroidGameInterventionList`.
pub mod android_game_intervention_list {
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GameModeInfo {
#[prost(uint32, optional, tag = "1")]
pub mode: ::core::option::Option<u32>,
#[prost(bool, optional, tag = "2")]
pub use_angle: ::core::option::Option<bool>,
#[prost(float, optional, tag = "3")]
pub resolution_downscale: ::core::option::Option<f32>,
#[prost(float, optional, tag = "4")]
pub fps: ::core::option::Option<f32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GamePackageInfo {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub uid: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub current_mode: ::core::option::Option<u32>,
#[prost(message, repeated, tag = "4")]
pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidLogPacket {
#[prost(message, repeated, tag = "1")]
pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
#[prost(message, optional, tag = "2")]
pub stats: ::core::option::Option<android_log_packet::Stats>,
}
/// Nested message and enum types in `AndroidLogPacket`.
pub mod android_log_packet {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LogEvent {
/// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
#[prost(enumeration = "super::AndroidLogId", optional, tag = "1")]
pub log_id: ::core::option::Option<i32>,
/// PID (TGID), TID and UID of the task that emitted the event.
#[prost(int32, optional, tag = "2")]
pub pid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub tid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub uid: ::core::option::Option<i32>,
/// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
/// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
/// processor will take care of realigning clocks using the ClockSnapshot(s).
#[prost(uint64, optional, tag = "5")]
pub timestamp: ::core::option::Option<u64>,
/// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
/// the second column of /system/etc/event-log-tags. For all other events,
/// |tag| is the app-specified argument passed to __android_log_write().
#[prost(string, optional, tag = "6")]
pub tag: ::core::option::Option<::prost::alloc::string::String>,
/// Empty when log_id == LID_EVENTS.
#[prost(enumeration = "super::AndroidLogPriority", optional, tag = "7")]
pub prio: ::core::option::Option<i32>,
/// Empty when log_id == LID_EVENTS.
#[prost(string, optional, tag = "8")]
pub message: ::core::option::Option<::prost::alloc::string::String>,
/// Only populated when log_id == LID_EVENTS.
#[prost(message, repeated, tag = "9")]
pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
}
/// Nested message and enum types in `LogEvent`.
pub mod log_event {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Arg {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(oneof = "arg::Value", tags = "2, 3, 4")]
pub value: ::core::option::Option<arg::Value>,
}
/// Nested message and enum types in `Arg`.
pub mod arg {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Value {
#[prost(int64, tag = "2")]
IntValue(i64),
#[prost(float, tag = "3")]
FloatValue(f32),
#[prost(string, tag = "4")]
StringValue(::prost::alloc::string::String),
}
}
}
/// Stats are emitted only upon Flush() and are monotonic (i.e. they are
/// absolute counters since the beginning of the lifetime of the tracing
/// session and NOT relative to the previous Stats snapshot).
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Stats {
/// Total number of log events seen, including errors and skipped entries
/// (num of events stored in the trace = total - failed - skipped).
#[prost(uint64, optional, tag = "1")]
pub num_total: ::core::option::Option<u64>,
/// Parser failures.
#[prost(uint64, optional, tag = "2")]
pub num_failed: ::core::option::Option<u64>,
/// Messages skipped due to filters.
#[prost(uint64, optional, tag = "3")]
pub num_skipped: ::core::option::Option<u64>,
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidSystemProperty {
#[prost(message, repeated, tag = "1")]
pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
}
/// Nested message and enum types in `AndroidSystemProperty`.
pub mod android_system_property {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PropertyValue {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub value: ::core::option::Option<::prost::alloc::string::String>,
}
}
/// A profiling event corresponding to a single camera frame. This message
/// collects important details and timestamps involved in producing a single
/// camera frame.
/// Next ID: 17
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidCameraFrameEvent {
/// Identifier for the CameraCaptureSession this frame originates from. See:
/// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
#[prost(uint64, optional, tag = "1")]
pub session_id: ::core::option::Option<u64>,
/// Identifier for the camera sensor that is the source of this frame. This may
/// be either a physical or logical camera (up to vendor interpretation).
#[prost(uint32, optional, tag = "2")]
pub camera_id: ::core::option::Option<u32>,
/// The frame number identifying this frame on this camera.
#[prost(int64, optional, tag = "3")]
pub frame_number: ::core::option::Option<i64>,
/// Identifier for the CaptureRequest. See:
/// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest>
///
/// If multiple cameras are streaming simultaneously, the request_id may be
/// used to identify which frames were captured in service of the same request.
#[prost(int64, optional, tag = "4")]
pub request_id: ::core::option::Option<i64>,
/// The CLOCK_BOOTTIME timestamp at which the camera framework request is
/// received by the camera HAL pipeline. Note that this request may wait for
/// some time before processing actually begins. See also
/// request_processing_started_ns.
#[prost(int64, optional, tag = "5")]
pub request_received_ns: ::core::option::Option<i64>,
/// The CLOCK_BOOTTIME timestamp at which the framework request is accepted for
/// processing by the camera HAL pipeline. This is the time at which the
/// pipeline actually begins to work on the request.
#[prost(int64, optional, tag = "6")]
pub request_processing_started_ns: ::core::option::Option<i64>,
/// The CLOCK_BOOTTIME timestamp at which the sensor begins its exposure.
#[prost(int64, optional, tag = "7")]
pub start_of_exposure_ns: ::core::option::Option<i64>,
/// The CLOCK_BOOTTIME timestamp corresponding to the sensor start of frame
/// event.
#[prost(int64, optional, tag = "8")]
pub start_of_frame_ns: ::core::option::Option<i64>,
/// The CLOCK_BOOTTIME timestamp at which the camera HAL has sent all responses
/// for the frame.
#[prost(int64, optional, tag = "9")]
pub responses_all_sent_ns: ::core::option::Option<i64>,
#[prost(
enumeration = "android_camera_frame_event::CaptureResultStatus",
optional,
tag = "10"
)]
pub capture_result_status: ::core::option::Option<i32>,
/// The number of sensor frames that were skipped between this frame and the
/// previous frame. Under normal operation, this should be zero. Any number
/// greater than zero indicates dropped sensor frames.
#[prost(int32, optional, tag = "11")]
pub skipped_sensor_frames: ::core::option::Option<i32>,
/// The value of CONTROL_CAPTURE_INTENT. See:
/// <https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#CONTROL_CAPTURE_INTENT>
#[prost(int32, optional, tag = "12")]
pub capture_intent: ::core::option::Option<i32>,
/// The number of streams in the capture request.
#[prost(int32, optional, tag = "13")]
pub num_streams: ::core::option::Option<i32>,
#[prost(message, repeated, tag = "14")]
pub node_processing_details: ::prost::alloc::vec::Vec<
android_camera_frame_event::CameraNodeProcessingDetails,
>,
/// These fields capture vendor-specific additions to this proto message. In
/// practice `vendor_data` typically contains a serialized message of the
/// vendor's design, and `vendor_data_version` is incremented each time there
/// is a backwards incompatible change made to the message.
#[prost(int32, optional, tag = "15")]
pub vendor_data_version: ::core::option::Option<i32>,
#[prost(bytes = "vec", optional, tag = "16")]
pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
/// Nested message and enum types in `AndroidCameraFrameEvent`.
pub mod android_camera_frame_event {
/// A profiling event corresponding to a single node processing within the camera
/// pipeline. Intuitively this corresponds to a single stage of processing to
/// produce a camera frame.
/// Next ID: 6
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CameraNodeProcessingDetails {
#[prost(int64, optional, tag = "1")]
pub node_id: ::core::option::Option<i64>,
/// The timestamp at which node processing begins to run.
#[prost(int64, optional, tag = "2")]
pub start_processing_ns: ::core::option::Option<i64>,
/// The timestamp at which node processing finishes running.
#[prost(int64, optional, tag = "3")]
pub end_processing_ns: ::core::option::Option<i64>,
/// The delay between inputs becoming ready and the node actually beginning to
/// run.
#[prost(int64, optional, tag = "4")]
pub scheduling_latency_ns: ::core::option::Option<i64>,
}
/// The error status, if any, reported to the camera framework. Any status
/// other than STATUS_OK indicates a dropped frame.
/// Next Enum: 6
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum CaptureResultStatus {
StatusUnspecified = 0,
StatusOk = 1,
/// Early metadata was returned to the camera framework with an error.
StatusEarlyMetadataError = 2,
/// Final metadata was returned to the camera framework with an error.
StatusFinalMetadataError = 3,
/// One or more buffers were returned to the camera framework with an error.
StatusBufferError = 4,
/// The frame was dropped as a result of a flush operation.
StatusFlushError = 5,
}
impl CaptureResultStatus {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::StatusUnspecified => "STATUS_UNSPECIFIED",
Self::StatusOk => "STATUS_OK",
Self::StatusEarlyMetadataError => "STATUS_EARLY_METADATA_ERROR",
Self::StatusFinalMetadataError => "STATUS_FINAL_METADATA_ERROR",
Self::StatusBufferError => "STATUS_BUFFER_ERROR",
Self::StatusFlushError => "STATUS_FLUSH_ERROR",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"STATUS_UNSPECIFIED" => Some(Self::StatusUnspecified),
"STATUS_OK" => Some(Self::StatusOk),
"STATUS_EARLY_METADATA_ERROR" => Some(Self::StatusEarlyMetadataError),
"STATUS_FINAL_METADATA_ERROR" => Some(Self::StatusFinalMetadataError),
"STATUS_BUFFER_ERROR" => Some(Self::StatusBufferError),
"STATUS_FLUSH_ERROR" => Some(Self::StatusFlushError),
_ => None,
}
}
}
}
/// A profiling event that may be emitted periodically (i.e., at a slower rate
/// than `AndroidCameraFrameEvent`s) to record fixed and aggregated camera
/// session-specific values.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidCameraSessionStats {
/// Identifier for the CameraCaptureSession this frame originates from. See:
/// <https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession>
#[prost(uint64, optional, tag = "1")]
pub session_id: ::core::option::Option<u64>,
#[prost(message, optional, tag = "2")]
pub graph: ::core::option::Option<android_camera_session_stats::CameraGraph>,
}
/// Nested message and enum types in `AndroidCameraSessionStats`.
pub mod android_camera_session_stats {
/// Although vendor implementations may vary, camera pipeline processing is
/// typically arranged into a directed graph-like structure. This message is
/// used to record that graph.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CameraGraph {
#[prost(message, repeated, tag = "1")]
pub nodes: ::prost::alloc::vec::Vec<camera_graph::CameraNode>,
#[prost(message, repeated, tag = "2")]
pub edges: ::prost::alloc::vec::Vec<camera_graph::CameraEdge>,
}
/// Nested message and enum types in `CameraGraph`.
pub mod camera_graph {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CameraNode {
#[prost(int64, optional, tag = "1")]
pub node_id: ::core::option::Option<i64>,
/// A list of inputs consumed by this node.
#[prost(int64, repeated, packed = "false", tag = "2")]
pub input_ids: ::prost::alloc::vec::Vec<i64>,
/// A list of outputs produced by this node.
#[prost(int64, repeated, packed = "false", tag = "3")]
pub output_ids: ::prost::alloc::vec::Vec<i64>,
/// These fields capture vendor-specific additions to this proto message. In
/// practice `vendor_data` typically contains a serialized message of the
/// vendor's design, and `vendor_data_version` is incremented each time there
/// is a backwards incompatible change made to the message.
#[prost(int32, optional, tag = "4")]
pub vendor_data_version: ::core::option::Option<i32>,
#[prost(bytes = "vec", optional, tag = "5")]
pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
/// An adjacency list describing connections between CameraNodes, mapping
/// nodes and their outputs to other nodes that consume them as inputs.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CameraEdge {
/// The pair of IDs identifying the node and output connected by this edge.
#[prost(int64, optional, tag = "1")]
pub output_node_id: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "2")]
pub output_id: ::core::option::Option<i64>,
/// The pair of IDs identifying the node and input connected by this edge.
#[prost(int64, optional, tag = "3")]
pub input_node_id: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "4")]
pub input_id: ::core::option::Option<i64>,
/// These fields capture vendor-specific additions to this proto message. In
/// practice `vendor_data` typically contains a serialized message of the
/// vendor's design, and `vendor_data_version` is incremented each time there
/// is a backwards incompatible change made to the message.
#[prost(int32, optional, tag = "5")]
pub vendor_data_version: ::core::option::Option<i32>,
#[prost(bytes = "vec", optional, tag = "6")]
pub vendor_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
}
}
/// Generated by SurfaceFlinger's FrameTimeline (go/adaptive-scheduling-fr).
/// Used in comparing the expected timeline of a frame to the actual timeline.
/// Key terms:
/// 1) DisplayFrame - represents SurfaceFlinger's work on a frame(composited)
/// 2) SurfaceFrame - represents App's work on its frame
/// 3) Timeline = start to end of a component's(app/SF) work on a frame.
/// SurfaceFlinger composites frames from many apps together, so
/// One DisplayFrame can map to N SurfaceFrame(s)
/// This relationship can be reconstructed by using
/// DisplayFrame.token = SurfaceFrame.display_frame_token
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FrameTimelineEvent {
#[prost(oneof = "frame_timeline_event::Event", tags = "1, 2, 3, 4, 5")]
pub event: ::core::option::Option<frame_timeline_event::Event>,
}
/// Nested message and enum types in `FrameTimelineEvent`.
pub mod frame_timeline_event {
/// Indicates the start of expected timeline slice for SurfaceFrames.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ExpectedSurfaceFrameStart {
/// Cookie used to correlate between the start and end messages of the same
/// frame. Since all values except the ts are same for start and end, cookie
/// helps in preventing redundant data transmission.
/// The same cookie is used only by start and end messages of a single frame
/// and is otherwise unique.
#[prost(int64, optional, tag = "1")]
pub cookie: ::core::option::Option<i64>,
/// Token received by the app for its work. Can be shared between multiple
/// layers of the same app (example: pip mode).
#[prost(int64, optional, tag = "2")]
pub token: ::core::option::Option<i64>,
/// The corresponding DisplayFrame token is required to link the App's work
/// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
/// DisplayFrame.
/// this.display_frame_token = DisplayFrame.token
#[prost(int64, optional, tag = "3")]
pub display_frame_token: ::core::option::Option<i64>,
/// Pid of the app. Used in creating the timeline tracks (and slices) inside
/// the respective process track group.
#[prost(int32, optional, tag = "4")]
pub pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "5")]
pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
}
/// Indicates the start of actual timeline slice for SurfaceFrames. Also
/// includes the jank information.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ActualSurfaceFrameStart {
/// Cookie used to correlate between the start and end messages of the same
/// frame. Since all values except the ts are same for start and end, cookie
/// helps in preventing redundant data transmission.
/// The same cookie is used only by start and end messages of a single frame
/// and is otherwise unique.
#[prost(int64, optional, tag = "1")]
pub cookie: ::core::option::Option<i64>,
/// Token received by the app for its work. Can be shared between multiple
/// layers of the same app (example: pip mode).
#[prost(int64, optional, tag = "2")]
pub token: ::core::option::Option<i64>,
/// The corresponding DisplayFrame token is required to link the App's work
/// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
/// DisplayFrame.
/// this.display_frame_token = DisplayFrame.token
#[prost(int64, optional, tag = "3")]
pub display_frame_token: ::core::option::Option<i64>,
/// Pid of the app. Used in creating the timeline tracks (and slices) inside
/// the respective process track group.
#[prost(int32, optional, tag = "4")]
pub pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "5")]
pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(enumeration = "PresentType", optional, tag = "6")]
pub present_type: ::core::option::Option<i32>,
#[prost(bool, optional, tag = "7")]
pub on_time_finish: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "8")]
pub gpu_composition: ::core::option::Option<bool>,
/// A bitmask of JankType. More than one reason can be attributed to a janky
/// frame.
#[prost(int32, optional, tag = "9")]
pub jank_type: ::core::option::Option<i32>,
#[prost(enumeration = "PredictionType", optional, tag = "10")]
pub prediction_type: ::core::option::Option<i32>,
#[prost(bool, optional, tag = "11")]
pub is_buffer: ::core::option::Option<bool>,
#[prost(enumeration = "JankSeverityType", optional, tag = "12")]
pub jank_severity_type: ::core::option::Option<i32>,
}
/// Indicates the start of expected timeline slice for DisplayFrames.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ExpectedDisplayFrameStart {
/// Cookie used to correlate between the start and end messages of the same
/// frame. Since all values except the ts are same for start and end, cookie
/// helps in preventing redundant data transmission.
/// The same cookie is used only by start and end messages of a single frame
/// and is otherwise unique.
#[prost(int64, optional, tag = "1")]
pub cookie: ::core::option::Option<i64>,
/// Token received by SurfaceFlinger for its work
/// this.token = SurfaceFrame.display_frame_token
#[prost(int64, optional, tag = "2")]
pub token: ::core::option::Option<i64>,
/// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
/// inside the SurfaceFlinger process group.
#[prost(int32, optional, tag = "3")]
pub pid: ::core::option::Option<i32>,
}
/// Indicates the start of actual timeline slice for DisplayFrames. Also
/// includes the jank information.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ActualDisplayFrameStart {
/// Cookie used to correlate between the start and end messages of the same
/// frame. Since all values except the ts are same for start and end, cookie
/// helps in preventing redundant data transmission.
/// The same cookie is used only by start and end messages of a single frame
/// and is otherwise unique.
#[prost(int64, optional, tag = "1")]
pub cookie: ::core::option::Option<i64>,
/// Token received by SurfaceFlinger for its work
/// this.token = SurfaceFrame.display_frame_token
#[prost(int64, optional, tag = "2")]
pub token: ::core::option::Option<i64>,
/// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
/// inside the SurfaceFlinger process group.
#[prost(int32, optional, tag = "3")]
pub pid: ::core::option::Option<i32>,
#[prost(enumeration = "PresentType", optional, tag = "4")]
pub present_type: ::core::option::Option<i32>,
#[prost(bool, optional, tag = "5")]
pub on_time_finish: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "6")]
pub gpu_composition: ::core::option::Option<bool>,
/// A bitmask of JankType. More than one reason can be attributed to a janky
/// frame.
#[prost(int32, optional, tag = "7")]
pub jank_type: ::core::option::Option<i32>,
#[prost(enumeration = "PredictionType", optional, tag = "8")]
pub prediction_type: ::core::option::Option<i32>,
#[prost(enumeration = "JankSeverityType", optional, tag = "9")]
pub jank_severity_type: ::core::option::Option<i32>,
}
/// FrameEnd just sends the cookie to indicate that the corresponding
/// <display/surface>frame slice's end.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FrameEnd {
#[prost(int64, optional, tag = "1")]
pub cookie: ::core::option::Option<i64>,
}
/// Specifies the reason(s) most likely to have caused the jank.
/// Used as a bitmask.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum JankType {
JankUnspecified = 0,
JankNone = 1,
JankSfScheduling = 2,
JankPredictionError = 4,
JankDisplayHal = 8,
JankSfCpuDeadlineMissed = 16,
JankSfGpuDeadlineMissed = 32,
JankAppDeadlineMissed = 64,
JankBufferStuffing = 128,
JankUnknown = 256,
JankSfStuffing = 512,
JankDropped = 1024,
}
impl JankType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::JankUnspecified => "JANK_UNSPECIFIED",
Self::JankNone => "JANK_NONE",
Self::JankSfScheduling => "JANK_SF_SCHEDULING",
Self::JankPredictionError => "JANK_PREDICTION_ERROR",
Self::JankDisplayHal => "JANK_DISPLAY_HAL",
Self::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
Self::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
Self::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
Self::JankBufferStuffing => "JANK_BUFFER_STUFFING",
Self::JankUnknown => "JANK_UNKNOWN",
Self::JankSfStuffing => "JANK_SF_STUFFING",
Self::JankDropped => "JANK_DROPPED",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"JANK_UNSPECIFIED" => Some(Self::JankUnspecified),
"JANK_NONE" => Some(Self::JankNone),
"JANK_SF_SCHEDULING" => Some(Self::JankSfScheduling),
"JANK_PREDICTION_ERROR" => Some(Self::JankPredictionError),
"JANK_DISPLAY_HAL" => Some(Self::JankDisplayHal),
"JANK_SF_CPU_DEADLINE_MISSED" => Some(Self::JankSfCpuDeadlineMissed),
"JANK_SF_GPU_DEADLINE_MISSED" => Some(Self::JankSfGpuDeadlineMissed),
"JANK_APP_DEADLINE_MISSED" => Some(Self::JankAppDeadlineMissed),
"JANK_BUFFER_STUFFING" => Some(Self::JankBufferStuffing),
"JANK_UNKNOWN" => Some(Self::JankUnknown),
"JANK_SF_STUFFING" => Some(Self::JankSfStuffing),
"JANK_DROPPED" => Some(Self::JankDropped),
_ => None,
}
}
}
/// Specifies the severity of a jank.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum JankSeverityType {
SeverityUnknown = 0,
SeverityNone = 1,
SeverityPartial = 2,
SeverityFull = 3,
}
impl JankSeverityType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::SeverityUnknown => "SEVERITY_UNKNOWN",
Self::SeverityNone => "SEVERITY_NONE",
Self::SeverityPartial => "SEVERITY_PARTIAL",
Self::SeverityFull => "SEVERITY_FULL",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SEVERITY_UNKNOWN" => Some(Self::SeverityUnknown),
"SEVERITY_NONE" => Some(Self::SeverityNone),
"SEVERITY_PARTIAL" => Some(Self::SeverityPartial),
"SEVERITY_FULL" => Some(Self::SeverityFull),
_ => None,
}
}
}
/// Specifies how a frame was presented on screen w.r.t. timing.
/// Can be different for SurfaceFrame and DisplayFrame.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum PresentType {
PresentUnspecified = 0,
PresentOnTime = 1,
PresentLate = 2,
PresentEarly = 3,
PresentDropped = 4,
PresentUnknown = 5,
}
impl PresentType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::PresentUnspecified => "PRESENT_UNSPECIFIED",
Self::PresentOnTime => "PRESENT_ON_TIME",
Self::PresentLate => "PRESENT_LATE",
Self::PresentEarly => "PRESENT_EARLY",
Self::PresentDropped => "PRESENT_DROPPED",
Self::PresentUnknown => "PRESENT_UNKNOWN",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PRESENT_UNSPECIFIED" => Some(Self::PresentUnspecified),
"PRESENT_ON_TIME" => Some(Self::PresentOnTime),
"PRESENT_LATE" => Some(Self::PresentLate),
"PRESENT_EARLY" => Some(Self::PresentEarly),
"PRESENT_DROPPED" => Some(Self::PresentDropped),
"PRESENT_UNKNOWN" => Some(Self::PresentUnknown),
_ => None,
}
}
}
/// Specifies if the predictions for the frame are still valid, expired or
/// unknown.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum PredictionType {
PredictionUnspecified = 0,
PredictionValid = 1,
PredictionExpired = 2,
PredictionUnknown = 3,
}
impl PredictionType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
Self::PredictionValid => "PREDICTION_VALID",
Self::PredictionExpired => "PREDICTION_EXPIRED",
Self::PredictionUnknown => "PREDICTION_UNKNOWN",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PREDICTION_UNSPECIFIED" => Some(Self::PredictionUnspecified),
"PREDICTION_VALID" => Some(Self::PredictionValid),
"PREDICTION_EXPIRED" => Some(Self::PredictionExpired),
"PREDICTION_UNKNOWN" => Some(Self::PredictionUnknown),
_ => None,
}
}
}
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Event {
#[prost(message, tag = "1")]
ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
#[prost(message, tag = "2")]
ActualDisplayFrameStart(ActualDisplayFrameStart),
#[prost(message, tag = "3")]
ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
#[prost(message, tag = "4")]
ActualSurfaceFrameStart(ActualSurfaceFrameStart),
#[prost(message, tag = "5")]
FrameEnd(FrameEnd),
}
}
/// Generated by Android's GpuService.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GpuMemTotalEvent {
#[prost(uint32, optional, tag = "1")]
pub gpu_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub pid: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub size: ::core::option::Option<u64>,
}
/// Generated by Android's SurfaceFlinger.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GraphicsFrameEvent {
#[prost(message, optional, tag = "1")]
pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
}
/// Nested message and enum types in `GraphicsFrameEvent`.
pub mod graphics_frame_event {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BufferEvent {
#[prost(uint32, optional, tag = "1")]
pub frame_number: ::core::option::Option<u32>,
#[prost(enumeration = "BufferEventType", optional, tag = "2")]
pub r#type: ::core::option::Option<i32>,
#[prost(string, optional, tag = "3")]
pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
/// If no duration is set, the event is an instant event.
#[prost(uint64, optional, tag = "4")]
pub duration_ns: ::core::option::Option<u64>,
/// Unique buffer identifier.
#[prost(uint32, optional, tag = "5")]
pub buffer_id: ::core::option::Option<u32>,
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum BufferEventType {
Unspecified = 0,
Dequeue = 1,
Queue = 2,
Post = 3,
AcquireFence = 4,
Latch = 5,
/// HWC will compose this buffer
HwcCompositionQueued = 6,
/// renderEngine composition
FallbackComposition = 7,
PresentFence = 8,
ReleaseFence = 9,
Modify = 10,
Detach = 11,
Attach = 12,
Cancel = 13,
}
impl BufferEventType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "UNSPECIFIED",
Self::Dequeue => "DEQUEUE",
Self::Queue => "QUEUE",
Self::Post => "POST",
Self::AcquireFence => "ACQUIRE_FENCE",
Self::Latch => "LATCH",
Self::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
Self::FallbackComposition => "FALLBACK_COMPOSITION",
Self::PresentFence => "PRESENT_FENCE",
Self::ReleaseFence => "RELEASE_FENCE",
Self::Modify => "MODIFY",
Self::Detach => "DETACH",
Self::Attach => "ATTACH",
Self::Cancel => "CANCEL",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNSPECIFIED" => Some(Self::Unspecified),
"DEQUEUE" => Some(Self::Dequeue),
"QUEUE" => Some(Self::Queue),
"POST" => Some(Self::Post),
"ACQUIRE_FENCE" => Some(Self::AcquireFence),
"LATCH" => Some(Self::Latch),
"HWC_COMPOSITION_QUEUED" => Some(Self::HwcCompositionQueued),
"FALLBACK_COMPOSITION" => Some(Self::FallbackComposition),
"PRESENT_FENCE" => Some(Self::PresentFence),
"RELEASE_FENCE" => Some(Self::ReleaseFence),
"MODIFY" => Some(Self::Modify),
"DETACH" => Some(Self::Detach),
"ATTACH" => Some(Self::Attach),
"CANCEL" => Some(Self::Cancel),
_ => None,
}
}
}
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct InitialDisplayState {
/// Same values as android.view.Display.STATE_*
#[prost(int32, optional, tag = "1")]
pub display_state: ::core::option::Option<i32>,
#[prost(double, optional, tag = "2")]
pub brightness: ::core::option::Option<f64>,
}
/// NetworkPacketEvent records the details of a single packet sent or received
/// on the network (in Linux kernel terminology, one sk_buff struct).
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NetworkPacketEvent {
/// The direction traffic is flowing for this event.
#[prost(enumeration = "TrafficDirection", optional, tag = "1")]
pub direction: ::core::option::Option<i32>,
/// The name of the interface if available (e.g. 'rmnet0').
#[prost(string, optional, tag = "2")]
pub interface: ::core::option::Option<::prost::alloc::string::String>,
/// The length of the packet in bytes (wire_size - L2_header_size). Ignored
/// when using NetworkPacketEvent as the ctx in either NetworkPacketBundle or
/// NetworkPacketContext.
#[prost(uint32, optional, tag = "3")]
pub length: ::core::option::Option<u32>,
/// The Linux user id associated with the packet's socket.
#[prost(uint32, optional, tag = "4")]
pub uid: ::core::option::Option<u32>,
/// The Android network tag associated with the packet's socket.
#[prost(uint32, optional, tag = "5")]
pub tag: ::core::option::Option<u32>,
/// The packet's IP protocol (TCP=6, UDP=17, etc).
#[prost(uint32, optional, tag = "6")]
pub ip_proto: ::core::option::Option<u32>,
/// The packet's TCP flags as a bitmask (FIN=0x1, SYN=0x2, RST=0x4, etc).
#[prost(uint32, optional, tag = "7")]
pub tcp_flags: ::core::option::Option<u32>,
/// The local udp/tcp port of the packet.
#[prost(uint32, optional, tag = "8")]
pub local_port: ::core::option::Option<u32>,
/// The remote udp/tcp port of the packet.
#[prost(uint32, optional, tag = "9")]
pub remote_port: ::core::option::Option<u32>,
/// The 1-byte ICMP type identifier.
#[prost(uint32, optional, tag = "10")]
pub icmp_type: ::core::option::Option<u32>,
/// The 1-byte ICMP code identifier.
#[prost(uint32, optional, tag = "11")]
pub icmp_code: ::core::option::Option<u32>,
}
/// NetworkPacketBundle bundles one or more packets sharing the same attributes.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NetworkPacketBundle {
/// The timestamp of the i-th packet encoded as the nanoseconds since the
/// enclosing TracePacket's timestamp.
#[prost(uint64, repeated, tag = "3")]
pub packet_timestamps: ::prost::alloc::vec::Vec<u64>,
/// The length of the i-th packet in bytes (wire_size - L2_header_size).
#[prost(uint32, repeated, tag = "4")]
pub packet_lengths: ::prost::alloc::vec::Vec<u32>,
/// Total number of packets in the bundle (when above aggregation_threshold).
#[prost(uint32, optional, tag = "5")]
pub total_packets: ::core::option::Option<u32>,
/// Duration between first and last packet (when above aggregation_threshold).
#[prost(uint64, optional, tag = "6")]
pub total_duration: ::core::option::Option<u64>,
/// Total packet length in bytes (when above aggregation_threshold).
#[prost(uint64, optional, tag = "7")]
pub total_length: ::core::option::Option<u64>,
#[prost(oneof = "network_packet_bundle::PacketContext", tags = "1, 2")]
pub packet_context: ::core::option::Option<network_packet_bundle::PacketContext>,
}
/// Nested message and enum types in `NetworkPacketBundle`.
pub mod network_packet_bundle {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum PacketContext {
/// The intern id for looking up the associated packet context.
#[prost(uint64, tag = "1")]
Iid(u64),
/// The inlined context for events in this bundle.
#[prost(message, tag = "2")]
Ctx(super::NetworkPacketEvent),
}
}
/// An internable packet context.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NetworkPacketContext {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
#[prost(message, optional, tag = "2")]
pub ctx: ::core::option::Option<NetworkPacketEvent>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PackagesList {
#[prost(message, repeated, tag = "1")]
pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
/// At least one error occurred parsing the packages.list.
#[prost(bool, optional, tag = "2")]
pub parse_error: ::core::option::Option<bool>,
/// Failed to open / read packages.list.
#[prost(bool, optional, tag = "3")]
pub read_error: ::core::option::Option<bool>,
}
/// Nested message and enum types in `PackagesList`.
pub mod packages_list {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PackageInfo {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub uid: ::core::option::Option<u64>,
#[prost(bool, optional, tag = "3")]
pub debuggable: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "4")]
pub profileable_from_shell: ::core::option::Option<bool>,
#[prost(int64, optional, tag = "5")]
pub version_code: ::core::option::Option<i64>,
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PixelModemEvents {
/// Pigweed-format dehydrated events.
#[prost(bytes = "vec", repeated, tag = "1")]
pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
/// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
/// timestamp is the absolute timestamp of the first event. Subsequent
/// timestamps are deltas from the previous timestamp.
/// The nth entry from `events` gets the nth entry here.
#[prost(uint64, repeated, packed = "false", tag = "2")]
pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
}
/// NB: this is not emitted in the trace but can be prepended later.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PixelModemTokenDatabase {
/// Pigweed-format database to allow event rehydration.
#[prost(bytes = "vec", optional, tag = "1")]
pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
/// represents a single log entry
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProtoLogMessage {
/// log statement identifier, created from message string and log level.
#[prost(fixed64, optional, tag = "1")]
pub message_id: ::core::option::Option<u64>,
/// string parameters passed to the log call that have been interned.
#[prost(uint32, repeated, packed = "false", tag = "2")]
pub str_param_iids: ::prost::alloc::vec::Vec<u32>,
/// integer parameters passed to the log call.
#[prost(sint64, repeated, packed = "false", tag = "3")]
pub sint64_params: ::prost::alloc::vec::Vec<i64>,
/// floating point parameters passed to the log call.
#[prost(double, repeated, packed = "false", tag = "4")]
pub double_params: ::prost::alloc::vec::Vec<f64>,
/// boolean parameters passed to the log call.
#[prost(int32, repeated, packed = "false", tag = "5")]
pub boolean_params: ::prost::alloc::vec::Vec<i32>,
/// id of the interned stacktrace string
/// (only dumped if explicitly confuigured to do so)
#[prost(uint32, optional, tag = "6")]
pub stacktrace_iid: ::core::option::Option<u32>,
}
/// contains all the data required to fully decode the protolog messages
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProtoLogViewerConfig {
#[prost(message, repeated, tag = "1")]
pub messages: ::prost::alloc::vec::Vec<proto_log_viewer_config::MessageData>,
#[prost(message, repeated, tag = "2")]
pub groups: ::prost::alloc::vec::Vec<proto_log_viewer_config::Group>,
}
/// Nested message and enum types in `ProtoLogViewerConfig`.
pub mod proto_log_viewer_config {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MessageData {
/// the id of the message that is logged in a ProtoLogMessage
#[prost(fixed64, optional, tag = "1")]
pub message_id: ::core::option::Option<u64>,
/// the string representation of the message
#[prost(string, optional, tag = "2")]
pub message: ::core::option::Option<::prost::alloc::string::String>,
/// the level of the message
#[prost(enumeration = "super::ProtoLogLevel", optional, tag = "3")]
pub level: ::core::option::Option<i32>,
/// the id of the log group this message belongs to
#[prost(uint32, optional, tag = "4")]
pub group_id: ::core::option::Option<u32>,
/// path to the file where the message was logged
#[prost(string, optional, tag = "5")]
pub location: ::core::option::Option<::prost::alloc::string::String>,
}
/// information about a ProtoLog log group
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Group {
#[prost(uint32, optional, tag = "1")]
pub id: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub tag: ::core::option::Option<::prost::alloc::string::String>,
}
}
/// ShellTransition messages record information about the shell transitions in
/// the system. This is used to track the animations that are created and execute
/// through the shell transition system.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ShellTransition {
/// The unique identifier of the transition.
#[prost(int32, optional, tag = "1")]
pub id: ::core::option::Option<i32>,
/// The time the transition was created on the WM side
/// (using SystemClock.elapsedRealtimeNanos())
#[prost(int64, optional, tag = "2")]
pub create_time_ns: ::core::option::Option<i64>,
/// The time the transition was sent from the WM side to shell
/// (using SystemClock.elapsedRealtimeNanos())
#[prost(int64, optional, tag = "3")]
pub send_time_ns: ::core::option::Option<i64>,
/// The time the transition was dispatched by shell to execute
/// (using SystemClock.elapsedRealtimeNanos())
#[prost(int64, optional, tag = "4")]
pub dispatch_time_ns: ::core::option::Option<i64>,
/// If the transition merge was accepted by the transition handler, this
/// contains the time the transition was merged into transition with id
/// `merge_target`.
/// (using SystemClock.elapsedRealtimeNanos())
#[prost(int64, optional, tag = "5")]
pub merge_time_ns: ::core::option::Option<i64>,
/// The time shell proposed the transition should be merged to the transition
/// handler into transition with id `merge_target`.
/// (using SystemClock.elapsedRealtimeNanos()).
#[prost(int64, optional, tag = "6")]
pub merge_request_time_ns: ::core::option::Option<i64>,
/// If the transition was aborted on the shell side, this is the time that
/// occurred.
/// (using SystemClock.elapsedRealtimeNanos())
#[prost(int64, optional, tag = "7")]
pub shell_abort_time_ns: ::core::option::Option<i64>,
/// If the transition was aborted on the wm side, this is the time that
/// occurred.
/// (using SystemClock.elapsedRealtimeNanos())
#[prost(int64, optional, tag = "8")]
pub wm_abort_time_ns: ::core::option::Option<i64>,
/// The time WM considers the transition to be complete.
/// (using SystemClock.elapsedRealtimeNanos())
#[prost(int64, optional, tag = "9")]
pub finish_time_ns: ::core::option::Option<i64>,
/// The id of the transaction that WM proposed to use as the starting
/// transaction. It contains all the layer changes required to setup the
/// transition and should be executed right at the start of the transition
/// by the transition handler.
#[prost(uint64, optional, tag = "10")]
pub start_transaction_id: ::core::option::Option<u64>,
/// The if of the transaction that WM proposed to use as the finish
/// transaction. It contains all the layer changes required to set the final
/// state of the transition.
#[prost(uint64, optional, tag = "11")]
pub finish_transaction_id: ::core::option::Option<u64>,
/// The id of the handler that executed the transition. A HandlerMappings
/// message in the trace will contain the mapping of id to a string
/// representation of the handler.
#[prost(int32, optional, tag = "12")]
pub handler: ::core::option::Option<i32>,
/// The transition type of this transition (e.g. TO_FRONT, OPEN, CLOSE).
#[prost(int32, optional, tag = "13")]
pub r#type: ::core::option::Option<i32>,
/// The list of targets that are part of this transition.
#[prost(message, repeated, tag = "14")]
pub targets: ::prost::alloc::vec::Vec<shell_transition::Target>,
/// The id of the transition we have requested to merge or have merged this
/// transition into.
#[prost(int32, optional, tag = "15")]
pub merge_target: ::core::option::Option<i32>,
/// The flags set on this transition.
#[prost(int32, optional, tag = "16")]
pub flags: ::core::option::Option<i32>,
/// The time the starting window was removed. Tracked because this can
/// happen after the transition finishes, but the app may not yet be visible
/// until the starting window is removed. So in a sense the transition is not
/// finished until the starting window is removed. (b/284302118)
/// (using SystemClock.elapsedRealtimeNanos())
#[prost(int64, optional, tag = "17")]
pub starting_window_remove_time_ns: ::core::option::Option<i64>,
}
/// Nested message and enum types in `ShellTransition`.
pub mod shell_transition {
/// Contains the information about the windows targeted in a transition.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Target {
/// The transition mode of this target (e.g. TO_FRONT, CLOSE...)
#[prost(int32, optional, tag = "1")]
pub mode: ::core::option::Option<i32>,
/// The layer id of this target.
#[prost(int32, optional, tag = "2")]
pub layer_id: ::core::option::Option<i32>,
/// The window id of this target.
#[prost(int32, optional, tag = "3")]
pub window_id: ::core::option::Option<i32>,
/// The flags set on this target.
#[prost(int32, optional, tag = "4")]
pub flags: ::core::option::Option<i32>,
}
}
/// Contains mappings from handler ids to string representation of the handlers.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ShellHandlerMappings {
#[prost(message, repeated, tag = "1")]
pub mapping: ::prost::alloc::vec::Vec<ShellHandlerMapping>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ShellHandlerMapping {
/// The id of the handler used in the ShellTransition message.
#[prost(int32, optional, tag = "1")]
pub id: ::core::option::Option<i32>,
/// A human readable and meaningful string representation of the handler.
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct RectProto {
#[prost(int32, optional, tag = "1")]
pub left: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub top: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub right: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub bottom: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RegionProto {
#[prost(message, repeated, tag = "2")]
pub rect: ::prost::alloc::vec::Vec<RectProto>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SizeProto {
#[prost(int32, optional, tag = "1")]
pub w: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub h: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TransformProto {
#[prost(float, optional, tag = "1")]
pub dsdx: ::core::option::Option<f32>,
#[prost(float, optional, tag = "2")]
pub dtdx: ::core::option::Option<f32>,
#[prost(float, optional, tag = "3")]
pub dsdy: ::core::option::Option<f32>,
#[prost(float, optional, tag = "4")]
pub dtdy: ::core::option::Option<f32>,
#[prost(int32, optional, tag = "5")]
pub r#type: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ColorProto {
#[prost(float, optional, tag = "1")]
pub r: ::core::option::Option<f32>,
#[prost(float, optional, tag = "2")]
pub g: ::core::option::Option<f32>,
#[prost(float, optional, tag = "3")]
pub b: ::core::option::Option<f32>,
#[prost(float, optional, tag = "4")]
pub a: ::core::option::Option<f32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InputWindowInfoProto {
#[prost(uint32, optional, tag = "1")]
pub layout_params_flags: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub layout_params_type: ::core::option::Option<i32>,
#[prost(message, optional, tag = "3")]
pub frame: ::core::option::Option<RectProto>,
#[prost(message, optional, tag = "4")]
pub touchable_region: ::core::option::Option<RegionProto>,
#[prost(int32, optional, tag = "5")]
pub surface_inset: ::core::option::Option<i32>,
#[prost(bool, optional, tag = "6")]
pub visible: ::core::option::Option<bool>,
#[deprecated]
#[prost(bool, optional, tag = "7")]
pub can_receive_keys: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "8")]
pub focusable: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "9")]
pub has_wallpaper: ::core::option::Option<bool>,
#[prost(float, optional, tag = "10")]
pub global_scale_factor: ::core::option::Option<f32>,
#[deprecated]
#[prost(float, optional, tag = "11")]
pub window_x_scale: ::core::option::Option<f32>,
#[deprecated]
#[prost(float, optional, tag = "12")]
pub window_y_scale: ::core::option::Option<f32>,
#[prost(int32, optional, tag = "13")]
pub crop_layer_id: ::core::option::Option<i32>,
#[prost(bool, optional, tag = "14")]
pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
#[prost(message, optional, tag = "15")]
pub touchable_region_crop: ::core::option::Option<RectProto>,
#[prost(message, optional, tag = "16")]
pub transform: ::core::option::Option<TransformProto>,
#[prost(uint32, optional, tag = "17")]
pub input_config: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BlurRegion {
#[prost(uint32, optional, tag = "1")]
pub blur_radius: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub corner_radius_tl: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub corner_radius_tr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub corner_radius_bl: ::core::option::Option<u32>,
#[prost(float, optional, tag = "5")]
pub corner_radius_br: ::core::option::Option<f32>,
#[prost(float, optional, tag = "6")]
pub alpha: ::core::option::Option<f32>,
#[prost(int32, optional, tag = "7")]
pub left: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "8")]
pub top: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "9")]
pub right: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "10")]
pub bottom: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ColorTransformProto {
/// This will be a 4x4 matrix of float values
#[prost(float, repeated, tag = "1")]
pub val: ::prost::alloc::vec::Vec<f32>,
}
/// Message used by Winscope to process legacy trace files.
/// Represents a file full of surface flinger trace entries.
/// Encoded, it should start with 0x4c 0x59 0x52 0x54 0x52 0x41 0x43 0x45
/// (.LYRTRACE), such that they can be easily identified.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LayersTraceFileProto {
/// Must be the first field, set to value in MagicNumber
#[prost(fixed64, optional, tag = "1")]
pub magic_number: ::core::option::Option<u64>,
#[prost(message, repeated, tag = "2")]
pub entry: ::prost::alloc::vec::Vec<LayersSnapshotProto>,
/// Offset between real-time clock and elapsed time clock in nanoseconds.
/// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
/// systemTime(SYSTEM_TIME_MONOTONIC)
#[prost(fixed64, optional, tag = "3")]
pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
}
/// Nested message and enum types in `LayersTraceFileProto`.
pub mod layers_trace_file_proto {
/// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
/// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
/// and there's no nice way to put 64bit constants into .proto files.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum MagicNumber {
Invalid = 0,
/// LYRT (little-endian ASCII)
L = 1414682956,
/// RACE (little-endian ASCII)
H = 1162035538,
}
impl MagicNumber {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Invalid => "INVALID",
Self::L => "MAGIC_NUMBER_L",
Self::H => "MAGIC_NUMBER_H",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"INVALID" => Some(Self::Invalid),
"MAGIC_NUMBER_L" => Some(Self::L),
"MAGIC_NUMBER_H" => Some(Self::H),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LayersSnapshotProto {
/// elapsed realtime in nanos since boot of when this entry was logged
#[prost(sfixed64, optional, tag = "1")]
pub elapsed_realtime_nanos: ::core::option::Option<i64>,
/// SurfaceFlinger's stage where the snapshot was triggered.
/// Currently either "visibleRegionsDirty" or "bufferLatched".
#[prost(string, optional, tag = "2")]
pub r#where: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, optional, tag = "3")]
pub layers: ::core::option::Option<LayersProto>,
/// Blob for the current HWC information for all layers, reported by dumpsys.
/// Example:
/// "maxDownScale: 4, maxFullWidth: 8192, HWState: 1, AssignedState: 3, ..."
#[prost(string, optional, tag = "4")]
pub hwc_blob: ::core::option::Option<::prost::alloc::string::String>,
/// Excludes state sent during composition like visible region and composition
/// type.
#[prost(bool, optional, tag = "5")]
pub excludes_composition_state: ::core::option::Option<bool>,
/// Number of missed entries since the last entry was recorded.
#[prost(uint32, optional, tag = "6")]
pub missed_entries: ::core::option::Option<u32>,
#[prost(message, repeated, tag = "7")]
pub displays: ::prost::alloc::vec::Vec<DisplayProto>,
#[prost(int64, optional, tag = "8")]
pub vsync_id: ::core::option::Option<i64>,
}
/// Contains a list of all layers.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LayersProto {
#[prost(message, repeated, tag = "1")]
pub layers: ::prost::alloc::vec::Vec<LayerProto>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DisplayProto {
#[prost(uint64, optional, tag = "1")]
pub id: ::core::option::Option<u64>,
/// Display descriptor, e.g. "Built-In Screen"
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub layer_stack: ::core::option::Option<u32>,
#[prost(message, optional, tag = "4")]
pub size: ::core::option::Option<SizeProto>,
#[prost(message, optional, tag = "5")]
pub layer_stack_space_rect: ::core::option::Option<RectProto>,
#[prost(message, optional, tag = "6")]
pub transform: ::core::option::Option<TransformProto>,
#[prost(bool, optional, tag = "7")]
pub is_virtual: ::core::option::Option<bool>,
#[prost(double, optional, tag = "8")]
pub dpi_x: ::core::option::Option<f64>,
#[prost(double, optional, tag = "9")]
pub dpi_y: ::core::option::Option<f64>,
}
/// Information about each layer.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LayerProto {
/// unique id per layer.
#[prost(int32, optional, tag = "1")]
pub id: ::core::option::Option<i32>,
/// unique name per layer.
/// Example: "Wallpaper".
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
/// list of children this layer may have. May be empty.
#[prost(int32, repeated, tag = "3")]
pub children: ::prost::alloc::vec::Vec<i32>,
/// list of layers that are z order relative to this layer.
#[prost(int32, repeated, tag = "4")]
pub relatives: ::prost::alloc::vec::Vec<i32>,
/// The type of layer.
/// Examples: "ContainerLayer", "BufferStateLayer".
#[prost(string, optional, tag = "5")]
pub r#type: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, optional, tag = "6")]
pub transparent_region: ::core::option::Option<RegionProto>,
#[prost(message, optional, tag = "7")]
pub visible_region: ::core::option::Option<RegionProto>,
#[prost(message, optional, tag = "8")]
pub damage_region: ::core::option::Option<RegionProto>,
#[prost(uint32, optional, tag = "9")]
pub layer_stack: ::core::option::Option<u32>,
/// The layer's z order. Can be z order in layer stack, relative to parent,
/// or relative to another layer specified in zOrderRelative.
#[prost(int32, optional, tag = "10")]
pub z: ::core::option::Option<i32>,
/// The layer's position on the display.
#[prost(message, optional, tag = "11")]
pub position: ::core::option::Option<PositionProto>,
/// The layer's requested position.
#[prost(message, optional, tag = "12")]
pub requested_position: ::core::option::Option<PositionProto>,
/// The layer's size.
#[prost(message, optional, tag = "13")]
pub size: ::core::option::Option<SizeProto>,
/// The layer's crop in its own bounds.
#[prost(message, optional, tag = "14")]
pub crop: ::core::option::Option<RectProto>,
/// The layer's crop in its parent's bounds.
#[deprecated]
#[prost(message, optional, tag = "15")]
pub final_crop: ::core::option::Option<RectProto>,
#[prost(bool, optional, tag = "16")]
pub is_opaque: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "17")]
pub invalidate: ::core::option::Option<bool>,
/// Composition states's dataspace.
/// Examples: "STANDARD_BT709", "STANDARD_BT601_625".
/// See full enum in
/// frameworks/native/libs/nativewindow/include/android/data_space.h
#[prost(string, optional, tag = "18")]
pub dataspace: ::core::option::Option<::prost::alloc::string::String>,
/// Buffer's pixel format
/// Examples: "PIXEL_FORMAT_TRANSLUCENT", "PIXEL_FORMAT_RGBA_8888".
/// See full enum in frameworks/native/libs/ui/include/ui/PixelFormat.h
#[prost(string, optional, tag = "19")]
pub pixel_format: ::core::option::Option<::prost::alloc::string::String>,
/// The layer's actual color.
#[prost(message, optional, tag = "20")]
pub color: ::core::option::Option<ColorProto>,
/// The layer's requested color.
#[prost(message, optional, tag = "21")]
pub requested_color: ::core::option::Option<ColorProto>,
/// Can be any combination of
/// hidden = 0x01
/// opaque = 0x02,
/// secure = 0x80,
#[prost(uint32, optional, tag = "22")]
pub flags: ::core::option::Option<u32>,
/// The layer's actual transform
#[prost(message, optional, tag = "23")]
pub transform: ::core::option::Option<TransformProto>,
/// The layer's requested transform.
#[prost(message, optional, tag = "24")]
pub requested_transform: ::core::option::Option<TransformProto>,
/// The parent layer. This value can be null if there is no parent.
#[prost(int32, optional, tag = "25")]
pub parent: ::core::option::Option<i32>,
/// The layer that this layer has a z order relative to. This value can be
/// null.
#[prost(int32, optional, tag = "26")]
pub z_order_relative_of: ::core::option::Option<i32>,
/// This value can be null if there's nothing to draw.
#[prost(message, optional, tag = "27")]
pub active_buffer: ::core::option::Option<ActiveBufferProto>,
/// The number of frames available.
#[prost(int32, optional, tag = "28")]
pub queued_frames: ::core::option::Option<i32>,
#[prost(bool, optional, tag = "29")]
pub refresh_pending: ::core::option::Option<bool>,
/// The layer's composer backend destination frame
#[prost(message, optional, tag = "30")]
pub hwc_frame: ::core::option::Option<RectProto>,
/// The layer's composer backend source crop
#[prost(message, optional, tag = "31")]
pub hwc_crop: ::core::option::Option<FloatRectProto>,
/// The layer's composer backend transform
#[prost(int32, optional, tag = "32")]
pub hwc_transform: ::core::option::Option<i32>,
#[deprecated]
#[prost(int32, optional, tag = "33")]
pub window_type: ::core::option::Option<i32>,
#[deprecated]
#[prost(int32, optional, tag = "34")]
pub app_id: ::core::option::Option<i32>,
/// The layer's composition type
#[prost(enumeration = "HwcCompositionType", optional, tag = "35")]
pub hwc_composition_type: ::core::option::Option<i32>,
/// If it's a buffer layer, indicate if the content is protected
#[prost(bool, optional, tag = "36")]
pub is_protected: ::core::option::Option<bool>,
/// Current frame number being rendered.
#[prost(uint64, optional, tag = "37")]
pub curr_frame: ::core::option::Option<u64>,
/// A list of barriers that the layer is waiting to update state.
#[prost(message, repeated, tag = "38")]
pub barrier_layer: ::prost::alloc::vec::Vec<BarrierLayerProto>,
/// If active_buffer is not null, record its transform.
#[prost(message, optional, tag = "39")]
pub buffer_transform: ::core::option::Option<TransformProto>,
#[prost(int32, optional, tag = "40")]
pub effective_scaling_mode: ::core::option::Option<i32>,
/// Layer's corner radius.
#[prost(float, optional, tag = "41")]
pub corner_radius: ::core::option::Option<f32>,
/// Metadata map. May be empty.
#[prost(map = "int32, string", tag = "42")]
pub metadata: ::std::collections::HashMap<i32, ::prost::alloc::string::String>,
#[prost(message, optional, tag = "43")]
pub effective_transform: ::core::option::Option<TransformProto>,
#[prost(message, optional, tag = "44")]
pub source_bounds: ::core::option::Option<FloatRectProto>,
#[prost(message, optional, tag = "45")]
pub bounds: ::core::option::Option<FloatRectProto>,
#[prost(message, optional, tag = "46")]
pub screen_bounds: ::core::option::Option<FloatRectProto>,
#[prost(message, optional, tag = "47")]
pub input_window_info: ::core::option::Option<InputWindowInfoProto>,
/// Crop used to draw the rounded corner.
#[prost(message, optional, tag = "48")]
pub corner_radius_crop: ::core::option::Option<FloatRectProto>,
/// length of the shadow to draw around the layer, it may be set on the
/// layer or set by a parent layer.
#[prost(float, optional, tag = "49")]
pub shadow_radius: ::core::option::Option<f32>,
#[prost(message, optional, tag = "50")]
pub color_transform: ::core::option::Option<ColorTransformProto>,
#[prost(bool, optional, tag = "51")]
pub is_relative_of: ::core::option::Option<bool>,
/// Layer's background blur radius in pixels.
#[prost(int32, optional, tag = "52")]
pub background_blur_radius: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "53")]
pub owner_uid: ::core::option::Option<u32>,
/// Regions of a layer, where blur should be applied.
#[prost(message, repeated, tag = "54")]
pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
#[prost(bool, optional, tag = "55")]
pub is_trusted_overlay: ::core::option::Option<bool>,
/// Corner radius explicitly set on layer rather than inherited
#[prost(float, optional, tag = "56")]
pub requested_corner_radius: ::core::option::Option<f32>,
#[prost(message, optional, tag = "57")]
pub destination_frame: ::core::option::Option<RectProto>,
#[prost(uint32, optional, tag = "58")]
pub original_id: ::core::option::Option<u32>,
#[prost(enumeration = "TrustedOverlay", optional, tag = "59")]
pub trusted_overlay: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PositionProto {
#[prost(float, optional, tag = "1")]
pub x: ::core::option::Option<f32>,
#[prost(float, optional, tag = "2")]
pub y: ::core::option::Option<f32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FloatRectProto {
#[prost(float, optional, tag = "1")]
pub left: ::core::option::Option<f32>,
#[prost(float, optional, tag = "2")]
pub top: ::core::option::Option<f32>,
#[prost(float, optional, tag = "3")]
pub right: ::core::option::Option<f32>,
#[prost(float, optional, tag = "4")]
pub bottom: ::core::option::Option<f32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ActiveBufferProto {
#[prost(uint32, optional, tag = "1")]
pub width: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub height: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub stride: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub format: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "5")]
pub usage: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BarrierLayerProto {
/// layer id the barrier is waiting on.
#[prost(int32, optional, tag = "1")]
pub id: ::core::option::Option<i32>,
/// frame number the barrier is waiting on.
#[prost(uint64, optional, tag = "2")]
pub frame_number: ::core::option::Option<u64>,
}
/// Message used by Winscope to process legacy trace files.
/// Represents a file full of surface flinger transactions.
/// Encoded, it should start with 0x54 0x4E 0x58 0x54 0x52 0x41 0x43 0x45
/// (.TNXTRACE), such that they can be easily identified.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TransactionTraceFile {
/// Must be the first field, set to value in MagicNumber
#[prost(fixed64, optional, tag = "1")]
pub magic_number: ::core::option::Option<u64>,
#[prost(message, repeated, tag = "2")]
pub entry: ::prost::alloc::vec::Vec<TransactionTraceEntry>,
/// offset between real-time clock and elapsed time clock in nanoseconds.
/// Calculated as: systemTime(SYSTEM_TIME_REALTIME) -
/// systemTime(SYSTEM_TIME_MONOTONIC)
#[prost(fixed64, optional, tag = "3")]
pub real_to_elapsed_time_offset_nanos: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub version: ::core::option::Option<u32>,
}
/// Nested message and enum types in `TransactionTraceFile`.
pub mod transaction_trace_file {
/// constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 |
/// MagicNumber.MAGIC_NUMBER_L (this is needed because enums have to be 32 bits
/// and there's no nice way to put 64bit constants into .proto files.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum MagicNumber {
Invalid = 0,
/// TNXT (little-endian ASCII)
L = 1415073364,
/// RACE (little-endian ASCII)
H = 1162035538,
}
impl MagicNumber {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Invalid => "INVALID",
Self::L => "MAGIC_NUMBER_L",
Self::H => "MAGIC_NUMBER_H",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"INVALID" => Some(Self::Invalid),
"MAGIC_NUMBER_L" => Some(Self::L),
"MAGIC_NUMBER_H" => Some(Self::H),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TransactionTraceEntry {
#[prost(int64, optional, tag = "1")]
pub elapsed_realtime_nanos: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "2")]
pub vsync_id: ::core::option::Option<i64>,
#[prost(message, repeated, tag = "3")]
pub transactions: ::prost::alloc::vec::Vec<TransactionState>,
#[prost(message, repeated, tag = "4")]
pub added_layers: ::prost::alloc::vec::Vec<LayerCreationArgs>,
#[prost(uint32, repeated, packed = "false", tag = "5")]
pub destroyed_layers: ::prost::alloc::vec::Vec<u32>,
#[prost(message, repeated, tag = "6")]
pub added_displays: ::prost::alloc::vec::Vec<DisplayState>,
#[prost(int32, repeated, packed = "false", tag = "7")]
pub removed_displays: ::prost::alloc::vec::Vec<i32>,
#[prost(uint32, repeated, packed = "false", tag = "8")]
pub destroyed_layer_handles: ::prost::alloc::vec::Vec<u32>,
#[prost(bool, optional, tag = "9")]
pub displays_changed: ::core::option::Option<bool>,
#[prost(message, repeated, tag = "10")]
pub displays: ::prost::alloc::vec::Vec<DisplayInfo>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DisplayInfo {
#[prost(uint32, optional, tag = "1")]
pub layer_stack: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub display_id: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub logical_width: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub logical_height: ::core::option::Option<i32>,
#[prost(message, optional, tag = "5")]
pub transform_inverse: ::core::option::Option<Transform>,
#[prost(message, optional, tag = "6")]
pub transform: ::core::option::Option<Transform>,
#[prost(bool, optional, tag = "7")]
pub receives_input: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "8")]
pub is_secure: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "9")]
pub is_primary: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "10")]
pub is_virtual: ::core::option::Option<bool>,
#[prost(int32, optional, tag = "11")]
pub rotation_flags: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "12")]
pub transform_hint: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LayerCreationArgs {
#[prost(uint32, optional, tag = "1")]
pub layer_id: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub parent_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub mirror_from_id: ::core::option::Option<u32>,
#[prost(bool, optional, tag = "6")]
pub add_to_root: ::core::option::Option<bool>,
#[prost(uint32, optional, tag = "7")]
pub layer_stack_to_mirror: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Transform {
#[prost(float, optional, tag = "1")]
pub dsdx: ::core::option::Option<f32>,
#[prost(float, optional, tag = "2")]
pub dtdx: ::core::option::Option<f32>,
#[prost(float, optional, tag = "3")]
pub dtdy: ::core::option::Option<f32>,
#[prost(float, optional, tag = "4")]
pub dsdy: ::core::option::Option<f32>,
#[prost(float, optional, tag = "5")]
pub tx: ::core::option::Option<f32>,
#[prost(float, optional, tag = "6")]
pub ty: ::core::option::Option<f32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TransactionState {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub uid: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "3")]
pub vsync_id: ::core::option::Option<i64>,
#[prost(int32, optional, tag = "4")]
pub input_event_id: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "5")]
pub post_time: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "6")]
pub transaction_id: ::core::option::Option<u64>,
#[prost(message, repeated, tag = "7")]
pub layer_changes: ::prost::alloc::vec::Vec<LayerState>,
#[prost(message, repeated, tag = "8")]
pub display_changes: ::prost::alloc::vec::Vec<DisplayState>,
#[prost(uint64, repeated, packed = "false", tag = "9")]
pub merged_transaction_ids: ::prost::alloc::vec::Vec<u64>,
}
/// Keep insync with layer_state_t
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LayerState {
#[prost(uint32, optional, tag = "1")]
pub layer_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub what: ::core::option::Option<u64>,
#[prost(float, optional, tag = "3")]
pub x: ::core::option::Option<f32>,
#[prost(float, optional, tag = "4")]
pub y: ::core::option::Option<f32>,
#[prost(int32, optional, tag = "5")]
pub z: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "6")]
pub w: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub h: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub layer_stack: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "10")]
pub mask: ::core::option::Option<u32>,
#[prost(message, optional, tag = "11")]
pub matrix: ::core::option::Option<layer_state::Matrix22>,
#[prost(float, optional, tag = "12")]
pub corner_radius: ::core::option::Option<f32>,
#[prost(uint32, optional, tag = "13")]
pub background_blur_radius: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "14")]
pub parent_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "15")]
pub relative_parent_id: ::core::option::Option<u32>,
#[prost(float, optional, tag = "16")]
pub alpha: ::core::option::Option<f32>,
#[prost(message, optional, tag = "17")]
pub color: ::core::option::Option<layer_state::Color3>,
#[prost(message, optional, tag = "18")]
pub transparent_region: ::core::option::Option<RegionProto>,
#[prost(uint32, optional, tag = "19")]
pub transform: ::core::option::Option<u32>,
#[prost(bool, optional, tag = "20")]
pub transform_to_display_inverse: ::core::option::Option<bool>,
#[prost(message, optional, tag = "21")]
pub crop: ::core::option::Option<RectProto>,
#[prost(message, optional, tag = "22")]
pub buffer_data: ::core::option::Option<layer_state::BufferData>,
#[prost(int32, optional, tag = "23")]
pub api: ::core::option::Option<i32>,
#[prost(bool, optional, tag = "24")]
pub has_sideband_stream: ::core::option::Option<bool>,
#[prost(message, optional, tag = "25")]
pub color_transform: ::core::option::Option<ColorTransformProto>,
#[prost(message, repeated, tag = "26")]
pub blur_regions: ::prost::alloc::vec::Vec<BlurRegion>,
#[prost(message, optional, tag = "27")]
pub window_info_handle: ::core::option::Option<layer_state::WindowInfo>,
#[prost(float, optional, tag = "28")]
pub bg_color_alpha: ::core::option::Option<f32>,
#[prost(int32, optional, tag = "29")]
pub bg_color_dataspace: ::core::option::Option<i32>,
#[prost(bool, optional, tag = "30")]
pub color_space_agnostic: ::core::option::Option<bool>,
#[prost(float, optional, tag = "31")]
pub shadow_radius: ::core::option::Option<f32>,
#[prost(int32, optional, tag = "32")]
pub frame_rate_selection_priority: ::core::option::Option<i32>,
#[prost(float, optional, tag = "33")]
pub frame_rate: ::core::option::Option<f32>,
#[prost(int32, optional, tag = "34")]
pub frame_rate_compatibility: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "35")]
pub change_frame_rate_strategy: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "36")]
pub fixed_transform_hint: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "37")]
pub frame_number: ::core::option::Option<u64>,
#[prost(bool, optional, tag = "38")]
pub auto_refresh: ::core::option::Option<bool>,
/// unused
#[prost(bool, optional, tag = "39")]
pub is_trusted_overlay: ::core::option::Option<bool>,
#[prost(message, optional, tag = "40")]
pub buffer_crop: ::core::option::Option<RectProto>,
#[prost(message, optional, tag = "41")]
pub destination_frame: ::core::option::Option<RectProto>,
#[prost(enumeration = "layer_state::DropInputMode", optional, tag = "42")]
pub drop_input_mode: ::core::option::Option<i32>,
#[prost(enumeration = "TrustedOverlay", optional, tag = "43")]
pub trusted_overlay: ::core::option::Option<i32>,
}
/// Nested message and enum types in `LayerState`.
pub mod layer_state {
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Matrix22 {
#[prost(float, optional, tag = "1")]
pub dsdx: ::core::option::Option<f32>,
#[prost(float, optional, tag = "2")]
pub dtdx: ::core::option::Option<f32>,
#[prost(float, optional, tag = "3")]
pub dtdy: ::core::option::Option<f32>,
#[prost(float, optional, tag = "4")]
pub dsdy: ::core::option::Option<f32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Color3 {
#[prost(float, optional, tag = "1")]
pub r: ::core::option::Option<f32>,
#[prost(float, optional, tag = "2")]
pub g: ::core::option::Option<f32>,
#[prost(float, optional, tag = "3")]
pub b: ::core::option::Option<f32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BufferData {
#[prost(uint64, optional, tag = "1")]
pub buffer_id: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub width: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub height: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "4")]
pub frame_number: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub flags: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "6")]
pub cached_buffer_id: ::core::option::Option<u64>,
#[prost(enumeration = "buffer_data::PixelFormat", optional, tag = "7")]
pub pixel_format: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "8")]
pub usage: ::core::option::Option<u64>,
}
/// Nested message and enum types in `BufferData`.
pub mod buffer_data {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum BufferDataChange {
None = 0,
FenceChanged = 1,
FrameNumberChanged = 2,
CachedBufferChanged = 4,
}
impl BufferDataChange {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::None => "BufferDataChangeNone",
Self::FenceChanged => "fenceChanged",
Self::FrameNumberChanged => "frameNumberChanged",
Self::CachedBufferChanged => "cachedBufferChanged",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"BufferDataChangeNone" => Some(Self::None),
"fenceChanged" => Some(Self::FenceChanged),
"frameNumberChanged" => Some(Self::FrameNumberChanged),
"cachedBufferChanged" => Some(Self::CachedBufferChanged),
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum PixelFormat {
Unknown = 0,
Custom = -4,
Translucent = -3,
Transparent = -2,
Opaque = -1,
Rgba8888 = 1,
Rgbx8888 = 2,
Rgb888 = 3,
Rgb565 = 4,
Bgra8888 = 5,
Rgba5551 = 6,
Rgba4444 = 7,
RgbaFp16 = 22,
Rgba1010102 = 43,
R8 = 56,
}
impl PixelFormat {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "PIXEL_FORMAT_UNKNOWN",
Self::Custom => "PIXEL_FORMAT_CUSTOM",
Self::Translucent => "PIXEL_FORMAT_TRANSLUCENT",
Self::Transparent => "PIXEL_FORMAT_TRANSPARENT",
Self::Opaque => "PIXEL_FORMAT_OPAQUE",
Self::Rgba8888 => "PIXEL_FORMAT_RGBA_8888",
Self::Rgbx8888 => "PIXEL_FORMAT_RGBX_8888",
Self::Rgb888 => "PIXEL_FORMAT_RGB_888",
Self::Rgb565 => "PIXEL_FORMAT_RGB_565",
Self::Bgra8888 => "PIXEL_FORMAT_BGRA_8888",
Self::Rgba5551 => "PIXEL_FORMAT_RGBA_5551",
Self::Rgba4444 => "PIXEL_FORMAT_RGBA_4444",
Self::RgbaFp16 => "PIXEL_FORMAT_RGBA_FP16",
Self::Rgba1010102 => "PIXEL_FORMAT_RGBA_1010102",
Self::R8 => "PIXEL_FORMAT_R_8",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PIXEL_FORMAT_UNKNOWN" => Some(Self::Unknown),
"PIXEL_FORMAT_CUSTOM" => Some(Self::Custom),
"PIXEL_FORMAT_TRANSLUCENT" => Some(Self::Translucent),
"PIXEL_FORMAT_TRANSPARENT" => Some(Self::Transparent),
"PIXEL_FORMAT_OPAQUE" => Some(Self::Opaque),
"PIXEL_FORMAT_RGBA_8888" => Some(Self::Rgba8888),
"PIXEL_FORMAT_RGBX_8888" => Some(Self::Rgbx8888),
"PIXEL_FORMAT_RGB_888" => Some(Self::Rgb888),
"PIXEL_FORMAT_RGB_565" => Some(Self::Rgb565),
"PIXEL_FORMAT_BGRA_8888" => Some(Self::Bgra8888),
"PIXEL_FORMAT_RGBA_5551" => Some(Self::Rgba5551),
"PIXEL_FORMAT_RGBA_4444" => Some(Self::Rgba4444),
"PIXEL_FORMAT_RGBA_FP16" => Some(Self::RgbaFp16),
"PIXEL_FORMAT_RGBA_1010102" => Some(Self::Rgba1010102),
"PIXEL_FORMAT_R_8" => Some(Self::R8),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WindowInfo {
#[prost(uint32, optional, tag = "1")]
pub layout_params_flags: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub layout_params_type: ::core::option::Option<i32>,
#[prost(message, optional, tag = "3")]
pub touchable_region: ::core::option::Option<super::RegionProto>,
#[prost(int32, optional, tag = "4")]
pub surface_inset: ::core::option::Option<i32>,
/// unused
#[prost(bool, optional, tag = "5")]
pub focusable: ::core::option::Option<bool>,
/// unused
#[prost(bool, optional, tag = "6")]
pub has_wallpaper: ::core::option::Option<bool>,
#[prost(float, optional, tag = "7")]
pub global_scale_factor: ::core::option::Option<f32>,
#[prost(uint32, optional, tag = "8")]
pub crop_layer_id: ::core::option::Option<u32>,
#[prost(bool, optional, tag = "9")]
pub replace_touchable_region_with_crop: ::core::option::Option<bool>,
#[prost(message, optional, tag = "10")]
pub touchable_region_crop: ::core::option::Option<super::RectProto>,
#[prost(message, optional, tag = "11")]
pub transform: ::core::option::Option<super::Transform>,
#[prost(uint32, optional, tag = "12")]
pub input_config: ::core::option::Option<u32>,
}
/// Changes are split into ChangesLsb and ChangesMsb. First 32 bits are in
/// ChangesLsb and the next 32 bits are in ChangesMsb. This is needed because
/// enums have to be 32 bits and there's no nice way to put 64bit constants
/// into .proto files.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum ChangesLsb {
EChangesLsbNone = 0,
EPositionChanged = 1,
ELayerChanged = 2,
/// unused = 0x00000004;
EAlphaChanged = 8,
EMatrixChanged = 16,
ETransparentRegionChanged = 32,
EFlagsChanged = 64,
ELayerStackChanged = 128,
EReleaseBufferListenerChanged = 1024,
EShadowRadiusChanged = 2048,
EBufferCropChanged = 8192,
ERelativeLayerChanged = 16384,
EReparent = 32768,
EColorChanged = 65536,
EBufferTransformChanged = 262144,
ETransformToDisplayInverseChanged = 524288,
ECropChanged = 1048576,
EBufferChanged = 2097152,
EAcquireFenceChanged = 4194304,
EDataspaceChanged = 8388608,
EHdrMetadataChanged = 16777216,
ESurfaceDamageRegionChanged = 33554432,
EApiChanged = 67108864,
ESidebandStreamChanged = 134217728,
EColorTransformChanged = 268435456,
EHasListenerCallbacksChanged = 536870912,
EInputInfoChanged = 1073741824,
/// 0x80000000; (proto stores enums as signed int)
ECornerRadiusChanged = -2147483648,
}
impl ChangesLsb {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::EChangesLsbNone => "eChangesLsbNone",
Self::EPositionChanged => "ePositionChanged",
Self::ELayerChanged => "eLayerChanged",
Self::EAlphaChanged => "eAlphaChanged",
Self::EMatrixChanged => "eMatrixChanged",
Self::ETransparentRegionChanged => "eTransparentRegionChanged",
Self::EFlagsChanged => "eFlagsChanged",
Self::ELayerStackChanged => "eLayerStackChanged",
Self::EReleaseBufferListenerChanged => "eReleaseBufferListenerChanged",
Self::EShadowRadiusChanged => "eShadowRadiusChanged",
Self::EBufferCropChanged => "eBufferCropChanged",
Self::ERelativeLayerChanged => "eRelativeLayerChanged",
Self::EReparent => "eReparent",
Self::EColorChanged => "eColorChanged",
Self::EBufferTransformChanged => "eBufferTransformChanged",
Self::ETransformToDisplayInverseChanged => {
"eTransformToDisplayInverseChanged"
}
Self::ECropChanged => "eCropChanged",
Self::EBufferChanged => "eBufferChanged",
Self::EAcquireFenceChanged => "eAcquireFenceChanged",
Self::EDataspaceChanged => "eDataspaceChanged",
Self::EHdrMetadataChanged => "eHdrMetadataChanged",
Self::ESurfaceDamageRegionChanged => "eSurfaceDamageRegionChanged",
Self::EApiChanged => "eApiChanged",
Self::ESidebandStreamChanged => "eSidebandStreamChanged",
Self::EColorTransformChanged => "eColorTransformChanged",
Self::EHasListenerCallbacksChanged => "eHasListenerCallbacksChanged",
Self::EInputInfoChanged => "eInputInfoChanged",
Self::ECornerRadiusChanged => "eCornerRadiusChanged",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"eChangesLsbNone" => Some(Self::EChangesLsbNone),
"ePositionChanged" => Some(Self::EPositionChanged),
"eLayerChanged" => Some(Self::ELayerChanged),
"eAlphaChanged" => Some(Self::EAlphaChanged),
"eMatrixChanged" => Some(Self::EMatrixChanged),
"eTransparentRegionChanged" => Some(Self::ETransparentRegionChanged),
"eFlagsChanged" => Some(Self::EFlagsChanged),
"eLayerStackChanged" => Some(Self::ELayerStackChanged),
"eReleaseBufferListenerChanged" => {
Some(Self::EReleaseBufferListenerChanged)
}
"eShadowRadiusChanged" => Some(Self::EShadowRadiusChanged),
"eBufferCropChanged" => Some(Self::EBufferCropChanged),
"eRelativeLayerChanged" => Some(Self::ERelativeLayerChanged),
"eReparent" => Some(Self::EReparent),
"eColorChanged" => Some(Self::EColorChanged),
"eBufferTransformChanged" => Some(Self::EBufferTransformChanged),
"eTransformToDisplayInverseChanged" => {
Some(Self::ETransformToDisplayInverseChanged)
}
"eCropChanged" => Some(Self::ECropChanged),
"eBufferChanged" => Some(Self::EBufferChanged),
"eAcquireFenceChanged" => Some(Self::EAcquireFenceChanged),
"eDataspaceChanged" => Some(Self::EDataspaceChanged),
"eHdrMetadataChanged" => Some(Self::EHdrMetadataChanged),
"eSurfaceDamageRegionChanged" => Some(Self::ESurfaceDamageRegionChanged),
"eApiChanged" => Some(Self::EApiChanged),
"eSidebandStreamChanged" => Some(Self::ESidebandStreamChanged),
"eColorTransformChanged" => Some(Self::EColorTransformChanged),
"eHasListenerCallbacksChanged" => {
Some(Self::EHasListenerCallbacksChanged)
}
"eInputInfoChanged" => Some(Self::EInputInfoChanged),
"eCornerRadiusChanged" => Some(Self::ECornerRadiusChanged),
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum ChangesMsb {
EChangesMsbNone = 0,
EDestinationFrameChanged = 1,
ECachedBufferChanged = 2,
EBackgroundColorChanged = 4,
EMetadataChanged = 8,
EColorSpaceAgnosticChanged = 16,
EFrameRateSelectionPriority = 32,
EFrameRateChanged = 64,
EBackgroundBlurRadiusChanged = 128,
EProducerDisconnect = 256,
EFixedTransformHintChanged = 512,
EFrameNumberChanged = 1024,
EBlurRegionsChanged = 2048,
EAutoRefreshChanged = 4096,
EStretchChanged = 8192,
ETrustedOverlayChanged = 16384,
EDropInputModeChanged = 32768,
}
impl ChangesMsb {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::EChangesMsbNone => "eChangesMsbNone",
Self::EDestinationFrameChanged => "eDestinationFrameChanged",
Self::ECachedBufferChanged => "eCachedBufferChanged",
Self::EBackgroundColorChanged => "eBackgroundColorChanged",
Self::EMetadataChanged => "eMetadataChanged",
Self::EColorSpaceAgnosticChanged => "eColorSpaceAgnosticChanged",
Self::EFrameRateSelectionPriority => "eFrameRateSelectionPriority",
Self::EFrameRateChanged => "eFrameRateChanged",
Self::EBackgroundBlurRadiusChanged => "eBackgroundBlurRadiusChanged",
Self::EProducerDisconnect => "eProducerDisconnect",
Self::EFixedTransformHintChanged => "eFixedTransformHintChanged",
Self::EFrameNumberChanged => "eFrameNumberChanged",
Self::EBlurRegionsChanged => "eBlurRegionsChanged",
Self::EAutoRefreshChanged => "eAutoRefreshChanged",
Self::EStretchChanged => "eStretchChanged",
Self::ETrustedOverlayChanged => "eTrustedOverlayChanged",
Self::EDropInputModeChanged => "eDropInputModeChanged",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"eChangesMsbNone" => Some(Self::EChangesMsbNone),
"eDestinationFrameChanged" => Some(Self::EDestinationFrameChanged),
"eCachedBufferChanged" => Some(Self::ECachedBufferChanged),
"eBackgroundColorChanged" => Some(Self::EBackgroundColorChanged),
"eMetadataChanged" => Some(Self::EMetadataChanged),
"eColorSpaceAgnosticChanged" => Some(Self::EColorSpaceAgnosticChanged),
"eFrameRateSelectionPriority" => Some(Self::EFrameRateSelectionPriority),
"eFrameRateChanged" => Some(Self::EFrameRateChanged),
"eBackgroundBlurRadiusChanged" => {
Some(Self::EBackgroundBlurRadiusChanged)
}
"eProducerDisconnect" => Some(Self::EProducerDisconnect),
"eFixedTransformHintChanged" => Some(Self::EFixedTransformHintChanged),
"eFrameNumberChanged" => Some(Self::EFrameNumberChanged),
"eBlurRegionsChanged" => Some(Self::EBlurRegionsChanged),
"eAutoRefreshChanged" => Some(Self::EAutoRefreshChanged),
"eStretchChanged" => Some(Self::EStretchChanged),
"eTrustedOverlayChanged" => Some(Self::ETrustedOverlayChanged),
"eDropInputModeChanged" => Some(Self::EDropInputModeChanged),
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Flags {
EFlagsNone = 0,
ELayerHidden = 1,
ELayerOpaque = 2,
ELayerSkipScreenshot = 64,
ELayerSecure = 128,
EEnableBackpressure = 256,
ELayerIsDisplayDecoration = 512,
}
impl Flags {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::EFlagsNone => "eFlagsNone",
Self::ELayerHidden => "eLayerHidden",
Self::ELayerOpaque => "eLayerOpaque",
Self::ELayerSkipScreenshot => "eLayerSkipScreenshot",
Self::ELayerSecure => "eLayerSecure",
Self::EEnableBackpressure => "eEnableBackpressure",
Self::ELayerIsDisplayDecoration => "eLayerIsDisplayDecoration",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"eFlagsNone" => Some(Self::EFlagsNone),
"eLayerHidden" => Some(Self::ELayerHidden),
"eLayerOpaque" => Some(Self::ELayerOpaque),
"eLayerSkipScreenshot" => Some(Self::ELayerSkipScreenshot),
"eLayerSecure" => Some(Self::ELayerSecure),
"eEnableBackpressure" => Some(Self::EEnableBackpressure),
"eLayerIsDisplayDecoration" => Some(Self::ELayerIsDisplayDecoration),
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum DropInputMode {
None = 0,
All = 1,
Obscured = 2,
}
impl DropInputMode {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::None => "NONE",
Self::All => "ALL",
Self::Obscured => "OBSCURED",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"NONE" => Some(Self::None),
"ALL" => Some(Self::All),
"OBSCURED" => Some(Self::Obscured),
_ => None,
}
}
}
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DisplayState {
#[prost(int32, optional, tag = "1")]
pub id: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub what: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub layer_stack: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub orientation: ::core::option::Option<u32>,
#[prost(message, optional, tag = "6")]
pub layer_stack_space_rect: ::core::option::Option<RectProto>,
#[prost(message, optional, tag = "7")]
pub oriented_display_space_rect: ::core::option::Option<RectProto>,
#[prost(uint32, optional, tag = "8")]
pub width: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub height: ::core::option::Option<u32>,
}
/// Nested message and enum types in `DisplayState`.
pub mod display_state {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Changes {
EChangesNone = 0,
ESurfaceChanged = 1,
ELayerStackChanged = 2,
EDisplayProjectionChanged = 4,
EDisplaySizeChanged = 8,
EFlagsChanged = 16,
}
impl Changes {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::EChangesNone => "eChangesNone",
Self::ESurfaceChanged => "eSurfaceChanged",
Self::ELayerStackChanged => "eLayerStackChanged",
Self::EDisplayProjectionChanged => "eDisplayProjectionChanged",
Self::EDisplaySizeChanged => "eDisplaySizeChanged",
Self::EFlagsChanged => "eFlagsChanged",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"eChangesNone" => Some(Self::EChangesNone),
"eSurfaceChanged" => Some(Self::ESurfaceChanged),
"eLayerStackChanged" => Some(Self::ELayerStackChanged),
"eDisplayProjectionChanged" => Some(Self::EDisplayProjectionChanged),
"eDisplaySizeChanged" => Some(Self::EDisplaySizeChanged),
"eFlagsChanged" => Some(Self::EFlagsChanged),
_ => None,
}
}
}
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct WinscopeExtensions {}
/// This message is not intended to be written by the chrome on the device.
/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
/// part of the trace that's written by the telemetry tracing agent).
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeBenchmarkMetadata {
/// Time when the benchmark execution started (host unixtime in microseconds).
#[prost(int64, optional, tag = "1")]
pub benchmark_start_time_us: ::core::option::Option<i64>,
/// Time when this particular story was run (host unixtime in microseconds).
#[prost(int64, optional, tag = "2")]
pub story_run_time_us: ::core::option::Option<i64>,
/// Name of benchmark.
#[prost(string, optional, tag = "3")]
pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
/// Description of benchmark.
#[prost(string, optional, tag = "4")]
pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
/// Optional label.
#[prost(string, optional, tag = "5")]
pub label: ::core::option::Option<::prost::alloc::string::String>,
/// Name of story.
#[prost(string, optional, tag = "6")]
pub story_name: ::core::option::Option<::prost::alloc::string::String>,
/// List of story tags.
#[prost(string, repeated, tag = "7")]
pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Index of the story run (>0 if the same story was run several times).
#[prost(int32, optional, tag = "8")]
pub story_run_index: ::core::option::Option<i32>,
/// Whether this run failed.
#[prost(bool, optional, tag = "9")]
pub had_failures: ::core::option::Option<bool>,
}
/// Metadata for chrome traces.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeMetadataPacket {
#[prost(message, optional, tag = "1")]
pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
/// Version code of Chrome used by Android's Play Store. This field is only set
/// on Android.
#[prost(int32, optional, tag = "2")]
pub chrome_version_code: ::core::option::Option<i32>,
/// Comma separated list of enabled categories for tracing. The list of
/// possible category strings are listed in code
/// base/trace_event/builtin_categories.h.
#[prost(string, optional, tag = "3")]
pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
/// List of Finch study/groups that apply to this trace.
#[prost(message, repeated, tag = "4")]
pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
}
/// Nested message and enum types in `ChromeMetadataPacket`.
pub mod chrome_metadata_packet {
/// Finch name and group based on the ActiveGroupId.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FinchHash {
#[prost(uint32, optional, tag = "1")]
pub name: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub group: ::core::option::Option<u32>,
}
}
/// Metadata related to background tracing scenarios, states and triggers.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BackgroundTracingMetadata {
/// Specifies the rule that caused the trace to be uploaded.
#[prost(message, optional, tag = "1")]
pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
/// List of all active triggers in current session, when trace was triggered.
#[prost(message, repeated, tag = "2")]
pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
/// Hash of the scenario name.
#[prost(fixed32, optional, tag = "3")]
pub scenario_name_hash: ::core::option::Option<u32>,
}
/// Nested message and enum types in `BackgroundTracingMetadata`.
pub mod background_tracing_metadata {
/// Information about a trigger rule defined in the experiment config.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TriggerRule {
#[prost(enumeration = "trigger_rule::TriggerType", optional, tag = "1")]
pub trigger_type: ::core::option::Option<i32>,
#[prost(message, optional, tag = "2")]
pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
#[prost(message, optional, tag = "3")]
pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
/// Hash of the rule name.
#[prost(fixed32, optional, tag = "4")]
pub name_hash: ::core::option::Option<u32>,
}
/// Nested message and enum types in `TriggerRule`.
pub mod trigger_rule {
/// Configuration of histogram trigger.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct HistogramRule {
/// UMA histogram name hash, same as HistogramEventProto.name_hash.
#[prost(fixed64, optional, tag = "1")]
pub histogram_name_hash: ::core::option::Option<u64>,
/// Range of values of the histogram that activates trigger.
#[prost(int64, optional, tag = "2")]
pub histogram_min_trigger: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "3")]
pub histogram_max_trigger: ::core::option::Option<i64>,
}
/// Configuration of named trigger.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct NamedRule {
#[prost(enumeration = "named_rule::EventType", optional, tag = "1")]
pub event_type: ::core::option::Option<i32>,
/// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
/// content-trigger that actually fired.
#[prost(fixed64, optional, tag = "2")]
pub content_trigger_name_hash: ::core::option::Option<u64>,
}
/// Nested message and enum types in `NamedRule`.
pub mod named_rule {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum EventType {
Unspecified = 0,
SessionRestore = 1,
Navigation = 2,
Startup = 3,
ReachedCode = 4,
ContentTrigger = 5,
TestRule = 1000,
}
impl EventType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "UNSPECIFIED",
Self::SessionRestore => "SESSION_RESTORE",
Self::Navigation => "NAVIGATION",
Self::Startup => "STARTUP",
Self::ReachedCode => "REACHED_CODE",
Self::ContentTrigger => "CONTENT_TRIGGER",
Self::TestRule => "TEST_RULE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNSPECIFIED" => Some(Self::Unspecified),
"SESSION_RESTORE" => Some(Self::SessionRestore),
"NAVIGATION" => Some(Self::Navigation),
"STARTUP" => Some(Self::Startup),
"REACHED_CODE" => Some(Self::ReachedCode),
"CONTENT_TRIGGER" => Some(Self::ContentTrigger),
"TEST_RULE" => Some(Self::TestRule),
_ => None,
}
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum TriggerType {
TriggerUnspecified = 0,
/// Traces are triggered by specific range of values of an UMA histogram.
MonitorAndDumpWhenSpecificHistogramAndValue = 1,
/// Traces are triggered by specific named events in chromium codebase,
/// like "second-update-failure".
MonitorAndDumpWhenTriggerNamed = 2,
}
impl TriggerType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
Self::MonitorAndDumpWhenSpecificHistogramAndValue => {
"MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE"
}
Self::MonitorAndDumpWhenTriggerNamed => {
"MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED"
}
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"TRIGGER_UNSPECIFIED" => Some(Self::TriggerUnspecified),
"MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE" => {
Some(Self::MonitorAndDumpWhenSpecificHistogramAndValue)
}
"MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED" => {
Some(Self::MonitorAndDumpWhenTriggerNamed)
}
_ => None,
}
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeTracedValue {
#[prost(enumeration = "chrome_traced_value::NestedType", optional, tag = "1")]
pub nested_type: ::core::option::Option<i32>,
#[prost(string, repeated, tag = "2")]
pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(message, repeated, tag = "3")]
pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
#[prost(message, repeated, tag = "4")]
pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
#[prost(int32, optional, tag = "5")]
pub int_value: ::core::option::Option<i32>,
#[prost(double, optional, tag = "6")]
pub double_value: ::core::option::Option<f64>,
#[prost(bool, optional, tag = "7")]
pub bool_value: ::core::option::Option<bool>,
#[prost(string, optional, tag = "8")]
pub string_value: ::core::option::Option<::prost::alloc::string::String>,
}
/// Nested message and enum types in `ChromeTracedValue`.
pub mod chrome_traced_value {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum NestedType {
Dict = 0,
Array = 1,
}
impl NestedType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Dict => "DICT",
Self::Array => "ARRAY",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"DICT" => Some(Self::Dict),
"ARRAY" => Some(Self::Array),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeStringTableEntry {
#[prost(string, optional, tag = "1")]
pub value: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub index: ::core::option::Option<i32>,
}
/// Deprecated, use TrackEvent protos instead.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeTraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int64, optional, tag = "2")]
pub timestamp: ::core::option::Option<i64>,
#[prost(int32, optional, tag = "3")]
pub phase: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub thread_id: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "5")]
pub duration: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "6")]
pub thread_duration: ::core::option::Option<i64>,
#[prost(string, optional, tag = "7")]
pub scope: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "8")]
pub id: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "9")]
pub flags: ::core::option::Option<u32>,
#[prost(string, optional, tag = "10")]
pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "11")]
pub process_id: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "12")]
pub thread_timestamp: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "13")]
pub bind_id: ::core::option::Option<u64>,
#[prost(message, repeated, tag = "14")]
pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
/// Takes precedence over respectively |name| and
/// |category_group_name_index| if set,
/// and are indices into |string_table|.
#[prost(uint32, optional, tag = "15")]
pub name_index: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "16")]
pub category_group_name_index: ::core::option::Option<u32>,
}
/// Nested message and enum types in `ChromeTraceEvent`.
pub mod chrome_trace_event {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Arg {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
/// Takes precedence over |name| if set,
/// and is an index into |string_table|.
#[prost(uint32, optional, tag = "9")]
pub name_index: ::core::option::Option<u32>,
#[prost(oneof = "arg::Value", tags = "2, 3, 4, 5, 6, 7, 8, 10")]
pub value: ::core::option::Option<arg::Value>,
}
/// Nested message and enum types in `Arg`.
pub mod arg {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Value {
#[prost(bool, tag = "2")]
BoolValue(bool),
#[prost(uint64, tag = "3")]
UintValue(u64),
#[prost(int64, tag = "4")]
IntValue(i64),
#[prost(double, tag = "5")]
DoubleValue(f64),
#[prost(string, tag = "6")]
StringValue(::prost::alloc::string::String),
/// Pointers are stored in a separate type as the JSON output treats them
/// differently from other uint64 values.
#[prost(uint64, tag = "7")]
PointerValue(u64),
#[prost(string, tag = "8")]
JsonValue(::prost::alloc::string::String),
#[prost(message, tag = "10")]
TracedValue(super::super::ChromeTracedValue),
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeMetadata {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(oneof = "chrome_metadata::Value", tags = "2, 3, 4, 5")]
pub value: ::core::option::Option<chrome_metadata::Value>,
}
/// Nested message and enum types in `ChromeMetadata`.
pub mod chrome_metadata {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Value {
#[prost(string, tag = "2")]
StringValue(::prost::alloc::string::String),
#[prost(bool, tag = "3")]
BoolValue(bool),
#[prost(int64, tag = "4")]
IntValue(i64),
#[prost(string, tag = "5")]
JsonValue(::prost::alloc::string::String),
}
}
/// Subtraces produced in legacy json format by Chrome tracing agents not yet
/// updated to support the new binary format, e.g. ETW and CrOS ARC.
/// TODO(eseckler): Update these agents to become perfetto producers.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeLegacyJsonTrace {
#[prost(enumeration = "chrome_legacy_json_trace::TraceType", optional, tag = "1")]
pub r#type: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub data: ::core::option::Option<::prost::alloc::string::String>,
}
/// Nested message and enum types in `ChromeLegacyJsonTrace`.
pub mod chrome_legacy_json_trace {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum TraceType {
UserTrace = 0,
/// Deprecated.
SystemTrace = 1,
}
impl TraceType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::UserTrace => "USER_TRACE",
Self::SystemTrace => "SYSTEM_TRACE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"USER_TRACE" => Some(Self::UserTrace),
"SYSTEM_TRACE" => Some(Self::SystemTrace),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeEventBundle {
/// Deprecated, use TrackEvent protos instead.
#[deprecated]
#[prost(message, repeated, tag = "1")]
pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
/// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
/// which contains typed fields.
#[prost(message, repeated, tag = "2")]
pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
/// ftrace output from CrOS and Cast system tracing agents.
/// TODO(eseckler): Replace system traces with native perfetto service.
#[prost(string, repeated, tag = "4")]
pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(message, repeated, tag = "5")]
pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
/// Contents of a string table that's valid for
/// the whole ChromeEventBundle entry.
#[deprecated]
#[prost(message, repeated, tag = "3")]
pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
}
/// Information about a specific trigger during a background tracing scenario
/// Associated packet timestamps are useful to delimitate a scenario range in a
/// trace. Triggers are also useful for filtering traces.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeTrigger {
/// Name of the trigger which was received.
#[prost(string, optional, tag = "1")]
pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
/// SHA1 hash of the trigger name.
#[prost(fixed32, optional, tag = "2")]
pub trigger_name_hash: ::core::option::Option<u32>,
}
/// Strings used by V8 can have different encodings, instead of coverting to a
/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
/// "raw" string and do the convestion at trace ingestion time.
///
/// ATTENTION: There is some overhead in using a message (as opossed to having
/// the `oneof encoded_string`` direcly embedded in the message), so use this
/// message in places were these extra bytes don't matter that much.
/// Next id: 5
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct V8String {
#[prost(oneof = "v8_string::EncodedString", tags = "1, 2, 3")]
pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
}
/// Nested message and enum types in `V8String`.
pub mod v8_string {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum EncodedString {
/// ISO/IEC 8859-1:1998 encoding aka latin1
/// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
#[prost(bytes, tag = "1")]
Latin1(::prost::alloc::vec::Vec<u8>),
/// UTF-16 Little Endian Encoding
#[prost(bytes, tag = "2")]
Utf16Le(::prost::alloc::vec::Vec<u8>),
/// UTF-16 Big Endian Encoding
#[prost(bytes, tag = "3")]
Utf16Be(::prost::alloc::vec::Vec<u8>),
}
}
/// Interned version of V8String
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InternedV8String {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
/// We inline the fields in V8String here to save some bytes in the serialized
/// proto format. Interning is about saving bytes so this makes sense here.
#[prost(oneof = "interned_v8_string::EncodedString", tags = "2, 3, 4")]
pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
}
/// Nested message and enum types in `InternedV8String`.
pub mod interned_v8_string {
/// We inline the fields in V8String here to save some bytes in the serialized
/// proto format. Interning is about saving bytes so this makes sense here.
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum EncodedString {
/// ISO/IEC 8859-1:1998 encoding aka latin1
/// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
#[prost(bytes, tag = "2")]
Latin1(::prost::alloc::vec::Vec<u8>),
/// UTF-16 Little Endian Encoding
#[prost(bytes, tag = "3")]
Utf16Le(::prost::alloc::vec::Vec<u8>),
/// UTF-16 Big Endian Encoding
#[prost(bytes, tag = "4")]
Utf16Be(::prost::alloc::vec::Vec<u8>),
}
}
/// Represents a script that was compiled to generate code. Some V8 code is
/// generated out of scripts and will reference a V8Script other types of code
/// will not (e.g. builtins).
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InternedV8JsScript {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
/// Unique in a given isolate
#[prost(int32, optional, tag = "2")]
pub script_id: ::core::option::Option<i32>,
#[prost(enumeration = "interned_v8_js_script::Type", optional, tag = "3")]
pub r#type: ::core::option::Option<i32>,
#[prost(message, optional, tag = "4")]
pub name: ::core::option::Option<V8String>,
/// Actual source of the script
#[prost(message, optional, tag = "5")]
pub source: ::core::option::Option<V8String>,
}
/// Nested message and enum types in `InternedV8JsScript`.
pub mod interned_v8_js_script {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Type {
Unknown = 0,
Normal = 1,
Eval = 2,
Module = 3,
Native = 4,
Extension = 5,
Inspector = 6,
}
impl Type {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "TYPE_UNKNOWN",
Self::Normal => "TYPE_NORMAL",
Self::Eval => "TYPE_EVAL",
Self::Module => "TYPE_MODULE",
Self::Native => "TYPE_NATIVE",
Self::Extension => "TYPE_EXTENSION",
Self::Inspector => "TYPE_INSPECTOR",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"TYPE_UNKNOWN" => Some(Self::Unknown),
"TYPE_NORMAL" => Some(Self::Normal),
"TYPE_EVAL" => Some(Self::Eval),
"TYPE_MODULE" => Some(Self::Module),
"TYPE_NATIVE" => Some(Self::Native),
"TYPE_EXTENSION" => Some(Self::Extension),
"TYPE_INSPECTOR" => Some(Self::Inspector),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InternedV8WasmScript {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
/// Unique in a given isolate
#[prost(int32, optional, tag = "2")]
pub script_id: ::core::option::Option<i32>,
#[prost(string, optional, tag = "3")]
pub url: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct InternedV8JsFunction {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub v8_js_function_name_iid: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub v8_js_script_iid: ::core::option::Option<u64>,
#[prost(bool, optional, tag = "4")]
pub is_toplevel: ::core::option::Option<bool>,
#[prost(enumeration = "interned_v8_js_function::Kind", optional, tag = "5")]
pub kind: ::core::option::Option<i32>,
/// Where in the script source this function is defined. This is counted in
/// bytes not characters.
#[prost(uint32, optional, tag = "6")]
pub byte_offset: ::core::option::Option<u32>,
}
/// Nested message and enum types in `InternedV8JsFunction`.
pub mod interned_v8_js_function {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Kind {
Unknown = 0,
NormalFunction = 1,
Module = 2,
AsyncModule = 3,
BaseConstructor = 4,
DefaultBaseConstructor = 5,
DefaultDerivedConstructor = 6,
DerivedConstructor = 7,
GetterFunction = 8,
StaticGetterFunction = 9,
SetterFunction = 10,
StaticSetterFunction = 11,
ArrowFunction = 12,
AsyncArrowFunction = 13,
AsyncFunction = 14,
AsyncConciseMethod = 15,
StaticAsyncConciseMethod = 16,
AsyncConciseGeneratorMethod = 17,
StaticAsyncConciseGeneratorMethod = 18,
AsyncGeneratorFunction = 19,
GeneratorFunction = 20,
ConciseGeneratorMethod = 21,
StaticConciseGeneratorMethod = 22,
ConciseMethod = 23,
StaticConciseMethod = 24,
ClassMembersInitializerFunction = 25,
ClassStaticInitializerFunction = 26,
Invalid = 27,
}
impl Kind {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "KIND_UNKNOWN",
Self::NormalFunction => "KIND_NORMAL_FUNCTION",
Self::Module => "KIND_MODULE",
Self::AsyncModule => "KIND_ASYNC_MODULE",
Self::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
Self::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
Self::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
Self::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
Self::GetterFunction => "KIND_GETTER_FUNCTION",
Self::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
Self::SetterFunction => "KIND_SETTER_FUNCTION",
Self::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
Self::ArrowFunction => "KIND_ARROW_FUNCTION",
Self::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
Self::AsyncFunction => "KIND_ASYNC_FUNCTION",
Self::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
Self::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
Self::AsyncConciseGeneratorMethod => {
"KIND_ASYNC_CONCISE_GENERATOR_METHOD"
}
Self::StaticAsyncConciseGeneratorMethod => {
"KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD"
}
Self::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
Self::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
Self::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
Self::StaticConciseGeneratorMethod => {
"KIND_STATIC_CONCISE_GENERATOR_METHOD"
}
Self::ConciseMethod => "KIND_CONCISE_METHOD",
Self::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
Self::ClassMembersInitializerFunction => {
"KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION"
}
Self::ClassStaticInitializerFunction => {
"KIND_CLASS_STATIC_INITIALIZER_FUNCTION"
}
Self::Invalid => "KIND_INVALID",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"KIND_UNKNOWN" => Some(Self::Unknown),
"KIND_NORMAL_FUNCTION" => Some(Self::NormalFunction),
"KIND_MODULE" => Some(Self::Module),
"KIND_ASYNC_MODULE" => Some(Self::AsyncModule),
"KIND_BASE_CONSTRUCTOR" => Some(Self::BaseConstructor),
"KIND_DEFAULT_BASE_CONSTRUCTOR" => Some(Self::DefaultBaseConstructor),
"KIND_DEFAULT_DERIVED_CONSTRUCTOR" => {
Some(Self::DefaultDerivedConstructor)
}
"KIND_DERIVED_CONSTRUCTOR" => Some(Self::DerivedConstructor),
"KIND_GETTER_FUNCTION" => Some(Self::GetterFunction),
"KIND_STATIC_GETTER_FUNCTION" => Some(Self::StaticGetterFunction),
"KIND_SETTER_FUNCTION" => Some(Self::SetterFunction),
"KIND_STATIC_SETTER_FUNCTION" => Some(Self::StaticSetterFunction),
"KIND_ARROW_FUNCTION" => Some(Self::ArrowFunction),
"KIND_ASYNC_ARROW_FUNCTION" => Some(Self::AsyncArrowFunction),
"KIND_ASYNC_FUNCTION" => Some(Self::AsyncFunction),
"KIND_ASYNC_CONCISE_METHOD" => Some(Self::AsyncConciseMethod),
"KIND_STATIC_ASYNC_CONCISE_METHOD" => {
Some(Self::StaticAsyncConciseMethod)
}
"KIND_ASYNC_CONCISE_GENERATOR_METHOD" => {
Some(Self::AsyncConciseGeneratorMethod)
}
"KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD" => {
Some(Self::StaticAsyncConciseGeneratorMethod)
}
"KIND_ASYNC_GENERATOR_FUNCTION" => Some(Self::AsyncGeneratorFunction),
"KIND_GENERATOR_FUNCTION" => Some(Self::GeneratorFunction),
"KIND_CONCISE_GENERATOR_METHOD" => Some(Self::ConciseGeneratorMethod),
"KIND_STATIC_CONCISE_GENERATOR_METHOD" => {
Some(Self::StaticConciseGeneratorMethod)
}
"KIND_CONCISE_METHOD" => Some(Self::ConciseMethod),
"KIND_STATIC_CONCISE_METHOD" => Some(Self::StaticConciseMethod),
"KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION" => {
Some(Self::ClassMembersInitializerFunction)
}
"KIND_CLASS_STATIC_INITIALIZER_FUNCTION" => {
Some(Self::ClassStaticInitializerFunction)
}
"KIND_INVALID" => Some(Self::Invalid),
_ => None,
}
}
}
}
/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
/// engine.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct InternedV8Isolate {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub pid: ::core::option::Option<u32>,
/// Process unique isolate id.
#[prost(int32, optional, tag = "3")]
pub isolate_id: ::core::option::Option<i32>,
#[prost(message, optional, tag = "4")]
pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
/// The embedded blob holds code for built in functions that are precompiled in
/// the V8 library.
#[prost(uint64, optional, tag = "5")]
pub embedded_blob_code_start_address: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "6")]
pub embedded_blob_code_size: ::core::option::Option<u64>,
}
/// Nested message and enum types in `InternedV8Isolate`.
pub mod interned_v8_isolate {
/// A code range is a virtual memory cage that may contain executable code.
/// Depending on the Isolate settings the Isolate might have one or not.
/// See:
/// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
/// If the isolate defines code range this will be tracked here.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CodeRange {
#[prost(uint64, optional, tag = "1")]
pub base_address: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub size: ::core::option::Option<u64>,
/// Used when short builtin calls are enabled, where embedded builtins are
/// copied into the CodeRange so calls can be nearer.
#[prost(uint64, optional, tag = "3")]
pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
/// Whether this code range is shared with other Isolates in the same process
#[prost(bool, optional, tag = "4")]
pub is_process_wide: ::core::option::Option<bool>,
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct V8JsCode {
#[prost(uint64, optional, tag = "1")]
pub v8_isolate_iid: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub tid: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub v8_js_function_iid: ::core::option::Option<u64>,
#[prost(enumeration = "v8_js_code::Tier", optional, tag = "4")]
pub tier: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "5")]
pub instruction_start: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "6")]
pub instruction_size_bytes: ::core::option::Option<u64>,
#[prost(oneof = "v8_js_code::Instructions", tags = "7, 8")]
pub instructions: ::core::option::Option<v8_js_code::Instructions>,
}
/// Nested message and enum types in `V8JsCode`.
pub mod v8_js_code {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Tier {
Unknown = 0,
Ignition = 1,
Sparkplug = 2,
Maglev = 3,
Turboshaft = 4,
Turbofan = 5,
}
impl Tier {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "TIER_UNKNOWN",
Self::Ignition => "TIER_IGNITION",
Self::Sparkplug => "TIER_SPARKPLUG",
Self::Maglev => "TIER_MAGLEV",
Self::Turboshaft => "TIER_TURBOSHAFT",
Self::Turbofan => "TIER_TURBOFAN",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"TIER_UNKNOWN" => Some(Self::Unknown),
"TIER_IGNITION" => Some(Self::Ignition),
"TIER_SPARKPLUG" => Some(Self::Sparkplug),
"TIER_MAGLEV" => Some(Self::Maglev),
"TIER_TURBOSHAFT" => Some(Self::Turboshaft),
"TIER_TURBOFAN" => Some(Self::Turbofan),
_ => None,
}
}
}
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Instructions {
#[prost(bytes, tag = "7")]
MachineCode(::prost::alloc::vec::Vec<u8>),
#[prost(bytes, tag = "8")]
Bytecode(::prost::alloc::vec::Vec<u8>),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct V8InternalCode {
#[prost(uint64, optional, tag = "1")]
pub v8_isolate_iid: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub tid: ::core::option::Option<u32>,
#[prost(string, optional, tag = "3")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(enumeration = "v8_internal_code::Type", optional, tag = "4")]
pub r#type: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub builtin_id: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "6")]
pub instruction_start: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "7")]
pub instruction_size_bytes: ::core::option::Option<u64>,
#[prost(bytes = "vec", optional, tag = "8")]
pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
/// Nested message and enum types in `V8InternalCode`.
pub mod v8_internal_code {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Type {
Unknown = 0,
BytecodeHandler = 1,
ForTesting = 2,
Builtin = 3,
WasmFunction = 4,
WasmToCapiFunction = 5,
WasmToJsFunction = 6,
JsToWasmFunction = 7,
JsToJsFunction = 8,
CWasmEntry = 9,
}
impl Type {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "TYPE_UNKNOWN",
Self::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
Self::ForTesting => "TYPE_FOR_TESTING",
Self::Builtin => "TYPE_BUILTIN",
Self::WasmFunction => "TYPE_WASM_FUNCTION",
Self::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
Self::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
Self::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
Self::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
Self::CWasmEntry => "TYPE_C_WASM_ENTRY",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"TYPE_UNKNOWN" => Some(Self::Unknown),
"TYPE_BYTECODE_HANDLER" => Some(Self::BytecodeHandler),
"TYPE_FOR_TESTING" => Some(Self::ForTesting),
"TYPE_BUILTIN" => Some(Self::Builtin),
"TYPE_WASM_FUNCTION" => Some(Self::WasmFunction),
"TYPE_WASM_TO_CAPI_FUNCTION" => Some(Self::WasmToCapiFunction),
"TYPE_WASM_TO_JS_FUNCTION" => Some(Self::WasmToJsFunction),
"TYPE_JS_TO_WASM_FUNCTION" => Some(Self::JsToWasmFunction),
"TYPE_JS_TO_JS_FUNCTION" => Some(Self::JsToJsFunction),
"TYPE_C_WASM_ENTRY" => Some(Self::CWasmEntry),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct V8WasmCode {
#[prost(uint64, optional, tag = "1")]
pub v8_isolate_iid: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub tid: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub v8_wasm_script_iid: ::core::option::Option<u64>,
#[prost(string, optional, tag = "4")]
pub function_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(enumeration = "v8_wasm_code::Tier", optional, tag = "5")]
pub tier: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "6")]
pub code_offset_in_module: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "7")]
pub instruction_start: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "8")]
pub instruction_size_bytes: ::core::option::Option<u64>,
#[prost(bytes = "vec", optional, tag = "9")]
pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
/// Nested message and enum types in `V8WasmCode`.
pub mod v8_wasm_code {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Tier {
Unknown = 0,
Liftoff = 1,
Turbofan = 2,
}
impl Tier {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "TIER_UNKNOWN",
Self::Liftoff => "TIER_LIFTOFF",
Self::Turbofan => "TIER_TURBOFAN",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"TIER_UNKNOWN" => Some(Self::Unknown),
"TIER_LIFTOFF" => Some(Self::Liftoff),
"TIER_TURBOFAN" => Some(Self::Turbofan),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct V8RegExpCode {
#[prost(uint64, optional, tag = "1")]
pub v8_isolate_iid: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub tid: ::core::option::Option<u32>,
#[prost(message, optional, tag = "3")]
pub pattern: ::core::option::Option<V8String>,
#[prost(uint64, optional, tag = "4")]
pub instruction_start: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub instruction_size_bytes: ::core::option::Option<u64>,
#[prost(bytes = "vec", optional, tag = "6")]
pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
/// memory by V8's GC.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct V8CodeMove {
#[prost(uint64, optional, tag = "1")]
pub isolate_iid: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub tid: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub from_instruction_start_address: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub to_instruction_start_address: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub instruction_size_bytes: ::core::option::Option<u64>,
#[prost(oneof = "v8_code_move::ToInstructions", tags = "6, 7")]
pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
}
/// Nested message and enum types in `V8CodeMove`.
pub mod v8_code_move {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum ToInstructions {
#[prost(bytes, tag = "6")]
ToMachineCode(::prost::alloc::vec::Vec<u8>),
#[prost(bytes, tag = "7")]
ToBytecode(::prost::alloc::vec::Vec<u8>),
}
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct V8CodeDefaults {
#[prost(uint32, optional, tag = "1")]
pub tid: ::core::option::Option<u32>,
}
/// A snapshot of clock readings to allow for trace alignment.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClockSnapshot {
#[prost(message, repeated, tag = "1")]
pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
/// The authoritative clock domain for the trace. Defaults to BOOTTIME, but can
/// be overridden in TraceConfig's builtin_data_sources. Trace processor will
/// attempt to translate packet/event timestamps from various data sources (and
/// their chosen clock domains) to this domain during import.
#[prost(enumeration = "BuiltinClock", optional, tag = "2")]
pub primary_trace_clock: ::core::option::Option<i32>,
}
/// Nested message and enum types in `ClockSnapshot`.
pub mod clock_snapshot {
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Clock {
/// Clock IDs have the following semantic:
/// \[1, 63\]: Builtin types, see BuiltinClock from
/// ../common/builtin_clock.proto.
/// \[64, 127\]: User-defined clocks. These clocks are sequence-scoped. They
/// are only valid within the same |trusted_packet_sequence_id|
/// (i.e. only for TracePacket(s) emitted by the same TraceWriter
/// that emitted the clock snapshot).
/// \[128, MAX\]: Reserved for future use. The idea is to allow global clock
/// IDs and setting this ID to hash(full_clock_name) & ~127.
#[prost(uint32, optional, tag = "1")]
pub clock_id: ::core::option::Option<u32>,
/// Absolute timestamp. Unit is ns unless specified otherwise by the
/// unit_multiplier_ns field below.
#[prost(uint64, optional, tag = "2")]
pub timestamp: ::core::option::Option<u64>,
/// When true each TracePacket's timestamp should be interpreted as a delta
/// from the last TracePacket's timestamp (referencing this clock) emitted by
/// the same packet_sequence_id. Should only be used for user-defined
/// sequence-local clocks. The first packet timestamp after each
/// ClockSnapshot that contains this clock is relative to the |timestamp| in
/// the ClockSnapshot.
#[prost(bool, optional, tag = "3")]
pub is_incremental: ::core::option::Option<bool>,
/// Allows to specify a custom unit different than the default (ns) for this
/// clock domain. A multiplier of 1000 means that a timestamp = 3 should be
/// interpreted as 3000 ns = 3 us. All snapshots for the same clock within a
/// trace need to use the same unit.
#[prost(uint64, optional, tag = "4")]
pub unit_multiplier_ns: ::core::option::Option<u64>,
}
/// Nested message and enum types in `Clock`.
pub mod clock {
/// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum BuiltinClocks {
Unknown = 0,
Realtime = 1,
RealtimeCoarse = 2,
Monotonic = 3,
MonotonicCoarse = 4,
MonotonicRaw = 5,
Boottime = 6,
BuiltinClockMaxId = 63,
}
impl BuiltinClocks {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "UNKNOWN",
Self::Realtime => "REALTIME",
Self::RealtimeCoarse => "REALTIME_COARSE",
Self::Monotonic => "MONOTONIC",
Self::MonotonicCoarse => "MONOTONIC_COARSE",
Self::MonotonicRaw => "MONOTONIC_RAW",
Self::Boottime => "BOOTTIME",
Self::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNKNOWN" => Some(Self::Unknown),
"REALTIME" => Some(Self::Realtime),
"REALTIME_COARSE" => Some(Self::RealtimeCoarse),
"MONOTONIC" => Some(Self::Monotonic),
"MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
"MONOTONIC_RAW" => Some(Self::MonotonicRaw),
"BOOTTIME" => Some(Self::Boottime),
"BUILTIN_CLOCK_MAX_ID" => Some(Self::BuiltinClockMaxId),
_ => None,
}
}
}
}
}
/// Proto definition based on the Thread_v2 CSwitch class definition
/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CSwitchEtwEvent {
/// New thread ID after the switch.
#[prost(uint32, optional, tag = "1")]
pub new_thread_id: ::core::option::Option<u32>,
/// Previous thread ID.
#[prost(uint32, optional, tag = "2")]
pub old_thread_id: ::core::option::Option<u32>,
/// Thread priority of the new thread.
#[prost(sint32, optional, tag = "3")]
pub new_thread_priority: ::core::option::Option<i32>,
/// Thread priority of the previous thread.
#[prost(sint32, optional, tag = "4")]
pub old_thread_priority: ::core::option::Option<i32>,
/// The index of the C-state that was last used by the processor. A value of 0
/// represents the lightest idle state with higher values representing deeper
/// C-states.
#[prost(uint32, optional, tag = "5")]
pub previous_c_state: ::core::option::Option<u32>,
#[prost(
enumeration = "c_switch_etw_event::OldThreadWaitReason",
optional,
tag = "6"
)]
pub old_thread_wait_reason: ::core::option::Option<i32>,
#[prost(enumeration = "c_switch_etw_event::OldThreadWaitMode", optional, tag = "7")]
pub old_thread_wait_mode: ::core::option::Option<i32>,
#[prost(enumeration = "c_switch_etw_event::OldThreadState", optional, tag = "8")]
pub old_thread_state: ::core::option::Option<i32>,
/// Ideal wait time of the previous thread.
#[prost(sint32, optional, tag = "9")]
pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
/// Wait time for the new thread.
#[prost(uint32, optional, tag = "10")]
pub new_thread_wait_time: ::core::option::Option<u32>,
}
/// Nested message and enum types in `CSwitchEtwEvent`.
pub mod c_switch_etw_event {
/// Wait reason for the previous thread. The ordering is important as based on
/// the OldThreadWaitReason definition from the link above. The following are
/// the possible values:
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum OldThreadWaitReason {
Executive = 0,
FreePage = 1,
PageIn = 2,
PoolAllocation = 3,
DelayExecution = 4,
Suspend = 5,
UserRequest = 6,
WrExecutive = 7,
WrFreePage = 8,
WrPageIn = 9,
WrPoolAllocation = 10,
WrDelayExecution = 11,
WrSuspended = 12,
WrUserRequest = 13,
WrEventPair = 14,
WrQueue = 15,
WrLpcReceiver = 16,
WrLpcReply = 17,
WrVirtualMemory = 18,
WrPageOut = 19,
WrRendezVous = 20,
WrKeyedEvent = 21,
WrTerminated = 22,
WrProcessInSwap = 23,
WrCpuRateControl = 24,
WrCalloutStack = 25,
WrKernel = 26,
WrResource = 27,
WrPushLock = 28,
WrMutex = 29,
WrQuantumEnd = 30,
WrDispatchInt = 31,
WrPreempted = 32,
WrYieldExecution = 33,
WrFastMutex = 34,
WrGuardMutex = 35,
WrRundown = 36,
MaximumWaitReason = 37,
}
impl OldThreadWaitReason {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Executive => "EXECUTIVE",
Self::FreePage => "FREE_PAGE",
Self::PageIn => "PAGE_IN",
Self::PoolAllocation => "POOL_ALLOCATION",
Self::DelayExecution => "DELAY_EXECUTION",
Self::Suspend => "SUSPEND",
Self::UserRequest => "USER_REQUEST",
Self::WrExecutive => "WR_EXECUTIVE",
Self::WrFreePage => "WR_FREE_PAGE",
Self::WrPageIn => "WR_PAGE_IN",
Self::WrPoolAllocation => "WR_POOL_ALLOCATION",
Self::WrDelayExecution => "WR_DELAY_EXECUTION",
Self::WrSuspended => "WR_SUSPENDED",
Self::WrUserRequest => "WR_USER_REQUEST",
Self::WrEventPair => "WR_EVENT_PAIR",
Self::WrQueue => "WR_QUEUE",
Self::WrLpcReceiver => "WR_LPC_RECEIVER",
Self::WrLpcReply => "WR_LPC_REPLY",
Self::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
Self::WrPageOut => "WR_PAGE_OUT",
Self::WrRendezVous => "WR_RENDEZ_VOUS",
Self::WrKeyedEvent => "WR_KEYED_EVENT",
Self::WrTerminated => "WR_TERMINATED",
Self::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
Self::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
Self::WrCalloutStack => "WR_CALLOUT_STACK",
Self::WrKernel => "WR_KERNEL",
Self::WrResource => "WR_RESOURCE",
Self::WrPushLock => "WR_PUSH_LOCK",
Self::WrMutex => "WR_MUTEX",
Self::WrQuantumEnd => "WR_QUANTUM_END",
Self::WrDispatchInt => "WR_DISPATCH_INT",
Self::WrPreempted => "WR_PREEMPTED",
Self::WrYieldExecution => "WR_YIELD_EXECUTION",
Self::WrFastMutex => "WR_FAST_MUTEX",
Self::WrGuardMutex => "WR_GUARD_MUTEX",
Self::WrRundown => "WR_RUNDOWN",
Self::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"EXECUTIVE" => Some(Self::Executive),
"FREE_PAGE" => Some(Self::FreePage),
"PAGE_IN" => Some(Self::PageIn),
"POOL_ALLOCATION" => Some(Self::PoolAllocation),
"DELAY_EXECUTION" => Some(Self::DelayExecution),
"SUSPEND" => Some(Self::Suspend),
"USER_REQUEST" => Some(Self::UserRequest),
"WR_EXECUTIVE" => Some(Self::WrExecutive),
"WR_FREE_PAGE" => Some(Self::WrFreePage),
"WR_PAGE_IN" => Some(Self::WrPageIn),
"WR_POOL_ALLOCATION" => Some(Self::WrPoolAllocation),
"WR_DELAY_EXECUTION" => Some(Self::WrDelayExecution),
"WR_SUSPENDED" => Some(Self::WrSuspended),
"WR_USER_REQUEST" => Some(Self::WrUserRequest),
"WR_EVENT_PAIR" => Some(Self::WrEventPair),
"WR_QUEUE" => Some(Self::WrQueue),
"WR_LPC_RECEIVER" => Some(Self::WrLpcReceiver),
"WR_LPC_REPLY" => Some(Self::WrLpcReply),
"WR_VIRTUAL_MEMORY" => Some(Self::WrVirtualMemory),
"WR_PAGE_OUT" => Some(Self::WrPageOut),
"WR_RENDEZ_VOUS" => Some(Self::WrRendezVous),
"WR_KEYED_EVENT" => Some(Self::WrKeyedEvent),
"WR_TERMINATED" => Some(Self::WrTerminated),
"WR_PROCESS_IN_SWAP" => Some(Self::WrProcessInSwap),
"WR_CPU_RATE_CONTROL" => Some(Self::WrCpuRateControl),
"WR_CALLOUT_STACK" => Some(Self::WrCalloutStack),
"WR_KERNEL" => Some(Self::WrKernel),
"WR_RESOURCE" => Some(Self::WrResource),
"WR_PUSH_LOCK" => Some(Self::WrPushLock),
"WR_MUTEX" => Some(Self::WrMutex),
"WR_QUANTUM_END" => Some(Self::WrQuantumEnd),
"WR_DISPATCH_INT" => Some(Self::WrDispatchInt),
"WR_PREEMPTED" => Some(Self::WrPreempted),
"WR_YIELD_EXECUTION" => Some(Self::WrYieldExecution),
"WR_FAST_MUTEX" => Some(Self::WrFastMutex),
"WR_GUARD_MUTEX" => Some(Self::WrGuardMutex),
"WR_RUNDOWN" => Some(Self::WrRundown),
"MAXIMUM_WAIT_REASON" => Some(Self::MaximumWaitReason),
_ => None,
}
}
}
/// Wait mode for the previous thread. The ordering is important as based on
/// the OldThreadWaitMode definition from the link above. The following are the
/// possible values:
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum OldThreadWaitMode {
KernelMode = 0,
UserMode = 1,
}
impl OldThreadWaitMode {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::KernelMode => "KERNEL_MODE",
Self::UserMode => "USER_MODE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"KERNEL_MODE" => Some(Self::KernelMode),
"USER_MODE" => Some(Self::UserMode),
_ => None,
}
}
}
/// State of the previous thread. The ordering is important as based on the
/// OldThreadState definition from the link above. The following are the
/// possible state values:
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum OldThreadState {
Initialized = 0,
Ready = 1,
Running = 2,
Standby = 3,
Terminated = 4,
Waiting = 5,
Transition = 6,
DeferredReady = 7,
}
impl OldThreadState {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Initialized => "INITIALIZED",
Self::Ready => "READY",
Self::Running => "RUNNING",
Self::Standby => "STANDBY",
Self::Terminated => "TERMINATED",
Self::Waiting => "WAITING",
Self::Transition => "TRANSITION",
Self::DeferredReady => "DEFERRED_READY",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"INITIALIZED" => Some(Self::Initialized),
"READY" => Some(Self::Ready),
"RUNNING" => Some(Self::Running),
"STANDBY" => Some(Self::Standby),
"TERMINATED" => Some(Self::Terminated),
"WAITING" => Some(Self::Waiting),
"TRANSITION" => Some(Self::Transition),
"DEFERRED_READY" => Some(Self::DeferredReady),
_ => None,
}
}
}
}
/// Proto definition based on the Thread_v2 CSwitch class definition
/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ReadyThreadEtwEvent {
/// The thread identifier of the thread being readied for execution.
#[prost(uint32, optional, tag = "1")]
pub t_thread_id: ::core::option::Option<u32>,
#[prost(enumeration = "ready_thread_etw_event::AdjustReason", optional, tag = "2")]
pub adjust_reason: ::core::option::Option<i32>,
/// The value by which the priority is being adjusted.
#[prost(sint32, optional, tag = "3")]
pub adjust_increment: ::core::option::Option<i32>,
#[prost(enumeration = "ready_thread_etw_event::TraceFlag", optional, tag = "4")]
pub flag: ::core::option::Option<i32>,
}
/// Nested message and enum types in `ReadyThreadEtwEvent`.
pub mod ready_thread_etw_event {
/// The reason for the priority boost. The ordering is important as based on
/// the AdjustReason definition from the link above.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum AdjustReason {
IgnoreTheIncrement = 0,
/// Apply the increment, which will decay incrementally at the end of each
/// quantum.
ApplyIncrement = 1,
/// Apply the increment as a boost that will decay in its entirety at quantum
/// (typically for priority donation).
ApplyIncrementBoost = 2,
}
impl AdjustReason {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
Self::ApplyIncrement => "APPLY_INCREMENT",
Self::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"IGNORE_THE_INCREMENT" => Some(Self::IgnoreTheIncrement),
"APPLY_INCREMENT" => Some(Self::ApplyIncrement),
"APPLY_INCREMENT_BOOST" => Some(Self::ApplyIncrementBoost),
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum TraceFlag {
Unspecified = 0,
/// The thread has been readied from DPC (deferred procedure call).
ThreadReadied = 1,
/// The kernel stack is currently swapped out.
KernelStackSwappedOut = 2,
/// The process address space is swapped out.
ProcessAddressSwappedOut = 4,
}
impl TraceFlag {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
Self::ThreadReadied => "THREAD_READIED",
Self::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
Self::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
"THREAD_READIED" => Some(Self::ThreadReadied),
"KERNEL_STACK_SWAPPED_OUT" => Some(Self::KernelStackSwappedOut),
"PROCESS_ADDRESS_SWAPPED_OUT" => Some(Self::ProcessAddressSwappedOut),
_ => None,
}
}
}
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct EtwTraceEvent {
#[prost(uint64, optional, tag = "1")]
pub timestamp: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub cpu: ::core::option::Option<u32>,
#[prost(oneof = "etw_trace_event::Event", tags = "2, 3")]
pub event: ::core::option::Option<etw_trace_event::Event>,
}
/// Nested message and enum types in `EtwTraceEvent`.
pub mod etw_trace_event {
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum Event {
#[prost(message, tag = "2")]
CSwitch(super::CSwitchEtwEvent),
#[prost(message, tag = "3")]
ReadyThread(super::ReadyThreadEtwEvent),
}
}
/// The result of tracing one or more etw event uses per-processor buffers where
/// an in-use buffer is assigned to each processor at all times. Therefore,
/// collecting multiple events they should already be synchronized.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EtwTraceEventBundle {
#[prost(uint32, optional, tag = "1")]
pub cpu: ::core::option::Option<u32>,
#[prost(message, repeated, tag = "2")]
pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
}
/// The protocol compiler can output a FileDescriptorSet containing the .proto
/// files it parses.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FileDescriptorSet {
#[prost(message, repeated, tag = "1")]
pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
}
/// Describes a complete .proto file.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FileDescriptorProto {
/// file name, relative to root of source tree
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
/// e.g. "foo", "foo.bar", etc.
#[prost(string, optional, tag = "2")]
pub package: ::core::option::Option<::prost::alloc::string::String>,
/// Names of files imported by this file.
#[prost(string, repeated, tag = "3")]
pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Indexes of the public imported files in the dependency list above.
#[prost(int32, repeated, packed = "false", tag = "10")]
pub public_dependency: ::prost::alloc::vec::Vec<i32>,
/// Indexes of the weak imported files in the dependency list.
/// For Google-internal migration only. Do not use.
#[prost(int32, repeated, packed = "false", tag = "11")]
pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
/// All top-level definitions in this file.
#[prost(message, repeated, tag = "4")]
pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
#[prost(message, repeated, tag = "5")]
pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
#[prost(message, repeated, tag = "7")]
pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
}
/// Describes a message type.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DescriptorProto {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, repeated, tag = "2")]
pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
#[prost(message, repeated, tag = "6")]
pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
#[prost(message, repeated, tag = "3")]
pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
#[prost(message, repeated, tag = "4")]
pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
#[prost(message, repeated, tag = "8")]
pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
#[prost(message, repeated, tag = "9")]
pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
/// Reserved field names, which may not be used by fields in the same message.
/// A given name may only be reserved once.
#[prost(string, repeated, tag = "10")]
pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// Nested message and enum types in `DescriptorProto`.
pub mod descriptor_proto {
/// Range of reserved tag numbers. Reserved tag numbers may not be used by
/// fields or extension ranges in the same message. Reserved ranges may
/// not overlap.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ReservedRange {
/// Inclusive.
#[prost(int32, optional, tag = "1")]
pub start: ::core::option::Option<i32>,
/// Exclusive.
#[prost(int32, optional, tag = "2")]
pub end: ::core::option::Option<i32>,
}
}
/// A message representing a option the parser does not recognize. This only
/// appears in options protos created by the compiler::Parser class.
/// DescriptorPool resolves these when building Descriptor objects. Therefore,
/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
/// in them.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UninterpretedOption {
#[prost(message, repeated, tag = "2")]
pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
/// The value of the uninterpreted option, in whatever type the tokenizer
/// identified it as during parsing. Exactly one of these should be set.
#[prost(string, optional, tag = "3")]
pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "4")]
pub positive_int_value: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "5")]
pub negative_int_value: ::core::option::Option<i64>,
#[prost(double, optional, tag = "6")]
pub double_value: ::core::option::Option<f64>,
#[prost(bytes = "vec", optional, tag = "7")]
pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
#[prost(string, optional, tag = "8")]
pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
}
/// Nested message and enum types in `UninterpretedOption`.
pub mod uninterpreted_option {
/// The name of the uninterpreted option. Each string represents a segment in
/// a dot-separated name. is_extension is true iff a segment represents an
/// extension (denoted with parentheses in options specs in .proto files).
/// E.g.,{ \["foo", false\], \["bar.baz", true\], \["moo", false\] } represents
/// "foo.(bar.baz).moo".
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NamePart {
#[prost(string, optional, tag = "1")]
pub name_part: ::core::option::Option<::prost::alloc::string::String>,
#[prost(bool, optional, tag = "2")]
pub is_extension: ::core::option::Option<bool>,
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FieldOptions {
/// The packed option can be enabled for repeated primitive fields to enable
/// a more efficient representation on the wire. Rather than repeatedly
/// writing the tag and type for each element, the entire array is encoded as
/// a single length-delimited blob. In proto3, only explicit setting it to
/// false will avoid using packed encoding.
#[prost(bool, optional, tag = "2")]
pub packed: ::core::option::Option<bool>,
/// The parser stores options it doesn't recognize here. See above.
#[prost(message, repeated, tag = "999")]
pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
}
/// Describes a field within a message.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FieldDescriptorProto {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "3")]
pub number: ::core::option::Option<i32>,
#[prost(enumeration = "field_descriptor_proto::Label", optional, tag = "4")]
pub label: ::core::option::Option<i32>,
/// If type_name is set, this need not be set. If both this and type_name
/// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
#[prost(enumeration = "field_descriptor_proto::Type", optional, tag = "5")]
pub r#type: ::core::option::Option<i32>,
/// For message and enum types, this is the name of the type. If the name
/// starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
/// rules are used to find the type (i.e. first the nested types within this
/// message are searched, then within the parent, on up to the root
/// namespace).
#[prost(string, optional, tag = "6")]
pub type_name: ::core::option::Option<::prost::alloc::string::String>,
/// For extensions, this is the name of the type being extended. It is
/// resolved in the same manner as type_name.
#[prost(string, optional, tag = "2")]
pub extendee: ::core::option::Option<::prost::alloc::string::String>,
/// For numeric types, contains the original text representation of the value.
/// For booleans, "true" or "false".
/// For strings, contains the default text contents (not escaped in any way).
/// For bytes, contains the C escaped value. All bytes >= 128 are escaped.
/// TODO(kenton): Base-64 encode?
#[prost(string, optional, tag = "7")]
pub default_value: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, optional, tag = "8")]
pub options: ::core::option::Option<FieldOptions>,
/// If set, gives the index of a oneof in the containing type's oneof_decl
/// list. This field is a member of that oneof.
#[prost(int32, optional, tag = "9")]
pub oneof_index: ::core::option::Option<i32>,
}
/// Nested message and enum types in `FieldDescriptorProto`.
pub mod field_descriptor_proto {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Type {
/// 0 is reserved for errors.
/// Order is weird for historical reasons.
Double = 1,
Float = 2,
/// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
/// negative values are likely.
Int64 = 3,
Uint64 = 4,
/// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
/// negative values are likely.
Int32 = 5,
Fixed64 = 6,
Fixed32 = 7,
Bool = 8,
String = 9,
/// Tag-delimited aggregate.
/// Group type is deprecated and not supported in proto3. However, Proto3
/// implementations should still be able to parse the group wire format and
/// treat group fields as unknown fields.
Group = 10,
/// Length-delimited aggregate.
Message = 11,
/// New in version 2.
Bytes = 12,
Uint32 = 13,
Enum = 14,
Sfixed32 = 15,
Sfixed64 = 16,
/// Uses ZigZag encoding.
Sint32 = 17,
/// Uses ZigZag encoding.
Sint64 = 18,
}
impl Type {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Double => "TYPE_DOUBLE",
Self::Float => "TYPE_FLOAT",
Self::Int64 => "TYPE_INT64",
Self::Uint64 => "TYPE_UINT64",
Self::Int32 => "TYPE_INT32",
Self::Fixed64 => "TYPE_FIXED64",
Self::Fixed32 => "TYPE_FIXED32",
Self::Bool => "TYPE_BOOL",
Self::String => "TYPE_STRING",
Self::Group => "TYPE_GROUP",
Self::Message => "TYPE_MESSAGE",
Self::Bytes => "TYPE_BYTES",
Self::Uint32 => "TYPE_UINT32",
Self::Enum => "TYPE_ENUM",
Self::Sfixed32 => "TYPE_SFIXED32",
Self::Sfixed64 => "TYPE_SFIXED64",
Self::Sint32 => "TYPE_SINT32",
Self::Sint64 => "TYPE_SINT64",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"TYPE_DOUBLE" => Some(Self::Double),
"TYPE_FLOAT" => Some(Self::Float),
"TYPE_INT64" => Some(Self::Int64),
"TYPE_UINT64" => Some(Self::Uint64),
"TYPE_INT32" => Some(Self::Int32),
"TYPE_FIXED64" => Some(Self::Fixed64),
"TYPE_FIXED32" => Some(Self::Fixed32),
"TYPE_BOOL" => Some(Self::Bool),
"TYPE_STRING" => Some(Self::String),
"TYPE_GROUP" => Some(Self::Group),
"TYPE_MESSAGE" => Some(Self::Message),
"TYPE_BYTES" => Some(Self::Bytes),
"TYPE_UINT32" => Some(Self::Uint32),
"TYPE_ENUM" => Some(Self::Enum),
"TYPE_SFIXED32" => Some(Self::Sfixed32),
"TYPE_SFIXED64" => Some(Self::Sfixed64),
"TYPE_SINT32" => Some(Self::Sint32),
"TYPE_SINT64" => Some(Self::Sint64),
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Label {
/// 0 is reserved for errors
Optional = 1,
Required = 2,
Repeated = 3,
}
impl Label {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Optional => "LABEL_OPTIONAL",
Self::Required => "LABEL_REQUIRED",
Self::Repeated => "LABEL_REPEATED",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"LABEL_OPTIONAL" => Some(Self::Optional),
"LABEL_REQUIRED" => Some(Self::Required),
"LABEL_REPEATED" => Some(Self::Repeated),
_ => None,
}
}
}
}
/// Describes a oneof.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OneofDescriptorProto {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, optional, tag = "2")]
pub options: ::core::option::Option<OneofOptions>,
}
/// Describes an enum type.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EnumDescriptorProto {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, repeated, tag = "2")]
pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
/// Reserved enum value names, which may not be reused. A given name may only
/// be reserved once.
#[prost(string, repeated, tag = "5")]
pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// Describes a value within an enum.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EnumValueDescriptorProto {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub number: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct OneofOptions {}
/// This message contains descriptors used to parse extension fields of
/// TrackEvent.
///
/// See docs/design-docs/extensions.md for more details.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ExtensionDescriptor {
#[prost(message, optional, tag = "1")]
pub extension_set: ::core::option::Option<FileDescriptorSet>,
}
/// Represents the mapping between inode numbers in a block device and their path
/// on the filesystem
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InodeFileMap {
#[prost(uint64, optional, tag = "1")]
pub block_device_id: ::core::option::Option<u64>,
/// The mount points of the block device, e.g. \["system"\].
#[prost(string, repeated, tag = "2")]
pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// The list of all the entries from the block device
#[prost(message, repeated, tag = "3")]
pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
}
/// Nested message and enum types in `InodeFileMap`.
pub mod inode_file_map {
/// Representation of Entry
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Entry {
#[prost(uint64, optional, tag = "1")]
pub inode_number: ::core::option::Option<u64>,
/// The path to the file, e.g. "etc/file.xml"
/// List of strings for multiple hardlinks
#[prost(string, repeated, tag = "2")]
pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(enumeration = "entry::Type", optional, tag = "3")]
pub r#type: ::core::option::Option<i32>,
}
/// Nested message and enum types in `Entry`.
pub mod entry {
/// The file type
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Type {
Unknown = 0,
File = 1,
Directory = 2,
}
impl Type {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "UNKNOWN",
Self::File => "FILE",
Self::Directory => "DIRECTORY",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNKNOWN" => Some(Self::Unknown),
"FILE" => Some(Self::File),
"DIRECTORY" => Some(Self::Directory),
_ => None,
}
}
}
}
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AndroidFsDatareadEndFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub bytes: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub offset: ::core::option::Option<i64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidFsDatareadStartFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub bytes: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int64, optional, tag = "3")]
pub i_size: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "4")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "5")]
pub offset: ::core::option::Option<i64>,
#[prost(string, optional, tag = "6")]
pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "7")]
pub pid: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AndroidFsDatawriteEndFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub bytes: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub offset: ::core::option::Option<i64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidFsDatawriteStartFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub bytes: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int64, optional, tag = "3")]
pub i_size: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "4")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "5")]
pub offset: ::core::option::Option<i64>,
#[prost(string, optional, tag = "6")]
pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "7")]
pub pid: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AndroidFsFsyncEndFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub bytes: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub offset: ::core::option::Option<i64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidFsFsyncStartFtraceEvent {
#[prost(string, optional, tag = "1")]
pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int64, optional, tag = "2")]
pub i_size: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "3")]
pub ino: ::core::option::Option<u64>,
#[prost(string, optional, tag = "4")]
pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "5")]
pub pid: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BclIrqTriggerFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub id: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub throttle: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub cpu0_limit: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub cpu1_limit: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub cpu2_limit: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "6")]
pub tpu_limit: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "7")]
pub gpu_limit: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "8")]
pub voltage: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "9")]
pub capacity: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BinderTransactionFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub debug_id: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub target_node: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub to_proc: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub to_thread: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub reply: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "6")]
pub code: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub flags: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BinderTransactionReceivedFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub debug_id: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BinderSetPriorityFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub proc: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub thread: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub old_prio: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub new_prio: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub desired_prio: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BinderLockFtraceEvent {
#[prost(string, optional, tag = "1")]
pub tag: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BinderLockedFtraceEvent {
#[prost(string, optional, tag = "1")]
pub tag: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BinderUnlockFtraceEvent {
#[prost(string, optional, tag = "1")]
pub tag: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BinderTransactionAllocBufFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub data_size: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub debug_id: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "3")]
pub offsets_size: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub extra_buffers_size: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BinderCommandFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub cmd: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BinderReturnFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub cmd: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockRqIssueFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub bytes: ::core::option::Option<u32>,
#[prost(string, optional, tag = "5")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "6")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "7")]
pub cmd: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockBioBackmergeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "5")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockBioBounceFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "5")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockBioCompleteFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub error: ::core::option::Option<i32>,
#[prost(string, optional, tag = "5")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockBioFrontmergeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "5")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockBioQueueFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "5")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockBioRemapFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "4")]
pub old_dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub old_sector: ::core::option::Option<u64>,
#[prost(string, optional, tag = "6")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BlockDirtyBufferFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub size: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockGetrqFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "5")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockPlugFtraceEvent {
#[prost(string, optional, tag = "1")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockRqAbortFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub errors: ::core::option::Option<i32>,
#[prost(string, optional, tag = "5")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "6")]
pub cmd: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockRqCompleteFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub errors: ::core::option::Option<i32>,
#[prost(string, optional, tag = "5")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "6")]
pub cmd: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "7")]
pub error: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockRqInsertFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub bytes: ::core::option::Option<u32>,
#[prost(string, optional, tag = "5")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "6")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "7")]
pub cmd: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockRqRemapFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "4")]
pub old_dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub old_sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "6")]
pub nr_bios: ::core::option::Option<u32>,
#[prost(string, optional, tag = "7")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockRqRequeueFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub errors: ::core::option::Option<i32>,
#[prost(string, optional, tag = "5")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "6")]
pub cmd: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockSleeprqFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "5")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockSplitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub new_sector: ::core::option::Option<u64>,
#[prost(string, optional, tag = "4")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "5")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BlockTouchBufferFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub size: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockUnplugFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub nr_rq: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockIoStartFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub bytes: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub ioprio: ::core::option::Option<u32>,
#[prost(string, optional, tag = "6")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "7")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "8")]
pub cmd: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BlockIoDoneFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nr_sector: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub bytes: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub ioprio: ::core::option::Option<u32>,
#[prost(string, optional, tag = "6")]
pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "7")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "8")]
pub cmd: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CgroupAttachTaskFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub dst_root: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub dst_id: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "4")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "5")]
pub cname: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "6")]
pub dst_level: ::core::option::Option<i32>,
#[prost(string, optional, tag = "7")]
pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CgroupMkdirFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub root: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub id: ::core::option::Option<i32>,
#[prost(string, optional, tag = "3")]
pub cname: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "4")]
pub level: ::core::option::Option<i32>,
#[prost(string, optional, tag = "5")]
pub path: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CgroupRemountFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub root: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub ss_mask: ::core::option::Option<u32>,
#[prost(string, optional, tag = "3")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CgroupRmdirFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub root: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub id: ::core::option::Option<i32>,
#[prost(string, optional, tag = "3")]
pub cname: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "4")]
pub level: ::core::option::Option<i32>,
#[prost(string, optional, tag = "5")]
pub path: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CgroupTransferTasksFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub dst_root: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub dst_id: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "4")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "5")]
pub cname: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "6")]
pub dst_level: ::core::option::Option<i32>,
#[prost(string, optional, tag = "7")]
pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CgroupDestroyRootFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub root: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub ss_mask: ::core::option::Option<u32>,
#[prost(string, optional, tag = "3")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CgroupReleaseFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub root: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub id: ::core::option::Option<i32>,
#[prost(string, optional, tag = "3")]
pub cname: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "4")]
pub level: ::core::option::Option<i32>,
#[prost(string, optional, tag = "5")]
pub path: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CgroupRenameFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub root: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub id: ::core::option::Option<i32>,
#[prost(string, optional, tag = "3")]
pub cname: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "4")]
pub level: ::core::option::Option<i32>,
#[prost(string, optional, tag = "5")]
pub path: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CgroupSetupRootFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub root: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub ss_mask: ::core::option::Option<u32>,
#[prost(string, optional, tag = "3")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClkEnableFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClkDisableFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClkSetRateFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub rate: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CmaAllocStartFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub align: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub count: ::core::option::Option<u32>,
#[prost(string, optional, tag = "3")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CmaAllocInfoFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub align: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub count: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub err_iso: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub err_mig: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub err_test: ::core::option::Option<u32>,
#[prost(string, optional, tag = "6")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "7")]
pub nr_mapped: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "8")]
pub nr_migrated: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "9")]
pub nr_reclaimed: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "10")]
pub pfn: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmCompactionBeginFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub zone_start: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub migrate_pfn: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub free_pfn: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub zone_end: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub sync: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmCompactionDeferCompactionFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub nid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub idx: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "3")]
pub order: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "4")]
pub considered: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub defer_shift: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "6")]
pub order_failed: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmCompactionDeferredFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub nid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub idx: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "3")]
pub order: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "4")]
pub considered: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub defer_shift: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "6")]
pub order_failed: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmCompactionDeferResetFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub nid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub idx: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "3")]
pub order: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "4")]
pub considered: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub defer_shift: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "6")]
pub order_failed: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmCompactionEndFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub zone_start: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub migrate_pfn: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub free_pfn: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub zone_end: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub sync: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "6")]
pub status: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmCompactionFinishedFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub nid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub idx: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "3")]
pub order: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmCompactionIsolateFreepagesFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub start_pfn: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub end_pfn: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub nr_scanned: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub nr_taken: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmCompactionIsolateMigratepagesFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub start_pfn: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub end_pfn: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub nr_scanned: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub nr_taken: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmCompactionKcompactdSleepFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub nid: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmCompactionKcompactdWakeFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub nid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub order: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub classzone_idx: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub highest_zoneidx: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmCompactionMigratepagesFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub nr_migrated: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub nr_failed: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmCompactionSuitableFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub nid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub idx: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "3")]
pub order: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmCompactionTryToCompactPagesFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub order: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub gfp_mask: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub mode: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub prio: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmCompactionWakeupKcompactdFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub nid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub order: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub classzone_idx: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub highest_zoneidx: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ParamSetValueCpmFtraceEvent {
#[prost(string, optional, tag = "1")]
pub body: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "2")]
pub value: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "3")]
pub timestamp: ::core::option::Option<i64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CpuhpExitFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub cpu: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub idx: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub ret: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub state: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CpuhpMultiEnterFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub cpu: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub fun: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub idx: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub target: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CpuhpEnterFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub cpu: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub fun: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub idx: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub target: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CpuhpLatencyFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub cpu: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub ret: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub state: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "4")]
pub time: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CpuhpPauseFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub active_cpus: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub cpus: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub pause: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub time: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CrosEcSensorhubDataFtraceEvent {
#[prost(int64, optional, tag = "1")]
pub current_time: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "2")]
pub current_timestamp: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "3")]
pub delta: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "4")]
pub ec_fifo_timestamp: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub ec_sensor_num: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "6")]
pub fifo_timestamp: ::core::option::Option<i64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DcvshFreqFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub cpu: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub freq: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DevfreqFrequencyFtraceEvent {
#[prost(string, optional, tag = "1")]
pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub freq: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub prev_freq: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub busy_time: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub total_time: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DmaFenceInitFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub context: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub driver: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub seqno: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub timeline: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DmaFenceEmitFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub context: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub driver: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub seqno: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub timeline: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DmaFenceSignaledFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub context: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub driver: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub seqno: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub timeline: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DmaFenceWaitStartFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub context: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub driver: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub seqno: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub timeline: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DmaFenceWaitEndFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub context: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub driver: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub seqno: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub timeline: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DmaHeapStatFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub inode: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "2")]
pub len: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "3")]
pub total_allocated: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DpuTracingMarkWriteFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub trace_begin: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "5")]
pub r#type: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "6")]
pub value: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DpuDsiCmdFifoStatusFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub header: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub payload: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DpuDsiRxFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub cmd: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub rx_buf: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DpuDsiTxFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub r#type: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub tx_buf: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub last: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub delay_ms: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DrmVblankEventFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub crtc: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub high_prec: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub seq: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "4")]
pub time: ::core::option::Option<i64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DrmVblankEventDeliveredFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub crtc: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub file: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub seq: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4DaWriteBeginFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub pos: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub flags: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4DaWriteEndFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub pos: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub copied: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4SyncFileEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub parent: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "4")]
pub datasync: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4SyncFileExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4AllocDaBlocksFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub data_blocks: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub meta_blocks: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4AllocateBlocksFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub block: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub logical: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub lleft: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub lright: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "8")]
pub goal: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "9")]
pub pleft: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "10")]
pub pright: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "11")]
pub flags: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4AllocateInodeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub dir: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub mode: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4BeginOrderedTruncateFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub new_size: ::core::option::Option<i64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4CollapseRangeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub offset: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "4")]
pub len: ::core::option::Option<i64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4DaReleaseSpaceFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub i_blocks: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "4")]
pub freed_blocks: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub reserved_data_blocks: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "6")]
pub reserved_meta_blocks: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "7")]
pub allocated_meta_blocks: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "8")]
pub mode: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4DaReserveSpaceFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub i_blocks: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "4")]
pub reserved_data_blocks: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub reserved_meta_blocks: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "6")]
pub mode: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "7")]
pub md_needed: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub i_blocks: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "4")]
pub used_blocks: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub reserved_data_blocks: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "6")]
pub reserved_meta_blocks: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "7")]
pub allocated_meta_blocks: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "8")]
pub quota_claim: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "9")]
pub mode: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4DaWritePagesFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub first_page: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "4")]
pub nr_to_write: ::core::option::Option<i64>,
#[prost(int32, optional, tag = "5")]
pub sync_mode: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "6")]
pub b_blocknr: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "7")]
pub b_size: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub b_state: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "9")]
pub io_done: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "10")]
pub pages_written: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4DaWritePagesExtentFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub lblk: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub flags: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4DirectIoEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub pos: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "4")]
pub len: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "5")]
pub rw: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4DirectIoExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub pos: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "4")]
pub len: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "5")]
pub rw: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "6")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4DiscardBlocksFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub blk: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub count: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4DiscardPreallocationsFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub needed: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4DropInodeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub drop: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4EsCacheExtentFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "5")]
pub pblk: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "6")]
pub status: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub lblk: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "5")]
pub pblk: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "6")]
pub status: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4EsInsertExtentFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "5")]
pub pblk: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "6")]
pub status: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4EsLookupExtentEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub lblk: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4EsLookupExtentExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "5")]
pub pblk: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "6")]
pub status: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "7")]
pub found: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4EsRemoveExtentFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub lblk: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "4")]
pub len: ::core::option::Option<i64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4EsShrinkFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub nr_shrunk: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "3")]
pub scan_time: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "4")]
pub nr_skipped: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub retried: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4EsShrinkCountFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub nr_to_scan: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub cache_cnt: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4EsShrinkScanEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub nr_to_scan: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub cache_cnt: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4EsShrinkScanExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub nr_shrunk: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub cache_cnt: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4EvictInodeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub nlink: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub m_lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub m_len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub u_lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub u_len: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "7")]
pub u_pblk: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub m_lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub m_len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub u_lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub u_len: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "7")]
pub u_pblk: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "8")]
pub i_lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub i_len: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "10")]
pub i_pblk: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub flags: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "4")]
pub lblk: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "5")]
pub pblk: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "6")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub allocated: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "8")]
pub newblk: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ExtInCacheFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub lblk: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ExtLoadExtentFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub pblk: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub lblk: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ExtMapBlocksEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub flags: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ExtMapBlocksExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub flags: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "4")]
pub pblk: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub mflags: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "8")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ExtPutInCacheFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "5")]
pub start: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ExtRemoveSpaceFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub start: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub end: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub depth: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub start: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub end: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub depth: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "6")]
pub partial: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "7")]
pub eh_entries: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub pc_lblk: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "9")]
pub pc_pclu: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "10")]
pub pc_state: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ExtRmIdxFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub pblk: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ExtRmLeafFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub partial: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "4")]
pub start: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub ee_lblk: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "6")]
pub ee_pblk: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "7")]
pub ee_len: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "8")]
pub pc_lblk: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "9")]
pub pc_pclu: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "10")]
pub pc_state: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ExtShowExtentFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub pblk: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub len: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4FallocateEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub offset: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "4")]
pub len: ::core::option::Option<i64>,
#[prost(int32, optional, tag = "5")]
pub mode: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "6")]
pub pos: ::core::option::Option<i64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4FallocateExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub pos: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "4")]
pub blocks: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4FindDelallocRangeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub from: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub to: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub reverse: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "6")]
pub found: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "7")]
pub found_blk: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ForgetFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub block: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "4")]
pub is_metadata: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "5")]
pub mode: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4FreeBlocksFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub block: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub count: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "5")]
pub flags: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "6")]
pub mode: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4FreeInodeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub uid: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub gid: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "5")]
pub blocks: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "6")]
pub mode: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub lblk: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "4")]
pub pblk: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub len: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "6")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4GetReservedClusterAllocFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4IndMapBlocksEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub flags: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4IndMapBlocksExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub flags: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "4")]
pub pblk: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub mflags: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "8")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4InsertRangeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub offset: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "4")]
pub len: ::core::option::Option<i64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4InvalidatepageFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub index: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub offset: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub length: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4JournalStartFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ip: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub blocks: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub rsv_blocks: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub nblocks: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "6")]
pub revoke_creds: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4JournalStartReservedFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ip: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub blocks: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4JournalledInvalidatepageFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub index: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub offset: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub length: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4JournalledWriteEndFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub pos: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub copied: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4LoadInodeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4LoadInodeBitmapFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub group: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4MarkInodeDirtyFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub ip: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4MbBitmapLoadFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub group: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub group: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4MbDiscardPreallocationsFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub needed: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4MbNewGroupPaFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub pa_pstart: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub pa_lstart: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub pa_len: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4MbNewInodePaFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub pa_pstart: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub pa_lstart: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub pa_len: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4MbReleaseGroupPaFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub pa_pstart: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub pa_len: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4MbReleaseInodePaFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub block: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub count: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4MballocAllocFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub orig_logical: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub orig_start: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "5")]
pub orig_group: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "6")]
pub orig_len: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "7")]
pub goal_logical: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "8")]
pub goal_start: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "9")]
pub goal_group: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "10")]
pub goal_len: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "11")]
pub result_logical: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "12")]
pub result_start: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "13")]
pub result_group: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "14")]
pub result_len: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "15")]
pub found: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "16")]
pub groups: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "17")]
pub buddy: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "18")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "19")]
pub tail: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "20")]
pub cr: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4MballocDiscardFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub result_start: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "4")]
pub result_group: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub result_len: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4MballocFreeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub result_start: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "4")]
pub result_group: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub result_len: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4MballocPreallocFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub orig_logical: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub orig_start: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "5")]
pub orig_group: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "6")]
pub orig_len: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "7")]
pub result_logical: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "8")]
pub result_start: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "9")]
pub result_group: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "10")]
pub result_len: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub orig_ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub uid: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub gid: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub mode: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4PunchHoleFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub offset: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "4")]
pub len: ::core::option::Option<i64>,
#[prost(int32, optional, tag = "5")]
pub mode: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub group: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub prefetch: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ReadpageFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub index: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ReleasepageFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub index: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4RemoveBlocksFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub from: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub to: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "5")]
pub partial: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "6")]
pub ee_pblk: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "7")]
pub ee_lblk: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub ee_len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub pc_lblk: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "10")]
pub pc_pclu: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "11")]
pub pc_state: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4RequestBlocksFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub logical: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub lleft: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub lright: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "7")]
pub goal: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "8")]
pub pleft: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "9")]
pub pright: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "10")]
pub flags: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4RequestInodeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub dir: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub mode: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4SyncFsFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub wait: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4TrimAllFreeFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub dev_major: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub dev_minor: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub group: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub start: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub len: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4TrimExtentFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub dev_major: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub dev_minor: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub group: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub start: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub len: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4TruncateEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub blocks: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4TruncateExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub blocks: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4UnlinkEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub parent: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "4")]
pub size: ::core::option::Option<i64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4UnlinkExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4WriteBeginFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub pos: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub flags: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4WriteEndFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub pos: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub copied: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4WritepageFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub index: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4WritepagesFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub nr_to_write: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "4")]
pub pages_skipped: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "5")]
pub range_start: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "6")]
pub range_end: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "7")]
pub writeback_index: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "8")]
pub sync_mode: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "9")]
pub for_kupdate: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "10")]
pub range_cyclic: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4WritepagesResultFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub ret: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub pages_written: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "5")]
pub pages_skipped: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "6")]
pub writeback_index: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "7")]
pub sync_mode: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Ext4ZeroRangeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub offset: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "4")]
pub len: ::core::option::Option<i64>,
#[prost(int32, optional, tag = "5")]
pub mode: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsDoSubmitBioFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub btype: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub sync: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "4")]
pub sector: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub size: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsEvictInodeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub pino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub mode: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "5")]
pub size: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "6")]
pub nlink: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "7")]
pub blocks: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "8")]
pub advise: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsFallocateFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub mode: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "4")]
pub offset: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "5")]
pub len: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "6")]
pub size: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "7")]
pub blocks: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "8")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsGetDataBlockFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub iblock: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub bh_start: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub bh_size: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "6")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsGetVictimFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub r#type: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub gc_type: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub alloc_mode: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub gc_mode: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "6")]
pub victim: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub ofs_unit: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub pre_victim: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub prefree: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "10")]
pub free: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "11")]
pub cost: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsIgetFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub pino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub mode: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "5")]
pub size: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "6")]
pub nlink: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "7")]
pub blocks: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "8")]
pub advise: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsIgetExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsNewInodeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsReadpageFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub index: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub blkaddr: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "5")]
pub r#type: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "6")]
pub dir: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "7")]
pub dirty: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "8")]
pub uptodate: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsReserveNewBlockFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub nid: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub ofs_in_node: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsSetPageDirtyFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub r#type: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub dir: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "5")]
pub index: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "6")]
pub dirty: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "7")]
pub uptodate: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsSubmitWritePageFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub r#type: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "4")]
pub index: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub block: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsSyncFileEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub pino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub mode: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "5")]
pub size: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "6")]
pub nlink: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "7")]
pub blocks: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "8")]
pub advise: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsSyncFileExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub need_cp: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub datasync: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub ret: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "6")]
pub cp_reason: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsSyncFsFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub dirty: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub wait: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsTruncateFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub pino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub mode: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "5")]
pub size: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "6")]
pub nlink: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "7")]
pub blocks: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "8")]
pub advise: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsTruncateBlocksEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub size: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "4")]
pub blocks: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub from: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsTruncateBlocksExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nid: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub ofs: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub free: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub size: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "4")]
pub blocks: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub from: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsTruncateNodeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nid: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub blk_addr: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsTruncateNodesEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nid: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub blk_addr: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsTruncateNodesExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsTruncatePartialNodesFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub nid: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub depth: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub err: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct F2fsUnlinkEnterFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub size: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "4")]
pub blocks: ::core::option::Option<u64>,
#[prost(string, optional, tag = "5")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsUnlinkExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsVmPageMkwriteFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub r#type: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub dir: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "5")]
pub index: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "6")]
pub dirty: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "7")]
pub uptodate: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsWriteBeginFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub pos: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub flags: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct F2fsWriteCheckpointFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub is_umount: ::core::option::Option<u32>,
#[prost(string, optional, tag = "3")]
pub msg: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "4")]
pub reason: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsWriteEndFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ino: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub pos: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "4")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub copied: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsIostatFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub app_bio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub app_brio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub app_dio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub app_drio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub app_mio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "6")]
pub app_mrio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "7")]
pub app_rio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "8")]
pub app_wio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "9")]
pub dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "10")]
pub fs_cdrio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "11")]
pub fs_cp_dio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "12")]
pub fs_cp_mio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "13")]
pub fs_cp_nio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "14")]
pub fs_dio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "15")]
pub fs_discard: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "16")]
pub fs_drio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "17")]
pub fs_gc_dio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "18")]
pub fs_gc_nio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "19")]
pub fs_gdrio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "20")]
pub fs_mio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "21")]
pub fs_mrio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "22")]
pub fs_nio: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "23")]
pub fs_nrio: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsIostatLatencyFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub d_rd_avg: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub d_rd_cnt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub d_rd_peak: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub d_wr_as_avg: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub d_wr_as_cnt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub d_wr_as_peak: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub d_wr_s_avg: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub d_wr_s_cnt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub d_wr_s_peak: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "10")]
pub dev: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "11")]
pub m_rd_avg: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "12")]
pub m_rd_cnt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "13")]
pub m_rd_peak: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "14")]
pub m_wr_as_avg: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "15")]
pub m_wr_as_cnt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "16")]
pub m_wr_as_peak: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "17")]
pub m_wr_s_avg: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "18")]
pub m_wr_s_cnt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "19")]
pub m_wr_s_peak: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "20")]
pub n_rd_avg: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "21")]
pub n_rd_cnt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "22")]
pub n_rd_peak: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "23")]
pub n_wr_as_avg: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "24")]
pub n_wr_as_cnt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "25")]
pub n_wr_as_peak: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "26")]
pub n_wr_s_avg: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "27")]
pub n_wr_s_cnt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "28")]
pub n_wr_s_peak: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsBackgroundGcFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub wait_ms: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub prefree: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub free: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsGcBeginFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub sync: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub background: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "4")]
pub dirty_nodes: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "5")]
pub dirty_dents: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "6")]
pub dirty_imeta: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "7")]
pub free_sec: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub free_seg: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "9")]
pub reserved_seg: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "10")]
pub prefree_seg: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "11")]
pub gc_type: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "12")]
pub no_bg_gc: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "13")]
pub nr_free_secs: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct F2fsGcEndFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub dev: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub ret: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub seg_freed: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub sec_freed: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "5")]
pub dirty_nodes: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "6")]
pub dirty_dents: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "7")]
pub dirty_imeta: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "8")]
pub free_sec: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub free_seg: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "10")]
pub reserved_seg: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "11")]
pub prefree_seg: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FastrpcDmaStatFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub cid: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "2")]
pub len: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "3")]
pub total_allocated: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FastrpcDmaFreeFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub cid: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub phys: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub size: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FastrpcDmaAllocFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub cid: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub phys: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub size: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub attr: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "5")]
pub mflags: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FastrpcDmaUnmapFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub cid: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub phys: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub size: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FastrpcDmaMapFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub cid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub fd: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "3")]
pub phys: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub size: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub len: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "6")]
pub attr: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "7")]
pub mflags: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FenceInitFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub context: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub driver: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub seqno: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub timeline: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FenceDestroyFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub context: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub driver: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub seqno: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub timeline: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FenceEnableSignalFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub context: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub driver: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub seqno: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub timeline: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FenceSignaledFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub context: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub driver: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub seqno: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub timeline: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmFilemapAddToPageCacheFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub pfn: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub i_ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub index: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub s_dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub page: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub pfn: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub i_ino: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub index: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub s_dev: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub page: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DoSysOpenFtraceEvent {
#[prost(string, optional, tag = "1")]
pub filename: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub flags: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub mode: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OpenExecFtraceEvent {
#[prost(string, optional, tag = "1")]
pub filename: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PrintFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub ip: ::core::option::Option<u64>,
#[prost(string, optional, tag = "2")]
pub buf: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FuncgraphEntryFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub depth: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub func: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FuncgraphExitFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub calltime: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub depth: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "3")]
pub func: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub overrun: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub rettime: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct G2dTracingMarkWriteFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "4")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "5")]
pub r#type: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "6")]
pub value: ::core::option::Option<i32>,
}
/// This generic proto is used to output events in the trace
/// when a specific proto for that event does not exist.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GenericFtraceEvent {
#[prost(string, optional, tag = "1")]
pub event_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, repeated, tag = "2")]
pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
}
/// Nested message and enum types in `GenericFtraceEvent`.
pub mod generic_ftrace_event {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Field {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(oneof = "field::Value", tags = "3, 4, 5")]
pub value: ::core::option::Option<field::Value>,
}
/// Nested message and enum types in `Field`.
pub mod field {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Value {
#[prost(string, tag = "3")]
StrValue(::prost::alloc::string::String),
#[prost(int64, tag = "4")]
IntValue(i64),
#[prost(uint64, tag = "5")]
UintValue(u64),
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct KprobeEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(enumeration = "kprobe_event::KprobeType", optional, tag = "2")]
pub r#type: ::core::option::Option<i32>,
}
/// Nested message and enum types in `KprobeEvent`.
pub mod kprobe_event {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum KprobeType {
Unknown = 0,
Begin = 1,
End = 2,
Instant = 3,
}
impl KprobeType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "KPROBE_TYPE_UNKNOWN",
Self::Begin => "KPROBE_TYPE_BEGIN",
Self::End => "KPROBE_TYPE_END",
Self::Instant => "KPROBE_TYPE_INSTANT",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"KPROBE_TYPE_UNKNOWN" => Some(Self::Unknown),
"KPROBE_TYPE_BEGIN" => Some(Self::Begin),
"KPROBE_TYPE_END" => Some(Self::End),
"KPROBE_TYPE_INSTANT" => Some(Self::Instant),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GoogleIccEventFtraceEvent {
#[prost(string, optional, tag = "1")]
pub event: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub timestamp: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GoogleIrmEventFtraceEvent {
#[prost(string, optional, tag = "1")]
pub event: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub timestamp: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GpuMemTotalFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub gpu_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub pid: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub size: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DrmSchedJobFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub entity: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub fence: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub hw_job_count: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "4")]
pub id: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub job_count: ::core::option::Option<u32>,
#[prost(string, optional, tag = "6")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DrmRunJobFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub entity: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub fence: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub hw_job_count: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "4")]
pub id: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub job_count: ::core::option::Option<u32>,
#[prost(string, optional, tag = "6")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DrmSchedProcessJobFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub fence: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct HypEnterFtraceEvent {}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct HypExitFtraceEvent {}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct HostHcallFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub invalid: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct HostSmcFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub id: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub forwarded: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct HostMemAbortFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub esr: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub addr: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct I2cReadFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub adapter_nr: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub msg_nr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub addr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub len: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct I2cWriteFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub adapter_nr: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub msg_nr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub addr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub buf: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct I2cResultFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub adapter_nr: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub nr_msgs: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "3")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct I2cReplyFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub adapter_nr: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub msg_nr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub addr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub buf: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SmbusReadFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub adapter_nr: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub addr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub command: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub protocol: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SmbusWriteFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub adapter_nr: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub addr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub command: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub protocol: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SmbusResultFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub adapter_nr: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub addr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub read_write: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub command: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "6")]
pub res: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "7")]
pub protocol: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SmbusReplyFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub adapter_nr: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub addr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub command: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub protocol: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct IonStatFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub buffer_id: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "2")]
pub len: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "3")]
pub total_allocated: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IpiEntryFtraceEvent {
#[prost(string, optional, tag = "1")]
pub reason: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IpiExitFtraceEvent {
#[prost(string, optional, tag = "1")]
pub reason: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IpiRaiseFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub target_cpus: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub reason: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SoftirqEntryFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub vec: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SoftirqExitFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub vec: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SoftirqRaiseFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub vec: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IrqHandlerEntryFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub irq: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub handler: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct IrqHandlerExitFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub irq: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KgslGpuFrequencyFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub gpu_freq: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub gpu_id: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub timestamp: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub queued: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub prio: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub timestamp: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "3")]
pub inflight: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "4")]
pub flags: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "5")]
pub ticks: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "6")]
pub secs: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "7")]
pub usecs: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "8")]
pub prio: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "9")]
pub rb_id: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "10")]
pub rptr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "11")]
pub wptr: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "12")]
pub q_inflight: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "13")]
pub dispatch_queue: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub timestamp: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub ticks: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "4")]
pub prio: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub timestamp: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "3")]
pub inflight: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "4")]
pub recovery: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub flags: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "6")]
pub start: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "7")]
pub retire: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "8")]
pub prio: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "9")]
pub rb_id: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "10")]
pub rptr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "11")]
pub wptr: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "12")]
pub q_inflight: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "13")]
pub fault_recovery: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "14")]
pub dispatch_queue: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "15")]
pub submitted_to_rb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "16")]
pub retired_on_gmu: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "17")]
pub active: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AllocPagesIommuEndFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub gfp_flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub order: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AllocPagesIommuFailFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub gfp_flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub order: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AllocPagesIommuStartFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub gfp_flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub order: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AllocPagesSysEndFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub gfp_flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub order: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AllocPagesSysFailFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub gfp_flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub order: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AllocPagesSysStartFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub gfp_flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub order: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DmaAllocContiguousRetryFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub tries: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct IommuMapRangeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub chunk_size: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub len: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub pa: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub va: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct IommuSecPtblMapRangeEndFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub len: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub num: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub pa: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub sec_id: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "5")]
pub va: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct IommuSecPtblMapRangeStartFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub len: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub num: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub pa: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub sec_id: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "5")]
pub va: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IonAllocBufferEndFtraceEvent {
#[prost(string, optional, tag = "1")]
pub client_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "2")]
pub flags: ::core::option::Option<u32>,
#[prost(string, optional, tag = "3")]
pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "4")]
pub len: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub mask: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IonAllocBufferFailFtraceEvent {
#[prost(string, optional, tag = "1")]
pub client_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int64, optional, tag = "2")]
pub error: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "3")]
pub flags: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "5")]
pub len: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "6")]
pub mask: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IonAllocBufferFallbackFtraceEvent {
#[prost(string, optional, tag = "1")]
pub client_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int64, optional, tag = "2")]
pub error: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "3")]
pub flags: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "5")]
pub len: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "6")]
pub mask: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IonAllocBufferStartFtraceEvent {
#[prost(string, optional, tag = "1")]
pub client_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "2")]
pub flags: ::core::option::Option<u32>,
#[prost(string, optional, tag = "3")]
pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "4")]
pub len: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub mask: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct IonCpAllocRetryFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub tries: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IonCpSecureBufferEndFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub align: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub flags: ::core::option::Option<u64>,
#[prost(string, optional, tag = "3")]
pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "4")]
pub len: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IonCpSecureBufferStartFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub align: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub flags: ::core::option::Option<u64>,
#[prost(string, optional, tag = "3")]
pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "4")]
pub len: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct IonPrefetchingFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub len: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct IonSecureCmaAddToPoolEndFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub is_prefetch: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub len: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub pool_total: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct IonSecureCmaAddToPoolStartFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub is_prefetch: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub len: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub pool_total: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IonSecureCmaAllocateEndFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub align: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub flags: ::core::option::Option<u64>,
#[prost(string, optional, tag = "3")]
pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "4")]
pub len: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IonSecureCmaAllocateStartFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub align: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub flags: ::core::option::Option<u64>,
#[prost(string, optional, tag = "3")]
pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "4")]
pub len: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub drained_size: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub skipped_size: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub drained_size: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub skipped_size: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KfreeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub call_site: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ptr: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KmallocFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub bytes_alloc: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub bytes_req: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub call_site: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub gfp_flags: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "5")]
pub ptr: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KmallocNodeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub bytes_alloc: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub bytes_req: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub call_site: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub gfp_flags: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub node: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "6")]
pub ptr: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KmemCacheAllocFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub bytes_alloc: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub bytes_req: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub call_site: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub gfp_flags: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "5")]
pub ptr: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KmemCacheAllocNodeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub bytes_alloc: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub bytes_req: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub call_site: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub gfp_flags: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub node: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "6")]
pub ptr: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KmemCacheFreeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub call_site: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub ptr: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MigratePagesEndFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub mode: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MigratePagesStartFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub mode: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MigrateRetryFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub tries: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmPageAllocFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub gfp_flags: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub migratetype: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub order: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "4")]
pub page: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub pfn: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmPageAllocExtfragFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub alloc_migratetype: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub alloc_order: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub fallback_migratetype: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub fallback_order: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "5")]
pub page: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "6")]
pub change_ownership: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "7")]
pub pfn: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmPageAllocZoneLockedFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub migratetype: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub order: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub page: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub pfn: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmPageFreeFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub order: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub page: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub pfn: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmPageFreeBatchedFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub cold: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub page: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub pfn: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmPagePcpuDrainFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub migratetype: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub order: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub page: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub pfn: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct RssStatFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub member: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "2")]
pub size: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "3")]
pub curr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub mm_id: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IonHeapShrinkFtraceEvent {
#[prost(string, optional, tag = "1")]
pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub len: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub total_allocated: ::core::option::Option<i64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IonHeapGrowFtraceEvent {
#[prost(string, optional, tag = "1")]
pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub len: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "3")]
pub total_allocated: ::core::option::Option<i64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct IonBufferCreateFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub addr: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub len: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct IonBufferDestroyFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub addr: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub len: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmAccessFaultFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub ipa: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmAckIrqFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub irqchip: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub pin: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmAgeHvaFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub end: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub start: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmAgePageFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub gfn: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub hva: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub level: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub referenced: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmArmClearDebugFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub guest_debug: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct KvmArmSetDreg32FtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "2")]
pub value: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct KvmArmSetRegsetFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub len: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmArmSetupDebugFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub guest_debug: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub vcpu: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmEntryFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub vcpu_pc: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmExitFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub esr_ec: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub ret: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "3")]
pub vcpu_pc: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmFpuFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub load: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmGetTimerMapFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub direct_ptimer: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub direct_vtimer: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub emul_ptimer: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "4")]
pub vcpu_id: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmGuestFaultFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub hsr: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub hxfar: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub ipa: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub vcpu_pc: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmHandleSysRegFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub hsr: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmHvcArm64FtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub imm: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub r0: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub vcpu_pc: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmIrqLineFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub irq_num: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub level: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub r#type: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub vcpu_idx: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmMmioFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub gpa: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub r#type: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "4")]
pub val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmMmioEmulateFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub cpsr: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub instr: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub vcpu_pc: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmSetGuestDebugFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub guest_debug: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub vcpu: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmSetIrqFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub gsi: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub irq_source_id: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub level: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmSetSpteHvaFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub hva: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmSetWayFlushFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub cache: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub vcpu_pc: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct KvmSysAccessFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub c_rm: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub c_rn: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub op0: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub op1: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub op2: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub is_write: ::core::option::Option<u32>,
#[prost(string, optional, tag = "7")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "8")]
pub vcpu_pc: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmTestAgeHvaFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub hva: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmTimerEmulateFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub should_fire: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub timer_idx: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmTimerHrtimerExpireFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub timer_idx: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmTimerRestoreStateFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub ctl: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub cval: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub timer_idx: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmTimerSaveStateFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub ctl: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub cval: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub timer_idx: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmTimerUpdateIrqFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub irq: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub level: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "3")]
pub vcpu_id: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmToggleCacheFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub now: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub vcpu_pc: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub was: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmUnmapHvaRangeFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub end: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub start: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmUserspaceExitFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub reason: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmVcpuWakeupFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub ns: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub valid: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub waited: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KvmWfxArm64FtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub is_wfe: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub vcpu_pc: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrapRegFtraceEvent {
#[prost(string, optional, tag = "1")]
pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "2")]
pub is_write: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "3")]
pub reg: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "4")]
pub write_value: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct VgicUpdateIrqPendingFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub irq: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub level: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub vcpu_id: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LowmemoryKillFtraceEvent {
#[prost(string, optional, tag = "1")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub pid: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "3")]
pub pagecache_size: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "4")]
pub pagecache_limit: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "5")]
pub free: ::core::option::Option<i64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LwisTracingMarkWriteFtraceEvent {
#[prost(string, optional, tag = "1")]
pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "2")]
pub r#type: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "3")]
pub pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "4")]
pub func_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int64, optional, tag = "5")]
pub value: ::core::option::Option<i64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MaliTracingMarkWriteFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub pid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub r#type: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub value: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliKcpucqssetFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub info_val1: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub info_val2: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub kctx_tgid: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliKcpucqswaitstartFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub info_val1: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub info_val2: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub kctx_tgid: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliKcpucqswaitendFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub info_val1: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub info_val2: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub kctx_tgid: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliKcpufencesignalFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub info_val1: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub info_val2: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "4")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub id: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliKcpufencewaitstartFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub info_val1: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub info_val2: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "4")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub id: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliKcpufencewaitendFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub info_val1: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub info_val2: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "4")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub id: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliCsfinterruptstartFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliCsfinterruptendFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuinsleepFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuoffFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuonFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuonhaltFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcupendoffFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcupendonreloadFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcupowerdownFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaliMaliPmmcuresetwaitFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub kctx_tgid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub kctx_id: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub info_val: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpCmdKickoffFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub ctl_num: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub kickoff_cnt: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpCommitFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub num: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub play_cnt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub clk_rate: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "4")]
pub bandwidth: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpPerfSetOtFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub pnum: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub xin_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub rd_lim: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub is_vbif_rt: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpSsppChangeFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub num: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub play_cnt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub mixer: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub stage: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub format: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub img_w: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub img_h: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub src_x: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "10")]
pub src_y: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "11")]
pub src_w: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "12")]
pub src_h: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "13")]
pub dst_x: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "14")]
pub dst_y: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "15")]
pub dst_w: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "16")]
pub dst_h: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TracingMarkWriteFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub trace_begin: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpCmdPingpongDoneFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub ctl_num: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub intf_num: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub pp_num: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub koff_cnt: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpCompareBwFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub new_ab: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub new_ib: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub new_wb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub old_ab: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub old_ib: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "6")]
pub old_wb: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "7")]
pub params_changed: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub update_bw: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpPerfSetPanicLutsFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub pnum: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub fmt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub mode: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub panic_lut: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub robust_lut: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpSsppSetFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub num: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub play_cnt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub mixer: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub stage: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub format: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub img_w: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub img_h: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub src_x: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "10")]
pub src_y: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "11")]
pub src_w: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "12")]
pub src_h: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "13")]
pub dst_x: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "14")]
pub dst_y: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "15")]
pub dst_w: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "16")]
pub dst_h: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpCmdReadptrDoneFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub ctl_num: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub koff_cnt: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpMisrCrcFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub block_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub vsync_cnt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub crc: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpPerfSetQosLutsFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub pnum: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub fmt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub intf: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub rot: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub fl: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub lut: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub linear: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MdpTraceCounterFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "3")]
pub value: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpCmdReleaseBwFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub ctl_num: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpMixerUpdateFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub mixer_num: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpPerfSetWmLevelsFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub pnum: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub use_space: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub priority_bytes: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub wm0: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub wm1: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub wm2: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub mb_cnt: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub mb_size: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpVideoUnderrunDoneFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub ctl_num: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub underrun_cnt: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpCmdWaitPingpongFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub ctl_num: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub kickoff_cnt: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpPerfPrefillCalcFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub pnum: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub latency_buf: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub ot: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub y_buf: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub y_scaler: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub pp_lines: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub pp_bytes: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub post_sc: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub fbc_bytes: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "10")]
pub prefill_bytes: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MdpPerfUpdateBusFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub client: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub ab_quota: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub ib_quota: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct RotatorBwAoAsContextFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub state: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmEventRecordFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub avg_lat: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub count: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub max_lat: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub r#type: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NetifReceiveSkbFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub len: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "3")]
pub skbaddr: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NetDevXmitFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub len: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "3")]
pub rc: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "4")]
pub skbaddr: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NapiGroReceiveEntryFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub data_len: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub gso_size: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub gso_type: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub hash: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub ip_summed: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub l4_hash: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub len: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "8")]
pub mac_header: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "9")]
pub mac_header_valid: ::core::option::Option<u32>,
#[prost(string, optional, tag = "10")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "11")]
pub napi_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "12")]
pub nr_frags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "13")]
pub protocol: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "14")]
pub queue_mapping: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "15")]
pub skbaddr: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "16")]
pub truesize: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "17")]
pub vlan_proto: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "18")]
pub vlan_tagged: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "19")]
pub vlan_tci: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct NapiGroReceiveExitFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OomScoreAdjUpdateFtraceEvent {
#[prost(string, optional, tag = "1")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub oom_score_adj: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub pid: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MarkVictimFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DsiCmdFifoStatusFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub header: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub payload: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DsiRxFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub cmd: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub rx_buf: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DsiTxFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub last: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub tx_buf: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub r#type: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PanelWriteGenericFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub trace_begin: ::core::option::Option<u32>,
#[prost(string, optional, tag = "4")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "5")]
pub r#type: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "6")]
pub value: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SchedSwitchWithCtrsFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub old_pid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub new_pid: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "3")]
pub cctr: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub ctr0: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub ctr1: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "6")]
pub ctr2: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "7")]
pub ctr3: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "8")]
pub lctr0: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub lctr1: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "10")]
pub ctr4: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "11")]
pub ctr5: ::core::option::Option<u64>,
#[prost(string, optional, tag = "12")]
pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "13")]
pub prev_pid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "14")]
pub cyc: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "15")]
pub inst: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "16")]
pub stallbm: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "17")]
pub l3dm: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "18")]
pub next_pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "19")]
pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int64, optional, tag = "20")]
pub prev_state: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "21")]
pub amu0: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "22")]
pub amu1: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "23")]
pub amu2: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PixelMmKswapdWakeFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub whatever: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PixelMmKswapdDoneFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub delta_nr_scanned: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub delta_nr_reclaimed: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CpuFrequencyFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub state: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub cpu_id: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CpuFrequencyLimitsFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub min_freq: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub max_freq: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub cpu_id: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CpuIdleFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub state: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub cpu_id: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClockEnableFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub state: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub cpu_id: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClockDisableFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub state: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub cpu_id: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClockSetRateFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub state: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub cpu_id: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SuspendResumeFtraceEvent {
#[prost(string, optional, tag = "1")]
pub action: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub val: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub start: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GpuFrequencyFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub gpu_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub state: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WakeupSourceActivateFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub state: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct WakeupSourceDeactivateFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub state: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GpuWorkPeriodFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub gpu_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub uid: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub start_time_ns: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub end_time_ns: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub total_active_duration_ns: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DevicePmCallbackStartFtraceEvent {
#[prost(string, optional, tag = "1")]
pub device: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub driver: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub parent: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "4")]
pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "5")]
pub event: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DevicePmCallbackEndFtraceEvent {
#[prost(string, optional, tag = "1")]
pub device: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub driver: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "3")]
pub error: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ConsoleFtraceEvent {
#[prost(string, optional, tag = "1")]
pub msg: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SysEnterFtraceEvent {
#[prost(int64, optional, tag = "1")]
pub id: ::core::option::Option<i64>,
#[prost(uint64, repeated, packed = "false", tag = "2")]
pub args: ::prost::alloc::vec::Vec<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SysExitFtraceEvent {
#[prost(int64, optional, tag = "1")]
pub id: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "2")]
pub ret: ::core::option::Option<i64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RegulatorDisableFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RegulatorDisableCompleteFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RegulatorEnableFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RegulatorEnableCompleteFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RegulatorEnableDelayFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RegulatorSetVoltageFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub min: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub max: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RegulatorSetVoltageCompleteFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "2")]
pub val: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RpmStatusFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub status: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SamsungTracingMarkWriteFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub trace_begin: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub trace_type: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub value: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SchedSwitchFtraceEvent {
#[prost(string, optional, tag = "1")]
pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub prev_pid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub prev_prio: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "4")]
pub prev_state: ::core::option::Option<i64>,
#[prost(string, optional, tag = "5")]
pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "6")]
pub next_pid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "7")]
pub next_prio: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SchedWakeupFtraceEvent {
#[prost(string, optional, tag = "1")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub pid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub prio: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub success: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub target_cpu: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SchedBlockedReasonFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub caller: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub io_wait: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SchedCpuHotplugFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub affected_cpu: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub error: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub status: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SchedWakingFtraceEvent {
#[prost(string, optional, tag = "1")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub pid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub prio: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub success: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub target_cpu: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SchedWakeupNewFtraceEvent {
#[prost(string, optional, tag = "1")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub pid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub prio: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub success: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub target_cpu: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SchedProcessExecFtraceEvent {
#[prost(string, optional, tag = "1")]
pub filename: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub pid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub old_pid: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SchedProcessExitFtraceEvent {
#[prost(string, optional, tag = "1")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub pid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub tgid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub prio: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SchedProcessForkFtraceEvent {
#[prost(string, optional, tag = "1")]
pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub parent_pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "3")]
pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "4")]
pub child_pid: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SchedProcessFreeFtraceEvent {
#[prost(string, optional, tag = "1")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub pid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub prio: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SchedProcessHangFtraceEvent {
#[prost(string, optional, tag = "1")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub pid: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SchedProcessWaitFtraceEvent {
#[prost(string, optional, tag = "1")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub pid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub prio: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SchedPiSetprioFtraceEvent {
#[prost(string, optional, tag = "1")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub newprio: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub oldprio: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub pid: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SchedCpuUtilCfsFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub active: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub capacity: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub capacity_orig: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub cpu: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "5")]
pub cpu_importance: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "6")]
pub cpu_util: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "7")]
pub exit_lat: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "8")]
pub group_capacity: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "9")]
pub grp_overutilized: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "10")]
pub idle_cpu: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "11")]
pub nr_running: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "12")]
pub spare_cap: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "13")]
pub task_fits: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "14")]
pub wake_group_util: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "15")]
pub wake_util: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SchedMigrateTaskFtraceEvent {
#[prost(string, optional, tag = "1")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub pid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub prio: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub orig_cpu: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub dest_cpu: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "6")]
pub running: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "7")]
pub load: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SchedWakeupTaskAttrFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub cpu_affinity: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub task_util: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub uclamp_min: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub vruntime: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ScmCallStartFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub arginfo: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub x0: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub x5: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ScmCallEndFtraceEvent {}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SdeTracingMarkWriteFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub trace_type: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub value: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "5")]
pub trace_begin: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SdeSdeEvtlogFtraceEvent {
#[prost(string, optional, tag = "1")]
pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub pid: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub tag_id: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SdeSdePerfCalcCrtcFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub bw_ctl_ebi: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub bw_ctl_llcc: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub bw_ctl_mnoc: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub core_clk_rate: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub crtc: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "6")]
pub ib_ebi: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "7")]
pub ib_llcc: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "8")]
pub ib_mnoc: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SdeSdePerfCrtcUpdateFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub bw_ctl_ebi: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub bw_ctl_llcc: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub bw_ctl_mnoc: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub core_clk_rate: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub crtc: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "6")]
pub params: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "7")]
pub per_pipe_ib_ebi: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "8")]
pub per_pipe_ib_llcc: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "9")]
pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "10")]
pub stop_req: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "11")]
pub update_bus: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "12")]
pub update_clk: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SdeSdePerfSetQosLutsFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub fl: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub fmt: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub lut: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub lut_usage: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub pnum: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub rt: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SdeSdePerfUpdateBusFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub ab_quota: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub bus_id: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "3")]
pub client: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "4")]
pub ib_quota: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SignalDeliverFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub code: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub sa_flags: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "3")]
pub sig: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SignalGenerateFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub code: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "3")]
pub group: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub pid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub result: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "6")]
pub sig: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KfreeSkbFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub location: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub protocol: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "3")]
pub skbaddr: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct InetSockSetStateFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub daddr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub dport: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub family: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "4")]
pub newstate: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub oldstate: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "6")]
pub protocol: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub saddr: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "8")]
pub skaddr: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "9")]
pub sport: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SyncPtFtraceEvent {
#[prost(string, optional, tag = "1")]
pub timeline: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub value: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SyncTimelineFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub value: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SyncWaitFtraceEvent {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub status: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub begin: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct RssStatThrottledFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub curr: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub member: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub mm_id: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "4")]
pub size: ::core::option::Option<i64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SuspendResumeMinimalFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub start: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ZeroFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub flag: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "3")]
pub pid: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "4")]
pub value: ::core::option::Option<i64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TaskNewtaskFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub comm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "3")]
pub clone_flags: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "4")]
pub oom_score_adj: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TaskRenameFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "4")]
pub oom_score_adj: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TcpRetransmitSkbFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub daddr: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub dport: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub saddr: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "4")]
pub skaddr: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub skbaddr: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "6")]
pub sport: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "7")]
pub state: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ThermalTemperatureFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub id: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub temp: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub temp_prev: ::core::option::Option<i32>,
#[prost(string, optional, tag = "4")]
pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CdevUpdateFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub target: ::core::option::Option<u64>,
#[prost(string, optional, tag = "2")]
pub r#type: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ThermalExynosAcpmBulkFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub tz_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub current_temp: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub ctrl_temp: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub cdev_state: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub pid_et_p: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "6")]
pub pid_power_range: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "7")]
pub pid_p: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "8")]
pub pid_i: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "9")]
pub k_p: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "10")]
pub k_i: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "11")]
pub timestamp: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub tz_id: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "2")]
pub current_temp: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub ctrl_temp: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub cdev_state: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub pid_et_p: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "6")]
pub k_p: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "7")]
pub k_i: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TrustySmcFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub r0: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub r1: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub r2: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub r3: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TrustySmcDoneFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub ret: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TrustyStdCall32FtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub r0: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub r1: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub r2: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub r3: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TrustyStdCall32DoneFtraceEvent {
#[prost(int64, optional, tag = "1")]
pub ret: ::core::option::Option<i64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TrustyShareMemoryFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub len: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub lend: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub nents: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TrustyShareMemoryDoneFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub handle: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub len: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub lend: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub nents: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TrustyReclaimMemoryFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub id: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TrustyReclaimMemoryDoneFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub id: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub ret: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TrustyIrqFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub irq: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrustyIpcHandleEventFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub chan: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub event_id: ::core::option::Option<u32>,
#[prost(string, optional, tag = "3")]
pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrustyIpcConnectFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub chan: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub port: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "3")]
pub state: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TrustyIpcConnectEndFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub chan: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub err: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub state: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrustyIpcWriteFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub buf_id: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub chan: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "3")]
pub kind_shm: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub len_or_err: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "5")]
pub shm_cnt: ::core::option::Option<u64>,
#[prost(string, optional, tag = "6")]
pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrustyIpcPollFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub chan: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub poll_mask: ::core::option::Option<u32>,
#[prost(string, optional, tag = "3")]
pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrustyIpcReadFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub chan: ::core::option::Option<u32>,
#[prost(string, optional, tag = "2")]
pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrustyIpcReadEndFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub buf_id: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub chan: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "3")]
pub len_or_err: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "4")]
pub shm_cnt: ::core::option::Option<u64>,
#[prost(string, optional, tag = "5")]
pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrustyIpcRxFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub buf_id: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub chan: ::core::option::Option<u32>,
#[prost(string, optional, tag = "3")]
pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TrustyEnqueueNopFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub arg1: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub arg2: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub arg3: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UfshcdCommandFtraceEvent {
#[prost(string, optional, tag = "1")]
pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "2")]
pub doorbell: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub intr: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "4")]
pub lba: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "5")]
pub opcode: ::core::option::Option<u32>,
#[prost(string, optional, tag = "6")]
pub str: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "7")]
pub tag: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "8")]
pub transfer_len: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "9")]
pub group_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "10")]
pub str_t: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UfshcdClkGatingFtraceEvent {
#[prost(string, optional, tag = "1")]
pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub state: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct V4l2QbufFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub bytesused: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub field: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub index: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub minor: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "6")]
pub sequence: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub timecode_flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub timecode_frames: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub timecode_hours: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "10")]
pub timecode_minutes: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "11")]
pub timecode_seconds: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "12")]
pub timecode_type: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "13")]
pub timecode_userbits0: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "14")]
pub timecode_userbits1: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "15")]
pub timecode_userbits2: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "16")]
pub timecode_userbits3: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "17")]
pub timestamp: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "18")]
pub r#type: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct V4l2DqbufFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub bytesused: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub field: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub index: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "5")]
pub minor: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "6")]
pub sequence: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub timecode_flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub timecode_frames: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub timecode_hours: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "10")]
pub timecode_minutes: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "11")]
pub timecode_seconds: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "12")]
pub timecode_type: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "13")]
pub timecode_userbits0: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "14")]
pub timecode_userbits1: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "15")]
pub timecode_userbits2: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "16")]
pub timecode_userbits3: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "17")]
pub timestamp: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "18")]
pub r#type: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Vb2V4l2BufQueueFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub field: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub flags: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "3")]
pub minor: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "4")]
pub sequence: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub timecode_flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub timecode_frames: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub timecode_hours: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub timecode_minutes: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub timecode_seconds: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "10")]
pub timecode_type: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "11")]
pub timecode_userbits0: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "12")]
pub timecode_userbits1: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "13")]
pub timecode_userbits2: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "14")]
pub timecode_userbits3: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "15")]
pub timestamp: ::core::option::Option<i64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Vb2V4l2BufDoneFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub field: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub flags: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "3")]
pub minor: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "4")]
pub sequence: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub timecode_flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub timecode_frames: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub timecode_hours: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub timecode_minutes: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub timecode_seconds: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "10")]
pub timecode_type: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "11")]
pub timecode_userbits0: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "12")]
pub timecode_userbits1: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "13")]
pub timecode_userbits2: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "14")]
pub timecode_userbits3: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "15")]
pub timestamp: ::core::option::Option<i64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Vb2V4l2QbufFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub field: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub flags: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "3")]
pub minor: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "4")]
pub sequence: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub timecode_flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub timecode_frames: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub timecode_hours: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub timecode_minutes: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub timecode_seconds: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "10")]
pub timecode_type: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "11")]
pub timecode_userbits0: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "12")]
pub timecode_userbits1: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "13")]
pub timecode_userbits2: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "14")]
pub timecode_userbits3: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "15")]
pub timestamp: ::core::option::Option<i64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Vb2V4l2DqbufFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub field: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub flags: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "3")]
pub minor: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "4")]
pub sequence: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub timecode_flags: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "6")]
pub timecode_frames: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub timecode_hours: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub timecode_minutes: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub timecode_seconds: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "10")]
pub timecode_type: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "11")]
pub timecode_userbits0: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "12")]
pub timecode_userbits1: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "13")]
pub timecode_userbits2: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "14")]
pub timecode_userbits3: ::core::option::Option<u32>,
#[prost(int64, optional, tag = "15")]
pub timestamp: ::core::option::Option<i64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct VirtioGpuCmdQueueFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub ctx_id: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub dev: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "3")]
pub fence_id: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub flags: ::core::option::Option<u32>,
#[prost(string, optional, tag = "5")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "6")]
pub num_free: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub seqno: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub r#type: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub vq: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct VirtioGpuCmdResponseFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub ctx_id: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "2")]
pub dev: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "3")]
pub fence_id: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub flags: ::core::option::Option<u32>,
#[prost(string, optional, tag = "5")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "6")]
pub num_free: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "7")]
pub seqno: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "8")]
pub r#type: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "9")]
pub vq: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct VirtioVideoCmdFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub stream_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub r#type: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct VirtioVideoCmdDoneFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub stream_id: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub r#type: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct VirtioVideoResourceQueueFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub data_size0: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub data_size1: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub data_size2: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub data_size3: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub queue_type: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "6")]
pub resource_id: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "7")]
pub stream_id: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "8")]
pub timestamp: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct VirtioVideoResourceQueueDoneFtraceEvent {
#[prost(uint32, optional, tag = "1")]
pub data_size0: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub data_size1: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub data_size2: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "4")]
pub data_size3: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub queue_type: ::core::option::Option<u32>,
#[prost(int32, optional, tag = "6")]
pub resource_id: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "7")]
pub stream_id: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "8")]
pub timestamp: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmVmscanDirectReclaimBeginFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub order: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub may_writepage: ::core::option::Option<i32>,
#[prost(uint32, optional, tag = "3")]
pub gfp_flags: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmVmscanDirectReclaimEndFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub nr_reclaimed: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmVmscanKswapdWakeFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub nid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub order: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub zid: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmVmscanKswapdSleepFtraceEvent {
#[prost(int32, optional, tag = "1")]
pub nid: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmShrinkSlabStartFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub cache_items: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub delta: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub gfp_flags: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "4")]
pub lru_pgs: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "5")]
pub nr_objects_to_shrink: ::core::option::Option<i64>,
#[prost(uint64, optional, tag = "6")]
pub pgs_scanned: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "7")]
pub shr: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "8")]
pub shrink: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "9")]
pub total_scan: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "10")]
pub nid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "11")]
pub priority: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MmShrinkSlabEndFtraceEvent {
#[prost(int64, optional, tag = "1")]
pub new_scan: ::core::option::Option<i64>,
#[prost(int32, optional, tag = "2")]
pub retval: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "3")]
pub shr: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub shrink: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "5")]
pub total_scan: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "6")]
pub unused_scan: ::core::option::Option<i64>,
#[prost(int32, optional, tag = "7")]
pub nid: ::core::option::Option<i32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct WorkqueueActivateWorkFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub work: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct WorkqueueExecuteEndFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub work: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub function: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct WorkqueueExecuteStartFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub work: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub function: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct WorkqueueQueueWorkFtraceEvent {
#[prost(uint64, optional, tag = "1")]
pub work: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub function: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub workqueue: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "4")]
pub req_cpu: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "5")]
pub cpu: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FtraceEvent {
/// Timestamp in nanoseconds using .../tracing/trace_clock.
#[prost(uint64, optional, tag = "1")]
pub timestamp: ::core::option::Option<u64>,
/// Kernel pid (do not confuse with userspace pid aka tgid).
#[prost(uint32, optional, tag = "2")]
pub pid: ::core::option::Option<u32>,
/// Not populated in actual traces. Wire format might change.
/// Placeholder declaration so that the ftrace parsing code accepts the
/// existence of this common field. If this becomes needed for all events:
/// consider merging with common_preempt_count to avoid extra proto tags.
#[prost(uint32, optional, tag = "5")]
pub common_flags: ::core::option::Option<u32>,
#[prost(
oneof = "ftrace_event::Event",
tags = "3, 4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 460, 461, 462, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547"
)]
pub event: ::core::option::Option<ftrace_event::Event>,
}
/// Nested message and enum types in `FtraceEvent`.
pub mod ftrace_event {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Event {
#[prost(message, tag = "3")]
Print(super::PrintFtraceEvent),
#[prost(message, tag = "4")]
SchedSwitch(super::SchedSwitchFtraceEvent),
/// removed field with id 5;
/// removed field with id 6;
/// removed field with id 7;
/// removed field with id 8;
/// removed field with id 9;
/// removed field with id 10;
#[prost(message, tag = "11")]
CpuFrequency(super::CpuFrequencyFtraceEvent),
#[prost(message, tag = "12")]
CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
#[prost(message, tag = "13")]
CpuIdle(super::CpuIdleFtraceEvent),
#[prost(message, tag = "14")]
ClockEnable(super::ClockEnableFtraceEvent),
#[prost(message, tag = "15")]
ClockDisable(super::ClockDisableFtraceEvent),
#[prost(message, tag = "16")]
ClockSetRate(super::ClockSetRateFtraceEvent),
#[prost(message, tag = "17")]
SchedWakeup(super::SchedWakeupFtraceEvent),
#[prost(message, tag = "18")]
SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
#[prost(message, tag = "19")]
SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
#[prost(message, tag = "20")]
SchedWaking(super::SchedWakingFtraceEvent),
#[prost(message, tag = "21")]
IpiEntry(super::IpiEntryFtraceEvent),
#[prost(message, tag = "22")]
IpiExit(super::IpiExitFtraceEvent),
#[prost(message, tag = "23")]
IpiRaise(super::IpiRaiseFtraceEvent),
#[prost(message, tag = "24")]
SoftirqEntry(super::SoftirqEntryFtraceEvent),
#[prost(message, tag = "25")]
SoftirqExit(super::SoftirqExitFtraceEvent),
#[prost(message, tag = "26")]
SoftirqRaise(super::SoftirqRaiseFtraceEvent),
#[prost(message, tag = "27")]
I2cRead(super::I2cReadFtraceEvent),
#[prost(message, tag = "28")]
I2cWrite(super::I2cWriteFtraceEvent),
#[prost(message, tag = "29")]
I2cResult(super::I2cResultFtraceEvent),
#[prost(message, tag = "30")]
I2cReply(super::I2cReplyFtraceEvent),
#[prost(message, tag = "31")]
SmbusRead(super::SmbusReadFtraceEvent),
#[prost(message, tag = "32")]
SmbusWrite(super::SmbusWriteFtraceEvent),
#[prost(message, tag = "33")]
SmbusResult(super::SmbusResultFtraceEvent),
#[prost(message, tag = "34")]
SmbusReply(super::SmbusReplyFtraceEvent),
#[prost(message, tag = "35")]
LowmemoryKill(super::LowmemoryKillFtraceEvent),
#[prost(message, tag = "36")]
IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
#[prost(message, tag = "37")]
IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
#[prost(message, tag = "38")]
SyncPt(super::SyncPtFtraceEvent),
#[prost(message, tag = "39")]
SyncTimeline(super::SyncTimelineFtraceEvent),
#[prost(message, tag = "40")]
SyncWait(super::SyncWaitFtraceEvent),
#[prost(message, tag = "41")]
Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
#[prost(message, tag = "42")]
Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
#[prost(message, tag = "43")]
Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
#[prost(message, tag = "44")]
Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
#[prost(message, tag = "45")]
BlockRqIssue(super::BlockRqIssueFtraceEvent),
#[prost(message, tag = "46")]
MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
#[prost(message, tag = "47")]
MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
#[prost(message, tag = "48")]
MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
#[prost(message, tag = "49")]
MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
#[prost(message, tag = "50")]
BinderTransaction(super::BinderTransactionFtraceEvent),
#[prost(message, tag = "51")]
BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
#[prost(message, tag = "52")]
BinderSetPriority(super::BinderSetPriorityFtraceEvent),
#[prost(message, tag = "53")]
BinderLock(super::BinderLockFtraceEvent),
#[prost(message, tag = "54")]
BinderLocked(super::BinderLockedFtraceEvent),
#[prost(message, tag = "55")]
BinderUnlock(super::BinderUnlockFtraceEvent),
#[prost(message, tag = "56")]
WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
#[prost(message, tag = "57")]
WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
#[prost(message, tag = "58")]
WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
#[prost(message, tag = "59")]
WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
#[prost(message, tag = "60")]
RegulatorDisable(super::RegulatorDisableFtraceEvent),
#[prost(message, tag = "61")]
RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
#[prost(message, tag = "62")]
RegulatorEnable(super::RegulatorEnableFtraceEvent),
#[prost(message, tag = "63")]
RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
#[prost(message, tag = "64")]
RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
#[prost(message, tag = "65")]
RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
#[prost(message, tag = "66")]
RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
#[prost(message, tag = "67")]
CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
#[prost(message, tag = "68")]
CgroupMkdir(super::CgroupMkdirFtraceEvent),
#[prost(message, tag = "69")]
CgroupRemount(super::CgroupRemountFtraceEvent),
#[prost(message, tag = "70")]
CgroupRmdir(super::CgroupRmdirFtraceEvent),
#[prost(message, tag = "71")]
CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
#[prost(message, tag = "72")]
CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
#[prost(message, tag = "73")]
CgroupRelease(super::CgroupReleaseFtraceEvent),
#[prost(message, tag = "74")]
CgroupRename(super::CgroupRenameFtraceEvent),
#[prost(message, tag = "75")]
CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
#[prost(message, tag = "76")]
MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
#[prost(message, tag = "77")]
MdpCommit(super::MdpCommitFtraceEvent),
#[prost(message, tag = "78")]
MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
#[prost(message, tag = "79")]
MdpSsppChange(super::MdpSsppChangeFtraceEvent),
#[prost(message, tag = "80")]
TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
#[prost(message, tag = "81")]
MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
#[prost(message, tag = "82")]
MdpCompareBw(super::MdpCompareBwFtraceEvent),
#[prost(message, tag = "83")]
MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
#[prost(message, tag = "84")]
MdpSsppSet(super::MdpSsppSetFtraceEvent),
#[prost(message, tag = "85")]
MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
#[prost(message, tag = "86")]
MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
#[prost(message, tag = "87")]
MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
#[prost(message, tag = "88")]
MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
#[prost(message, tag = "89")]
MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
#[prost(message, tag = "90")]
MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
#[prost(message, tag = "91")]
MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
#[prost(message, tag = "92")]
MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
#[prost(message, tag = "93")]
MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
#[prost(message, tag = "94")]
MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
#[prost(message, tag = "95")]
MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
#[prost(message, tag = "96")]
RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
#[prost(message, tag = "97")]
MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
#[prost(message, tag = "98")]
MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
#[prost(message, tag = "99")]
MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
#[prost(message, tag = "100")]
MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
#[prost(message, tag = "101")]
MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
#[prost(message, tag = "102")]
MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
#[prost(message, tag = "103")]
MmCompactionEnd(super::MmCompactionEndFtraceEvent),
#[prost(message, tag = "104")]
MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
#[prost(message, tag = "105")]
MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
#[prost(message, tag = "106")]
MmCompactionIsolateMigratepages(
super::MmCompactionIsolateMigratepagesFtraceEvent,
),
#[prost(message, tag = "107")]
MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
#[prost(message, tag = "108")]
MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
#[prost(message, tag = "109")]
MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
#[prost(message, tag = "110")]
MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
#[prost(message, tag = "111")]
MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
#[prost(message, tag = "112")]
MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
#[prost(message, tag = "113")]
SuspendResume(super::SuspendResumeFtraceEvent),
#[prost(message, tag = "114")]
SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
#[prost(message, tag = "115")]
BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
#[prost(message, tag = "116")]
BlockBioBounce(super::BlockBioBounceFtraceEvent),
#[prost(message, tag = "117")]
BlockBioComplete(super::BlockBioCompleteFtraceEvent),
#[prost(message, tag = "118")]
BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
#[prost(message, tag = "119")]
BlockBioQueue(super::BlockBioQueueFtraceEvent),
#[prost(message, tag = "120")]
BlockBioRemap(super::BlockBioRemapFtraceEvent),
#[prost(message, tag = "121")]
BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
#[prost(message, tag = "122")]
BlockGetrq(super::BlockGetrqFtraceEvent),
#[prost(message, tag = "123")]
BlockPlug(super::BlockPlugFtraceEvent),
#[prost(message, tag = "124")]
BlockRqAbort(super::BlockRqAbortFtraceEvent),
#[prost(message, tag = "125")]
BlockRqComplete(super::BlockRqCompleteFtraceEvent),
#[prost(message, tag = "126")]
BlockRqInsert(super::BlockRqInsertFtraceEvent),
/// removed field with id 127;
#[prost(message, tag = "128")]
BlockRqRemap(super::BlockRqRemapFtraceEvent),
#[prost(message, tag = "129")]
BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
#[prost(message, tag = "130")]
BlockSleeprq(super::BlockSleeprqFtraceEvent),
#[prost(message, tag = "131")]
BlockSplit(super::BlockSplitFtraceEvent),
#[prost(message, tag = "132")]
BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
#[prost(message, tag = "133")]
BlockUnplug(super::BlockUnplugFtraceEvent),
#[prost(message, tag = "134")]
Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
#[prost(message, tag = "135")]
Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
#[prost(message, tag = "136")]
Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
#[prost(message, tag = "137")]
Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
#[prost(message, tag = "138")]
Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
#[prost(message, tag = "139")]
Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
#[prost(message, tag = "140")]
Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
#[prost(message, tag = "141")]
Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
#[prost(message, tag = "142")]
Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
#[prost(message, tag = "143")]
Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
#[prost(message, tag = "144")]
Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
#[prost(message, tag = "145")]
Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
#[prost(message, tag = "146")]
Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
#[prost(message, tag = "147")]
Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
#[prost(message, tag = "148")]
Ext4DropInode(super::Ext4DropInodeFtraceEvent),
#[prost(message, tag = "149")]
Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
#[prost(message, tag = "150")]
Ext4EsFindDelayedExtentRangeEnter(
super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent,
),
#[prost(message, tag = "151")]
Ext4EsFindDelayedExtentRangeExit(
super::Ext4EsFindDelayedExtentRangeExitFtraceEvent,
),
#[prost(message, tag = "152")]
Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
#[prost(message, tag = "153")]
Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
#[prost(message, tag = "154")]
Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
#[prost(message, tag = "155")]
Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
#[prost(message, tag = "156")]
Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
#[prost(message, tag = "157")]
Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
#[prost(message, tag = "158")]
Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
#[prost(message, tag = "159")]
Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
#[prost(message, tag = "160")]
Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
#[prost(message, tag = "161")]
Ext4ExtConvertToInitializedEnter(
super::Ext4ExtConvertToInitializedEnterFtraceEvent,
),
#[prost(message, tag = "162")]
Ext4ExtConvertToInitializedFastpath(
super::Ext4ExtConvertToInitializedFastpathFtraceEvent,
),
#[prost(message, tag = "163")]
Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
#[prost(message, tag = "164")]
Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
#[prost(message, tag = "165")]
Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
#[prost(message, tag = "166")]
Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
#[prost(message, tag = "167")]
Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
#[prost(message, tag = "168")]
Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
#[prost(message, tag = "169")]
Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
#[prost(message, tag = "170")]
Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
#[prost(message, tag = "171")]
Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
#[prost(message, tag = "172")]
Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
#[prost(message, tag = "173")]
Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
#[prost(message, tag = "174")]
Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
#[prost(message, tag = "175")]
Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
#[prost(message, tag = "176")]
Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
#[prost(message, tag = "177")]
Ext4Forget(super::Ext4ForgetFtraceEvent),
#[prost(message, tag = "178")]
Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
#[prost(message, tag = "179")]
Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
#[prost(message, tag = "180")]
Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
#[prost(message, tag = "181")]
Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
#[prost(message, tag = "182")]
Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
#[prost(message, tag = "183")]
Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
#[prost(message, tag = "184")]
Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
#[prost(message, tag = "185")]
Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
#[prost(message, tag = "186")]
Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
#[prost(message, tag = "187")]
Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
#[prost(message, tag = "188")]
Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
#[prost(message, tag = "189")]
Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
#[prost(message, tag = "190")]
Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
#[prost(message, tag = "191")]
Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
#[prost(message, tag = "192")]
Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
#[prost(message, tag = "193")]
Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
#[prost(message, tag = "194")]
Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
#[prost(message, tag = "195")]
Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
#[prost(message, tag = "196")]
Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
#[prost(message, tag = "197")]
Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
#[prost(message, tag = "198")]
Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
#[prost(message, tag = "199")]
Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
#[prost(message, tag = "200")]
Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
#[prost(message, tag = "201")]
Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
#[prost(message, tag = "202")]
Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
#[prost(message, tag = "203")]
Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
#[prost(message, tag = "204")]
Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
#[prost(message, tag = "205")]
Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
#[prost(message, tag = "206")]
Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
#[prost(message, tag = "207")]
Ext4Readpage(super::Ext4ReadpageFtraceEvent),
#[prost(message, tag = "208")]
Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
#[prost(message, tag = "209")]
Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
#[prost(message, tag = "210")]
Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
#[prost(message, tag = "211")]
Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
#[prost(message, tag = "212")]
Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
#[prost(message, tag = "213")]
Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
#[prost(message, tag = "214")]
Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
#[prost(message, tag = "215")]
Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
#[prost(message, tag = "216")]
Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
#[prost(message, tag = "217")]
Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
#[prost(message, tag = "218")]
Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
#[prost(message, tag = "219")]
Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
/// removed field with id 220;
/// removed field with id 221;
/// removed field with id 222;
/// removed field with id 223;
/// removed field with id 224;
/// removed field with id 225;
/// removed field with id 226;
/// removed field with id 227;
/// removed field with id 228;
/// removed field with id 229;
#[prost(message, tag = "230")]
Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
#[prost(message, tag = "231")]
Ext4Writepage(super::Ext4WritepageFtraceEvent),
#[prost(message, tag = "232")]
Ext4Writepages(super::Ext4WritepagesFtraceEvent),
#[prost(message, tag = "233")]
Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
#[prost(message, tag = "234")]
Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
#[prost(message, tag = "235")]
TaskNewtask(super::TaskNewtaskFtraceEvent),
#[prost(message, tag = "236")]
TaskRename(super::TaskRenameFtraceEvent),
#[prost(message, tag = "237")]
SchedProcessExec(super::SchedProcessExecFtraceEvent),
#[prost(message, tag = "238")]
SchedProcessExit(super::SchedProcessExitFtraceEvent),
#[prost(message, tag = "239")]
SchedProcessFork(super::SchedProcessForkFtraceEvent),
#[prost(message, tag = "240")]
SchedProcessFree(super::SchedProcessFreeFtraceEvent),
#[prost(message, tag = "241")]
SchedProcessHang(super::SchedProcessHangFtraceEvent),
#[prost(message, tag = "242")]
SchedProcessWait(super::SchedProcessWaitFtraceEvent),
#[prost(message, tag = "243")]
F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
#[prost(message, tag = "244")]
F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
#[prost(message, tag = "245")]
F2fsFallocate(super::F2fsFallocateFtraceEvent),
#[prost(message, tag = "246")]
F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
#[prost(message, tag = "247")]
F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
#[prost(message, tag = "248")]
F2fsIget(super::F2fsIgetFtraceEvent),
#[prost(message, tag = "249")]
F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
#[prost(message, tag = "250")]
F2fsNewInode(super::F2fsNewInodeFtraceEvent),
#[prost(message, tag = "251")]
F2fsReadpage(super::F2fsReadpageFtraceEvent),
#[prost(message, tag = "252")]
F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
#[prost(message, tag = "253")]
F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
#[prost(message, tag = "254")]
F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
#[prost(message, tag = "255")]
F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
#[prost(message, tag = "256")]
F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
#[prost(message, tag = "257")]
F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
#[prost(message, tag = "258")]
F2fsTruncate(super::F2fsTruncateFtraceEvent),
#[prost(message, tag = "259")]
F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
#[prost(message, tag = "260")]
F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
#[prost(message, tag = "261")]
F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
#[prost(message, tag = "262")]
F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
#[prost(message, tag = "263")]
F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
#[prost(message, tag = "264")]
F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
#[prost(message, tag = "265")]
F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
#[prost(message, tag = "266")]
F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
#[prost(message, tag = "267")]
F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
#[prost(message, tag = "268")]
F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
#[prost(message, tag = "269")]
F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
#[prost(message, tag = "270")]
F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
#[prost(message, tag = "271")]
F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
#[prost(message, tag = "272")]
F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
#[prost(message, tag = "273")]
F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
#[prost(message, tag = "274")]
AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
#[prost(message, tag = "275")]
AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
#[prost(message, tag = "276")]
AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
#[prost(message, tag = "277")]
AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
#[prost(message, tag = "278")]
AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
#[prost(message, tag = "279")]
AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
#[prost(message, tag = "280")]
DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
#[prost(message, tag = "281")]
IommuMapRange(super::IommuMapRangeFtraceEvent),
#[prost(message, tag = "282")]
IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
#[prost(message, tag = "283")]
IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
#[prost(message, tag = "284")]
IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
#[prost(message, tag = "285")]
IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
#[prost(message, tag = "286")]
IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
#[prost(message, tag = "287")]
IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
#[prost(message, tag = "288")]
IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
#[prost(message, tag = "289")]
IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
#[prost(message, tag = "290")]
IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
#[prost(message, tag = "291")]
IonPrefetching(super::IonPrefetchingFtraceEvent),
#[prost(message, tag = "292")]
IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
#[prost(message, tag = "293")]
IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
#[prost(message, tag = "294")]
IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
#[prost(message, tag = "295")]
IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
#[prost(message, tag = "296")]
IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
#[prost(message, tag = "297")]
IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
#[prost(message, tag = "298")]
Kfree(super::KfreeFtraceEvent),
#[prost(message, tag = "299")]
Kmalloc(super::KmallocFtraceEvent),
#[prost(message, tag = "300")]
KmallocNode(super::KmallocNodeFtraceEvent),
#[prost(message, tag = "301")]
KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
#[prost(message, tag = "302")]
KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
#[prost(message, tag = "303")]
KmemCacheFree(super::KmemCacheFreeFtraceEvent),
#[prost(message, tag = "304")]
MigratePagesEnd(super::MigratePagesEndFtraceEvent),
#[prost(message, tag = "305")]
MigratePagesStart(super::MigratePagesStartFtraceEvent),
#[prost(message, tag = "306")]
MigrateRetry(super::MigrateRetryFtraceEvent),
#[prost(message, tag = "307")]
MmPageAlloc(super::MmPageAllocFtraceEvent),
#[prost(message, tag = "308")]
MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
#[prost(message, tag = "309")]
MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
#[prost(message, tag = "310")]
MmPageFree(super::MmPageFreeFtraceEvent),
#[prost(message, tag = "311")]
MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
#[prost(message, tag = "312")]
MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
#[prost(message, tag = "313")]
RssStat(super::RssStatFtraceEvent),
#[prost(message, tag = "314")]
IonHeapShrink(super::IonHeapShrinkFtraceEvent),
#[prost(message, tag = "315")]
IonHeapGrow(super::IonHeapGrowFtraceEvent),
#[prost(message, tag = "316")]
FenceInit(super::FenceInitFtraceEvent),
#[prost(message, tag = "317")]
FenceDestroy(super::FenceDestroyFtraceEvent),
#[prost(message, tag = "318")]
FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
#[prost(message, tag = "319")]
FenceSignaled(super::FenceSignaledFtraceEvent),
#[prost(message, tag = "320")]
ClkEnable(super::ClkEnableFtraceEvent),
#[prost(message, tag = "321")]
ClkDisable(super::ClkDisableFtraceEvent),
#[prost(message, tag = "322")]
ClkSetRate(super::ClkSetRateFtraceEvent),
#[prost(message, tag = "323")]
BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
#[prost(message, tag = "324")]
SignalDeliver(super::SignalDeliverFtraceEvent),
#[prost(message, tag = "325")]
SignalGenerate(super::SignalGenerateFtraceEvent),
#[prost(message, tag = "326")]
OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
#[prost(message, tag = "327")]
Generic(super::GenericFtraceEvent),
#[prost(message, tag = "328")]
MmEventRecord(super::MmEventRecordFtraceEvent),
#[prost(message, tag = "329")]
SysEnter(super::SysEnterFtraceEvent),
#[prost(message, tag = "330")]
SysExit(super::SysExitFtraceEvent),
#[prost(message, tag = "331")]
Zero(super::ZeroFtraceEvent),
#[prost(message, tag = "332")]
GpuFrequency(super::GpuFrequencyFtraceEvent),
#[prost(message, tag = "333")]
SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
#[prost(message, tag = "334")]
MarkVictim(super::MarkVictimFtraceEvent),
#[prost(message, tag = "335")]
IonStat(super::IonStatFtraceEvent),
#[prost(message, tag = "336")]
IonBufferCreate(super::IonBufferCreateFtraceEvent),
#[prost(message, tag = "337")]
IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
#[prost(message, tag = "338")]
ScmCallStart(super::ScmCallStartFtraceEvent),
#[prost(message, tag = "339")]
ScmCallEnd(super::ScmCallEndFtraceEvent),
#[prost(message, tag = "340")]
GpuMemTotal(super::GpuMemTotalFtraceEvent),
#[prost(message, tag = "341")]
ThermalTemperature(super::ThermalTemperatureFtraceEvent),
#[prost(message, tag = "342")]
CdevUpdate(super::CdevUpdateFtraceEvent),
#[prost(message, tag = "343")]
CpuhpExit(super::CpuhpExitFtraceEvent),
#[prost(message, tag = "344")]
CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
#[prost(message, tag = "345")]
CpuhpEnter(super::CpuhpEnterFtraceEvent),
#[prost(message, tag = "346")]
CpuhpLatency(super::CpuhpLatencyFtraceEvent),
#[prost(message, tag = "347")]
FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
#[prost(message, tag = "348")]
DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
#[prost(message, tag = "349")]
G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
#[prost(message, tag = "350")]
MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
#[prost(message, tag = "351")]
DmaHeapStat(super::DmaHeapStatFtraceEvent),
#[prost(message, tag = "352")]
CpuhpPause(super::CpuhpPauseFtraceEvent),
#[prost(message, tag = "353")]
SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
#[prost(message, tag = "354")]
SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
#[prost(message, tag = "355")]
SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
#[prost(message, tag = "356")]
SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
#[prost(message, tag = "357")]
SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
#[prost(message, tag = "358")]
SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
#[prost(message, tag = "359")]
RssStatThrottled(super::RssStatThrottledFtraceEvent),
#[prost(message, tag = "360")]
NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
#[prost(message, tag = "361")]
NetDevXmit(super::NetDevXmitFtraceEvent),
#[prost(message, tag = "362")]
InetSockSetState(super::InetSockSetStateFtraceEvent),
#[prost(message, tag = "363")]
TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
#[prost(message, tag = "364")]
CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
#[prost(message, tag = "365")]
NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
#[prost(message, tag = "366")]
NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
#[prost(message, tag = "367")]
KfreeSkb(super::KfreeSkbFtraceEvent),
#[prost(message, tag = "368")]
KvmAccessFault(super::KvmAccessFaultFtraceEvent),
#[prost(message, tag = "369")]
KvmAckIrq(super::KvmAckIrqFtraceEvent),
#[prost(message, tag = "370")]
KvmAgeHva(super::KvmAgeHvaFtraceEvent),
#[prost(message, tag = "371")]
KvmAgePage(super::KvmAgePageFtraceEvent),
#[prost(message, tag = "372")]
KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
#[prost(message, tag = "373")]
KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
#[prost(message, tag = "374")]
KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
#[prost(message, tag = "375")]
KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
#[prost(message, tag = "376")]
KvmEntry(super::KvmEntryFtraceEvent),
#[prost(message, tag = "377")]
KvmExit(super::KvmExitFtraceEvent),
#[prost(message, tag = "378")]
KvmFpu(super::KvmFpuFtraceEvent),
#[prost(message, tag = "379")]
KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
#[prost(message, tag = "380")]
KvmGuestFault(super::KvmGuestFaultFtraceEvent),
#[prost(message, tag = "381")]
KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
#[prost(message, tag = "382")]
KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
#[prost(message, tag = "383")]
KvmIrqLine(super::KvmIrqLineFtraceEvent),
#[prost(message, tag = "384")]
KvmMmio(super::KvmMmioFtraceEvent),
#[prost(message, tag = "385")]
KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
#[prost(message, tag = "386")]
KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
#[prost(message, tag = "387")]
KvmSetIrq(super::KvmSetIrqFtraceEvent),
#[prost(message, tag = "388")]
KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
#[prost(message, tag = "389")]
KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
#[prost(message, tag = "390")]
KvmSysAccess(super::KvmSysAccessFtraceEvent),
#[prost(message, tag = "391")]
KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
#[prost(message, tag = "392")]
KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
#[prost(message, tag = "393")]
KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
#[prost(message, tag = "394")]
KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
#[prost(message, tag = "395")]
KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
#[prost(message, tag = "396")]
KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
#[prost(message, tag = "397")]
KvmToggleCache(super::KvmToggleCacheFtraceEvent),
#[prost(message, tag = "398")]
KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
#[prost(message, tag = "399")]
KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
#[prost(message, tag = "400")]
KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
#[prost(message, tag = "401")]
KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
#[prost(message, tag = "402")]
TrapReg(super::TrapRegFtraceEvent),
#[prost(message, tag = "403")]
VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
#[prost(message, tag = "404")]
WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
#[prost(message, tag = "405")]
WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
#[prost(message, tag = "406")]
UfshcdCommand(super::UfshcdCommandFtraceEvent),
#[prost(message, tag = "407")]
UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
#[prost(message, tag = "408")]
Console(super::ConsoleFtraceEvent),
#[prost(message, tag = "409")]
DrmVblankEvent(super::DrmVblankEventFtraceEvent),
#[prost(message, tag = "410")]
DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
#[prost(message, tag = "411")]
DrmSchedJob(super::DrmSchedJobFtraceEvent),
#[prost(message, tag = "412")]
DrmRunJob(super::DrmRunJobFtraceEvent),
#[prost(message, tag = "413")]
DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
#[prost(message, tag = "414")]
DmaFenceInit(super::DmaFenceInitFtraceEvent),
#[prost(message, tag = "415")]
DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
#[prost(message, tag = "416")]
DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
#[prost(message, tag = "417")]
DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
#[prost(message, tag = "418")]
DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
#[prost(message, tag = "419")]
F2fsIostat(super::F2fsIostatFtraceEvent),
#[prost(message, tag = "420")]
F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
#[prost(message, tag = "421")]
SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
#[prost(message, tag = "422")]
V4l2Qbuf(super::V4l2QbufFtraceEvent),
#[prost(message, tag = "423")]
V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
#[prost(message, tag = "424")]
Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
#[prost(message, tag = "425")]
Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
#[prost(message, tag = "426")]
Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
#[prost(message, tag = "427")]
Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
#[prost(message, tag = "428")]
DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
#[prost(message, tag = "429")]
DsiRx(super::DsiRxFtraceEvent),
#[prost(message, tag = "430")]
DsiTx(super::DsiTxFtraceEvent),
#[prost(message, tag = "431")]
AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
#[prost(message, tag = "432")]
AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
#[prost(message, tag = "433")]
AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
#[prost(message, tag = "434")]
AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
#[prost(message, tag = "435")]
AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
#[prost(message, tag = "436")]
AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
#[prost(message, tag = "437")]
FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
#[prost(message, tag = "438")]
FuncgraphExit(super::FuncgraphExitFtraceEvent),
#[prost(message, tag = "439")]
VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
#[prost(message, tag = "440")]
VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
#[prost(message, tag = "441")]
VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
#[prost(message, tag = "442")]
VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
#[prost(message, tag = "443")]
MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
#[prost(message, tag = "444")]
MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
#[prost(message, tag = "445")]
TrustySmc(super::TrustySmcFtraceEvent),
#[prost(message, tag = "446")]
TrustySmcDone(super::TrustySmcDoneFtraceEvent),
#[prost(message, tag = "447")]
TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
#[prost(message, tag = "448")]
TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
#[prost(message, tag = "449")]
TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
#[prost(message, tag = "450")]
TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
#[prost(message, tag = "451")]
TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
#[prost(message, tag = "452")]
TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
#[prost(message, tag = "453")]
TrustyIrq(super::TrustyIrqFtraceEvent),
#[prost(message, tag = "454")]
TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
#[prost(message, tag = "455")]
TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
#[prost(message, tag = "456")]
TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
#[prost(message, tag = "457")]
TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
#[prost(message, tag = "458")]
TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
/// removed field with id 459;
#[prost(message, tag = "460")]
TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
#[prost(message, tag = "461")]
TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
#[prost(message, tag = "462")]
TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
/// removed field with id 463;
#[prost(message, tag = "464")]
TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
#[prost(message, tag = "465")]
CmaAllocStart(super::CmaAllocStartFtraceEvent),
#[prost(message, tag = "466")]
CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
#[prost(message, tag = "467")]
LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
#[prost(message, tag = "468")]
VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
#[prost(message, tag = "469")]
VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
#[prost(message, tag = "470")]
MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
#[prost(message, tag = "471")]
MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
#[prost(message, tag = "472")]
MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
#[prost(message, tag = "473")]
MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
#[prost(message, tag = "474")]
MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
#[prost(message, tag = "475")]
MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
#[prost(message, tag = "476")]
HypEnter(super::HypEnterFtraceEvent),
#[prost(message, tag = "477")]
HypExit(super::HypExitFtraceEvent),
#[prost(message, tag = "478")]
HostHcall(super::HostHcallFtraceEvent),
#[prost(message, tag = "479")]
HostSmc(super::HostSmcFtraceEvent),
#[prost(message, tag = "480")]
HostMemAbort(super::HostMemAbortFtraceEvent),
#[prost(message, tag = "481")]
SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
#[prost(message, tag = "482")]
MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
#[prost(message, tag = "483")]
MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
#[prost(message, tag = "484")]
SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
#[prost(message, tag = "485")]
BinderCommand(super::BinderCommandFtraceEvent),
#[prost(message, tag = "486")]
BinderReturn(super::BinderReturnFtraceEvent),
#[prost(message, tag = "487")]
SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
#[prost(message, tag = "488")]
GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
#[prost(message, tag = "489")]
RpmStatus(super::RpmStatusFtraceEvent),
#[prost(message, tag = "490")]
PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
#[prost(message, tag = "491")]
SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
#[prost(message, tag = "492")]
DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
#[prost(message, tag = "493")]
DpuDsiRx(super::DpuDsiRxFtraceEvent),
#[prost(message, tag = "494")]
DpuDsiTx(super::DpuDsiTxFtraceEvent),
#[prost(message, tag = "495")]
F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
#[prost(message, tag = "496")]
F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
#[prost(message, tag = "497")]
F2fsGcEnd(super::F2fsGcEndFtraceEvent),
#[prost(message, tag = "498")]
FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
#[prost(message, tag = "499")]
FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
#[prost(message, tag = "500")]
FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
#[prost(message, tag = "501")]
FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
#[prost(message, tag = "502")]
GoogleIccEvent(super::GoogleIccEventFtraceEvent),
#[prost(message, tag = "503")]
GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
#[prost(message, tag = "504")]
DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
#[prost(message, tag = "505")]
DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
#[prost(message, tag = "506")]
ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
#[prost(message, tag = "507")]
ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
#[prost(message, tag = "508")]
DcvshFreq(super::DcvshFreqFtraceEvent),
#[prost(message, tag = "509")]
KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
#[prost(message, tag = "510")]
MaliMaliPmMcuHctlCoresDownScaleNotifyPend(
super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent,
),
#[prost(message, tag = "511")]
MaliMaliPmMcuHctlCoresNotifyPend(
super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent,
),
#[prost(message, tag = "512")]
MaliMaliPmMcuHctlCoreInactivePend(
super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent,
),
#[prost(message, tag = "513")]
MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
#[prost(message, tag = "514")]
MaliMaliPmMcuHctlShadersCoreOffPend(
super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent,
),
#[prost(message, tag = "515")]
MaliMaliPmMcuHctlShadersPendOff(
super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent,
),
#[prost(message, tag = "516")]
MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
#[prost(message, tag = "517")]
MaliMaliPmMcuHctlShadersReadyOff(
super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent,
),
#[prost(message, tag = "518")]
MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
#[prost(message, tag = "519")]
MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
#[prost(message, tag = "520")]
MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
#[prost(message, tag = "521")]
MaliMaliPmMcuOnCoreAttrUpdatePend(
super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent,
),
#[prost(message, tag = "522")]
MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
#[prost(message, tag = "523")]
MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
#[prost(message, tag = "524")]
MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
#[prost(message, tag = "525")]
MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
#[prost(message, tag = "526")]
MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
#[prost(message, tag = "527")]
MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
#[prost(message, tag = "528")]
MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
#[prost(message, tag = "529")]
MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
#[prost(message, tag = "530")]
MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
#[prost(message, tag = "531")]
MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
#[prost(message, tag = "532")]
MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
#[prost(message, tag = "533")]
BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
#[prost(message, tag = "534")]
KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
#[prost(message, tag = "535")]
KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
#[prost(message, tag = "536")]
KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
#[prost(message, tag = "537")]
KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
#[prost(message, tag = "538")]
PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
#[prost(message, tag = "539")]
PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
#[prost(message, tag = "540")]
SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
#[prost(message, tag = "541")]
DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
#[prost(message, tag = "542")]
KprobeEvent(super::KprobeEvent),
#[prost(message, tag = "543")]
ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
#[prost(message, tag = "544")]
DoSysOpen(super::DoSysOpenFtraceEvent),
#[prost(message, tag = "545")]
OpenExec(super::OpenExecFtraceEvent),
#[prost(message, tag = "546")]
BlockIoStart(super::BlockIoStartFtraceEvent),
#[prost(message, tag = "547")]
BlockIoDone(super::BlockIoDoneFtraceEvent),
}
}
/// Per-CPU kernel buffer stats for the ftrace data source gathered from
/// /sys/kernel/tracing/per_cpu/cpuX/stats.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FtraceCpuStats {
/// CPU index.
#[prost(uint64, optional, tag = "1")]
pub cpu: ::core::option::Option<u64>,
/// Number of entries currently in the kernel buffer.
#[prost(uint64, optional, tag = "2")]
pub entries: ::core::option::Option<u64>,
/// Number of events lost in kernel buffers due to overwriting of old events
/// before userspace had a chance to drain them. Valid if the buffer is in
/// "overwrite" mode, otherwise see |dropped_events|.
#[prost(uint64, optional, tag = "3")]
pub overrun: ::core::option::Option<u64>,
/// This should always be zero. If not the buffer size is way too small or
/// something went wrong with the tracer. Quoting the kernel: "number of
/// commits failing due to the buffer wrapping around while there are
/// uncommitted events, such as during an interrupt storm".
#[prost(uint64, optional, tag = "4")]
pub commit_overrun: ::core::option::Option<u64>,
/// Size of entries currently in the kernel buffer (see |entries|) in bytes.
/// The field should be named "bytes", but is misnamed for historical reasons.
/// This value has known inaccuracies before Linux v6.6:
/// <https://github.com/torvalds/linux/commit/45d99ea>
#[prost(uint64, optional, tag = "5")]
pub bytes_read: ::core::option::Option<u64>,
/// The timestamp for the oldest event still in the ring buffer.
/// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
#[prost(double, optional, tag = "6")]
pub oldest_event_ts: ::core::option::Option<f64>,
/// The current timestamp.
/// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
#[prost(double, optional, tag = "7")]
pub now_ts: ::core::option::Option<f64>,
/// If the kernel buffer has overwrite mode disabled, this will show the number
/// of new events that were lost because the buffer was full. This is similar
/// to |overrun| but only for the overwrite=false case.
#[prost(uint64, optional, tag = "8")]
pub dropped_events: ::core::option::Option<u64>,
/// The number of events read (consumed) from the buffer by userspace.
#[prost(uint64, optional, tag = "9")]
pub read_events: ::core::option::Option<u64>,
}
/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FtraceKprobeStats {
/// Cumulative number of kprobe events generated for this function
#[prost(int64, optional, tag = "1")]
pub hits: ::core::option::Option<i64>,
/// Cumulative number of kprobe events that could not be generated for this
/// function and were missed. This happens when too much nesting
/// happens between a kprobe and its kretprobe, overflowing the
/// maxactives buffer.
#[prost(int64, optional, tag = "2")]
pub misses: ::core::option::Option<i64>,
}
/// Errors and kernel buffer stats for the ftrace data source.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FtraceStats {
/// A pair of FtraceStats is written on every trace flush:
/// * START_OF_TRACE - stats recorded at the beginning of the trace.
/// * END_OF_TRACE - stats recorded during the flush. In other words shortly
/// before this packet was written. For simple traces this
/// will be once at the end of the trace.
#[prost(enumeration = "ftrace_stats::Phase", optional, tag = "1")]
pub phase: ::core::option::Option<i32>,
/// Per-CPU stats (one entry for each CPU).
#[prost(message, repeated, tag = "2")]
pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
/// When FtraceConfig.symbolize_ksyms = true, this records the number of
/// symbols parsed from /proc/kallsyms, whether they have been seen in the
/// trace or not. It can be used to debug kptr_restrict or security-related
/// errors.
/// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
/// initialized. When START_OF_TRACE is emitted it is not ready yet.
#[prost(uint32, optional, tag = "3")]
pub kernel_symbols_parsed: ::core::option::Option<u32>,
/// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
#[prost(uint32, optional, tag = "4")]
pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
/// Atrace errors (even non-fatal ones) are reported here. A typical example is
/// one or more atrace categories not available on the device.
#[prost(string, optional, tag = "5")]
pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
/// Ftrace events requested by the config but not present on device.
#[prost(string, repeated, tag = "6")]
pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Ftrace events requested by the config and present on device, but which we
/// failed to enable due to permissions, or due to a conflicting option
/// (currently FtraceConfig.disable_generic_events).
#[prost(string, repeated, tag = "7")]
pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// The data source was configured to preserve existing events in the ftrace
/// buffer before the start of the trace.
#[prost(bool, optional, tag = "8")]
pub preserve_ftrace_buffer: ::core::option::Option<bool>,
/// Unique errors encountered during reading and parsing of the raw ftrace
/// data. Ring buffer ABI related errors will also be recorded in the
/// affected FtraceEventBundles with a timestamp.
/// Any traces with entries in this field should be investigated, as they
/// indicate a bug in perfetto or the kernel.
#[prost(enumeration = "FtraceParseStatus", repeated, packed = "false", tag = "9")]
pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
/// Kprobe profile stats for functions hits and misses
#[prost(message, optional, tag = "10")]
pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
}
/// Nested message and enum types in `FtraceStats`.
pub mod ftrace_stats {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Phase {
Unspecified = 0,
StartOfTrace = 1,
EndOfTrace = 2,
}
impl Phase {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "UNSPECIFIED",
Self::StartOfTrace => "START_OF_TRACE",
Self::EndOfTrace => "END_OF_TRACE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNSPECIFIED" => Some(Self::Unspecified),
"START_OF_TRACE" => Some(Self::StartOfTrace),
"END_OF_TRACE" => Some(Self::EndOfTrace),
_ => None,
}
}
}
}
/// The result of tracing one or more ftrace data pages from a single per-cpu
/// kernel ring buffer. If collating multiple pages' worth of events, all of
/// them come from contiguous pages, with no kernel data loss in between.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FtraceEventBundle {
#[prost(uint32, optional, tag = "1")]
pub cpu: ::core::option::Option<u32>,
#[prost(message, repeated, tag = "2")]
pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
/// Set to true if there was data loss between the last time we've read from
/// the corresponding per-cpu kernel buffer, and the earliest event recorded
/// in this bundle.
#[prost(bool, optional, tag = "3")]
pub lost_events: ::core::option::Option<bool>,
#[prost(message, optional, tag = "4")]
pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
/// traced_probes always sets the ftrace_clock to "boot". That is not available
/// in older kernels (v3.x). In that case we fallback on "global" or "local".
/// When we do that, we report the fallback clock in each bundle so we can do
/// proper clock syncing at parsing time in TraceProcessor. We cannot use the
/// TracePacket timestamp_clock_id because: (1) there is no per-packet
/// timestamp for ftrace bundles; (2) "global" does not match CLOCK_MONOTONIC.
/// Having a dedicated and explicit flag allows us to correct further misakes
/// in future by looking at the kernel version.
/// This field has been introduced in perfetto v19 / Android T (13).
/// This field is omitted when the ftrace clock is just "boot", as that is the
/// default assumption (and for consistency with the past).
#[prost(enumeration = "FtraceClock", optional, tag = "5")]
pub ftrace_clock: ::core::option::Option<i32>,
/// The timestamp according to the ftrace clock, taken at the same instant
/// as |boot_timestamp|. This is used to sync ftrace events when a non-boot
/// clock is used as the ftrace clock. We don't use the ClockSnapshot packet
/// because the ftrace global/local clocks don't match any of the clock_gettime
/// domains and can be only read by traced_probes.
///
/// Only set when |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
///
/// Implementation note: Populated by reading the 'now ts:' field in
/// tracefs/per_cpu/cpuX/stat.
#[prost(int64, optional, tag = "6")]
pub ftrace_timestamp: ::core::option::Option<i64>,
/// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
/// |ftrace_timestamp|. See documentation of |ftrace_timestamp| for
/// more info.
///
/// Only set when |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
#[prost(int64, optional, tag = "7")]
pub boot_timestamp: ::core::option::Option<i64>,
#[prost(message, repeated, tag = "8")]
pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
/// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
/// primary difference is that this field tracked the last timestamp read from
/// the per-cpu buffer, while the newer field tracks events that get
/// serialised into the trace.
/// Added in: perfetto v44.
#[prost(uint64, optional, tag = "9")]
pub last_read_event_timestamp: ::core::option::Option<u64>,
/// The timestamp (using ftrace clock) of the last event written into this
/// data source on this cpu. In other words: the last event in the previous
/// bundle.
/// Lets the trace processing find an initial timestamp after which ftrace
/// data is known to be valid across all cpus. Of particular importance when
/// the perfetto trace buffer is a ring buffer as well, as the overwriting of
/// oldest bundles can skew the first valid timestamp per cpu significantly.
/// Added in: perfetto v47.
#[prost(uint64, optional, tag = "10")]
pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
}
/// Nested message and enum types in `FtraceEventBundle`.
pub mod ftrace_event_bundle {
/// Optionally-enabled compact encoding of a batch of scheduling events. Only
/// a subset of events & their fields is recorded.
/// All fields (except comms) are stored in a structure-of-arrays form, one
/// entry in each repeated field per event.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CompactSched {
/// Interned table of unique strings for this bundle.
#[prost(string, repeated, tag = "5")]
pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Delta-encoded timestamps across all sched_switch events within this
/// bundle. The first is absolute, each next one is relative to its
/// predecessor.
#[prost(uint64, repeated, tag = "1")]
pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
#[prost(int64, repeated, tag = "2")]
pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
#[prost(int32, repeated, tag = "3")]
pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
#[prost(int32, repeated, tag = "4")]
pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
/// One per event, index into |intern_table| corresponding to the
/// next_comm field of the event.
#[prost(uint32, repeated, tag = "6")]
pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
/// Delta-encoded timestamps across all sched_waking events within this
/// bundle. The first is absolute, each next one is relative to its
/// predecessor.
#[prost(uint64, repeated, tag = "7")]
pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
#[prost(int32, repeated, tag = "8")]
pub waking_pid: ::prost::alloc::vec::Vec<i32>,
#[prost(int32, repeated, tag = "9")]
pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
#[prost(int32, repeated, tag = "10")]
pub waking_prio: ::prost::alloc::vec::Vec<i32>,
/// One per event, index into |intern_table| corresponding to the
/// comm field of the event.
#[prost(uint32, repeated, tag = "11")]
pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, repeated, tag = "12")]
pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
}
/// Errors encountered during parsing of the raw ftrace data. In case of ring
/// buffer layout errors, the parser skips the rest of the offending kernel
/// buffer page and continues from the next page.
/// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
/// seen within the duration of the trace (even if the affected bundles get
/// overwritten in ring buffer mode).
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct FtraceError {
/// Timestamp of the data that we're unable to parse, in the ftrace clock
/// domain. Currently, we use the base timestamp of the tracing page
/// containing the bad record rather than the time of the record itself.
#[prost(uint64, optional, tag = "1")]
pub timestamp: ::core::option::Option<u64>,
#[prost(enumeration = "super::FtraceParseStatus", optional, tag = "2")]
pub status: ::core::option::Option<i32>,
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GpuCounterEvent {
/// The first trace packet of each session should include counter_spec.
#[prost(message, optional, tag = "1")]
pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
#[prost(message, repeated, tag = "2")]
pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
/// optional. Identifier for GPU in a multi-gpu device.
#[prost(int32, optional, tag = "3")]
pub gpu_id: ::core::option::Option<i32>,
}
/// Nested message and enum types in `GpuCounterEvent`.
pub mod gpu_counter_event {
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GpuCounter {
/// required. Identifier for counter.
#[prost(uint32, optional, tag = "1")]
pub counter_id: ::core::option::Option<u32>,
/// required. Value of the counter.
#[prost(oneof = "gpu_counter::Value", tags = "2, 3")]
pub value: ::core::option::Option<gpu_counter::Value>,
}
/// Nested message and enum types in `GpuCounter`.
pub mod gpu_counter {
/// required. Value of the counter.
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum Value {
#[prost(int64, tag = "2")]
IntValue(i64),
#[prost(double, tag = "3")]
DoubleValue(f64),
}
}
}
/// Message for logging events GPU data producer.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GpuLog {
#[prost(enumeration = "gpu_log::Severity", optional, tag = "1")]
pub severity: ::core::option::Option<i32>,
#[prost(string, optional, tag = "2")]
pub tag: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub log_message: ::core::option::Option<::prost::alloc::string::String>,
}
/// Nested message and enum types in `GpuLog`.
pub mod gpu_log {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Severity {
LogSeverityUnspecified = 0,
LogSeverityVerbose = 1,
LogSeverityDebug = 2,
LogSeverityInfo = 3,
LogSeverityWarning = 4,
LogSeverityError = 5,
}
impl Severity {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
Self::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
Self::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
Self::LogSeverityInfo => "LOG_SEVERITY_INFO",
Self::LogSeverityWarning => "LOG_SEVERITY_WARNING",
Self::LogSeverityError => "LOG_SEVERITY_ERROR",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"LOG_SEVERITY_UNSPECIFIED" => Some(Self::LogSeverityUnspecified),
"LOG_SEVERITY_VERBOSE" => Some(Self::LogSeverityVerbose),
"LOG_SEVERITY_DEBUG" => Some(Self::LogSeverityDebug),
"LOG_SEVERITY_INFO" => Some(Self::LogSeverityInfo),
"LOG_SEVERITY_WARNING" => Some(Self::LogSeverityWarning),
"LOG_SEVERITY_ERROR" => Some(Self::LogSeverityError),
_ => None,
}
}
}
}
/// next id: 15
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GpuRenderStageEvent {
/// required. Unique ID for the event.
#[prost(uint64, optional, tag = "1")]
pub event_id: ::core::option::Option<u64>,
/// optional. Duration of the event in nanoseconds. If unset, this is a
/// single time point event.
#[prost(uint64, optional, tag = "2")]
pub duration: ::core::option::Option<u64>,
/// required. ID to a hardware queue description in the specifications.
/// InternedGpuRenderStageSpecification
#[prost(uint64, optional, tag = "13")]
pub hw_queue_iid: ::core::option::Option<u64>,
/// required. ID to a render stage description in the specifications.
/// InternedGpuRenderStageSpecification
#[prost(uint64, optional, tag = "14")]
pub stage_iid: ::core::option::Option<u64>,
/// optional. Identifier for GPU in a multi-gpu device.
#[prost(int32, optional, tag = "11")]
pub gpu_id: ::core::option::Option<i32>,
/// required. Graphics context for the event.
/// For OpenGL, this is the GL context.
/// For Vulkan, this is the VkDevice.
#[prost(uint64, optional, tag = "5")]
pub context: ::core::option::Option<u64>,
/// optional. The render target for this event.
/// For OpenGL, this is the GL frame buffer handle.
/// For Vulkan, this is the VkFrameBuffer handle.
#[prost(uint64, optional, tag = "8")]
pub render_target_handle: ::core::option::Option<u64>,
/// optional. Submission ID generated by the UMD.
/// For OpenGL, the ID should map to an API submission (e.g., glFlush,
/// glFinish, eglSwapBufffers) event. The set of submissions to the HW due
/// to a single API submission should share the same ID.
/// For Vulkan, it should map 1:1 with a vkQueueSubmit.
#[prost(uint32, optional, tag = "10")]
pub submission_id: ::core::option::Option<u32>,
#[prost(message, repeated, tag = "6")]
pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
/// optional. The Vulkan render pass handle.
#[prost(uint64, optional, tag = "9")]
pub render_pass_handle: ::core::option::Option<u64>,
/// optional. A bit mask representing which render subpasses contributed to
/// this render stage event. Subpass index 0 is represented by setting the
/// LSB of the mask. Additional mask can be added for subpass index greater
/// than 63.
#[prost(uint64, repeated, packed = "false", tag = "15")]
pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
/// optional. The Vulkan command buffer handle.
#[prost(uint64, optional, tag = "12")]
pub command_buffer_handle: ::core::option::Option<u64>,
/// Deprecated. Use hw_queue_iid and stage_iid to refer to
/// InternedGpuRenderStageSpecification instead.
#[deprecated]
#[prost(message, optional, tag = "7")]
pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
/// Deprecated. Use hw_queue_iid instead;
#[deprecated]
#[prost(int32, optional, tag = "3")]
pub hw_queue_id: ::core::option::Option<i32>,
/// Deprecated. Use stage_iid instead;
#[deprecated]
#[prost(int32, optional, tag = "4")]
pub stage_id: ::core::option::Option<i32>,
}
/// Nested message and enum types in `GpuRenderStageEvent`.
pub mod gpu_render_stage_event {
/// optional. Additional data for the user. This may include attributes for
/// the event like resource ids, shaders, etc.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ExtraData {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub value: ::core::option::Option<::prost::alloc::string::String>,
}
/// Deprecated. Use InternedGpuRenderStageSpecification instead.
/// The first trace packet of each session should include a Specifications
/// to enumerate *all* IDs that will be used. The timestamp of this packet
/// must be earlier than all other packets. Only one packet with Specifications
/// is expected.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Specifications {
#[prost(message, optional, tag = "1")]
pub context_spec: ::core::option::Option<specifications::ContextSpec>,
/// Labels to categorize the hw Queue this event goes on.
#[prost(message, repeated, tag = "2")]
pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
/// Labels to categorize render stage(binning, render, compute etc).
#[prost(message, repeated, tag = "3")]
pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
}
/// Nested message and enum types in `Specifications`.
pub mod specifications {
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ContextSpec {
#[prost(uint64, optional, tag = "1")]
pub context: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub pid: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Description {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub description: ::core::option::Option<::prost::alloc::string::String>,
}
}
}
/// The iid is the numeric value of either the GL Context or the VkDevice
/// handle.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct InternedGraphicsContext {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub pid: ::core::option::Option<i32>,
#[prost(enumeration = "interned_graphics_context::Api", optional, tag = "3")]
pub api: ::core::option::Option<i32>,
}
/// Nested message and enum types in `InternedGraphicsContext`.
pub mod interned_graphics_context {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Api {
Undefined = 0,
OpenGl = 1,
Vulkan = 2,
OpenCl = 3,
}
impl Api {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Undefined => "UNDEFINED",
Self::OpenGl => "OPEN_GL",
Self::Vulkan => "VULKAN",
Self::OpenCl => "OPEN_CL",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNDEFINED" => Some(Self::Undefined),
"OPEN_GL" => Some(Self::OpenGl),
"VULKAN" => Some(Self::Vulkan),
"OPEN_CL" => Some(Self::OpenCl),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InternedGpuRenderStageSpecification {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub description: ::core::option::Option<::prost::alloc::string::String>,
#[prost(
enumeration = "interned_gpu_render_stage_specification::RenderStageCategory",
optional,
tag = "4"
)]
pub category: ::core::option::Option<i32>,
}
/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
pub mod interned_gpu_render_stage_specification {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum RenderStageCategory {
Other = 0,
Graphics = 1,
Compute = 2,
}
impl RenderStageCategory {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Other => "OTHER",
Self::Graphics => "GRAPHICS",
Self::Compute => "COMPUTE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"OTHER" => Some(Self::Other),
"GRAPHICS" => Some(Self::Graphics),
"COMPUTE" => Some(Self::Compute),
_ => None,
}
}
}
}
/// Message for recording the Vulkan call.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct VulkanApiEvent {
#[prost(oneof = "vulkan_api_event::Event", tags = "1, 2")]
pub event: ::core::option::Option<vulkan_api_event::Event>,
}
/// Nested message and enum types in `VulkanApiEvent`.
pub mod vulkan_api_event {
/// For recording vkSetDebugUtilsObjectNameEXT and
/// vkDebugMarkerSetObjectNameEXT
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct VkDebugUtilsObjectName {
#[prost(uint32, optional, tag = "1")]
pub pid: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "2")]
pub vk_device: ::core::option::Option<u64>,
/// VkObjectType. Value must match
/// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
#[prost(int32, optional, tag = "3")]
pub object_type: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "4")]
pub object: ::core::option::Option<u64>,
#[prost(string, optional, tag = "5")]
pub object_name: ::core::option::Option<::prost::alloc::string::String>,
}
/// For recording vkQueueSubmit call.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct VkQueueSubmit {
#[prost(uint64, optional, tag = "1")]
pub duration_ns: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "2")]
pub pid: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub tid: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "4")]
pub vk_queue: ::core::option::Option<u64>,
#[prost(uint64, repeated, packed = "false", tag = "5")]
pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
/// Submission ID. An identifier unique to each vkQueueSubmit call. This
/// submission_id must match GpuRenderStageEvent.submission_id if the
/// GpuRenderStageEvent is created due to this vkQueueSubmit.
#[prost(uint32, optional, tag = "6")]
pub submission_id: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Event {
#[prost(message, tag = "1")]
VkDebugUtilsObjectName(VkDebugUtilsObjectName),
#[prost(message, tag = "2")]
VkQueueSubmit(VkQueueSubmit),
}
}
/// All the information that cannot be sent within a VulkanMemoryEvent message,
/// are sent as annotations to the main memory event. One example is the
/// properties of the object that consumes the allocated memory, for example, a
/// buffer or an image.
/// key_iid and string_iid are both interned strings. Original string value is
/// stored in vulkan_memory_keys from
/// protos/perfetto/trace/interned_data/interned_data.proto.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct VulkanMemoryEventAnnotation {
#[prost(uint64, optional, tag = "1")]
pub key_iid: ::core::option::Option<u64>,
#[prost(oneof = "vulkan_memory_event_annotation::Value", tags = "2, 3, 4")]
pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
}
/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
pub mod vulkan_memory_event_annotation {
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum Value {
#[prost(int64, tag = "2")]
IntValue(i64),
#[prost(double, tag = "3")]
DoubleValue(f64),
#[prost(uint64, tag = "4")]
StringIid(u64),
}
}
/// Each VulkanMemoryEvent encompasses information regarding one single function
/// call that results in reserving, binding or freeing host or GPU memory. There
/// is a special message type, ANNOTATIONS, which is used to communicate
/// information that are not directly related to a memory event, nonetheless are
/// essential to understand the memory usage. An example is the size and memory
/// types of the memory heaps.
///
/// Next reserved id: 10 (up to 15).
/// Next id: 21.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct VulkanMemoryEvent {
#[prost(enumeration = "vulkan_memory_event::Source", optional, tag = "1")]
pub source: ::core::option::Option<i32>,
#[prost(enumeration = "vulkan_memory_event::Operation", optional, tag = "2")]
pub operation: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "3")]
pub timestamp: ::core::option::Option<i64>,
#[prost(uint32, optional, tag = "4")]
pub pid: ::core::option::Option<u32>,
#[prost(fixed64, optional, tag = "5")]
pub memory_address: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "6")]
pub memory_size: ::core::option::Option<u64>,
/// Interned string. Original string value is stored in function_names from
/// protos/perfetto/trace/interned_data/interned_data.proto.
#[prost(uint64, optional, tag = "7")]
pub caller_iid: ::core::option::Option<u64>,
#[prost(enumeration = "vulkan_memory_event::AllocationScope", optional, tag = "8")]
pub allocation_scope: ::core::option::Option<i32>,
/// Extra related information, e.g., create configs, etc.
#[prost(message, repeated, tag = "9")]
pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
/// Field IDs used for device memory (low sampling rate)
#[prost(fixed64, optional, tag = "16")]
pub device: ::core::option::Option<u64>,
#[prost(fixed64, optional, tag = "17")]
pub device_memory: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "18")]
pub memory_type: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "19")]
pub heap: ::core::option::Option<u32>,
#[prost(fixed64, optional, tag = "20")]
pub object_handle: ::core::option::Option<u64>,
}
/// Nested message and enum types in `VulkanMemoryEvent`.
pub mod vulkan_memory_event {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Source {
Unspecified = 0,
Driver = 1,
Device = 2,
DeviceMemory = 3,
Buffer = 4,
Image = 5,
}
impl Source {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "SOURCE_UNSPECIFIED",
Self::Driver => "SOURCE_DRIVER",
Self::Device => "SOURCE_DEVICE",
Self::DeviceMemory => "SOURCE_DEVICE_MEMORY",
Self::Buffer => "SOURCE_BUFFER",
Self::Image => "SOURCE_IMAGE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
"SOURCE_DRIVER" => Some(Self::Driver),
"SOURCE_DEVICE" => Some(Self::Device),
"SOURCE_DEVICE_MEMORY" => Some(Self::DeviceMemory),
"SOURCE_BUFFER" => Some(Self::Buffer),
"SOURCE_IMAGE" => Some(Self::Image),
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Operation {
OpUnspecified = 0,
/// alloc, create
OpCreate = 1,
/// free, destroy(non-bound)
OpDestroy = 2,
/// bind buffer and image
OpBind = 3,
/// destroy (bound)
OpDestroyBound = 4,
/// only annotations
OpAnnotations = 5,
}
impl Operation {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::OpUnspecified => "OP_UNSPECIFIED",
Self::OpCreate => "OP_CREATE",
Self::OpDestroy => "OP_DESTROY",
Self::OpBind => "OP_BIND",
Self::OpDestroyBound => "OP_DESTROY_BOUND",
Self::OpAnnotations => "OP_ANNOTATIONS",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"OP_UNSPECIFIED" => Some(Self::OpUnspecified),
"OP_CREATE" => Some(Self::OpCreate),
"OP_DESTROY" => Some(Self::OpDestroy),
"OP_BIND" => Some(Self::OpBind),
"OP_DESTROY_BOUND" => Some(Self::OpDestroyBound),
"OP_ANNOTATIONS" => Some(Self::OpAnnotations),
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum AllocationScope {
ScopeUnspecified = 0,
ScopeCommand = 1,
ScopeObject = 2,
ScopeCache = 3,
ScopeDevice = 4,
ScopeInstance = 5,
}
impl AllocationScope {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ScopeUnspecified => "SCOPE_UNSPECIFIED",
Self::ScopeCommand => "SCOPE_COMMAND",
Self::ScopeObject => "SCOPE_OBJECT",
Self::ScopeCache => "SCOPE_CACHE",
Self::ScopeDevice => "SCOPE_DEVICE",
Self::ScopeInstance => "SCOPE_INSTANCE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SCOPE_UNSPECIFIED" => Some(Self::ScopeUnspecified),
"SCOPE_COMMAND" => Some(Self::ScopeCommand),
"SCOPE_OBJECT" => Some(Self::ScopeObject),
"SCOPE_CACHE" => Some(Self::ScopeCache),
"SCOPE_DEVICE" => Some(Self::ScopeDevice),
"SCOPE_INSTANCE" => Some(Self::ScopeInstance),
_ => None,
}
}
}
}
/// The interning fields in this file can refer to 2 different intern tables,
/// depending on the message they are used in. If the interned fields are present
/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
/// should be used. If the intered fields are present in the
/// StreamingProfilePacket proto, then the intern tables included in all of the
/// previous InternedData message with same sequence ID should be used.
/// TODO(fmayer): Move to the intern tables to a common location.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InternedString {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
#[prost(bytes = "vec", optional, tag = "2")]
pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
/// A symbol field that is emitted after the trace is written. These tables would
/// be appended as the last packets in the trace that the profiler will use, so
/// that the actual trace need not be rewritten to symbolize the profiles.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProfiledFrameSymbols {
/// Use the frame id as the interning key for the symbols.
#[prost(uint64, optional, tag = "1")]
pub frame_iid: ::core::option::Option<u64>,
/// key to InternedString
#[prost(uint64, repeated, packed = "false", tag = "2")]
pub function_name_id: ::prost::alloc::vec::Vec<u64>,
/// key to InternedString
#[prost(uint64, repeated, packed = "false", tag = "3")]
pub file_name_id: ::prost::alloc::vec::Vec<u64>,
#[prost(uint32, repeated, packed = "false", tag = "4")]
pub line_number: ::prost::alloc::vec::Vec<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Line {
#[prost(string, optional, tag = "1")]
pub function_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "3")]
pub line_number: ::core::option::Option<u32>,
}
/// Symbols for a given address in a module.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AddressSymbols {
#[prost(uint64, optional, tag = "1")]
pub address: ::core::option::Option<u64>,
/// Source lines that correspond to this address.
///
/// These are repeated because when inlining happens, multiple functions'
/// frames can be at a single address. Imagine function Foo calling the
/// std::vector<int> constructor, which gets inlined at 0xf00. We then get
/// both Foo and the std::vector<int> constructor when we symbolize the
/// address.
#[prost(message, repeated, tag = "2")]
pub lines: ::prost::alloc::vec::Vec<Line>,
}
/// Symbols for addresses seen in a module.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ModuleSymbols {
/// Fully qualified path to the mapping.
/// E.g. /system/lib64/libc.so.
#[prost(string, optional, tag = "1")]
pub path: ::core::option::Option<::prost::alloc::string::String>,
/// .note.gnu.build-id on Linux (not hex encoded).
/// uuid on MacOS.
/// Module GUID on Windows.
#[prost(string, optional, tag = "2")]
pub build_id: ::core::option::Option<::prost::alloc::string::String>,
#[prost(message, repeated, tag = "3")]
pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Mapping {
/// Interning key.
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
/// Interning key.
#[prost(uint64, optional, tag = "2")]
pub build_id: ::core::option::Option<u64>,
/// This is not set on Android 10.
#[prost(uint64, optional, tag = "8")]
pub exact_offset: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub start_offset: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub start: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub end: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "6")]
pub load_bias: ::core::option::Option<u64>,
/// E.g. \["system", "lib64", "libc.so"\]
/// id of string.
#[prost(uint64, repeated, packed = "false", tag = "7")]
pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Frame {
/// Interning key
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
/// E.g. "fopen"
/// id of string.
#[prost(uint64, optional, tag = "2")]
pub function_name_id: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub mapping_id: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub rel_pc: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Callstack {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
/// Frames of this callstack. Bottom frame first.
#[prost(uint64, repeated, packed = "false", tag = "2")]
pub frame_ids: ::prost::alloc::vec::Vec<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HistogramName {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
/// An individual histogram sample logged via Chrome's UMA metrics system.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeHistogramSample {
/// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
/// both must be present.
#[prost(uint64, optional, tag = "1")]
pub name_hash: ::core::option::Option<u64>,
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int64, optional, tag = "3")]
pub sample: ::core::option::Option<i64>,
/// Interned HistogramName. Only one of |name|, |name_iid| can be set.
#[prost(uint64, optional, tag = "4")]
pub name_iid: ::core::option::Option<u64>,
}
/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
/// macros. Users of the Perfetto SDK should prefer to use the
/// perfetto::TracedValue API to fill these protos, rather than filling them
/// manually.
///
/// Debug annotations are intended for debug use and are not considered a stable
/// API of the trace contents. Trace-based metrics that use debug annotation
/// values are prone to breakage, so please rely on typed TrackEvent fields for
/// these instead.
///
/// DebugAnnotations support nested arrays and dictionaries. Each entry is
/// encoded as a single DebugAnnotation message. Only dictionary entries
/// set the "name" field. The TrackEvent message forms an implicit root
/// dictionary.
///
/// Example TrackEvent with nested annotations:
/// track_event {
/// debug_annotations {
/// name: "foo"
/// dict_entries {
/// name: "a"
/// bool_value: true
/// }
/// dict_entries {
/// name: "b"
/// int_value: 123
/// }
/// }
/// debug_annotations {
/// name: "bar"
/// array_values {
/// string_value: "hello"
/// }
/// array_values {
/// string_value: "world"
/// }
/// }
/// }
///
/// Next ID: 18.
/// Reserved ID: 15
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DebugAnnotation {
#[prost(bytes = "vec", optional, tag = "14")]
pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
#[prost(message, repeated, tag = "11")]
pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
#[prost(message, repeated, tag = "12")]
pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
/// Name fields are set only for dictionary entries.
#[prost(oneof = "debug_annotation::NameField", tags = "1, 10")]
pub name_field: ::core::option::Option<debug_annotation::NameField>,
#[prost(oneof = "debug_annotation::Value", tags = "2, 3, 4, 5, 7, 8, 9, 6, 17")]
pub value: ::core::option::Option<debug_annotation::Value>,
/// Used to embed arbitrary proto messages (which are also typically used to
/// represent typed TrackEvent arguments). |proto_type_name| or
/// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
/// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
/// proto messages. See |TracedValue::WriteProto| for more details.
#[prost(oneof = "debug_annotation::ProtoTypeDescriptor", tags = "16, 13")]
pub proto_type_descriptor: ::core::option::Option<
debug_annotation::ProtoTypeDescriptor,
>,
}
/// Nested message and enum types in `DebugAnnotation`.
pub mod debug_annotation {
/// Deprecated legacy way to use nested values. Only kept for
/// backwards-compatibility in TraceProcessor. May be removed in the future -
/// code filling protos should use |dict_entries| and |array_values| instead.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NestedValue {
#[prost(enumeration = "nested_value::NestedType", optional, tag = "1")]
pub nested_type: ::core::option::Option<i32>,
#[prost(string, repeated, tag = "2")]
pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(message, repeated, tag = "3")]
pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
#[prost(message, repeated, tag = "4")]
pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
#[prost(int64, optional, tag = "5")]
pub int_value: ::core::option::Option<i64>,
#[prost(double, optional, tag = "6")]
pub double_value: ::core::option::Option<f64>,
#[prost(bool, optional, tag = "7")]
pub bool_value: ::core::option::Option<bool>,
#[prost(string, optional, tag = "8")]
pub string_value: ::core::option::Option<::prost::alloc::string::String>,
}
/// Nested message and enum types in `NestedValue`.
pub mod nested_value {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum NestedType {
/// leaf value.
Unspecified = 0,
Dict = 1,
Array = 2,
}
impl NestedType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "UNSPECIFIED",
Self::Dict => "DICT",
Self::Array => "ARRAY",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNSPECIFIED" => Some(Self::Unspecified),
"DICT" => Some(Self::Dict),
"ARRAY" => Some(Self::Array),
_ => None,
}
}
}
}
/// Name fields are set only for dictionary entries.
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum NameField {
/// interned DebugAnnotationName.
#[prost(uint64, tag = "1")]
NameIid(u64),
/// non-interned variant.
#[prost(string, tag = "10")]
Name(::prost::alloc::string::String),
}
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Value {
#[prost(bool, tag = "2")]
BoolValue(bool),
#[prost(uint64, tag = "3")]
UintValue(u64),
#[prost(int64, tag = "4")]
IntValue(i64),
#[prost(double, tag = "5")]
DoubleValue(f64),
/// Pointers are stored in a separate type as the JSON output treats them
/// differently from other uint64 values.
#[prost(uint64, tag = "7")]
PointerValue(u64),
/// Deprecated. Use dict_entries / array_values instead.
#[prost(message, tag = "8")]
NestedValue(NestedValue),
/// Legacy instrumentation may not support conversion of nested data to
/// NestedValue yet.
#[prost(string, tag = "9")]
LegacyJsonValue(::prost::alloc::string::String),
/// interned and non-interned variants of strings.
#[prost(string, tag = "6")]
StringValue(::prost::alloc::string::String),
/// Corresponds to |debug_annotation_string_values| field in InternedData.
#[prost(uint64, tag = "17")]
StringValueIid(u64),
}
/// Used to embed arbitrary proto messages (which are also typically used to
/// represent typed TrackEvent arguments). |proto_type_name| or
/// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
/// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
/// proto messages. See |TracedValue::WriteProto| for more details.
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum ProtoTypeDescriptor {
#[prost(string, tag = "16")]
ProtoTypeName(::prost::alloc::string::String),
/// interned DebugAnnotationValueTypeName.
#[prost(uint64, tag = "13")]
ProtoTypeNameIid(u64),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DebugAnnotationName {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
/// See the |proto_type_descriptor| comment.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DebugAnnotationValueTypeName {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct LogMessage {
/// interned SourceLocation.
#[prost(uint64, optional, tag = "1")]
pub source_location_iid: ::core::option::Option<u64>,
/// interned LogMessageBody.
#[prost(uint64, optional, tag = "2")]
pub body_iid: ::core::option::Option<u64>,
#[prost(enumeration = "log_message::Priority", optional, tag = "3")]
pub prio: ::core::option::Option<i32>,
}
/// Nested message and enum types in `LogMessage`.
pub mod log_message {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Priority {
PrioUnspecified = 0,
PrioUnused = 1,
PrioVerbose = 2,
PrioDebug = 3,
PrioInfo = 4,
PrioWarn = 5,
PrioError = 6,
PrioFatal = 7,
}
impl Priority {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::PrioUnspecified => "PRIO_UNSPECIFIED",
Self::PrioUnused => "PRIO_UNUSED",
Self::PrioVerbose => "PRIO_VERBOSE",
Self::PrioDebug => "PRIO_DEBUG",
Self::PrioInfo => "PRIO_INFO",
Self::PrioWarn => "PRIO_WARN",
Self::PrioError => "PRIO_ERROR",
Self::PrioFatal => "PRIO_FATAL",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
"PRIO_UNUSED" => Some(Self::PrioUnused),
"PRIO_VERBOSE" => Some(Self::PrioVerbose),
"PRIO_DEBUG" => Some(Self::PrioDebug),
"PRIO_INFO" => Some(Self::PrioInfo),
"PRIO_WARN" => Some(Self::PrioWarn),
"PRIO_ERROR" => Some(Self::PrioError),
"PRIO_FATAL" => Some(Self::PrioFatal),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LogMessageBody {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
#[prost(string, optional, tag = "2")]
pub body: ::core::option::Option<::prost::alloc::string::String>,
}
/// A source location, represented as a native symbol.
/// This is similar to `message Frame` from
/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
/// source code locations (for example in track event args), not stack frames.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct UnsymbolizedSourceLocation {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub mapping_id: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub rel_pc: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SourceLocation {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
#[prost(string, optional, tag = "2")]
pub file_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub function_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "4")]
pub line_number: ::core::option::Option<u32>,
}
/// A list of processes connected to the tracing service.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeActiveProcesses {
#[prost(int32, repeated, packed = "false", tag = "1")]
pub pid: ::prost::alloc::vec::Vec<i32>,
}
/// Trace event arguments for application state changes.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ChromeApplicationStateInfo {
#[prost(
enumeration = "chrome_application_state_info::ChromeApplicationState",
optional,
tag = "1"
)]
pub application_state: ::core::option::Option<i32>,
}
/// Nested message and enum types in `ChromeApplicationStateInfo`.
pub mod chrome_application_state_info {
/// Enum definition taken from:
/// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum ChromeApplicationState {
ApplicationStateUnknown = 0,
ApplicationStateHasRunningActivities = 1,
ApplicationStateHasPausedActivities = 2,
ApplicationStateHasStoppedActivities = 3,
ApplicationStateHasDestroyedActivities = 4,
}
impl ChromeApplicationState {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
Self::ApplicationStateHasRunningActivities => {
"APPLICATION_STATE_HAS_RUNNING_ACTIVITIES"
}
Self::ApplicationStateHasPausedActivities => {
"APPLICATION_STATE_HAS_PAUSED_ACTIVITIES"
}
Self::ApplicationStateHasStoppedActivities => {
"APPLICATION_STATE_HAS_STOPPED_ACTIVITIES"
}
Self::ApplicationStateHasDestroyedActivities => {
"APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES"
}
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"APPLICATION_STATE_UNKNOWN" => Some(Self::ApplicationStateUnknown),
"APPLICATION_STATE_HAS_RUNNING_ACTIVITIES" => {
Some(Self::ApplicationStateHasRunningActivities)
}
"APPLICATION_STATE_HAS_PAUSED_ACTIVITIES" => {
Some(Self::ApplicationStateHasPausedActivities)
}
"APPLICATION_STATE_HAS_STOPPED_ACTIVITIES" => {
Some(Self::ApplicationStateHasStoppedActivities)
}
"APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES" => {
Some(Self::ApplicationStateHasDestroyedActivities)
}
_ => None,
}
}
}
}
/// Next id: 18
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeCompositorSchedulerState {
#[prost(message, optional, tag = "1")]
pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
#[prost(bool, optional, tag = "2")]
pub observing_begin_frame_source: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "3")]
pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "4")]
pub pending_begin_frame_task: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "5")]
pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
#[prost(enumeration = "ChromeCompositorSchedulerAction", optional, tag = "7")]
pub inside_action: ::core::option::Option<i32>,
#[prost(
enumeration = "chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode",
optional,
tag = "8"
)]
pub deadline_mode: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "9")]
pub deadline_us: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "10")]
pub deadline_scheduled_at_us: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "11")]
pub now_us: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "12")]
pub now_to_deadline_delta_us: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "13")]
pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
#[prost(message, optional, tag = "14")]
pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
#[prost(message, optional, tag = "15")]
pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
#[prost(message, optional, tag = "16")]
pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
#[prost(message, optional, tag = "17")]
pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
}
/// Nested message and enum types in `ChromeCompositorSchedulerState`.
pub mod chrome_compositor_scheduler_state {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum BeginImplFrameDeadlineMode {
DeadlineModeUnspecified = 0,
DeadlineModeNone = 1,
DeadlineModeImmediate = 2,
DeadlineModeRegular = 3,
DeadlineModeLate = 4,
DeadlineModeBlocked = 5,
}
impl BeginImplFrameDeadlineMode {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
Self::DeadlineModeNone => "DEADLINE_MODE_NONE",
Self::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
Self::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
Self::DeadlineModeLate => "DEADLINE_MODE_LATE",
Self::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"DEADLINE_MODE_UNSPECIFIED" => Some(Self::DeadlineModeUnspecified),
"DEADLINE_MODE_NONE" => Some(Self::DeadlineModeNone),
"DEADLINE_MODE_IMMEDIATE" => Some(Self::DeadlineModeImmediate),
"DEADLINE_MODE_REGULAR" => Some(Self::DeadlineModeRegular),
"DEADLINE_MODE_LATE" => Some(Self::DeadlineModeLate),
"DEADLINE_MODE_BLOCKED" => Some(Self::DeadlineModeBlocked),
_ => None,
}
}
}
}
/// Describes the current values stored in the Chrome Compositor state machine.
/// Next id: 3
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ChromeCompositorStateMachine {
#[prost(message, optional, tag = "1")]
pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
#[prost(message, optional, tag = "2")]
pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
}
/// Nested message and enum types in `ChromeCompositorStateMachine`.
pub mod chrome_compositor_state_machine {
/// Next id: 6
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MajorState {
#[prost(
enumeration = "super::ChromeCompositorSchedulerAction",
optional,
tag = "1"
)]
pub next_action: ::core::option::Option<i32>,
#[prost(enumeration = "major_state::BeginImplFrameState", optional, tag = "2")]
pub begin_impl_frame_state: ::core::option::Option<i32>,
#[prost(enumeration = "major_state::BeginMainFrameState", optional, tag = "3")]
pub begin_main_frame_state: ::core::option::Option<i32>,
#[prost(
enumeration = "major_state::LayerTreeFrameSinkState",
optional,
tag = "4"
)]
pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
#[prost(
enumeration = "major_state::ForcedRedrawOnTimeoutState",
optional,
tag = "5"
)]
pub forced_redraw_state: ::core::option::Option<i32>,
}
/// Nested message and enum types in `MajorState`.
pub mod major_state {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum BeginImplFrameState {
BeginImplFrameUnspecified = 0,
BeginImplFrameIdle = 1,
BeginImplFrameInsideBeginFrame = 2,
BeginImplFrameInsideDeadline = 3,
}
impl BeginImplFrameState {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
Self::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
Self::BeginImplFrameInsideBeginFrame => {
"BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME"
}
Self::BeginImplFrameInsideDeadline => {
"BEGIN_IMPL_FRAME_INSIDE_DEADLINE"
}
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"BEGIN_IMPL_FRAME_UNSPECIFIED" => {
Some(Self::BeginImplFrameUnspecified)
}
"BEGIN_IMPL_FRAME_IDLE" => Some(Self::BeginImplFrameIdle),
"BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME" => {
Some(Self::BeginImplFrameInsideBeginFrame)
}
"BEGIN_IMPL_FRAME_INSIDE_DEADLINE" => {
Some(Self::BeginImplFrameInsideDeadline)
}
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum BeginMainFrameState {
BeginMainFrameUnspecified = 0,
BeginMainFrameIdle = 1,
BeginMainFrameSent = 2,
BeginMainFrameReadyToCommit = 3,
}
impl BeginMainFrameState {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
Self::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
Self::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
Self::BeginMainFrameReadyToCommit => {
"BEGIN_MAIN_FRAME_READY_TO_COMMIT"
}
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"BEGIN_MAIN_FRAME_UNSPECIFIED" => {
Some(Self::BeginMainFrameUnspecified)
}
"BEGIN_MAIN_FRAME_IDLE" => Some(Self::BeginMainFrameIdle),
"BEGIN_MAIN_FRAME_SENT" => Some(Self::BeginMainFrameSent),
"BEGIN_MAIN_FRAME_READY_TO_COMMIT" => {
Some(Self::BeginMainFrameReadyToCommit)
}
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum LayerTreeFrameSinkState {
LayerTreeFrameUnspecified = 0,
LayerTreeFrameNone = 1,
LayerTreeFrameActive = 2,
LayerTreeFrameCreating = 3,
LayerTreeFrameWaitingForFirstCommit = 4,
LayerTreeFrameWaitingForFirstActivation = 5,
}
impl LayerTreeFrameSinkState {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
Self::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
Self::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
Self::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
Self::LayerTreeFrameWaitingForFirstCommit => {
"LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT"
}
Self::LayerTreeFrameWaitingForFirstActivation => {
"LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION"
}
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"LAYER_TREE_FRAME_UNSPECIFIED" => {
Some(Self::LayerTreeFrameUnspecified)
}
"LAYER_TREE_FRAME_NONE" => Some(Self::LayerTreeFrameNone),
"LAYER_TREE_FRAME_ACTIVE" => Some(Self::LayerTreeFrameActive),
"LAYER_TREE_FRAME_CREATING" => Some(Self::LayerTreeFrameCreating),
"LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT" => {
Some(Self::LayerTreeFrameWaitingForFirstCommit)
}
"LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION" => {
Some(Self::LayerTreeFrameWaitingForFirstActivation)
}
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum ForcedRedrawOnTimeoutState {
ForcedRedrawUnspecified = 0,
ForcedRedrawIdle = 1,
ForcedRedrawWaitingForCommit = 2,
ForcedRedrawWaitingForActivation = 3,
ForcedRedrawWaitingForDraw = 4,
}
impl ForcedRedrawOnTimeoutState {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
Self::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
Self::ForcedRedrawWaitingForCommit => {
"FORCED_REDRAW_WAITING_FOR_COMMIT"
}
Self::ForcedRedrawWaitingForActivation => {
"FORCED_REDRAW_WAITING_FOR_ACTIVATION"
}
Self::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"FORCED_REDRAW_UNSPECIFIED" => Some(Self::ForcedRedrawUnspecified),
"FORCED_REDRAW_IDLE" => Some(Self::ForcedRedrawIdle),
"FORCED_REDRAW_WAITING_FOR_COMMIT" => {
Some(Self::ForcedRedrawWaitingForCommit)
}
"FORCED_REDRAW_WAITING_FOR_ACTIVATION" => {
Some(Self::ForcedRedrawWaitingForActivation)
}
"FORCED_REDRAW_WAITING_FOR_DRAW" => {
Some(Self::ForcedRedrawWaitingForDraw)
}
_ => None,
}
}
}
}
/// Next id: 47
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MinorState {
#[prost(int32, optional, tag = "1")]
pub commit_count: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub current_frame_number: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub last_frame_number_submit_performed: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub last_frame_number_draw_performed: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "5")]
pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
#[prost(bool, optional, tag = "6")]
pub did_draw: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "7")]
pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "8")]
pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "9")]
pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "10")]
pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "11")]
pub did_commit_during_frame: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "12")]
pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "13")]
pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "14")]
pub did_prepare_tiles: ::core::option::Option<bool>,
#[prost(int32, optional, tag = "15")]
pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "16")]
pub pending_submit_frames: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "17")]
pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<
i32,
>,
#[prost(bool, optional, tag = "18")]
pub needs_redraw: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "19")]
pub needs_prepare_tiles: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "20")]
pub needs_begin_main_frame: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "21")]
pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "22")]
pub visible: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "23")]
pub begin_frame_source_paused: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "24")]
pub can_draw: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "25")]
pub resourceless_draw: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "26")]
pub has_pending_tree: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "27")]
pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "28")]
pub active_tree_needs_first_draw: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "29")]
pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "30")]
pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<
bool,
>,
#[prost(enumeration = "minor_state::TreePriority", optional, tag = "31")]
pub tree_priority: ::core::option::Option<i32>,
#[prost(enumeration = "minor_state::ScrollHandlerState", optional, tag = "32")]
pub scroll_handler_state: ::core::option::Option<i32>,
#[prost(bool, optional, tag = "33")]
pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "34")]
pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "36")]
pub video_needs_begin_frames: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "37")]
pub defer_begin_main_frame: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "38")]
pub last_commit_had_no_updates: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "39")]
pub did_draw_in_last_frame: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "40")]
pub did_submit_in_last_frame: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "41")]
pub needs_impl_side_invalidation: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "42")]
pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "43")]
pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "44")]
pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "45")]
pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "46")]
pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
}
/// Nested message and enum types in `MinorState`.
pub mod minor_state {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum TreePriority {
Unspecified = 0,
SamePriorityForBothTrees = 1,
SmoothnessTakesPriority = 2,
NewContentTakesPriority = 3,
}
impl TreePriority {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
Self::SamePriorityForBothTrees => {
"TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES"
}
Self::SmoothnessTakesPriority => {
"TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY"
}
Self::NewContentTakesPriority => {
"TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY"
}
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"TREE_PRIORITY_UNSPECIFIED" => Some(Self::Unspecified),
"TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES" => {
Some(Self::SamePriorityForBothTrees)
}
"TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY" => {
Some(Self::SmoothnessTakesPriority)
}
"TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY" => {
Some(Self::NewContentTakesPriority)
}
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum ScrollHandlerState {
ScrollHandlerUnspecified = 0,
ScrollAffectsScrollHandler = 1,
ScrollDoesNotAffectScrollHandler = 2,
}
impl ScrollHandlerState {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
Self::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
Self::ScrollDoesNotAffectScrollHandler => {
"SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER"
}
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SCROLL_HANDLER_UNSPECIFIED" => Some(Self::ScrollHandlerUnspecified),
"SCROLL_AFFECTS_SCROLL_HANDLER" => {
Some(Self::ScrollAffectsScrollHandler)
}
"SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER" => {
Some(Self::ScrollDoesNotAffectScrollHandler)
}
_ => None,
}
}
}
}
}
/// Next id: 13
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BeginFrameArgs {
#[prost(enumeration = "begin_frame_args::BeginFrameArgsType", optional, tag = "1")]
pub r#type: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub source_id: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub sequence_number: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "4")]
pub frame_time_us: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "5")]
pub deadline_us: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "6")]
pub interval_delta_us: ::core::option::Option<i64>,
#[prost(bool, optional, tag = "7")]
pub on_critical_path: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "8")]
pub animate_only: ::core::option::Option<bool>,
#[prost(int64, optional, tag = "12")]
pub frames_throttled_since_last: ::core::option::Option<i64>,
#[prost(oneof = "begin_frame_args::CreatedFrom", tags = "9, 10")]
pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
}
/// Nested message and enum types in `BeginFrameArgs`.
pub mod begin_frame_args {
/// JSON format has a "type" field that was always just "BeginFrameArgs" we
/// drop this in the proto representation, and instead make the JSON format
/// "subtype" field become the type field.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum BeginFrameArgsType {
Unspecified = 0,
Invalid = 1,
Normal = 2,
Missed = 3,
}
impl BeginFrameArgsType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
Self::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
Self::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
Self::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
"BEGIN_FRAME_ARGS_TYPE_INVALID" => Some(Self::Invalid),
"BEGIN_FRAME_ARGS_TYPE_NORMAL" => Some(Self::Normal),
"BEGIN_FRAME_ARGS_TYPE_MISSED" => Some(Self::Missed),
_ => None,
}
}
}
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum CreatedFrom {
/// The interned SourceLocation.
#[prost(uint64, tag = "9")]
SourceLocationIid(u64),
/// The SourceLocation that this args was created from.
/// TODO(nuskos): Eventually we will support interning inside of
/// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
/// since we can emit it as part of the InternedData message. When we can
/// remove this |source_location|.
#[prost(message, tag = "10")]
SourceLocation(super::SourceLocation),
}
}
/// Next id: 7
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BeginImplFrameArgs {
#[prost(int64, optional, tag = "1")]
pub updated_at_us: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "2")]
pub finished_at_us: ::core::option::Option<i64>,
#[prost(enumeration = "begin_impl_frame_args::State", optional, tag = "3")]
pub state: ::core::option::Option<i32>,
#[prost(message, optional, tag = "6")]
pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
#[prost(oneof = "begin_impl_frame_args::Args", tags = "4, 5")]
pub args: ::core::option::Option<begin_impl_frame_args::Args>,
}
/// Nested message and enum types in `BeginImplFrameArgs`.
pub mod begin_impl_frame_args {
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TimestampsInUs {
#[prost(int64, optional, tag = "1")]
pub interval_delta: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "2")]
pub now_to_deadline_delta: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "3")]
pub frame_time_to_now_delta: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "4")]
pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "5")]
pub now: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "6")]
pub frame_time: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "7")]
pub deadline: ::core::option::Option<i64>,
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum State {
BeginFrameFinished = 0,
BeginFrameUsing = 1,
}
impl State {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
Self::BeginFrameUsing => "BEGIN_FRAME_USING",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"BEGIN_FRAME_FINISHED" => Some(Self::BeginFrameFinished),
"BEGIN_FRAME_USING" => Some(Self::BeginFrameUsing),
_ => None,
}
}
}
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Args {
/// Only set if |state| is BEGIN_FRAME_FINISHED.
#[prost(message, tag = "4")]
CurrentArgs(super::BeginFrameArgs),
/// Only set if |state| is BEGIN_FRAME_USING.
#[prost(message, tag = "5")]
LastArgs(super::BeginFrameArgs),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BeginFrameObserverState {
#[prost(int64, optional, tag = "1")]
pub dropped_begin_frame_args: ::core::option::Option<i64>,
#[prost(message, optional, tag = "2")]
pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BeginFrameSourceState {
#[prost(uint32, optional, tag = "1")]
pub source_id: ::core::option::Option<u32>,
#[prost(bool, optional, tag = "2")]
pub paused: ::core::option::Option<bool>,
#[prost(uint32, optional, tag = "3")]
pub num_observers: ::core::option::Option<u32>,
#[prost(message, optional, tag = "4")]
pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CompositorTimingHistory {
#[prost(int64, optional, tag = "1")]
pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "2")]
pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<
i64,
>,
#[prost(int64, optional, tag = "3")]
pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<
i64,
>,
#[prost(int64, optional, tag = "4")]
pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "5")]
pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "6")]
pub activate_estimate_delta_us: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "7")]
pub draw_estimate_delta_us: ::core::option::Option<i64>,
}
/// Details about ContentSettings trace events.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ChromeContentSettingsEventInfo {
/// The number of user defined hostname patterns for content settings at
/// browser start. Similar to UMA histogram
/// 'ContentSettings.NumberOfExceptions'.
#[prost(uint32, optional, tag = "1")]
pub number_of_exceptions: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeFrameReporter {
#[prost(enumeration = "chrome_frame_reporter::State", optional, tag = "1")]
pub state: ::core::option::Option<i32>,
/// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
#[prost(enumeration = "chrome_frame_reporter::FrameDropReason", optional, tag = "2")]
pub reason: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "3")]
pub frame_source: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub frame_sequence: ::core::option::Option<u64>,
/// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
/// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
/// smoothness.
#[prost(bool, optional, tag = "5")]
pub affects_smoothness: ::core::option::Option<bool>,
/// The type of active scroll.
#[prost(enumeration = "chrome_frame_reporter::ScrollState", optional, tag = "6")]
pub scroll_state: ::core::option::Option<i32>,
/// If any main thread animation is active during this frame.
#[prost(bool, optional, tag = "7")]
pub has_main_animation: ::core::option::Option<bool>,
/// If any compositor thread animation is active during this frame.
#[prost(bool, optional, tag = "8")]
pub has_compositor_animation: ::core::option::Option<bool>,
/// If any touch-driven UX (not scroll) is active during this frame.
#[prost(bool, optional, tag = "9")]
pub has_smooth_input_main: ::core::option::Option<bool>,
/// Whether the frame contained any missing content (i.e. whether there was
/// checkerboarding in the frame). If has_missing_content,
/// checkerboarded_needs_raster and checkerboarded_needs_record all have
/// values, has_missing_content should equal checkerboarded_needs_raster ||
/// checkerboarded_needs_record.
#[prost(bool, optional, tag = "10")]
pub has_missing_content: ::core::option::Option<bool>,
/// The id of layer_tree_host that the frame has been produced for.
#[prost(uint64, optional, tag = "11")]
pub layer_tree_host_id: ::core::option::Option<u64>,
/// If total latency of PipelineReporter exceeds a certain limit.
#[prost(bool, optional, tag = "12")]
pub has_high_latency: ::core::option::Option<bool>,
/// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
/// the same frame sequence as another PipelineReporter) or "BACKFILL"
/// (i.e. dropped frames when there are no partial compositor updates).
#[prost(enumeration = "chrome_frame_reporter::FrameType", optional, tag = "13")]
pub frame_type: ::core::option::Option<i32>,
/// The breakdown stage of PipelineReporter that is most likely accountable for
/// high latency.
#[prost(string, repeated, tag = "14")]
pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<
::prost::alloc::string::String,
>,
/// Whether the frame contained any content that is not fully rastered.
#[prost(bool, optional, tag = "15")]
pub checkerboarded_needs_raster: ::core::option::Option<bool>,
/// Whether the frame contained any content that is not fully recorded.
#[prost(bool, optional, tag = "16")]
pub checkerboarded_needs_record: ::core::option::Option<bool>,
}
/// Nested message and enum types in `ChromeFrameReporter`.
pub mod chrome_frame_reporter {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum State {
/// The frame did not have any updates to present.
NoUpdateDesired = 0,
/// The frame presented all the desired updates (i.e. any updates requested
/// from both the compositor thread and main-threads were handled).
PresentedAll = 1,
/// The frame was presented with some updates, but also missed some updates
/// (e.g. missed updates from the main-thread, but included updates from the
/// compositor thread).
PresentedPartial = 2,
/// The frame was dropped, i.e. some updates were desired for the frame, but
/// was not presented.
Dropped = 3,
}
impl State {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
Self::PresentedAll => "STATE_PRESENTED_ALL",
Self::PresentedPartial => "STATE_PRESENTED_PARTIAL",
Self::Dropped => "STATE_DROPPED",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"STATE_NO_UPDATE_DESIRED" => Some(Self::NoUpdateDesired),
"STATE_PRESENTED_ALL" => Some(Self::PresentedAll),
"STATE_PRESENTED_PARTIAL" => Some(Self::PresentedPartial),
"STATE_DROPPED" => Some(Self::Dropped),
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum FrameDropReason {
ReasonUnspecified = 0,
/// Frame was dropped by the display-compositor.
/// The display-compositor may drop a frame some times (e.g. the frame missed
/// the deadline, or was blocked on surface-sync, etc.)
ReasonDisplayCompositor = 1,
/// Frame was dropped because of the main-thread.
/// The main-thread may cause a frame to be dropped, e.g. if the main-thread
/// is running expensive javascript, or doing a lot of layout updates, etc.
ReasonMainThread = 2,
/// Frame was dropped by the client compositor.
/// The client compositor can drop some frames too (e.g. attempting to
/// recover latency, missing the deadline, etc.).
ReasonClientCompositor = 3,
}
impl FrameDropReason {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ReasonUnspecified => "REASON_UNSPECIFIED",
Self::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
Self::ReasonMainThread => "REASON_MAIN_THREAD",
Self::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"REASON_UNSPECIFIED" => Some(Self::ReasonUnspecified),
"REASON_DISPLAY_COMPOSITOR" => Some(Self::ReasonDisplayCompositor),
"REASON_MAIN_THREAD" => Some(Self::ReasonMainThread),
"REASON_CLIENT_COMPOSITOR" => Some(Self::ReasonClientCompositor),
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum ScrollState {
ScrollNone = 0,
ScrollMainThread = 1,
ScrollCompositorThread = 2,
/// Used when it can't be determined whether a scroll is in progress or not.
ScrollUnknown = 3,
}
impl ScrollState {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ScrollNone => "SCROLL_NONE",
Self::ScrollMainThread => "SCROLL_MAIN_THREAD",
Self::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
Self::ScrollUnknown => "SCROLL_UNKNOWN",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SCROLL_NONE" => Some(Self::ScrollNone),
"SCROLL_MAIN_THREAD" => Some(Self::ScrollMainThread),
"SCROLL_COMPOSITOR_THREAD" => Some(Self::ScrollCompositorThread),
"SCROLL_UNKNOWN" => Some(Self::ScrollUnknown),
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum FrameType {
Forked = 0,
Backfill = 1,
}
impl FrameType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Forked => "FORKED",
Self::Backfill => "BACKFILL",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"FORKED" => Some(Self::Forked),
"BACKFILL" => Some(Self::Backfill),
_ => None,
}
}
}
}
/// Details about one of Chrome's keyed services associated with the event.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeKeyedService {
/// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
/// Chrome, these are static strings known at compile time).
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeLatencyInfo {
#[prost(int64, optional, tag = "1")]
pub trace_id: ::core::option::Option<i64>,
#[prost(enumeration = "chrome_latency_info::Step", optional, tag = "2")]
pub step: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub frame_tree_node_id: ::core::option::Option<i32>,
#[prost(message, repeated, tag = "4")]
pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
#[prost(bool, optional, tag = "5")]
pub is_coalesced: ::core::option::Option<bool>,
#[prost(int64, optional, tag = "6")]
pub gesture_scroll_id: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "7")]
pub touch_id: ::core::option::Option<i64>,
/// The type of input corresponding to this `ChromeLatencyInfo`.
#[prost(enumeration = "chrome_latency_info::InputType", optional, tag = "8")]
pub input_type: ::core::option::Option<i32>,
}
/// Nested message and enum types in `ChromeLatencyInfo`.
pub mod chrome_latency_info {
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ComponentInfo {
#[prost(enumeration = "LatencyComponentType", optional, tag = "1")]
pub component_type: ::core::option::Option<i32>,
/// Microsecond timestamp in CLOCK_MONOTONIC domain
#[prost(uint64, optional, tag = "2")]
pub time_us: ::core::option::Option<u64>,
}
/// NEXT ID: 12
/// All step are optional but the enum is ordered (not by number) below in the
/// order we expect them to appear if they are emitted in trace in a blocking
/// fashion.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Step {
Unspecified = 0,
/// Emitted on the browser main thread.
SendInputEventUi = 3,
/// Happens on the renderer's compositor.
HandleInputEventImpl = 5,
DidHandleInputAndOverscroll = 8,
/// Occurs on the Renderer's main thread.
HandleInputEventMain = 4,
MainThreadScrollUpdate = 2,
HandleInputEventMainCommit = 1,
/// Could be emitted on both the renderer's main OR compositor.
HandledInputEventMainOrImpl = 9,
/// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
/// renderer's compositor and this will be emitted.
HandledInputEventImpl = 10,
/// Renderer's compositor.
SwapBuffers = 6,
/// Happens on the VizCompositor in the GPU process.
DrawAndSwap = 7,
/// Happens on the GPU main thread after the swap has completed.
///
/// See above for NEXT ID, enum steps are not ordered by tag number.
FinishedSwapBuffers = 11,
}
impl Step {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "STEP_UNSPECIFIED",
Self::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
Self::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
Self::DidHandleInputAndOverscroll => {
"STEP_DID_HANDLE_INPUT_AND_OVERSCROLL"
}
Self::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
Self::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
Self::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
Self::HandledInputEventMainOrImpl => {
"STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL"
}
Self::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
Self::SwapBuffers => "STEP_SWAP_BUFFERS",
Self::DrawAndSwap => "STEP_DRAW_AND_SWAP",
Self::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"STEP_UNSPECIFIED" => Some(Self::Unspecified),
"STEP_SEND_INPUT_EVENT_UI" => Some(Self::SendInputEventUi),
"STEP_HANDLE_INPUT_EVENT_IMPL" => Some(Self::HandleInputEventImpl),
"STEP_DID_HANDLE_INPUT_AND_OVERSCROLL" => {
Some(Self::DidHandleInputAndOverscroll)
}
"STEP_HANDLE_INPUT_EVENT_MAIN" => Some(Self::HandleInputEventMain),
"STEP_MAIN_THREAD_SCROLL_UPDATE" => Some(Self::MainThreadScrollUpdate),
"STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT" => {
Some(Self::HandleInputEventMainCommit)
}
"STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL" => {
Some(Self::HandledInputEventMainOrImpl)
}
"STEP_HANDLED_INPUT_EVENT_IMPL" => Some(Self::HandledInputEventImpl),
"STEP_SWAP_BUFFERS" => Some(Self::SwapBuffers),
"STEP_DRAW_AND_SWAP" => Some(Self::DrawAndSwap),
"STEP_FINISHED_SWAP_BUFFERS" => Some(Self::FinishedSwapBuffers),
_ => None,
}
}
}
/// This enum is a copy of LatencyComponentType enum in Chrome, located in
/// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
/// practices.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum LatencyComponentType {
ComponentUnspecified = 0,
ComponentInputEventLatencyBeginRwh = 1,
ComponentInputEventLatencyScrollUpdateOriginal = 2,
ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
ComponentInputEventLatencyOriginal = 4,
ComponentInputEventLatencyUi = 5,
ComponentInputEventLatencyRendererMain = 6,
ComponentInputEventLatencyRenderingScheduledMain = 7,
ComponentInputEventLatencyRenderingScheduledImpl = 8,
ComponentInputEventLatencyScrollUpdateLastEvent = 9,
ComponentInputEventLatencyAckRwh = 10,
ComponentInputEventLatencyRendererSwap = 11,
ComponentDisplayCompositorReceivedFrame = 12,
ComponentInputEventGpuSwapBuffer = 13,
ComponentInputEventLatencyFrameSwap = 14,
}
impl LatencyComponentType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
Self::ComponentInputEventLatencyBeginRwh => {
"COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH"
}
Self::ComponentInputEventLatencyScrollUpdateOriginal => {
"COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL"
}
Self::ComponentInputEventLatencyFirstScrollUpdateOriginal => {
"COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL"
}
Self::ComponentInputEventLatencyOriginal => {
"COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL"
}
Self::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
Self::ComponentInputEventLatencyRendererMain => {
"COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN"
}
Self::ComponentInputEventLatencyRenderingScheduledMain => {
"COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN"
}
Self::ComponentInputEventLatencyRenderingScheduledImpl => {
"COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL"
}
Self::ComponentInputEventLatencyScrollUpdateLastEvent => {
"COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT"
}
Self::ComponentInputEventLatencyAckRwh => {
"COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH"
}
Self::ComponentInputEventLatencyRendererSwap => {
"COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP"
}
Self::ComponentDisplayCompositorReceivedFrame => {
"COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME"
}
Self::ComponentInputEventGpuSwapBuffer => {
"COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER"
}
Self::ComponentInputEventLatencyFrameSwap => {
"COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP"
}
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"COMPONENT_UNSPECIFIED" => Some(Self::ComponentUnspecified),
"COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH" => {
Some(Self::ComponentInputEventLatencyBeginRwh)
}
"COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL" => {
Some(Self::ComponentInputEventLatencyScrollUpdateOriginal)
}
"COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL" => {
Some(Self::ComponentInputEventLatencyFirstScrollUpdateOriginal)
}
"COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL" => {
Some(Self::ComponentInputEventLatencyOriginal)
}
"COMPONENT_INPUT_EVENT_LATENCY_UI" => {
Some(Self::ComponentInputEventLatencyUi)
}
"COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN" => {
Some(Self::ComponentInputEventLatencyRendererMain)
}
"COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN" => {
Some(Self::ComponentInputEventLatencyRenderingScheduledMain)
}
"COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL" => {
Some(Self::ComponentInputEventLatencyRenderingScheduledImpl)
}
"COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT" => {
Some(Self::ComponentInputEventLatencyScrollUpdateLastEvent)
}
"COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH" => {
Some(Self::ComponentInputEventLatencyAckRwh)
}
"COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP" => {
Some(Self::ComponentInputEventLatencyRendererSwap)
}
"COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME" => {
Some(Self::ComponentDisplayCompositorReceivedFrame)
}
"COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER" => {
Some(Self::ComponentInputEventGpuSwapBuffer)
}
"COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP" => {
Some(Self::ComponentInputEventLatencyFrameSwap)
}
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum InputType {
UnspecifiedOrOther = 0,
TouchMoved = 1,
GestureScrollBegin = 2,
GestureScrollUpdate = 3,
GestureScrollEnd = 4,
GestureTap = 5,
GestureTapCancel = 6,
}
impl InputType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
Self::TouchMoved => "TOUCH_MOVED",
Self::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
Self::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
Self::GestureScrollEnd => "GESTURE_SCROLL_END",
Self::GestureTap => "GESTURE_TAP",
Self::GestureTapCancel => "GESTURE_TAP_CANCEL",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNSPECIFIED_OR_OTHER" => Some(Self::UnspecifiedOrOther),
"TOUCH_MOVED" => Some(Self::TouchMoved),
"GESTURE_SCROLL_BEGIN" => Some(Self::GestureScrollBegin),
"GESTURE_SCROLL_UPDATE" => Some(Self::GestureScrollUpdate),
"GESTURE_SCROLL_END" => Some(Self::GestureScrollEnd),
"GESTURE_TAP" => Some(Self::GestureTap),
"GESTURE_TAP_CANCEL" => Some(Self::GestureTapCancel),
_ => None,
}
}
}
}
/// Details about a legacy Chrome IPC message that is either sent by the event.
/// TODO(eseckler): Also use this message on the receiving side?
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ChromeLegacyIpc {
/// Corresponds to the message class type defined in Chrome's IPCMessageStart
/// enum, e.g. FrameMsgStart,
#[prost(enumeration = "chrome_legacy_ipc::MessageClass", optional, tag = "1")]
pub message_class: ::core::option::Option<i32>,
/// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
/// IPC_MESSAGE_START macros.
#[prost(uint32, optional, tag = "2")]
pub message_line: ::core::option::Option<u32>,
}
/// Nested message and enum types in `ChromeLegacyIpc`.
pub mod chrome_legacy_ipc {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum MessageClass {
ClassUnspecified = 0,
ClassAutomation = 1,
ClassFrame = 2,
ClassPage = 3,
ClassView = 4,
ClassWidget = 5,
ClassInput = 6,
ClassTest = 7,
ClassWorker = 8,
ClassNacl = 9,
ClassGpuChannel = 10,
ClassMedia = 11,
ClassPpapi = 12,
ClassChrome = 13,
ClassDrag = 14,
ClassPrint = 15,
ClassExtension = 16,
ClassTextInputClient = 17,
ClassBlinkTest = 18,
ClassAccessibility = 19,
ClassPrerender = 20,
ClassChromoting = 21,
ClassBrowserPlugin = 22,
ClassAndroidWebView = 23,
ClassNaclHost = 24,
ClassEncryptedMedia = 25,
ClassCast = 26,
ClassGinJavaBridge = 27,
ClassChromeUtilityPrinting = 28,
ClassOzoneGpu = 29,
ClassWebTest = 30,
ClassNetworkHints = 31,
ClassExtensionsGuestView = 32,
ClassGuestView = 33,
ClassMediaPlayerDelegate = 34,
ClassExtensionWorker = 35,
ClassSubresourceFilter = 36,
ClassUnfreezableFrame = 37,
}
impl MessageClass {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ClassUnspecified => "CLASS_UNSPECIFIED",
Self::ClassAutomation => "CLASS_AUTOMATION",
Self::ClassFrame => "CLASS_FRAME",
Self::ClassPage => "CLASS_PAGE",
Self::ClassView => "CLASS_VIEW",
Self::ClassWidget => "CLASS_WIDGET",
Self::ClassInput => "CLASS_INPUT",
Self::ClassTest => "CLASS_TEST",
Self::ClassWorker => "CLASS_WORKER",
Self::ClassNacl => "CLASS_NACL",
Self::ClassGpuChannel => "CLASS_GPU_CHANNEL",
Self::ClassMedia => "CLASS_MEDIA",
Self::ClassPpapi => "CLASS_PPAPI",
Self::ClassChrome => "CLASS_CHROME",
Self::ClassDrag => "CLASS_DRAG",
Self::ClassPrint => "CLASS_PRINT",
Self::ClassExtension => "CLASS_EXTENSION",
Self::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
Self::ClassBlinkTest => "CLASS_BLINK_TEST",
Self::ClassAccessibility => "CLASS_ACCESSIBILITY",
Self::ClassPrerender => "CLASS_PRERENDER",
Self::ClassChromoting => "CLASS_CHROMOTING",
Self::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
Self::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
Self::ClassNaclHost => "CLASS_NACL_HOST",
Self::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
Self::ClassCast => "CLASS_CAST",
Self::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
Self::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
Self::ClassOzoneGpu => "CLASS_OZONE_GPU",
Self::ClassWebTest => "CLASS_WEB_TEST",
Self::ClassNetworkHints => "CLASS_NETWORK_HINTS",
Self::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
Self::ClassGuestView => "CLASS_GUEST_VIEW",
Self::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
Self::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
Self::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
Self::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"CLASS_UNSPECIFIED" => Some(Self::ClassUnspecified),
"CLASS_AUTOMATION" => Some(Self::ClassAutomation),
"CLASS_FRAME" => Some(Self::ClassFrame),
"CLASS_PAGE" => Some(Self::ClassPage),
"CLASS_VIEW" => Some(Self::ClassView),
"CLASS_WIDGET" => Some(Self::ClassWidget),
"CLASS_INPUT" => Some(Self::ClassInput),
"CLASS_TEST" => Some(Self::ClassTest),
"CLASS_WORKER" => Some(Self::ClassWorker),
"CLASS_NACL" => Some(Self::ClassNacl),
"CLASS_GPU_CHANNEL" => Some(Self::ClassGpuChannel),
"CLASS_MEDIA" => Some(Self::ClassMedia),
"CLASS_PPAPI" => Some(Self::ClassPpapi),
"CLASS_CHROME" => Some(Self::ClassChrome),
"CLASS_DRAG" => Some(Self::ClassDrag),
"CLASS_PRINT" => Some(Self::ClassPrint),
"CLASS_EXTENSION" => Some(Self::ClassExtension),
"CLASS_TEXT_INPUT_CLIENT" => Some(Self::ClassTextInputClient),
"CLASS_BLINK_TEST" => Some(Self::ClassBlinkTest),
"CLASS_ACCESSIBILITY" => Some(Self::ClassAccessibility),
"CLASS_PRERENDER" => Some(Self::ClassPrerender),
"CLASS_CHROMOTING" => Some(Self::ClassChromoting),
"CLASS_BROWSER_PLUGIN" => Some(Self::ClassBrowserPlugin),
"CLASS_ANDROID_WEB_VIEW" => Some(Self::ClassAndroidWebView),
"CLASS_NACL_HOST" => Some(Self::ClassNaclHost),
"CLASS_ENCRYPTED_MEDIA" => Some(Self::ClassEncryptedMedia),
"CLASS_CAST" => Some(Self::ClassCast),
"CLASS_GIN_JAVA_BRIDGE" => Some(Self::ClassGinJavaBridge),
"CLASS_CHROME_UTILITY_PRINTING" => Some(Self::ClassChromeUtilityPrinting),
"CLASS_OZONE_GPU" => Some(Self::ClassOzoneGpu),
"CLASS_WEB_TEST" => Some(Self::ClassWebTest),
"CLASS_NETWORK_HINTS" => Some(Self::ClassNetworkHints),
"CLASS_EXTENSIONS_GUEST_VIEW" => Some(Self::ClassExtensionsGuestView),
"CLASS_GUEST_VIEW" => Some(Self::ClassGuestView),
"CLASS_MEDIA_PLAYER_DELEGATE" => Some(Self::ClassMediaPlayerDelegate),
"CLASS_EXTENSION_WORKER" => Some(Self::ClassExtensionWorker),
"CLASS_SUBRESOURCE_FILTER" => Some(Self::ClassSubresourceFilter),
"CLASS_UNFREEZABLE_FRAME" => Some(Self::ClassUnfreezableFrame),
_ => None,
}
}
}
}
/// Details about Chrome message pump events
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ChromeMessagePump {
/// True if there are sent messages in the queue.
#[prost(bool, optional, tag = "1")]
pub sent_messages_in_queue: ::core::option::Option<bool>,
/// Interned SourceLocation of IO handler that MessagePumpForIO is about to
/// invoke.
#[prost(uint64, optional, tag = "2")]
pub io_handler_location_iid: ::core::option::Option<u64>,
}
/// Contains information to identify mojo handling events. The trace events in
/// mojo are common for all mojo interfaces and this information is used to
/// identify who is the caller or callee.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeMojoEventInfo {
/// Contains the interface name or the file name of the creator of a mojo
/// handle watcher, recorded when an event if notified to the watcher. The code
/// that runs within the track event belongs to the interface.
#[prost(string, optional, tag = "1")]
pub watcher_notify_interface_tag: ::core::option::Option<
::prost::alloc::string::String,
>,
/// The hash of the IPC message that is being handled.
#[prost(uint32, optional, tag = "2")]
pub ipc_hash: ::core::option::Option<u32>,
/// A static string representing the mojo interface name of the message that is
/// being handled.
#[prost(string, optional, tag = "3")]
pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
/// Refers to an interned UnsymbolizedSourceLocation.
/// The UnsymbolizedSourceLocation contains the interface method that's being
/// handled, represented as a native symbol.
/// The native symbol can be symbolized after the trace is recorded.
/// Not using a symbolized source location for official Chromium builds to
/// reduce binary size - emitting file/function names as strings into the
/// trace requires storing them in the binary, which causes a significant
/// binary size bloat for Chromium.
#[prost(uint64, optional, tag = "4")]
pub mojo_interface_method_iid: ::core::option::Option<u64>,
/// Indicate whether this is a message or reply.
#[prost(bool, optional, tag = "5")]
pub is_reply: ::core::option::Option<bool>,
/// The payload size of the message being sent through mojo messages.
#[prost(uint64, optional, tag = "6")]
pub payload_size: ::core::option::Option<u64>,
/// Represents the size of the message. Includes all headers and user payload.
#[prost(uint64, optional, tag = "7")]
pub data_num_bytes: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ChromeRendererSchedulerState {
#[prost(enumeration = "ChromeRailMode", optional, tag = "1")]
pub rail_mode: ::core::option::Option<i32>,
#[prost(bool, optional, tag = "2")]
pub is_backgrounded: ::core::option::Option<bool>,
#[prost(bool, optional, tag = "3")]
pub is_hidden: ::core::option::Option<bool>,
}
/// Details about a UI interaction initiated by the user, such as opening or
/// closing a tab or a context menu.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeUserEvent {
/// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
/// Chrome, these are usually static strings known at compile time, or
/// concatenations of multiple such static strings).
#[prost(string, optional, tag = "1")]
pub action: ::core::option::Option<::prost::alloc::string::String>,
/// MD5 hash of the action string.
#[prost(uint64, optional, tag = "2")]
pub action_hash: ::core::option::Option<u64>,
}
/// Details about HWNDMessageHandler trace events.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ChromeWindowHandleEventInfo {
#[prost(uint32, optional, tag = "1")]
pub dpi: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub message_id: ::core::option::Option<u32>,
#[prost(fixed64, optional, tag = "3")]
pub hwnd_ptr: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Screenshot {
#[prost(bytes = "vec", optional, tag = "1")]
pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
/// TrackEvent arguments describing the execution of a task.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TaskExecution {
/// Source location that the task was posted from.
/// interned SourceLocation.
#[prost(uint64, optional, tag = "1")]
pub posted_from_iid: ::core::option::Option<u64>,
}
/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
/// which describe activity on a track, such as a thread or asynchronous event
/// track. The track is specified using separate TrackDescriptor messages and
/// referred to via the track's UUID.
///
/// A simple TrackEvent packet specifies a timestamp, category, name and type:
/// ```protobuf
/// trace_packet {
/// timestamp: 1000
/// track_event {
/// categories: \["my_cat"\]
/// name: "my_event"
/// type: TYPE_INSTANT
/// }
/// }
/// ```
///
/// To associate an event with a custom track (e.g. a thread), the track is
/// defined in a separate packet and referred to from the TrackEvent by its UUID:
/// ```protobuf
/// trace_packet {
/// track_descriptor {
/// track_uuid: 1234
/// name: "my_track"
///
/// // Optionally, associate the track with a thread.
/// thread_descriptor {
/// pid: 10
/// tid: 10
/// ..
/// }
/// }
/// }
/// ```
///
/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
///
/// ```protobuf
/// trace_packet {
/// timestamp: 1200
/// track_event {
/// track_uuid: 1234
/// categories: \["my_cat"\]
/// name: "my_slice"
/// type: TYPE_SLICE_BEGIN
/// }
/// }
/// trace_packet {
/// timestamp: 1400
/// track_event {
/// track_uuid: 1234
/// type: TYPE_SLICE_END
/// }
/// }
/// ```
/// TrackEvents also support optimizations to reduce data repetition and encoded
/// data size, e.g. through data interning (names, categories, ...) and delta
/// encoding of timestamps/counters. For details, see the InternedData message.
/// Further, default values for attributes of events on the same sequence (e.g.
/// their default track association) can be emitted as part of a
/// TrackEventDefaults message.
///
/// Next reserved id: 13 (up to 15). Next id: 52.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrackEvent {
/// Names of categories of the event. In the client library, categories are a
/// way to turn groups of individual events on or off.
/// interned EventCategoryName.
#[prost(uint64, repeated, packed = "false", tag = "3")]
pub category_iids: ::prost::alloc::vec::Vec<u64>,
/// non-interned variant.
#[prost(string, repeated, tag = "22")]
pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(enumeration = "track_event::Type", optional, tag = "9")]
pub r#type: ::core::option::Option<i32>,
/// Identifies the track of the event. The default value may be overridden
/// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
/// sequence (in most cases sequence = one thread). If no value is specified
/// here or in TrackEventDefaults, the TrackEvent will be associated with an
/// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
#[prost(uint64, optional, tag = "11")]
pub track_uuid: ::core::option::Option<u64>,
/// To encode counter values more efficiently, we support attaching additional
/// counter values to a TrackEvent of any type. All values will share the same
/// timestamp specified in the TracePacket. The value at
/// extra_counter_values\[N\] is for the counter track referenced by
/// extra_counter_track_uuids\[N\].
///
/// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
/// should always be equal or more uuids than values. It is valid to set more
/// uuids (e.g. via defaults) than values. If uuids are specified in
/// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
/// default uuid list.
///
/// For example, this allows snapshotting the thread time clock at each
/// thread-track BEGIN and END event to capture the cpu time delta of a slice.
#[prost(uint64, repeated, packed = "false", tag = "31")]
pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
#[prost(int64, repeated, packed = "false", tag = "12")]
pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
/// Counter snapshots using floating point instead of integer values.
#[prost(uint64, repeated, packed = "false", tag = "45")]
pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
#[prost(double, repeated, packed = "false", tag = "46")]
pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
/// IDs of flows originating, passing through, or ending at this event.
/// Flow IDs are global within a trace.
///
/// A flow connects a sequence of TrackEvents within or across tracks, e.g.
/// an input event may be handled on one thread but cause another event on
/// a different thread - a flow between the two events can associate them.
///
/// The direction of the flows between events is inferred from the events'
/// timestamps. The earliest event with the same flow ID becomes the source
/// of the flow. Any events thereafter are intermediate steps of the flow,
/// until the flow terminates at the last event with the flow ID.
///
/// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
/// that the same ID can later be reused for another flow.
/// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
#[deprecated]
#[prost(uint64, repeated, packed = "false", tag = "36")]
pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
/// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
/// consumption.
#[prost(fixed64, repeated, packed = "false", tag = "47")]
pub flow_ids: ::prost::alloc::vec::Vec<u64>,
/// List of flow ids which should terminate on this event, otherwise same as
/// |flow_ids|.
/// Any one flow ID should be either listed as part of |flow_ids| OR
/// |terminating_flow_ids|, not both.
/// DEPRECATED. Only kept for backwards compatibility. Use
/// |terminating_flow_ids|.
#[deprecated]
#[prost(uint64, repeated, packed = "false", tag = "42")]
pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
/// TODO(b/204341740): replace "terminating_flow_ids_old" with
/// "terminating_flow_ids" to reduce memory consumption.
#[prost(fixed64, repeated, packed = "false", tag = "48")]
pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
/// Unstable key/value annotations shown in the trace viewer but not intended
/// for metrics use.
#[prost(message, repeated, tag = "4")]
pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
/// Typed event arguments:
#[prost(message, optional, tag = "5")]
pub task_execution: ::core::option::Option<TaskExecution>,
#[prost(message, optional, tag = "21")]
pub log_message: ::core::option::Option<LogMessage>,
#[prost(message, optional, tag = "24")]
pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
#[prost(message, optional, tag = "25")]
pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
#[prost(message, optional, tag = "26")]
pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
#[prost(message, optional, tag = "27")]
pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
#[prost(message, optional, tag = "28")]
pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
#[prost(message, optional, tag = "29")]
pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
#[prost(message, optional, tag = "32")]
pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
#[prost(message, optional, tag = "39")]
pub chrome_application_state_info: ::core::option::Option<
ChromeApplicationStateInfo,
>,
#[prost(message, optional, tag = "40")]
pub chrome_renderer_scheduler_state: ::core::option::Option<
ChromeRendererSchedulerState,
>,
#[prost(message, optional, tag = "41")]
pub chrome_window_handle_event_info: ::core::option::Option<
ChromeWindowHandleEventInfo,
>,
#[prost(message, optional, tag = "43")]
pub chrome_content_settings_event_info: ::core::option::Option<
ChromeContentSettingsEventInfo,
>,
#[prost(message, optional, tag = "49")]
pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
#[prost(message, optional, tag = "50")]
pub screenshot: ::core::option::Option<Screenshot>,
#[prost(message, optional, tag = "35")]
pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
#[prost(message, optional, tag = "38")]
pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
#[prost(message, optional, tag = "6")]
pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
/// Optional name of the event for its display in trace viewer. May be left
/// unspecified for events with typed arguments.
///
/// Note that metrics should not rely on event names, as they are prone to
/// changing. Instead, they should use typed arguments to identify the events
/// they are interested in.
#[prost(oneof = "track_event::NameField", tags = "10, 23")]
pub name_field: ::core::option::Option<track_event::NameField>,
/// A new value for a counter track. |track_uuid| should refer to a track with
/// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
/// efficient encoding of counter values that are sampled at the beginning/end
/// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
/// Counter values can optionally be encoded in as delta values (positive or
/// negative) on each packet sequence (see CounterIncrementalBase).
#[prost(oneof = "track_event::CounterValueField", tags = "30, 44")]
pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
/// This field is used only if the source location represents the function that
/// executes during this event.
#[prost(oneof = "track_event::SourceLocationField", tags = "33, 34")]
pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
/// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
/// TracePacket instead.
///
/// Timestamp in microseconds (usually CLOCK_MONOTONIC).
#[prost(oneof = "track_event::Timestamp", tags = "1, 16")]
pub timestamp: ::core::option::Option<track_event::Timestamp>,
/// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
/// encode thread time instead.
///
/// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
/// microseconds.
#[prost(oneof = "track_event::ThreadTime", tags = "2, 17")]
pub thread_time: ::core::option::Option<track_event::ThreadTime>,
/// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
/// encode thread instruction count instead.
///
/// Value of the instruction counter for the current thread.
#[prost(oneof = "track_event::ThreadInstructionCount", tags = "8, 20")]
pub thread_instruction_count: ::core::option::Option<
track_event::ThreadInstructionCount,
>,
}
/// Nested message and enum types in `TrackEvent`.
pub mod track_event {
/// Apart from {category, time, thread time, tid, pid}, other legacy trace
/// event attributes are initially simply proxied for conversion to a JSON
/// trace. We intend to gradually transition these attributes to similar native
/// features in TrackEvent (e.g. async + flow events), or deprecate them
/// without replacement where transition is unsuitable.
///
/// Next reserved id: 16 (up to 16).
/// Next id: 20.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LegacyEvent {
/// Deprecated, use TrackEvent::name(_iid) instead.
/// interned EventName.
#[prost(uint64, optional, tag = "1")]
pub name_iid: ::core::option::Option<u64>,
#[prost(int32, optional, tag = "2")]
pub phase: ::core::option::Option<i32>,
#[prost(int64, optional, tag = "3")]
pub duration_us: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "4")]
pub thread_duration_us: ::core::option::Option<i64>,
/// Elapsed retired instruction count during the event.
#[prost(int64, optional, tag = "15")]
pub thread_instruction_delta: ::core::option::Option<i64>,
/// Additional optional scope for |id|.
#[prost(string, optional, tag = "7")]
pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
/// Consider the thread timestamps for async BEGIN/END event pairs as valid.
#[prost(bool, optional, tag = "9")]
pub use_async_tts: ::core::option::Option<bool>,
/// Idenfifies a flow. Flow events with the same bind_id are connected.
#[prost(uint64, optional, tag = "8")]
pub bind_id: ::core::option::Option<u64>,
/// Use the enclosing slice as binding point for a flow end event instead of
/// the next slice. Flow start/step events always bind to the enclosing
/// slice.
#[prost(bool, optional, tag = "12")]
pub bind_to_enclosing: ::core::option::Option<bool>,
#[prost(enumeration = "legacy_event::FlowDirection", optional, tag = "13")]
pub flow_direction: ::core::option::Option<i32>,
#[prost(enumeration = "legacy_event::InstantEventScope", optional, tag = "14")]
pub instant_event_scope: ::core::option::Option<i32>,
/// Override the pid/tid if the writer needs to emit events on behalf of
/// another process/thread. This should be the exception. Normally, the
/// pid+tid from ThreadDescriptor is used.
#[prost(int32, optional, tag = "18")]
pub pid_override: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "19")]
pub tid_override: ::core::option::Option<i32>,
#[prost(oneof = "legacy_event::Id", tags = "6, 10, 11")]
pub id: ::core::option::Option<legacy_event::Id>,
}
/// Nested message and enum types in `LegacyEvent`.
pub mod legacy_event {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum FlowDirection {
FlowUnspecified = 0,
FlowIn = 1,
FlowOut = 2,
FlowInout = 3,
}
impl FlowDirection {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::FlowUnspecified => "FLOW_UNSPECIFIED",
Self::FlowIn => "FLOW_IN",
Self::FlowOut => "FLOW_OUT",
Self::FlowInout => "FLOW_INOUT",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"FLOW_UNSPECIFIED" => Some(Self::FlowUnspecified),
"FLOW_IN" => Some(Self::FlowIn),
"FLOW_OUT" => Some(Self::FlowOut),
"FLOW_INOUT" => Some(Self::FlowInout),
_ => None,
}
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum InstantEventScope {
ScopeUnspecified = 0,
ScopeGlobal = 1,
ScopeProcess = 2,
ScopeThread = 3,
}
impl InstantEventScope {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ScopeUnspecified => "SCOPE_UNSPECIFIED",
Self::ScopeGlobal => "SCOPE_GLOBAL",
Self::ScopeProcess => "SCOPE_PROCESS",
Self::ScopeThread => "SCOPE_THREAD",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SCOPE_UNSPECIFIED" => Some(Self::ScopeUnspecified),
"SCOPE_GLOBAL" => Some(Self::ScopeGlobal),
"SCOPE_PROCESS" => Some(Self::ScopeProcess),
"SCOPE_THREAD" => Some(Self::ScopeThread),
_ => None,
}
}
}
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum Id {
#[prost(uint64, tag = "6")]
UnscopedId(u64),
#[prost(uint64, tag = "10")]
LocalId(u64),
#[prost(uint64, tag = "11")]
GlobalId(u64),
}
}
/// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Type {
Unspecified = 0,
/// Slice events are events that have a begin and end timestamp, i.e. a
/// duration. They can be nested similar to a callstack: If, on the same
/// track, event B begins after event A, but before A ends, B is a child
/// event of A and will be drawn as a nested event underneath A in the UI.
/// Note that child events should always end before their parents (e.g. B
/// before A).
///
/// Each slice event is formed by a pair of BEGIN + END events. The END event
/// does not need to repeat any TrackEvent fields it has in common with its
/// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
/// END pair will be merged during trace import.
///
/// Note that we deliberately chose not to support COMPLETE events (which
/// would specify a duration directly) since clients would need to delay
/// writing them until the slice is completed, which can result in reordered
/// events in the trace and loss of unfinished events at the end of a trace.
SliceBegin = 1,
SliceEnd = 2,
/// Instant events are nestable events without duration. They can be children
/// of slice events on the same track.
Instant = 3,
/// Event that provides a value for a counter track. |track_uuid| should
/// refer to a counter track and |counter_value| set to the new value. Note
/// that most other TrackEvent fields (e.g. categories, name, ..) are not
/// supported for TYPE_COUNTER events. See also CounterDescriptor.
Counter = 4,
}
impl Type {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "TYPE_UNSPECIFIED",
Self::SliceBegin => "TYPE_SLICE_BEGIN",
Self::SliceEnd => "TYPE_SLICE_END",
Self::Instant => "TYPE_INSTANT",
Self::Counter => "TYPE_COUNTER",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"TYPE_UNSPECIFIED" => Some(Self::Unspecified),
"TYPE_SLICE_BEGIN" => Some(Self::SliceBegin),
"TYPE_SLICE_END" => Some(Self::SliceEnd),
"TYPE_INSTANT" => Some(Self::Instant),
"TYPE_COUNTER" => Some(Self::Counter),
_ => None,
}
}
}
/// Optional name of the event for its display in trace viewer. May be left
/// unspecified for events with typed arguments.
///
/// Note that metrics should not rely on event names, as they are prone to
/// changing. Instead, they should use typed arguments to identify the events
/// they are interested in.
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum NameField {
/// interned EventName.
#[prost(uint64, tag = "10")]
NameIid(u64),
/// non-interned variant.
#[prost(string, tag = "23")]
Name(::prost::alloc::string::String),
}
/// A new value for a counter track. |track_uuid| should refer to a track with
/// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
/// efficient encoding of counter values that are sampled at the beginning/end
/// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
/// Counter values can optionally be encoded in as delta values (positive or
/// negative) on each packet sequence (see CounterIncrementalBase).
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum CounterValueField {
#[prost(int64, tag = "30")]
CounterValue(i64),
#[prost(double, tag = "44")]
DoubleCounterValue(f64),
}
/// This field is used only if the source location represents the function that
/// executes during this event.
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum SourceLocationField {
/// Non-interned field.
#[prost(message, tag = "33")]
SourceLocation(super::SourceLocation),
/// Interned field.
#[prost(uint64, tag = "34")]
SourceLocationIid(u64),
}
/// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
/// TracePacket instead.
///
/// Timestamp in microseconds (usually CLOCK_MONOTONIC).
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum Timestamp {
/// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
/// calculate the absolute timestamp value, sum up all delta values of the
/// preceding TrackEvents since the last ThreadDescriptor and add the sum to
/// the |reference_timestamp| in ThreadDescriptor. This value should always
/// be positive.
#[prost(int64, tag = "1")]
TimestampDeltaUs(i64),
/// Absolute value (e.g. a manually specified timestamp in the macro).
/// This is a one-off value that does not affect delta timestamp computation
/// in subsequent TrackEvents.
#[prost(int64, tag = "16")]
TimestampAbsoluteUs(i64),
}
/// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
/// encode thread time instead.
///
/// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
/// microseconds.
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum ThreadTime {
/// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
/// calculate the absolute timestamp value, sum up all delta values of the
/// preceding TrackEvents since the last ThreadDescriptor and add the sum to
/// the |reference_timestamp| in ThreadDescriptor. This value should always
/// be positive.
#[prost(int64, tag = "2")]
ThreadTimeDeltaUs(i64),
/// This is a one-off absolute value that does not affect delta timestamp
/// computation in subsequent TrackEvents.
#[prost(int64, tag = "17")]
ThreadTimeAbsoluteUs(i64),
}
/// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
/// encode thread instruction count instead.
///
/// Value of the instruction counter for the current thread.
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum ThreadInstructionCount {
/// Same encoding as |thread_time| field above.
#[prost(int64, tag = "8")]
ThreadInstructionCountDelta(i64),
#[prost(int64, tag = "20")]
ThreadInstructionCountAbsolute(i64),
}
}
/// Default values for fields of all TrackEvents on the same packet sequence.
/// Should be emitted as part of TracePacketDefaults whenever incremental state
/// is cleared. It's defined here because field IDs should match those of the
/// corresponding fields in TrackEvent.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrackEventDefaults {
#[prost(uint64, optional, tag = "11")]
pub track_uuid: ::core::option::Option<u64>,
#[prost(uint64, repeated, packed = "false", tag = "31")]
pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
#[prost(uint64, repeated, packed = "false", tag = "45")]
pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EventCategory {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EventName {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
/// Message that contains new entries for the interning indices of a packet
/// sequence.
///
/// The writer will usually emit new entries in the same TracePacket that first
/// refers to them (since the last reset of interning state). They may also be
/// emitted proactively in advance of referring to them in later packets.
///
/// Next reserved id: 8 (up to 15).
/// Next id: 42.
///
/// TODO(eseckler): Replace iid fields inside interned messages with
/// map<iid, message> type fields in InternedData.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InternedData {
/// Each field's message type needs to specify an |iid| field, which is the ID
/// of the entry in the field's interning index. Each field constructs its own
/// index, thus interning IDs are scoped to the tracing session and field
/// (usually as a counter for efficient var-int encoding), and optionally to
/// the incremental state generation of the packet sequence.
#[prost(message, repeated, tag = "1")]
pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
#[prost(message, repeated, tag = "2")]
pub event_names: ::prost::alloc::vec::Vec<EventName>,
#[prost(message, repeated, tag = "3")]
pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
#[prost(message, repeated, tag = "27")]
pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<
DebugAnnotationValueTypeName,
>,
#[prost(message, repeated, tag = "4")]
pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
#[prost(message, repeated, tag = "28")]
pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<
UnsymbolizedSourceLocation,
>,
#[prost(message, repeated, tag = "20")]
pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
#[prost(message, repeated, tag = "25")]
pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
/// Build IDs of exectuable files.
#[prost(message, repeated, tag = "16")]
pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
/// Paths to executable files.
#[prost(message, repeated, tag = "17")]
pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
/// Paths to source files.
#[prost(message, repeated, tag = "18")]
pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
/// Names of functions used in frames below.
#[prost(message, repeated, tag = "5")]
pub function_names: ::prost::alloc::vec::Vec<InternedString>,
/// Symbols that were added to this trace after the fact.
#[prost(message, repeated, tag = "21")]
pub profiled_frame_symbols: ::prost::alloc::vec::Vec<ProfiledFrameSymbols>,
/// Executable files mapped into processes.
#[prost(message, repeated, tag = "19")]
pub mappings: ::prost::alloc::vec::Vec<Mapping>,
/// Frames of callstacks of a program.
#[prost(message, repeated, tag = "6")]
pub frames: ::prost::alloc::vec::Vec<Frame>,
/// A callstack of a program.
#[prost(message, repeated, tag = "7")]
pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
/// Additional Vulkan information sent in a VulkanMemoryEvent message
#[prost(message, repeated, tag = "22")]
pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
/// Graphics context of a render stage event. This represent the GL
/// context for an OpenGl app or the VkDevice for a Vulkan app.
#[prost(message, repeated, tag = "23")]
pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
/// Description of a GPU hardware queue or render stage.
#[prost(message, repeated, tag = "24")]
pub gpu_specifications: ::prost::alloc::vec::Vec<
InternedGpuRenderStageSpecification,
>,
/// This is set when FtraceConfig.symbolize_ksyms = true.
/// The id of each symbol the number that will be reported in ftrace events
/// like sched_block_reason.caller and is obtained from a monotonic counter.
/// The same symbol can have different indexes in different bundles.
/// This is is NOT the real address. This is to avoid disclosing KASLR through
/// traces.
#[prost(message, repeated, tag = "26")]
pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
/// Interned string values in the DebugAnnotation proto.
#[prost(message, repeated, tag = "29")]
pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
/// Interned packet context for android.network_packets.
#[prost(message, repeated, tag = "30")]
pub packet_context: ::prost::alloc::vec::Vec<NetworkPacketContext>,
/// Interned name of a js function. We only intern js functions as there is a
/// lot of duplication for them, but less so for other strings in the V8 data
/// source.
#[prost(message, repeated, tag = "31")]
pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
/// Js functions can be emitted multiple times for various compilation tiers,
/// so it makes sense to deduplicate all this.
#[prost(message, repeated, tag = "32")]
pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
/// Interned JS script (there is one associated with each JS function)
#[prost(message, repeated, tag = "33")]
pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
/// Interned Wasm script (there is one associated with each Wasm function)
#[prost(message, repeated, tag = "34")]
pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
/// Every V8 event is associated with an isolate, intern the isolate to remove
/// duplication.
#[prost(message, repeated, tag = "35")]
pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
/// Interned protolog strings args.
#[prost(message, repeated, tag = "36")]
pub protolog_string_args: ::prost::alloc::vec::Vec<InternedString>,
/// Interned protolog stacktraces.
#[prost(message, repeated, tag = "37")]
pub protolog_stacktrace: ::prost::alloc::vec::Vec<InternedString>,
/// viewcapture
#[prost(message, repeated, tag = "38")]
pub viewcapture_package_name: ::prost::alloc::vec::Vec<InternedString>,
#[prost(message, repeated, tag = "39")]
pub viewcapture_window_name: ::prost::alloc::vec::Vec<InternedString>,
#[prost(message, repeated, tag = "40")]
pub viewcapture_view_id: ::prost::alloc::vec::Vec<InternedString>,
#[prost(message, repeated, tag = "41")]
pub viewcapture_class_name: ::prost::alloc::vec::Vec<InternedString>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MemoryTrackerSnapshot {
/// Unique ID that represents the global memory dump.
#[prost(uint64, optional, tag = "1")]
pub global_dump_id: ::core::option::Option<u64>,
#[prost(enumeration = "memory_tracker_snapshot::LevelOfDetail", optional, tag = "2")]
pub level_of_detail: ::core::option::Option<i32>,
#[prost(message, repeated, tag = "3")]
pub process_memory_dumps: ::prost::alloc::vec::Vec<
memory_tracker_snapshot::ProcessSnapshot,
>,
}
/// Nested message and enum types in `MemoryTrackerSnapshot`.
pub mod memory_tracker_snapshot {
/// Memory snapshot of a process. The snapshot contains memory data that is
/// from 2 different sources, namely system stats and instrumentation stats.
/// The system memory usage stats come from the OS based on standard API
/// available in the platform to query memory usage. The instrumentation stats
/// are added by instrumenting specific piece of code which tracks memory
/// allocations and deallocations made by a small sub-system within the
/// application.
/// The system stats of the global memory snapshot are recorded as part of
/// ProcessStats and SmapsPacket fields in trace packet with the same
/// timestamp.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcessSnapshot {
/// Process ID of the process
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(message, repeated, tag = "2")]
pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
#[prost(message, repeated, tag = "3")]
pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
}
/// Nested message and enum types in `ProcessSnapshot`.
pub mod process_snapshot {
/// A single node in the memory graph.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MemoryNode {
/// Unique ID of the node across all processes involved in the global
/// memory dump. The ID is only unique within this particular global dump
/// identified by GlobalMemoryDumpPacket.global_dump_id.
#[prost(uint64, optional, tag = "1")]
pub id: ::core::option::Option<u64>,
/// Absolute name is a unique name for the memory node within the process
/// with ProcessMemoryDump.pid. The name can contain multiple parts
/// separated by '/', which traces the edges of the node from the root
/// node.
/// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
/// node "buffer1" in a graph structure of:
/// root -> partition_allocator -> array_buffers -> buffer1.
#[prost(string, optional, tag = "2")]
pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
/// A weak node means that the instrumentation that added the current node
/// is unsure about the existence of the actual memory. Unless a "strong"
/// (non-weak is default) node that has an edge to the current node exists
/// in the current global dump, the current node will be discarded.
#[prost(bool, optional, tag = "3")]
pub weak: ::core::option::Option<bool>,
/// Size of the node in bytes, used to compute the effective size of the
/// nodes without double counting.
#[prost(uint64, optional, tag = "4")]
pub size_bytes: ::core::option::Option<u64>,
#[prost(message, repeated, tag = "5")]
pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
}
/// Nested message and enum types in `MemoryNode`.
pub mod memory_node {
/// Entries in the memory node that contain statistics and additional
/// debuggable information about the memory. The size of the node is
/// tracked separately in the |size_bytes| field.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MemoryNodeEntry {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(enumeration = "memory_node_entry::Units", optional, tag = "2")]
pub units: ::core::option::Option<i32>,
/// Contains either one of uint64 or string value.
#[prost(uint64, optional, tag = "3")]
pub value_uint64: ::core::option::Option<u64>,
#[prost(string, optional, tag = "4")]
pub value_string: ::core::option::Option<::prost::alloc::string::String>,
}
/// Nested message and enum types in `MemoryNodeEntry`.
pub mod memory_node_entry {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Units {
Unspecified = 0,
Bytes = 1,
Count = 2,
}
impl Units {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "UNSPECIFIED",
Self::Bytes => "BYTES",
Self::Count => "COUNT",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNSPECIFIED" => Some(Self::Unspecified),
"BYTES" => Some(Self::Bytes),
"COUNT" => Some(Self::Count),
_ => None,
}
}
}
}
}
/// A directed edge that connects any 2 nodes in the graph above. These are
/// in addition to the inherent edges added due to the tree structure of the
/// node's absolute names.
/// Node with id |source_id| owns the node with id |target_id|, and has the
/// effect of attributing the memory usage of target to source. |importance|
/// is optional and relevant only for the cases of co-ownership, where it
/// acts as a z-index: the owner with the highest importance will be
/// attributed target's memory.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MemoryEdge {
#[prost(uint64, optional, tag = "1")]
pub source_id: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub target_id: ::core::option::Option<u64>,
#[prost(uint32, optional, tag = "3")]
pub importance: ::core::option::Option<u32>,
#[prost(bool, optional, tag = "4")]
pub overridable: ::core::option::Option<bool>,
}
}
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum LevelOfDetail {
DetailFull = 0,
DetailLight = 1,
DetailBackground = 2,
}
impl LevelOfDetail {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::DetailFull => "DETAIL_FULL",
Self::DetailLight => "DETAIL_LIGHT",
Self::DetailBackground => "DETAIL_BACKGROUND",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"DETAIL_FULL" => Some(Self::DetailFull),
"DETAIL_LIGHT" => Some(Self::DetailLight),
"DETAIL_BACKGROUND" => Some(Self::DetailBackground),
_ => None,
}
}
}
}
/// Used to trace the execution of perfetto itself.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PerfettoMetatrace {
/// Only when using |event_id|.
#[prost(uint64, optional, tag = "3")]
pub event_duration_ns: ::core::option::Option<u64>,
/// Only when using |counter_id|.
#[prost(int32, optional, tag = "4")]
pub counter_value: ::core::option::Option<i32>,
/// ID of the thread that emitted the event.
#[prost(uint32, optional, tag = "5")]
pub thread_id: ::core::option::Option<u32>,
/// If true the meta-tracing ring buffer had overruns and hence some data is
/// missing from this point.
#[prost(bool, optional, tag = "6")]
pub has_overruns: ::core::option::Option<bool>,
/// Args for the event.
#[prost(message, repeated, tag = "7")]
pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
#[prost(message, repeated, tag = "10")]
pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
/// See base/metatrace_events.h for definitions.
#[prost(oneof = "perfetto_metatrace::RecordType", tags = "1, 2, 8, 11, 9")]
pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
}
/// Nested message and enum types in `PerfettoMetatrace`.
pub mod perfetto_metatrace {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Arg {
#[prost(oneof = "arg::KeyOrInternedKey", tags = "1, 3")]
pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
#[prost(oneof = "arg::ValueOrInternedValue", tags = "2, 4")]
pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
}
/// Nested message and enum types in `Arg`.
pub mod arg {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum KeyOrInternedKey {
#[prost(string, tag = "1")]
Key(::prost::alloc::string::String),
#[prost(uint64, tag = "3")]
KeyIid(u64),
}
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum ValueOrInternedValue {
#[prost(string, tag = "2")]
Value(::prost::alloc::string::String),
#[prost(uint64, tag = "4")]
ValueIid(u64),
}
}
/// Interned strings corresponding to the |event_name_iid|, |key_iid| and
/// |value_iid| above.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InternedString {
#[prost(uint64, optional, tag = "1")]
pub iid: ::core::option::Option<u64>,
#[prost(string, optional, tag = "2")]
pub value: ::core::option::Option<::prost::alloc::string::String>,
}
/// See base/metatrace_events.h for definitions.
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum RecordType {
#[prost(uint32, tag = "1")]
EventId(u32),
#[prost(uint32, tag = "2")]
CounterId(u32),
/// For trace processor metatracing.
#[prost(string, tag = "8")]
EventName(::prost::alloc::string::String),
#[prost(uint64, tag = "11")]
EventNameIid(u64),
#[prost(string, tag = "9")]
CounterName(::prost::alloc::string::String),
}
}
/// Events emitted by the tracing service.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TracingServiceEvent {
/// When each of the following booleans are set to true, they report the
/// point in time (through TracePacket's timestamp) where the condition
/// they describe happened.
/// The order of the booleans below matches the timestamp ordering
/// they would generally be expected to have.
#[prost(
oneof = "tracing_service_event::EventType",
tags = "2, 1, 9, 3, 4, 5, 6, 7, 8"
)]
pub event_type: ::core::option::Option<tracing_service_event::EventType>,
}
/// Nested message and enum types in `TracingServiceEvent`.
pub mod tracing_service_event {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DataSources {
#[prost(message, repeated, tag = "1")]
pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
}
/// Nested message and enum types in `DataSources`.
pub mod data_sources {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DataSource {
#[prost(string, optional, tag = "1")]
pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
}
}
/// When each of the following booleans are set to true, they report the
/// point in time (through TracePacket's timestamp) where the condition
/// they describe happened.
/// The order of the booleans below matches the timestamp ordering
/// they would generally be expected to have.
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum EventType {
/// Emitted when we start tracing and specifically, this will be before any
/// producer is notified about the existence of this trace. This is always
/// emitted before the all_data_sources_started event. This event is also
/// guaranteed to be seen (byte-offset wise) before any data packets from
/// producers.
#[prost(bool, tag = "2")]
TracingStarted(bool),
/// Emitted after all data sources saw the start event and ACKed it.
/// This identifies the point in time when it's safe to assume that all data
/// sources have been recording events.
#[prost(bool, tag = "1")]
AllDataSourcesStarted(bool),
/// Emitted when a flush is started.
#[prost(bool, tag = "9")]
FlushStarted(bool),
/// Emitted when all data sources have been flushed successfully or with an
/// error (including timeouts). This can generally happen many times over the
/// course of the trace.
#[prost(bool, tag = "3")]
AllDataSourcesFlushed(bool),
/// Emitted when reading back the central tracing buffers has been completed.
/// If |write_into_file| is specified, this can happen many times over the
/// course of the trace.
#[prost(bool, tag = "4")]
ReadTracingBuffersCompleted(bool),
/// Emitted after tracing has been disabled and specifically, this will be
/// after all packets from producers have been included in the central
/// tracing buffer.
#[prost(bool, tag = "5")]
TracingDisabled(bool),
/// Emitted if perfetto --save-for-bugreport was invoked while the current
/// tracing session was running and it had the highest bugreport_score. In
/// this case the original consumer will see a nearly empty trace, because
/// the contents are routed onto the bugreport file. This event flags the
/// situation explicitly. Traces that contain this marker should be discarded
/// by test infrastructures / pipelines.
/// Deprecated since Android U, where --save-for-bugreport uses
/// non-destructive cloning.
#[prost(bool, tag = "6")]
SeizedForBugreport(bool),
/// Emitted when not all data sources in all producers reply to a start
/// request after some time.
#[prost(message, tag = "7")]
SlowStartingDataSources(DataSources),
/// Emitted when the last flush request has failed. Lists data sources that
/// did not reply on time.
#[prost(message, tag = "8")]
LastFlushSlowDataSources(DataSources),
}
}
/// Energy consumer based on aidl class:
/// android.hardware.power.stats.EnergyConsumer.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidEnergyConsumer {
/// Unique ID of this energy consumer. Matches the ID in a
/// AndroidEnergyEstimationBreakdown.
#[prost(int32, optional, tag = "1")]
pub energy_consumer_id: ::core::option::Option<i32>,
/// For a group of energy consumers of the same logical type, sorting by
/// ordinal gives their physical order. Ordinals must be consecutive integers
/// starting from 0.
#[prost(int32, optional, tag = "2")]
pub ordinal: ::core::option::Option<i32>,
/// Type of this energy consumer.
#[prost(string, optional, tag = "3")]
pub r#type: ::core::option::Option<::prost::alloc::string::String>,
/// Unique name of this energy consumer. Vendor/device specific. Opaque to
/// framework.
#[prost(string, optional, tag = "4")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidEnergyConsumerDescriptor {
#[prost(message, repeated, tag = "1")]
pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
}
/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
/// This proto represents the aidl class:
/// android.hardware.power.stats.EnergyConsumerResult.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AndroidEnergyEstimationBreakdown {
/// The first trace packet of each session should include a energy consumer
/// descriptor.
#[prost(message, optional, tag = "1")]
pub energy_consumer_descriptor: ::core::option::Option<
AndroidEnergyConsumerDescriptor,
>,
/// ID of the AndroidEnergyConsumer associated with this result. Matches
/// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
/// should be sent at the beginning of a trace.
#[prost(int32, optional, tag = "2")]
pub energy_consumer_id: ::core::option::Option<i32>,
/// Total accumulated energy since boot in microwatt-seconds (uWs)
#[prost(int64, optional, tag = "3")]
pub energy_uws: ::core::option::Option<i64>,
/// Optional attributed energy per Android ID / Linux UID for this
/// EnergyConsumer. Sum total of attributed energy must be less than or equal
/// to total accumulated energy.
#[prost(message, repeated, tag = "4")]
pub per_uid_breakdown: ::prost::alloc::vec::Vec<
android_energy_estimation_breakdown::EnergyUidBreakdown,
>,
}
/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
pub mod android_energy_estimation_breakdown {
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct EnergyUidBreakdown {
/// Android ID/Linux UID, the accumulated energy is attributed to.
#[prost(int32, optional, tag = "1")]
pub uid: ::core::option::Option<i32>,
/// Accumulated energy since boot in microwatt-seconds (uWs).
#[prost(int64, optional, tag = "2")]
pub energy_uws: ::core::option::Option<i64>,
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EntityStateResidency {
/// This is only emitted at the beginning of the trace.
#[prost(message, repeated, tag = "1")]
pub power_entity_state: ::prost::alloc::vec::Vec<
entity_state_residency::PowerEntityState,
>,
#[prost(message, repeated, tag = "2")]
pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
}
/// Nested message and enum types in `EntityStateResidency`.
pub mod entity_state_residency {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PowerEntityState {
/// Index corresponding to the entity
#[prost(int32, optional, tag = "1")]
pub entity_index: ::core::option::Option<i32>,
/// Index corresponding to the state
#[prost(int32, optional, tag = "2")]
pub state_index: ::core::option::Option<i32>,
/// Name of the entity. This is device-specific, determined by the PowerStats
/// HAL, and cannot be configured by the user. An example would be
/// "Bluetooth".
#[prost(string, optional, tag = "3")]
pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
/// Name of the state. This is device-specific, determined by the PowerStats
/// HAL, and cannot be configured by the user. An example would be
/// "Active".
#[prost(string, optional, tag = "4")]
pub state_name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct StateResidency {
/// Index corresponding to PowerEntityState.entity_index
#[prost(int32, optional, tag = "1")]
pub entity_index: ::core::option::Option<i32>,
/// Index corresponding to PowerEntityState.state_index
#[prost(int32, optional, tag = "2")]
pub state_index: ::core::option::Option<i32>,
/// Time since boot that this entity has been in this state
#[prost(uint64, optional, tag = "3")]
pub total_time_in_state_ms: ::core::option::Option<u64>,
/// Total number of times since boot that the entity has entered this state
#[prost(uint64, optional, tag = "4")]
pub total_state_entry_count: ::core::option::Option<u64>,
/// Timestamp of the last time the entity entered this state
#[prost(uint64, optional, tag = "5")]
pub last_entry_timestamp_ms: ::core::option::Option<u64>,
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BatteryCounters {
/// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
#[prost(int64, optional, tag = "1")]
pub charge_counter_uah: ::core::option::Option<i64>,
/// Remaining battery capacity percentage of total capacity
#[prost(float, optional, tag = "2")]
pub capacity_percent: ::core::option::Option<f32>,
/// Instantaneous battery current in microamperes(µA).
/// Negative values indicate current being drained from the battery and
/// positive values indicate current feeding the battery from a charge source
/// (USB).
///
/// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
#[prost(int64, optional, tag = "3")]
pub current_ua: ::core::option::Option<i64>,
/// Instantaneous battery current in microamperes(µA).
#[prost(int64, optional, tag = "4")]
pub current_avg_ua: ::core::option::Option<i64>,
/// Battery name, emitted only on multiple batteries.
#[prost(string, optional, tag = "5")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
/// Battery capacity in microwatt-hours(µWh).
#[prost(int64, optional, tag = "6")]
pub energy_counter_uwh: ::core::option::Option<i64>,
/// Battery voltage in microvolts(µV).
#[prost(int64, optional, tag = "7")]
pub voltage_uv: ::core::option::Option<i64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PowerRails {
/// This is only emitted at the beginning of the trace.
#[prost(message, repeated, tag = "1")]
pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
#[prost(message, repeated, tag = "2")]
pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
}
/// Nested message and enum types in `PowerRails`.
pub mod power_rails {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RailDescriptor {
/// Index corresponding to the rail
#[prost(uint32, optional, tag = "1")]
pub index: ::core::option::Option<u32>,
/// Name of the rail
#[prost(string, optional, tag = "2")]
pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
/// Name of the subsystem to which this rail belongs
#[prost(string, optional, tag = "3")]
pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
/// Hardware sampling rate (Hz).
#[prost(uint32, optional, tag = "4")]
pub sampling_rate: ::core::option::Option<u32>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct EnergyData {
/// Index corresponding to RailDescriptor.index
#[prost(uint32, optional, tag = "1")]
pub index: ::core::option::Option<u32>,
/// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
#[prost(uint64, optional, tag = "2")]
pub timestamp_ms: ::core::option::Option<u64>,
/// Accumulated energy since device boot in microwatt-seconds (uWs).
#[prost(uint64, optional, tag = "3")]
pub energy: ::core::option::Option<u64>,
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ObfuscatedMember {
/// This is the obfuscated field name relative to the class containing the
/// ObfuscatedMember.
#[prost(string, optional, tag = "1")]
pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
/// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
/// field name including its class. Otherwise, this is this the unqualified
/// deobfuscated field name relative to the class containing this
/// ObfuscatedMember.
#[prost(string, optional, tag = "2")]
pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ObfuscatedClass {
#[prost(string, optional, tag = "1")]
pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
/// fields.
#[prost(message, repeated, tag = "3")]
pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
#[prost(message, repeated, tag = "4")]
pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DeobfuscationMapping {
#[prost(string, optional, tag = "1")]
pub package_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int64, optional, tag = "2")]
pub version_code: ::core::option::Option<i64>,
#[prost(message, repeated, tag = "3")]
pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HeapGraphRoot {
/// Objects retained by this root.
#[prost(uint64, repeated, tag = "1")]
pub object_ids: ::prost::alloc::vec::Vec<u64>,
#[prost(enumeration = "heap_graph_root::Type", optional, tag = "2")]
pub root_type: ::core::option::Option<i32>,
}
/// Nested message and enum types in `HeapGraphRoot`.
pub mod heap_graph_root {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Type {
RootUnknown = 0,
RootJniGlobal = 1,
RootJniLocal = 2,
RootJavaFrame = 3,
RootNativeStack = 4,
RootStickyClass = 5,
RootThreadBlock = 6,
RootMonitorUsed = 7,
RootThreadObject = 8,
RootInternedString = 9,
RootFinalizing = 10,
RootDebugger = 11,
RootReferenceCleanup = 12,
RootVmInternal = 13,
RootJniMonitor = 14,
}
impl Type {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::RootUnknown => "ROOT_UNKNOWN",
Self::RootJniGlobal => "ROOT_JNI_GLOBAL",
Self::RootJniLocal => "ROOT_JNI_LOCAL",
Self::RootJavaFrame => "ROOT_JAVA_FRAME",
Self::RootNativeStack => "ROOT_NATIVE_STACK",
Self::RootStickyClass => "ROOT_STICKY_CLASS",
Self::RootThreadBlock => "ROOT_THREAD_BLOCK",
Self::RootMonitorUsed => "ROOT_MONITOR_USED",
Self::RootThreadObject => "ROOT_THREAD_OBJECT",
Self::RootInternedString => "ROOT_INTERNED_STRING",
Self::RootFinalizing => "ROOT_FINALIZING",
Self::RootDebugger => "ROOT_DEBUGGER",
Self::RootReferenceCleanup => "ROOT_REFERENCE_CLEANUP",
Self::RootVmInternal => "ROOT_VM_INTERNAL",
Self::RootJniMonitor => "ROOT_JNI_MONITOR",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"ROOT_UNKNOWN" => Some(Self::RootUnknown),
"ROOT_JNI_GLOBAL" => Some(Self::RootJniGlobal),
"ROOT_JNI_LOCAL" => Some(Self::RootJniLocal),
"ROOT_JAVA_FRAME" => Some(Self::RootJavaFrame),
"ROOT_NATIVE_STACK" => Some(Self::RootNativeStack),
"ROOT_STICKY_CLASS" => Some(Self::RootStickyClass),
"ROOT_THREAD_BLOCK" => Some(Self::RootThreadBlock),
"ROOT_MONITOR_USED" => Some(Self::RootMonitorUsed),
"ROOT_THREAD_OBJECT" => Some(Self::RootThreadObject),
"ROOT_INTERNED_STRING" => Some(Self::RootInternedString),
"ROOT_FINALIZING" => Some(Self::RootFinalizing),
"ROOT_DEBUGGER" => Some(Self::RootDebugger),
"ROOT_REFERENCE_CLEANUP" => Some(Self::RootReferenceCleanup),
"ROOT_VM_INTERNAL" => Some(Self::RootVmInternal),
"ROOT_JNI_MONITOR" => Some(Self::RootJniMonitor),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HeapGraphType {
/// TODO(fmayer): Consider removing this and using the index in the repeaed
/// field to save space.
#[prost(uint64, optional, tag = "1")]
pub id: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub location_id: ::core::option::Option<u64>,
#[prost(string, optional, tag = "3")]
pub class_name: ::core::option::Option<::prost::alloc::string::String>,
/// Size of objects of this type.
#[prost(uint64, optional, tag = "4")]
pub object_size: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub superclass_id: ::core::option::Option<u64>,
/// Indices for InternedData.field_names for the names of the fields of
/// instances of this class. This does NOT include the fields from
/// superclasses. The consumer of this data needs to walk all super
/// classes to get a full lists of fields. Objects always write the
/// fields in order of most specific class to the furthest up superclass.
#[prost(uint64, repeated, tag = "6")]
pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
#[prost(enumeration = "heap_graph_type::Kind", optional, tag = "7")]
pub kind: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "8")]
pub classloader_id: ::core::option::Option<u64>,
}
/// Nested message and enum types in `HeapGraphType`.
pub mod heap_graph_type {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Kind {
Unknown = 0,
Normal = 1,
Noreferences = 2,
String = 3,
Array = 4,
Class = 5,
Classloader = 6,
Dexcache = 7,
SoftReference = 8,
WeakReference = 9,
FinalizerReference = 10,
PhantomReference = 11,
}
impl Kind {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "KIND_UNKNOWN",
Self::Normal => "KIND_NORMAL",
Self::Noreferences => "KIND_NOREFERENCES",
Self::String => "KIND_STRING",
Self::Array => "KIND_ARRAY",
Self::Class => "KIND_CLASS",
Self::Classloader => "KIND_CLASSLOADER",
Self::Dexcache => "KIND_DEXCACHE",
Self::SoftReference => "KIND_SOFT_REFERENCE",
Self::WeakReference => "KIND_WEAK_REFERENCE",
Self::FinalizerReference => "KIND_FINALIZER_REFERENCE",
Self::PhantomReference => "KIND_PHANTOM_REFERENCE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"KIND_UNKNOWN" => Some(Self::Unknown),
"KIND_NORMAL" => Some(Self::Normal),
"KIND_NOREFERENCES" => Some(Self::Noreferences),
"KIND_STRING" => Some(Self::String),
"KIND_ARRAY" => Some(Self::Array),
"KIND_CLASS" => Some(Self::Class),
"KIND_CLASSLOADER" => Some(Self::Classloader),
"KIND_DEXCACHE" => Some(Self::Dexcache),
"KIND_SOFT_REFERENCE" => Some(Self::SoftReference),
"KIND_WEAK_REFERENCE" => Some(Self::WeakReference),
"KIND_FINALIZER_REFERENCE" => Some(Self::FinalizerReference),
"KIND_PHANTOM_REFERENCE" => Some(Self::PhantomReference),
_ => None,
}
}
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HeapGraphObject {
/// Index for InternedData.types for the name of the type of this object.
#[prost(uint64, optional, tag = "2")]
pub type_id: ::core::option::Option<u64>,
/// Bytes occupied by this objects.
#[prost(uint64, optional, tag = "3")]
pub self_size: ::core::option::Option<u64>,
/// Add this to all non-zero values in reference_object_id. This is used to
/// get more compact varint encoding.
///
/// The name is confusing, but this has always been used as a base for
/// reference_object_id. The field should be named reference_object_id_base.
#[prost(uint64, optional, tag = "6")]
pub reference_field_id_base: ::core::option::Option<u64>,
/// Indices for InternedData.field_names for the name of the field referring
/// to the object. For Android S+ and for instances of normal classes (e.g.
/// not instances of java.lang.Class or arrays), this is instead set in the
/// corresponding HeapGraphType, and this is left empty.
#[prost(uint64, repeated, tag = "4")]
pub reference_field_id: ::prost::alloc::vec::Vec<u64>,
/// Ids of the Object that is referred to.
#[prost(uint64, repeated, tag = "5")]
pub reference_object_id: ::prost::alloc::vec::Vec<u64>,
/// If this object is an instance of `libcore.util.NativeAllocationRegistry`,
/// the value of the `size` field.
///
/// N.B. This is not the native size of this object.
#[prost(int64, optional, tag = "8")]
pub native_allocation_registry_size_field: ::core::option::Option<i64>,
/// To reduce the space required we only emit the heap type if it has changed
/// from the previous object we recorded.
#[prost(enumeration = "heap_graph_object::HeapType", optional, tag = "9")]
pub heap_type_delta: ::core::option::Option<i32>,
#[prost(oneof = "heap_graph_object::Identifier", tags = "1, 7")]
pub identifier: ::core::option::Option<heap_graph_object::Identifier>,
}
/// Nested message and enum types in `HeapGraphObject`.
pub mod heap_graph_object {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum HeapType {
Unknown = 0,
App = 1,
Zygote = 2,
BootImage = 3,
}
impl HeapType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "HEAP_TYPE_UNKNOWN",
Self::App => "HEAP_TYPE_APP",
Self::Zygote => "HEAP_TYPE_ZYGOTE",
Self::BootImage => "HEAP_TYPE_BOOT_IMAGE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"HEAP_TYPE_UNKNOWN" => Some(Self::Unknown),
"HEAP_TYPE_APP" => Some(Self::App),
"HEAP_TYPE_ZYGOTE" => Some(Self::Zygote),
"HEAP_TYPE_BOOT_IMAGE" => Some(Self::BootImage),
_ => None,
}
}
}
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum Identifier {
#[prost(uint64, tag = "1")]
Id(u64),
#[prost(uint64, tag = "7")]
IdDelta(u64),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HeapGraph {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
/// This contains all objects at the time this dump was taken. Some of these
/// will be live, some of those unreachable (garbage). To find the live
/// objects, the client needs to build the transitive closure of objects
/// reachable from |roots|.
/// All objects not contained within that transitive closure are garbage that
/// has not yet been collected.
#[prost(message, repeated, tag = "2")]
pub objects: ::prost::alloc::vec::Vec<HeapGraphObject>,
/// Roots at the time this dump was taken.
/// All live objects are reachable from the roots. All other objects are
/// garbage.
#[prost(message, repeated, tag = "7")]
pub roots: ::prost::alloc::vec::Vec<HeapGraphRoot>,
/// Types used in HeapGraphObjects.
#[prost(message, repeated, tag = "9")]
pub types: ::prost::alloc::vec::Vec<HeapGraphType>,
/// Field names for references in managed heap graph.
#[prost(message, repeated, tag = "4")]
pub field_names: ::prost::alloc::vec::Vec<InternedString>,
/// Paths of files used in managed heap graph.
#[prost(message, repeated, tag = "8")]
pub location_names: ::prost::alloc::vec::Vec<InternedString>,
#[prost(bool, optional, tag = "5")]
pub continued: ::core::option::Option<bool>,
#[prost(uint64, optional, tag = "6")]
pub index: ::core::option::Option<u64>,
}
/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
/// involve more than one ProfilePacket if the snapshot is big (when |continued|
/// is true). The cardinality and grouping is as follows:
/// A ProfilePacket contains:
/// - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
/// one heap per process (the main malloc/free heap), but there can be more if
/// the process is using the heapprofd API to profile custom allocators.
/// - Globally interned strings, mappings and frames (to allow de-duplicating
/// frames/mapping in common between different processes).
/// A ProcessHeapSamples contains:
/// - The process and heap identifier.
/// - A number of HeapSample, one for each callsite that had some alloc/frees.
/// - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
/// A HeapSample contains statistics about callsites:
/// - Total number of bytes allocated and freed from that callsite.
/// - Total number of alloc/free calls sampled.
/// - Stats at the local maximum when dump_at_max = true.
/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProfilePacket {
/// The following interning tables are only used in Android version Q.
/// In newer versions, these tables are in InternedData
/// (see protos/perfetto/trace/interned_data) and are shared across
/// multiple ProfilePackets.
/// For backwards compatibility, consumers need to first look up interned
/// data in the tables within the ProfilePacket, and then, if they are empty,
/// look up in the InternedData instead.
#[prost(message, repeated, tag = "1")]
pub strings: ::prost::alloc::vec::Vec<InternedString>,
#[prost(message, repeated, tag = "4")]
pub mappings: ::prost::alloc::vec::Vec<Mapping>,
#[prost(message, repeated, tag = "2")]
pub frames: ::prost::alloc::vec::Vec<Frame>,
#[prost(message, repeated, tag = "3")]
pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
#[prost(message, repeated, tag = "5")]
pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
/// If this is true, the next ProfilePacket in this package_sequence_id is a
/// continuation of this one.
/// To get all samples for a process, accummulate its
/// ProcessHeapSamples.samples until you see continued=false.
#[prost(bool, optional, tag = "6")]
pub continued: ::core::option::Option<bool>,
/// Index of this ProfilePacket on its package_sequence_id. Can be used
/// to detect dropped data.
/// Verify these are consecutive.
#[prost(uint64, optional, tag = "7")]
pub index: ::core::option::Option<u64>,
}
/// Nested message and enum types in `ProfilePacket`.
pub mod profile_packet {
/// Next ID: 9
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct HeapSample {
#[prost(uint64, optional, tag = "1")]
pub callstack_id: ::core::option::Option<u64>,
/// bytes allocated at this callstack.
#[prost(uint64, optional, tag = "2")]
pub self_allocated: ::core::option::Option<u64>,
/// bytes allocated at this callstack that have been freed.
#[prost(uint64, optional, tag = "3")]
pub self_freed: ::core::option::Option<u64>,
/// Bytes allocated by this callstack but not freed at the time the malloc
/// heap usage of this process was maximal. This is only set if dump_at_max
/// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
/// self_idle will not be set.
#[prost(uint64, optional, tag = "8")]
pub self_max: ::core::option::Option<u64>,
/// Number of allocations that were sampled at this callstack but not freed
/// at the time the malloc heap usage of this process was maximal. This is
/// only set if dump_at_max is true in HeapprofdConfig. In that case,
/// self_allocated, self_freed and self_idle will not be set.
#[prost(uint64, optional, tag = "9")]
pub self_max_count: ::core::option::Option<u64>,
/// timestamp \[opt\]
#[prost(uint64, optional, tag = "4")]
pub timestamp: ::core::option::Option<u64>,
/// Number of allocations that were sampled at this callstack.
#[prost(uint64, optional, tag = "5")]
pub alloc_count: ::core::option::Option<u64>,
/// Number of allocations that were sampled at this callstack that have been
/// freed.
#[prost(uint64, optional, tag = "6")]
pub free_count: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Histogram {
#[prost(message, repeated, tag = "1")]
pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
}
/// Nested message and enum types in `Histogram`.
pub mod histogram {
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Bucket {
/// This bucket counts values from the previous bucket's (or -infinity if
/// this is the first bucket) upper_limit (inclusive) to this upper_limit
/// (exclusive).
#[prost(uint64, optional, tag = "1")]
pub upper_limit: ::core::option::Option<u64>,
/// This is the highest bucket. This is set instead of the upper_limit. Any
/// values larger or equal to the previous bucket's upper_limit are counted
/// in this bucket.
#[prost(bool, optional, tag = "2")]
pub max_bucket: ::core::option::Option<bool>,
/// Number of values that fall into this range.
#[prost(uint64, optional, tag = "3")]
pub count: ::core::option::Option<u64>,
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcessStats {
#[prost(uint64, optional, tag = "1")]
pub unwinding_errors: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "2")]
pub heap_samples: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub map_reparses: ::core::option::Option<u64>,
#[prost(message, optional, tag = "4")]
pub unwinding_time_us: ::core::option::Option<Histogram>,
#[prost(uint64, optional, tag = "5")]
pub total_unwinding_time_us: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "6")]
pub client_spinlock_blocked_us: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcessHeapSamples {
#[prost(uint64, optional, tag = "1")]
pub pid: ::core::option::Option<u64>,
/// This process was profiled from startup.
/// If false, this process was already running when profiling started.
#[prost(bool, optional, tag = "3")]
pub from_startup: ::core::option::Option<bool>,
/// This process was not profiled because a concurrent session was active.
/// If this is true, samples will be empty.
#[prost(bool, optional, tag = "4")]
pub rejected_concurrent: ::core::option::Option<bool>,
/// This process disconnected while it was profiled.
/// If false, the process outlived the profiling session.
#[prost(bool, optional, tag = "6")]
pub disconnected: ::core::option::Option<bool>,
/// If disconnected, this disconnect was caused by the client overrunning
/// the buffer.
/// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
/// on new S builds.
#[prost(bool, optional, tag = "7")]
pub buffer_overran: ::core::option::Option<bool>,
#[prost(enumeration = "process_heap_samples::ClientError", optional, tag = "14")]
pub client_error: ::core::option::Option<i32>,
/// If disconnected, this disconnected was caused by the shared memory
/// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
/// MEMORY CORRUPTION.
#[prost(bool, optional, tag = "8")]
pub buffer_corrupted: ::core::option::Option<bool>,
/// If disconnected, this disconnect was caused by heapprofd exceeding
/// guardrails during this profiling session.
#[prost(bool, optional, tag = "10")]
pub hit_guardrail: ::core::option::Option<bool>,
#[prost(string, optional, tag = "11")]
pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "12")]
pub sampling_interval_bytes: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "13")]
pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
/// Timestamp of the state of the target process that this dump represents.
/// This can be different to the timestamp of the TracePackets for various
/// reasons:
/// * If disconnected is set above, this is the timestamp of last state
/// heapprofd had of the process before it disconnected.
/// * Otherwise, if the rate of events produced by the process is high,
/// heapprofd might be behind.
///
/// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
/// to have a type enum that we can reuse here.
#[prost(uint64, optional, tag = "9")]
pub timestamp: ::core::option::Option<u64>,
/// Metadata about heapprofd.
#[prost(message, optional, tag = "5")]
pub stats: ::core::option::Option<ProcessStats>,
#[prost(message, repeated, tag = "2")]
pub samples: ::prost::alloc::vec::Vec<HeapSample>,
}
/// Nested message and enum types in `ProcessHeapSamples`.
pub mod process_heap_samples {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum ClientError {
None = 0,
HitTimeout = 1,
InvalidStackBounds = 2,
}
impl ClientError {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::None => "CLIENT_ERROR_NONE",
Self::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
Self::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"CLIENT_ERROR_NONE" => Some(Self::None),
"CLIENT_ERROR_HIT_TIMEOUT" => Some(Self::HitTimeout),
"CLIENT_ERROR_INVALID_STACK_BOUNDS" => Some(Self::InvalidStackBounds),
_ => None,
}
}
}
}
}
/// Packet emitted by heapprofd when stream_allocations = true. Only for local
/// testing. Doesn't report the callsite.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StreamingAllocation {
/// TODO(fmayer): Add callstack.
#[prost(uint64, repeated, packed = "false", tag = "1")]
pub address: ::prost::alloc::vec::Vec<u64>,
#[prost(uint64, repeated, packed = "false", tag = "2")]
pub size: ::prost::alloc::vec::Vec<u64>,
#[prost(uint64, repeated, packed = "false", tag = "3")]
pub sample_size: ::prost::alloc::vec::Vec<u64>,
#[prost(uint64, repeated, packed = "false", tag = "4")]
pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
#[prost(uint32, repeated, packed = "false", tag = "5")]
pub heap_id: ::prost::alloc::vec::Vec<u32>,
#[prost(uint64, repeated, packed = "false", tag = "6")]
pub sequence_number: ::prost::alloc::vec::Vec<u64>,
}
/// Packet emitted by heapprofd when stream_allocations = true. Only for local
/// testing. Doesn't report the callsite.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StreamingFree {
/// TODO(fmayer): Add callstack.
#[prost(uint64, repeated, packed = "false", tag = "1")]
pub address: ::prost::alloc::vec::Vec<u64>,
#[prost(uint32, repeated, packed = "false", tag = "2")]
pub heap_id: ::prost::alloc::vec::Vec<u32>,
#[prost(uint64, repeated, packed = "false", tag = "3")]
pub sequence_number: ::prost::alloc::vec::Vec<u64>,
}
/// Packet emitted by the chromium in-process signal-based callstack sampler.
/// Represents a series of individual stack samples (sampled at discrete points
/// in time), rather than aggregated over an interval.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StreamingProfilePacket {
/// Index into InternedData.callstacks
#[prost(uint64, repeated, packed = "false", tag = "1")]
pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
/// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
/// this with ClockSnapshot-based delta encoding instead.
#[prost(int64, repeated, packed = "false", tag = "2")]
pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
#[prost(int32, optional, tag = "3")]
pub process_priority: ::core::option::Option<i32>,
}
/// Namespace for the contained enums.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Profiling {}
/// Nested message and enum types in `Profiling`.
pub mod profiling {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum CpuMode {
ModeUnknown = 0,
ModeKernel = 1,
ModeUser = 2,
/// The following values aren't expected, but included for completeness:
ModeHypervisor = 3,
ModeGuestKernel = 4,
ModeGuestUser = 5,
}
impl CpuMode {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ModeUnknown => "MODE_UNKNOWN",
Self::ModeKernel => "MODE_KERNEL",
Self::ModeUser => "MODE_USER",
Self::ModeHypervisor => "MODE_HYPERVISOR",
Self::ModeGuestKernel => "MODE_GUEST_KERNEL",
Self::ModeGuestUser => "MODE_GUEST_USER",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"MODE_UNKNOWN" => Some(Self::ModeUnknown),
"MODE_KERNEL" => Some(Self::ModeKernel),
"MODE_USER" => Some(Self::ModeUser),
"MODE_HYPERVISOR" => Some(Self::ModeHypervisor),
"MODE_GUEST_KERNEL" => Some(Self::ModeGuestKernel),
"MODE_GUEST_USER" => Some(Self::ModeGuestUser),
_ => None,
}
}
}
/// Enumeration of libunwindstack's error codes.
/// NB: the integral representations of the two enums are different.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum StackUnwindError {
UnwindErrorUnknown = 0,
UnwindErrorNone = 1,
UnwindErrorMemoryInvalid = 2,
UnwindErrorUnwindInfo = 3,
UnwindErrorUnsupported = 4,
UnwindErrorInvalidMap = 5,
UnwindErrorMaxFramesExceeded = 6,
UnwindErrorRepeatedFrame = 7,
UnwindErrorInvalidElf = 8,
UnwindErrorSystemCall = 9,
UnwindErrorThreadTimeout = 10,
UnwindErrorThreadDoesNotExist = 11,
UnwindErrorBadArch = 12,
UnwindErrorMapsParse = 13,
UnwindErrorInvalidParameter = 14,
UnwindErrorPtraceCall = 15,
}
impl StackUnwindError {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
Self::UnwindErrorNone => "UNWIND_ERROR_NONE",
Self::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
Self::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
Self::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
Self::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
Self::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
Self::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
Self::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
Self::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
Self::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
Self::UnwindErrorThreadDoesNotExist => {
"UNWIND_ERROR_THREAD_DOES_NOT_EXIST"
}
Self::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
Self::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
Self::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
Self::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNWIND_ERROR_UNKNOWN" => Some(Self::UnwindErrorUnknown),
"UNWIND_ERROR_NONE" => Some(Self::UnwindErrorNone),
"UNWIND_ERROR_MEMORY_INVALID" => Some(Self::UnwindErrorMemoryInvalid),
"UNWIND_ERROR_UNWIND_INFO" => Some(Self::UnwindErrorUnwindInfo),
"UNWIND_ERROR_UNSUPPORTED" => Some(Self::UnwindErrorUnsupported),
"UNWIND_ERROR_INVALID_MAP" => Some(Self::UnwindErrorInvalidMap),
"UNWIND_ERROR_MAX_FRAMES_EXCEEDED" => {
Some(Self::UnwindErrorMaxFramesExceeded)
}
"UNWIND_ERROR_REPEATED_FRAME" => Some(Self::UnwindErrorRepeatedFrame),
"UNWIND_ERROR_INVALID_ELF" => Some(Self::UnwindErrorInvalidElf),
"UNWIND_ERROR_SYSTEM_CALL" => Some(Self::UnwindErrorSystemCall),
"UNWIND_ERROR_THREAD_TIMEOUT" => Some(Self::UnwindErrorThreadTimeout),
"UNWIND_ERROR_THREAD_DOES_NOT_EXIST" => {
Some(Self::UnwindErrorThreadDoesNotExist)
}
"UNWIND_ERROR_BAD_ARCH" => Some(Self::UnwindErrorBadArch),
"UNWIND_ERROR_MAPS_PARSE" => Some(Self::UnwindErrorMapsParse),
"UNWIND_ERROR_INVALID_PARAMETER" => {
Some(Self::UnwindErrorInvalidParameter)
}
"UNWIND_ERROR_PTRACE_CALL" => Some(Self::UnwindErrorPtraceCall),
_ => None,
}
}
}
}
/// Packet emitted by the traced_perf sampling performance profiler, which
/// gathers data via the perf_event_open syscall. Each packet contains an
/// individual sample with a counter value, and optionally a
/// callstack.
///
/// Timestamps are within the root packet. The config can specify the clock, or
/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
/// timeframe, the default was CLOCK_BOOTTIME.
///
/// There are several distinct views of this message:
/// * indication of kernel buffer data loss (kernel_records_lost set)
/// * indication of skipped samples (sample_skipped_reason set)
/// * notable event in the sampling implementation (producer_event set)
/// * normal sample (timebase_count set, typically also callstack_iid)
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PerfSample {
#[prost(uint32, optional, tag = "1")]
pub cpu: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "2")]
pub pid: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub tid: ::core::option::Option<u32>,
/// Execution state that the process was sampled at.
#[prost(enumeration = "profiling::CpuMode", optional, tag = "5")]
pub cpu_mode: ::core::option::Option<i32>,
/// Value of the timebase counter (since the event was configured, no deltas).
#[prost(uint64, optional, tag = "6")]
pub timebase_count: ::core::option::Option<u64>,
/// Value of the followers counter (since the event was configured, no deltas).
#[prost(uint64, repeated, packed = "false", tag = "7")]
pub follower_counts: ::prost::alloc::vec::Vec<u64>,
/// Unwound callstack. Might be partial, in which case a synthetic "error"
/// frame is appended, and |unwind_error| is set accordingly.
#[prost(uint64, optional, tag = "4")]
pub callstack_iid: ::core::option::Option<u64>,
/// If set, indicates that this message is not a sample, but rather an
/// indication of data loss in the ring buffer allocated for |cpu|. Such data
/// loss occurs when the kernel has insufficient ring buffer capacity to write
/// a record (which gets discarded). A record in this context is an individual
/// ring buffer entry, and counts more than just sample records.
///
/// The |timestamp| of the packet corresponds to the time that the producer
/// wrote the packet for trace-sorting purposes alone, and should not be
/// interpreted relative to the sample timestamps. This field is sufficient to
/// detect that *some* kernel data loss happened within the trace, but not the
/// specific time bounds of that loss (which would require tracking precedessor
/// & successor timestamps, which is not deemed necessary at the moment).
#[prost(uint64, optional, tag = "17")]
pub kernel_records_lost: ::core::option::Option<u64>,
#[prost(message, optional, tag = "19")]
pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
/// If set, stack unwinding was incomplete due to an error.
/// Unset values should be treated as UNWIND_ERROR_NONE.
#[prost(oneof = "perf_sample::OptionalUnwindError", tags = "16")]
pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
#[prost(oneof = "perf_sample::OptionalSampleSkippedReason", tags = "18")]
pub optional_sample_skipped_reason: ::core::option::Option<
perf_sample::OptionalSampleSkippedReason,
>,
}
/// Nested message and enum types in `PerfSample`.
pub mod perf_sample {
/// A notable event within the sampling implementation.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ProducerEvent {
#[prost(oneof = "producer_event::OptionalSourceStopReason", tags = "1")]
pub optional_source_stop_reason: ::core::option::Option<
producer_event::OptionalSourceStopReason,
>,
}
/// Nested message and enum types in `ProducerEvent`.
pub mod producer_event {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum DataSourceStopReason {
ProfilerStopUnknown = 0,
ProfilerStopGuardrail = 1,
}
impl DataSourceStopReason {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
Self::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PROFILER_STOP_UNKNOWN" => Some(Self::ProfilerStopUnknown),
"PROFILER_STOP_GUARDRAIL" => Some(Self::ProfilerStopGuardrail),
_ => None,
}
}
}
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum OptionalSourceStopReason {
#[prost(enumeration = "DataSourceStopReason", tag = "1")]
SourceStopReason(i32),
}
}
/// If set, indicates that the profiler encountered a sample that was relevant,
/// but was skipped.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum SampleSkipReason {
ProfilerSkipUnknown = 0,
ProfilerSkipReadStage = 1,
ProfilerSkipUnwindStage = 2,
ProfilerSkipUnwindEnqueue = 3,
}
impl SampleSkipReason {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
Self::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
Self::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
Self::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PROFILER_SKIP_UNKNOWN" => Some(Self::ProfilerSkipUnknown),
"PROFILER_SKIP_READ_STAGE" => Some(Self::ProfilerSkipReadStage),
"PROFILER_SKIP_UNWIND_STAGE" => Some(Self::ProfilerSkipUnwindStage),
"PROFILER_SKIP_UNWIND_ENQUEUE" => Some(Self::ProfilerSkipUnwindEnqueue),
_ => None,
}
}
}
/// If set, stack unwinding was incomplete due to an error.
/// Unset values should be treated as UNWIND_ERROR_NONE.
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum OptionalUnwindError {
#[prost(enumeration = "super::profiling::StackUnwindError", tag = "16")]
UnwindError(i32),
}
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum OptionalSampleSkippedReason {
#[prost(enumeration = "SampleSkipReason", tag = "18")]
SampleSkippedReason(i32),
}
}
/// Submessage for TracePacketDefaults.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PerfSampleDefaults {
/// The sampling timebase. Might not be identical to the data source config if
/// the implementation decided to default/override some parameters.
#[prost(message, optional, tag = "1")]
pub timebase: ::core::option::Option<perf_events::Timebase>,
/// Description of followers event
#[prost(message, repeated, tag = "4")]
pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
/// If the config requested process sharding, report back the count and which
/// of those bins was selected. Never changes for the duration of a trace.
#[prost(uint32, optional, tag = "2")]
pub process_shard_count: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "3")]
pub chosen_process_shard: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SmapsEntry {
#[prost(string, optional, tag = "1")]
pub path: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub size_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub private_dirty_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub swap_kb: ::core::option::Option<u64>,
/// for field upload (instead of path).
#[prost(string, optional, tag = "5")]
pub file_name: ::core::option::Option<::prost::alloc::string::String>,
/// TODO(crbug.com/1098746): Consider encoding this as incremental values.
#[prost(uint64, optional, tag = "6")]
pub start_address: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "7")]
pub module_timestamp: ::core::option::Option<u64>,
#[prost(string, optional, tag = "8")]
pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "9")]
pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, optional, tag = "10")]
pub protection_flags: ::core::option::Option<u32>,
#[prost(uint64, optional, tag = "11")]
pub private_clean_resident_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "12")]
pub shared_dirty_resident_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "13")]
pub shared_clean_resident_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "14")]
pub locked_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "15")]
pub proportional_resident_kb: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SmapsPacket {
#[prost(uint32, optional, tag = "1")]
pub pid: ::core::option::Option<u32>,
#[prost(message, repeated, tag = "2")]
pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
}
/// Per-process periodically sampled stats. These samples are wrapped in a
/// dedicated message (as opposite to be fields in process_tree.proto) because
/// they are dumped at a different rate than cmdline and thread list.
/// Note: not all of these stats will be present in every ProcessStats message
/// and sometimes processes may be missing. This is because counters are
/// cached to reduce emission of counters which do not change.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcessStats {
#[prost(message, repeated, tag = "1")]
pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
/// The time at which we finish collecting this batch of samples;
/// the top-level packet timestamp is the time at which
/// we begin collection.
#[prost(uint64, optional, tag = "2")]
pub collection_end_timestamp: ::core::option::Option<u64>,
}
/// Nested message and enum types in `ProcessStats`.
pub mod process_stats {
/// Per-thread periodically sampled stats.
/// Note: not all of these stats will be present in every message. See the note
/// for ProcessStats.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Thread {
#[prost(int32, optional, tag = "1")]
pub tid: ::core::option::Option<i32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FdInfo {
#[prost(uint64, optional, tag = "1")]
pub fd: ::core::option::Option<u64>,
#[prost(string, optional, tag = "2")]
pub path: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Process {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(message, repeated, tag = "11")]
pub threads: ::prost::alloc::vec::Vec<Thread>,
/// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
#[prost(uint64, optional, tag = "2")]
pub vm_size_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub vm_rss_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub rss_anon_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub rss_file_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "6")]
pub rss_shmem_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "7")]
pub vm_swap_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "8")]
pub vm_locked_kb: ::core::option::Option<u64>,
/// When adding a new field remember to update kProcMemCounterSize in
/// the trace processor.
#[prost(uint64, optional, tag = "9")]
pub vm_hwm_kb: ::core::option::Option<u64>,
#[prost(int64, optional, tag = "10")]
pub oom_score_adj: ::core::option::Option<i64>,
/// The peak resident set size is resettable in newer Posix kernels.
/// This field specifies if reset is supported and if the writer had reset
/// the peaks after each process stats recording.
#[prost(bool, optional, tag = "12")]
pub is_peak_rss_resettable: ::core::option::Option<bool>,
/// Private, shared and swap footprint of the process as measured by
/// Chrome. To know more about these metrics refer to:
/// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
#[prost(uint32, optional, tag = "13")]
pub chrome_private_footprint_kb: ::core::option::Option<u32>,
#[prost(uint32, optional, tag = "14")]
pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
#[prost(message, repeated, tag = "15")]
pub fds: ::prost::alloc::vec::Vec<FdInfo>,
/// These fields are set only when scan_smaps_rollup=true
#[prost(uint64, optional, tag = "16")]
pub smr_rss_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "17")]
pub smr_pss_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "18")]
pub smr_pss_anon_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "19")]
pub smr_pss_file_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "20")]
pub smr_pss_shmem_kb: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "23")]
pub smr_swap_pss_kb: ::core::option::Option<u64>,
/// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
/// /proc/pid/stat. Recorded if record_process_runtime config option is set.
/// Resolution of "clock ticks", usually 10ms.
#[prost(uint64, optional, tag = "21")]
pub runtime_user_mode: ::core::option::Option<u64>,
/// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
/// /proc/pid/stat. Recorded if record_process_runtime config option is set.
/// Resolution of "clock ticks", usually 10ms.
#[prost(uint64, optional, tag = "22")]
pub runtime_kernel_mode: ::core::option::Option<u64>,
}
}
/// Metadata about the processes and threads in the trace.
/// Note: this proto was designed to be filled in by traced_probes and should
/// only be populated with accurate information coming from the system. Other
/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
/// in TrackDescriptor.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcessTree {
/// List of processes and threads in the client. These lists are incremental
/// and not exhaustive. A process and its threads might show up separately in
/// different ProcessTree messages. A thread might event not show up at all, if
/// no sched_switch activity was detected, for instance:
/// #0 { processes: \[{pid: 10, ...}\], threads: \[{pid: 11, tgid: 10}\] }
/// #1 { threads: \[{pid: 12, tgid: 10}\] }
/// #2 { processes: \[{pid: 20, ...}\], threads: \[{pid: 13, tgid: 10}\] }
#[prost(message, repeated, tag = "1")]
pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
#[prost(message, repeated, tag = "2")]
pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
/// The time at which we finish collecting this process tree;
/// the top-level packet timestamp is the time at which
/// we begin collection.
#[prost(uint64, optional, tag = "3")]
pub collection_end_timestamp: ::core::option::Option<u64>,
}
/// Nested message and enum types in `ProcessTree`.
pub mod process_tree {
/// Representation of a thread.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Thread {
/// The thread ID (as per gettid()) in the root PID namespace.
#[prost(int32, optional, tag = "1")]
pub tid: ::core::option::Option<i32>,
/// Thread group id (i.e. the PID of the process, == TID of the main thread)
#[prost(int32, optional, tag = "3")]
pub tgid: ::core::option::Option<i32>,
/// The name of the thread.
#[prost(string, optional, tag = "2")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
/// The non-root-level thread IDs if the thread runs in a PID namespace. Read
/// from the NSpid entry of /proc/<tid>/status, with the first element (root-
/// level thread ID) omitted.
#[prost(int32, repeated, packed = "false", tag = "4")]
pub nstid: ::prost::alloc::vec::Vec<i32>,
}
/// Representation of a process.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Process {
/// The UNIX process ID, aka thread group ID (as per getpid()) in the root
/// PID namespace.
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
/// The parent process ID, as per getppid().
#[prost(int32, optional, tag = "2")]
pub ppid: ::core::option::Option<i32>,
/// The command line for the process, as per /proc/pid/cmdline.
/// If it is a kernel thread there will only be one cmdline field
/// and it will contain /proc/pid/comm.
#[prost(string, repeated, tag = "3")]
pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// The uid for the process, as per /proc/pid/status.
#[prost(int32, optional, tag = "5")]
pub uid: ::core::option::Option<i32>,
/// The non-root-level process IDs if the process runs in a PID namespace.
/// Read from the NSpid entry of /proc/<pid>/status, with the first element
/// (root-level process ID) omitted.
#[prost(int32, repeated, packed = "false", tag = "6")]
pub nspid: ::prost::alloc::vec::Vec<i32>,
/// Timestamp of when the process was created, in nanoseconds
/// from boot. Parsed from starttime in /proc/pid/stat.
/// Recorded if record_process_age config option is set.
/// Resolution of "clock ticks", usually 10ms.
#[prost(uint64, optional, tag = "7")]
pub process_start_from_boot: ::core::option::Option<u64>,
}
}
/// Records the parameters for aligning clock readings between machines.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RemoteClockSync {
#[prost(message, repeated, tag = "1")]
pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
}
/// Nested message and enum types in `RemoteClockSync`.
pub mod remote_clock_sync {
/// Synchronized clock snapshots taken on both sides of the relay port (the
/// tracing service and the relay service). A round of clock synchronization
/// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
/// snapshot -> client snapshot -> host snapshot.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SyncedClocks {
#[prost(message, optional, tag = "2")]
pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
#[prost(message, optional, tag = "3")]
pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
}
}
/// Deliberate empty message. See comment on StatsdAtom#atom below.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Atom {}
/// One or more statsd atoms. This must continue to match:
/// perfetto/protos/third_party/statsd/shell_data.proto
/// So that we can efficiently add data from statsd directly to the
/// trace.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct StatsdAtom {
/// Atom should be filled with an Atom proto from:
/// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
/// We don't reference Atom directly here since we don't want to import
/// Atom.proto and all its transitive dependencies into Perfetto.
/// atom and timestamp_nanos have the same cardinality
#[prost(message, repeated, tag = "1")]
pub atom: ::prost::alloc::vec::Vec<Atom>,
#[prost(int64, repeated, packed = "false", tag = "2")]
pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
}
/// Various Linux system stat counters from /proc.
/// The fields in this message can be reported at different rates and with
/// different granularity. See sys_stats_config.proto.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SysStats {
#[prost(message, repeated, tag = "1")]
pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
#[prost(message, repeated, tag = "2")]
pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
/// One entry per cpu.
#[prost(message, repeated, tag = "3")]
pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
/// Num processes forked since boot.
/// Populated only if FORK_COUNT in config.stat_counters.
#[prost(uint64, optional, tag = "4")]
pub num_forks: ::core::option::Option<u64>,
/// Total num of irqs serviced since boot.
#[prost(uint64, optional, tag = "5")]
pub num_irq_total: ::core::option::Option<u64>,
#[prost(message, repeated, tag = "6")]
pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
/// Total num of softirqs since boot.
#[prost(uint64, optional, tag = "7")]
pub num_softirq_total: ::core::option::Option<u64>,
/// Per-softirq count.
#[prost(message, repeated, tag = "8")]
pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
/// The time at which we finish collecting this set of samples;
/// the top-level packet timestamp is the time at which
/// we begin collection.
#[prost(uint64, optional, tag = "9")]
pub collection_end_timestamp: ::core::option::Option<u64>,
/// One entry per device.
#[prost(message, repeated, tag = "10")]
pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
/// Cpu current frequency from
/// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
/// One entry per cpu. Report 0 for offline cpu
#[prost(uint32, repeated, packed = "false", tag = "11")]
pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
/// One entry per each node's zones.
#[prost(message, repeated, tag = "12")]
pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
/// One entry per disk device.
#[prost(message, repeated, tag = "13")]
pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
/// One entry per PsiResource type.
#[prost(message, repeated, tag = "14")]
pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
#[prost(message, repeated, tag = "15")]
pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
#[prost(message, repeated, tag = "16")]
pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
/// Read GPU frequency info on Intel/AMD devices.
#[prost(uint64, repeated, packed = "false", tag = "17")]
pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
}
/// Nested message and enum types in `SysStats`.
pub mod sys_stats {
/// Counters from /proc/meminfo. Values are in KB.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MeminfoValue {
#[prost(enumeration = "super::MeminfoCounters", optional, tag = "1")]
pub key: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub value: ::core::option::Option<u64>,
}
/// Counter from /proc/vmstat. Units are often pages, not KB.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct VmstatValue {
#[prost(enumeration = "super::VmstatCounters", optional, tag = "1")]
pub key: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub value: ::core::option::Option<u64>,
}
/// Times in each mode, since boot. Unit: nanoseconds.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CpuTimes {
#[prost(uint32, optional, tag = "1")]
pub cpu_id: ::core::option::Option<u32>,
/// Time spent in user mode.
#[prost(uint64, optional, tag = "2")]
pub user_ns: ::core::option::Option<u64>,
/// Time spent in user mode (low prio).
#[prost(uint64, optional, tag = "3")]
pub user_nice_ns: ::core::option::Option<u64>,
/// Time spent in system mode.
#[prost(uint64, optional, tag = "4")]
pub system_mode_ns: ::core::option::Option<u64>,
/// Time spent in the idle task.
#[prost(uint64, optional, tag = "5")]
pub idle_ns: ::core::option::Option<u64>,
/// Time spent waiting for I/O.
#[prost(uint64, optional, tag = "6")]
pub io_wait_ns: ::core::option::Option<u64>,
/// Time spent servicing interrupts.
#[prost(uint64, optional, tag = "7")]
pub irq_ns: ::core::option::Option<u64>,
/// Time spent servicing softirqs.
#[prost(uint64, optional, tag = "8")]
pub softirq_ns: ::core::option::Option<u64>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct InterruptCount {
#[prost(int32, optional, tag = "1")]
pub irq: ::core::option::Option<i32>,
#[prost(uint64, optional, tag = "2")]
pub count: ::core::option::Option<u64>,
}
/// Frequencies for /sys/class/devfreq/ entries in kHz.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DevfreqValue {
#[prost(string, optional, tag = "1")]
pub key: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub value: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BuddyInfo {
#[prost(string, optional, tag = "1")]
pub node: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub zone: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint32, repeated, packed = "false", tag = "3")]
pub order_pages: ::prost::alloc::vec::Vec<u32>,
}
/// Counters from /proc/diskstats.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DiskStat {
#[prost(string, optional, tag = "1")]
pub device_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub read_sectors: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "3")]
pub read_time_ms: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "4")]
pub write_sectors: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "5")]
pub write_time_ms: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "6")]
pub discard_sectors: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "7")]
pub discard_time_ms: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "8")]
pub flush_count: ::core::option::Option<u64>,
#[prost(uint64, optional, tag = "9")]
pub flush_time_ms: ::core::option::Option<u64>,
}
/// Reading from /proc/pressure/*.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PsiSample {
#[prost(enumeration = "psi_sample::PsiResource", optional, tag = "1")]
pub resource: ::core::option::Option<i32>,
/// Total absolute stall time (in nanos) for a given resource.
/// While PSI readings are in micros, we store in nanos for consistency with
/// most other time-based counters.
#[prost(uint64, optional, tag = "2")]
pub total_ns: ::core::option::Option<u64>,
}
/// Nested message and enum types in `PsiSample`.
pub mod psi_sample {
/// Type of resource that may have exhibited pressure stalls.
/// * _SOME indicates some resource tasks stalled.
/// * _FULL indicates all non-idle resource tasks stalled simultaneously.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum PsiResource {
Unspecified = 0,
CpuSome = 1,
CpuFull = 2,
IoSome = 3,
IoFull = 4,
MemorySome = 5,
MemoryFull = 6,
}
impl PsiResource {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
Self::CpuSome => "PSI_RESOURCE_CPU_SOME",
Self::CpuFull => "PSI_RESOURCE_CPU_FULL",
Self::IoSome => "PSI_RESOURCE_IO_SOME",
Self::IoFull => "PSI_RESOURCE_IO_FULL",
Self::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
Self::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PSI_RESOURCE_UNSPECIFIED" => Some(Self::Unspecified),
"PSI_RESOURCE_CPU_SOME" => Some(Self::CpuSome),
"PSI_RESOURCE_CPU_FULL" => Some(Self::CpuFull),
"PSI_RESOURCE_IO_SOME" => Some(Self::IoSome),
"PSI_RESOURCE_IO_FULL" => Some(Self::IoFull),
"PSI_RESOURCE_MEMORY_SOME" => Some(Self::MemorySome),
"PSI_RESOURCE_MEMORY_FULL" => Some(Self::MemoryFull),
_ => None,
}
}
}
}
/// Reading from /sys/class/thermal/*.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ThermalZone {
#[prost(string, optional, tag = "1")]
pub name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub temp: ::core::option::Option<u64>,
#[prost(string, optional, tag = "3")]
pub r#type: ::core::option::Option<::prost::alloc::string::String>,
}
/// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CpuIdleStateEntry {
/// Name of the idle state, e.g. C1-C10
#[prost(string, optional, tag = "1")]
pub state: ::core::option::Option<::prost::alloc::string::String>,
#[prost(uint64, optional, tag = "2")]
pub duration_us: ::core::option::Option<u64>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CpuIdleState {
#[prost(uint32, optional, tag = "1")]
pub cpu_id: ::core::option::Option<u32>,
#[prost(message, repeated, tag = "2")]
pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Utsname {
#[prost(string, optional, tag = "1")]
pub sysname: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub version: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub release: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "4")]
pub machine: ::core::option::Option<::prost::alloc::string::String>,
}
/// Next id: 15;
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SystemInfo {
#[prost(message, optional, tag = "1")]
pub utsname: ::core::option::Option<Utsname>,
#[prost(string, optional, tag = "2")]
pub android_build_fingerprint: ::core::option::Option<
::prost::alloc::string::String,
>,
/// The manufacturer of the product/hardware.
/// Source : "ro.product.manufacturer"
/// Introduced after Android W in Nov 2024 and is not supported on older
/// versions.
#[prost(string, optional, tag = "14")]
pub android_device_manufacturer: ::core::option::Option<
::prost::alloc::string::String,
>,
/// The SoC model from which trace is collected
#[prost(string, optional, tag = "9")]
pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
/// The guest SoC model from which trace is collected in case of VMs
#[prost(string, optional, tag = "13")]
pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
/// The hardware reversion from android device
#[prost(string, optional, tag = "10")]
pub android_hardware_revision: ::core::option::Option<
::prost::alloc::string::String,
>,
/// The storage component from android_device. This field has been introduced
/// after Android W in Aug 2024 and is not supported on older versions.
#[prost(string, optional, tag = "11")]
pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
/// The RAM component information from android device. This field has been
/// introduced after Android W in Aug 2024 and is not supported on older
/// versions.
#[prost(string, optional, tag = "12")]
pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
/// The version of traced (the same returned by `traced --version`).
/// This is a human readable string with and its format varies depending on
/// the build system and the repo (standalone vs AOSP).
/// This is intended for human debugging only.
#[prost(string, optional, tag = "4")]
pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
/// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
/// Introduced in Android T.
#[prost(uint64, optional, tag = "5")]
pub android_sdk_version: ::core::option::Option<u64>,
/// Kernel page size - sysconf(_SC_PAGESIZE).
#[prost(uint32, optional, tag = "6")]
pub page_size: ::core::option::Option<u32>,
/// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
/// Might be different to the number of online cpus.
/// Introduced in perfetto v44.
#[prost(uint32, optional, tag = "8")]
pub num_cpus: ::core::option::Option<u32>,
/// The timezone offset from UTC, as per strftime("%z"), in minutes.
/// Introduced in v38 / Android V.
#[prost(int32, optional, tag = "7")]
pub timezone_off_mins: ::core::option::Option<i32>,
/// Ticks per second - sysconf(_SC_CLK_TCK).
/// Not serialised as of perfetto v44.
#[prost(int64, optional, tag = "3")]
pub hz: ::core::option::Option<i64>,
}
/// Information about CPUs from procfs and sysfs.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CpuInfo {
/// Describes available CPUs, one entry per CPU.
#[prost(message, repeated, tag = "1")]
pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
}
/// Nested message and enum types in `CpuInfo`.
pub mod cpu_info {
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ArmCpuIdentifier {
/// Implementer code
#[prost(uint32, optional, tag = "1")]
pub implementer: ::core::option::Option<u32>,
/// Architecture code
#[prost(uint32, optional, tag = "2")]
pub architecture: ::core::option::Option<u32>,
/// CPU variant
#[prost(uint32, optional, tag = "3")]
pub variant: ::core::option::Option<u32>,
/// CPU part
#[prost(uint32, optional, tag = "4")]
pub part: ::core::option::Option<u32>,
/// CPU revision
#[prost(uint32, optional, tag = "5")]
pub revision: ::core::option::Option<u32>,
}
/// Information about a single CPU.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Cpu {
/// Value of "Processor" field from /proc/cpuinfo for this CPU.
/// Example: "AArch64 Processor rev 12 (aarch64)"
#[prost(string, optional, tag = "1")]
pub processor: ::core::option::Option<::prost::alloc::string::String>,
/// Frequencies from
/// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
/// where X is the index of this CPU.
#[prost(uint32, repeated, packed = "false", tag = "2")]
pub frequencies: ::prost::alloc::vec::Vec<u32>,
/// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
/// the index of this CPU.
#[prost(uint32, optional, tag = "3")]
pub capacity: ::core::option::Option<u32>,
/// Code to identify the CPU
#[prost(oneof = "cpu::Identifier", tags = "4")]
pub identifier: ::core::option::Option<cpu::Identifier>,
}
/// Nested message and enum types in `Cpu`.
pub mod cpu {
/// Code to identify the CPU
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum Identifier {
#[prost(message, tag = "4")]
ArmIdentifier(super::ArmCpuIdentifier),
}
}
}
/// Event used by testing code.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TestEvent {
/// Arbitrary string used in tests.
#[prost(string, optional, tag = "1")]
pub str: ::core::option::Option<::prost::alloc::string::String>,
/// The current value of the random number sequence used in tests.
#[prost(uint32, optional, tag = "2")]
pub seq_value: ::core::option::Option<u32>,
/// Monotonically increased on each packet.
#[prost(uint64, optional, tag = "3")]
pub counter: ::core::option::Option<u64>,
/// No more packets should follow (from the current sequence).
#[prost(bool, optional, tag = "4")]
pub is_last: ::core::option::Option<bool>,
#[prost(message, optional, tag = "5")]
pub payload: ::core::option::Option<test_event::TestPayload>,
}
/// Nested message and enum types in `TestEvent`.
pub mod test_event {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TestPayload {
#[prost(string, repeated, tag = "1")]
pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(message, repeated, tag = "2")]
pub nested: ::prost::alloc::vec::Vec<TestPayload>,
#[prost(string, optional, tag = "4")]
pub single_string: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "5")]
pub single_int: ::core::option::Option<i32>,
#[prost(int32, repeated, packed = "false", tag = "6")]
pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
/// When 0 this is the bottom-most nested message.
#[prost(uint32, optional, tag = "3")]
pub remaining_nesting_depth: ::core::option::Option<u32>,
#[prost(message, repeated, tag = "7")]
pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
}
}
/// Default values for TracePacket fields that hold for a particular TraceWriter
/// packet sequence. This message contains a subset of the TracePacket fields
/// with matching IDs. When provided, these fields define the default values
/// that should be applied, at import time, to all TracePacket(s) with the same
/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
///
/// Should be reemitted whenever incremental state is cleared on the sequence.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TracePacketDefaults {
#[prost(uint32, optional, tag = "58")]
pub timestamp_clock_id: ::core::option::Option<u32>,
/// Default values for TrackEvents (e.g. default track).
#[prost(message, optional, tag = "11")]
pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
/// Defaults for perf profiler packets (PerfSample).
#[prost(message, optional, tag = "12")]
pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
/// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
/// V8RegexpCode)
#[prost(message, optional, tag = "99")]
pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
}
/// A random unique ID that identifies the trace.
/// This message has been introduced in v32. Prior to that, the UUID was
/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
/// This has been moved to a standalone packet to deal with new use-cases for
/// go/gapless-aot, where the same tracing session can be serialized several
/// times, in which case the UUID is changed on each snapshot and does not match
/// the one in the TraceConfig.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TraceUuid {
#[prost(int64, optional, tag = "1")]
pub msb: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "2")]
pub lsb: ::core::option::Option<i64>,
}
/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
/// usually by the process's main thread.
///
/// Next id: 9.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcessDescriptor {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(string, repeated, tag = "2")]
pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, optional, tag = "6")]
pub process_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "5")]
pub process_priority: ::core::option::Option<i32>,
/// Process start time in nanoseconds.
/// The timestamp refers to the trace clock by default. Other clock IDs
/// provided in TracePacket are not supported.
#[prost(int64, optional, tag = "7")]
pub start_timestamp_ns: ::core::option::Option<i64>,
#[prost(enumeration = "process_descriptor::ChromeProcessType", optional, tag = "4")]
pub chrome_process_type: ::core::option::Option<i32>,
/// To support old UI. New UI should determine default sorting by process_type.
#[prost(int32, optional, tag = "3")]
pub legacy_sort_index: ::core::option::Option<i32>,
/// Labels can be used to further describe properties of the work performed by
/// the process. For example, these can be used by Chrome renderer process to
/// provide titles of frames being rendered.
#[prost(string, repeated, tag = "8")]
pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
/// Nested message and enum types in `ProcessDescriptor`.
pub mod process_descriptor {
/// See chromium's content::ProcessType.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum ChromeProcessType {
ProcessUnspecified = 0,
ProcessBrowser = 1,
ProcessRenderer = 2,
ProcessUtility = 3,
ProcessZygote = 4,
ProcessSandboxHelper = 5,
ProcessGpu = 6,
ProcessPpapiPlugin = 7,
ProcessPpapiBroker = 8,
}
impl ChromeProcessType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ProcessUnspecified => "PROCESS_UNSPECIFIED",
Self::ProcessBrowser => "PROCESS_BROWSER",
Self::ProcessRenderer => "PROCESS_RENDERER",
Self::ProcessUtility => "PROCESS_UTILITY",
Self::ProcessZygote => "PROCESS_ZYGOTE",
Self::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
Self::ProcessGpu => "PROCESS_GPU",
Self::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
Self::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PROCESS_UNSPECIFIED" => Some(Self::ProcessUnspecified),
"PROCESS_BROWSER" => Some(Self::ProcessBrowser),
"PROCESS_RENDERER" => Some(Self::ProcessRenderer),
"PROCESS_UTILITY" => Some(Self::ProcessUtility),
"PROCESS_ZYGOTE" => Some(Self::ProcessZygote),
"PROCESS_SANDBOX_HELPER" => Some(Self::ProcessSandboxHelper),
"PROCESS_GPU" => Some(Self::ProcessGpu),
"PROCESS_PPAPI_PLUGIN" => Some(Self::ProcessPpapiPlugin),
"PROCESS_PPAPI_BROKER" => Some(Self::ProcessPpapiBroker),
_ => None,
}
}
}
}
/// This message specifies the "range of interest" for track events. With the
/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
/// Trace Processor drops track events outside of this range.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TrackEventRangeOfInterest {
#[prost(int64, optional, tag = "1")]
pub start_us: ::core::option::Option<i64>,
}
/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
/// usually by the thread's trace writer.
///
/// Next id: 9.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ThreadDescriptor {
#[prost(int32, optional, tag = "1")]
pub pid: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub tid: ::core::option::Option<i32>,
#[prost(string, optional, tag = "5")]
pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(enumeration = "thread_descriptor::ChromeThreadType", optional, tag = "4")]
pub chrome_thread_type: ::core::option::Option<i32>,
/// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
/// and timestamp_clock_id fields instead.
#[prost(int64, optional, tag = "6")]
pub reference_timestamp_us: ::core::option::Option<i64>,
/// Absolute reference values. Clock values in subsequent TrackEvents can be
/// encoded accumulatively and relative to these. This reduces their var-int
/// encoding size.
/// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
#[prost(int64, optional, tag = "7")]
pub reference_thread_time_us: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "8")]
pub reference_thread_instruction_count: ::core::option::Option<i64>,
/// To support old UI. New UI should determine default sorting by thread_type.
#[prost(int32, optional, tag = "3")]
pub legacy_sort_index: ::core::option::Option<i32>,
}
/// Nested message and enum types in `ThreadDescriptor`.
pub mod thread_descriptor {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum ChromeThreadType {
ChromeThreadUnspecified = 0,
ChromeThreadMain = 1,
ChromeThreadIo = 2,
/// Scheduler:
ChromeThreadPoolBgWorker = 3,
ChromeThreadPoolFgWorker = 4,
ChromeThreadPoolFbBlocking = 5,
ChromeThreadPoolBgBlocking = 6,
ChromeThreadPoolService = 7,
/// Compositor:
ChromeThreadCompositor = 8,
ChromeThreadVizCompositor = 9,
ChromeThreadCompositorWorker = 10,
/// Renderer:
ChromeThreadServiceWorker = 11,
/// Tracing related threads:
ChromeThreadMemoryInfra = 50,
ChromeThreadSamplingProfiler = 51,
}
impl ChromeThreadType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
Self::ChromeThreadMain => "CHROME_THREAD_MAIN",
Self::ChromeThreadIo => "CHROME_THREAD_IO",
Self::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
Self::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
Self::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
Self::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
Self::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
Self::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
Self::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
Self::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
Self::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
Self::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
Self::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"CHROME_THREAD_UNSPECIFIED" => Some(Self::ChromeThreadUnspecified),
"CHROME_THREAD_MAIN" => Some(Self::ChromeThreadMain),
"CHROME_THREAD_IO" => Some(Self::ChromeThreadIo),
"CHROME_THREAD_POOL_BG_WORKER" => Some(Self::ChromeThreadPoolBgWorker),
"CHROME_THREAD_POOL_FG_WORKER" => Some(Self::ChromeThreadPoolFgWorker),
"CHROME_THREAD_POOL_FB_BLOCKING" => {
Some(Self::ChromeThreadPoolFbBlocking)
}
"CHROME_THREAD_POOL_BG_BLOCKING" => {
Some(Self::ChromeThreadPoolBgBlocking)
}
"CHROME_THREAD_POOL_SERVICE" => Some(Self::ChromeThreadPoolService),
"CHROME_THREAD_COMPOSITOR" => Some(Self::ChromeThreadCompositor),
"CHROME_THREAD_VIZ_COMPOSITOR" => Some(Self::ChromeThreadVizCompositor),
"CHROME_THREAD_COMPOSITOR_WORKER" => {
Some(Self::ChromeThreadCompositorWorker)
}
"CHROME_THREAD_SERVICE_WORKER" => Some(Self::ChromeThreadServiceWorker),
"CHROME_THREAD_MEMORY_INFRA" => Some(Self::ChromeThreadMemoryInfra),
"CHROME_THREAD_SAMPLING_PROFILER" => {
Some(Self::ChromeThreadSamplingProfiler)
}
_ => None,
}
}
}
}
/// Describes the attributes for a Chrome process. Must be paired with a
/// ProcessDescriptor in the same TrackDescriptor.
///
/// Next id: 6.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeProcessDescriptor {
#[prost(enumeration = "chrome_process_descriptor::ProcessType", optional, tag = "1")]
pub process_type: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "2")]
pub process_priority: ::core::option::Option<i32>,
/// To support old UI. New UI should determine default sorting by process_type.
#[prost(int32, optional, tag = "3")]
pub legacy_sort_index: ::core::option::Option<i32>,
/// Name of the hosting app for WebView. Used to match renderer processes to
/// their hosting apps.
#[prost(string, optional, tag = "4")]
pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
/// The ID to link crashes to trace.
/// Notes:
/// * The ID is per process. So, each trace may contain many IDs, and you need
/// to look for the ID from crashed process to find the crash report.
/// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
/// get an uploaded trace, since uploads could have failed.
/// * On the other hand, if there was a crash during the session and trace was
/// uploaded, it is very likely to find a crash report with the trace ID.
/// * This is not crash ID or trace ID. It is just a random 64-bit number
/// recorded in both traces and crashes. It is possible to have collisions,
/// though very rare.
#[prost(uint64, optional, tag = "5")]
pub crash_trace_id: ::core::option::Option<u64>,
}
/// Nested message and enum types in `ChromeProcessDescriptor`.
pub mod chrome_process_descriptor {
/// See chromium's content::ProcessType.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum ProcessType {
ProcessUnspecified = 0,
ProcessBrowser = 1,
ProcessRenderer = 2,
ProcessUtility = 3,
ProcessZygote = 4,
ProcessSandboxHelper = 5,
ProcessGpu = 6,
ProcessPpapiPlugin = 7,
ProcessPpapiBroker = 8,
ProcessServiceNetwork = 9,
ProcessServiceTracing = 10,
ProcessServiceStorage = 11,
ProcessServiceAudio = 12,
ProcessServiceDataDecoder = 13,
ProcessServiceUtilWin = 14,
ProcessServiceProxyResolver = 15,
ProcessServiceCdm = 16,
ProcessServiceVideoCapture = 17,
ProcessServiceUnzipper = 18,
ProcessServiceMirroring = 19,
ProcessServiceFilepatcher = 20,
ProcessServiceTts = 21,
ProcessServicePrinting = 22,
ProcessServiceQuarantine = 23,
ProcessServiceCrosLocalsearch = 24,
ProcessServiceCrosAssistantAudioDecoder = 25,
ProcessServiceFileutil = 26,
ProcessServicePrintcompositor = 27,
ProcessServicePaintpreview = 28,
ProcessServiceSpeechrecognition = 29,
ProcessServiceXrdevice = 30,
ProcessServiceReadicon = 31,
ProcessServiceLanguagedetection = 32,
ProcessServiceSharing = 33,
ProcessServiceMediaparser = 34,
ProcessServiceQrcodegenerator = 35,
ProcessServiceProfileimport = 36,
ProcessServiceIme = 37,
ProcessServiceRecording = 38,
ProcessServiceShapedetection = 39,
ProcessRendererExtension = 40,
ProcessServiceMediaFoundation = 41,
}
impl ProcessType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ProcessUnspecified => "PROCESS_UNSPECIFIED",
Self::ProcessBrowser => "PROCESS_BROWSER",
Self::ProcessRenderer => "PROCESS_RENDERER",
Self::ProcessUtility => "PROCESS_UTILITY",
Self::ProcessZygote => "PROCESS_ZYGOTE",
Self::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
Self::ProcessGpu => "PROCESS_GPU",
Self::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
Self::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
Self::ProcessServiceNetwork => "PROCESS_SERVICE_NETWORK",
Self::ProcessServiceTracing => "PROCESS_SERVICE_TRACING",
Self::ProcessServiceStorage => "PROCESS_SERVICE_STORAGE",
Self::ProcessServiceAudio => "PROCESS_SERVICE_AUDIO",
Self::ProcessServiceDataDecoder => "PROCESS_SERVICE_DATA_DECODER",
Self::ProcessServiceUtilWin => "PROCESS_SERVICE_UTIL_WIN",
Self::ProcessServiceProxyResolver => "PROCESS_SERVICE_PROXY_RESOLVER",
Self::ProcessServiceCdm => "PROCESS_SERVICE_CDM",
Self::ProcessServiceVideoCapture => "PROCESS_SERVICE_VIDEO_CAPTURE",
Self::ProcessServiceUnzipper => "PROCESS_SERVICE_UNZIPPER",
Self::ProcessServiceMirroring => "PROCESS_SERVICE_MIRRORING",
Self::ProcessServiceFilepatcher => "PROCESS_SERVICE_FILEPATCHER",
Self::ProcessServiceTts => "PROCESS_SERVICE_TTS",
Self::ProcessServicePrinting => "PROCESS_SERVICE_PRINTING",
Self::ProcessServiceQuarantine => "PROCESS_SERVICE_QUARANTINE",
Self::ProcessServiceCrosLocalsearch => "PROCESS_SERVICE_CROS_LOCALSEARCH",
Self::ProcessServiceCrosAssistantAudioDecoder => {
"PROCESS_SERVICE_CROS_ASSISTANT_AUDIO_DECODER"
}
Self::ProcessServiceFileutil => "PROCESS_SERVICE_FILEUTIL",
Self::ProcessServicePrintcompositor => "PROCESS_SERVICE_PRINTCOMPOSITOR",
Self::ProcessServicePaintpreview => "PROCESS_SERVICE_PAINTPREVIEW",
Self::ProcessServiceSpeechrecognition => {
"PROCESS_SERVICE_SPEECHRECOGNITION"
}
Self::ProcessServiceXrdevice => "PROCESS_SERVICE_XRDEVICE",
Self::ProcessServiceReadicon => "PROCESS_SERVICE_READICON",
Self::ProcessServiceLanguagedetection => {
"PROCESS_SERVICE_LANGUAGEDETECTION"
}
Self::ProcessServiceSharing => "PROCESS_SERVICE_SHARING",
Self::ProcessServiceMediaparser => "PROCESS_SERVICE_MEDIAPARSER",
Self::ProcessServiceQrcodegenerator => "PROCESS_SERVICE_QRCODEGENERATOR",
Self::ProcessServiceProfileimport => "PROCESS_SERVICE_PROFILEIMPORT",
Self::ProcessServiceIme => "PROCESS_SERVICE_IME",
Self::ProcessServiceRecording => "PROCESS_SERVICE_RECORDING",
Self::ProcessServiceShapedetection => "PROCESS_SERVICE_SHAPEDETECTION",
Self::ProcessRendererExtension => "PROCESS_RENDERER_EXTENSION",
Self::ProcessServiceMediaFoundation => "PROCESS_SERVICE_MEDIA_FOUNDATION",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PROCESS_UNSPECIFIED" => Some(Self::ProcessUnspecified),
"PROCESS_BROWSER" => Some(Self::ProcessBrowser),
"PROCESS_RENDERER" => Some(Self::ProcessRenderer),
"PROCESS_UTILITY" => Some(Self::ProcessUtility),
"PROCESS_ZYGOTE" => Some(Self::ProcessZygote),
"PROCESS_SANDBOX_HELPER" => Some(Self::ProcessSandboxHelper),
"PROCESS_GPU" => Some(Self::ProcessGpu),
"PROCESS_PPAPI_PLUGIN" => Some(Self::ProcessPpapiPlugin),
"PROCESS_PPAPI_BROKER" => Some(Self::ProcessPpapiBroker),
"PROCESS_SERVICE_NETWORK" => Some(Self::ProcessServiceNetwork),
"PROCESS_SERVICE_TRACING" => Some(Self::ProcessServiceTracing),
"PROCESS_SERVICE_STORAGE" => Some(Self::ProcessServiceStorage),
"PROCESS_SERVICE_AUDIO" => Some(Self::ProcessServiceAudio),
"PROCESS_SERVICE_DATA_DECODER" => Some(Self::ProcessServiceDataDecoder),
"PROCESS_SERVICE_UTIL_WIN" => Some(Self::ProcessServiceUtilWin),
"PROCESS_SERVICE_PROXY_RESOLVER" => {
Some(Self::ProcessServiceProxyResolver)
}
"PROCESS_SERVICE_CDM" => Some(Self::ProcessServiceCdm),
"PROCESS_SERVICE_VIDEO_CAPTURE" => Some(Self::ProcessServiceVideoCapture),
"PROCESS_SERVICE_UNZIPPER" => Some(Self::ProcessServiceUnzipper),
"PROCESS_SERVICE_MIRRORING" => Some(Self::ProcessServiceMirroring),
"PROCESS_SERVICE_FILEPATCHER" => Some(Self::ProcessServiceFilepatcher),
"PROCESS_SERVICE_TTS" => Some(Self::ProcessServiceTts),
"PROCESS_SERVICE_PRINTING" => Some(Self::ProcessServicePrinting),
"PROCESS_SERVICE_QUARANTINE" => Some(Self::ProcessServiceQuarantine),
"PROCESS_SERVICE_CROS_LOCALSEARCH" => {
Some(Self::ProcessServiceCrosLocalsearch)
}
"PROCESS_SERVICE_CROS_ASSISTANT_AUDIO_DECODER" => {
Some(Self::ProcessServiceCrosAssistantAudioDecoder)
}
"PROCESS_SERVICE_FILEUTIL" => Some(Self::ProcessServiceFileutil),
"PROCESS_SERVICE_PRINTCOMPOSITOR" => {
Some(Self::ProcessServicePrintcompositor)
}
"PROCESS_SERVICE_PAINTPREVIEW" => Some(Self::ProcessServicePaintpreview),
"PROCESS_SERVICE_SPEECHRECOGNITION" => {
Some(Self::ProcessServiceSpeechrecognition)
}
"PROCESS_SERVICE_XRDEVICE" => Some(Self::ProcessServiceXrdevice),
"PROCESS_SERVICE_READICON" => Some(Self::ProcessServiceReadicon),
"PROCESS_SERVICE_LANGUAGEDETECTION" => {
Some(Self::ProcessServiceLanguagedetection)
}
"PROCESS_SERVICE_SHARING" => Some(Self::ProcessServiceSharing),
"PROCESS_SERVICE_MEDIAPARSER" => Some(Self::ProcessServiceMediaparser),
"PROCESS_SERVICE_QRCODEGENERATOR" => {
Some(Self::ProcessServiceQrcodegenerator)
}
"PROCESS_SERVICE_PROFILEIMPORT" => {
Some(Self::ProcessServiceProfileimport)
}
"PROCESS_SERVICE_IME" => Some(Self::ProcessServiceIme),
"PROCESS_SERVICE_RECORDING" => Some(Self::ProcessServiceRecording),
"PROCESS_SERVICE_SHAPEDETECTION" => {
Some(Self::ProcessServiceShapedetection)
}
"PROCESS_RENDERER_EXTENSION" => Some(Self::ProcessRendererExtension),
"PROCESS_SERVICE_MEDIA_FOUNDATION" => {
Some(Self::ProcessServiceMediaFoundation)
}
_ => None,
}
}
}
}
/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
/// in the same TrackDescriptor.
///
/// Next id: 3.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ChromeThreadDescriptor {
#[prost(enumeration = "chrome_thread_descriptor::ThreadType", optional, tag = "1")]
pub thread_type: ::core::option::Option<i32>,
/// To support old UI. New UI should determine default sorting by thread_type.
#[prost(int32, optional, tag = "2")]
pub legacy_sort_index: ::core::option::Option<i32>,
}
/// Nested message and enum types in `ChromeThreadDescriptor`.
pub mod chrome_thread_descriptor {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum ThreadType {
ThreadUnspecified = 0,
ThreadMain = 1,
ThreadIo = 2,
ThreadPoolBgWorker = 3,
ThreadPoolFgWorker = 4,
ThreadPoolFgBlocking = 5,
ThreadPoolBgBlocking = 6,
ThreadPoolService = 7,
ThreadCompositor = 8,
ThreadVizCompositor = 9,
ThreadCompositorWorker = 10,
ThreadServiceWorker = 11,
ThreadNetworkService = 12,
ThreadChildIo = 13,
ThreadBrowserIo = 14,
ThreadBrowserMain = 15,
ThreadRendererMain = 16,
ThreadUtilityMain = 17,
ThreadGpuMain = 18,
ThreadCacheBlockfile = 19,
ThreadMedia = 20,
ThreadAudioOutputdevice = 21,
ThreadAudioInputdevice = 22,
ThreadGpuMemory = 23,
ThreadGpuVsync = 24,
ThreadDxaVideodecoder = 25,
ThreadBrowserWatchdog = 26,
ThreadWebrtcNetwork = 27,
ThreadWindowOwner = 28,
ThreadWebrtcSignaling = 29,
ThreadWebrtcWorker = 30,
ThreadPpapiMain = 31,
ThreadGpuWatchdog = 32,
ThreadSwapper = 33,
ThreadGamepadPolling = 34,
ThreadWebcrypto = 35,
ThreadDatabase = 36,
ThreadProxyresolver = 37,
ThreadDevtoolsadb = 38,
ThreadNetworkconfigwatcher = 39,
ThreadWasapiRender = 40,
ThreadLoaderLockSampler = 41,
ThreadMemoryInfra = 50,
ThreadSamplingProfiler = 51,
ThreadCompositorGpu = 52,
}
impl ThreadType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ThreadUnspecified => "THREAD_UNSPECIFIED",
Self::ThreadMain => "THREAD_MAIN",
Self::ThreadIo => "THREAD_IO",
Self::ThreadPoolBgWorker => "THREAD_POOL_BG_WORKER",
Self::ThreadPoolFgWorker => "THREAD_POOL_FG_WORKER",
Self::ThreadPoolFgBlocking => "THREAD_POOL_FG_BLOCKING",
Self::ThreadPoolBgBlocking => "THREAD_POOL_BG_BLOCKING",
Self::ThreadPoolService => "THREAD_POOL_SERVICE",
Self::ThreadCompositor => "THREAD_COMPOSITOR",
Self::ThreadVizCompositor => "THREAD_VIZ_COMPOSITOR",
Self::ThreadCompositorWorker => "THREAD_COMPOSITOR_WORKER",
Self::ThreadServiceWorker => "THREAD_SERVICE_WORKER",
Self::ThreadNetworkService => "THREAD_NETWORK_SERVICE",
Self::ThreadChildIo => "THREAD_CHILD_IO",
Self::ThreadBrowserIo => "THREAD_BROWSER_IO",
Self::ThreadBrowserMain => "THREAD_BROWSER_MAIN",
Self::ThreadRendererMain => "THREAD_RENDERER_MAIN",
Self::ThreadUtilityMain => "THREAD_UTILITY_MAIN",
Self::ThreadGpuMain => "THREAD_GPU_MAIN",
Self::ThreadCacheBlockfile => "THREAD_CACHE_BLOCKFILE",
Self::ThreadMedia => "THREAD_MEDIA",
Self::ThreadAudioOutputdevice => "THREAD_AUDIO_OUTPUTDEVICE",
Self::ThreadAudioInputdevice => "THREAD_AUDIO_INPUTDEVICE",
Self::ThreadGpuMemory => "THREAD_GPU_MEMORY",
Self::ThreadGpuVsync => "THREAD_GPU_VSYNC",
Self::ThreadDxaVideodecoder => "THREAD_DXA_VIDEODECODER",
Self::ThreadBrowserWatchdog => "THREAD_BROWSER_WATCHDOG",
Self::ThreadWebrtcNetwork => "THREAD_WEBRTC_NETWORK",
Self::ThreadWindowOwner => "THREAD_WINDOW_OWNER",
Self::ThreadWebrtcSignaling => "THREAD_WEBRTC_SIGNALING",
Self::ThreadWebrtcWorker => "THREAD_WEBRTC_WORKER",
Self::ThreadPpapiMain => "THREAD_PPAPI_MAIN",
Self::ThreadGpuWatchdog => "THREAD_GPU_WATCHDOG",
Self::ThreadSwapper => "THREAD_SWAPPER",
Self::ThreadGamepadPolling => "THREAD_GAMEPAD_POLLING",
Self::ThreadWebcrypto => "THREAD_WEBCRYPTO",
Self::ThreadDatabase => "THREAD_DATABASE",
Self::ThreadProxyresolver => "THREAD_PROXYRESOLVER",
Self::ThreadDevtoolsadb => "THREAD_DEVTOOLSADB",
Self::ThreadNetworkconfigwatcher => "THREAD_NETWORKCONFIGWATCHER",
Self::ThreadWasapiRender => "THREAD_WASAPI_RENDER",
Self::ThreadLoaderLockSampler => "THREAD_LOADER_LOCK_SAMPLER",
Self::ThreadMemoryInfra => "THREAD_MEMORY_INFRA",
Self::ThreadSamplingProfiler => "THREAD_SAMPLING_PROFILER",
Self::ThreadCompositorGpu => "THREAD_COMPOSITOR_GPU",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"THREAD_UNSPECIFIED" => Some(Self::ThreadUnspecified),
"THREAD_MAIN" => Some(Self::ThreadMain),
"THREAD_IO" => Some(Self::ThreadIo),
"THREAD_POOL_BG_WORKER" => Some(Self::ThreadPoolBgWorker),
"THREAD_POOL_FG_WORKER" => Some(Self::ThreadPoolFgWorker),
"THREAD_POOL_FG_BLOCKING" => Some(Self::ThreadPoolFgBlocking),
"THREAD_POOL_BG_BLOCKING" => Some(Self::ThreadPoolBgBlocking),
"THREAD_POOL_SERVICE" => Some(Self::ThreadPoolService),
"THREAD_COMPOSITOR" => Some(Self::ThreadCompositor),
"THREAD_VIZ_COMPOSITOR" => Some(Self::ThreadVizCompositor),
"THREAD_COMPOSITOR_WORKER" => Some(Self::ThreadCompositorWorker),
"THREAD_SERVICE_WORKER" => Some(Self::ThreadServiceWorker),
"THREAD_NETWORK_SERVICE" => Some(Self::ThreadNetworkService),
"THREAD_CHILD_IO" => Some(Self::ThreadChildIo),
"THREAD_BROWSER_IO" => Some(Self::ThreadBrowserIo),
"THREAD_BROWSER_MAIN" => Some(Self::ThreadBrowserMain),
"THREAD_RENDERER_MAIN" => Some(Self::ThreadRendererMain),
"THREAD_UTILITY_MAIN" => Some(Self::ThreadUtilityMain),
"THREAD_GPU_MAIN" => Some(Self::ThreadGpuMain),
"THREAD_CACHE_BLOCKFILE" => Some(Self::ThreadCacheBlockfile),
"THREAD_MEDIA" => Some(Self::ThreadMedia),
"THREAD_AUDIO_OUTPUTDEVICE" => Some(Self::ThreadAudioOutputdevice),
"THREAD_AUDIO_INPUTDEVICE" => Some(Self::ThreadAudioInputdevice),
"THREAD_GPU_MEMORY" => Some(Self::ThreadGpuMemory),
"THREAD_GPU_VSYNC" => Some(Self::ThreadGpuVsync),
"THREAD_DXA_VIDEODECODER" => Some(Self::ThreadDxaVideodecoder),
"THREAD_BROWSER_WATCHDOG" => Some(Self::ThreadBrowserWatchdog),
"THREAD_WEBRTC_NETWORK" => Some(Self::ThreadWebrtcNetwork),
"THREAD_WINDOW_OWNER" => Some(Self::ThreadWindowOwner),
"THREAD_WEBRTC_SIGNALING" => Some(Self::ThreadWebrtcSignaling),
"THREAD_WEBRTC_WORKER" => Some(Self::ThreadWebrtcWorker),
"THREAD_PPAPI_MAIN" => Some(Self::ThreadPpapiMain),
"THREAD_GPU_WATCHDOG" => Some(Self::ThreadGpuWatchdog),
"THREAD_SWAPPER" => Some(Self::ThreadSwapper),
"THREAD_GAMEPAD_POLLING" => Some(Self::ThreadGamepadPolling),
"THREAD_WEBCRYPTO" => Some(Self::ThreadWebcrypto),
"THREAD_DATABASE" => Some(Self::ThreadDatabase),
"THREAD_PROXYRESOLVER" => Some(Self::ThreadProxyresolver),
"THREAD_DEVTOOLSADB" => Some(Self::ThreadDevtoolsadb),
"THREAD_NETWORKCONFIGWATCHER" => Some(Self::ThreadNetworkconfigwatcher),
"THREAD_WASAPI_RENDER" => Some(Self::ThreadWasapiRender),
"THREAD_LOADER_LOCK_SAMPLER" => Some(Self::ThreadLoaderLockSampler),
"THREAD_MEMORY_INFRA" => Some(Self::ThreadMemoryInfra),
"THREAD_SAMPLING_PROFILER" => Some(Self::ThreadSamplingProfiler),
"THREAD_COMPOSITOR_GPU" => Some(Self::ThreadCompositorGpu),
_ => None,
}
}
}
}
/// Defines properties of a counter track, e.g. for built-in counters (thread
/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
/// a specific app component).
///
/// Counter tracks only support TYPE_COUNTER track events, which specify new
/// values for the counter. For counters that require per-slice values, counter
/// values can instead be provided in a more efficient encoding via TrackEvent's
/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
/// slice-type events cannot be emitted onto a counter track.
///
/// Values for counters that are only emitted on a single packet sequence can
/// optionally be delta-encoded, see |is_incremental|.
///
/// Next id: 7.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CounterDescriptor {
/// For built-in counters (e.g. thread time). Custom user-specified counters
/// (e.g. those emitted by TRACE_COUNTER macros of the client library)
/// shouldn't set this, and instead provide a counter name via TrackDescriptor.
#[prost(enumeration = "counter_descriptor::BuiltinCounterType", optional, tag = "1")]
pub r#type: ::core::option::Option<i32>,
/// Names of categories of the counter (usually for user-specified counters).
/// In the client library, categories are a way to turn groups of individual
/// counters (or events) on or off.
#[prost(string, repeated, tag = "2")]
pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
/// Type of the counter's values. Built-in counters imply a value for this
/// field.
#[prost(enumeration = "counter_descriptor::Unit", optional, tag = "3")]
pub unit: ::core::option::Option<i32>,
/// In order to use a unit not defined as a part of |Unit|, a free-form unit
/// name can be used instead.
#[prost(string, optional, tag = "6")]
pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
/// Multiplication factor of this counter's values, e.g. to supply
/// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
#[prost(int64, optional, tag = "4")]
pub unit_multiplier: ::core::option::Option<i64>,
/// Whether values for this counter are provided as delta values. Only
/// supported for counters that are emitted on a single packet-sequence (e.g.
/// thread time). Counter values in subsequent packets on the current packet
/// sequence will be interpreted as delta values from the sequence's most
/// recent value for the counter. When incremental state is cleared, the
/// counter value is considered to be reset to 0. Thus, the first value after
/// incremental state is cleared is effectively an absolute value.
#[prost(bool, optional, tag = "5")]
pub is_incremental: ::core::option::Option<bool>,
}
/// Nested message and enum types in `CounterDescriptor`.
pub mod counter_descriptor {
/// Built-in counters, usually with special meaning in the client library,
/// trace processor, legacy JSON format, or UI. Trace processor will infer a
/// track name from the enum value if none is provided in TrackDescriptor.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum BuiltinCounterType {
CounterUnspecified = 0,
/// implies UNIT_TIME_NS.
CounterThreadTimeNs = 1,
/// implies UNIT_COUNT.
CounterThreadInstructionCount = 2,
}
impl BuiltinCounterType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::CounterUnspecified => "COUNTER_UNSPECIFIED",
Self::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
Self::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"COUNTER_UNSPECIFIED" => Some(Self::CounterUnspecified),
"COUNTER_THREAD_TIME_NS" => Some(Self::CounterThreadTimeNs),
"COUNTER_THREAD_INSTRUCTION_COUNT" => {
Some(Self::CounterThreadInstructionCount)
}
_ => None,
}
}
}
/// Type of the values for the counters - to supply lower granularity units,
/// see also |unit_multiplier|.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum Unit {
Unspecified = 0,
TimeNs = 1,
Count = 2,
/// TODO(eseckler): Support more units as necessary.
SizeBytes = 3,
}
impl Unit {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "UNIT_UNSPECIFIED",
Self::TimeNs => "UNIT_TIME_NS",
Self::Count => "UNIT_COUNT",
Self::SizeBytes => "UNIT_SIZE_BYTES",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNIT_UNSPECIFIED" => Some(Self::Unspecified),
"UNIT_TIME_NS" => Some(Self::TimeNs),
"UNIT_COUNT" => Some(Self::Count),
"UNIT_SIZE_BYTES" => Some(Self::SizeBytes),
_ => None,
}
}
}
}
/// Defines a track for TrackEvents. Slices and instant events on the same track
/// will be nested based on their timestamps, see TrackEvent::Type.
///
/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
/// when the ring buffer wraps, it should be reemitted whenever incremental state
/// is cleared.
///
/// As a fallback, TrackEvents emitted without an explicit track association will
/// be associated with an implicit trace-global track (uuid = 0), see also
/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
/// TrackDescriptor for this implicit track.
///
/// Next id: 14.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TrackDescriptor {
/// Unique ID that identifies this track. This ID is global to the whole trace.
/// Producers should ensure that it is unlikely to clash with IDs emitted by
/// other producers. A value of 0 denotes the implicit trace-global track.
///
/// For example, legacy TRACE_EVENT macros may use a hash involving the async
/// event id + id_scope, pid, and/or tid to compute this ID.
#[prost(uint64, optional, tag = "1")]
pub uuid: ::core::option::Option<u64>,
/// A parent track reference can be used to describe relationships between
/// tracks. For example, to define an asynchronous track which is scoped to a
/// specific process, specify the uuid for that process's process track here.
/// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
/// thread, specify the uuid for that thread's thread track here.
#[prost(uint64, optional, tag = "5")]
pub parent_uuid: ::core::option::Option<u64>,
/// Associate the track with a process, making it the process-global track.
/// There should only be one such track per process (usually for instant
/// events; trace processor uses this fact to detect pid reuse). If you need
/// more (e.g. for asynchronous events), create child tracks using parent_uuid.
///
/// Trace processor will merge events on a process track with slice-type events
/// from other sources (e.g. ftrace) for the same process into a single
/// timeline view.
#[prost(message, optional, tag = "3")]
pub process: ::core::option::Option<ProcessDescriptor>,
#[prost(message, optional, tag = "6")]
pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
/// Associate the track with a thread, indicating that the track's events
/// describe synchronous code execution on the thread. There should only be one
/// such track per thread (trace processor uses this fact to detect tid reuse).
///
/// Trace processor will merge events on a thread track with slice-type events
/// from other sources (e.g. ftrace) for the same thread into a single timeline
/// view.
#[prost(message, optional, tag = "4")]
pub thread: ::core::option::Option<ThreadDescriptor>,
#[prost(message, optional, tag = "7")]
pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
/// Descriptor for a counter track. If set, the track will only support
/// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
/// |extra_counter_values|).
#[prost(message, optional, tag = "8")]
pub counter: ::core::option::Option<CounterDescriptor>,
/// If true, forces Trace Processor to use separate tracks for track events
/// and system events for the same thread.
/// Track events timestamps in Chrome have microsecond resolution, while
/// system events use nanoseconds. It results in broken event nesting when
/// track events and system events share a track.
#[prost(bool, optional, tag = "9")]
pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
#[prost(enumeration = "track_descriptor::ChildTracksOrdering", optional, tag = "11")]
pub child_ordering: ::core::option::Option<i32>,
/// An opaque value which allows specifying how two sibling tracks should be
/// ordered relative to each other: tracks with lower ranks will appear before
/// tracks with higher ranks. An unspecified rank will be treated as a rank of
/// 0.
#[prost(int32, optional, tag = "12")]
pub sibling_order_rank: ::core::option::Option<i32>,
/// Name of the track. Optional - if unspecified, it may be derived from the
/// process/thread name (process/thread tracks), the first event's name (async
/// tracks), or counter name (counter tracks).
#[prost(oneof = "track_descriptor::StaticOrDynamicName", tags = "2, 10, 13")]
pub static_or_dynamic_name: ::core::option::Option<
track_descriptor::StaticOrDynamicName,
>,
}
/// Nested message and enum types in `TrackDescriptor`.
pub mod track_descriptor {
/// Specifies how the UI should display child tracks of this track (i.e. tracks
/// where `parent_uuid` is specified to this track `uuid`). Note that this
/// value is simply a *hint* to the UI: the UI is not guarnateed to respect
/// this if it has a good reason not to do so.
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum ChildTracksOrdering {
/// The default ordering, with no bearing on how the UI will visualise the
/// tracks.
Unknown = 0,
/// Order tracks by `name` or `static_name` depending on which one has been
/// specified.
Lexicographic = 1,
/// Order tracks by the first `ts` event in a track.
Chronological = 2,
/// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
/// the lower values will be shown before tracks with higher values. Tracks
/// with no value will be treated as having 0 rank.
Explicit = 3,
}
impl ChildTracksOrdering {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "UNKNOWN",
Self::Lexicographic => "LEXICOGRAPHIC",
Self::Chronological => "CHRONOLOGICAL",
Self::Explicit => "EXPLICIT",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNKNOWN" => Some(Self::Unknown),
"LEXICOGRAPHIC" => Some(Self::Lexicographic),
"CHRONOLOGICAL" => Some(Self::Chronological),
"EXPLICIT" => Some(Self::Explicit),
_ => None,
}
}
}
/// Name of the track. Optional - if unspecified, it may be derived from the
/// process/thread name (process/thread tracks), the first event's name (async
/// tracks), or counter name (counter tracks).
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum StaticOrDynamicName {
#[prost(string, tag = "2")]
Name(::prost::alloc::string::String),
/// This field is only set by the SDK when perfetto::StaticString is
/// provided.
#[prost(string, tag = "10")]
StaticName(::prost::alloc::string::String),
/// Equivalent to name, used just to mark that the data is coming from
/// android.os.Trace.
#[prost(string, tag = "13")]
AtraceName(::prost::alloc::string::String),
}
}
/// Translation rules for the trace processor.
/// See the comments for each rule type for specific meaning.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TranslationTable {
#[prost(oneof = "translation_table::Table", tags = "1, 2, 3, 4, 5")]
pub table: ::core::option::Option<translation_table::Table>,
}
/// Nested message and enum types in `TranslationTable`.
pub mod translation_table {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Table {
#[prost(message, tag = "1")]
ChromeHistogram(super::ChromeHistorgramTranslationTable),
#[prost(message, tag = "2")]
ChromeUserEvent(super::ChromeUserEventTranslationTable),
#[prost(message, tag = "3")]
ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
#[prost(message, tag = "4")]
SliceName(super::SliceNameTranslationTable),
#[prost(message, tag = "5")]
ProcessTrackName(super::ProcessTrackNameTranslationTable),
}
}
/// Chrome histogram sample hash -> name translation rules.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeHistorgramTranslationTable {
#[prost(map = "uint64, string", tag = "1")]
pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
}
/// Chrome user event action hash -> name translation rules.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromeUserEventTranslationTable {
#[prost(map = "uint64, string", tag = "1")]
pub action_hash_to_name: ::std::collections::HashMap<
u64,
::prost::alloc::string::String,
>,
}
/// Chrome performance mark translation rules.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ChromePerformanceMarkTranslationTable {
#[prost(map = "uint32, string", tag = "1")]
pub site_hash_to_name: ::std::collections::HashMap<
u32,
::prost::alloc::string::String,
>,
#[prost(map = "uint32, string", tag = "2")]
pub mark_hash_to_name: ::std::collections::HashMap<
u32,
::prost::alloc::string::String,
>,
}
/// Raw -> deobfuscated slice name translation rules.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SliceNameTranslationTable {
#[prost(map = "string, string", tag = "1")]
pub raw_to_deobfuscated_name: ::std::collections::HashMap<
::prost::alloc::string::String,
::prost::alloc::string::String,
>,
}
/// Raw -> deobfuscated process track name translation rules.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProcessTrackNameTranslationTable {
#[prost(map = "string, string", tag = "1")]
pub raw_to_deobfuscated_name: ::std::collections::HashMap<
::prost::alloc::string::String,
::prost::alloc::string::String,
>,
}
/// When a TracingSession receives a trigger it records the boot time nanoseconds
/// in the TracePacket's timestamp field as well as the name of the producer that
/// triggered it. We emit this data so filtering can be done on triggers received
/// in the trace.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Trigger {
/// Name of the trigger which was received.
#[prost(string, optional, tag = "1")]
pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
/// The actual producer that activated |trigger|.
#[prost(string, optional, tag = "2")]
pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
/// The verified UID of the producer.
#[prost(int32, optional, tag = "3")]
pub trusted_producer_uid: ::core::option::Option<i32>,
}
/// Common state for UIs visualizing Perfetto traces.
/// This message can be appended as a TracePacket by UIs to save the
/// visible state (e.g. scroll position/zoom state) for future opening
/// of the trace.
/// Design doc: go/trace-ui-state.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UiState {
/// The start and end bounds of the viewport of the UI in nanoseconds.
///
/// This is the absolute time associated to slices and other events in
/// trace processor tables (i.e. the |ts| column of most tables)
#[prost(int64, optional, tag = "1")]
pub timeline_start_ts: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "2")]
pub timeline_end_ts: ::core::option::Option<i64>,
#[prost(message, optional, tag = "3")]
pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
}
/// Nested message and enum types in `UiState`.
pub mod ui_state {
/// Indicates that the given process should be highlighted by the UI.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HighlightProcess {
#[prost(oneof = "highlight_process::Selector", tags = "1, 2")]
pub selector: ::core::option::Option<highlight_process::Selector>,
}
/// Nested message and enum types in `HighlightProcess`.
pub mod highlight_process {
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Selector {
/// The pid of the process to highlight. This is useful for UIs to focus
/// on tracks of a particular process in the trace.
///
/// If more than one process in a trace has the same pid, it is UI
/// implementation specific how the process to be focused will be
/// chosen.
#[prost(uint32, tag = "1")]
Pid(u32),
/// The command line of the process to highlight; for most Android apps,
/// this is the package name of the app. This is useful for UIs to focus
/// on a particular app in the trace.
///
/// If more than one process hasthe same cmdline, it is UI implementation
/// specific how the process to be focused will be chosen.
#[prost(string, tag = "2")]
Cmdline(::prost::alloc::string::String),
}
}
}
/// TracePacket is the root object of a Perfetto trace.
/// A Perfetto trace is a linear sequence of TracePacket(s).
///
/// The tracing service guarantees that all TracePacket(s) written by a given
/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
/// to the Consumer (or written into the trace file).
/// TracePacket(s) written by different TraceWriter(s), hence even different
/// data sources, can be seen in arbitrary order.
/// The consumer can re-establish a total order, if interested, using the packet
/// timestamps, after having synchronized the different clocks onto a global
/// clock.
///
/// The tracing service is agnostic of the content of TracePacket, with the
/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
/// the service itself.
///
/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
///
/// Next reserved id: 14 (up to 15).
/// Next id: 113.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TracePacket {
/// The timestamp of the TracePacket.
/// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
/// Android). It can be overridden using a different timestamp_clock_id.
/// The clock domain definition in ClockSnapshot can also override:
/// - The unit (default: 1ns).
/// - The absolute vs delta encoding (default: absolute timestamp).
#[prost(uint64, optional, tag = "8")]
pub timestamp: ::core::option::Option<u64>,
/// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
/// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
/// producer-defined clock id.
/// If unspecified and if no default per-sequence value has been provided via
/// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
#[prost(uint32, optional, tag = "58")]
pub timestamp_clock_id: ::core::option::Option<u32>,
/// Trusted process id of the producer which generated this packet, written by
/// the service.
#[prost(int32, optional, tag = "79")]
pub trusted_pid: ::core::option::Option<i32>,
/// Incrementally emitted interned data, valid only on the packet's sequence
/// (packets with the same |trusted_packet_sequence_id|). The writer will
/// usually emit new interned data in the same TracePacket that first refers to
/// it (since the last reset of interning state). It may also be emitted
/// proactively in advance of referring to them in later packets.
#[prost(message, optional, tag = "12")]
pub interned_data: ::core::option::Option<InternedData>,
#[prost(uint32, optional, tag = "13")]
pub sequence_flags: ::core::option::Option<u32>,
/// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
#[prost(bool, optional, tag = "41")]
pub incremental_state_cleared: ::core::option::Option<bool>,
/// Default values for fields of later TracePackets emitted on this packet's
/// sequence (TracePackets with the same |trusted_packet_sequence_id|).
/// It must be reemitted when incremental state is cleared (see
/// |incremental_state_cleared|).
/// Requires that any future packet emitted on the same sequence specifies
/// the SEQ_NEEDS_INCREMENTAL_STATE flag.
/// TracePacketDefaults always override the global defaults for any future
/// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
#[prost(message, optional, tag = "59")]
pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
/// Flag set by the service if, for the current packet sequence (see
/// |trusted_packet_sequence_id|), either:
/// * this is the first packet, or
/// * one or multiple packets were dropped since the last packet that the
/// consumer read from the sequence. This can happen if chunks in the trace
/// buffer are overridden before the consumer could read them when the trace
/// is configured in ring buffer mode.
///
/// When packet loss occurs, incrementally emitted data (including interned
/// data) on the sequence should be considered invalid up until the next packet
/// with SEQ_INCREMENTAL_STATE_CLEARED set.
#[prost(bool, optional, tag = "42")]
pub previous_packet_dropped: ::core::option::Option<bool>,
/// Flag set by a producer (starting from SDK v29) if, for the current packet
/// sequence (see |trusted_packet_sequence_id|), this is the first packet.
///
/// This flag can be used for distinguishing the two situations when
/// processing the trace:
/// 1. There are no prior events for the sequence because of data loss, e.g.
/// due to ring buffer wrapping.
/// 2. There are no prior events for the sequence because it didn't start
/// before this packet (= there's definitely no preceding data loss).
///
/// Given that older SDK versions do not support this flag, this flag not
/// being present for a particular sequence does not necessarily imply data
/// loss.
#[prost(bool, optional, tag = "87")]
pub first_packet_on_sequence: ::core::option::Option<bool>,
/// The machine ID for identifying trace packets in a multi-machine tracing
/// session. Is emitted by the tracing service for producers running on a
/// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
#[prost(uint32, optional, tag = "98")]
pub machine_id: ::core::option::Option<u32>,
#[prost(
oneof = "trace_packet::Data",
tags = "2, 9, 4, 5, 6, 7, 11, 89, 33, 34, 35, 37, 74, 75, 38, 40, 39, 45, 46, 109, 47, 48, 49, 51, 52, 53, 54, 56, 57, 62, 63, 65, 66, 67, 68, 69, 70, 71, 73, 76, 77, 78, 80, 81, 82, 83, 84, 86, 91, 55, 61, 64, 60, 43, 44, 1, 36, 50, 72, 88, 92, 90, 93, 94, 96, 97, 104, 105, 112, 95, 99, 100, 101, 102, 103, 107, 110, 111, 900"
)]
pub data: ::core::option::Option<trace_packet::Data>,
/// Trusted user id of the producer which generated this packet. Keep in sync
/// with TrustedPacket.trusted_uid.
///
/// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
/// instead.
#[prost(oneof = "trace_packet::OptionalTrustedUid", tags = "3")]
pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
/// Service-assigned identifier of the packet sequence this packet belongs to.
/// Uniquely identifies a producer + writer pair within the tracing session. A
/// value of zero denotes an invalid ID. Keep in sync with
/// TrustedPacket.trusted_packet_sequence_id.
#[prost(oneof = "trace_packet::OptionalTrustedPacketSequenceId", tags = "10")]
pub optional_trusted_packet_sequence_id: ::core::option::Option<
trace_packet::OptionalTrustedPacketSequenceId,
>,
}
/// Nested message and enum types in `TracePacket`.
pub mod trace_packet {
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum SequenceFlags {
SeqUnspecified = 0,
/// Set by the writer to indicate that it will re-emit any incremental data
/// for the packet's sequence before referring to it again. This includes
/// interned data as well as periodically emitted data like
/// Process/ThreadDescriptors. This flag only affects the current packet
/// sequence (see |trusted_packet_sequence_id|).
///
/// When set, this TracePacket and subsequent TracePackets on the same
/// sequence will not refer to any incremental data emitted before this
/// TracePacket. For example, previously emitted interned data will be
/// re-emitted if it is referred to again.
///
/// When the reader detects packet loss (|previous_packet_dropped|), it needs
/// to skip packets in the sequence until the next one with this flag set, to
/// ensure intact incremental data.
SeqIncrementalStateCleared = 1,
/// This packet requires incremental state, such as TracePacketDefaults or
/// InternedData, to be parsed correctly. The trace reader should skip this
/// packet if incremental state is not valid on this sequence, i.e. if no
/// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
/// current |trusted_packet_sequence_id|.
SeqNeedsIncrementalState = 2,
}
impl SequenceFlags {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::SeqUnspecified => "SEQ_UNSPECIFIED",
Self::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
Self::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SEQ_UNSPECIFIED" => Some(Self::SeqUnspecified),
"SEQ_INCREMENTAL_STATE_CLEARED" => Some(Self::SeqIncrementalStateCleared),
"SEQ_NEEDS_INCREMENTAL_STATE" => Some(Self::SeqNeedsIncrementalState),
_ => None,
}
}
}
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Data {
#[prost(message, tag = "2")]
ProcessTree(super::ProcessTree),
#[prost(message, tag = "9")]
ProcessStats(super::ProcessStats),
#[prost(message, tag = "4")]
InodeFileMap(super::InodeFileMap),
#[prost(message, tag = "5")]
ChromeEvents(super::ChromeEventBundle),
#[prost(message, tag = "6")]
ClockSnapshot(super::ClockSnapshot),
#[prost(message, tag = "7")]
SysStats(super::SysStats),
#[prost(message, tag = "11")]
TrackEvent(super::TrackEvent),
#[prost(message, tag = "89")]
TraceUuid(super::TraceUuid),
#[prost(message, tag = "33")]
TraceConfig(super::TraceConfig),
#[prost(message, tag = "34")]
FtraceStats(super::FtraceStats),
#[prost(message, tag = "35")]
TraceStats(super::TraceStats),
#[prost(message, tag = "37")]
ProfilePacket(super::ProfilePacket),
#[prost(message, tag = "74")]
StreamingAllocation(super::StreamingAllocation),
#[prost(message, tag = "75")]
StreamingFree(super::StreamingFree),
#[prost(message, tag = "38")]
Battery(super::BatteryCounters),
#[prost(message, tag = "40")]
PowerRails(super::PowerRails),
#[prost(message, tag = "39")]
AndroidLog(super::AndroidLogPacket),
#[prost(message, tag = "45")]
SystemInfo(super::SystemInfo),
#[prost(message, tag = "46")]
Trigger(super::Trigger),
#[prost(message, tag = "109")]
ChromeTrigger(super::ChromeTrigger),
#[prost(message, tag = "47")]
PackagesList(super::PackagesList),
#[prost(message, tag = "48")]
ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
#[prost(message, tag = "49")]
PerfettoMetatrace(super::PerfettoMetatrace),
#[prost(message, tag = "51")]
ChromeMetadata(super::ChromeMetadataPacket),
#[prost(message, tag = "52")]
GpuCounterEvent(super::GpuCounterEvent),
#[prost(message, tag = "53")]
GpuRenderStageEvent(super::GpuRenderStageEvent),
#[prost(message, tag = "54")]
StreamingProfilePacket(super::StreamingProfilePacket),
#[prost(message, tag = "56")]
HeapGraph(super::HeapGraph),
#[prost(message, tag = "57")]
GraphicsFrameEvent(super::GraphicsFrameEvent),
#[prost(message, tag = "62")]
VulkanMemoryEvent(super::VulkanMemoryEvent),
#[prost(message, tag = "63")]
GpuLog(super::GpuLog),
#[prost(message, tag = "65")]
VulkanApiEvent(super::VulkanApiEvent),
#[prost(message, tag = "66")]
PerfSample(super::PerfSample),
#[prost(message, tag = "67")]
CpuInfo(super::CpuInfo),
#[prost(message, tag = "68")]
SmapsPacket(super::SmapsPacket),
#[prost(message, tag = "69")]
ServiceEvent(super::TracingServiceEvent),
#[prost(message, tag = "70")]
InitialDisplayState(super::InitialDisplayState),
#[prost(message, tag = "71")]
GpuMemTotalEvent(super::GpuMemTotalEvent),
#[prost(message, tag = "73")]
MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
#[prost(message, tag = "76")]
FrameTimelineEvent(super::FrameTimelineEvent),
#[prost(message, tag = "77")]
AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
#[prost(message, tag = "78")]
UiState(super::UiState),
#[prost(message, tag = "80")]
AndroidCameraFrameEvent(super::AndroidCameraFrameEvent),
#[prost(message, tag = "81")]
AndroidCameraSessionStats(super::AndroidCameraSessionStats),
#[prost(message, tag = "82")]
TranslationTable(super::TranslationTable),
#[prost(message, tag = "83")]
AndroidGameInterventionList(super::AndroidGameInterventionList),
#[prost(message, tag = "84")]
StatsdAtom(super::StatsdAtom),
#[prost(message, tag = "86")]
AndroidSystemProperty(super::AndroidSystemProperty),
#[prost(message, tag = "91")]
EntityStateResidency(super::EntityStateResidency),
/// Only used in profile packets.
#[prost(message, tag = "55")]
ProfiledFrameSymbols(super::ProfiledFrameSymbols),
#[prost(message, tag = "61")]
ModuleSymbols(super::ModuleSymbols),
#[prost(message, tag = "64")]
DeobfuscationMapping(super::DeobfuscationMapping),
/// Only used by TrackEvent.
#[prost(message, tag = "60")]
TrackDescriptor(super::TrackDescriptor),
/// Deprecated, use TrackDescriptor instead.
#[prost(message, tag = "43")]
ProcessDescriptor(super::ProcessDescriptor),
/// Deprecated, use TrackDescriptor instead.
#[prost(message, tag = "44")]
ThreadDescriptor(super::ThreadDescriptor),
/// Events from the Linux kernel ftrace infrastructure.
#[prost(message, tag = "1")]
FtraceEvents(super::FtraceEventBundle),
/// This field is emitted at periodic intervals (~10s) and
/// contains always the binary representation of the UUID
/// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
/// efficiently partition long traces without having to fully parse them.
#[prost(bytes, tag = "36")]
SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
/// Zero or more proto encoded trace packets compressed using deflate.
/// Each compressed_packets TracePacket (including the two field ids and
/// sizes) should be less than 512KB.
#[prost(bytes, tag = "50")]
CompressedPackets(::prost::alloc::vec::Vec<u8>),
/// Data sources can extend the trace proto with custom extension protos (see
/// docs/design-docs/extensions.md). When they do that, the descriptor of
/// their extension proto descriptor is serialized in this packet. This
/// allows trace_processor to deserialize extended messages using reflection
/// even if the extension proto is not checked in the Perfetto repo.
#[prost(message, tag = "72")]
ExtensionDescriptor(super::ExtensionDescriptor),
/// Represents a single packet sent or received by the network.
#[prost(message, tag = "88")]
NetworkPacket(super::NetworkPacketEvent),
/// Represents one or more packets sent or received by the network.
#[prost(message, tag = "92")]
NetworkPacketBundle(super::NetworkPacketBundle),
/// The "range of interest" for track events. See the message definition
/// comments for more details.
#[prost(message, tag = "90")]
TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
/// Winscope traces
#[prost(message, tag = "93")]
SurfaceflingerLayersSnapshot(super::LayersSnapshotProto),
#[prost(message, tag = "94")]
SurfaceflingerTransactions(super::TransactionTraceEntry),
#[prost(message, tag = "96")]
ShellTransition(super::ShellTransition),
#[prost(message, tag = "97")]
ShellHandlerMappings(super::ShellHandlerMappings),
#[prost(message, tag = "104")]
ProtologMessage(super::ProtoLogMessage),
#[prost(message, tag = "105")]
ProtologViewerConfig(super::ProtoLogViewerConfig),
#[prost(message, tag = "112")]
WinscopeExtensions(super::WinscopeExtensions),
/// Events from the Windows etw infrastructure.
#[prost(message, tag = "95")]
EtwEvents(super::EtwTraceEventBundle),
#[prost(message, tag = "99")]
V8JsCode(super::V8JsCode),
#[prost(message, tag = "100")]
V8InternalCode(super::V8InternalCode),
#[prost(message, tag = "101")]
V8WasmCode(super::V8WasmCode),
#[prost(message, tag = "102")]
V8RegExpCode(super::V8RegExpCode),
#[prost(message, tag = "103")]
V8CodeMove(super::V8CodeMove),
/// Clock synchronization with remote machines.
#[prost(message, tag = "107")]
RemoteClockSync(super::RemoteClockSync),
#[prost(message, tag = "110")]
PixelModemEvents(super::PixelModemEvents),
#[prost(message, tag = "111")]
PixelModemTokenDatabase(super::PixelModemTokenDatabase),
/// This field is only used for testing.
/// In previous versions of this proto this field had the id 268435455
/// This caused many problems:
/// - protozero decoder does not handle field ids larger than 999.
/// - old versions of protoc produce Java bindings with syntax errors when
/// the field id is large enough.
#[prost(message, tag = "900")]
ForTesting(super::TestEvent),
}
/// Trusted user id of the producer which generated this packet. Keep in sync
/// with TrustedPacket.trusted_uid.
///
/// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
/// instead.
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum OptionalTrustedUid {
#[prost(int32, tag = "3")]
TrustedUid(i32),
}
/// Service-assigned identifier of the packet sequence this packet belongs to.
/// Uniquely identifies a producer + writer pair within the tracing session. A
/// value of zero denotes an invalid ID. Keep in sync with
/// TrustedPacket.trusted_packet_sequence_id.
#[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
pub enum OptionalTrustedPacketSequenceId {
#[prost(uint32, tag = "10")]
TrustedPacketSequenceId(u32),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Trace {
#[prost(message, repeated, tag = "1")]
pub packet: ::prost::alloc::vec::Vec<TracePacket>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum BuiltinClock {
Unknown = 0,
Realtime = 1,
RealtimeCoarse = 2,
Monotonic = 3,
MonotonicCoarse = 4,
MonotonicRaw = 5,
Boottime = 6,
Tsc = 9,
Perf = 10,
MaxId = 63,
}
impl BuiltinClock {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unknown => "BUILTIN_CLOCK_UNKNOWN",
Self::Realtime => "BUILTIN_CLOCK_REALTIME",
Self::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
Self::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
Self::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
Self::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
Self::Boottime => "BUILTIN_CLOCK_BOOTTIME",
Self::Tsc => "BUILTIN_CLOCK_TSC",
Self::Perf => "BUILTIN_CLOCK_PERF",
Self::MaxId => "BUILTIN_CLOCK_MAX_ID",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"BUILTIN_CLOCK_UNKNOWN" => Some(Self::Unknown),
"BUILTIN_CLOCK_REALTIME" => Some(Self::Realtime),
"BUILTIN_CLOCK_REALTIME_COARSE" => Some(Self::RealtimeCoarse),
"BUILTIN_CLOCK_MONOTONIC" => Some(Self::Monotonic),
"BUILTIN_CLOCK_MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
"BUILTIN_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
"BUILTIN_CLOCK_BOOTTIME" => Some(Self::Boottime),
"BUILTIN_CLOCK_TSC" => Some(Self::Tsc),
"BUILTIN_CLOCK_PERF" => Some(Self::Perf),
"BUILTIN_CLOCK_MAX_ID" => Some(Self::MaxId),
_ => None,
}
}
}
/// Values from NDK's android/log.h.
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum AndroidLogId {
/// MAIN.
LidDefault = 0,
LidRadio = 1,
LidEvents = 2,
LidSystem = 3,
LidCrash = 4,
LidStats = 5,
LidSecurity = 6,
LidKernel = 7,
}
impl AndroidLogId {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::LidDefault => "LID_DEFAULT",
Self::LidRadio => "LID_RADIO",
Self::LidEvents => "LID_EVENTS",
Self::LidSystem => "LID_SYSTEM",
Self::LidCrash => "LID_CRASH",
Self::LidStats => "LID_STATS",
Self::LidSecurity => "LID_SECURITY",
Self::LidKernel => "LID_KERNEL",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"LID_DEFAULT" => Some(Self::LidDefault),
"LID_RADIO" => Some(Self::LidRadio),
"LID_EVENTS" => Some(Self::LidEvents),
"LID_SYSTEM" => Some(Self::LidSystem),
"LID_CRASH" => Some(Self::LidCrash),
"LID_STATS" => Some(Self::LidStats),
"LID_SECURITY" => Some(Self::LidSecurity),
"LID_KERNEL" => Some(Self::LidKernel),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum AndroidLogPriority {
PrioUnspecified = 0,
/// _DEFAULT, but should never be seen in logs.
PrioUnused = 1,
PrioVerbose = 2,
PrioDebug = 3,
PrioInfo = 4,
PrioWarn = 5,
PrioError = 6,
PrioFatal = 7,
}
impl AndroidLogPriority {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::PrioUnspecified => "PRIO_UNSPECIFIED",
Self::PrioUnused => "PRIO_UNUSED",
Self::PrioVerbose => "PRIO_VERBOSE",
Self::PrioDebug => "PRIO_DEBUG",
Self::PrioInfo => "PRIO_INFO",
Self::PrioWarn => "PRIO_WARN",
Self::PrioError => "PRIO_ERROR",
Self::PrioFatal => "PRIO_FATAL",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
"PRIO_UNUSED" => Some(Self::PrioUnused),
"PRIO_VERBOSE" => Some(Self::PrioVerbose),
"PRIO_DEBUG" => Some(Self::PrioDebug),
"PRIO_INFO" => Some(Self::PrioInfo),
"PRIO_WARN" => Some(Self::PrioWarn),
"PRIO_ERROR" => Some(Self::PrioError),
"PRIO_FATAL" => Some(Self::PrioFatal),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ProtoLogLevel {
ProtologLevelUndefined = 0,
ProtologLevelDebug = 1,
ProtologLevelVerbose = 2,
ProtologLevelInfo = 3,
ProtologLevelWarn = 4,
ProtologLevelError = 5,
ProtologLevelWtf = 6,
}
impl ProtoLogLevel {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
Self::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
Self::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
Self::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
Self::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
Self::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
Self::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"PROTOLOG_LEVEL_UNDEFINED" => Some(Self::ProtologLevelUndefined),
"PROTOLOG_LEVEL_DEBUG" => Some(Self::ProtologLevelDebug),
"PROTOLOG_LEVEL_VERBOSE" => Some(Self::ProtologLevelVerbose),
"PROTOLOG_LEVEL_INFO" => Some(Self::ProtologLevelInfo),
"PROTOLOG_LEVEL_WARN" => Some(Self::ProtologLevelWarn),
"PROTOLOG_LEVEL_ERROR" => Some(Self::ProtologLevelError),
"PROTOLOG_LEVEL_WTF" => Some(Self::ProtologLevelWtf),
_ => None,
}
}
}
/// This enum is obtained by post-processing
/// AOSP/frameworks/proto_logging/stats/atoms.proto through
/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
/// enum value for each proto field defined in the upstream atoms.proto.
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum AtomId {
AtomUnspecified = 0,
AtomBleScanStateChanged = 2,
AtomProcessStateChanged = 3,
AtomBleScanResultReceived = 4,
AtomSensorStateChanged = 5,
AtomGpsScanStateChanged = 6,
AtomSyncStateChanged = 7,
AtomScheduledJobStateChanged = 8,
AtomScreenBrightnessChanged = 9,
AtomWakelockStateChanged = 10,
AtomLongPartialWakelockStateChanged = 11,
AtomMobileRadioPowerStateChanged = 12,
AtomWifiRadioPowerStateChanged = 13,
AtomActivityManagerSleepStateChanged = 14,
AtomMemoryFactorStateChanged = 15,
AtomExcessiveCpuUsageReported = 16,
AtomCachedKillReported = 17,
AtomProcessMemoryStatReported = 18,
AtomLauncherEvent = 19,
AtomBatterySaverModeStateChanged = 20,
AtomDeviceIdleModeStateChanged = 21,
AtomDeviceIdlingModeStateChanged = 22,
AtomAudioStateChanged = 23,
AtomMediaCodecStateChanged = 24,
AtomCameraStateChanged = 25,
AtomFlashlightStateChanged = 26,
AtomUidProcessStateChanged = 27,
AtomProcessLifeCycleStateChanged = 28,
AtomScreenStateChanged = 29,
AtomBatteryLevelChanged = 30,
AtomChargingStateChanged = 31,
AtomPluggedStateChanged = 32,
AtomInteractiveStateChanged = 33,
AtomTouchEventReported = 34,
AtomWakeupAlarmOccurred = 35,
AtomKernelWakeupReported = 36,
AtomWifiLockStateChanged = 37,
AtomWifiSignalStrengthChanged = 38,
AtomWifiScanStateChanged = 39,
AtomPhoneSignalStrengthChanged = 40,
AtomSettingChanged = 41,
AtomActivityForegroundStateChanged = 42,
AtomIsolatedUidChanged = 43,
AtomPacketWakeupOccurred = 44,
AtomWallClockTimeShifted = 45,
AtomAnomalyDetected = 46,
AtomAppBreadcrumbReported = 47,
AtomAppStartOccurred = 48,
AtomAppStartCanceled = 49,
AtomAppStartFullyDrawn = 50,
AtomLmkKillOccurred = 51,
AtomPictureInPictureStateChanged = 52,
AtomWifiMulticastLockStateChanged = 53,
AtomAppStartMemoryStateCaptured = 55,
AtomShutdownSequenceReported = 56,
AtomBootSequenceReported = 57,
AtomOverlayStateChanged = 59,
AtomForegroundServiceStateChanged = 60,
AtomCallStateChanged = 61,
AtomKeyguardStateChanged = 62,
AtomKeyguardBouncerStateChanged = 63,
AtomKeyguardBouncerPasswordEntered = 64,
AtomAppDied = 65,
AtomResourceConfigurationChanged = 66,
AtomBluetoothEnabledStateChanged = 67,
AtomBluetoothConnectionStateChanged = 68,
AtomGpsSignalQualityChanged = 69,
AtomUsbConnectorStateChanged = 70,
AtomSpeakerImpedanceReported = 71,
AtomHardwareFailed = 72,
AtomPhysicalDropDetected = 73,
AtomChargeCyclesReported = 74,
AtomMobileConnectionStateChanged = 75,
AtomMobileRadioTechnologyChanged = 76,
AtomUsbDeviceAttached = 77,
AtomAppCrashOccurred = 78,
AtomAnrOccurred = 79,
AtomWtfOccurred = 80,
AtomLowMemReported = 81,
AtomGenericAtom = 82,
AtomVibratorStateChanged = 84,
AtomDeferredJobStatsReported = 85,
AtomThermalThrottling = 86,
AtomBiometricAcquired = 87,
AtomBiometricAuthenticated = 88,
AtomBiometricErrorOccurred = 89,
AtomUiEventReported = 90,
AtomBatteryHealthSnapshot = 91,
AtomSlowIo = 92,
AtomBatteryCausedShutdown = 93,
AtomPhoneServiceStateChanged = 94,
AtomPhoneStateChanged = 95,
AtomUserRestrictionChanged = 96,
AtomSettingsUiChanged = 97,
AtomConnectivityStateChanged = 98,
AtomServiceStateChanged = 99,
AtomServiceLaunchReported = 100,
AtomFlagFlipUpdateOccurred = 101,
AtomBinaryPushStateChanged = 102,
AtomDevicePolicyEvent = 103,
AtomDocsUiFileOpCanceled = 104,
AtomDocsUiFileOpCopyMoveModeReported = 105,
AtomDocsUiFileOpFailure = 106,
AtomDocsUiProviderFileOp = 107,
AtomDocsUiInvalidScopedAccessRequest = 108,
AtomDocsUiLaunchReported = 109,
AtomDocsUiRootVisited = 110,
AtomDocsUiStartupMs = 111,
AtomDocsUiUserActionReported = 112,
AtomWifiEnabledStateChanged = 113,
AtomWifiRunningStateChanged = 114,
AtomAppCompacted = 115,
AtomNetworkDnsEventReported = 116,
AtomDocsUiPickerLaunchedFromReported = 117,
AtomDocsUiPickResultReported = 118,
AtomDocsUiSearchModeReported = 119,
AtomDocsUiSearchTypeReported = 120,
AtomDataStallEvent = 121,
AtomRescuePartyResetReported = 122,
AtomSignedConfigReported = 123,
AtomGnssNiEventReported = 124,
AtomBluetoothLinkLayerConnectionEvent = 125,
AtomBluetoothAclConnectionStateChanged = 126,
AtomBluetoothScoConnectionStateChanged = 127,
AtomAppDowngraded = 128,
AtomAppOptimizedAfterDowngraded = 129,
AtomLowStorageStateChanged = 130,
AtomGnssNfwNotificationReported = 131,
AtomGnssConfigurationReported = 132,
AtomUsbPortOverheatEventReported = 133,
AtomNfcErrorOccurred = 134,
AtomNfcStateChanged = 135,
AtomNfcBeamOccurred = 136,
AtomNfcCardemulationOccurred = 137,
AtomNfcTagOccurred = 138,
AtomNfcHceTransactionOccurred = 139,
AtomSeStateChanged = 140,
AtomSeOmapiReported = 141,
AtomBroadcastDispatchLatencyReported = 142,
AtomAttentionManagerServiceResultReported = 143,
AtomAdbConnectionChanged = 144,
AtomSpeechDspStatReported = 145,
AtomUsbContaminantReported = 146,
AtomWatchdogRollbackOccurred = 147,
AtomBiometricSystemHealthIssueDetected = 148,
AtomBubbleUiChanged = 149,
AtomScheduledJobConstraintChanged = 150,
AtomBluetoothActiveDeviceChanged = 151,
AtomBluetoothA2dpPlaybackStateChanged = 152,
AtomBluetoothA2dpCodecConfigChanged = 153,
AtomBluetoothA2dpCodecCapabilityChanged = 154,
AtomBluetoothA2dpAudioUnderrunReported = 155,
AtomBluetoothA2dpAudioOverrunReported = 156,
AtomBluetoothDeviceRssiReported = 157,
AtomBluetoothDeviceFailedContactCounterReported = 158,
AtomBluetoothDeviceTxPowerLevelReported = 159,
AtomBluetoothHciTimeoutReported = 160,
AtomBluetoothQualityReportReported = 161,
AtomBluetoothDeviceInfoReported = 162,
AtomBluetoothRemoteVersionInfoReported = 163,
AtomBluetoothSdpAttributeReported = 164,
AtomBluetoothBondStateChanged = 165,
AtomBluetoothClassicPairingEventReported = 166,
AtomBluetoothSmpPairingEventReported = 167,
AtomScreenTimeoutExtensionReported = 168,
AtomProcessStartTime = 169,
AtomPermissionGrantRequestResultReported = 170,
AtomBluetoothSocketConnectionStateChanged = 171,
AtomDeviceIdentifierAccessDenied = 172,
AtomBubbleDeveloperErrorReported = 173,
AtomAssistGestureStageReported = 174,
AtomAssistGestureFeedbackReported = 175,
AtomAssistGestureProgressReported = 176,
AtomTouchGestureClassified = 177,
AtomHiddenApiUsed = 178,
AtomStyleUiChanged = 179,
AtomPrivacyIndicatorsInteracted = 180,
AtomAppInstallOnExternalStorageReported = 181,
AtomNetworkStackReported = 182,
AtomAppMovedStorageReported = 183,
AtomBiometricEnrolled = 184,
AtomSystemServerWatchdogOccurred = 185,
AtomTombStoneOccurred = 186,
AtomBluetoothClassOfDeviceReported = 187,
AtomIntelligenceEventReported = 188,
AtomThermalThrottlingSeverityStateChanged = 189,
AtomRoleRequestResultReported = 190,
AtomMediametricsAudiopolicyReported = 191,
AtomMediametricsAudiorecordReported = 192,
AtomMediametricsAudiothreadReported = 193,
AtomMediametricsAudiotrackReported = 194,
AtomMediametricsCodecReported = 195,
AtomMediametricsDrmWidevineReported = 196,
AtomMediametricsExtractorReported = 197,
AtomMediametricsMediadrmReported = 198,
AtomMediametricsNuplayerReported = 199,
AtomMediametricsRecorderReported = 200,
AtomMediametricsDrmmanagerReported = 201,
AtomCarPowerStateChanged = 203,
AtomGarageModeInfo = 204,
AtomTestAtomReported = 205,
AtomContentCaptureCallerMismatchReported = 206,
AtomContentCaptureServiceEvents = 207,
AtomContentCaptureSessionEvents = 208,
AtomContentCaptureFlushed = 209,
AtomLocationManagerApiUsageReported = 210,
AtomReviewPermissionsFragmentResultReported = 211,
AtomRuntimePermissionsUpgradeResult = 212,
AtomGrantPermissionsActivityButtonActions = 213,
AtomLocationAccessCheckNotificationAction = 214,
AtomAppPermissionFragmentActionReported = 215,
AtomAppPermissionFragmentViewed = 216,
AtomAppPermissionsFragmentViewed = 217,
AtomPermissionAppsFragmentViewed = 218,
AtomTextSelectionEvent = 219,
AtomTextLinkifyEvent = 220,
AtomConversationActionsEvent = 221,
AtomLanguageDetectionEvent = 222,
AtomExclusionRectStateChanged = 223,
AtomBackGestureReportedReported = 224,
AtomUpdateEngineUpdateAttemptReported = 225,
AtomUpdateEngineSuccessfulUpdateReported = 226,
AtomCameraActionEvent = 227,
AtomAppCompatibilityChangeReported = 228,
AtomPerfettoUploaded = 229,
AtomVmsClientConnectionStateChanged = 230,
AtomMediaProviderScanOccurred = 233,
AtomMediaContentDeleted = 234,
AtomMediaProviderPermissionRequested = 235,
AtomMediaProviderSchemaChanged = 236,
AtomMediaProviderIdleMaintenanceFinished = 237,
AtomRebootEscrowRecoveryReported = 238,
AtomBootTimeEventDurationReported = 239,
AtomBootTimeEventElapsedTimeReported = 240,
AtomBootTimeEventUtcTimeReported = 241,
AtomBootTimeEventErrorCodeReported = 242,
AtomUserspaceRebootReported = 243,
AtomNotificationReported = 244,
AtomNotificationPanelReported = 245,
AtomNotificationChannelModified = 246,
AtomIntegrityCheckResultReported = 247,
AtomIntegrityRulesPushed = 248,
AtomCbMessageReported = 249,
AtomCbMessageError = 250,
AtomWifiHealthStatReported = 251,
AtomWifiFailureStatReported = 252,
AtomWifiConnectionResultReported = 253,
AtomAppFreezeChanged = 254,
AtomSnapshotMergeReported = 255,
AtomForegroundServiceAppOpSessionEnded = 256,
AtomDisplayJankReported = 257,
AtomAppStandbyBucketChanged = 258,
AtomSharesheetStarted = 259,
AtomRankingSelected = 260,
AtomTvsettingsUiInteracted = 261,
AtomLauncherSnapshot = 262,
AtomPackageInstallerV2Reported = 263,
AtomUserLifecycleJourneyReported = 264,
AtomUserLifecycleEventOccurred = 265,
AtomAccessibilityShortcutReported = 266,
AtomAccessibilityServiceReported = 267,
AtomDocsUiDragAndDropReported = 268,
AtomAppUsageEventOccurred = 269,
AtomAutoRevokeNotificationClicked = 270,
AtomAutoRevokeFragmentAppViewed = 271,
AtomAutoRevokedAppInteraction = 272,
AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
AtomEvsUsageStatsReported = 274,
AtomAudioPowerUsageDataReported = 275,
AtomTvTunerStateChanged = 276,
AtomMediaoutputOpSwitchReported = 277,
AtomCbMessageFiltered = 278,
AtomTvTunerDvrStatus = 279,
AtomTvCasSessionOpenStatus = 280,
AtomAssistantInvocationReported = 281,
AtomDisplayWakeReported = 282,
AtomCarUserHalModifyUserRequestReported = 283,
AtomCarUserHalModifyUserResponseReported = 284,
AtomCarUserHalPostSwitchResponseReported = 285,
AtomCarUserHalInitialUserInfoRequestReported = 286,
AtomCarUserHalInitialUserInfoResponseReported = 287,
AtomCarUserHalUserAssociationRequestReported = 288,
AtomCarUserHalSetUserAssociationResponseReported = 289,
AtomNetworkIpProvisioningReported = 290,
AtomNetworkDhcpRenewReported = 291,
AtomNetworkValidationReported = 292,
AtomNetworkStackQuirkReported = 293,
AtomMediametricsAudiorecorddeviceusageReported = 294,
AtomMediametricsAudiothreaddeviceusageReported = 295,
AtomMediametricsAudiotrackdeviceusageReported = 296,
AtomMediametricsAudiodeviceconnectionReported = 297,
AtomBlobCommitted = 298,
AtomBlobLeased = 299,
AtomBlobOpened = 300,
AtomContactsProviderStatusReported = 301,
AtomKeystoreKeyEventReported = 302,
AtomNetworkTetheringReported = 303,
AtomImeTouchReported = 304,
AtomUiInteractionFrameInfoReported = 305,
AtomUiActionLatencyReported = 306,
AtomWifiDisconnectReported = 307,
AtomWifiConnectionStateChanged = 308,
AtomHdmiCecActiveSourceChanged = 309,
AtomHdmiCecMessageReported = 310,
AtomAirplaneMode = 311,
AtomModemRestart = 312,
AtomCarrierIdMismatchReported = 313,
AtomCarrierIdTableUpdated = 314,
AtomDataStallRecoveryReported = 315,
AtomMediametricsMediaparserReported = 316,
AtomTlsHandshakeReported = 317,
AtomTextClassifierApiUsageReported = 318,
AtomCarWatchdogKillStatsReported = 319,
AtomMediametricsPlaybackReported = 320,
AtomMediaNetworkInfoChanged = 321,
AtomMediaPlaybackStateChanged = 322,
AtomMediaPlaybackErrorReported = 323,
AtomMediaPlaybackTrackChanged = 324,
AtomWifiScanReported = 325,
AtomWifiPnoScanReported = 326,
AtomTifTuneChanged = 327,
AtomAutoRotateReported = 328,
AtomPerfettoTrigger = 329,
AtomTranscodingData = 330,
AtomImsServiceEntitlementUpdated = 331,
AtomDeviceRotated = 333,
AtomSimSpecificSettingsRestored = 334,
AtomTextClassifierDownloadReported = 335,
AtomPinStorageEvent = 336,
AtomFaceDownReported = 337,
AtomBluetoothHalCrashReasonReported = 338,
AtomRebootEscrowPreparationReported = 339,
AtomRebootEscrowLskfCaptureReported = 340,
AtomRebootEscrowRebootReported = 341,
AtomBinderLatencyReported = 342,
AtomMediametricsAaudiostreamReported = 343,
AtomMediaTranscodingSessionEnded = 344,
AtomMagnificationUsageReported = 345,
AtomMagnificationModeWithImeOnReported = 346,
AtomAppSearchCallStatsReported = 347,
AtomAppSearchPutDocumentStatsReported = 348,
AtomDeviceControlChanged = 349,
AtomDeviceStateChanged = 350,
AtomInputdeviceRegistered = 351,
AtomSmartspaceCardReported = 352,
AtomAuthPromptAuthenticateInvoked = 353,
AtomAuthManagerCanAuthenticateInvoked = 354,
AtomAuthEnrollActionInvoked = 355,
AtomAuthDeprecatedApiUsed = 356,
AtomUnattendedRebootOccurred = 357,
AtomLongRebootBlockingReported = 358,
AtomLocationTimeZoneProviderStateChanged = 359,
AtomFdtrackEventOccurred = 364,
AtomTimeoutAutoExtendedReported = 365,
AtomAlarmBatchDelivered = 367,
AtomAlarmScheduled = 368,
AtomCarWatchdogIoOveruseStatsReported = 369,
AtomUserLevelHibernationStateChanged = 370,
AtomAppSearchInitializeStatsReported = 371,
AtomAppSearchQueryStatsReported = 372,
AtomAppProcessDied = 373,
AtomNetworkIpReachabilityMonitorReported = 374,
AtomSlowInputEventReported = 375,
AtomAnrOccurredProcessingStarted = 376,
AtomAppSearchRemoveStatsReported = 377,
AtomMediaCodecReported = 378,
AtomPermissionUsageFragmentInteraction = 379,
AtomPermissionDetailsInteraction = 380,
AtomPrivacySensorToggleInteraction = 381,
AtomPrivacyToggleDialogInteraction = 382,
AtomAppSearchOptimizeStatsReported = 383,
AtomNonA11yToolServiceWarningReport = 384,
AtomAppCompatStateChanged = 386,
AtomSizeCompatRestartButtonEventReported = 387,
AtomSplitscreenUiChanged = 388,
AtomNetworkDnsHandshakeReported = 389,
AtomBluetoothCodePathCounter = 390,
AtomBluetoothLeBatchScanReportDelay = 392,
AtomAccessibilityFloatingMenuUiChanged = 393,
AtomNeuralnetworksCompilationCompleted = 394,
AtomNeuralnetworksExecutionCompleted = 395,
AtomNeuralnetworksCompilationFailed = 396,
AtomNeuralnetworksExecutionFailed = 397,
AtomContextHubBooted = 398,
AtomContextHubRestarted = 399,
AtomContextHubLoadedNanoappSnapshotReported = 400,
AtomChreCodeDownloadTransacted = 401,
AtomUwbSessionInited = 402,
AtomUwbSessionClosed = 403,
AtomUwbFirstRangingReceived = 404,
AtomUwbRangingMeasurementReceived = 405,
AtomTextClassifierDownloadWorkScheduled = 406,
AtomTextClassifierDownloadWorkCompleted = 407,
AtomClipboardCleared = 408,
AtomVmCreationRequested = 409,
AtomNearbyDeviceScanStateChanged = 410,
AtomCameraCompatControlEventReported = 411,
AtomApplicationLocalesChanged = 412,
AtomMediametricsAudiotrackstatusReported = 413,
AtomFoldStateDurationReported = 414,
AtomLocationTimeZoneProviderControllerStateChanged = 415,
AtomDisplayHbmStateChanged = 416,
AtomDisplayHbmBrightnessChanged = 417,
AtomPersistentUriPermissionsFlushed = 418,
AtomEarlyBootCompOsArtifactsCheckReported = 419,
AtomVbmetaDigestReported = 420,
AtomApexInfoGathered = 421,
AtomPvmInfoGathered = 422,
AtomWearSettingsUiInteracted = 423,
AtomTracingServiceReportEvent = 424,
AtomMediametricsAudiorecordstatusReported = 425,
AtomLauncherLatency = 426,
AtomDropboxEntryDropped = 427,
AtomWifiP2pConnectionReported = 428,
AtomGameStateChanged = 429,
AtomHotwordDetectorCreateRequested = 430,
AtomHotwordDetectionServiceInitResultReported = 431,
AtomHotwordDetectionServiceRestarted = 432,
AtomHotwordDetectorKeyphraseTriggered = 433,
AtomHotwordDetectorEvents = 434,
AtomBootCompletedBroadcastCompletionLatencyReported = 437,
AtomContactsIndexerUpdateStatsReported = 440,
AtomAppBackgroundRestrictionsInfo = 441,
AtomMmsSmsProviderGetThreadIdFailed = 442,
AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
AtomPermissionReminderNotificationInteracted = 444,
AtomRecentPermissionDecisionsInteracted = 445,
AtomGnssPsdsDownloadReported = 446,
AtomLeAudioConnectionSessionReported = 447,
AtomLeAudioBroadcastSessionReported = 448,
AtomDreamUiEventReported = 449,
AtomTaskManagerEventReported = 450,
AtomCdmAssociationAction = 451,
AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
AtomAccessibilityTextReadingOptionsChanged = 454,
AtomWifiSetupFailureCrashReported = 455,
AtomUwbDeviceErrorReported = 456,
AtomIsolatedCompilationScheduled = 457,
AtomIsolatedCompilationEnded = 458,
AtomOnsOpportunisticEsimProvisioningComplete = 459,
AtomSystemServerPreWatchdogOccurred = 460,
AtomTelephonyAnomalyDetected = 461,
AtomLetterboxPositionChanged = 462,
AtomRemoteKeyProvisioningAttempt = 463,
AtomRemoteKeyProvisioningNetworkInfo = 464,
AtomRemoteKeyProvisioningTiming = 465,
AtomMediaoutputOpInteractionReport = 466,
AtomSyncExemptionOccurred = 468,
AtomAutofillPresentationEventReported = 469,
AtomDockStateChanged = 470,
AtomSafetySourceStateCollected = 471,
AtomSafetyCenterSystemEventReported = 472,
AtomSafetyCenterInteractionReported = 473,
AtomSettingsProviderSettingChanged = 474,
AtomBroadcastDeliveryEventReported = 475,
AtomServiceRequestEventReported = 476,
AtomProviderAcquisitionEventReported = 477,
AtomBluetoothDeviceNameReported = 478,
AtomCbConfigUpdated = 479,
AtomCbModuleErrorReported = 480,
AtomCbServiceFeatureChanged = 481,
AtomCbReceiverFeatureChanged = 482,
AtomPrivacySignalNotificationInteraction = 484,
AtomPrivacySignalIssueCardInteraction = 485,
AtomPrivacySignalsJobFailure = 486,
AtomVibrationReported = 487,
AtomUwbRangingStart = 489,
AtomAppCompactedV2 = 491,
AtomDisplayBrightnessChanged = 494,
AtomActivityActionBlocked = 495,
AtomNetworkDnsServerSupportReported = 504,
AtomVmBooted = 505,
AtomVmExited = 506,
AtomAmbientBrightnessStatsReported = 507,
AtomMediametricsSpatializercapabilitiesReported = 508,
AtomMediametricsSpatializerdeviceenabledReported = 509,
AtomMediametricsHeadtrackerdeviceenabledReported = 510,
AtomMediametricsHeadtrackerdevicesupportedReported = 511,
AtomHearingAidInfoReported = 513,
AtomDeviceWideJobConstraintChanged = 514,
AtomAmbientModeChanged = 515,
AtomAnrLatencyReported = 516,
AtomResourceApiInfo = 517,
AtomSystemDefaultNetworkChanged = 518,
AtomIwlanSetupDataCallResultReported = 519,
AtomIwlanPdnDisconnectedReasonReported = 520,
AtomAirplaneModeSessionReported = 521,
AtomVmCpuStatusReported = 522,
AtomVmMemStatusReported = 523,
AtomPackageInstallationSessionReported = 524,
AtomDefaultNetworkRematchInfo = 525,
AtomNetworkSelectionPerformance = 526,
AtomNetworkNsdReported = 527,
AtomBluetoothDisconnectionReasonReported = 529,
AtomBluetoothLocalVersionsReported = 530,
AtomBluetoothRemoteSupportedFeaturesReported = 531,
AtomBluetoothLocalSupportedFeaturesReported = 532,
AtomBluetoothGattAppInfo = 533,
AtomBrightnessConfigurationUpdated = 534,
AtomWearMediaOutputSwitcherLaunched = 538,
AtomWearMediaOutputSwitcherFinished = 539,
AtomWearMediaOutputSwitcherConnectionReported = 540,
AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
AtomPackageManagerSnapshotReported = 544,
AtomPackageManagerAppsFilterCacheBuildReported = 545,
AtomPackageManagerAppsFilterCacheUpdateReported = 546,
AtomLauncherImpressionEvent = 547,
AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
AtomWsWatchFaceEdited = 551,
AtomWsWatchFaceFavoriteActionReported = 552,
AtomWsWatchFaceSetActionReported = 553,
AtomPackageUninstallationReported = 554,
AtomGameModeChanged = 555,
AtomGameModeConfigurationChanged = 556,
AtomBedtimeModeStateChanged = 557,
AtomNetworkSliceSessionEnded = 558,
AtomNetworkSliceDailyDataUsageReported = 559,
AtomNfcTagTypeOccurred = 560,
AtomNfcAidConflictOccurred = 561,
AtomNfcReaderConflictOccurred = 562,
AtomWsTileListChanged = 563,
AtomGetTypeAccessedWithoutPermission = 564,
AtomMobileBundledAppInfoGathered = 566,
AtomWsWatchFaceComplicationSetChanged = 567,
AtomMediaDrmCreated = 568,
AtomMediaDrmErrored = 569,
AtomMediaDrmSessionOpened = 570,
AtomMediaDrmSessionClosed = 571,
AtomUserSelectedResolution = 572,
AtomUnsafeIntentEventReported = 573,
AtomPerformanceHintSessionReported = 574,
AtomMediametricsMidiDeviceCloseReported = 576,
AtomBiometricTouchReported = 577,
AtomHotwordAudioEgressEventReported = 578,
AtomLocationEnabledStateChanged = 580,
AtomImeRequestFinished = 581,
AtomUsbComplianceWarningsReported = 582,
AtomAppSupportedLocalesChanged = 583,
AtomMediaProviderVolumeRecoveryReported = 586,
AtomBiometricPropertiesCollected = 587,
AtomKernelWakeupAttributed = 588,
AtomScreenStateChangedV2 = 589,
AtomWsBackupActionReported = 590,
AtomWsRestoreActionReported = 591,
AtomDeviceLogAccessEventReported = 592,
AtomMediaSessionUpdated = 594,
AtomWearOobeStateChanged = 595,
AtomWsNotificationUpdated = 596,
AtomNetworkValidationFailureStatsDailyReported = 601,
AtomWsComplicationTapped = 602,
AtomWsNotificationBlocking = 780,
AtomWsNotificationBridgemodeUpdated = 822,
AtomWsNotificationDismissalActioned = 823,
AtomWsNotificationActioned = 824,
AtomWsNotificationLatency = 880,
AtomWifiBytesTransfer = 10000,
AtomWifiBytesTransferByFgBg = 10001,
AtomMobileBytesTransfer = 10002,
AtomMobileBytesTransferByFgBg = 10003,
AtomBluetoothBytesTransfer = 10006,
AtomKernelWakelock = 10004,
AtomSubsystemSleepState = 10005,
AtomCpuTimePerUid = 10009,
AtomCpuTimePerUidFreq = 10010,
AtomWifiActivityInfo = 10011,
AtomModemActivityInfo = 10012,
AtomBluetoothActivityInfo = 10007,
AtomProcessMemoryState = 10013,
AtomSystemElapsedRealtime = 10014,
AtomSystemUptime = 10015,
AtomCpuActiveTime = 10016,
AtomCpuClusterTime = 10017,
AtomDiskSpace = 10018,
AtomRemainingBatteryCapacity = 10019,
AtomFullBatteryCapacity = 10020,
AtomTemperature = 10021,
AtomBinderCalls = 10022,
AtomBinderCallsExceptions = 10023,
AtomLooperStats = 10024,
AtomDiskStats = 10025,
AtomDirectoryUsage = 10026,
AtomAppSize = 10027,
AtomCategorySize = 10028,
AtomProcStats = 10029,
AtomBatteryVoltage = 10030,
AtomNumFingerprintsEnrolled = 10031,
AtomDiskIo = 10032,
AtomPowerProfile = 10033,
AtomProcStatsPkgProc = 10034,
AtomProcessCpuTime = 10035,
AtomCpuTimePerThreadFreq = 10037,
AtomOnDevicePowerMeasurement = 10038,
AtomDeviceCalculatedPowerUse = 10039,
AtomProcessMemoryHighWaterMark = 10042,
AtomBatteryLevel = 10043,
AtomBuildInformation = 10044,
AtomBatteryCycleCount = 10045,
AtomDebugElapsedClock = 10046,
AtomDebugFailingElapsedClock = 10047,
AtomNumFacesEnrolled = 10048,
AtomRoleHolder = 10049,
AtomDangerousPermissionState = 10050,
AtomTrainInfo = 10051,
AtomTimeZoneDataInfo = 10052,
AtomExternalStorageInfo = 10053,
AtomGpuStatsGlobalInfo = 10054,
AtomGpuStatsAppInfo = 10055,
AtomSystemIonHeapSize = 10056,
AtomAppsOnExternalStorageInfo = 10057,
AtomFaceSettings = 10058,
AtomCoolingDevice = 10059,
AtomAppOps = 10060,
AtomProcessSystemIonHeapSize = 10061,
AtomSurfaceflingerStatsGlobalInfo = 10062,
AtomSurfaceflingerStatsLayerInfo = 10063,
AtomProcessMemorySnapshot = 10064,
AtomVmsClientStats = 10065,
AtomNotificationRemoteViews = 10066,
AtomDangerousPermissionStateSampled = 10067,
AtomGraphicsStats = 10068,
AtomRuntimeAppOpAccess = 10069,
AtomIonHeapSize = 10070,
AtomPackageNotificationPreferences = 10071,
AtomPackageNotificationChannelPreferences = 10072,
AtomPackageNotificationChannelGroupPreferences = 10073,
AtomGnssStats = 10074,
AtomAttributedAppOps = 10075,
AtomVoiceCallSession = 10076,
AtomVoiceCallRatUsage = 10077,
AtomSimSlotState = 10078,
AtomSupportedRadioAccessFamily = 10079,
AtomSettingSnapshot = 10080,
AtomBlobInfo = 10081,
AtomDataUsageBytesTransfer = 10082,
AtomBytesTransferByTagAndMetered = 10083,
AtomDndModeRule = 10084,
AtomGeneralExternalStorageAccessStats = 10085,
AtomIncomingSms = 10086,
AtomOutgoingSms = 10087,
AtomCarrierIdTableVersion = 10088,
AtomDataCallSession = 10089,
AtomCellularServiceState = 10090,
AtomCellularDataServiceSwitch = 10091,
AtomSystemMemory = 10092,
AtomImsRegistrationTermination = 10093,
AtomImsRegistrationStats = 10094,
AtomCpuTimePerClusterFreq = 10095,
AtomCpuCyclesPerUidCluster = 10096,
AtomDeviceRotatedData = 10097,
AtomCpuCyclesPerThreadGroupCluster = 10098,
AtomMediaDrmActivityInfo = 10099,
AtomOemManagedBytesTransfer = 10100,
AtomGnssPowerStats = 10101,
AtomTimeZoneDetectorState = 10102,
AtomKeystore2StorageStats = 10103,
AtomRkpPoolStats = 10104,
AtomProcessDmabufMemory = 10105,
AtomPendingAlarmInfo = 10106,
AtomUserLevelHibernatedApps = 10107,
AtomLauncherLayoutSnapshot = 10108,
AtomGlobalHibernatedApps = 10109,
AtomInputEventLatencySketch = 10110,
AtomBatteryUsageStatsBeforeReset = 10111,
AtomBatteryUsageStatsSinceReset = 10112,
AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
AtomInstalledIncrementalPackage = 10114,
AtomTelephonyNetworkRequests = 10115,
AtomAppSearchStorageInfo = 10116,
AtomVmstat = 10117,
AtomKeystore2KeyCreationWithGeneralInfo = 10118,
AtomKeystore2KeyCreationWithAuthInfo = 10119,
AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
AtomKeystore2AtomWithOverflow = 10121,
AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
AtomKeystore2KeyOperationWithGeneralInfo = 10123,
AtomRkpErrorStats = 10124,
AtomKeystore2CrashStats = 10125,
AtomVendorApexInfo = 10126,
AtomAccessibilityShortcutStats = 10127,
AtomAccessibilityFloatingMenuStats = 10128,
AtomDataUsageBytesTransferV2 = 10129,
AtomMediaCapabilities = 10130,
AtomCarWatchdogSystemIoUsageSummary = 10131,
AtomCarWatchdogUidIoUsageSummary = 10132,
AtomImsRegistrationFeatureTagStats = 10133,
AtomRcsClientProvisioningStats = 10134,
AtomRcsAcsProvisioningStats = 10135,
AtomSipDelegateStats = 10136,
AtomSipTransportFeatureTagStats = 10137,
AtomSipMessageResponse = 10138,
AtomSipTransportSession = 10139,
AtomImsDedicatedBearerListenerEvent = 10140,
AtomImsDedicatedBearerEvent = 10141,
AtomImsRegistrationServiceDescStats = 10142,
AtomUceEventStats = 10143,
AtomPresenceNotifyEvent = 10144,
AtomGbaEvent = 10145,
AtomPerSimStatus = 10146,
AtomGpuWorkPerUid = 10147,
AtomPersistentUriPermissionsAmountPerPackage = 10148,
AtomSignedPartitionInfo = 10149,
AtomPinnedFileSizesPerPackage = 10150,
AtomPendingIntentsPerPackage = 10151,
AtomUserInfo = 10152,
AtomTelephonyNetworkRequestsV2 = 10153,
AtomDeviceTelephonyProperties = 10154,
AtomRemoteKeyProvisioningErrorCounts = 10155,
AtomSafetyState = 10156,
AtomIncomingMms = 10157,
AtomOutgoingMms = 10158,
AtomMultiUserInfo = 10160,
AtomNetworkBpfMapInfo = 10161,
AtomOutgoingShortCodeSms = 10162,
AtomConnectivityStateSample = 10163,
AtomNetworkSelectionRematchReasonsInfo = 10164,
AtomGameModeInfo = 10165,
AtomGameModeConfiguration = 10166,
AtomGameModeListener = 10167,
AtomNetworkSliceRequestCount = 10168,
AtomWsTileSnapshot = 10169,
AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
AtomProcessState = 10171,
AtomProcessAssociation = 10172,
AtomAdpfSystemComponentInfo = 10173,
AtomNotificationMemoryUse = 10174,
AtomHdrCapabilities = 10175,
AtomWsFavouriteWatchFaceListSnapshot = 10176,
AtomAdaptiveAuthUnlockAfterLockReported = 820,
AtomThermalStatusCalled = 772,
AtomThermalHeadroomCalled = 773,
AtomThermalHeadroomThresholdsCalled = 774,
AtomAdpfHintSessionTidCleanup = 839,
AtomThermalHeadroomThresholds = 10201,
AtomAdpfSessionSnapshot = 10218,
AtomJsscriptengineLatencyReported = 483,
AtomAdServicesApiCalled = 435,
AtomAdServicesMesurementReportsUploaded = 436,
AtomMobileDataDownloadFileGroupStatusReported = 490,
AtomMobileDataDownloadDownloadResultReported = 502,
AtomAdServicesSettingsUsageReported = 493,
AtomBackgroundFetchProcessReported = 496,
AtomUpdateCustomAudienceProcessReported = 497,
AtomRunAdBiddingProcessReported = 498,
AtomRunAdScoringProcessReported = 499,
AtomRunAdSelectionProcessReported = 500,
AtomRunAdBiddingPerCaProcessReported = 501,
AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
AtomAdServicesMeasurementRegistrations = 512,
AtomAdServicesGetTopicsReported = 535,
AtomAdServicesEpochComputationGetTopTopicsReported = 536,
AtomAdServicesEpochComputationClassifierReported = 537,
AtomAdServicesBackCompatGetTopicsReported = 598,
AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
AtomAdServicesMeasurementDebugKeys = 640,
AtomAdServicesErrorReported = 662,
AtomAdServicesBackgroundJobsExecutionReported = 663,
AtomAdServicesMeasurementDelayedSourceRegistration = 673,
AtomAdServicesMeasurementAttribution = 674,
AtomAdServicesMeasurementJobs = 675,
AtomAdServicesMeasurementWipeout = 676,
AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
AtomAdServicesEnrollmentDataStored = 697,
AtomAdServicesEnrollmentFileDownloaded = 698,
AtomAdServicesEnrollmentMatched = 699,
AtomAdServicesConsentMigrated = 702,
AtomAdServicesEnrollmentFailed = 714,
AtomAdServicesMeasurementClickVerification = 756,
AtomAdServicesEncryptionKeyFetched = 765,
AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
AtomDestinationRegisteredBeacons = 767,
AtomReportInteractionApiCalled = 768,
AtomInteractionReportingTableCleared = 769,
AtomAppManifestConfigHelperCalled = 788,
AtomAdFilteringProcessJoinCaReported = 793,
AtomAdFilteringProcessAdSelectionReported = 794,
AtomAdCounterHistogramUpdaterReported = 795,
AtomSignatureVerification = 807,
AtomKAnonImmediateSignJoinStatusReported = 808,
AtomKAnonBackgroundJobStatusReported = 809,
AtomKAnonInitializeStatusReported = 810,
AtomKAnonSignStatusReported = 811,
AtomKAnonJoinStatusReported = 812,
AtomKAnonKeyAttestationStatusReported = 813,
AtomGetAdSelectionDataApiCalled = 814,
AtomGetAdSelectionDataBuyerInputGenerated = 815,
AtomBackgroundJobSchedulingReported = 834,
AtomTopicsEncryptionEpochComputationReported = 840,
AtomTopicsEncryptionGetTopicsReported = 841,
AtomAdservicesShellCommandCalled = 842,
AtomUpdateSignalsApiCalled = 843,
AtomEncodingJobRun = 844,
AtomEncodingJsFetch = 845,
AtomEncodingJsExecution = 846,
AtomPersistAdSelectionResultCalled = 847,
AtomServerAuctionKeyFetchCalled = 848,
AtomServerAuctionBackgroundKeyFetchEnabled = 849,
AtomAdServicesMeasurementProcessOdpRegistration = 864,
AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
AtomSelectAdsFromOutcomesApiCalled = 876,
AtomReportImpressionApiCalled = 877,
AtomAdServicesEnrollmentTransactionStats = 885,
AtomAiWallpapersButtonPressed = 706,
AtomAiWallpapersTemplateSelected = 707,
AtomAiWallpapersTermSelected = 708,
AtomAiWallpapersWallpaperSet = 709,
AtomAiWallpapersSessionSummary = 710,
AtomApexInstallationRequested = 732,
AtomApexInstallationStaged = 733,
AtomApexInstallationEnded = 734,
AtomAppSearchSetSchemaStatsReported = 385,
AtomAppSearchSchemaMigrationStatsReported = 579,
AtomAppSearchUsageSearchIntentStatsReported = 825,
AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
AtomArtDatumReported = 332,
AtomArtDeviceDatumReported = 550,
AtomArtDatumDeltaReported = 565,
AtomArtDex2oatReported = 929,
AtomArtDeviceStatus = 10205,
AtomBackgroundDexoptJobEnded = 467,
AtomPrerebootDexoptJobEnded = 883,
AtomOdrefreshReported = 366,
AtomOdsignReported = 548,
AtomAutofillUiEventReported = 603,
AtomAutofillFillRequestReported = 604,
AtomAutofillFillResponseReported = 605,
AtomAutofillSaveEventReported = 606,
AtomAutofillSessionCommitted = 607,
AtomAutofillFieldClassificationEventReported = 659,
AtomCarRecentsEventReported = 770,
AtomCarCalmModeEventReported = 797,
AtomCarWakeupFromSuspendReported = 852,
AtomPluginInitialized = 655,
AtomBluetoothHashedDeviceNameReported = 613,
AtomBluetoothL2capCocClientConnection = 614,
AtomBluetoothL2capCocServerConnection = 615,
AtomBluetoothLeSessionConnected = 656,
AtomRestrictedBluetoothDeviceNameReported = 666,
AtomBluetoothProfileConnectionAttempted = 696,
AtomBluetoothContentProfileErrorReported = 781,
AtomBluetoothRfcommConnectionAttempted = 782,
AtomRemoteDeviceInformationWithMetricId = 862,
AtomLeAppScanStateChanged = 870,
AtomLeRadioScanStopped = 871,
AtomLeScanResultReceived = 872,
AtomLeScanAbused = 873,
AtomLeAdvStateChanged = 874,
AtomLeAdvErrorReported = 875,
AtomA2dpSessionReported = 904,
AtomBluetoothCrossLayerEventReported = 916,
AtomBroadcastAudioSessionReported = 927,
AtomBroadcastAudioSyncReported = 928,
AtomBluetoothRfcommConnectionReportedAtClose = 982,
AtomCameraFeatureCombinationQueryEvent = 900,
AtomDailyKeepaliveInfoReported = 650,
AtomNetworkRequestStateChanged = 779,
AtomTetheringActiveSessionsReported = 925,
AtomNetworkStatsRecorderFileOperated = 783,
AtomCoreNetworkingTerribleErrorOccurred = 979,
AtomApfSessionInfoReported = 777,
AtomIpClientRaInfoReported = 778,
AtomVpnConnectionStateChanged = 850,
AtomVpnConnectionReported = 851,
AtomCpuPolicy = 10199,
AtomCredentialManagerApiCalled = 585,
AtomCredentialManagerInitPhaseReported = 651,
AtomCredentialManagerCandidatePhaseReported = 652,
AtomCredentialManagerFinalPhaseReported = 653,
AtomCredentialManagerTotalReported = 667,
AtomCredentialManagerFinalnouidReported = 668,
AtomCredentialManagerGetReported = 669,
AtomCredentialManagerAuthClickReported = 670,
AtomCredentialManagerApiv2Called = 671,
AtomCronetEngineCreated = 703,
AtomCronetTrafficReported = 704,
AtomCronetEngineBuilderInitialized = 762,
AtomCronetHttpFlagsInitialized = 763,
AtomCronetInitialized = 764,
AtomDesktopModeUiChanged = 818,
AtomDesktopModeSessionTaskUpdate = 819,
AtomDeviceLockCheckInRequestReported = 726,
AtomDeviceLockProvisioningCompleteReported = 727,
AtomDeviceLockKioskAppRequestReported = 728,
AtomDeviceLockCheckInRetryReported = 789,
AtomDeviceLockProvisionFailureReported = 790,
AtomDeviceLockLockUnlockDeviceFailureReported = 791,
AtomDevicePolicyManagementMode = 10216,
AtomDevicePolicyState = 10217,
AtomDisplayModeDirectorVoteChanged = 792,
AtomExternalDisplayStateChanged = 806,
AtomDndStateChanged = 657,
AtomDreamSettingChanged = 705,
AtomDreamSettingSnapshot = 10192,
AtomExpressEventReported = 528,
AtomExpressHistogramSampleReported = 593,
AtomExpressUidEventReported = 644,
AtomExpressUidHistogramSampleReported = 658,
AtomFederatedComputeApiCalled = 712,
AtomFederatedComputeTrainingEventReported = 771,
AtomExampleIteratorNextLatencyReported = 838,
AtomFullScreenIntentLaunched = 631,
AtomBalAllowed = 632,
AtomInTaskActivityStarted = 685,
AtomCachedAppsHighWatermark = 10189,
AtomStylusPredictionMetricsReported = 718,
AtomUserRiskEventReported = 725,
AtomMediaProjectionStateChanged = 729,
AtomMediaProjectionTargetChanged = 730,
AtomExcessiveBinderProxyCountReported = 853,
AtomProxyBytesTransferByFgBg = 10200,
AtomMobileBytesTransferByProcState = 10204,
AtomBiometricFrrNotification = 817,
AtomSensitiveContentMediaProjectionSession = 830,
AtomSensitiveNotificationAppProtectionSession = 831,
AtomSensitiveNotificationAppProtectionApplied = 832,
AtomSensitiveNotificationRedaction = 833,
AtomSensitiveContentAppProtection = 835,
AtomAppRestrictionStateChanged = 866,
AtomApplicationGrammaticalInflectionChanged = 584,
AtomSystemGrammaticalInflectionChanged = 816,
AtomHdmiEarcStatusReported = 701,
AtomHdmiSoundbarModeStatusReported = 724,
AtomHealthConnectApiCalled = 616,
AtomHealthConnectUsageStats = 617,
AtomHealthConnectStorageStats = 618,
AtomHealthConnectApiInvoked = 643,
AtomExerciseRouteApiCalled = 654,
AtomHealthConnectUiImpression = 623,
AtomHealthConnectUiInteraction = 624,
AtomHealthConnectAppOpenedReported = 625,
AtomHotwordEgressSizeAtomReported = 761,
AtomIkeSessionTerminated = 678,
AtomIkeLivenessCheckSessionValidated = 760,
AtomNegotiatedSecurityAssociation = 821,
AtomKeyboardConfigured = 682,
AtomKeyboardSystemsEventReported = 683,
AtomInputdeviceUsageReported = 686,
AtomTouchpadUsage = 10191,
AtomKernelOomKillOccurred = 754,
AtomEmergencyStateChanged = 633,
AtomChreSignificantMotionStateChanged = 868,
AtomMediaCodecReclaimRequestCompleted = 600,
AtomMediaCodecStarted = 641,
AtomMediaCodecStopped = 642,
AtomMediaCodecRendered = 684,
AtomMediaEditingEndedReported = 798,
AtomMteState = 10181,
AtomNfcObserveModeStateChanged = 855,
AtomNfcFieldChanged = 856,
AtomNfcPollingLoopNotificationReported = 857,
AtomNfcProprietaryCapabilitiesReported = 858,
AtomOndevicepersonalizationApiCalled = 711,
AtomComponentStateChangedReported = 863,
AtomPdfLoadReported = 859,
AtomPdfApiUsageReported = 860,
AtomPdfSearchReported = 861,
AtomPermissionRationaleDialogViewed = 645,
AtomPermissionRationaleDialogActionReported = 646,
AtomAppDataSharingUpdatesNotificationInteraction = 647,
AtomAppDataSharingUpdatesFragmentViewed = 648,
AtomAppDataSharingUpdatesFragmentActionReported = 649,
AtomEnhancedConfirmationDialogResultReported = 827,
AtomEnhancedConfirmationRestrictionCleared = 828,
AtomPhotopickerSessionInfoReported = 886,
AtomPhotopickerApiInfoReported = 887,
AtomPhotopickerUiEventLogged = 888,
AtomPhotopickerMediaItemStatusReported = 889,
AtomPhotopickerPreviewInfoLogged = 890,
AtomPhotopickerMenuInteractionLogged = 891,
AtomPhotopickerBannerInteractionLogged = 892,
AtomPhotopickerMediaLibraryInfoLogged = 893,
AtomPhotopickerPageInfoLogged = 894,
AtomPhotopickerMediaGridSyncInfoReported = 895,
AtomPhotopickerAlbumSyncInfoReported = 896,
AtomPhotopickerSearchInfoReported = 897,
AtomSearchDataExtractionDetailsReported = 898,
AtomEmbeddedPhotopickerInfoReported = 899,
AtomAtom9999 = 9999,
AtomAtom99999 = 99999,
AtomScreenOffReported = 776,
AtomScreenTimeoutOverrideReported = 836,
AtomScreenInteractiveSessionReported = 837,
AtomScreenDimReported = 867,
AtomMediaProviderDatabaseRollbackReported = 784,
AtomBackupSetupStatusReported = 785,
AtomRkpdPoolStats = 664,
AtomRkpdClientOperation = 665,
AtomSandboxApiCalled = 488,
AtomSandboxActivityEventOccurred = 735,
AtomSdkSandboxRestrictedAccessInSession = 796,
AtomSandboxSdkStorage = 10159,
AtomSelinuxAuditLog = 799,
AtomSettingsSpaReported = 622,
AtomTestExtensionAtomReported = 660,
AtomTestRestrictedAtomReported = 672,
AtomStatsSocketLossReported = 752,
AtomLockscreenShortcutSelected = 611,
AtomLockscreenShortcutTriggered = 612,
AtomLauncherImpressionEventV2 = 716,
AtomDisplaySwitchLatencyTracked = 753,
AtomNotificationListenerService = 829,
AtomNavHandleTouchPoints = 869,
AtomEmergencyNumberDialed = 637,
AtomCellularRadioPowerStateChanged = 713,
AtomEmergencyNumbersInfo = 10180,
AtomDataNetworkValidation = 10207,
AtomDataRatStateChanged = 854,
AtomConnectedChannelChanged = 882,
AtomQualifiedRatListChanged = 634,
AtomQnsImsCallDropStats = 635,
AtomQnsFallbackRestrictionChanged = 636,
AtomQnsRatPreferenceMismatchInfo = 10177,
AtomQnsHandoverTimeMillis = 10178,
AtomQnsHandoverPingpong = 10179,
AtomSatelliteController = 10182,
AtomSatelliteSession = 10183,
AtomSatelliteIncomingDatagram = 10184,
AtomSatelliteOutgoingDatagram = 10185,
AtomSatelliteProvision = 10186,
AtomSatelliteSosMessageRecommender = 10187,
AtomCarrierRoamingSatelliteSession = 10211,
AtomCarrierRoamingSatelliteControllerStats = 10212,
AtomControllerStatsPerPackage = 10213,
AtomSatelliteEntitlement = 10214,
AtomSatelliteConfigUpdater = 10215,
AtomSatelliteAccessController = 10219,
AtomCellularIdentifierDisclosed = 800,
AtomThreadnetworkTelemetryDataReported = 738,
AtomThreadnetworkTopoEntryRepeated = 739,
AtomThreadnetworkDeviceInfoReported = 740,
AtomBootIntegrityInfoReported = 775,
AtomTvLowPowerStandbyPolicy = 679,
AtomExternalTvInputEvent = 717,
AtomUwbActivityInfo = 10188,
AtomMediatorUpdated = 721,
AtomSysproxyBluetoothBytesTransfer = 10196,
AtomSysproxyConnectionUpdated = 786,
AtomMediaActionReported = 608,
AtomMediaControlsLaunched = 609,
AtomMediaSessionStateChanged = 677,
AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
AtomWearModeStateChanged = 715,
AtomRendererInitialized = 736,
AtomSchemaVersionReceived = 737,
AtomLayoutInspected = 741,
AtomLayoutExpressionInspected = 742,
AtomLayoutAnimationsInspected = 743,
AtomMaterialComponentsInspected = 744,
AtomTileRequested = 745,
AtomStateResponseReceived = 746,
AtomTileResponseReceived = 747,
AtomInflationFinished = 748,
AtomInflationFailed = 749,
AtomIgnoredInflationFailuresReported = 750,
AtomDrawableRendered = 751,
AtomWearAdaptiveSuspendStatsReported = 619,
AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
AtomWearPowerAnomalyServiceEventStatsReported = 621,
AtomWsWearTimeSession = 610,
AtomWsIncomingCallActionReported = 626,
AtomWsCallDisconnectionReported = 627,
AtomWsCallDurationReported = 628,
AtomWsCallUserExperienceLatencyReported = 629,
AtomWsCallInteractionReported = 630,
AtomWsOnBodyStateChanged = 787,
AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
AtomWsComplicationsImpactedNotificationEventReported = 804,
AtomWsStandaloneModeSnapshot = 10197,
AtomWsFavoriteWatchFaceSnapshot = 10206,
AtomWearPowerMenuOpened = 731,
AtomWearAssistantOpened = 755,
AtomWifiAwareNdpReported = 638,
AtomWifiAwareAttachReported = 639,
AtomWifiSelfRecoveryTriggered = 661,
AtomSoftApStarted = 680,
AtomSoftApStopped = 681,
AtomWifiLockReleased = 687,
AtomWifiLockDeactivated = 688,
AtomWifiConfigSaved = 689,
AtomWifiAwareResourceUsingChanged = 690,
AtomWifiAwareHalApiCalled = 691,
AtomWifiLocalOnlyRequestReceived = 692,
AtomWifiLocalOnlyRequestScanTriggered = 693,
AtomWifiThreadTaskExecuted = 694,
AtomWifiStateChanged = 700,
AtomPnoScanStarted = 719,
AtomPnoScanStopped = 720,
AtomWifiIsUnusableReported = 722,
AtomWifiApCapabilitiesReported = 723,
AtomSoftApStateChanged = 805,
AtomScorerPredictionResultReported = 884,
AtomWifiAwareCapabilities = 10190,
AtomWifiModuleInfo = 10193,
AtomWifiSettingInfo = 10194,
AtomWifiComplexSettingInfo = 10195,
AtomWifiConfiguredNetworkInfo = 10198,
}
impl AtomId {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::AtomUnspecified => "ATOM_UNSPECIFIED",
Self::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
Self::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
Self::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
Self::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
Self::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
Self::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
Self::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
Self::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
Self::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
Self::AtomLongPartialWakelockStateChanged => {
"ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED"
}
Self::AtomMobileRadioPowerStateChanged => {
"ATOM_MOBILE_RADIO_POWER_STATE_CHANGED"
}
Self::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
Self::AtomActivityManagerSleepStateChanged => {
"ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED"
}
Self::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
Self::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
Self::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
Self::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
Self::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
Self::AtomBatterySaverModeStateChanged => {
"ATOM_BATTERY_SAVER_MODE_STATE_CHANGED"
}
Self::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
Self::AtomDeviceIdlingModeStateChanged => {
"ATOM_DEVICE_IDLING_MODE_STATE_CHANGED"
}
Self::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
Self::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
Self::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
Self::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
Self::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
Self::AtomProcessLifeCycleStateChanged => {
"ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED"
}
Self::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
Self::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
Self::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
Self::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
Self::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
Self::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
Self::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
Self::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
Self::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
Self::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
Self::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
Self::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
Self::AtomSettingChanged => "ATOM_SETTING_CHANGED",
Self::AtomActivityForegroundStateChanged => {
"ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED"
}
Self::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
Self::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
Self::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
Self::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
Self::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
Self::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
Self::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
Self::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
Self::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
Self::AtomPictureInPictureStateChanged => {
"ATOM_PICTURE_IN_PICTURE_STATE_CHANGED"
}
Self::AtomWifiMulticastLockStateChanged => {
"ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED"
}
Self::AtomAppStartMemoryStateCaptured => {
"ATOM_APP_START_MEMORY_STATE_CAPTURED"
}
Self::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
Self::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
Self::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
Self::AtomForegroundServiceStateChanged => {
"ATOM_FOREGROUND_SERVICE_STATE_CHANGED"
}
Self::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
Self::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
Self::AtomKeyguardBouncerStateChanged => {
"ATOM_KEYGUARD_BOUNCER_STATE_CHANGED"
}
Self::AtomKeyguardBouncerPasswordEntered => {
"ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED"
}
Self::AtomAppDied => "ATOM_APP_DIED",
Self::AtomResourceConfigurationChanged => {
"ATOM_RESOURCE_CONFIGURATION_CHANGED"
}
Self::AtomBluetoothEnabledStateChanged => {
"ATOM_BLUETOOTH_ENABLED_STATE_CHANGED"
}
Self::AtomBluetoothConnectionStateChanged => {
"ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED"
}
Self::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
Self::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
Self::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
Self::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
Self::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
Self::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
Self::AtomMobileConnectionStateChanged => {
"ATOM_MOBILE_CONNECTION_STATE_CHANGED"
}
Self::AtomMobileRadioTechnologyChanged => {
"ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED"
}
Self::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
Self::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
Self::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
Self::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
Self::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
Self::AtomGenericAtom => "ATOM_GENERIC_ATOM",
Self::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
Self::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
Self::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
Self::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
Self::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
Self::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
Self::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
Self::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
Self::AtomSlowIo => "ATOM_SLOW_IO",
Self::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
Self::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
Self::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
Self::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
Self::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
Self::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
Self::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
Self::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
Self::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
Self::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
Self::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
Self::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
Self::AtomDocsUiFileOpCopyMoveModeReported => {
"ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED"
}
Self::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
Self::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
Self::AtomDocsUiInvalidScopedAccessRequest => {
"ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST"
}
Self::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
Self::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
Self::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
Self::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
Self::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
Self::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
Self::AtomAppCompacted => "ATOM_APP_COMPACTED",
Self::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
Self::AtomDocsUiPickerLaunchedFromReported => {
"ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED"
}
Self::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
Self::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
Self::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
Self::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
Self::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
Self::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
Self::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
Self::AtomBluetoothLinkLayerConnectionEvent => {
"ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT"
}
Self::AtomBluetoothAclConnectionStateChanged => {
"ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED"
}
Self::AtomBluetoothScoConnectionStateChanged => {
"ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED"
}
Self::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
Self::AtomAppOptimizedAfterDowngraded => {
"ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED"
}
Self::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
Self::AtomGnssNfwNotificationReported => {
"ATOM_GNSS_NFW_NOTIFICATION_REPORTED"
}
Self::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
Self::AtomUsbPortOverheatEventReported => {
"ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED"
}
Self::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
Self::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
Self::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
Self::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
Self::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
Self::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
Self::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
Self::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
Self::AtomBroadcastDispatchLatencyReported => {
"ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED"
}
Self::AtomAttentionManagerServiceResultReported => {
"ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED"
}
Self::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
Self::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
Self::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
Self::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
Self::AtomBiometricSystemHealthIssueDetected => {
"ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED"
}
Self::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
Self::AtomScheduledJobConstraintChanged => {
"ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED"
}
Self::AtomBluetoothActiveDeviceChanged => {
"ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED"
}
Self::AtomBluetoothA2dpPlaybackStateChanged => {
"ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED"
}
Self::AtomBluetoothA2dpCodecConfigChanged => {
"ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED"
}
Self::AtomBluetoothA2dpCodecCapabilityChanged => {
"ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED"
}
Self::AtomBluetoothA2dpAudioUnderrunReported => {
"ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED"
}
Self::AtomBluetoothA2dpAudioOverrunReported => {
"ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED"
}
Self::AtomBluetoothDeviceRssiReported => {
"ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED"
}
Self::AtomBluetoothDeviceFailedContactCounterReported => {
"ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED"
}
Self::AtomBluetoothDeviceTxPowerLevelReported => {
"ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED"
}
Self::AtomBluetoothHciTimeoutReported => {
"ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED"
}
Self::AtomBluetoothQualityReportReported => {
"ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED"
}
Self::AtomBluetoothDeviceInfoReported => {
"ATOM_BLUETOOTH_DEVICE_INFO_REPORTED"
}
Self::AtomBluetoothRemoteVersionInfoReported => {
"ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED"
}
Self::AtomBluetoothSdpAttributeReported => {
"ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED"
}
Self::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
Self::AtomBluetoothClassicPairingEventReported => {
"ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED"
}
Self::AtomBluetoothSmpPairingEventReported => {
"ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED"
}
Self::AtomScreenTimeoutExtensionReported => {
"ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED"
}
Self::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
Self::AtomPermissionGrantRequestResultReported => {
"ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED"
}
Self::AtomBluetoothSocketConnectionStateChanged => {
"ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED"
}
Self::AtomDeviceIdentifierAccessDenied => {
"ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED"
}
Self::AtomBubbleDeveloperErrorReported => {
"ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED"
}
Self::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
Self::AtomAssistGestureFeedbackReported => {
"ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED"
}
Self::AtomAssistGestureProgressReported => {
"ATOM_ASSIST_GESTURE_PROGRESS_REPORTED"
}
Self::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
Self::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
Self::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
Self::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
Self::AtomAppInstallOnExternalStorageReported => {
"ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED"
}
Self::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
Self::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
Self::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
Self::AtomSystemServerWatchdogOccurred => {
"ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED"
}
Self::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
Self::AtomBluetoothClassOfDeviceReported => {
"ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED"
}
Self::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
Self::AtomThermalThrottlingSeverityStateChanged => {
"ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED"
}
Self::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
Self::AtomMediametricsAudiopolicyReported => {
"ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED"
}
Self::AtomMediametricsAudiorecordReported => {
"ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED"
}
Self::AtomMediametricsAudiothreadReported => {
"ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED"
}
Self::AtomMediametricsAudiotrackReported => {
"ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED"
}
Self::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
Self::AtomMediametricsDrmWidevineReported => {
"ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED"
}
Self::AtomMediametricsExtractorReported => {
"ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED"
}
Self::AtomMediametricsMediadrmReported => {
"ATOM_MEDIAMETRICS_MEDIADRM_REPORTED"
}
Self::AtomMediametricsNuplayerReported => {
"ATOM_MEDIAMETRICS_NUPLAYER_REPORTED"
}
Self::AtomMediametricsRecorderReported => {
"ATOM_MEDIAMETRICS_RECORDER_REPORTED"
}
Self::AtomMediametricsDrmmanagerReported => {
"ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED"
}
Self::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
Self::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
Self::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
Self::AtomContentCaptureCallerMismatchReported => {
"ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED"
}
Self::AtomContentCaptureServiceEvents => {
"ATOM_CONTENT_CAPTURE_SERVICE_EVENTS"
}
Self::AtomContentCaptureSessionEvents => {
"ATOM_CONTENT_CAPTURE_SESSION_EVENTS"
}
Self::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
Self::AtomLocationManagerApiUsageReported => {
"ATOM_LOCATION_MANAGER_API_USAGE_REPORTED"
}
Self::AtomReviewPermissionsFragmentResultReported => {
"ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED"
}
Self::AtomRuntimePermissionsUpgradeResult => {
"ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT"
}
Self::AtomGrantPermissionsActivityButtonActions => {
"ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS"
}
Self::AtomLocationAccessCheckNotificationAction => {
"ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION"
}
Self::AtomAppPermissionFragmentActionReported => {
"ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED"
}
Self::AtomAppPermissionFragmentViewed => {
"ATOM_APP_PERMISSION_FRAGMENT_VIEWED"
}
Self::AtomAppPermissionsFragmentViewed => {
"ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED"
}
Self::AtomPermissionAppsFragmentViewed => {
"ATOM_PERMISSION_APPS_FRAGMENT_VIEWED"
}
Self::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
Self::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
Self::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
Self::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
Self::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
Self::AtomBackGestureReportedReported => {
"ATOM_BACK_GESTURE_REPORTED_REPORTED"
}
Self::AtomUpdateEngineUpdateAttemptReported => {
"ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED"
}
Self::AtomUpdateEngineSuccessfulUpdateReported => {
"ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED"
}
Self::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
Self::AtomAppCompatibilityChangeReported => {
"ATOM_APP_COMPATIBILITY_CHANGE_REPORTED"
}
Self::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
Self::AtomVmsClientConnectionStateChanged => {
"ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED"
}
Self::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
Self::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
Self::AtomMediaProviderPermissionRequested => {
"ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED"
}
Self::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
Self::AtomMediaProviderIdleMaintenanceFinished => {
"ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED"
}
Self::AtomRebootEscrowRecoveryReported => {
"ATOM_REBOOT_ESCROW_RECOVERY_REPORTED"
}
Self::AtomBootTimeEventDurationReported => {
"ATOM_BOOT_TIME_EVENT_DURATION_REPORTED"
}
Self::AtomBootTimeEventElapsedTimeReported => {
"ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED"
}
Self::AtomBootTimeEventUtcTimeReported => {
"ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED"
}
Self::AtomBootTimeEventErrorCodeReported => {
"ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED"
}
Self::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
Self::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
Self::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
Self::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
Self::AtomIntegrityCheckResultReported => {
"ATOM_INTEGRITY_CHECK_RESULT_REPORTED"
}
Self::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
Self::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
Self::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
Self::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
Self::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
Self::AtomWifiConnectionResultReported => {
"ATOM_WIFI_CONNECTION_RESULT_REPORTED"
}
Self::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
Self::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
Self::AtomForegroundServiceAppOpSessionEnded => {
"ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED"
}
Self::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
Self::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
Self::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
Self::AtomRankingSelected => "ATOM_RANKING_SELECTED",
Self::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
Self::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
Self::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
Self::AtomUserLifecycleJourneyReported => {
"ATOM_USER_LIFECYCLE_JOURNEY_REPORTED"
}
Self::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
Self::AtomAccessibilityShortcutReported => {
"ATOM_ACCESSIBILITY_SHORTCUT_REPORTED"
}
Self::AtomAccessibilityServiceReported => {
"ATOM_ACCESSIBILITY_SERVICE_REPORTED"
}
Self::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
Self::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
Self::AtomAutoRevokeNotificationClicked => {
"ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED"
}
Self::AtomAutoRevokeFragmentAppViewed => {
"ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED"
}
Self::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
Self::AtomAppPermissionGroupsFragmentAutoRevokeAction => {
"ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION"
}
Self::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
Self::AtomAudioPowerUsageDataReported => {
"ATOM_AUDIO_POWER_USAGE_DATA_REPORTED"
}
Self::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
Self::AtomMediaoutputOpSwitchReported => {
"ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED"
}
Self::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
Self::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
Self::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
Self::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
Self::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
Self::AtomCarUserHalModifyUserRequestReported => {
"ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED"
}
Self::AtomCarUserHalModifyUserResponseReported => {
"ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED"
}
Self::AtomCarUserHalPostSwitchResponseReported => {
"ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED"
}
Self::AtomCarUserHalInitialUserInfoRequestReported => {
"ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED"
}
Self::AtomCarUserHalInitialUserInfoResponseReported => {
"ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED"
}
Self::AtomCarUserHalUserAssociationRequestReported => {
"ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED"
}
Self::AtomCarUserHalSetUserAssociationResponseReported => {
"ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED"
}
Self::AtomNetworkIpProvisioningReported => {
"ATOM_NETWORK_IP_PROVISIONING_REPORTED"
}
Self::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
Self::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
Self::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
Self::AtomMediametricsAudiorecorddeviceusageReported => {
"ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED"
}
Self::AtomMediametricsAudiothreaddeviceusageReported => {
"ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED"
}
Self::AtomMediametricsAudiotrackdeviceusageReported => {
"ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED"
}
Self::AtomMediametricsAudiodeviceconnectionReported => {
"ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED"
}
Self::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
Self::AtomBlobLeased => "ATOM_BLOB_LEASED",
Self::AtomBlobOpened => "ATOM_BLOB_OPENED",
Self::AtomContactsProviderStatusReported => {
"ATOM_CONTACTS_PROVIDER_STATUS_REPORTED"
}
Self::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
Self::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
Self::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
Self::AtomUiInteractionFrameInfoReported => {
"ATOM_UI_INTERACTION_FRAME_INFO_REPORTED"
}
Self::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
Self::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
Self::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
Self::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
Self::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
Self::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
Self::AtomModemRestart => "ATOM_MODEM_RESTART",
Self::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
Self::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
Self::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
Self::AtomMediametricsMediaparserReported => {
"ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED"
}
Self::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
Self::AtomTextClassifierApiUsageReported => {
"ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED"
}
Self::AtomCarWatchdogKillStatsReported => {
"ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED"
}
Self::AtomMediametricsPlaybackReported => {
"ATOM_MEDIAMETRICS_PLAYBACK_REPORTED"
}
Self::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
Self::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
Self::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
Self::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
Self::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
Self::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
Self::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
Self::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
Self::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
Self::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
Self::AtomImsServiceEntitlementUpdated => {
"ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED"
}
Self::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
Self::AtomSimSpecificSettingsRestored => {
"ATOM_SIM_SPECIFIC_SETTINGS_RESTORED"
}
Self::AtomTextClassifierDownloadReported => {
"ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED"
}
Self::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
Self::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
Self::AtomBluetoothHalCrashReasonReported => {
"ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED"
}
Self::AtomRebootEscrowPreparationReported => {
"ATOM_REBOOT_ESCROW_PREPARATION_REPORTED"
}
Self::AtomRebootEscrowLskfCaptureReported => {
"ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED"
}
Self::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
Self::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
Self::AtomMediametricsAaudiostreamReported => {
"ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED"
}
Self::AtomMediaTranscodingSessionEnded => {
"ATOM_MEDIA_TRANSCODING_SESSION_ENDED"
}
Self::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
Self::AtomMagnificationModeWithImeOnReported => {
"ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED"
}
Self::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
Self::AtomAppSearchPutDocumentStatsReported => {
"ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED"
}
Self::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
Self::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
Self::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
Self::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
Self::AtomAuthPromptAuthenticateInvoked => {
"ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED"
}
Self::AtomAuthManagerCanAuthenticateInvoked => {
"ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED"
}
Self::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
Self::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
Self::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
Self::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
Self::AtomLocationTimeZoneProviderStateChanged => {
"ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED"
}
Self::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
Self::AtomTimeoutAutoExtendedReported => {
"ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED"
}
Self::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
Self::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
Self::AtomCarWatchdogIoOveruseStatsReported => {
"ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED"
}
Self::AtomUserLevelHibernationStateChanged => {
"ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED"
}
Self::AtomAppSearchInitializeStatsReported => {
"ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED"
}
Self::AtomAppSearchQueryStatsReported => {
"ATOM_APP_SEARCH_QUERY_STATS_REPORTED"
}
Self::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
Self::AtomNetworkIpReachabilityMonitorReported => {
"ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED"
}
Self::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
Self::AtomAnrOccurredProcessingStarted => {
"ATOM_ANR_OCCURRED_PROCESSING_STARTED"
}
Self::AtomAppSearchRemoveStatsReported => {
"ATOM_APP_SEARCH_REMOVE_STATS_REPORTED"
}
Self::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
Self::AtomPermissionUsageFragmentInteraction => {
"ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION"
}
Self::AtomPermissionDetailsInteraction => {
"ATOM_PERMISSION_DETAILS_INTERACTION"
}
Self::AtomPrivacySensorToggleInteraction => {
"ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION"
}
Self::AtomPrivacyToggleDialogInteraction => {
"ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION"
}
Self::AtomAppSearchOptimizeStatsReported => {
"ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED"
}
Self::AtomNonA11yToolServiceWarningReport => {
"ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT"
}
Self::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
Self::AtomSizeCompatRestartButtonEventReported => {
"ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED"
}
Self::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
Self::AtomNetworkDnsHandshakeReported => {
"ATOM_NETWORK_DNS_HANDSHAKE_REPORTED"
}
Self::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
Self::AtomBluetoothLeBatchScanReportDelay => {
"ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY"
}
Self::AtomAccessibilityFloatingMenuUiChanged => {
"ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED"
}
Self::AtomNeuralnetworksCompilationCompleted => {
"ATOM_NEURALNETWORKS_COMPILATION_COMPLETED"
}
Self::AtomNeuralnetworksExecutionCompleted => {
"ATOM_NEURALNETWORKS_EXECUTION_COMPLETED"
}
Self::AtomNeuralnetworksCompilationFailed => {
"ATOM_NEURALNETWORKS_COMPILATION_FAILED"
}
Self::AtomNeuralnetworksExecutionFailed => {
"ATOM_NEURALNETWORKS_EXECUTION_FAILED"
}
Self::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
Self::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
Self::AtomContextHubLoadedNanoappSnapshotReported => {
"ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED"
}
Self::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
Self::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
Self::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
Self::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
Self::AtomUwbRangingMeasurementReceived => {
"ATOM_UWB_RANGING_MEASUREMENT_RECEIVED"
}
Self::AtomTextClassifierDownloadWorkScheduled => {
"ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED"
}
Self::AtomTextClassifierDownloadWorkCompleted => {
"ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED"
}
Self::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
Self::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
Self::AtomNearbyDeviceScanStateChanged => {
"ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED"
}
Self::AtomCameraCompatControlEventReported => {
"ATOM_CAMERA_COMPAT_CONTROL_EVENT_REPORTED"
}
Self::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
Self::AtomMediametricsAudiotrackstatusReported => {
"ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED"
}
Self::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
Self::AtomLocationTimeZoneProviderControllerStateChanged => {
"ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED"
}
Self::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
Self::AtomDisplayHbmBrightnessChanged => {
"ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED"
}
Self::AtomPersistentUriPermissionsFlushed => {
"ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED"
}
Self::AtomEarlyBootCompOsArtifactsCheckReported => {
"ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED"
}
Self::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
Self::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
Self::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
Self::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
Self::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
Self::AtomMediametricsAudiorecordstatusReported => {
"ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED"
}
Self::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
Self::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
Self::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
Self::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
Self::AtomHotwordDetectorCreateRequested => {
"ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED"
}
Self::AtomHotwordDetectionServiceInitResultReported => {
"ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED"
}
Self::AtomHotwordDetectionServiceRestarted => {
"ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED"
}
Self::AtomHotwordDetectorKeyphraseTriggered => {
"ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED"
}
Self::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
Self::AtomBootCompletedBroadcastCompletionLatencyReported => {
"ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED"
}
Self::AtomContactsIndexerUpdateStatsReported => {
"ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED"
}
Self::AtomAppBackgroundRestrictionsInfo => {
"ATOM_APP_BACKGROUND_RESTRICTIONS_INFO"
}
Self::AtomMmsSmsProviderGetThreadIdFailed => {
"ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED"
}
Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed => {
"ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED"
}
Self::AtomPermissionReminderNotificationInteracted => {
"ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED"
}
Self::AtomRecentPermissionDecisionsInteracted => {
"ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED"
}
Self::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
Self::AtomLeAudioConnectionSessionReported => {
"ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED"
}
Self::AtomLeAudioBroadcastSessionReported => {
"ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED"
}
Self::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
Self::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
Self::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported => {
"ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED"
}
Self::AtomMagnificationFollowTypingFocusActivatedSessionReported => {
"ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED"
}
Self::AtomAccessibilityTextReadingOptionsChanged => {
"ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED"
}
Self::AtomWifiSetupFailureCrashReported => {
"ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED"
}
Self::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
Self::AtomIsolatedCompilationScheduled => {
"ATOM_ISOLATED_COMPILATION_SCHEDULED"
}
Self::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
Self::AtomOnsOpportunisticEsimProvisioningComplete => {
"ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE"
}
Self::AtomSystemServerPreWatchdogOccurred => {
"ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED"
}
Self::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
Self::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
Self::AtomRemoteKeyProvisioningAttempt => {
"ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT"
}
Self::AtomRemoteKeyProvisioningNetworkInfo => {
"ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO"
}
Self::AtomRemoteKeyProvisioningTiming => {
"ATOM_REMOTE_KEY_PROVISIONING_TIMING"
}
Self::AtomMediaoutputOpInteractionReport => {
"ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT"
}
Self::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
Self::AtomAutofillPresentationEventReported => {
"ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED"
}
Self::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
Self::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
Self::AtomSafetyCenterSystemEventReported => {
"ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED"
}
Self::AtomSafetyCenterInteractionReported => {
"ATOM_SAFETY_CENTER_INTERACTION_REPORTED"
}
Self::AtomSettingsProviderSettingChanged => {
"ATOM_SETTINGS_PROVIDER_SETTING_CHANGED"
}
Self::AtomBroadcastDeliveryEventReported => {
"ATOM_BROADCAST_DELIVERY_EVENT_REPORTED"
}
Self::AtomServiceRequestEventReported => {
"ATOM_SERVICE_REQUEST_EVENT_REPORTED"
}
Self::AtomProviderAcquisitionEventReported => {
"ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED"
}
Self::AtomBluetoothDeviceNameReported => {
"ATOM_BLUETOOTH_DEVICE_NAME_REPORTED"
}
Self::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
Self::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
Self::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
Self::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
Self::AtomPrivacySignalNotificationInteraction => {
"ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION"
}
Self::AtomPrivacySignalIssueCardInteraction => {
"ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION"
}
Self::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
Self::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
Self::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
Self::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
Self::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
Self::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
Self::AtomNetworkDnsServerSupportReported => {
"ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED"
}
Self::AtomVmBooted => "ATOM_VM_BOOTED",
Self::AtomVmExited => "ATOM_VM_EXITED",
Self::AtomAmbientBrightnessStatsReported => {
"ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED"
}
Self::AtomMediametricsSpatializercapabilitiesReported => {
"ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED"
}
Self::AtomMediametricsSpatializerdeviceenabledReported => {
"ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED"
}
Self::AtomMediametricsHeadtrackerdeviceenabledReported => {
"ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED"
}
Self::AtomMediametricsHeadtrackerdevicesupportedReported => {
"ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED"
}
Self::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
Self::AtomDeviceWideJobConstraintChanged => {
"ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED"
}
Self::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
Self::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
Self::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
Self::AtomSystemDefaultNetworkChanged => {
"ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED"
}
Self::AtomIwlanSetupDataCallResultReported => {
"ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED"
}
Self::AtomIwlanPdnDisconnectedReasonReported => {
"ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED"
}
Self::AtomAirplaneModeSessionReported => {
"ATOM_AIRPLANE_MODE_SESSION_REPORTED"
}
Self::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
Self::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
Self::AtomPackageInstallationSessionReported => {
"ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED"
}
Self::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
Self::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
Self::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
Self::AtomBluetoothDisconnectionReasonReported => {
"ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED"
}
Self::AtomBluetoothLocalVersionsReported => {
"ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED"
}
Self::AtomBluetoothRemoteSupportedFeaturesReported => {
"ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED"
}
Self::AtomBluetoothLocalSupportedFeaturesReported => {
"ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED"
}
Self::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
Self::AtomBrightnessConfigurationUpdated => {
"ATOM_BRIGHTNESS_CONFIGURATION_UPDATED"
}
Self::AtomWearMediaOutputSwitcherLaunched => {
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED"
}
Self::AtomWearMediaOutputSwitcherFinished => {
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED"
}
Self::AtomWearMediaOutputSwitcherConnectionReported => {
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED"
}
Self::AtomWearMediaOutputSwitcherDeviceScanTriggered => {
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED"
}
Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => {
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY"
}
Self::AtomWearMediaOutputSwitcherConnectDeviceLatency => {
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY"
}
Self::AtomPackageManagerSnapshotReported => {
"ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED"
}
Self::AtomPackageManagerAppsFilterCacheBuildReported => {
"ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED"
}
Self::AtomPackageManagerAppsFilterCacheUpdateReported => {
"ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED"
}
Self::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency => {
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY"
}
Self::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
Self::AtomWsWatchFaceFavoriteActionReported => {
"ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED"
}
Self::AtomWsWatchFaceSetActionReported => {
"ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED"
}
Self::AtomPackageUninstallationReported => {
"ATOM_PACKAGE_UNINSTALLATION_REPORTED"
}
Self::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
Self::AtomGameModeConfigurationChanged => {
"ATOM_GAME_MODE_CONFIGURATION_CHANGED"
}
Self::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
Self::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
Self::AtomNetworkSliceDailyDataUsageReported => {
"ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED"
}
Self::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
Self::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
Self::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
Self::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
Self::AtomGetTypeAccessedWithoutPermission => {
"ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION"
}
Self::AtomMobileBundledAppInfoGathered => {
"ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED"
}
Self::AtomWsWatchFaceComplicationSetChanged => {
"ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED"
}
Self::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
Self::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
Self::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
Self::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
Self::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
Self::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
Self::AtomPerformanceHintSessionReported => {
"ATOM_PERFORMANCE_HINT_SESSION_REPORTED"
}
Self::AtomMediametricsMidiDeviceCloseReported => {
"ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED"
}
Self::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
Self::AtomHotwordAudioEgressEventReported => {
"ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED"
}
Self::AtomLocationEnabledStateChanged => {
"ATOM_LOCATION_ENABLED_STATE_CHANGED"
}
Self::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
Self::AtomUsbComplianceWarningsReported => {
"ATOM_USB_COMPLIANCE_WARNINGS_REPORTED"
}
Self::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
Self::AtomMediaProviderVolumeRecoveryReported => {
"ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED"
}
Self::AtomBiometricPropertiesCollected => {
"ATOM_BIOMETRIC_PROPERTIES_COLLECTED"
}
Self::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
Self::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
Self::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
Self::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
Self::AtomDeviceLogAccessEventReported => {
"ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED"
}
Self::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
Self::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
Self::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
Self::AtomNetworkValidationFailureStatsDailyReported => {
"ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED"
}
Self::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
Self::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
Self::AtomWsNotificationBridgemodeUpdated => {
"ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED"
}
Self::AtomWsNotificationDismissalActioned => {
"ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED"
}
Self::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
Self::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
Self::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
Self::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
Self::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
Self::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
Self::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
Self::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
Self::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
Self::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
Self::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
Self::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
Self::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
Self::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
Self::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
Self::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
Self::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
Self::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
Self::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
Self::AtomDiskSpace => "ATOM_DISK_SPACE",
Self::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
Self::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
Self::AtomTemperature => "ATOM_TEMPERATURE",
Self::AtomBinderCalls => "ATOM_BINDER_CALLS",
Self::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
Self::AtomLooperStats => "ATOM_LOOPER_STATS",
Self::AtomDiskStats => "ATOM_DISK_STATS",
Self::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
Self::AtomAppSize => "ATOM_APP_SIZE",
Self::AtomCategorySize => "ATOM_CATEGORY_SIZE",
Self::AtomProcStats => "ATOM_PROC_STATS",
Self::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
Self::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
Self::AtomDiskIo => "ATOM_DISK_IO",
Self::AtomPowerProfile => "ATOM_POWER_PROFILE",
Self::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
Self::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
Self::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
Self::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
Self::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
Self::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
Self::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
Self::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
Self::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
Self::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
Self::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
Self::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
Self::AtomRoleHolder => "ATOM_ROLE_HOLDER",
Self::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
Self::AtomTrainInfo => "ATOM_TRAIN_INFO",
Self::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
Self::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
Self::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
Self::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
Self::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
Self::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
Self::AtomFaceSettings => "ATOM_FACE_SETTINGS",
Self::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
Self::AtomAppOps => "ATOM_APP_OPS",
Self::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
Self::AtomSurfaceflingerStatsGlobalInfo => {
"ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO"
}
Self::AtomSurfaceflingerStatsLayerInfo => {
"ATOM_SURFACEFLINGER_STATS_LAYER_INFO"
}
Self::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
Self::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
Self::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
Self::AtomDangerousPermissionStateSampled => {
"ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED"
}
Self::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
Self::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
Self::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
Self::AtomPackageNotificationPreferences => {
"ATOM_PACKAGE_NOTIFICATION_PREFERENCES"
}
Self::AtomPackageNotificationChannelPreferences => {
"ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES"
}
Self::AtomPackageNotificationChannelGroupPreferences => {
"ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES"
}
Self::AtomGnssStats => "ATOM_GNSS_STATS",
Self::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
Self::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
Self::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
Self::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
Self::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
Self::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
Self::AtomBlobInfo => "ATOM_BLOB_INFO",
Self::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
Self::AtomBytesTransferByTagAndMetered => {
"ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED"
}
Self::AtomDndModeRule => "ATOM_DND_MODE_RULE",
Self::AtomGeneralExternalStorageAccessStats => {
"ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS"
}
Self::AtomIncomingSms => "ATOM_INCOMING_SMS",
Self::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
Self::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
Self::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
Self::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
Self::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
Self::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
Self::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
Self::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
Self::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
Self::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
Self::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
Self::AtomCpuCyclesPerThreadGroupCluster => {
"ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER"
}
Self::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
Self::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
Self::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
Self::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
Self::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
Self::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
Self::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
Self::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
Self::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
Self::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
Self::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
Self::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
Self::AtomBatteryUsageStatsBeforeReset => {
"ATOM_BATTERY_USAGE_STATS_BEFORE_RESET"
}
Self::AtomBatteryUsageStatsSinceReset => {
"ATOM_BATTERY_USAGE_STATS_SINCE_RESET"
}
Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => {
"ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL"
}
Self::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
Self::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
Self::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
Self::AtomVmstat => "ATOM_VMSTAT",
Self::AtomKeystore2KeyCreationWithGeneralInfo => {
"ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO"
}
Self::AtomKeystore2KeyCreationWithAuthInfo => {
"ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO"
}
Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo => {
"ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO"
}
Self::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo => {
"ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO"
}
Self::AtomKeystore2KeyOperationWithGeneralInfo => {
"ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO"
}
Self::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
Self::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
Self::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
Self::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
Self::AtomAccessibilityFloatingMenuStats => {
"ATOM_ACCESSIBILITY_FLOATING_MENU_STATS"
}
Self::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
Self::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
Self::AtomCarWatchdogSystemIoUsageSummary => {
"ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY"
}
Self::AtomCarWatchdogUidIoUsageSummary => {
"ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY"
}
Self::AtomImsRegistrationFeatureTagStats => {
"ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS"
}
Self::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
Self::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
Self::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
Self::AtomSipTransportFeatureTagStats => {
"ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS"
}
Self::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
Self::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
Self::AtomImsDedicatedBearerListenerEvent => {
"ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT"
}
Self::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
Self::AtomImsRegistrationServiceDescStats => {
"ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS"
}
Self::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
Self::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
Self::AtomGbaEvent => "ATOM_GBA_EVENT",
Self::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
Self::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
Self::AtomPersistentUriPermissionsAmountPerPackage => {
"ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE"
}
Self::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
Self::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
Self::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
Self::AtomUserInfo => "ATOM_USER_INFO",
Self::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
Self::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
Self::AtomRemoteKeyProvisioningErrorCounts => {
"ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS"
}
Self::AtomSafetyState => "ATOM_SAFETY_STATE",
Self::AtomIncomingMms => "ATOM_INCOMING_MMS",
Self::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
Self::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
Self::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
Self::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
Self::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
Self::AtomNetworkSelectionRematchReasonsInfo => {
"ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO"
}
Self::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
Self::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
Self::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
Self::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
Self::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
Self::AtomWsActiveWatchFaceComplicationSetSnapshot => {
"ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT"
}
Self::AtomProcessState => "ATOM_PROCESS_STATE",
Self::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
Self::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
Self::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
Self::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
Self::AtomWsFavouriteWatchFaceListSnapshot => {
"ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT"
}
Self::AtomAdaptiveAuthUnlockAfterLockReported => {
"ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED"
}
Self::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
Self::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
Self::AtomThermalHeadroomThresholdsCalled => {
"ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED"
}
Self::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
Self::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
Self::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
Self::AtomJsscriptengineLatencyReported => {
"ATOM_JSSCRIPTENGINE_LATENCY_REPORTED"
}
Self::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
Self::AtomAdServicesMesurementReportsUploaded => {
"ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED"
}
Self::AtomMobileDataDownloadFileGroupStatusReported => {
"ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED"
}
Self::AtomMobileDataDownloadDownloadResultReported => {
"ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED"
}
Self::AtomAdServicesSettingsUsageReported => {
"ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED"
}
Self::AtomBackgroundFetchProcessReported => {
"ATOM_BACKGROUND_FETCH_PROCESS_REPORTED"
}
Self::AtomUpdateCustomAudienceProcessReported => {
"ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED"
}
Self::AtomRunAdBiddingProcessReported => {
"ATOM_RUN_AD_BIDDING_PROCESS_REPORTED"
}
Self::AtomRunAdScoringProcessReported => {
"ATOM_RUN_AD_SCORING_PROCESS_REPORTED"
}
Self::AtomRunAdSelectionProcessReported => {
"ATOM_RUN_AD_SELECTION_PROCESS_REPORTED"
}
Self::AtomRunAdBiddingPerCaProcessReported => {
"ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED"
}
Self::AtomMobileDataDownloadFileGroupStorageStatsReported => {
"ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED"
}
Self::AtomAdServicesMeasurementRegistrations => {
"ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS"
}
Self::AtomAdServicesGetTopicsReported => {
"ATOM_AD_SERVICES_GET_TOPICS_REPORTED"
}
Self::AtomAdServicesEpochComputationGetTopTopicsReported => {
"ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED"
}
Self::AtomAdServicesEpochComputationClassifierReported => {
"ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
}
Self::AtomAdServicesBackCompatGetTopicsReported => {
"ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED"
}
Self::AtomAdServicesBackCompatEpochComputationClassifierReported => {
"ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
}
Self::AtomAdServicesMeasurementDebugKeys => {
"ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS"
}
Self::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
Self::AtomAdServicesBackgroundJobsExecutionReported => {
"ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED"
}
Self::AtomAdServicesMeasurementDelayedSourceRegistration => {
"ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION"
}
Self::AtomAdServicesMeasurementAttribution => {
"ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION"
}
Self::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
Self::AtomAdServicesMeasurementWipeout => {
"ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT"
}
Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys => {
"ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS"
}
Self::AtomAdServicesEnrollmentDataStored => {
"ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED"
}
Self::AtomAdServicesEnrollmentFileDownloaded => {
"ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED"
}
Self::AtomAdServicesEnrollmentMatched => {
"ATOM_AD_SERVICES_ENROLLMENT_MATCHED"
}
Self::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
Self::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
Self::AtomAdServicesMeasurementClickVerification => {
"ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION"
}
Self::AtomAdServicesEncryptionKeyFetched => {
"ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED"
}
Self::AtomAdServicesEncryptionKeyDbTransactionEnded => {
"ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED"
}
Self::AtomDestinationRegisteredBeacons => {
"ATOM_DESTINATION_REGISTERED_BEACONS"
}
Self::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
Self::AtomInteractionReportingTableCleared => {
"ATOM_INTERACTION_REPORTING_TABLE_CLEARED"
}
Self::AtomAppManifestConfigHelperCalled => {
"ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED"
}
Self::AtomAdFilteringProcessJoinCaReported => {
"ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED"
}
Self::AtomAdFilteringProcessAdSelectionReported => {
"ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED"
}
Self::AtomAdCounterHistogramUpdaterReported => {
"ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED"
}
Self::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
Self::AtomKAnonImmediateSignJoinStatusReported => {
"ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED"
}
Self::AtomKAnonBackgroundJobStatusReported => {
"ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED"
}
Self::AtomKAnonInitializeStatusReported => {
"ATOM_K_ANON_INITIALIZE_STATUS_REPORTED"
}
Self::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
Self::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
Self::AtomKAnonKeyAttestationStatusReported => {
"ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED"
}
Self::AtomGetAdSelectionDataApiCalled => {
"ATOM_GET_AD_SELECTION_DATA_API_CALLED"
}
Self::AtomGetAdSelectionDataBuyerInputGenerated => {
"ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED"
}
Self::AtomBackgroundJobSchedulingReported => {
"ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED"
}
Self::AtomTopicsEncryptionEpochComputationReported => {
"ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED"
}
Self::AtomTopicsEncryptionGetTopicsReported => {
"ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED"
}
Self::AtomAdservicesShellCommandCalled => {
"ATOM_ADSERVICES_SHELL_COMMAND_CALLED"
}
Self::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
Self::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
Self::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
Self::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
Self::AtomPersistAdSelectionResultCalled => {
"ATOM_PERSIST_AD_SELECTION_RESULT_CALLED"
}
Self::AtomServerAuctionKeyFetchCalled => {
"ATOM_SERVER_AUCTION_KEY_FETCH_CALLED"
}
Self::AtomServerAuctionBackgroundKeyFetchEnabled => {
"ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED"
}
Self::AtomAdServicesMeasurementProcessOdpRegistration => {
"ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION"
}
Self::AtomAdServicesMeasurementNotifyRegistrationToOdp => {
"ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP"
}
Self::AtomSelectAdsFromOutcomesApiCalled => {
"ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED"
}
Self::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
Self::AtomAdServicesEnrollmentTransactionStats => {
"ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS"
}
Self::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
Self::AtomAiWallpapersTemplateSelected => {
"ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED"
}
Self::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
Self::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
Self::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
Self::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
Self::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
Self::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
Self::AtomAppSearchSetSchemaStatsReported => {
"ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED"
}
Self::AtomAppSearchSchemaMigrationStatsReported => {
"ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED"
}
Self::AtomAppSearchUsageSearchIntentStatsReported => {
"ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED"
}
Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported => {
"ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED"
}
Self::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
Self::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
Self::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
Self::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
Self::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
Self::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
Self::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
Self::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
Self::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
Self::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
Self::AtomAutofillFillRequestReported => {
"ATOM_AUTOFILL_FILL_REQUEST_REPORTED"
}
Self::AtomAutofillFillResponseReported => {
"ATOM_AUTOFILL_FILL_RESPONSE_REPORTED"
}
Self::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
Self::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
Self::AtomAutofillFieldClassificationEventReported => {
"ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED"
}
Self::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
Self::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
Self::AtomCarWakeupFromSuspendReported => {
"ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED"
}
Self::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
Self::AtomBluetoothHashedDeviceNameReported => {
"ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED"
}
Self::AtomBluetoothL2capCocClientConnection => {
"ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION"
}
Self::AtomBluetoothL2capCocServerConnection => {
"ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION"
}
Self::AtomBluetoothLeSessionConnected => {
"ATOM_BLUETOOTH_LE_SESSION_CONNECTED"
}
Self::AtomRestrictedBluetoothDeviceNameReported => {
"ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED"
}
Self::AtomBluetoothProfileConnectionAttempted => {
"ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED"
}
Self::AtomBluetoothContentProfileErrorReported => {
"ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED"
}
Self::AtomBluetoothRfcommConnectionAttempted => {
"ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED"
}
Self::AtomRemoteDeviceInformationWithMetricId => {
"ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID"
}
Self::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
Self::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
Self::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
Self::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
Self::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
Self::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
Self::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
Self::AtomBluetoothCrossLayerEventReported => {
"ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED"
}
Self::AtomBroadcastAudioSessionReported => {
"ATOM_BROADCAST_AUDIO_SESSION_REPORTED"
}
Self::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
Self::AtomBluetoothRfcommConnectionReportedAtClose => {
"ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE"
}
Self::AtomCameraFeatureCombinationQueryEvent => {
"ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT"
}
Self::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
Self::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
Self::AtomTetheringActiveSessionsReported => {
"ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED"
}
Self::AtomNetworkStatsRecorderFileOperated => {
"ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED"
}
Self::AtomCoreNetworkingTerribleErrorOccurred => {
"ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED"
}
Self::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
Self::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
Self::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
Self::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
Self::AtomCpuPolicy => "ATOM_CPU_POLICY",
Self::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
Self::AtomCredentialManagerInitPhaseReported => {
"ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED"
}
Self::AtomCredentialManagerCandidatePhaseReported => {
"ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED"
}
Self::AtomCredentialManagerFinalPhaseReported => {
"ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED"
}
Self::AtomCredentialManagerTotalReported => {
"ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED"
}
Self::AtomCredentialManagerFinalnouidReported => {
"ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED"
}
Self::AtomCredentialManagerGetReported => {
"ATOM_CREDENTIAL_MANAGER_GET_REPORTED"
}
Self::AtomCredentialManagerAuthClickReported => {
"ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED"
}
Self::AtomCredentialManagerApiv2Called => {
"ATOM_CREDENTIAL_MANAGER_APIV2_CALLED"
}
Self::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
Self::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
Self::AtomCronetEngineBuilderInitialized => {
"ATOM_CRONET_ENGINE_BUILDER_INITIALIZED"
}
Self::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
Self::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
Self::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
Self::AtomDesktopModeSessionTaskUpdate => {
"ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE"
}
Self::AtomDeviceLockCheckInRequestReported => {
"ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED"
}
Self::AtomDeviceLockProvisioningCompleteReported => {
"ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED"
}
Self::AtomDeviceLockKioskAppRequestReported => {
"ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED"
}
Self::AtomDeviceLockCheckInRetryReported => {
"ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED"
}
Self::AtomDeviceLockProvisionFailureReported => {
"ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED"
}
Self::AtomDeviceLockLockUnlockDeviceFailureReported => {
"ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED"
}
Self::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
Self::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
Self::AtomDisplayModeDirectorVoteChanged => {
"ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED"
}
Self::AtomExternalDisplayStateChanged => {
"ATOM_EXTERNAL_DISPLAY_STATE_CHANGED"
}
Self::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
Self::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
Self::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
Self::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
Self::AtomExpressHistogramSampleReported => {
"ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED"
}
Self::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
Self::AtomExpressUidHistogramSampleReported => {
"ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED"
}
Self::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
Self::AtomFederatedComputeTrainingEventReported => {
"ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED"
}
Self::AtomExampleIteratorNextLatencyReported => {
"ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED"
}
Self::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
Self::AtomBalAllowed => "ATOM_BAL_ALLOWED",
Self::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
Self::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
Self::AtomStylusPredictionMetricsReported => {
"ATOM_STYLUS_PREDICTION_METRICS_REPORTED"
}
Self::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
Self::AtomMediaProjectionStateChanged => {
"ATOM_MEDIA_PROJECTION_STATE_CHANGED"
}
Self::AtomMediaProjectionTargetChanged => {
"ATOM_MEDIA_PROJECTION_TARGET_CHANGED"
}
Self::AtomExcessiveBinderProxyCountReported => {
"ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED"
}
Self::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
Self::AtomMobileBytesTransferByProcState => {
"ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE"
}
Self::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
Self::AtomSensitiveContentMediaProjectionSession => {
"ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION"
}
Self::AtomSensitiveNotificationAppProtectionSession => {
"ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION"
}
Self::AtomSensitiveNotificationAppProtectionApplied => {
"ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED"
}
Self::AtomSensitiveNotificationRedaction => {
"ATOM_SENSITIVE_NOTIFICATION_REDACTION"
}
Self::AtomSensitiveContentAppProtection => {
"ATOM_SENSITIVE_CONTENT_APP_PROTECTION"
}
Self::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
Self::AtomApplicationGrammaticalInflectionChanged => {
"ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED"
}
Self::AtomSystemGrammaticalInflectionChanged => {
"ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED"
}
Self::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
Self::AtomHdmiSoundbarModeStatusReported => {
"ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED"
}
Self::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
Self::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
Self::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
Self::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
Self::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
Self::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
Self::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
Self::AtomHealthConnectAppOpenedReported => {
"ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED"
}
Self::AtomHotwordEgressSizeAtomReported => {
"ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED"
}
Self::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
Self::AtomIkeLivenessCheckSessionValidated => {
"ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED"
}
Self::AtomNegotiatedSecurityAssociation => {
"ATOM_NEGOTIATED_SECURITY_ASSOCIATION"
}
Self::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
Self::AtomKeyboardSystemsEventReported => {
"ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED"
}
Self::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
Self::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
Self::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
Self::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
Self::AtomChreSignificantMotionStateChanged => {
"ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED"
}
Self::AtomMediaCodecReclaimRequestCompleted => {
"ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED"
}
Self::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
Self::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
Self::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
Self::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
Self::AtomMteState => "ATOM_MTE_STATE",
Self::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
Self::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
Self::AtomNfcPollingLoopNotificationReported => {
"ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED"
}
Self::AtomNfcProprietaryCapabilitiesReported => {
"ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED"
}
Self::AtomOndevicepersonalizationApiCalled => {
"ATOM_ONDEVICEPERSONALIZATION_API_CALLED"
}
Self::AtomComponentStateChangedReported => {
"ATOM_COMPONENT_STATE_CHANGED_REPORTED"
}
Self::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
Self::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
Self::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
Self::AtomPermissionRationaleDialogViewed => {
"ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED"
}
Self::AtomPermissionRationaleDialogActionReported => {
"ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED"
}
Self::AtomAppDataSharingUpdatesNotificationInteraction => {
"ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION"
}
Self::AtomAppDataSharingUpdatesFragmentViewed => {
"ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED"
}
Self::AtomAppDataSharingUpdatesFragmentActionReported => {
"ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED"
}
Self::AtomEnhancedConfirmationDialogResultReported => {
"ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED"
}
Self::AtomEnhancedConfirmationRestrictionCleared => {
"ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED"
}
Self::AtomPhotopickerSessionInfoReported => {
"ATOM_PHOTOPICKER_SESSION_INFO_REPORTED"
}
Self::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
Self::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
Self::AtomPhotopickerMediaItemStatusReported => {
"ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED"
}
Self::AtomPhotopickerPreviewInfoLogged => {
"ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED"
}
Self::AtomPhotopickerMenuInteractionLogged => {
"ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED"
}
Self::AtomPhotopickerBannerInteractionLogged => {
"ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED"
}
Self::AtomPhotopickerMediaLibraryInfoLogged => {
"ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED"
}
Self::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
Self::AtomPhotopickerMediaGridSyncInfoReported => {
"ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED"
}
Self::AtomPhotopickerAlbumSyncInfoReported => {
"ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED"
}
Self::AtomPhotopickerSearchInfoReported => {
"ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED"
}
Self::AtomSearchDataExtractionDetailsReported => {
"ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED"
}
Self::AtomEmbeddedPhotopickerInfoReported => {
"ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED"
}
Self::AtomAtom9999 => "ATOM_ATOM_9999",
Self::AtomAtom99999 => "ATOM_ATOM_99999",
Self::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
Self::AtomScreenTimeoutOverrideReported => {
"ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED"
}
Self::AtomScreenInteractiveSessionReported => {
"ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED"
}
Self::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
Self::AtomMediaProviderDatabaseRollbackReported => {
"ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED"
}
Self::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
Self::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
Self::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
Self::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
Self::AtomSandboxActivityEventOccurred => {
"ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED"
}
Self::AtomSdkSandboxRestrictedAccessInSession => {
"ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION"
}
Self::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
Self::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
Self::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
Self::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
Self::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
Self::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
Self::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
Self::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
Self::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
Self::AtomDisplaySwitchLatencyTracked => {
"ATOM_DISPLAY_SWITCH_LATENCY_TRACKED"
}
Self::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
Self::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
Self::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
Self::AtomCellularRadioPowerStateChanged => {
"ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED"
}
Self::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
Self::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
Self::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
Self::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
Self::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
Self::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
Self::AtomQnsFallbackRestrictionChanged => {
"ATOM_QNS_FALLBACK_RESTRICTION_CHANGED"
}
Self::AtomQnsRatPreferenceMismatchInfo => {
"ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO"
}
Self::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
Self::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
Self::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
Self::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
Self::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
Self::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
Self::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
Self::AtomSatelliteSosMessageRecommender => {
"ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER"
}
Self::AtomCarrierRoamingSatelliteSession => {
"ATOM_CARRIER_ROAMING_SATELLITE_SESSION"
}
Self::AtomCarrierRoamingSatelliteControllerStats => {
"ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS"
}
Self::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
Self::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
Self::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
Self::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
Self::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
Self::AtomThreadnetworkTelemetryDataReported => {
"ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED"
}
Self::AtomThreadnetworkTopoEntryRepeated => {
"ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED"
}
Self::AtomThreadnetworkDeviceInfoReported => {
"ATOM_THREADNETWORK_DEVICE_INFO_REPORTED"
}
Self::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
Self::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
Self::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
Self::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
Self::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
Self::AtomSysproxyBluetoothBytesTransfer => {
"ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER"
}
Self::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
Self::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
Self::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
Self::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency => {
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY"
}
Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable => {
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE"
}
Self::AtomWearMediaOutputSwitcherFastpairApiTimeout => {
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT"
}
Self::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
Self::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
Self::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
Self::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
Self::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
Self::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
Self::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
Self::AtomTileRequested => "ATOM_TILE_REQUESTED",
Self::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
Self::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
Self::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
Self::AtomInflationFailed => "ATOM_INFLATION_FAILED",
Self::AtomIgnoredInflationFailuresReported => {
"ATOM_IGNORED_INFLATION_FAILURES_REPORTED"
}
Self::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
Self::AtomWearAdaptiveSuspendStatsReported => {
"ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED"
}
Self::AtomWearPowerAnomalyServiceOperationalStatsReported => {
"ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED"
}
Self::AtomWearPowerAnomalyServiceEventStatsReported => {
"ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED"
}
Self::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
Self::AtomWsIncomingCallActionReported => {
"ATOM_WS_INCOMING_CALL_ACTION_REPORTED"
}
Self::AtomWsCallDisconnectionReported => {
"ATOM_WS_CALL_DISCONNECTION_REPORTED"
}
Self::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
Self::AtomWsCallUserExperienceLatencyReported => {
"ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED"
}
Self::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
Self::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
Self::AtomWsWatchFaceRestrictedComplicationsImpacted => {
"ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED"
}
Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => {
"ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED"
}
Self::AtomWsComplicationsImpactedNotificationEventReported => {
"ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED"
}
Self::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
Self::AtomWsFavoriteWatchFaceSnapshot => {
"ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT"
}
Self::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
Self::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
Self::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
Self::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
Self::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
Self::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
Self::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
Self::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
Self::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
Self::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
Self::AtomWifiAwareResourceUsingChanged => {
"ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED"
}
Self::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
Self::AtomWifiLocalOnlyRequestReceived => {
"ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED"
}
Self::AtomWifiLocalOnlyRequestScanTriggered => {
"ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED"
}
Self::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
Self::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
Self::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
Self::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
Self::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
Self::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
Self::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
Self::AtomScorerPredictionResultReported => {
"ATOM_SCORER_PREDICTION_RESULT_REPORTED"
}
Self::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
Self::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
Self::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
Self::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
Self::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"ATOM_UNSPECIFIED" => Some(Self::AtomUnspecified),
"ATOM_BLE_SCAN_STATE_CHANGED" => Some(Self::AtomBleScanStateChanged),
"ATOM_PROCESS_STATE_CHANGED" => Some(Self::AtomProcessStateChanged),
"ATOM_BLE_SCAN_RESULT_RECEIVED" => Some(Self::AtomBleScanResultReceived),
"ATOM_SENSOR_STATE_CHANGED" => Some(Self::AtomSensorStateChanged),
"ATOM_GPS_SCAN_STATE_CHANGED" => Some(Self::AtomGpsScanStateChanged),
"ATOM_SYNC_STATE_CHANGED" => Some(Self::AtomSyncStateChanged),
"ATOM_SCHEDULED_JOB_STATE_CHANGED" => {
Some(Self::AtomScheduledJobStateChanged)
}
"ATOM_SCREEN_BRIGHTNESS_CHANGED" => Some(Self::AtomScreenBrightnessChanged),
"ATOM_WAKELOCK_STATE_CHANGED" => Some(Self::AtomWakelockStateChanged),
"ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED" => {
Some(Self::AtomLongPartialWakelockStateChanged)
}
"ATOM_MOBILE_RADIO_POWER_STATE_CHANGED" => {
Some(Self::AtomMobileRadioPowerStateChanged)
}
"ATOM_WIFI_RADIO_POWER_STATE_CHANGED" => {
Some(Self::AtomWifiRadioPowerStateChanged)
}
"ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED" => {
Some(Self::AtomActivityManagerSleepStateChanged)
}
"ATOM_MEMORY_FACTOR_STATE_CHANGED" => {
Some(Self::AtomMemoryFactorStateChanged)
}
"ATOM_EXCESSIVE_CPU_USAGE_REPORTED" => {
Some(Self::AtomExcessiveCpuUsageReported)
}
"ATOM_CACHED_KILL_REPORTED" => Some(Self::AtomCachedKillReported),
"ATOM_PROCESS_MEMORY_STAT_REPORTED" => {
Some(Self::AtomProcessMemoryStatReported)
}
"ATOM_LAUNCHER_EVENT" => Some(Self::AtomLauncherEvent),
"ATOM_BATTERY_SAVER_MODE_STATE_CHANGED" => {
Some(Self::AtomBatterySaverModeStateChanged)
}
"ATOM_DEVICE_IDLE_MODE_STATE_CHANGED" => {
Some(Self::AtomDeviceIdleModeStateChanged)
}
"ATOM_DEVICE_IDLING_MODE_STATE_CHANGED" => {
Some(Self::AtomDeviceIdlingModeStateChanged)
}
"ATOM_AUDIO_STATE_CHANGED" => Some(Self::AtomAudioStateChanged),
"ATOM_MEDIA_CODEC_STATE_CHANGED" => Some(Self::AtomMediaCodecStateChanged),
"ATOM_CAMERA_STATE_CHANGED" => Some(Self::AtomCameraStateChanged),
"ATOM_FLASHLIGHT_STATE_CHANGED" => Some(Self::AtomFlashlightStateChanged),
"ATOM_UID_PROCESS_STATE_CHANGED" => Some(Self::AtomUidProcessStateChanged),
"ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED" => {
Some(Self::AtomProcessLifeCycleStateChanged)
}
"ATOM_SCREEN_STATE_CHANGED" => Some(Self::AtomScreenStateChanged),
"ATOM_BATTERY_LEVEL_CHANGED" => Some(Self::AtomBatteryLevelChanged),
"ATOM_CHARGING_STATE_CHANGED" => Some(Self::AtomChargingStateChanged),
"ATOM_PLUGGED_STATE_CHANGED" => Some(Self::AtomPluggedStateChanged),
"ATOM_INTERACTIVE_STATE_CHANGED" => Some(Self::AtomInteractiveStateChanged),
"ATOM_TOUCH_EVENT_REPORTED" => Some(Self::AtomTouchEventReported),
"ATOM_WAKEUP_ALARM_OCCURRED" => Some(Self::AtomWakeupAlarmOccurred),
"ATOM_KERNEL_WAKEUP_REPORTED" => Some(Self::AtomKernelWakeupReported),
"ATOM_WIFI_LOCK_STATE_CHANGED" => Some(Self::AtomWifiLockStateChanged),
"ATOM_WIFI_SIGNAL_STRENGTH_CHANGED" => {
Some(Self::AtomWifiSignalStrengthChanged)
}
"ATOM_WIFI_SCAN_STATE_CHANGED" => Some(Self::AtomWifiScanStateChanged),
"ATOM_PHONE_SIGNAL_STRENGTH_CHANGED" => {
Some(Self::AtomPhoneSignalStrengthChanged)
}
"ATOM_SETTING_CHANGED" => Some(Self::AtomSettingChanged),
"ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED" => {
Some(Self::AtomActivityForegroundStateChanged)
}
"ATOM_ISOLATED_UID_CHANGED" => Some(Self::AtomIsolatedUidChanged),
"ATOM_PACKET_WAKEUP_OCCURRED" => Some(Self::AtomPacketWakeupOccurred),
"ATOM_WALL_CLOCK_TIME_SHIFTED" => Some(Self::AtomWallClockTimeShifted),
"ATOM_ANOMALY_DETECTED" => Some(Self::AtomAnomalyDetected),
"ATOM_APP_BREADCRUMB_REPORTED" => Some(Self::AtomAppBreadcrumbReported),
"ATOM_APP_START_OCCURRED" => Some(Self::AtomAppStartOccurred),
"ATOM_APP_START_CANCELED" => Some(Self::AtomAppStartCanceled),
"ATOM_APP_START_FULLY_DRAWN" => Some(Self::AtomAppStartFullyDrawn),
"ATOM_LMK_KILL_OCCURRED" => Some(Self::AtomLmkKillOccurred),
"ATOM_PICTURE_IN_PICTURE_STATE_CHANGED" => {
Some(Self::AtomPictureInPictureStateChanged)
}
"ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED" => {
Some(Self::AtomWifiMulticastLockStateChanged)
}
"ATOM_APP_START_MEMORY_STATE_CAPTURED" => {
Some(Self::AtomAppStartMemoryStateCaptured)
}
"ATOM_SHUTDOWN_SEQUENCE_REPORTED" => Some(Self::AtomShutdownSequenceReported),
"ATOM_BOOT_SEQUENCE_REPORTED" => Some(Self::AtomBootSequenceReported),
"ATOM_OVERLAY_STATE_CHANGED" => Some(Self::AtomOverlayStateChanged),
"ATOM_FOREGROUND_SERVICE_STATE_CHANGED" => {
Some(Self::AtomForegroundServiceStateChanged)
}
"ATOM_CALL_STATE_CHANGED" => Some(Self::AtomCallStateChanged),
"ATOM_KEYGUARD_STATE_CHANGED" => Some(Self::AtomKeyguardStateChanged),
"ATOM_KEYGUARD_BOUNCER_STATE_CHANGED" => {
Some(Self::AtomKeyguardBouncerStateChanged)
}
"ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED" => {
Some(Self::AtomKeyguardBouncerPasswordEntered)
}
"ATOM_APP_DIED" => Some(Self::AtomAppDied),
"ATOM_RESOURCE_CONFIGURATION_CHANGED" => {
Some(Self::AtomResourceConfigurationChanged)
}
"ATOM_BLUETOOTH_ENABLED_STATE_CHANGED" => {
Some(Self::AtomBluetoothEnabledStateChanged)
}
"ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED" => {
Some(Self::AtomBluetoothConnectionStateChanged)
}
"ATOM_GPS_SIGNAL_QUALITY_CHANGED" => Some(Self::AtomGpsSignalQualityChanged),
"ATOM_USB_CONNECTOR_STATE_CHANGED" => {
Some(Self::AtomUsbConnectorStateChanged)
}
"ATOM_SPEAKER_IMPEDANCE_REPORTED" => Some(Self::AtomSpeakerImpedanceReported),
"ATOM_HARDWARE_FAILED" => Some(Self::AtomHardwareFailed),
"ATOM_PHYSICAL_DROP_DETECTED" => Some(Self::AtomPhysicalDropDetected),
"ATOM_CHARGE_CYCLES_REPORTED" => Some(Self::AtomChargeCyclesReported),
"ATOM_MOBILE_CONNECTION_STATE_CHANGED" => {
Some(Self::AtomMobileConnectionStateChanged)
}
"ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED" => {
Some(Self::AtomMobileRadioTechnologyChanged)
}
"ATOM_USB_DEVICE_ATTACHED" => Some(Self::AtomUsbDeviceAttached),
"ATOM_APP_CRASH_OCCURRED" => Some(Self::AtomAppCrashOccurred),
"ATOM_ANR_OCCURRED" => Some(Self::AtomAnrOccurred),
"ATOM_WTF_OCCURRED" => Some(Self::AtomWtfOccurred),
"ATOM_LOW_MEM_REPORTED" => Some(Self::AtomLowMemReported),
"ATOM_GENERIC_ATOM" => Some(Self::AtomGenericAtom),
"ATOM_VIBRATOR_STATE_CHANGED" => Some(Self::AtomVibratorStateChanged),
"ATOM_DEFERRED_JOB_STATS_REPORTED" => {
Some(Self::AtomDeferredJobStatsReported)
}
"ATOM_THERMAL_THROTTLING" => Some(Self::AtomThermalThrottling),
"ATOM_BIOMETRIC_ACQUIRED" => Some(Self::AtomBiometricAcquired),
"ATOM_BIOMETRIC_AUTHENTICATED" => Some(Self::AtomBiometricAuthenticated),
"ATOM_BIOMETRIC_ERROR_OCCURRED" => Some(Self::AtomBiometricErrorOccurred),
"ATOM_UI_EVENT_REPORTED" => Some(Self::AtomUiEventReported),
"ATOM_BATTERY_HEALTH_SNAPSHOT" => Some(Self::AtomBatteryHealthSnapshot),
"ATOM_SLOW_IO" => Some(Self::AtomSlowIo),
"ATOM_BATTERY_CAUSED_SHUTDOWN" => Some(Self::AtomBatteryCausedShutdown),
"ATOM_PHONE_SERVICE_STATE_CHANGED" => {
Some(Self::AtomPhoneServiceStateChanged)
}
"ATOM_PHONE_STATE_CHANGED" => Some(Self::AtomPhoneStateChanged),
"ATOM_USER_RESTRICTION_CHANGED" => Some(Self::AtomUserRestrictionChanged),
"ATOM_SETTINGS_UI_CHANGED" => Some(Self::AtomSettingsUiChanged),
"ATOM_CONNECTIVITY_STATE_CHANGED" => Some(Self::AtomConnectivityStateChanged),
"ATOM_SERVICE_STATE_CHANGED" => Some(Self::AtomServiceStateChanged),
"ATOM_SERVICE_LAUNCH_REPORTED" => Some(Self::AtomServiceLaunchReported),
"ATOM_FLAG_FLIP_UPDATE_OCCURRED" => Some(Self::AtomFlagFlipUpdateOccurred),
"ATOM_BINARY_PUSH_STATE_CHANGED" => Some(Self::AtomBinaryPushStateChanged),
"ATOM_DEVICE_POLICY_EVENT" => Some(Self::AtomDevicePolicyEvent),
"ATOM_DOCS_UI_FILE_OP_CANCELED" => Some(Self::AtomDocsUiFileOpCanceled),
"ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED" => {
Some(Self::AtomDocsUiFileOpCopyMoveModeReported)
}
"ATOM_DOCS_UI_FILE_OP_FAILURE" => Some(Self::AtomDocsUiFileOpFailure),
"ATOM_DOCS_UI_PROVIDER_FILE_OP" => Some(Self::AtomDocsUiProviderFileOp),
"ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST" => {
Some(Self::AtomDocsUiInvalidScopedAccessRequest)
}
"ATOM_DOCS_UI_LAUNCH_REPORTED" => Some(Self::AtomDocsUiLaunchReported),
"ATOM_DOCS_UI_ROOT_VISITED" => Some(Self::AtomDocsUiRootVisited),
"ATOM_DOCS_UI_STARTUP_MS" => Some(Self::AtomDocsUiStartupMs),
"ATOM_DOCS_UI_USER_ACTION_REPORTED" => {
Some(Self::AtomDocsUiUserActionReported)
}
"ATOM_WIFI_ENABLED_STATE_CHANGED" => Some(Self::AtomWifiEnabledStateChanged),
"ATOM_WIFI_RUNNING_STATE_CHANGED" => Some(Self::AtomWifiRunningStateChanged),
"ATOM_APP_COMPACTED" => Some(Self::AtomAppCompacted),
"ATOM_NETWORK_DNS_EVENT_REPORTED" => Some(Self::AtomNetworkDnsEventReported),
"ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED" => {
Some(Self::AtomDocsUiPickerLaunchedFromReported)
}
"ATOM_DOCS_UI_PICK_RESULT_REPORTED" => {
Some(Self::AtomDocsUiPickResultReported)
}
"ATOM_DOCS_UI_SEARCH_MODE_REPORTED" => {
Some(Self::AtomDocsUiSearchModeReported)
}
"ATOM_DOCS_UI_SEARCH_TYPE_REPORTED" => {
Some(Self::AtomDocsUiSearchTypeReported)
}
"ATOM_DATA_STALL_EVENT" => Some(Self::AtomDataStallEvent),
"ATOM_RESCUE_PARTY_RESET_REPORTED" => {
Some(Self::AtomRescuePartyResetReported)
}
"ATOM_SIGNED_CONFIG_REPORTED" => Some(Self::AtomSignedConfigReported),
"ATOM_GNSS_NI_EVENT_REPORTED" => Some(Self::AtomGnssNiEventReported),
"ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT" => {
Some(Self::AtomBluetoothLinkLayerConnectionEvent)
}
"ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED" => {
Some(Self::AtomBluetoothAclConnectionStateChanged)
}
"ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED" => {
Some(Self::AtomBluetoothScoConnectionStateChanged)
}
"ATOM_APP_DOWNGRADED" => Some(Self::AtomAppDowngraded),
"ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED" => {
Some(Self::AtomAppOptimizedAfterDowngraded)
}
"ATOM_LOW_STORAGE_STATE_CHANGED" => Some(Self::AtomLowStorageStateChanged),
"ATOM_GNSS_NFW_NOTIFICATION_REPORTED" => {
Some(Self::AtomGnssNfwNotificationReported)
}
"ATOM_GNSS_CONFIGURATION_REPORTED" => {
Some(Self::AtomGnssConfigurationReported)
}
"ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED" => {
Some(Self::AtomUsbPortOverheatEventReported)
}
"ATOM_NFC_ERROR_OCCURRED" => Some(Self::AtomNfcErrorOccurred),
"ATOM_NFC_STATE_CHANGED" => Some(Self::AtomNfcStateChanged),
"ATOM_NFC_BEAM_OCCURRED" => Some(Self::AtomNfcBeamOccurred),
"ATOM_NFC_CARDEMULATION_OCCURRED" => Some(Self::AtomNfcCardemulationOccurred),
"ATOM_NFC_TAG_OCCURRED" => Some(Self::AtomNfcTagOccurred),
"ATOM_NFC_HCE_TRANSACTION_OCCURRED" => {
Some(Self::AtomNfcHceTransactionOccurred)
}
"ATOM_SE_STATE_CHANGED" => Some(Self::AtomSeStateChanged),
"ATOM_SE_OMAPI_REPORTED" => Some(Self::AtomSeOmapiReported),
"ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED" => {
Some(Self::AtomBroadcastDispatchLatencyReported)
}
"ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED" => {
Some(Self::AtomAttentionManagerServiceResultReported)
}
"ATOM_ADB_CONNECTION_CHANGED" => Some(Self::AtomAdbConnectionChanged),
"ATOM_SPEECH_DSP_STAT_REPORTED" => Some(Self::AtomSpeechDspStatReported),
"ATOM_USB_CONTAMINANT_REPORTED" => Some(Self::AtomUsbContaminantReported),
"ATOM_WATCHDOG_ROLLBACK_OCCURRED" => Some(Self::AtomWatchdogRollbackOccurred),
"ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED" => {
Some(Self::AtomBiometricSystemHealthIssueDetected)
}
"ATOM_BUBBLE_UI_CHANGED" => Some(Self::AtomBubbleUiChanged),
"ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED" => {
Some(Self::AtomScheduledJobConstraintChanged)
}
"ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED" => {
Some(Self::AtomBluetoothActiveDeviceChanged)
}
"ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED" => {
Some(Self::AtomBluetoothA2dpPlaybackStateChanged)
}
"ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED" => {
Some(Self::AtomBluetoothA2dpCodecConfigChanged)
}
"ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED" => {
Some(Self::AtomBluetoothA2dpCodecCapabilityChanged)
}
"ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED" => {
Some(Self::AtomBluetoothA2dpAudioUnderrunReported)
}
"ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED" => {
Some(Self::AtomBluetoothA2dpAudioOverrunReported)
}
"ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED" => {
Some(Self::AtomBluetoothDeviceRssiReported)
}
"ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED" => {
Some(Self::AtomBluetoothDeviceFailedContactCounterReported)
}
"ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED" => {
Some(Self::AtomBluetoothDeviceTxPowerLevelReported)
}
"ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED" => {
Some(Self::AtomBluetoothHciTimeoutReported)
}
"ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED" => {
Some(Self::AtomBluetoothQualityReportReported)
}
"ATOM_BLUETOOTH_DEVICE_INFO_REPORTED" => {
Some(Self::AtomBluetoothDeviceInfoReported)
}
"ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED" => {
Some(Self::AtomBluetoothRemoteVersionInfoReported)
}
"ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED" => {
Some(Self::AtomBluetoothSdpAttributeReported)
}
"ATOM_BLUETOOTH_BOND_STATE_CHANGED" => {
Some(Self::AtomBluetoothBondStateChanged)
}
"ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED" => {
Some(Self::AtomBluetoothClassicPairingEventReported)
}
"ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED" => {
Some(Self::AtomBluetoothSmpPairingEventReported)
}
"ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED" => {
Some(Self::AtomScreenTimeoutExtensionReported)
}
"ATOM_PROCESS_START_TIME" => Some(Self::AtomProcessStartTime),
"ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED" => {
Some(Self::AtomPermissionGrantRequestResultReported)
}
"ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED" => {
Some(Self::AtomBluetoothSocketConnectionStateChanged)
}
"ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED" => {
Some(Self::AtomDeviceIdentifierAccessDenied)
}
"ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED" => {
Some(Self::AtomBubbleDeveloperErrorReported)
}
"ATOM_ASSIST_GESTURE_STAGE_REPORTED" => {
Some(Self::AtomAssistGestureStageReported)
}
"ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED" => {
Some(Self::AtomAssistGestureFeedbackReported)
}
"ATOM_ASSIST_GESTURE_PROGRESS_REPORTED" => {
Some(Self::AtomAssistGestureProgressReported)
}
"ATOM_TOUCH_GESTURE_CLASSIFIED" => Some(Self::AtomTouchGestureClassified),
"ATOM_HIDDEN_API_USED" => Some(Self::AtomHiddenApiUsed),
"ATOM_STYLE_UI_CHANGED" => Some(Self::AtomStyleUiChanged),
"ATOM_PRIVACY_INDICATORS_INTERACTED" => {
Some(Self::AtomPrivacyIndicatorsInteracted)
}
"ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED" => {
Some(Self::AtomAppInstallOnExternalStorageReported)
}
"ATOM_NETWORK_STACK_REPORTED" => Some(Self::AtomNetworkStackReported),
"ATOM_APP_MOVED_STORAGE_REPORTED" => Some(Self::AtomAppMovedStorageReported),
"ATOM_BIOMETRIC_ENROLLED" => Some(Self::AtomBiometricEnrolled),
"ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED" => {
Some(Self::AtomSystemServerWatchdogOccurred)
}
"ATOM_TOMB_STONE_OCCURRED" => Some(Self::AtomTombStoneOccurred),
"ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED" => {
Some(Self::AtomBluetoothClassOfDeviceReported)
}
"ATOM_INTELLIGENCE_EVENT_REPORTED" => {
Some(Self::AtomIntelligenceEventReported)
}
"ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED" => {
Some(Self::AtomThermalThrottlingSeverityStateChanged)
}
"ATOM_ROLE_REQUEST_RESULT_REPORTED" => {
Some(Self::AtomRoleRequestResultReported)
}
"ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED" => {
Some(Self::AtomMediametricsAudiopolicyReported)
}
"ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED" => {
Some(Self::AtomMediametricsAudiorecordReported)
}
"ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED" => {
Some(Self::AtomMediametricsAudiothreadReported)
}
"ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED" => {
Some(Self::AtomMediametricsAudiotrackReported)
}
"ATOM_MEDIAMETRICS_CODEC_REPORTED" => {
Some(Self::AtomMediametricsCodecReported)
}
"ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED" => {
Some(Self::AtomMediametricsDrmWidevineReported)
}
"ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED" => {
Some(Self::AtomMediametricsExtractorReported)
}
"ATOM_MEDIAMETRICS_MEDIADRM_REPORTED" => {
Some(Self::AtomMediametricsMediadrmReported)
}
"ATOM_MEDIAMETRICS_NUPLAYER_REPORTED" => {
Some(Self::AtomMediametricsNuplayerReported)
}
"ATOM_MEDIAMETRICS_RECORDER_REPORTED" => {
Some(Self::AtomMediametricsRecorderReported)
}
"ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED" => {
Some(Self::AtomMediametricsDrmmanagerReported)
}
"ATOM_CAR_POWER_STATE_CHANGED" => Some(Self::AtomCarPowerStateChanged),
"ATOM_GARAGE_MODE_INFO" => Some(Self::AtomGarageModeInfo),
"ATOM_TEST_ATOM_REPORTED" => Some(Self::AtomTestAtomReported),
"ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED" => {
Some(Self::AtomContentCaptureCallerMismatchReported)
}
"ATOM_CONTENT_CAPTURE_SERVICE_EVENTS" => {
Some(Self::AtomContentCaptureServiceEvents)
}
"ATOM_CONTENT_CAPTURE_SESSION_EVENTS" => {
Some(Self::AtomContentCaptureSessionEvents)
}
"ATOM_CONTENT_CAPTURE_FLUSHED" => Some(Self::AtomContentCaptureFlushed),
"ATOM_LOCATION_MANAGER_API_USAGE_REPORTED" => {
Some(Self::AtomLocationManagerApiUsageReported)
}
"ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED" => {
Some(Self::AtomReviewPermissionsFragmentResultReported)
}
"ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT" => {
Some(Self::AtomRuntimePermissionsUpgradeResult)
}
"ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS" => {
Some(Self::AtomGrantPermissionsActivityButtonActions)
}
"ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION" => {
Some(Self::AtomLocationAccessCheckNotificationAction)
}
"ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED" => {
Some(Self::AtomAppPermissionFragmentActionReported)
}
"ATOM_APP_PERMISSION_FRAGMENT_VIEWED" => {
Some(Self::AtomAppPermissionFragmentViewed)
}
"ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED" => {
Some(Self::AtomAppPermissionsFragmentViewed)
}
"ATOM_PERMISSION_APPS_FRAGMENT_VIEWED" => {
Some(Self::AtomPermissionAppsFragmentViewed)
}
"ATOM_TEXT_SELECTION_EVENT" => Some(Self::AtomTextSelectionEvent),
"ATOM_TEXT_LINKIFY_EVENT" => Some(Self::AtomTextLinkifyEvent),
"ATOM_CONVERSATION_ACTIONS_EVENT" => Some(Self::AtomConversationActionsEvent),
"ATOM_LANGUAGE_DETECTION_EVENT" => Some(Self::AtomLanguageDetectionEvent),
"ATOM_EXCLUSION_RECT_STATE_CHANGED" => {
Some(Self::AtomExclusionRectStateChanged)
}
"ATOM_BACK_GESTURE_REPORTED_REPORTED" => {
Some(Self::AtomBackGestureReportedReported)
}
"ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED" => {
Some(Self::AtomUpdateEngineUpdateAttemptReported)
}
"ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED" => {
Some(Self::AtomUpdateEngineSuccessfulUpdateReported)
}
"ATOM_CAMERA_ACTION_EVENT" => Some(Self::AtomCameraActionEvent),
"ATOM_APP_COMPATIBILITY_CHANGE_REPORTED" => {
Some(Self::AtomAppCompatibilityChangeReported)
}
"ATOM_PERFETTO_UPLOADED" => Some(Self::AtomPerfettoUploaded),
"ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED" => {
Some(Self::AtomVmsClientConnectionStateChanged)
}
"ATOM_MEDIA_PROVIDER_SCAN_OCCURRED" => {
Some(Self::AtomMediaProviderScanOccurred)
}
"ATOM_MEDIA_CONTENT_DELETED" => Some(Self::AtomMediaContentDeleted),
"ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED" => {
Some(Self::AtomMediaProviderPermissionRequested)
}
"ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED" => {
Some(Self::AtomMediaProviderSchemaChanged)
}
"ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED" => {
Some(Self::AtomMediaProviderIdleMaintenanceFinished)
}
"ATOM_REBOOT_ESCROW_RECOVERY_REPORTED" => {
Some(Self::AtomRebootEscrowRecoveryReported)
}
"ATOM_BOOT_TIME_EVENT_DURATION_REPORTED" => {
Some(Self::AtomBootTimeEventDurationReported)
}
"ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED" => {
Some(Self::AtomBootTimeEventElapsedTimeReported)
}
"ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED" => {
Some(Self::AtomBootTimeEventUtcTimeReported)
}
"ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED" => {
Some(Self::AtomBootTimeEventErrorCodeReported)
}
"ATOM_USERSPACE_REBOOT_REPORTED" => Some(Self::AtomUserspaceRebootReported),
"ATOM_NOTIFICATION_REPORTED" => Some(Self::AtomNotificationReported),
"ATOM_NOTIFICATION_PANEL_REPORTED" => {
Some(Self::AtomNotificationPanelReported)
}
"ATOM_NOTIFICATION_CHANNEL_MODIFIED" => {
Some(Self::AtomNotificationChannelModified)
}
"ATOM_INTEGRITY_CHECK_RESULT_REPORTED" => {
Some(Self::AtomIntegrityCheckResultReported)
}
"ATOM_INTEGRITY_RULES_PUSHED" => Some(Self::AtomIntegrityRulesPushed),
"ATOM_CB_MESSAGE_REPORTED" => Some(Self::AtomCbMessageReported),
"ATOM_CB_MESSAGE_ERROR" => Some(Self::AtomCbMessageError),
"ATOM_WIFI_HEALTH_STAT_REPORTED" => Some(Self::AtomWifiHealthStatReported),
"ATOM_WIFI_FAILURE_STAT_REPORTED" => Some(Self::AtomWifiFailureStatReported),
"ATOM_WIFI_CONNECTION_RESULT_REPORTED" => {
Some(Self::AtomWifiConnectionResultReported)
}
"ATOM_APP_FREEZE_CHANGED" => Some(Self::AtomAppFreezeChanged),
"ATOM_SNAPSHOT_MERGE_REPORTED" => Some(Self::AtomSnapshotMergeReported),
"ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED" => {
Some(Self::AtomForegroundServiceAppOpSessionEnded)
}
"ATOM_DISPLAY_JANK_REPORTED" => Some(Self::AtomDisplayJankReported),
"ATOM_APP_STANDBY_BUCKET_CHANGED" => Some(Self::AtomAppStandbyBucketChanged),
"ATOM_SHARESHEET_STARTED" => Some(Self::AtomSharesheetStarted),
"ATOM_RANKING_SELECTED" => Some(Self::AtomRankingSelected),
"ATOM_TVSETTINGS_UI_INTERACTED" => Some(Self::AtomTvsettingsUiInteracted),
"ATOM_LAUNCHER_SNAPSHOT" => Some(Self::AtomLauncherSnapshot),
"ATOM_PACKAGE_INSTALLER_V2_REPORTED" => {
Some(Self::AtomPackageInstallerV2Reported)
}
"ATOM_USER_LIFECYCLE_JOURNEY_REPORTED" => {
Some(Self::AtomUserLifecycleJourneyReported)
}
"ATOM_USER_LIFECYCLE_EVENT_OCCURRED" => {
Some(Self::AtomUserLifecycleEventOccurred)
}
"ATOM_ACCESSIBILITY_SHORTCUT_REPORTED" => {
Some(Self::AtomAccessibilityShortcutReported)
}
"ATOM_ACCESSIBILITY_SERVICE_REPORTED" => {
Some(Self::AtomAccessibilityServiceReported)
}
"ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED" => {
Some(Self::AtomDocsUiDragAndDropReported)
}
"ATOM_APP_USAGE_EVENT_OCCURRED" => Some(Self::AtomAppUsageEventOccurred),
"ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED" => {
Some(Self::AtomAutoRevokeNotificationClicked)
}
"ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED" => {
Some(Self::AtomAutoRevokeFragmentAppViewed)
}
"ATOM_AUTO_REVOKED_APP_INTERACTION" => {
Some(Self::AtomAutoRevokedAppInteraction)
}
"ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION" => {
Some(Self::AtomAppPermissionGroupsFragmentAutoRevokeAction)
}
"ATOM_EVS_USAGE_STATS_REPORTED" => Some(Self::AtomEvsUsageStatsReported),
"ATOM_AUDIO_POWER_USAGE_DATA_REPORTED" => {
Some(Self::AtomAudioPowerUsageDataReported)
}
"ATOM_TV_TUNER_STATE_CHANGED" => Some(Self::AtomTvTunerStateChanged),
"ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED" => {
Some(Self::AtomMediaoutputOpSwitchReported)
}
"ATOM_CB_MESSAGE_FILTERED" => Some(Self::AtomCbMessageFiltered),
"ATOM_TV_TUNER_DVR_STATUS" => Some(Self::AtomTvTunerDvrStatus),
"ATOM_TV_CAS_SESSION_OPEN_STATUS" => Some(Self::AtomTvCasSessionOpenStatus),
"ATOM_ASSISTANT_INVOCATION_REPORTED" => {
Some(Self::AtomAssistantInvocationReported)
}
"ATOM_DISPLAY_WAKE_REPORTED" => Some(Self::AtomDisplayWakeReported),
"ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED" => {
Some(Self::AtomCarUserHalModifyUserRequestReported)
}
"ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED" => {
Some(Self::AtomCarUserHalModifyUserResponseReported)
}
"ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED" => {
Some(Self::AtomCarUserHalPostSwitchResponseReported)
}
"ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED" => {
Some(Self::AtomCarUserHalInitialUserInfoRequestReported)
}
"ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED" => {
Some(Self::AtomCarUserHalInitialUserInfoResponseReported)
}
"ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED" => {
Some(Self::AtomCarUserHalUserAssociationRequestReported)
}
"ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED" => {
Some(Self::AtomCarUserHalSetUserAssociationResponseReported)
}
"ATOM_NETWORK_IP_PROVISIONING_REPORTED" => {
Some(Self::AtomNetworkIpProvisioningReported)
}
"ATOM_NETWORK_DHCP_RENEW_REPORTED" => {
Some(Self::AtomNetworkDhcpRenewReported)
}
"ATOM_NETWORK_VALIDATION_REPORTED" => {
Some(Self::AtomNetworkValidationReported)
}
"ATOM_NETWORK_STACK_QUIRK_REPORTED" => {
Some(Self::AtomNetworkStackQuirkReported)
}
"ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED" => {
Some(Self::AtomMediametricsAudiorecorddeviceusageReported)
}
"ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED" => {
Some(Self::AtomMediametricsAudiothreaddeviceusageReported)
}
"ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED" => {
Some(Self::AtomMediametricsAudiotrackdeviceusageReported)
}
"ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED" => {
Some(Self::AtomMediametricsAudiodeviceconnectionReported)
}
"ATOM_BLOB_COMMITTED" => Some(Self::AtomBlobCommitted),
"ATOM_BLOB_LEASED" => Some(Self::AtomBlobLeased),
"ATOM_BLOB_OPENED" => Some(Self::AtomBlobOpened),
"ATOM_CONTACTS_PROVIDER_STATUS_REPORTED" => {
Some(Self::AtomContactsProviderStatusReported)
}
"ATOM_KEYSTORE_KEY_EVENT_REPORTED" => {
Some(Self::AtomKeystoreKeyEventReported)
}
"ATOM_NETWORK_TETHERING_REPORTED" => Some(Self::AtomNetworkTetheringReported),
"ATOM_IME_TOUCH_REPORTED" => Some(Self::AtomImeTouchReported),
"ATOM_UI_INTERACTION_FRAME_INFO_REPORTED" => {
Some(Self::AtomUiInteractionFrameInfoReported)
}
"ATOM_UI_ACTION_LATENCY_REPORTED" => Some(Self::AtomUiActionLatencyReported),
"ATOM_WIFI_DISCONNECT_REPORTED" => Some(Self::AtomWifiDisconnectReported),
"ATOM_WIFI_CONNECTION_STATE_CHANGED" => {
Some(Self::AtomWifiConnectionStateChanged)
}
"ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED" => {
Some(Self::AtomHdmiCecActiveSourceChanged)
}
"ATOM_HDMI_CEC_MESSAGE_REPORTED" => Some(Self::AtomHdmiCecMessageReported),
"ATOM_AIRPLANE_MODE" => Some(Self::AtomAirplaneMode),
"ATOM_MODEM_RESTART" => Some(Self::AtomModemRestart),
"ATOM_CARRIER_ID_MISMATCH_REPORTED" => {
Some(Self::AtomCarrierIdMismatchReported)
}
"ATOM_CARRIER_ID_TABLE_UPDATED" => Some(Self::AtomCarrierIdTableUpdated),
"ATOM_DATA_STALL_RECOVERY_REPORTED" => {
Some(Self::AtomDataStallRecoveryReported)
}
"ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED" => {
Some(Self::AtomMediametricsMediaparserReported)
}
"ATOM_TLS_HANDSHAKE_REPORTED" => Some(Self::AtomTlsHandshakeReported),
"ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED" => {
Some(Self::AtomTextClassifierApiUsageReported)
}
"ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED" => {
Some(Self::AtomCarWatchdogKillStatsReported)
}
"ATOM_MEDIAMETRICS_PLAYBACK_REPORTED" => {
Some(Self::AtomMediametricsPlaybackReported)
}
"ATOM_MEDIA_NETWORK_INFO_CHANGED" => Some(Self::AtomMediaNetworkInfoChanged),
"ATOM_MEDIA_PLAYBACK_STATE_CHANGED" => {
Some(Self::AtomMediaPlaybackStateChanged)
}
"ATOM_MEDIA_PLAYBACK_ERROR_REPORTED" => {
Some(Self::AtomMediaPlaybackErrorReported)
}
"ATOM_MEDIA_PLAYBACK_TRACK_CHANGED" => {
Some(Self::AtomMediaPlaybackTrackChanged)
}
"ATOM_WIFI_SCAN_REPORTED" => Some(Self::AtomWifiScanReported),
"ATOM_WIFI_PNO_SCAN_REPORTED" => Some(Self::AtomWifiPnoScanReported),
"ATOM_TIF_TUNE_CHANGED" => Some(Self::AtomTifTuneChanged),
"ATOM_AUTO_ROTATE_REPORTED" => Some(Self::AtomAutoRotateReported),
"ATOM_PERFETTO_TRIGGER" => Some(Self::AtomPerfettoTrigger),
"ATOM_TRANSCODING_DATA" => Some(Self::AtomTranscodingData),
"ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED" => {
Some(Self::AtomImsServiceEntitlementUpdated)
}
"ATOM_DEVICE_ROTATED" => Some(Self::AtomDeviceRotated),
"ATOM_SIM_SPECIFIC_SETTINGS_RESTORED" => {
Some(Self::AtomSimSpecificSettingsRestored)
}
"ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED" => {
Some(Self::AtomTextClassifierDownloadReported)
}
"ATOM_PIN_STORAGE_EVENT" => Some(Self::AtomPinStorageEvent),
"ATOM_FACE_DOWN_REPORTED" => Some(Self::AtomFaceDownReported),
"ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED" => {
Some(Self::AtomBluetoothHalCrashReasonReported)
}
"ATOM_REBOOT_ESCROW_PREPARATION_REPORTED" => {
Some(Self::AtomRebootEscrowPreparationReported)
}
"ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED" => {
Some(Self::AtomRebootEscrowLskfCaptureReported)
}
"ATOM_REBOOT_ESCROW_REBOOT_REPORTED" => {
Some(Self::AtomRebootEscrowRebootReported)
}
"ATOM_BINDER_LATENCY_REPORTED" => Some(Self::AtomBinderLatencyReported),
"ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED" => {
Some(Self::AtomMediametricsAaudiostreamReported)
}
"ATOM_MEDIA_TRANSCODING_SESSION_ENDED" => {
Some(Self::AtomMediaTranscodingSessionEnded)
}
"ATOM_MAGNIFICATION_USAGE_REPORTED" => {
Some(Self::AtomMagnificationUsageReported)
}
"ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED" => {
Some(Self::AtomMagnificationModeWithImeOnReported)
}
"ATOM_APP_SEARCH_CALL_STATS_REPORTED" => {
Some(Self::AtomAppSearchCallStatsReported)
}
"ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED" => {
Some(Self::AtomAppSearchPutDocumentStatsReported)
}
"ATOM_DEVICE_CONTROL_CHANGED" => Some(Self::AtomDeviceControlChanged),
"ATOM_DEVICE_STATE_CHANGED" => Some(Self::AtomDeviceStateChanged),
"ATOM_INPUTDEVICE_REGISTERED" => Some(Self::AtomInputdeviceRegistered),
"ATOM_SMARTSPACE_CARD_REPORTED" => Some(Self::AtomSmartspaceCardReported),
"ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED" => {
Some(Self::AtomAuthPromptAuthenticateInvoked)
}
"ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED" => {
Some(Self::AtomAuthManagerCanAuthenticateInvoked)
}
"ATOM_AUTH_ENROLL_ACTION_INVOKED" => Some(Self::AtomAuthEnrollActionInvoked),
"ATOM_AUTH_DEPRECATED_API_USED" => Some(Self::AtomAuthDeprecatedApiUsed),
"ATOM_UNATTENDED_REBOOT_OCCURRED" => Some(Self::AtomUnattendedRebootOccurred),
"ATOM_LONG_REBOOT_BLOCKING_REPORTED" => {
Some(Self::AtomLongRebootBlockingReported)
}
"ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED" => {
Some(Self::AtomLocationTimeZoneProviderStateChanged)
}
"ATOM_FDTRACK_EVENT_OCCURRED" => Some(Self::AtomFdtrackEventOccurred),
"ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED" => {
Some(Self::AtomTimeoutAutoExtendedReported)
}
"ATOM_ALARM_BATCH_DELIVERED" => Some(Self::AtomAlarmBatchDelivered),
"ATOM_ALARM_SCHEDULED" => Some(Self::AtomAlarmScheduled),
"ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED" => {
Some(Self::AtomCarWatchdogIoOveruseStatsReported)
}
"ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED" => {
Some(Self::AtomUserLevelHibernationStateChanged)
}
"ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED" => {
Some(Self::AtomAppSearchInitializeStatsReported)
}
"ATOM_APP_SEARCH_QUERY_STATS_REPORTED" => {
Some(Self::AtomAppSearchQueryStatsReported)
}
"ATOM_APP_PROCESS_DIED" => Some(Self::AtomAppProcessDied),
"ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED" => {
Some(Self::AtomNetworkIpReachabilityMonitorReported)
}
"ATOM_SLOW_INPUT_EVENT_REPORTED" => Some(Self::AtomSlowInputEventReported),
"ATOM_ANR_OCCURRED_PROCESSING_STARTED" => {
Some(Self::AtomAnrOccurredProcessingStarted)
}
"ATOM_APP_SEARCH_REMOVE_STATS_REPORTED" => {
Some(Self::AtomAppSearchRemoveStatsReported)
}
"ATOM_MEDIA_CODEC_REPORTED" => Some(Self::AtomMediaCodecReported),
"ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION" => {
Some(Self::AtomPermissionUsageFragmentInteraction)
}
"ATOM_PERMISSION_DETAILS_INTERACTION" => {
Some(Self::AtomPermissionDetailsInteraction)
}
"ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION" => {
Some(Self::AtomPrivacySensorToggleInteraction)
}
"ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION" => {
Some(Self::AtomPrivacyToggleDialogInteraction)
}
"ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED" => {
Some(Self::AtomAppSearchOptimizeStatsReported)
}
"ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT" => {
Some(Self::AtomNonA11yToolServiceWarningReport)
}
"ATOM_APP_COMPAT_STATE_CHANGED" => Some(Self::AtomAppCompatStateChanged),
"ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED" => {
Some(Self::AtomSizeCompatRestartButtonEventReported)
}
"ATOM_SPLITSCREEN_UI_CHANGED" => Some(Self::AtomSplitscreenUiChanged),
"ATOM_NETWORK_DNS_HANDSHAKE_REPORTED" => {
Some(Self::AtomNetworkDnsHandshakeReported)
}
"ATOM_BLUETOOTH_CODE_PATH_COUNTER" => {
Some(Self::AtomBluetoothCodePathCounter)
}
"ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY" => {
Some(Self::AtomBluetoothLeBatchScanReportDelay)
}
"ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED" => {
Some(Self::AtomAccessibilityFloatingMenuUiChanged)
}
"ATOM_NEURALNETWORKS_COMPILATION_COMPLETED" => {
Some(Self::AtomNeuralnetworksCompilationCompleted)
}
"ATOM_NEURALNETWORKS_EXECUTION_COMPLETED" => {
Some(Self::AtomNeuralnetworksExecutionCompleted)
}
"ATOM_NEURALNETWORKS_COMPILATION_FAILED" => {
Some(Self::AtomNeuralnetworksCompilationFailed)
}
"ATOM_NEURALNETWORKS_EXECUTION_FAILED" => {
Some(Self::AtomNeuralnetworksExecutionFailed)
}
"ATOM_CONTEXT_HUB_BOOTED" => Some(Self::AtomContextHubBooted),
"ATOM_CONTEXT_HUB_RESTARTED" => Some(Self::AtomContextHubRestarted),
"ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED" => {
Some(Self::AtomContextHubLoadedNanoappSnapshotReported)
}
"ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED" => {
Some(Self::AtomChreCodeDownloadTransacted)
}
"ATOM_UWB_SESSION_INITED" => Some(Self::AtomUwbSessionInited),
"ATOM_UWB_SESSION_CLOSED" => Some(Self::AtomUwbSessionClosed),
"ATOM_UWB_FIRST_RANGING_RECEIVED" => Some(Self::AtomUwbFirstRangingReceived),
"ATOM_UWB_RANGING_MEASUREMENT_RECEIVED" => {
Some(Self::AtomUwbRangingMeasurementReceived)
}
"ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED" => {
Some(Self::AtomTextClassifierDownloadWorkScheduled)
}
"ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED" => {
Some(Self::AtomTextClassifierDownloadWorkCompleted)
}
"ATOM_CLIPBOARD_CLEARED" => Some(Self::AtomClipboardCleared),
"ATOM_VM_CREATION_REQUESTED" => Some(Self::AtomVmCreationRequested),
"ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED" => {
Some(Self::AtomNearbyDeviceScanStateChanged)
}
"ATOM_CAMERA_COMPAT_CONTROL_EVENT_REPORTED" => {
Some(Self::AtomCameraCompatControlEventReported)
}
"ATOM_APPLICATION_LOCALES_CHANGED" => {
Some(Self::AtomApplicationLocalesChanged)
}
"ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED" => {
Some(Self::AtomMediametricsAudiotrackstatusReported)
}
"ATOM_FOLD_STATE_DURATION_REPORTED" => {
Some(Self::AtomFoldStateDurationReported)
}
"ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED" => {
Some(Self::AtomLocationTimeZoneProviderControllerStateChanged)
}
"ATOM_DISPLAY_HBM_STATE_CHANGED" => Some(Self::AtomDisplayHbmStateChanged),
"ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED" => {
Some(Self::AtomDisplayHbmBrightnessChanged)
}
"ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED" => {
Some(Self::AtomPersistentUriPermissionsFlushed)
}
"ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED" => {
Some(Self::AtomEarlyBootCompOsArtifactsCheckReported)
}
"ATOM_VBMETA_DIGEST_REPORTED" => Some(Self::AtomVbmetaDigestReported),
"ATOM_APEX_INFO_GATHERED" => Some(Self::AtomApexInfoGathered),
"ATOM_PVM_INFO_GATHERED" => Some(Self::AtomPvmInfoGathered),
"ATOM_WEAR_SETTINGS_UI_INTERACTED" => {
Some(Self::AtomWearSettingsUiInteracted)
}
"ATOM_TRACING_SERVICE_REPORT_EVENT" => {
Some(Self::AtomTracingServiceReportEvent)
}
"ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED" => {
Some(Self::AtomMediametricsAudiorecordstatusReported)
}
"ATOM_LAUNCHER_LATENCY" => Some(Self::AtomLauncherLatency),
"ATOM_DROPBOX_ENTRY_DROPPED" => Some(Self::AtomDropboxEntryDropped),
"ATOM_WIFI_P2P_CONNECTION_REPORTED" => {
Some(Self::AtomWifiP2pConnectionReported)
}
"ATOM_GAME_STATE_CHANGED" => Some(Self::AtomGameStateChanged),
"ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED" => {
Some(Self::AtomHotwordDetectorCreateRequested)
}
"ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED" => {
Some(Self::AtomHotwordDetectionServiceInitResultReported)
}
"ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED" => {
Some(Self::AtomHotwordDetectionServiceRestarted)
}
"ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED" => {
Some(Self::AtomHotwordDetectorKeyphraseTriggered)
}
"ATOM_HOTWORD_DETECTOR_EVENTS" => Some(Self::AtomHotwordDetectorEvents),
"ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED" => {
Some(Self::AtomBootCompletedBroadcastCompletionLatencyReported)
}
"ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED" => {
Some(Self::AtomContactsIndexerUpdateStatsReported)
}
"ATOM_APP_BACKGROUND_RESTRICTIONS_INFO" => {
Some(Self::AtomAppBackgroundRestrictionsInfo)
}
"ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED" => {
Some(Self::AtomMmsSmsProviderGetThreadIdFailed)
}
"ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED" => {
Some(Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed)
}
"ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED" => {
Some(Self::AtomPermissionReminderNotificationInteracted)
}
"ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED" => {
Some(Self::AtomRecentPermissionDecisionsInteracted)
}
"ATOM_GNSS_PSDS_DOWNLOAD_REPORTED" => {
Some(Self::AtomGnssPsdsDownloadReported)
}
"ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED" => {
Some(Self::AtomLeAudioConnectionSessionReported)
}
"ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED" => {
Some(Self::AtomLeAudioBroadcastSessionReported)
}
"ATOM_DREAM_UI_EVENT_REPORTED" => Some(Self::AtomDreamUiEventReported),
"ATOM_TASK_MANAGER_EVENT_REPORTED" => {
Some(Self::AtomTaskManagerEventReported)
}
"ATOM_CDM_ASSOCIATION_ACTION" => Some(Self::AtomCdmAssociationAction),
"ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED" => {
Some(Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported)
}
"ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED" => {
Some(Self::AtomMagnificationFollowTypingFocusActivatedSessionReported)
}
"ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED" => {
Some(Self::AtomAccessibilityTextReadingOptionsChanged)
}
"ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED" => {
Some(Self::AtomWifiSetupFailureCrashReported)
}
"ATOM_UWB_DEVICE_ERROR_REPORTED" => Some(Self::AtomUwbDeviceErrorReported),
"ATOM_ISOLATED_COMPILATION_SCHEDULED" => {
Some(Self::AtomIsolatedCompilationScheduled)
}
"ATOM_ISOLATED_COMPILATION_ENDED" => Some(Self::AtomIsolatedCompilationEnded),
"ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE" => {
Some(Self::AtomOnsOpportunisticEsimProvisioningComplete)
}
"ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED" => {
Some(Self::AtomSystemServerPreWatchdogOccurred)
}
"ATOM_TELEPHONY_ANOMALY_DETECTED" => Some(Self::AtomTelephonyAnomalyDetected),
"ATOM_LETTERBOX_POSITION_CHANGED" => Some(Self::AtomLetterboxPositionChanged),
"ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT" => {
Some(Self::AtomRemoteKeyProvisioningAttempt)
}
"ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO" => {
Some(Self::AtomRemoteKeyProvisioningNetworkInfo)
}
"ATOM_REMOTE_KEY_PROVISIONING_TIMING" => {
Some(Self::AtomRemoteKeyProvisioningTiming)
}
"ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT" => {
Some(Self::AtomMediaoutputOpInteractionReport)
}
"ATOM_SYNC_EXEMPTION_OCCURRED" => Some(Self::AtomSyncExemptionOccurred),
"ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED" => {
Some(Self::AtomAutofillPresentationEventReported)
}
"ATOM_DOCK_STATE_CHANGED" => Some(Self::AtomDockStateChanged),
"ATOM_SAFETY_SOURCE_STATE_COLLECTED" => {
Some(Self::AtomSafetySourceStateCollected)
}
"ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED" => {
Some(Self::AtomSafetyCenterSystemEventReported)
}
"ATOM_SAFETY_CENTER_INTERACTION_REPORTED" => {
Some(Self::AtomSafetyCenterInteractionReported)
}
"ATOM_SETTINGS_PROVIDER_SETTING_CHANGED" => {
Some(Self::AtomSettingsProviderSettingChanged)
}
"ATOM_BROADCAST_DELIVERY_EVENT_REPORTED" => {
Some(Self::AtomBroadcastDeliveryEventReported)
}
"ATOM_SERVICE_REQUEST_EVENT_REPORTED" => {
Some(Self::AtomServiceRequestEventReported)
}
"ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED" => {
Some(Self::AtomProviderAcquisitionEventReported)
}
"ATOM_BLUETOOTH_DEVICE_NAME_REPORTED" => {
Some(Self::AtomBluetoothDeviceNameReported)
}
"ATOM_CB_CONFIG_UPDATED" => Some(Self::AtomCbConfigUpdated),
"ATOM_CB_MODULE_ERROR_REPORTED" => Some(Self::AtomCbModuleErrorReported),
"ATOM_CB_SERVICE_FEATURE_CHANGED" => Some(Self::AtomCbServiceFeatureChanged),
"ATOM_CB_RECEIVER_FEATURE_CHANGED" => {
Some(Self::AtomCbReceiverFeatureChanged)
}
"ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION" => {
Some(Self::AtomPrivacySignalNotificationInteraction)
}
"ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION" => {
Some(Self::AtomPrivacySignalIssueCardInteraction)
}
"ATOM_PRIVACY_SIGNALS_JOB_FAILURE" => {
Some(Self::AtomPrivacySignalsJobFailure)
}
"ATOM_VIBRATION_REPORTED" => Some(Self::AtomVibrationReported),
"ATOM_UWB_RANGING_START" => Some(Self::AtomUwbRangingStart),
"ATOM_APP_COMPACTED_V2" => Some(Self::AtomAppCompactedV2),
"ATOM_DISPLAY_BRIGHTNESS_CHANGED" => Some(Self::AtomDisplayBrightnessChanged),
"ATOM_ACTIVITY_ACTION_BLOCKED" => Some(Self::AtomActivityActionBlocked),
"ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED" => {
Some(Self::AtomNetworkDnsServerSupportReported)
}
"ATOM_VM_BOOTED" => Some(Self::AtomVmBooted),
"ATOM_VM_EXITED" => Some(Self::AtomVmExited),
"ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED" => {
Some(Self::AtomAmbientBrightnessStatsReported)
}
"ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED" => {
Some(Self::AtomMediametricsSpatializercapabilitiesReported)
}
"ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED" => {
Some(Self::AtomMediametricsSpatializerdeviceenabledReported)
}
"ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED" => {
Some(Self::AtomMediametricsHeadtrackerdeviceenabledReported)
}
"ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED" => {
Some(Self::AtomMediametricsHeadtrackerdevicesupportedReported)
}
"ATOM_HEARING_AID_INFO_REPORTED" => Some(Self::AtomHearingAidInfoReported),
"ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED" => {
Some(Self::AtomDeviceWideJobConstraintChanged)
}
"ATOM_AMBIENT_MODE_CHANGED" => Some(Self::AtomAmbientModeChanged),
"ATOM_ANR_LATENCY_REPORTED" => Some(Self::AtomAnrLatencyReported),
"ATOM_RESOURCE_API_INFO" => Some(Self::AtomResourceApiInfo),
"ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED" => {
Some(Self::AtomSystemDefaultNetworkChanged)
}
"ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED" => {
Some(Self::AtomIwlanSetupDataCallResultReported)
}
"ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED" => {
Some(Self::AtomIwlanPdnDisconnectedReasonReported)
}
"ATOM_AIRPLANE_MODE_SESSION_REPORTED" => {
Some(Self::AtomAirplaneModeSessionReported)
}
"ATOM_VM_CPU_STATUS_REPORTED" => Some(Self::AtomVmCpuStatusReported),
"ATOM_VM_MEM_STATUS_REPORTED" => Some(Self::AtomVmMemStatusReported),
"ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED" => {
Some(Self::AtomPackageInstallationSessionReported)
}
"ATOM_DEFAULT_NETWORK_REMATCH_INFO" => {
Some(Self::AtomDefaultNetworkRematchInfo)
}
"ATOM_NETWORK_SELECTION_PERFORMANCE" => {
Some(Self::AtomNetworkSelectionPerformance)
}
"ATOM_NETWORK_NSD_REPORTED" => Some(Self::AtomNetworkNsdReported),
"ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED" => {
Some(Self::AtomBluetoothDisconnectionReasonReported)
}
"ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED" => {
Some(Self::AtomBluetoothLocalVersionsReported)
}
"ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED" => {
Some(Self::AtomBluetoothRemoteSupportedFeaturesReported)
}
"ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED" => {
Some(Self::AtomBluetoothLocalSupportedFeaturesReported)
}
"ATOM_BLUETOOTH_GATT_APP_INFO" => Some(Self::AtomBluetoothGattAppInfo),
"ATOM_BRIGHTNESS_CONFIGURATION_UPDATED" => {
Some(Self::AtomBrightnessConfigurationUpdated)
}
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED" => {
Some(Self::AtomWearMediaOutputSwitcherLaunched)
}
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED" => {
Some(Self::AtomWearMediaOutputSwitcherFinished)
}
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED" => {
Some(Self::AtomWearMediaOutputSwitcherConnectionReported)
}
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED" => {
Some(Self::AtomWearMediaOutputSwitcherDeviceScanTriggered)
}
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY" => {
Some(Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency)
}
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY" => {
Some(Self::AtomWearMediaOutputSwitcherConnectDeviceLatency)
}
"ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED" => {
Some(Self::AtomPackageManagerSnapshotReported)
}
"ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED" => {
Some(Self::AtomPackageManagerAppsFilterCacheBuildReported)
}
"ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED" => {
Some(Self::AtomPackageManagerAppsFilterCacheUpdateReported)
}
"ATOM_LAUNCHER_IMPRESSION_EVENT" => Some(Self::AtomLauncherImpressionEvent),
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY" => {
Some(Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency)
}
"ATOM_WS_WATCH_FACE_EDITED" => Some(Self::AtomWsWatchFaceEdited),
"ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED" => {
Some(Self::AtomWsWatchFaceFavoriteActionReported)
}
"ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED" => {
Some(Self::AtomWsWatchFaceSetActionReported)
}
"ATOM_PACKAGE_UNINSTALLATION_REPORTED" => {
Some(Self::AtomPackageUninstallationReported)
}
"ATOM_GAME_MODE_CHANGED" => Some(Self::AtomGameModeChanged),
"ATOM_GAME_MODE_CONFIGURATION_CHANGED" => {
Some(Self::AtomGameModeConfigurationChanged)
}
"ATOM_BEDTIME_MODE_STATE_CHANGED" => Some(Self::AtomBedtimeModeStateChanged),
"ATOM_NETWORK_SLICE_SESSION_ENDED" => {
Some(Self::AtomNetworkSliceSessionEnded)
}
"ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED" => {
Some(Self::AtomNetworkSliceDailyDataUsageReported)
}
"ATOM_NFC_TAG_TYPE_OCCURRED" => Some(Self::AtomNfcTagTypeOccurred),
"ATOM_NFC_AID_CONFLICT_OCCURRED" => Some(Self::AtomNfcAidConflictOccurred),
"ATOM_NFC_READER_CONFLICT_OCCURRED" => {
Some(Self::AtomNfcReaderConflictOccurred)
}
"ATOM_WS_TILE_LIST_CHANGED" => Some(Self::AtomWsTileListChanged),
"ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION" => {
Some(Self::AtomGetTypeAccessedWithoutPermission)
}
"ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED" => {
Some(Self::AtomMobileBundledAppInfoGathered)
}
"ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED" => {
Some(Self::AtomWsWatchFaceComplicationSetChanged)
}
"ATOM_MEDIA_DRM_CREATED" => Some(Self::AtomMediaDrmCreated),
"ATOM_MEDIA_DRM_ERRORED" => Some(Self::AtomMediaDrmErrored),
"ATOM_MEDIA_DRM_SESSION_OPENED" => Some(Self::AtomMediaDrmSessionOpened),
"ATOM_MEDIA_DRM_SESSION_CLOSED" => Some(Self::AtomMediaDrmSessionClosed),
"ATOM_USER_SELECTED_RESOLUTION" => Some(Self::AtomUserSelectedResolution),
"ATOM_UNSAFE_INTENT_EVENT_REPORTED" => {
Some(Self::AtomUnsafeIntentEventReported)
}
"ATOM_PERFORMANCE_HINT_SESSION_REPORTED" => {
Some(Self::AtomPerformanceHintSessionReported)
}
"ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED" => {
Some(Self::AtomMediametricsMidiDeviceCloseReported)
}
"ATOM_BIOMETRIC_TOUCH_REPORTED" => Some(Self::AtomBiometricTouchReported),
"ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED" => {
Some(Self::AtomHotwordAudioEgressEventReported)
}
"ATOM_LOCATION_ENABLED_STATE_CHANGED" => {
Some(Self::AtomLocationEnabledStateChanged)
}
"ATOM_IME_REQUEST_FINISHED" => Some(Self::AtomImeRequestFinished),
"ATOM_USB_COMPLIANCE_WARNINGS_REPORTED" => {
Some(Self::AtomUsbComplianceWarningsReported)
}
"ATOM_APP_SUPPORTED_LOCALES_CHANGED" => {
Some(Self::AtomAppSupportedLocalesChanged)
}
"ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED" => {
Some(Self::AtomMediaProviderVolumeRecoveryReported)
}
"ATOM_BIOMETRIC_PROPERTIES_COLLECTED" => {
Some(Self::AtomBiometricPropertiesCollected)
}
"ATOM_KERNEL_WAKEUP_ATTRIBUTED" => Some(Self::AtomKernelWakeupAttributed),
"ATOM_SCREEN_STATE_CHANGED_V2" => Some(Self::AtomScreenStateChangedV2),
"ATOM_WS_BACKUP_ACTION_REPORTED" => Some(Self::AtomWsBackupActionReported),
"ATOM_WS_RESTORE_ACTION_REPORTED" => Some(Self::AtomWsRestoreActionReported),
"ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED" => {
Some(Self::AtomDeviceLogAccessEventReported)
}
"ATOM_MEDIA_SESSION_UPDATED" => Some(Self::AtomMediaSessionUpdated),
"ATOM_WEAR_OOBE_STATE_CHANGED" => Some(Self::AtomWearOobeStateChanged),
"ATOM_WS_NOTIFICATION_UPDATED" => Some(Self::AtomWsNotificationUpdated),
"ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED" => {
Some(Self::AtomNetworkValidationFailureStatsDailyReported)
}
"ATOM_WS_COMPLICATION_TAPPED" => Some(Self::AtomWsComplicationTapped),
"ATOM_WS_NOTIFICATION_BLOCKING" => Some(Self::AtomWsNotificationBlocking),
"ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED" => {
Some(Self::AtomWsNotificationBridgemodeUpdated)
}
"ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED" => {
Some(Self::AtomWsNotificationDismissalActioned)
}
"ATOM_WS_NOTIFICATION_ACTIONED" => Some(Self::AtomWsNotificationActioned),
"ATOM_WS_NOTIFICATION_LATENCY" => Some(Self::AtomWsNotificationLatency),
"ATOM_WIFI_BYTES_TRANSFER" => Some(Self::AtomWifiBytesTransfer),
"ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG" => {
Some(Self::AtomWifiBytesTransferByFgBg)
}
"ATOM_MOBILE_BYTES_TRANSFER" => Some(Self::AtomMobileBytesTransfer),
"ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG" => {
Some(Self::AtomMobileBytesTransferByFgBg)
}
"ATOM_BLUETOOTH_BYTES_TRANSFER" => Some(Self::AtomBluetoothBytesTransfer),
"ATOM_KERNEL_WAKELOCK" => Some(Self::AtomKernelWakelock),
"ATOM_SUBSYSTEM_SLEEP_STATE" => Some(Self::AtomSubsystemSleepState),
"ATOM_CPU_TIME_PER_UID" => Some(Self::AtomCpuTimePerUid),
"ATOM_CPU_TIME_PER_UID_FREQ" => Some(Self::AtomCpuTimePerUidFreq),
"ATOM_WIFI_ACTIVITY_INFO" => Some(Self::AtomWifiActivityInfo),
"ATOM_MODEM_ACTIVITY_INFO" => Some(Self::AtomModemActivityInfo),
"ATOM_BLUETOOTH_ACTIVITY_INFO" => Some(Self::AtomBluetoothActivityInfo),
"ATOM_PROCESS_MEMORY_STATE" => Some(Self::AtomProcessMemoryState),
"ATOM_SYSTEM_ELAPSED_REALTIME" => Some(Self::AtomSystemElapsedRealtime),
"ATOM_SYSTEM_UPTIME" => Some(Self::AtomSystemUptime),
"ATOM_CPU_ACTIVE_TIME" => Some(Self::AtomCpuActiveTime),
"ATOM_CPU_CLUSTER_TIME" => Some(Self::AtomCpuClusterTime),
"ATOM_DISK_SPACE" => Some(Self::AtomDiskSpace),
"ATOM_REMAINING_BATTERY_CAPACITY" => Some(Self::AtomRemainingBatteryCapacity),
"ATOM_FULL_BATTERY_CAPACITY" => Some(Self::AtomFullBatteryCapacity),
"ATOM_TEMPERATURE" => Some(Self::AtomTemperature),
"ATOM_BINDER_CALLS" => Some(Self::AtomBinderCalls),
"ATOM_BINDER_CALLS_EXCEPTIONS" => Some(Self::AtomBinderCallsExceptions),
"ATOM_LOOPER_STATS" => Some(Self::AtomLooperStats),
"ATOM_DISK_STATS" => Some(Self::AtomDiskStats),
"ATOM_DIRECTORY_USAGE" => Some(Self::AtomDirectoryUsage),
"ATOM_APP_SIZE" => Some(Self::AtomAppSize),
"ATOM_CATEGORY_SIZE" => Some(Self::AtomCategorySize),
"ATOM_PROC_STATS" => Some(Self::AtomProcStats),
"ATOM_BATTERY_VOLTAGE" => Some(Self::AtomBatteryVoltage),
"ATOM_NUM_FINGERPRINTS_ENROLLED" => Some(Self::AtomNumFingerprintsEnrolled),
"ATOM_DISK_IO" => Some(Self::AtomDiskIo),
"ATOM_POWER_PROFILE" => Some(Self::AtomPowerProfile),
"ATOM_PROC_STATS_PKG_PROC" => Some(Self::AtomProcStatsPkgProc),
"ATOM_PROCESS_CPU_TIME" => Some(Self::AtomProcessCpuTime),
"ATOM_CPU_TIME_PER_THREAD_FREQ" => Some(Self::AtomCpuTimePerThreadFreq),
"ATOM_ON_DEVICE_POWER_MEASUREMENT" => {
Some(Self::AtomOnDevicePowerMeasurement)
}
"ATOM_DEVICE_CALCULATED_POWER_USE" => {
Some(Self::AtomDeviceCalculatedPowerUse)
}
"ATOM_PROCESS_MEMORY_HIGH_WATER_MARK" => {
Some(Self::AtomProcessMemoryHighWaterMark)
}
"ATOM_BATTERY_LEVEL" => Some(Self::AtomBatteryLevel),
"ATOM_BUILD_INFORMATION" => Some(Self::AtomBuildInformation),
"ATOM_BATTERY_CYCLE_COUNT" => Some(Self::AtomBatteryCycleCount),
"ATOM_DEBUG_ELAPSED_CLOCK" => Some(Self::AtomDebugElapsedClock),
"ATOM_DEBUG_FAILING_ELAPSED_CLOCK" => {
Some(Self::AtomDebugFailingElapsedClock)
}
"ATOM_NUM_FACES_ENROLLED" => Some(Self::AtomNumFacesEnrolled),
"ATOM_ROLE_HOLDER" => Some(Self::AtomRoleHolder),
"ATOM_DANGEROUS_PERMISSION_STATE" => Some(Self::AtomDangerousPermissionState),
"ATOM_TRAIN_INFO" => Some(Self::AtomTrainInfo),
"ATOM_TIME_ZONE_DATA_INFO" => Some(Self::AtomTimeZoneDataInfo),
"ATOM_EXTERNAL_STORAGE_INFO" => Some(Self::AtomExternalStorageInfo),
"ATOM_GPU_STATS_GLOBAL_INFO" => Some(Self::AtomGpuStatsGlobalInfo),
"ATOM_GPU_STATS_APP_INFO" => Some(Self::AtomGpuStatsAppInfo),
"ATOM_SYSTEM_ION_HEAP_SIZE" => Some(Self::AtomSystemIonHeapSize),
"ATOM_APPS_ON_EXTERNAL_STORAGE_INFO" => {
Some(Self::AtomAppsOnExternalStorageInfo)
}
"ATOM_FACE_SETTINGS" => Some(Self::AtomFaceSettings),
"ATOM_COOLING_DEVICE" => Some(Self::AtomCoolingDevice),
"ATOM_APP_OPS" => Some(Self::AtomAppOps),
"ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE" => {
Some(Self::AtomProcessSystemIonHeapSize)
}
"ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO" => {
Some(Self::AtomSurfaceflingerStatsGlobalInfo)
}
"ATOM_SURFACEFLINGER_STATS_LAYER_INFO" => {
Some(Self::AtomSurfaceflingerStatsLayerInfo)
}
"ATOM_PROCESS_MEMORY_SNAPSHOT" => Some(Self::AtomProcessMemorySnapshot),
"ATOM_VMS_CLIENT_STATS" => Some(Self::AtomVmsClientStats),
"ATOM_NOTIFICATION_REMOTE_VIEWS" => Some(Self::AtomNotificationRemoteViews),
"ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED" => {
Some(Self::AtomDangerousPermissionStateSampled)
}
"ATOM_GRAPHICS_STATS" => Some(Self::AtomGraphicsStats),
"ATOM_RUNTIME_APP_OP_ACCESS" => Some(Self::AtomRuntimeAppOpAccess),
"ATOM_ION_HEAP_SIZE" => Some(Self::AtomIonHeapSize),
"ATOM_PACKAGE_NOTIFICATION_PREFERENCES" => {
Some(Self::AtomPackageNotificationPreferences)
}
"ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES" => {
Some(Self::AtomPackageNotificationChannelPreferences)
}
"ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES" => {
Some(Self::AtomPackageNotificationChannelGroupPreferences)
}
"ATOM_GNSS_STATS" => Some(Self::AtomGnssStats),
"ATOM_ATTRIBUTED_APP_OPS" => Some(Self::AtomAttributedAppOps),
"ATOM_VOICE_CALL_SESSION" => Some(Self::AtomVoiceCallSession),
"ATOM_VOICE_CALL_RAT_USAGE" => Some(Self::AtomVoiceCallRatUsage),
"ATOM_SIM_SLOT_STATE" => Some(Self::AtomSimSlotState),
"ATOM_SUPPORTED_RADIO_ACCESS_FAMILY" => {
Some(Self::AtomSupportedRadioAccessFamily)
}
"ATOM_SETTING_SNAPSHOT" => Some(Self::AtomSettingSnapshot),
"ATOM_BLOB_INFO" => Some(Self::AtomBlobInfo),
"ATOM_DATA_USAGE_BYTES_TRANSFER" => Some(Self::AtomDataUsageBytesTransfer),
"ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED" => {
Some(Self::AtomBytesTransferByTagAndMetered)
}
"ATOM_DND_MODE_RULE" => Some(Self::AtomDndModeRule),
"ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS" => {
Some(Self::AtomGeneralExternalStorageAccessStats)
}
"ATOM_INCOMING_SMS" => Some(Self::AtomIncomingSms),
"ATOM_OUTGOING_SMS" => Some(Self::AtomOutgoingSms),
"ATOM_CARRIER_ID_TABLE_VERSION" => Some(Self::AtomCarrierIdTableVersion),
"ATOM_DATA_CALL_SESSION" => Some(Self::AtomDataCallSession),
"ATOM_CELLULAR_SERVICE_STATE" => Some(Self::AtomCellularServiceState),
"ATOM_CELLULAR_DATA_SERVICE_SWITCH" => {
Some(Self::AtomCellularDataServiceSwitch)
}
"ATOM_SYSTEM_MEMORY" => Some(Self::AtomSystemMemory),
"ATOM_IMS_REGISTRATION_TERMINATION" => {
Some(Self::AtomImsRegistrationTermination)
}
"ATOM_IMS_REGISTRATION_STATS" => Some(Self::AtomImsRegistrationStats),
"ATOM_CPU_TIME_PER_CLUSTER_FREQ" => Some(Self::AtomCpuTimePerClusterFreq),
"ATOM_CPU_CYCLES_PER_UID_CLUSTER" => Some(Self::AtomCpuCyclesPerUidCluster),
"ATOM_DEVICE_ROTATED_DATA" => Some(Self::AtomDeviceRotatedData),
"ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER" => {
Some(Self::AtomCpuCyclesPerThreadGroupCluster)
}
"ATOM_MEDIA_DRM_ACTIVITY_INFO" => Some(Self::AtomMediaDrmActivityInfo),
"ATOM_OEM_MANAGED_BYTES_TRANSFER" => Some(Self::AtomOemManagedBytesTransfer),
"ATOM_GNSS_POWER_STATS" => Some(Self::AtomGnssPowerStats),
"ATOM_TIME_ZONE_DETECTOR_STATE" => Some(Self::AtomTimeZoneDetectorState),
"ATOM_KEYSTORE2_STORAGE_STATS" => Some(Self::AtomKeystore2StorageStats),
"ATOM_RKP_POOL_STATS" => Some(Self::AtomRkpPoolStats),
"ATOM_PROCESS_DMABUF_MEMORY" => Some(Self::AtomProcessDmabufMemory),
"ATOM_PENDING_ALARM_INFO" => Some(Self::AtomPendingAlarmInfo),
"ATOM_USER_LEVEL_HIBERNATED_APPS" => Some(Self::AtomUserLevelHibernatedApps),
"ATOM_LAUNCHER_LAYOUT_SNAPSHOT" => Some(Self::AtomLauncherLayoutSnapshot),
"ATOM_GLOBAL_HIBERNATED_APPS" => Some(Self::AtomGlobalHibernatedApps),
"ATOM_INPUT_EVENT_LATENCY_SKETCH" => Some(Self::AtomInputEventLatencySketch),
"ATOM_BATTERY_USAGE_STATS_BEFORE_RESET" => {
Some(Self::AtomBatteryUsageStatsBeforeReset)
}
"ATOM_BATTERY_USAGE_STATS_SINCE_RESET" => {
Some(Self::AtomBatteryUsageStatsSinceReset)
}
"ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL" => {
Some(Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel)
}
"ATOM_INSTALLED_INCREMENTAL_PACKAGE" => {
Some(Self::AtomInstalledIncrementalPackage)
}
"ATOM_TELEPHONY_NETWORK_REQUESTS" => Some(Self::AtomTelephonyNetworkRequests),
"ATOM_APP_SEARCH_STORAGE_INFO" => Some(Self::AtomAppSearchStorageInfo),
"ATOM_VMSTAT" => Some(Self::AtomVmstat),
"ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO" => {
Some(Self::AtomKeystore2KeyCreationWithGeneralInfo)
}
"ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO" => {
Some(Self::AtomKeystore2KeyCreationWithAuthInfo)
}
"ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO" => {
Some(Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo)
}
"ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW" => {
Some(Self::AtomKeystore2AtomWithOverflow)
}
"ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO" => {
Some(Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo)
}
"ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO" => {
Some(Self::AtomKeystore2KeyOperationWithGeneralInfo)
}
"ATOM_RKP_ERROR_STATS" => Some(Self::AtomRkpErrorStats),
"ATOM_KEYSTORE2_CRASH_STATS" => Some(Self::AtomKeystore2CrashStats),
"ATOM_VENDOR_APEX_INFO" => Some(Self::AtomVendorApexInfo),
"ATOM_ACCESSIBILITY_SHORTCUT_STATS" => {
Some(Self::AtomAccessibilityShortcutStats)
}
"ATOM_ACCESSIBILITY_FLOATING_MENU_STATS" => {
Some(Self::AtomAccessibilityFloatingMenuStats)
}
"ATOM_DATA_USAGE_BYTES_TRANSFER_V2" => {
Some(Self::AtomDataUsageBytesTransferV2)
}
"ATOM_MEDIA_CAPABILITIES" => Some(Self::AtomMediaCapabilities),
"ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY" => {
Some(Self::AtomCarWatchdogSystemIoUsageSummary)
}
"ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY" => {
Some(Self::AtomCarWatchdogUidIoUsageSummary)
}
"ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS" => {
Some(Self::AtomImsRegistrationFeatureTagStats)
}
"ATOM_RCS_CLIENT_PROVISIONING_STATS" => {
Some(Self::AtomRcsClientProvisioningStats)
}
"ATOM_RCS_ACS_PROVISIONING_STATS" => Some(Self::AtomRcsAcsProvisioningStats),
"ATOM_SIP_DELEGATE_STATS" => Some(Self::AtomSipDelegateStats),
"ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS" => {
Some(Self::AtomSipTransportFeatureTagStats)
}
"ATOM_SIP_MESSAGE_RESPONSE" => Some(Self::AtomSipMessageResponse),
"ATOM_SIP_TRANSPORT_SESSION" => Some(Self::AtomSipTransportSession),
"ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT" => {
Some(Self::AtomImsDedicatedBearerListenerEvent)
}
"ATOM_IMS_DEDICATED_BEARER_EVENT" => Some(Self::AtomImsDedicatedBearerEvent),
"ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS" => {
Some(Self::AtomImsRegistrationServiceDescStats)
}
"ATOM_UCE_EVENT_STATS" => Some(Self::AtomUceEventStats),
"ATOM_PRESENCE_NOTIFY_EVENT" => Some(Self::AtomPresenceNotifyEvent),
"ATOM_GBA_EVENT" => Some(Self::AtomGbaEvent),
"ATOM_PER_SIM_STATUS" => Some(Self::AtomPerSimStatus),
"ATOM_GPU_WORK_PER_UID" => Some(Self::AtomGpuWorkPerUid),
"ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE" => {
Some(Self::AtomPersistentUriPermissionsAmountPerPackage)
}
"ATOM_SIGNED_PARTITION_INFO" => Some(Self::AtomSignedPartitionInfo),
"ATOM_PINNED_FILE_SIZES_PER_PACKAGE" => {
Some(Self::AtomPinnedFileSizesPerPackage)
}
"ATOM_PENDING_INTENTS_PER_PACKAGE" => {
Some(Self::AtomPendingIntentsPerPackage)
}
"ATOM_USER_INFO" => Some(Self::AtomUserInfo),
"ATOM_TELEPHONY_NETWORK_REQUESTS_V2" => {
Some(Self::AtomTelephonyNetworkRequestsV2)
}
"ATOM_DEVICE_TELEPHONY_PROPERTIES" => {
Some(Self::AtomDeviceTelephonyProperties)
}
"ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS" => {
Some(Self::AtomRemoteKeyProvisioningErrorCounts)
}
"ATOM_SAFETY_STATE" => Some(Self::AtomSafetyState),
"ATOM_INCOMING_MMS" => Some(Self::AtomIncomingMms),
"ATOM_OUTGOING_MMS" => Some(Self::AtomOutgoingMms),
"ATOM_MULTI_USER_INFO" => Some(Self::AtomMultiUserInfo),
"ATOM_NETWORK_BPF_MAP_INFO" => Some(Self::AtomNetworkBpfMapInfo),
"ATOM_OUTGOING_SHORT_CODE_SMS" => Some(Self::AtomOutgoingShortCodeSms),
"ATOM_CONNECTIVITY_STATE_SAMPLE" => Some(Self::AtomConnectivityStateSample),
"ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO" => {
Some(Self::AtomNetworkSelectionRematchReasonsInfo)
}
"ATOM_GAME_MODE_INFO" => Some(Self::AtomGameModeInfo),
"ATOM_GAME_MODE_CONFIGURATION" => Some(Self::AtomGameModeConfiguration),
"ATOM_GAME_MODE_LISTENER" => Some(Self::AtomGameModeListener),
"ATOM_NETWORK_SLICE_REQUEST_COUNT" => {
Some(Self::AtomNetworkSliceRequestCount)
}
"ATOM_WS_TILE_SNAPSHOT" => Some(Self::AtomWsTileSnapshot),
"ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT" => {
Some(Self::AtomWsActiveWatchFaceComplicationSetSnapshot)
}
"ATOM_PROCESS_STATE" => Some(Self::AtomProcessState),
"ATOM_PROCESS_ASSOCIATION" => Some(Self::AtomProcessAssociation),
"ATOM_ADPF_SYSTEM_COMPONENT_INFO" => Some(Self::AtomAdpfSystemComponentInfo),
"ATOM_NOTIFICATION_MEMORY_USE" => Some(Self::AtomNotificationMemoryUse),
"ATOM_HDR_CAPABILITIES" => Some(Self::AtomHdrCapabilities),
"ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT" => {
Some(Self::AtomWsFavouriteWatchFaceListSnapshot)
}
"ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED" => {
Some(Self::AtomAdaptiveAuthUnlockAfterLockReported)
}
"ATOM_THERMAL_STATUS_CALLED" => Some(Self::AtomThermalStatusCalled),
"ATOM_THERMAL_HEADROOM_CALLED" => Some(Self::AtomThermalHeadroomCalled),
"ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED" => {
Some(Self::AtomThermalHeadroomThresholdsCalled)
}
"ATOM_ADPF_HINT_SESSION_TID_CLEANUP" => {
Some(Self::AtomAdpfHintSessionTidCleanup)
}
"ATOM_THERMAL_HEADROOM_THRESHOLDS" => {
Some(Self::AtomThermalHeadroomThresholds)
}
"ATOM_ADPF_SESSION_SNAPSHOT" => Some(Self::AtomAdpfSessionSnapshot),
"ATOM_JSSCRIPTENGINE_LATENCY_REPORTED" => {
Some(Self::AtomJsscriptengineLatencyReported)
}
"ATOM_AD_SERVICES_API_CALLED" => Some(Self::AtomAdServicesApiCalled),
"ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED" => {
Some(Self::AtomAdServicesMesurementReportsUploaded)
}
"ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED" => {
Some(Self::AtomMobileDataDownloadFileGroupStatusReported)
}
"ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED" => {
Some(Self::AtomMobileDataDownloadDownloadResultReported)
}
"ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED" => {
Some(Self::AtomAdServicesSettingsUsageReported)
}
"ATOM_BACKGROUND_FETCH_PROCESS_REPORTED" => {
Some(Self::AtomBackgroundFetchProcessReported)
}
"ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED" => {
Some(Self::AtomUpdateCustomAudienceProcessReported)
}
"ATOM_RUN_AD_BIDDING_PROCESS_REPORTED" => {
Some(Self::AtomRunAdBiddingProcessReported)
}
"ATOM_RUN_AD_SCORING_PROCESS_REPORTED" => {
Some(Self::AtomRunAdScoringProcessReported)
}
"ATOM_RUN_AD_SELECTION_PROCESS_REPORTED" => {
Some(Self::AtomRunAdSelectionProcessReported)
}
"ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED" => {
Some(Self::AtomRunAdBiddingPerCaProcessReported)
}
"ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED" => {
Some(Self::AtomMobileDataDownloadFileGroupStorageStatsReported)
}
"ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS" => {
Some(Self::AtomAdServicesMeasurementRegistrations)
}
"ATOM_AD_SERVICES_GET_TOPICS_REPORTED" => {
Some(Self::AtomAdServicesGetTopicsReported)
}
"ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED" => {
Some(Self::AtomAdServicesEpochComputationGetTopTopicsReported)
}
"ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
Some(Self::AtomAdServicesEpochComputationClassifierReported)
}
"ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED" => {
Some(Self::AtomAdServicesBackCompatGetTopicsReported)
}
"ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
Some(Self::AtomAdServicesBackCompatEpochComputationClassifierReported)
}
"ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS" => {
Some(Self::AtomAdServicesMeasurementDebugKeys)
}
"ATOM_AD_SERVICES_ERROR_REPORTED" => Some(Self::AtomAdServicesErrorReported),
"ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED" => {
Some(Self::AtomAdServicesBackgroundJobsExecutionReported)
}
"ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION" => {
Some(Self::AtomAdServicesMeasurementDelayedSourceRegistration)
}
"ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION" => {
Some(Self::AtomAdServicesMeasurementAttribution)
}
"ATOM_AD_SERVICES_MEASUREMENT_JOBS" => {
Some(Self::AtomAdServicesMeasurementJobs)
}
"ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT" => {
Some(Self::AtomAdServicesMeasurementWipeout)
}
"ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS" => {
Some(Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys)
}
"ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED" => {
Some(Self::AtomAdServicesEnrollmentDataStored)
}
"ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED" => {
Some(Self::AtomAdServicesEnrollmentFileDownloaded)
}
"ATOM_AD_SERVICES_ENROLLMENT_MATCHED" => {
Some(Self::AtomAdServicesEnrollmentMatched)
}
"ATOM_AD_SERVICES_CONSENT_MIGRATED" => {
Some(Self::AtomAdServicesConsentMigrated)
}
"ATOM_AD_SERVICES_ENROLLMENT_FAILED" => {
Some(Self::AtomAdServicesEnrollmentFailed)
}
"ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION" => {
Some(Self::AtomAdServicesMeasurementClickVerification)
}
"ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED" => {
Some(Self::AtomAdServicesEncryptionKeyFetched)
}
"ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED" => {
Some(Self::AtomAdServicesEncryptionKeyDbTransactionEnded)
}
"ATOM_DESTINATION_REGISTERED_BEACONS" => {
Some(Self::AtomDestinationRegisteredBeacons)
}
"ATOM_REPORT_INTERACTION_API_CALLED" => {
Some(Self::AtomReportInteractionApiCalled)
}
"ATOM_INTERACTION_REPORTING_TABLE_CLEARED" => {
Some(Self::AtomInteractionReportingTableCleared)
}
"ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED" => {
Some(Self::AtomAppManifestConfigHelperCalled)
}
"ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED" => {
Some(Self::AtomAdFilteringProcessJoinCaReported)
}
"ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED" => {
Some(Self::AtomAdFilteringProcessAdSelectionReported)
}
"ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED" => {
Some(Self::AtomAdCounterHistogramUpdaterReported)
}
"ATOM_SIGNATURE_VERIFICATION" => Some(Self::AtomSignatureVerification),
"ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED" => {
Some(Self::AtomKAnonImmediateSignJoinStatusReported)
}
"ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED" => {
Some(Self::AtomKAnonBackgroundJobStatusReported)
}
"ATOM_K_ANON_INITIALIZE_STATUS_REPORTED" => {
Some(Self::AtomKAnonInitializeStatusReported)
}
"ATOM_K_ANON_SIGN_STATUS_REPORTED" => Some(Self::AtomKAnonSignStatusReported),
"ATOM_K_ANON_JOIN_STATUS_REPORTED" => Some(Self::AtomKAnonJoinStatusReported),
"ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED" => {
Some(Self::AtomKAnonKeyAttestationStatusReported)
}
"ATOM_GET_AD_SELECTION_DATA_API_CALLED" => {
Some(Self::AtomGetAdSelectionDataApiCalled)
}
"ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED" => {
Some(Self::AtomGetAdSelectionDataBuyerInputGenerated)
}
"ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED" => {
Some(Self::AtomBackgroundJobSchedulingReported)
}
"ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED" => {
Some(Self::AtomTopicsEncryptionEpochComputationReported)
}
"ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED" => {
Some(Self::AtomTopicsEncryptionGetTopicsReported)
}
"ATOM_ADSERVICES_SHELL_COMMAND_CALLED" => {
Some(Self::AtomAdservicesShellCommandCalled)
}
"ATOM_UPDATE_SIGNALS_API_CALLED" => Some(Self::AtomUpdateSignalsApiCalled),
"ATOM_ENCODING_JOB_RUN" => Some(Self::AtomEncodingJobRun),
"ATOM_ENCODING_JS_FETCH" => Some(Self::AtomEncodingJsFetch),
"ATOM_ENCODING_JS_EXECUTION" => Some(Self::AtomEncodingJsExecution),
"ATOM_PERSIST_AD_SELECTION_RESULT_CALLED" => {
Some(Self::AtomPersistAdSelectionResultCalled)
}
"ATOM_SERVER_AUCTION_KEY_FETCH_CALLED" => {
Some(Self::AtomServerAuctionKeyFetchCalled)
}
"ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED" => {
Some(Self::AtomServerAuctionBackgroundKeyFetchEnabled)
}
"ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION" => {
Some(Self::AtomAdServicesMeasurementProcessOdpRegistration)
}
"ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP" => {
Some(Self::AtomAdServicesMeasurementNotifyRegistrationToOdp)
}
"ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED" => {
Some(Self::AtomSelectAdsFromOutcomesApiCalled)
}
"ATOM_REPORT_IMPRESSION_API_CALLED" => {
Some(Self::AtomReportImpressionApiCalled)
}
"ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS" => {
Some(Self::AtomAdServicesEnrollmentTransactionStats)
}
"ATOM_AI_WALLPAPERS_BUTTON_PRESSED" => {
Some(Self::AtomAiWallpapersButtonPressed)
}
"ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED" => {
Some(Self::AtomAiWallpapersTemplateSelected)
}
"ATOM_AI_WALLPAPERS_TERM_SELECTED" => {
Some(Self::AtomAiWallpapersTermSelected)
}
"ATOM_AI_WALLPAPERS_WALLPAPER_SET" => {
Some(Self::AtomAiWallpapersWallpaperSet)
}
"ATOM_AI_WALLPAPERS_SESSION_SUMMARY" => {
Some(Self::AtomAiWallpapersSessionSummary)
}
"ATOM_APEX_INSTALLATION_REQUESTED" => {
Some(Self::AtomApexInstallationRequested)
}
"ATOM_APEX_INSTALLATION_STAGED" => Some(Self::AtomApexInstallationStaged),
"ATOM_APEX_INSTALLATION_ENDED" => Some(Self::AtomApexInstallationEnded),
"ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED" => {
Some(Self::AtomAppSearchSetSchemaStatsReported)
}
"ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED" => {
Some(Self::AtomAppSearchSchemaMigrationStatsReported)
}
"ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED" => {
Some(Self::AtomAppSearchUsageSearchIntentStatsReported)
}
"ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED" => {
Some(Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported)
}
"ATOM_ART_DATUM_REPORTED" => Some(Self::AtomArtDatumReported),
"ATOM_ART_DEVICE_DATUM_REPORTED" => Some(Self::AtomArtDeviceDatumReported),
"ATOM_ART_DATUM_DELTA_REPORTED" => Some(Self::AtomArtDatumDeltaReported),
"ATOM_ART_DEX2OAT_REPORTED" => Some(Self::AtomArtDex2oatReported),
"ATOM_ART_DEVICE_STATUS" => Some(Self::AtomArtDeviceStatus),
"ATOM_BACKGROUND_DEXOPT_JOB_ENDED" => {
Some(Self::AtomBackgroundDexoptJobEnded)
}
"ATOM_PREREBOOT_DEXOPT_JOB_ENDED" => Some(Self::AtomPrerebootDexoptJobEnded),
"ATOM_ODREFRESH_REPORTED" => Some(Self::AtomOdrefreshReported),
"ATOM_ODSIGN_REPORTED" => Some(Self::AtomOdsignReported),
"ATOM_AUTOFILL_UI_EVENT_REPORTED" => Some(Self::AtomAutofillUiEventReported),
"ATOM_AUTOFILL_FILL_REQUEST_REPORTED" => {
Some(Self::AtomAutofillFillRequestReported)
}
"ATOM_AUTOFILL_FILL_RESPONSE_REPORTED" => {
Some(Self::AtomAutofillFillResponseReported)
}
"ATOM_AUTOFILL_SAVE_EVENT_REPORTED" => {
Some(Self::AtomAutofillSaveEventReported)
}
"ATOM_AUTOFILL_SESSION_COMMITTED" => Some(Self::AtomAutofillSessionCommitted),
"ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED" => {
Some(Self::AtomAutofillFieldClassificationEventReported)
}
"ATOM_CAR_RECENTS_EVENT_REPORTED" => Some(Self::AtomCarRecentsEventReported),
"ATOM_CAR_CALM_MODE_EVENT_REPORTED" => {
Some(Self::AtomCarCalmModeEventReported)
}
"ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED" => {
Some(Self::AtomCarWakeupFromSuspendReported)
}
"ATOM_PLUGIN_INITIALIZED" => Some(Self::AtomPluginInitialized),
"ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED" => {
Some(Self::AtomBluetoothHashedDeviceNameReported)
}
"ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION" => {
Some(Self::AtomBluetoothL2capCocClientConnection)
}
"ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION" => {
Some(Self::AtomBluetoothL2capCocServerConnection)
}
"ATOM_BLUETOOTH_LE_SESSION_CONNECTED" => {
Some(Self::AtomBluetoothLeSessionConnected)
}
"ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED" => {
Some(Self::AtomRestrictedBluetoothDeviceNameReported)
}
"ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED" => {
Some(Self::AtomBluetoothProfileConnectionAttempted)
}
"ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED" => {
Some(Self::AtomBluetoothContentProfileErrorReported)
}
"ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED" => {
Some(Self::AtomBluetoothRfcommConnectionAttempted)
}
"ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID" => {
Some(Self::AtomRemoteDeviceInformationWithMetricId)
}
"ATOM_LE_APP_SCAN_STATE_CHANGED" => Some(Self::AtomLeAppScanStateChanged),
"ATOM_LE_RADIO_SCAN_STOPPED" => Some(Self::AtomLeRadioScanStopped),
"ATOM_LE_SCAN_RESULT_RECEIVED" => Some(Self::AtomLeScanResultReceived),
"ATOM_LE_SCAN_ABUSED" => Some(Self::AtomLeScanAbused),
"ATOM_LE_ADV_STATE_CHANGED" => Some(Self::AtomLeAdvStateChanged),
"ATOM_LE_ADV_ERROR_REPORTED" => Some(Self::AtomLeAdvErrorReported),
"ATOM_A2DP_SESSION_REPORTED" => Some(Self::AtomA2dpSessionReported),
"ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED" => {
Some(Self::AtomBluetoothCrossLayerEventReported)
}
"ATOM_BROADCAST_AUDIO_SESSION_REPORTED" => {
Some(Self::AtomBroadcastAudioSessionReported)
}
"ATOM_BROADCAST_AUDIO_SYNC_REPORTED" => {
Some(Self::AtomBroadcastAudioSyncReported)
}
"ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE" => {
Some(Self::AtomBluetoothRfcommConnectionReportedAtClose)
}
"ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT" => {
Some(Self::AtomCameraFeatureCombinationQueryEvent)
}
"ATOM_DAILY_KEEPALIVE_INFO_REPORTED" => {
Some(Self::AtomDailyKeepaliveInfoReported)
}
"ATOM_NETWORK_REQUEST_STATE_CHANGED" => {
Some(Self::AtomNetworkRequestStateChanged)
}
"ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED" => {
Some(Self::AtomTetheringActiveSessionsReported)
}
"ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED" => {
Some(Self::AtomNetworkStatsRecorderFileOperated)
}
"ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED" => {
Some(Self::AtomCoreNetworkingTerribleErrorOccurred)
}
"ATOM_APF_SESSION_INFO_REPORTED" => Some(Self::AtomApfSessionInfoReported),
"ATOM_IP_CLIENT_RA_INFO_REPORTED" => Some(Self::AtomIpClientRaInfoReported),
"ATOM_VPN_CONNECTION_STATE_CHANGED" => {
Some(Self::AtomVpnConnectionStateChanged)
}
"ATOM_VPN_CONNECTION_REPORTED" => Some(Self::AtomVpnConnectionReported),
"ATOM_CPU_POLICY" => Some(Self::AtomCpuPolicy),
"ATOM_CREDENTIAL_MANAGER_API_CALLED" => {
Some(Self::AtomCredentialManagerApiCalled)
}
"ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED" => {
Some(Self::AtomCredentialManagerInitPhaseReported)
}
"ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED" => {
Some(Self::AtomCredentialManagerCandidatePhaseReported)
}
"ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED" => {
Some(Self::AtomCredentialManagerFinalPhaseReported)
}
"ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED" => {
Some(Self::AtomCredentialManagerTotalReported)
}
"ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED" => {
Some(Self::AtomCredentialManagerFinalnouidReported)
}
"ATOM_CREDENTIAL_MANAGER_GET_REPORTED" => {
Some(Self::AtomCredentialManagerGetReported)
}
"ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED" => {
Some(Self::AtomCredentialManagerAuthClickReported)
}
"ATOM_CREDENTIAL_MANAGER_APIV2_CALLED" => {
Some(Self::AtomCredentialManagerApiv2Called)
}
"ATOM_CRONET_ENGINE_CREATED" => Some(Self::AtomCronetEngineCreated),
"ATOM_CRONET_TRAFFIC_REPORTED" => Some(Self::AtomCronetTrafficReported),
"ATOM_CRONET_ENGINE_BUILDER_INITIALIZED" => {
Some(Self::AtomCronetEngineBuilderInitialized)
}
"ATOM_CRONET_HTTP_FLAGS_INITIALIZED" => {
Some(Self::AtomCronetHttpFlagsInitialized)
}
"ATOM_CRONET_INITIALIZED" => Some(Self::AtomCronetInitialized),
"ATOM_DESKTOP_MODE_UI_CHANGED" => Some(Self::AtomDesktopModeUiChanged),
"ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE" => {
Some(Self::AtomDesktopModeSessionTaskUpdate)
}
"ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED" => {
Some(Self::AtomDeviceLockCheckInRequestReported)
}
"ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED" => {
Some(Self::AtomDeviceLockProvisioningCompleteReported)
}
"ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED" => {
Some(Self::AtomDeviceLockKioskAppRequestReported)
}
"ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED" => {
Some(Self::AtomDeviceLockCheckInRetryReported)
}
"ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED" => {
Some(Self::AtomDeviceLockProvisionFailureReported)
}
"ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED" => {
Some(Self::AtomDeviceLockLockUnlockDeviceFailureReported)
}
"ATOM_DEVICE_POLICY_MANAGEMENT_MODE" => {
Some(Self::AtomDevicePolicyManagementMode)
}
"ATOM_DEVICE_POLICY_STATE" => Some(Self::AtomDevicePolicyState),
"ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED" => {
Some(Self::AtomDisplayModeDirectorVoteChanged)
}
"ATOM_EXTERNAL_DISPLAY_STATE_CHANGED" => {
Some(Self::AtomExternalDisplayStateChanged)
}
"ATOM_DND_STATE_CHANGED" => Some(Self::AtomDndStateChanged),
"ATOM_DREAM_SETTING_CHANGED" => Some(Self::AtomDreamSettingChanged),
"ATOM_DREAM_SETTING_SNAPSHOT" => Some(Self::AtomDreamSettingSnapshot),
"ATOM_EXPRESS_EVENT_REPORTED" => Some(Self::AtomExpressEventReported),
"ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED" => {
Some(Self::AtomExpressHistogramSampleReported)
}
"ATOM_EXPRESS_UID_EVENT_REPORTED" => Some(Self::AtomExpressUidEventReported),
"ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED" => {
Some(Self::AtomExpressUidHistogramSampleReported)
}
"ATOM_FEDERATED_COMPUTE_API_CALLED" => {
Some(Self::AtomFederatedComputeApiCalled)
}
"ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED" => {
Some(Self::AtomFederatedComputeTrainingEventReported)
}
"ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED" => {
Some(Self::AtomExampleIteratorNextLatencyReported)
}
"ATOM_FULL_SCREEN_INTENT_LAUNCHED" => {
Some(Self::AtomFullScreenIntentLaunched)
}
"ATOM_BAL_ALLOWED" => Some(Self::AtomBalAllowed),
"ATOM_IN_TASK_ACTIVITY_STARTED" => Some(Self::AtomInTaskActivityStarted),
"ATOM_CACHED_APPS_HIGH_WATERMARK" => Some(Self::AtomCachedAppsHighWatermark),
"ATOM_STYLUS_PREDICTION_METRICS_REPORTED" => {
Some(Self::AtomStylusPredictionMetricsReported)
}
"ATOM_USER_RISK_EVENT_REPORTED" => Some(Self::AtomUserRiskEventReported),
"ATOM_MEDIA_PROJECTION_STATE_CHANGED" => {
Some(Self::AtomMediaProjectionStateChanged)
}
"ATOM_MEDIA_PROJECTION_TARGET_CHANGED" => {
Some(Self::AtomMediaProjectionTargetChanged)
}
"ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED" => {
Some(Self::AtomExcessiveBinderProxyCountReported)
}
"ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG" => {
Some(Self::AtomProxyBytesTransferByFgBg)
}
"ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE" => {
Some(Self::AtomMobileBytesTransferByProcState)
}
"ATOM_BIOMETRIC_FRR_NOTIFICATION" => Some(Self::AtomBiometricFrrNotification),
"ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION" => {
Some(Self::AtomSensitiveContentMediaProjectionSession)
}
"ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION" => {
Some(Self::AtomSensitiveNotificationAppProtectionSession)
}
"ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED" => {
Some(Self::AtomSensitiveNotificationAppProtectionApplied)
}
"ATOM_SENSITIVE_NOTIFICATION_REDACTION" => {
Some(Self::AtomSensitiveNotificationRedaction)
}
"ATOM_SENSITIVE_CONTENT_APP_PROTECTION" => {
Some(Self::AtomSensitiveContentAppProtection)
}
"ATOM_APP_RESTRICTION_STATE_CHANGED" => {
Some(Self::AtomAppRestrictionStateChanged)
}
"ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED" => {
Some(Self::AtomApplicationGrammaticalInflectionChanged)
}
"ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED" => {
Some(Self::AtomSystemGrammaticalInflectionChanged)
}
"ATOM_HDMI_EARC_STATUS_REPORTED" => Some(Self::AtomHdmiEarcStatusReported),
"ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED" => {
Some(Self::AtomHdmiSoundbarModeStatusReported)
}
"ATOM_HEALTH_CONNECT_API_CALLED" => Some(Self::AtomHealthConnectApiCalled),
"ATOM_HEALTH_CONNECT_USAGE_STATS" => Some(Self::AtomHealthConnectUsageStats),
"ATOM_HEALTH_CONNECT_STORAGE_STATS" => {
Some(Self::AtomHealthConnectStorageStats)
}
"ATOM_HEALTH_CONNECT_API_INVOKED" => Some(Self::AtomHealthConnectApiInvoked),
"ATOM_EXERCISE_ROUTE_API_CALLED" => Some(Self::AtomExerciseRouteApiCalled),
"ATOM_HEALTH_CONNECT_UI_IMPRESSION" => {
Some(Self::AtomHealthConnectUiImpression)
}
"ATOM_HEALTH_CONNECT_UI_INTERACTION" => {
Some(Self::AtomHealthConnectUiInteraction)
}
"ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED" => {
Some(Self::AtomHealthConnectAppOpenedReported)
}
"ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED" => {
Some(Self::AtomHotwordEgressSizeAtomReported)
}
"ATOM_IKE_SESSION_TERMINATED" => Some(Self::AtomIkeSessionTerminated),
"ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED" => {
Some(Self::AtomIkeLivenessCheckSessionValidated)
}
"ATOM_NEGOTIATED_SECURITY_ASSOCIATION" => {
Some(Self::AtomNegotiatedSecurityAssociation)
}
"ATOM_KEYBOARD_CONFIGURED" => Some(Self::AtomKeyboardConfigured),
"ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED" => {
Some(Self::AtomKeyboardSystemsEventReported)
}
"ATOM_INPUTDEVICE_USAGE_REPORTED" => Some(Self::AtomInputdeviceUsageReported),
"ATOM_TOUCHPAD_USAGE" => Some(Self::AtomTouchpadUsage),
"ATOM_KERNEL_OOM_KILL_OCCURRED" => Some(Self::AtomKernelOomKillOccurred),
"ATOM_EMERGENCY_STATE_CHANGED" => Some(Self::AtomEmergencyStateChanged),
"ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED" => {
Some(Self::AtomChreSignificantMotionStateChanged)
}
"ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED" => {
Some(Self::AtomMediaCodecReclaimRequestCompleted)
}
"ATOM_MEDIA_CODEC_STARTED" => Some(Self::AtomMediaCodecStarted),
"ATOM_MEDIA_CODEC_STOPPED" => Some(Self::AtomMediaCodecStopped),
"ATOM_MEDIA_CODEC_RENDERED" => Some(Self::AtomMediaCodecRendered),
"ATOM_MEDIA_EDITING_ENDED_REPORTED" => {
Some(Self::AtomMediaEditingEndedReported)
}
"ATOM_MTE_STATE" => Some(Self::AtomMteState),
"ATOM_NFC_OBSERVE_MODE_STATE_CHANGED" => {
Some(Self::AtomNfcObserveModeStateChanged)
}
"ATOM_NFC_FIELD_CHANGED" => Some(Self::AtomNfcFieldChanged),
"ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED" => {
Some(Self::AtomNfcPollingLoopNotificationReported)
}
"ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED" => {
Some(Self::AtomNfcProprietaryCapabilitiesReported)
}
"ATOM_ONDEVICEPERSONALIZATION_API_CALLED" => {
Some(Self::AtomOndevicepersonalizationApiCalled)
}
"ATOM_COMPONENT_STATE_CHANGED_REPORTED" => {
Some(Self::AtomComponentStateChangedReported)
}
"ATOM_PDF_LOAD_REPORTED" => Some(Self::AtomPdfLoadReported),
"ATOM_PDF_API_USAGE_REPORTED" => Some(Self::AtomPdfApiUsageReported),
"ATOM_PDF_SEARCH_REPORTED" => Some(Self::AtomPdfSearchReported),
"ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED" => {
Some(Self::AtomPermissionRationaleDialogViewed)
}
"ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED" => {
Some(Self::AtomPermissionRationaleDialogActionReported)
}
"ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION" => {
Some(Self::AtomAppDataSharingUpdatesNotificationInteraction)
}
"ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED" => {
Some(Self::AtomAppDataSharingUpdatesFragmentViewed)
}
"ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED" => {
Some(Self::AtomAppDataSharingUpdatesFragmentActionReported)
}
"ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED" => {
Some(Self::AtomEnhancedConfirmationDialogResultReported)
}
"ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED" => {
Some(Self::AtomEnhancedConfirmationRestrictionCleared)
}
"ATOM_PHOTOPICKER_SESSION_INFO_REPORTED" => {
Some(Self::AtomPhotopickerSessionInfoReported)
}
"ATOM_PHOTOPICKER_API_INFO_REPORTED" => {
Some(Self::AtomPhotopickerApiInfoReported)
}
"ATOM_PHOTOPICKER_UI_EVENT_LOGGED" => {
Some(Self::AtomPhotopickerUiEventLogged)
}
"ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED" => {
Some(Self::AtomPhotopickerMediaItemStatusReported)
}
"ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED" => {
Some(Self::AtomPhotopickerPreviewInfoLogged)
}
"ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED" => {
Some(Self::AtomPhotopickerMenuInteractionLogged)
}
"ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED" => {
Some(Self::AtomPhotopickerBannerInteractionLogged)
}
"ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED" => {
Some(Self::AtomPhotopickerMediaLibraryInfoLogged)
}
"ATOM_PHOTOPICKER_PAGE_INFO_LOGGED" => {
Some(Self::AtomPhotopickerPageInfoLogged)
}
"ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED" => {
Some(Self::AtomPhotopickerMediaGridSyncInfoReported)
}
"ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED" => {
Some(Self::AtomPhotopickerAlbumSyncInfoReported)
}
"ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED" => {
Some(Self::AtomPhotopickerSearchInfoReported)
}
"ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED" => {
Some(Self::AtomSearchDataExtractionDetailsReported)
}
"ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED" => {
Some(Self::AtomEmbeddedPhotopickerInfoReported)
}
"ATOM_ATOM_9999" => Some(Self::AtomAtom9999),
"ATOM_ATOM_99999" => Some(Self::AtomAtom99999),
"ATOM_SCREEN_OFF_REPORTED" => Some(Self::AtomScreenOffReported),
"ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED" => {
Some(Self::AtomScreenTimeoutOverrideReported)
}
"ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED" => {
Some(Self::AtomScreenInteractiveSessionReported)
}
"ATOM_SCREEN_DIM_REPORTED" => Some(Self::AtomScreenDimReported),
"ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED" => {
Some(Self::AtomMediaProviderDatabaseRollbackReported)
}
"ATOM_BACKUP_SETUP_STATUS_REPORTED" => {
Some(Self::AtomBackupSetupStatusReported)
}
"ATOM_RKPD_POOL_STATS" => Some(Self::AtomRkpdPoolStats),
"ATOM_RKPD_CLIENT_OPERATION" => Some(Self::AtomRkpdClientOperation),
"ATOM_SANDBOX_API_CALLED" => Some(Self::AtomSandboxApiCalled),
"ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED" => {
Some(Self::AtomSandboxActivityEventOccurred)
}
"ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION" => {
Some(Self::AtomSdkSandboxRestrictedAccessInSession)
}
"ATOM_SANDBOX_SDK_STORAGE" => Some(Self::AtomSandboxSdkStorage),
"ATOM_SELINUX_AUDIT_LOG" => Some(Self::AtomSelinuxAuditLog),
"ATOM_SETTINGS_SPA_REPORTED" => Some(Self::AtomSettingsSpaReported),
"ATOM_TEST_EXTENSION_ATOM_REPORTED" => {
Some(Self::AtomTestExtensionAtomReported)
}
"ATOM_TEST_RESTRICTED_ATOM_REPORTED" => {
Some(Self::AtomTestRestrictedAtomReported)
}
"ATOM_STATS_SOCKET_LOSS_REPORTED" => Some(Self::AtomStatsSocketLossReported),
"ATOM_LOCKSCREEN_SHORTCUT_SELECTED" => {
Some(Self::AtomLockscreenShortcutSelected)
}
"ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED" => {
Some(Self::AtomLockscreenShortcutTriggered)
}
"ATOM_LAUNCHER_IMPRESSION_EVENT_V2" => {
Some(Self::AtomLauncherImpressionEventV2)
}
"ATOM_DISPLAY_SWITCH_LATENCY_TRACKED" => {
Some(Self::AtomDisplaySwitchLatencyTracked)
}
"ATOM_NOTIFICATION_LISTENER_SERVICE" => {
Some(Self::AtomNotificationListenerService)
}
"ATOM_NAV_HANDLE_TOUCH_POINTS" => Some(Self::AtomNavHandleTouchPoints),
"ATOM_EMERGENCY_NUMBER_DIALED" => Some(Self::AtomEmergencyNumberDialed),
"ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED" => {
Some(Self::AtomCellularRadioPowerStateChanged)
}
"ATOM_EMERGENCY_NUMBERS_INFO" => Some(Self::AtomEmergencyNumbersInfo),
"ATOM_DATA_NETWORK_VALIDATION" => Some(Self::AtomDataNetworkValidation),
"ATOM_DATA_RAT_STATE_CHANGED" => Some(Self::AtomDataRatStateChanged),
"ATOM_CONNECTED_CHANNEL_CHANGED" => Some(Self::AtomConnectedChannelChanged),
"ATOM_QUALIFIED_RAT_LIST_CHANGED" => Some(Self::AtomQualifiedRatListChanged),
"ATOM_QNS_IMS_CALL_DROP_STATS" => Some(Self::AtomQnsImsCallDropStats),
"ATOM_QNS_FALLBACK_RESTRICTION_CHANGED" => {
Some(Self::AtomQnsFallbackRestrictionChanged)
}
"ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO" => {
Some(Self::AtomQnsRatPreferenceMismatchInfo)
}
"ATOM_QNS_HANDOVER_TIME_MILLIS" => Some(Self::AtomQnsHandoverTimeMillis),
"ATOM_QNS_HANDOVER_PINGPONG" => Some(Self::AtomQnsHandoverPingpong),
"ATOM_SATELLITE_CONTROLLER" => Some(Self::AtomSatelliteController),
"ATOM_SATELLITE_SESSION" => Some(Self::AtomSatelliteSession),
"ATOM_SATELLITE_INCOMING_DATAGRAM" => {
Some(Self::AtomSatelliteIncomingDatagram)
}
"ATOM_SATELLITE_OUTGOING_DATAGRAM" => {
Some(Self::AtomSatelliteOutgoingDatagram)
}
"ATOM_SATELLITE_PROVISION" => Some(Self::AtomSatelliteProvision),
"ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER" => {
Some(Self::AtomSatelliteSosMessageRecommender)
}
"ATOM_CARRIER_ROAMING_SATELLITE_SESSION" => {
Some(Self::AtomCarrierRoamingSatelliteSession)
}
"ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS" => {
Some(Self::AtomCarrierRoamingSatelliteControllerStats)
}
"ATOM_CONTROLLER_STATS_PER_PACKAGE" => {
Some(Self::AtomControllerStatsPerPackage)
}
"ATOM_SATELLITE_ENTITLEMENT" => Some(Self::AtomSatelliteEntitlement),
"ATOM_SATELLITE_CONFIG_UPDATER" => Some(Self::AtomSatelliteConfigUpdater),
"ATOM_SATELLITE_ACCESS_CONTROLLER" => {
Some(Self::AtomSatelliteAccessController)
}
"ATOM_CELLULAR_IDENTIFIER_DISCLOSED" => {
Some(Self::AtomCellularIdentifierDisclosed)
}
"ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED" => {
Some(Self::AtomThreadnetworkTelemetryDataReported)
}
"ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED" => {
Some(Self::AtomThreadnetworkTopoEntryRepeated)
}
"ATOM_THREADNETWORK_DEVICE_INFO_REPORTED" => {
Some(Self::AtomThreadnetworkDeviceInfoReported)
}
"ATOM_BOOT_INTEGRITY_INFO_REPORTED" => {
Some(Self::AtomBootIntegrityInfoReported)
}
"ATOM_TV_LOW_POWER_STANDBY_POLICY" => Some(Self::AtomTvLowPowerStandbyPolicy),
"ATOM_EXTERNAL_TV_INPUT_EVENT" => Some(Self::AtomExternalTvInputEvent),
"ATOM_UWB_ACTIVITY_INFO" => Some(Self::AtomUwbActivityInfo),
"ATOM_MEDIATOR_UPDATED" => Some(Self::AtomMediatorUpdated),
"ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER" => {
Some(Self::AtomSysproxyBluetoothBytesTransfer)
}
"ATOM_SYSPROXY_CONNECTION_UPDATED" => {
Some(Self::AtomSysproxyConnectionUpdated)
}
"ATOM_MEDIA_ACTION_REPORTED" => Some(Self::AtomMediaActionReported),
"ATOM_MEDIA_CONTROLS_LAUNCHED" => Some(Self::AtomMediaControlsLaunched),
"ATOM_MEDIA_SESSION_STATE_CHANGED" => {
Some(Self::AtomMediaSessionStateChanged)
}
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY" => {
Some(Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency)
}
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE" => {
Some(Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable)
}
"ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT" => {
Some(Self::AtomWearMediaOutputSwitcherFastpairApiTimeout)
}
"ATOM_WEAR_MODE_STATE_CHANGED" => Some(Self::AtomWearModeStateChanged),
"ATOM_RENDERER_INITIALIZED" => Some(Self::AtomRendererInitialized),
"ATOM_SCHEMA_VERSION_RECEIVED" => Some(Self::AtomSchemaVersionReceived),
"ATOM_LAYOUT_INSPECTED" => Some(Self::AtomLayoutInspected),
"ATOM_LAYOUT_EXPRESSION_INSPECTED" => {
Some(Self::AtomLayoutExpressionInspected)
}
"ATOM_LAYOUT_ANIMATIONS_INSPECTED" => {
Some(Self::AtomLayoutAnimationsInspected)
}
"ATOM_MATERIAL_COMPONENTS_INSPECTED" => {
Some(Self::AtomMaterialComponentsInspected)
}
"ATOM_TILE_REQUESTED" => Some(Self::AtomTileRequested),
"ATOM_STATE_RESPONSE_RECEIVED" => Some(Self::AtomStateResponseReceived),
"ATOM_TILE_RESPONSE_RECEIVED" => Some(Self::AtomTileResponseReceived),
"ATOM_INFLATION_FINISHED" => Some(Self::AtomInflationFinished),
"ATOM_INFLATION_FAILED" => Some(Self::AtomInflationFailed),
"ATOM_IGNORED_INFLATION_FAILURES_REPORTED" => {
Some(Self::AtomIgnoredInflationFailuresReported)
}
"ATOM_DRAWABLE_RENDERED" => Some(Self::AtomDrawableRendered),
"ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED" => {
Some(Self::AtomWearAdaptiveSuspendStatsReported)
}
"ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED" => {
Some(Self::AtomWearPowerAnomalyServiceOperationalStatsReported)
}
"ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED" => {
Some(Self::AtomWearPowerAnomalyServiceEventStatsReported)
}
"ATOM_WS_WEAR_TIME_SESSION" => Some(Self::AtomWsWearTimeSession),
"ATOM_WS_INCOMING_CALL_ACTION_REPORTED" => {
Some(Self::AtomWsIncomingCallActionReported)
}
"ATOM_WS_CALL_DISCONNECTION_REPORTED" => {
Some(Self::AtomWsCallDisconnectionReported)
}
"ATOM_WS_CALL_DURATION_REPORTED" => Some(Self::AtomWsCallDurationReported),
"ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED" => {
Some(Self::AtomWsCallUserExperienceLatencyReported)
}
"ATOM_WS_CALL_INTERACTION_REPORTED" => {
Some(Self::AtomWsCallInteractionReported)
}
"ATOM_WS_ON_BODY_STATE_CHANGED" => Some(Self::AtomWsOnBodyStateChanged),
"ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED" => {
Some(Self::AtomWsWatchFaceRestrictedComplicationsImpacted)
}
"ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED" => {
Some(Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved)
}
"ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED" => {
Some(Self::AtomWsComplicationsImpactedNotificationEventReported)
}
"ATOM_WS_STANDALONE_MODE_SNAPSHOT" => {
Some(Self::AtomWsStandaloneModeSnapshot)
}
"ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT" => {
Some(Self::AtomWsFavoriteWatchFaceSnapshot)
}
"ATOM_WEAR_POWER_MENU_OPENED" => Some(Self::AtomWearPowerMenuOpened),
"ATOM_WEAR_ASSISTANT_OPENED" => Some(Self::AtomWearAssistantOpened),
"ATOM_WIFI_AWARE_NDP_REPORTED" => Some(Self::AtomWifiAwareNdpReported),
"ATOM_WIFI_AWARE_ATTACH_REPORTED" => Some(Self::AtomWifiAwareAttachReported),
"ATOM_WIFI_SELF_RECOVERY_TRIGGERED" => {
Some(Self::AtomWifiSelfRecoveryTriggered)
}
"ATOM_SOFT_AP_STARTED" => Some(Self::AtomSoftApStarted),
"ATOM_SOFT_AP_STOPPED" => Some(Self::AtomSoftApStopped),
"ATOM_WIFI_LOCK_RELEASED" => Some(Self::AtomWifiLockReleased),
"ATOM_WIFI_LOCK_DEACTIVATED" => Some(Self::AtomWifiLockDeactivated),
"ATOM_WIFI_CONFIG_SAVED" => Some(Self::AtomWifiConfigSaved),
"ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED" => {
Some(Self::AtomWifiAwareResourceUsingChanged)
}
"ATOM_WIFI_AWARE_HAL_API_CALLED" => Some(Self::AtomWifiAwareHalApiCalled),
"ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED" => {
Some(Self::AtomWifiLocalOnlyRequestReceived)
}
"ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED" => {
Some(Self::AtomWifiLocalOnlyRequestScanTriggered)
}
"ATOM_WIFI_THREAD_TASK_EXECUTED" => Some(Self::AtomWifiThreadTaskExecuted),
"ATOM_WIFI_STATE_CHANGED" => Some(Self::AtomWifiStateChanged),
"ATOM_PNO_SCAN_STARTED" => Some(Self::AtomPnoScanStarted),
"ATOM_PNO_SCAN_STOPPED" => Some(Self::AtomPnoScanStopped),
"ATOM_WIFI_IS_UNUSABLE_REPORTED" => Some(Self::AtomWifiIsUnusableReported),
"ATOM_WIFI_AP_CAPABILITIES_REPORTED" => {
Some(Self::AtomWifiApCapabilitiesReported)
}
"ATOM_SOFT_AP_STATE_CHANGED" => Some(Self::AtomSoftApStateChanged),
"ATOM_SCORER_PREDICTION_RESULT_REPORTED" => {
Some(Self::AtomScorerPredictionResultReported)
}
"ATOM_WIFI_AWARE_CAPABILITIES" => Some(Self::AtomWifiAwareCapabilities),
"ATOM_WIFI_MODULE_INFO" => Some(Self::AtomWifiModuleInfo),
"ATOM_WIFI_SETTING_INFO" => Some(Self::AtomWifiSettingInfo),
"ATOM_WIFI_COMPLEX_SETTING_INFO" => Some(Self::AtomWifiComplexSettingInfo),
"ATOM_WIFI_CONFIGURED_NETWORK_INFO" => {
Some(Self::AtomWifiConfiguredNetworkInfo)
}
_ => None,
}
}
}
/// Counter definitions for Linux's /proc/meminfo.
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum MeminfoCounters {
MeminfoUnspecified = 0,
MeminfoMemTotal = 1,
MeminfoMemFree = 2,
MeminfoMemAvailable = 3,
MeminfoBuffers = 4,
MeminfoCached = 5,
MeminfoSwapCached = 6,
MeminfoActive = 7,
MeminfoInactive = 8,
MeminfoActiveAnon = 9,
MeminfoInactiveAnon = 10,
MeminfoActiveFile = 11,
MeminfoInactiveFile = 12,
MeminfoUnevictable = 13,
MeminfoMlocked = 14,
MeminfoSwapTotal = 15,
MeminfoSwapFree = 16,
MeminfoDirty = 17,
MeminfoWriteback = 18,
MeminfoAnonPages = 19,
MeminfoMapped = 20,
MeminfoShmem = 21,
MeminfoSlab = 22,
MeminfoSlabReclaimable = 23,
MeminfoSlabUnreclaimable = 24,
MeminfoKernelStack = 25,
MeminfoPageTables = 26,
MeminfoCommitLimit = 27,
MeminfoCommitedAs = 28,
MeminfoVmallocTotal = 29,
MeminfoVmallocUsed = 30,
MeminfoVmallocChunk = 31,
MeminfoCmaTotal = 32,
MeminfoCmaFree = 33,
MeminfoGpu = 34,
MeminfoZram = 35,
MeminfoMisc = 36,
MeminfoIonHeap = 37,
MeminfoIonHeapPool = 38,
}
impl MeminfoCounters {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
Self::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
Self::MeminfoMemFree => "MEMINFO_MEM_FREE",
Self::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
Self::MeminfoBuffers => "MEMINFO_BUFFERS",
Self::MeminfoCached => "MEMINFO_CACHED",
Self::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
Self::MeminfoActive => "MEMINFO_ACTIVE",
Self::MeminfoInactive => "MEMINFO_INACTIVE",
Self::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
Self::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
Self::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
Self::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
Self::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
Self::MeminfoMlocked => "MEMINFO_MLOCKED",
Self::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
Self::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
Self::MeminfoDirty => "MEMINFO_DIRTY",
Self::MeminfoWriteback => "MEMINFO_WRITEBACK",
Self::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
Self::MeminfoMapped => "MEMINFO_MAPPED",
Self::MeminfoShmem => "MEMINFO_SHMEM",
Self::MeminfoSlab => "MEMINFO_SLAB",
Self::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
Self::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
Self::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
Self::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
Self::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
Self::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
Self::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
Self::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
Self::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
Self::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
Self::MeminfoCmaFree => "MEMINFO_CMA_FREE",
Self::MeminfoGpu => "MEMINFO_GPU",
Self::MeminfoZram => "MEMINFO_ZRAM",
Self::MeminfoMisc => "MEMINFO_MISC",
Self::MeminfoIonHeap => "MEMINFO_ION_HEAP",
Self::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"MEMINFO_UNSPECIFIED" => Some(Self::MeminfoUnspecified),
"MEMINFO_MEM_TOTAL" => Some(Self::MeminfoMemTotal),
"MEMINFO_MEM_FREE" => Some(Self::MeminfoMemFree),
"MEMINFO_MEM_AVAILABLE" => Some(Self::MeminfoMemAvailable),
"MEMINFO_BUFFERS" => Some(Self::MeminfoBuffers),
"MEMINFO_CACHED" => Some(Self::MeminfoCached),
"MEMINFO_SWAP_CACHED" => Some(Self::MeminfoSwapCached),
"MEMINFO_ACTIVE" => Some(Self::MeminfoActive),
"MEMINFO_INACTIVE" => Some(Self::MeminfoInactive),
"MEMINFO_ACTIVE_ANON" => Some(Self::MeminfoActiveAnon),
"MEMINFO_INACTIVE_ANON" => Some(Self::MeminfoInactiveAnon),
"MEMINFO_ACTIVE_FILE" => Some(Self::MeminfoActiveFile),
"MEMINFO_INACTIVE_FILE" => Some(Self::MeminfoInactiveFile),
"MEMINFO_UNEVICTABLE" => Some(Self::MeminfoUnevictable),
"MEMINFO_MLOCKED" => Some(Self::MeminfoMlocked),
"MEMINFO_SWAP_TOTAL" => Some(Self::MeminfoSwapTotal),
"MEMINFO_SWAP_FREE" => Some(Self::MeminfoSwapFree),
"MEMINFO_DIRTY" => Some(Self::MeminfoDirty),
"MEMINFO_WRITEBACK" => Some(Self::MeminfoWriteback),
"MEMINFO_ANON_PAGES" => Some(Self::MeminfoAnonPages),
"MEMINFO_MAPPED" => Some(Self::MeminfoMapped),
"MEMINFO_SHMEM" => Some(Self::MeminfoShmem),
"MEMINFO_SLAB" => Some(Self::MeminfoSlab),
"MEMINFO_SLAB_RECLAIMABLE" => Some(Self::MeminfoSlabReclaimable),
"MEMINFO_SLAB_UNRECLAIMABLE" => Some(Self::MeminfoSlabUnreclaimable),
"MEMINFO_KERNEL_STACK" => Some(Self::MeminfoKernelStack),
"MEMINFO_PAGE_TABLES" => Some(Self::MeminfoPageTables),
"MEMINFO_COMMIT_LIMIT" => Some(Self::MeminfoCommitLimit),
"MEMINFO_COMMITED_AS" => Some(Self::MeminfoCommitedAs),
"MEMINFO_VMALLOC_TOTAL" => Some(Self::MeminfoVmallocTotal),
"MEMINFO_VMALLOC_USED" => Some(Self::MeminfoVmallocUsed),
"MEMINFO_VMALLOC_CHUNK" => Some(Self::MeminfoVmallocChunk),
"MEMINFO_CMA_TOTAL" => Some(Self::MeminfoCmaTotal),
"MEMINFO_CMA_FREE" => Some(Self::MeminfoCmaFree),
"MEMINFO_GPU" => Some(Self::MeminfoGpu),
"MEMINFO_ZRAM" => Some(Self::MeminfoZram),
"MEMINFO_MISC" => Some(Self::MeminfoMisc),
"MEMINFO_ION_HEAP" => Some(Self::MeminfoIonHeap),
"MEMINFO_ION_HEAP_POOL" => Some(Self::MeminfoIonHeapPool),
_ => None,
}
}
}
/// Counter definitions for Linux's /proc/vmstat.
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum VmstatCounters {
VmstatUnspecified = 0,
VmstatNrFreePages = 1,
VmstatNrAllocBatch = 2,
VmstatNrInactiveAnon = 3,
VmstatNrActiveAnon = 4,
VmstatNrInactiveFile = 5,
VmstatNrActiveFile = 6,
VmstatNrUnevictable = 7,
VmstatNrMlock = 8,
VmstatNrAnonPages = 9,
VmstatNrMapped = 10,
VmstatNrFilePages = 11,
VmstatNrDirty = 12,
VmstatNrWriteback = 13,
VmstatNrSlabReclaimable = 14,
VmstatNrSlabUnreclaimable = 15,
VmstatNrPageTablePages = 16,
VmstatNrKernelStack = 17,
VmstatNrOverhead = 18,
VmstatNrUnstable = 19,
VmstatNrBounce = 20,
VmstatNrVmscanWrite = 21,
VmstatNrVmscanImmediateReclaim = 22,
VmstatNrWritebackTemp = 23,
VmstatNrIsolatedAnon = 24,
VmstatNrIsolatedFile = 25,
VmstatNrShmem = 26,
VmstatNrDirtied = 27,
VmstatNrWritten = 28,
VmstatNrPagesScanned = 29,
VmstatWorkingsetRefault = 30,
VmstatWorkingsetActivate = 31,
VmstatWorkingsetNodereclaim = 32,
VmstatNrAnonTransparentHugepages = 33,
VmstatNrFreeCma = 34,
VmstatNrSwapcache = 35,
VmstatNrDirtyThreshold = 36,
VmstatNrDirtyBackgroundThreshold = 37,
VmstatPgpgin = 38,
VmstatPgpgout = 39,
VmstatPgpgoutclean = 40,
VmstatPswpin = 41,
VmstatPswpout = 42,
VmstatPgallocDma = 43,
VmstatPgallocNormal = 44,
VmstatPgallocMovable = 45,
VmstatPgfree = 46,
VmstatPgactivate = 47,
VmstatPgdeactivate = 48,
VmstatPgfault = 49,
VmstatPgmajfault = 50,
VmstatPgrefillDma = 51,
VmstatPgrefillNormal = 52,
VmstatPgrefillMovable = 53,
VmstatPgstealKswapdDma = 54,
VmstatPgstealKswapdNormal = 55,
VmstatPgstealKswapdMovable = 56,
VmstatPgstealDirectDma = 57,
VmstatPgstealDirectNormal = 58,
VmstatPgstealDirectMovable = 59,
VmstatPgscanKswapdDma = 60,
VmstatPgscanKswapdNormal = 61,
VmstatPgscanKswapdMovable = 62,
VmstatPgscanDirectDma = 63,
VmstatPgscanDirectNormal = 64,
VmstatPgscanDirectMovable = 65,
VmstatPgscanDirectThrottle = 66,
VmstatPginodesteal = 67,
VmstatSlabsScanned = 68,
VmstatKswapdInodesteal = 69,
VmstatKswapdLowWmarkHitQuickly = 70,
VmstatKswapdHighWmarkHitQuickly = 71,
VmstatPageoutrun = 72,
VmstatAllocstall = 73,
VmstatPgrotated = 74,
VmstatDropPagecache = 75,
VmstatDropSlab = 76,
VmstatPgmigrateSuccess = 77,
VmstatPgmigrateFail = 78,
VmstatCompactMigrateScanned = 79,
VmstatCompactFreeScanned = 80,
VmstatCompactIsolated = 81,
VmstatCompactStall = 82,
VmstatCompactFail = 83,
VmstatCompactSuccess = 84,
VmstatCompactDaemonWake = 85,
VmstatUnevictablePgsCulled = 86,
VmstatUnevictablePgsScanned = 87,
VmstatUnevictablePgsRescued = 88,
VmstatUnevictablePgsMlocked = 89,
VmstatUnevictablePgsMunlocked = 90,
VmstatUnevictablePgsCleared = 91,
VmstatUnevictablePgsStranded = 92,
VmstatNrZspages = 93,
VmstatNrIonHeap = 94,
VmstatNrGpuHeap = 95,
VmstatAllocstallDma = 96,
VmstatAllocstallMovable = 97,
VmstatAllocstallNormal = 98,
VmstatCompactDaemonFreeScanned = 99,
VmstatCompactDaemonMigrateScanned = 100,
VmstatNrFastrpc = 101,
VmstatNrIndirectlyReclaimable = 102,
VmstatNrIonHeapPool = 103,
VmstatNrKernelMiscReclaimable = 104,
VmstatNrShadowCallStackBytes = 105,
VmstatNrShmemHugepages = 106,
VmstatNrShmemPmdmapped = 107,
VmstatNrUnreclaimablePages = 108,
VmstatNrZoneActiveAnon = 109,
VmstatNrZoneActiveFile = 110,
VmstatNrZoneInactiveAnon = 111,
VmstatNrZoneInactiveFile = 112,
VmstatNrZoneUnevictable = 113,
VmstatNrZoneWritePending = 114,
VmstatOomKill = 115,
VmstatPglazyfree = 116,
VmstatPglazyfreed = 117,
VmstatPgrefill = 118,
VmstatPgscanDirect = 119,
VmstatPgscanKswapd = 120,
VmstatPgskipDma = 121,
VmstatPgskipMovable = 122,
VmstatPgskipNormal = 123,
VmstatPgstealDirect = 124,
VmstatPgstealKswapd = 125,
VmstatSwapRa = 126,
VmstatSwapRaHit = 127,
VmstatWorkingsetRestore = 128,
VmstatAllocstallDevice = 129,
VmstatAllocstallDma32 = 130,
VmstatBalloonDeflate = 131,
VmstatBalloonInflate = 132,
VmstatBalloonMigrate = 133,
VmstatCmaAllocFail = 134,
VmstatCmaAllocSuccess = 135,
VmstatNrFileHugepages = 136,
VmstatNrFilePmdmapped = 137,
VmstatNrFollPinAcquired = 138,
VmstatNrFollPinReleased = 139,
VmstatNrSecPageTablePages = 140,
VmstatNrShadowCallStack = 141,
VmstatNrSwapcached = 142,
VmstatNrThrottledWritten = 143,
VmstatPgallocDevice = 144,
VmstatPgallocDma32 = 145,
VmstatPgdemoteDirect = 146,
VmstatPgdemoteKswapd = 147,
VmstatPgreuse = 148,
VmstatPgscanAnon = 149,
VmstatPgscanFile = 150,
VmstatPgskipDevice = 151,
VmstatPgskipDma32 = 152,
VmstatPgstealAnon = 153,
VmstatPgstealFile = 154,
VmstatThpCollapseAlloc = 155,
VmstatThpCollapseAllocFailed = 156,
VmstatThpDeferredSplitPage = 157,
VmstatThpFaultAlloc = 158,
VmstatThpFaultFallback = 159,
VmstatThpFaultFallbackCharge = 160,
VmstatThpFileAlloc = 161,
VmstatThpFileFallback = 162,
VmstatThpFileFallbackCharge = 163,
VmstatThpFileMapped = 164,
VmstatThpMigrationFail = 165,
VmstatThpMigrationSplit = 166,
VmstatThpMigrationSuccess = 167,
VmstatThpScanExceedNonePte = 168,
VmstatThpScanExceedSharePte = 169,
VmstatThpScanExceedSwapPte = 170,
VmstatThpSplitPage = 171,
VmstatThpSplitPageFailed = 172,
VmstatThpSplitPmd = 173,
VmstatThpSwpout = 174,
VmstatThpSwpoutFallback = 175,
VmstatThpZeroPageAlloc = 176,
VmstatThpZeroPageAllocFailed = 177,
VmstatVmaLockAbort = 178,
VmstatVmaLockMiss = 179,
VmstatVmaLockRetry = 180,
VmstatVmaLockSuccess = 181,
VmstatWorkingsetActivateAnon = 182,
VmstatWorkingsetActivateFile = 183,
VmstatWorkingsetNodes = 184,
VmstatWorkingsetRefaultAnon = 185,
VmstatWorkingsetRefaultFile = 186,
VmstatWorkingsetRestoreAnon = 187,
VmstatWorkingsetRestoreFile = 188,
}
impl VmstatCounters {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
Self::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
Self::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
Self::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
Self::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
Self::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
Self::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
Self::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
Self::VmstatNrMlock => "VMSTAT_NR_MLOCK",
Self::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
Self::VmstatNrMapped => "VMSTAT_NR_MAPPED",
Self::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
Self::VmstatNrDirty => "VMSTAT_NR_DIRTY",
Self::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
Self::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
Self::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
Self::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
Self::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
Self::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
Self::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
Self::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
Self::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
Self::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
Self::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
Self::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
Self::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
Self::VmstatNrShmem => "VMSTAT_NR_SHMEM",
Self::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
Self::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
Self::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
Self::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
Self::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
Self::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
Self::VmstatNrAnonTransparentHugepages => {
"VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES"
}
Self::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
Self::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
Self::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
Self::VmstatNrDirtyBackgroundThreshold => {
"VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD"
}
Self::VmstatPgpgin => "VMSTAT_PGPGIN",
Self::VmstatPgpgout => "VMSTAT_PGPGOUT",
Self::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
Self::VmstatPswpin => "VMSTAT_PSWPIN",
Self::VmstatPswpout => "VMSTAT_PSWPOUT",
Self::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
Self::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
Self::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
Self::VmstatPgfree => "VMSTAT_PGFREE",
Self::VmstatPgactivate => "VMSTAT_PGACTIVATE",
Self::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
Self::VmstatPgfault => "VMSTAT_PGFAULT",
Self::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
Self::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
Self::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
Self::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
Self::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
Self::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
Self::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
Self::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
Self::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
Self::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
Self::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
Self::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
Self::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
Self::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
Self::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
Self::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
Self::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
Self::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
Self::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
Self::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
Self::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
Self::VmstatKswapdHighWmarkHitQuickly => {
"VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY"
}
Self::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
Self::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
Self::VmstatPgrotated => "VMSTAT_PGROTATED",
Self::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
Self::VmstatDropSlab => "VMSTAT_DROP_SLAB",
Self::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
Self::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
Self::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
Self::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
Self::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
Self::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
Self::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
Self::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
Self::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
Self::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
Self::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
Self::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
Self::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
Self::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
Self::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
Self::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
Self::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
Self::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
Self::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
Self::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
Self::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
Self::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
Self::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
Self::VmstatCompactDaemonMigrateScanned => {
"VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED"
}
Self::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
Self::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
Self::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
Self::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
Self::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
Self::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
Self::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
Self::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
Self::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
Self::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
Self::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
Self::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
Self::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
Self::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
Self::VmstatOomKill => "VMSTAT_OOM_KILL",
Self::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
Self::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
Self::VmstatPgrefill => "VMSTAT_PGREFILL",
Self::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
Self::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
Self::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
Self::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
Self::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
Self::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
Self::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
Self::VmstatSwapRa => "VMSTAT_SWAP_RA",
Self::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
Self::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
Self::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
Self::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
Self::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
Self::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
Self::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
Self::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
Self::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
Self::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
Self::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
Self::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
Self::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
Self::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
Self::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
Self::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
Self::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
Self::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
Self::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
Self::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
Self::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
Self::VmstatPgreuse => "VMSTAT_PGREUSE",
Self::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
Self::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
Self::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
Self::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
Self::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
Self::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
Self::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
Self::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
Self::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
Self::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
Self::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
Self::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
Self::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
Self::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
Self::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
Self::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
Self::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
Self::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
Self::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
Self::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
Self::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
Self::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
Self::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
Self::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
Self::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
Self::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
Self::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
Self::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
Self::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
Self::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
Self::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
Self::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
Self::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
Self::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
Self::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
Self::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
Self::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
Self::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
Self::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
Self::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"VMSTAT_UNSPECIFIED" => Some(Self::VmstatUnspecified),
"VMSTAT_NR_FREE_PAGES" => Some(Self::VmstatNrFreePages),
"VMSTAT_NR_ALLOC_BATCH" => Some(Self::VmstatNrAllocBatch),
"VMSTAT_NR_INACTIVE_ANON" => Some(Self::VmstatNrInactiveAnon),
"VMSTAT_NR_ACTIVE_ANON" => Some(Self::VmstatNrActiveAnon),
"VMSTAT_NR_INACTIVE_FILE" => Some(Self::VmstatNrInactiveFile),
"VMSTAT_NR_ACTIVE_FILE" => Some(Self::VmstatNrActiveFile),
"VMSTAT_NR_UNEVICTABLE" => Some(Self::VmstatNrUnevictable),
"VMSTAT_NR_MLOCK" => Some(Self::VmstatNrMlock),
"VMSTAT_NR_ANON_PAGES" => Some(Self::VmstatNrAnonPages),
"VMSTAT_NR_MAPPED" => Some(Self::VmstatNrMapped),
"VMSTAT_NR_FILE_PAGES" => Some(Self::VmstatNrFilePages),
"VMSTAT_NR_DIRTY" => Some(Self::VmstatNrDirty),
"VMSTAT_NR_WRITEBACK" => Some(Self::VmstatNrWriteback),
"VMSTAT_NR_SLAB_RECLAIMABLE" => Some(Self::VmstatNrSlabReclaimable),
"VMSTAT_NR_SLAB_UNRECLAIMABLE" => Some(Self::VmstatNrSlabUnreclaimable),
"VMSTAT_NR_PAGE_TABLE_PAGES" => Some(Self::VmstatNrPageTablePages),
"VMSTAT_NR_KERNEL_STACK" => Some(Self::VmstatNrKernelStack),
"VMSTAT_NR_OVERHEAD" => Some(Self::VmstatNrOverhead),
"VMSTAT_NR_UNSTABLE" => Some(Self::VmstatNrUnstable),
"VMSTAT_NR_BOUNCE" => Some(Self::VmstatNrBounce),
"VMSTAT_NR_VMSCAN_WRITE" => Some(Self::VmstatNrVmscanWrite),
"VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM" => {
Some(Self::VmstatNrVmscanImmediateReclaim)
}
"VMSTAT_NR_WRITEBACK_TEMP" => Some(Self::VmstatNrWritebackTemp),
"VMSTAT_NR_ISOLATED_ANON" => Some(Self::VmstatNrIsolatedAnon),
"VMSTAT_NR_ISOLATED_FILE" => Some(Self::VmstatNrIsolatedFile),
"VMSTAT_NR_SHMEM" => Some(Self::VmstatNrShmem),
"VMSTAT_NR_DIRTIED" => Some(Self::VmstatNrDirtied),
"VMSTAT_NR_WRITTEN" => Some(Self::VmstatNrWritten),
"VMSTAT_NR_PAGES_SCANNED" => Some(Self::VmstatNrPagesScanned),
"VMSTAT_WORKINGSET_REFAULT" => Some(Self::VmstatWorkingsetRefault),
"VMSTAT_WORKINGSET_ACTIVATE" => Some(Self::VmstatWorkingsetActivate),
"VMSTAT_WORKINGSET_NODERECLAIM" => Some(Self::VmstatWorkingsetNodereclaim),
"VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES" => {
Some(Self::VmstatNrAnonTransparentHugepages)
}
"VMSTAT_NR_FREE_CMA" => Some(Self::VmstatNrFreeCma),
"VMSTAT_NR_SWAPCACHE" => Some(Self::VmstatNrSwapcache),
"VMSTAT_NR_DIRTY_THRESHOLD" => Some(Self::VmstatNrDirtyThreshold),
"VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD" => {
Some(Self::VmstatNrDirtyBackgroundThreshold)
}
"VMSTAT_PGPGIN" => Some(Self::VmstatPgpgin),
"VMSTAT_PGPGOUT" => Some(Self::VmstatPgpgout),
"VMSTAT_PGPGOUTCLEAN" => Some(Self::VmstatPgpgoutclean),
"VMSTAT_PSWPIN" => Some(Self::VmstatPswpin),
"VMSTAT_PSWPOUT" => Some(Self::VmstatPswpout),
"VMSTAT_PGALLOC_DMA" => Some(Self::VmstatPgallocDma),
"VMSTAT_PGALLOC_NORMAL" => Some(Self::VmstatPgallocNormal),
"VMSTAT_PGALLOC_MOVABLE" => Some(Self::VmstatPgallocMovable),
"VMSTAT_PGFREE" => Some(Self::VmstatPgfree),
"VMSTAT_PGACTIVATE" => Some(Self::VmstatPgactivate),
"VMSTAT_PGDEACTIVATE" => Some(Self::VmstatPgdeactivate),
"VMSTAT_PGFAULT" => Some(Self::VmstatPgfault),
"VMSTAT_PGMAJFAULT" => Some(Self::VmstatPgmajfault),
"VMSTAT_PGREFILL_DMA" => Some(Self::VmstatPgrefillDma),
"VMSTAT_PGREFILL_NORMAL" => Some(Self::VmstatPgrefillNormal),
"VMSTAT_PGREFILL_MOVABLE" => Some(Self::VmstatPgrefillMovable),
"VMSTAT_PGSTEAL_KSWAPD_DMA" => Some(Self::VmstatPgstealKswapdDma),
"VMSTAT_PGSTEAL_KSWAPD_NORMAL" => Some(Self::VmstatPgstealKswapdNormal),
"VMSTAT_PGSTEAL_KSWAPD_MOVABLE" => Some(Self::VmstatPgstealKswapdMovable),
"VMSTAT_PGSTEAL_DIRECT_DMA" => Some(Self::VmstatPgstealDirectDma),
"VMSTAT_PGSTEAL_DIRECT_NORMAL" => Some(Self::VmstatPgstealDirectNormal),
"VMSTAT_PGSTEAL_DIRECT_MOVABLE" => Some(Self::VmstatPgstealDirectMovable),
"VMSTAT_PGSCAN_KSWAPD_DMA" => Some(Self::VmstatPgscanKswapdDma),
"VMSTAT_PGSCAN_KSWAPD_NORMAL" => Some(Self::VmstatPgscanKswapdNormal),
"VMSTAT_PGSCAN_KSWAPD_MOVABLE" => Some(Self::VmstatPgscanKswapdMovable),
"VMSTAT_PGSCAN_DIRECT_DMA" => Some(Self::VmstatPgscanDirectDma),
"VMSTAT_PGSCAN_DIRECT_NORMAL" => Some(Self::VmstatPgscanDirectNormal),
"VMSTAT_PGSCAN_DIRECT_MOVABLE" => Some(Self::VmstatPgscanDirectMovable),
"VMSTAT_PGSCAN_DIRECT_THROTTLE" => Some(Self::VmstatPgscanDirectThrottle),
"VMSTAT_PGINODESTEAL" => Some(Self::VmstatPginodesteal),
"VMSTAT_SLABS_SCANNED" => Some(Self::VmstatSlabsScanned),
"VMSTAT_KSWAPD_INODESTEAL" => Some(Self::VmstatKswapdInodesteal),
"VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY" => {
Some(Self::VmstatKswapdLowWmarkHitQuickly)
}
"VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY" => {
Some(Self::VmstatKswapdHighWmarkHitQuickly)
}
"VMSTAT_PAGEOUTRUN" => Some(Self::VmstatPageoutrun),
"VMSTAT_ALLOCSTALL" => Some(Self::VmstatAllocstall),
"VMSTAT_PGROTATED" => Some(Self::VmstatPgrotated),
"VMSTAT_DROP_PAGECACHE" => Some(Self::VmstatDropPagecache),
"VMSTAT_DROP_SLAB" => Some(Self::VmstatDropSlab),
"VMSTAT_PGMIGRATE_SUCCESS" => Some(Self::VmstatPgmigrateSuccess),
"VMSTAT_PGMIGRATE_FAIL" => Some(Self::VmstatPgmigrateFail),
"VMSTAT_COMPACT_MIGRATE_SCANNED" => Some(Self::VmstatCompactMigrateScanned),
"VMSTAT_COMPACT_FREE_SCANNED" => Some(Self::VmstatCompactFreeScanned),
"VMSTAT_COMPACT_ISOLATED" => Some(Self::VmstatCompactIsolated),
"VMSTAT_COMPACT_STALL" => Some(Self::VmstatCompactStall),
"VMSTAT_COMPACT_FAIL" => Some(Self::VmstatCompactFail),
"VMSTAT_COMPACT_SUCCESS" => Some(Self::VmstatCompactSuccess),
"VMSTAT_COMPACT_DAEMON_WAKE" => Some(Self::VmstatCompactDaemonWake),
"VMSTAT_UNEVICTABLE_PGS_CULLED" => Some(Self::VmstatUnevictablePgsCulled),
"VMSTAT_UNEVICTABLE_PGS_SCANNED" => Some(Self::VmstatUnevictablePgsScanned),
"VMSTAT_UNEVICTABLE_PGS_RESCUED" => Some(Self::VmstatUnevictablePgsRescued),
"VMSTAT_UNEVICTABLE_PGS_MLOCKED" => Some(Self::VmstatUnevictablePgsMlocked),
"VMSTAT_UNEVICTABLE_PGS_MUNLOCKED" => {
Some(Self::VmstatUnevictablePgsMunlocked)
}
"VMSTAT_UNEVICTABLE_PGS_CLEARED" => Some(Self::VmstatUnevictablePgsCleared),
"VMSTAT_UNEVICTABLE_PGS_STRANDED" => Some(Self::VmstatUnevictablePgsStranded),
"VMSTAT_NR_ZSPAGES" => Some(Self::VmstatNrZspages),
"VMSTAT_NR_ION_HEAP" => Some(Self::VmstatNrIonHeap),
"VMSTAT_NR_GPU_HEAP" => Some(Self::VmstatNrGpuHeap),
"VMSTAT_ALLOCSTALL_DMA" => Some(Self::VmstatAllocstallDma),
"VMSTAT_ALLOCSTALL_MOVABLE" => Some(Self::VmstatAllocstallMovable),
"VMSTAT_ALLOCSTALL_NORMAL" => Some(Self::VmstatAllocstallNormal),
"VMSTAT_COMPACT_DAEMON_FREE_SCANNED" => {
Some(Self::VmstatCompactDaemonFreeScanned)
}
"VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED" => {
Some(Self::VmstatCompactDaemonMigrateScanned)
}
"VMSTAT_NR_FASTRPC" => Some(Self::VmstatNrFastrpc),
"VMSTAT_NR_INDIRECTLY_RECLAIMABLE" => {
Some(Self::VmstatNrIndirectlyReclaimable)
}
"VMSTAT_NR_ION_HEAP_POOL" => Some(Self::VmstatNrIonHeapPool),
"VMSTAT_NR_KERNEL_MISC_RECLAIMABLE" => {
Some(Self::VmstatNrKernelMiscReclaimable)
}
"VMSTAT_NR_SHADOW_CALL_STACK_BYTES" => {
Some(Self::VmstatNrShadowCallStackBytes)
}
"VMSTAT_NR_SHMEM_HUGEPAGES" => Some(Self::VmstatNrShmemHugepages),
"VMSTAT_NR_SHMEM_PMDMAPPED" => Some(Self::VmstatNrShmemPmdmapped),
"VMSTAT_NR_UNRECLAIMABLE_PAGES" => Some(Self::VmstatNrUnreclaimablePages),
"VMSTAT_NR_ZONE_ACTIVE_ANON" => Some(Self::VmstatNrZoneActiveAnon),
"VMSTAT_NR_ZONE_ACTIVE_FILE" => Some(Self::VmstatNrZoneActiveFile),
"VMSTAT_NR_ZONE_INACTIVE_ANON" => Some(Self::VmstatNrZoneInactiveAnon),
"VMSTAT_NR_ZONE_INACTIVE_FILE" => Some(Self::VmstatNrZoneInactiveFile),
"VMSTAT_NR_ZONE_UNEVICTABLE" => Some(Self::VmstatNrZoneUnevictable),
"VMSTAT_NR_ZONE_WRITE_PENDING" => Some(Self::VmstatNrZoneWritePending),
"VMSTAT_OOM_KILL" => Some(Self::VmstatOomKill),
"VMSTAT_PGLAZYFREE" => Some(Self::VmstatPglazyfree),
"VMSTAT_PGLAZYFREED" => Some(Self::VmstatPglazyfreed),
"VMSTAT_PGREFILL" => Some(Self::VmstatPgrefill),
"VMSTAT_PGSCAN_DIRECT" => Some(Self::VmstatPgscanDirect),
"VMSTAT_PGSCAN_KSWAPD" => Some(Self::VmstatPgscanKswapd),
"VMSTAT_PGSKIP_DMA" => Some(Self::VmstatPgskipDma),
"VMSTAT_PGSKIP_MOVABLE" => Some(Self::VmstatPgskipMovable),
"VMSTAT_PGSKIP_NORMAL" => Some(Self::VmstatPgskipNormal),
"VMSTAT_PGSTEAL_DIRECT" => Some(Self::VmstatPgstealDirect),
"VMSTAT_PGSTEAL_KSWAPD" => Some(Self::VmstatPgstealKswapd),
"VMSTAT_SWAP_RA" => Some(Self::VmstatSwapRa),
"VMSTAT_SWAP_RA_HIT" => Some(Self::VmstatSwapRaHit),
"VMSTAT_WORKINGSET_RESTORE" => Some(Self::VmstatWorkingsetRestore),
"VMSTAT_ALLOCSTALL_DEVICE" => Some(Self::VmstatAllocstallDevice),
"VMSTAT_ALLOCSTALL_DMA32" => Some(Self::VmstatAllocstallDma32),
"VMSTAT_BALLOON_DEFLATE" => Some(Self::VmstatBalloonDeflate),
"VMSTAT_BALLOON_INFLATE" => Some(Self::VmstatBalloonInflate),
"VMSTAT_BALLOON_MIGRATE" => Some(Self::VmstatBalloonMigrate),
"VMSTAT_CMA_ALLOC_FAIL" => Some(Self::VmstatCmaAllocFail),
"VMSTAT_CMA_ALLOC_SUCCESS" => Some(Self::VmstatCmaAllocSuccess),
"VMSTAT_NR_FILE_HUGEPAGES" => Some(Self::VmstatNrFileHugepages),
"VMSTAT_NR_FILE_PMDMAPPED" => Some(Self::VmstatNrFilePmdmapped),
"VMSTAT_NR_FOLL_PIN_ACQUIRED" => Some(Self::VmstatNrFollPinAcquired),
"VMSTAT_NR_FOLL_PIN_RELEASED" => Some(Self::VmstatNrFollPinReleased),
"VMSTAT_NR_SEC_PAGE_TABLE_PAGES" => Some(Self::VmstatNrSecPageTablePages),
"VMSTAT_NR_SHADOW_CALL_STACK" => Some(Self::VmstatNrShadowCallStack),
"VMSTAT_NR_SWAPCACHED" => Some(Self::VmstatNrSwapcached),
"VMSTAT_NR_THROTTLED_WRITTEN" => Some(Self::VmstatNrThrottledWritten),
"VMSTAT_PGALLOC_DEVICE" => Some(Self::VmstatPgallocDevice),
"VMSTAT_PGALLOC_DMA32" => Some(Self::VmstatPgallocDma32),
"VMSTAT_PGDEMOTE_DIRECT" => Some(Self::VmstatPgdemoteDirect),
"VMSTAT_PGDEMOTE_KSWAPD" => Some(Self::VmstatPgdemoteKswapd),
"VMSTAT_PGREUSE" => Some(Self::VmstatPgreuse),
"VMSTAT_PGSCAN_ANON" => Some(Self::VmstatPgscanAnon),
"VMSTAT_PGSCAN_FILE" => Some(Self::VmstatPgscanFile),
"VMSTAT_PGSKIP_DEVICE" => Some(Self::VmstatPgskipDevice),
"VMSTAT_PGSKIP_DMA32" => Some(Self::VmstatPgskipDma32),
"VMSTAT_PGSTEAL_ANON" => Some(Self::VmstatPgstealAnon),
"VMSTAT_PGSTEAL_FILE" => Some(Self::VmstatPgstealFile),
"VMSTAT_THP_COLLAPSE_ALLOC" => Some(Self::VmstatThpCollapseAlloc),
"VMSTAT_THP_COLLAPSE_ALLOC_FAILED" => {
Some(Self::VmstatThpCollapseAllocFailed)
}
"VMSTAT_THP_DEFERRED_SPLIT_PAGE" => Some(Self::VmstatThpDeferredSplitPage),
"VMSTAT_THP_FAULT_ALLOC" => Some(Self::VmstatThpFaultAlloc),
"VMSTAT_THP_FAULT_FALLBACK" => Some(Self::VmstatThpFaultFallback),
"VMSTAT_THP_FAULT_FALLBACK_CHARGE" => {
Some(Self::VmstatThpFaultFallbackCharge)
}
"VMSTAT_THP_FILE_ALLOC" => Some(Self::VmstatThpFileAlloc),
"VMSTAT_THP_FILE_FALLBACK" => Some(Self::VmstatThpFileFallback),
"VMSTAT_THP_FILE_FALLBACK_CHARGE" => Some(Self::VmstatThpFileFallbackCharge),
"VMSTAT_THP_FILE_MAPPED" => Some(Self::VmstatThpFileMapped),
"VMSTAT_THP_MIGRATION_FAIL" => Some(Self::VmstatThpMigrationFail),
"VMSTAT_THP_MIGRATION_SPLIT" => Some(Self::VmstatThpMigrationSplit),
"VMSTAT_THP_MIGRATION_SUCCESS" => Some(Self::VmstatThpMigrationSuccess),
"VMSTAT_THP_SCAN_EXCEED_NONE_PTE" => Some(Self::VmstatThpScanExceedNonePte),
"VMSTAT_THP_SCAN_EXCEED_SHARE_PTE" => Some(Self::VmstatThpScanExceedSharePte),
"VMSTAT_THP_SCAN_EXCEED_SWAP_PTE" => Some(Self::VmstatThpScanExceedSwapPte),
"VMSTAT_THP_SPLIT_PAGE" => Some(Self::VmstatThpSplitPage),
"VMSTAT_THP_SPLIT_PAGE_FAILED" => Some(Self::VmstatThpSplitPageFailed),
"VMSTAT_THP_SPLIT_PMD" => Some(Self::VmstatThpSplitPmd),
"VMSTAT_THP_SWPOUT" => Some(Self::VmstatThpSwpout),
"VMSTAT_THP_SWPOUT_FALLBACK" => Some(Self::VmstatThpSwpoutFallback),
"VMSTAT_THP_ZERO_PAGE_ALLOC" => Some(Self::VmstatThpZeroPageAlloc),
"VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED" => {
Some(Self::VmstatThpZeroPageAllocFailed)
}
"VMSTAT_VMA_LOCK_ABORT" => Some(Self::VmstatVmaLockAbort),
"VMSTAT_VMA_LOCK_MISS" => Some(Self::VmstatVmaLockMiss),
"VMSTAT_VMA_LOCK_RETRY" => Some(Self::VmstatVmaLockRetry),
"VMSTAT_VMA_LOCK_SUCCESS" => Some(Self::VmstatVmaLockSuccess),
"VMSTAT_WORKINGSET_ACTIVATE_ANON" => Some(Self::VmstatWorkingsetActivateAnon),
"VMSTAT_WORKINGSET_ACTIVATE_FILE" => Some(Self::VmstatWorkingsetActivateFile),
"VMSTAT_WORKINGSET_NODES" => Some(Self::VmstatWorkingsetNodes),
"VMSTAT_WORKINGSET_REFAULT_ANON" => Some(Self::VmstatWorkingsetRefaultAnon),
"VMSTAT_WORKINGSET_REFAULT_FILE" => Some(Self::VmstatWorkingsetRefaultFile),
"VMSTAT_WORKINGSET_RESTORE_ANON" => Some(Self::VmstatWorkingsetRestoreAnon),
"VMSTAT_WORKINGSET_RESTORE_FILE" => Some(Self::VmstatWorkingsetRestoreFile),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum TrafficDirection {
DirUnspecified = 0,
DirIngress = 1,
DirEgress = 2,
}
impl TrafficDirection {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::DirUnspecified => "DIR_UNSPECIFIED",
Self::DirIngress => "DIR_INGRESS",
Self::DirEgress => "DIR_EGRESS",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"DIR_UNSPECIFIED" => Some(Self::DirUnspecified),
"DIR_INGRESS" => Some(Self::DirIngress),
"DIR_EGRESS" => Some(Self::DirEgress),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum TrustedOverlay {
Unset = 0,
Disabled = 1,
Enabled = 2,
}
impl TrustedOverlay {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unset => "UNSET",
Self::Disabled => "DISABLED",
Self::Enabled => "ENABLED",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNSET" => Some(Self::Unset),
"DISABLED" => Some(Self::Disabled),
"ENABLED" => Some(Self::Enabled),
_ => None,
}
}
}
/// Must match definition in the IComposerClient HAL
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum HwcCompositionType {
/// Invalid composition type
HwcTypeUnspecified = 0,
/// Layer was composited by the client into the client target buffer
HwcTypeClient = 1,
/// Layer was composited by the device through hardware overlays
HwcTypeDevice = 2,
/// Layer was composited by the device using a color
HwcTypeSolidColor = 3,
/// Similar to DEVICE, but the layer position may have been asynchronously set
/// through setCursorPosition
HwcTypeCursor = 4,
/// Layer was composited by the device via a sideband stream
HwcTypeSideband = 5,
/// Layer was composited by hardware optimized for display decoration
HwcTypeDisplayDecoration = 6,
}
impl HwcCompositionType {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::HwcTypeUnspecified => "HWC_TYPE_UNSPECIFIED",
Self::HwcTypeClient => "HWC_TYPE_CLIENT",
Self::HwcTypeDevice => "HWC_TYPE_DEVICE",
Self::HwcTypeSolidColor => "HWC_TYPE_SOLID_COLOR",
Self::HwcTypeCursor => "HWC_TYPE_CURSOR",
Self::HwcTypeSideband => "HWC_TYPE_SIDEBAND",
Self::HwcTypeDisplayDecoration => "HWC_TYPE_DISPLAY_DECORATION",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"HWC_TYPE_UNSPECIFIED" => Some(Self::HwcTypeUnspecified),
"HWC_TYPE_CLIENT" => Some(Self::HwcTypeClient),
"HWC_TYPE_DEVICE" => Some(Self::HwcTypeDevice),
"HWC_TYPE_SOLID_COLOR" => Some(Self::HwcTypeSolidColor),
"HWC_TYPE_CURSOR" => Some(Self::HwcTypeCursor),
"HWC_TYPE_SIDEBAND" => Some(Self::HwcTypeSideband),
"HWC_TYPE_DISPLAY_DECORATION" => Some(Self::HwcTypeDisplayDecoration),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum FtraceParseStatus {
FtraceStatusUnspecified = 0,
/// Not written, used for convenience of implementation:
FtraceStatusOk = 1,
/// Issues with reading data out of the ftrace ring buffer:
FtraceStatusUnexpectedReadError = 2,
FtraceStatusPartialPageRead = 3,
/// Ring buffer binary data not matching our understanding of the layout:
FtraceStatusAbiInvalidPageHeader = 4,
FtraceStatusAbiShortEventHeader = 5,
FtraceStatusAbiNullPadding = 6,
FtraceStatusAbiShortPaddingLength = 7,
FtraceStatusAbiInvalidPaddingLength = 8,
FtraceStatusAbiShortTimeExtend = 9,
FtraceStatusAbiShortTimeStamp = 10,
FtraceStatusAbiShortDataLength = 11,
FtraceStatusAbiZeroDataLength = 12,
FtraceStatusAbiInvalidDataLength = 13,
FtraceStatusAbiShortEventId = 14,
FtraceStatusAbiEndOverflow = 15,
/// Issues with parsing the event payload:
FtraceStatusShortCompactEvent = 16,
FtraceStatusInvalidEvent = 17,
}
impl FtraceParseStatus {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
Self::FtraceStatusOk => "FTRACE_STATUS_OK",
Self::FtraceStatusUnexpectedReadError => {
"FTRACE_STATUS_UNEXPECTED_READ_ERROR"
}
Self::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
Self::FtraceStatusAbiInvalidPageHeader => {
"FTRACE_STATUS_ABI_INVALID_PAGE_HEADER"
}
Self::FtraceStatusAbiShortEventHeader => {
"FTRACE_STATUS_ABI_SHORT_EVENT_HEADER"
}
Self::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
Self::FtraceStatusAbiShortPaddingLength => {
"FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH"
}
Self::FtraceStatusAbiInvalidPaddingLength => {
"FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH"
}
Self::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
Self::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
Self::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
Self::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
Self::FtraceStatusAbiInvalidDataLength => {
"FTRACE_STATUS_ABI_INVALID_DATA_LENGTH"
}
Self::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
Self::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
Self::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
Self::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"FTRACE_STATUS_UNSPECIFIED" => Some(Self::FtraceStatusUnspecified),
"FTRACE_STATUS_OK" => Some(Self::FtraceStatusOk),
"FTRACE_STATUS_UNEXPECTED_READ_ERROR" => {
Some(Self::FtraceStatusUnexpectedReadError)
}
"FTRACE_STATUS_PARTIAL_PAGE_READ" => Some(Self::FtraceStatusPartialPageRead),
"FTRACE_STATUS_ABI_INVALID_PAGE_HEADER" => {
Some(Self::FtraceStatusAbiInvalidPageHeader)
}
"FTRACE_STATUS_ABI_SHORT_EVENT_HEADER" => {
Some(Self::FtraceStatusAbiShortEventHeader)
}
"FTRACE_STATUS_ABI_NULL_PADDING" => Some(Self::FtraceStatusAbiNullPadding),
"FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH" => {
Some(Self::FtraceStatusAbiShortPaddingLength)
}
"FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH" => {
Some(Self::FtraceStatusAbiInvalidPaddingLength)
}
"FTRACE_STATUS_ABI_SHORT_TIME_EXTEND" => {
Some(Self::FtraceStatusAbiShortTimeExtend)
}
"FTRACE_STATUS_ABI_SHORT_TIME_STAMP" => {
Some(Self::FtraceStatusAbiShortTimeStamp)
}
"FTRACE_STATUS_ABI_SHORT_DATA_LENGTH" => {
Some(Self::FtraceStatusAbiShortDataLength)
}
"FTRACE_STATUS_ABI_ZERO_DATA_LENGTH" => {
Some(Self::FtraceStatusAbiZeroDataLength)
}
"FTRACE_STATUS_ABI_INVALID_DATA_LENGTH" => {
Some(Self::FtraceStatusAbiInvalidDataLength)
}
"FTRACE_STATUS_ABI_SHORT_EVENT_ID" => Some(Self::FtraceStatusAbiShortEventId),
"FTRACE_STATUS_ABI_END_OVERFLOW" => Some(Self::FtraceStatusAbiEndOverflow),
"FTRACE_STATUS_SHORT_COMPACT_EVENT" => {
Some(Self::FtraceStatusShortCompactEvent)
}
"FTRACE_STATUS_INVALID_EVENT" => Some(Self::FtraceStatusInvalidEvent),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum FtraceClock {
/// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
/// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
Unspecified = 0,
Unknown = 1,
Global = 2,
Local = 3,
MonoRaw = 4,
}
impl FtraceClock {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
Self::Unknown => "FTRACE_CLOCK_UNKNOWN",
Self::Global => "FTRACE_CLOCK_GLOBAL",
Self::Local => "FTRACE_CLOCK_LOCAL",
Self::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"FTRACE_CLOCK_UNSPECIFIED" => Some(Self::Unspecified),
"FTRACE_CLOCK_UNKNOWN" => Some(Self::Unknown),
"FTRACE_CLOCK_GLOBAL" => Some(Self::Global),
"FTRACE_CLOCK_LOCAL" => Some(Self::Local),
"FTRACE_CLOCK_MONO_RAW" => Some(Self::MonoRaw),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ChromeCompositorSchedulerAction {
CcSchedulerActionUnspecified = 0,
CcSchedulerActionNone = 1,
CcSchedulerActionSendBeginMainFrame = 2,
CcSchedulerActionCommit = 3,
CcSchedulerActionActivateSyncTree = 4,
CcSchedulerActionDrawIfPossible = 5,
CcSchedulerActionDrawForced = 6,
CcSchedulerActionDrawAbort = 7,
CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
CcSchedulerActionPrepareTiles = 9,
CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
CcSchedulerActionPerformImplSideInvalidation = 11,
CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
}
impl ChromeCompositorSchedulerAction {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
Self::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
Self::CcSchedulerActionSendBeginMainFrame => {
"CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME"
}
Self::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
Self::CcSchedulerActionActivateSyncTree => {
"CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE"
}
Self::CcSchedulerActionDrawIfPossible => {
"CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE"
}
Self::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
Self::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
Self::CcSchedulerActionBeginLayerTreeFrameSinkCreation => {
"CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION"
}
Self::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
Self::CcSchedulerActionInvalidateLayerTreeFrameSink => {
"CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK"
}
Self::CcSchedulerActionPerformImplSideInvalidation => {
"CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION"
}
Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => {
"CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL"
}
Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => {
"CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON"
}
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"CC_SCHEDULER_ACTION_UNSPECIFIED" => Some(Self::CcSchedulerActionUnspecified),
"CC_SCHEDULER_ACTION_NONE" => Some(Self::CcSchedulerActionNone),
"CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME" => {
Some(Self::CcSchedulerActionSendBeginMainFrame)
}
"CC_SCHEDULER_ACTION_COMMIT" => Some(Self::CcSchedulerActionCommit),
"CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE" => {
Some(Self::CcSchedulerActionActivateSyncTree)
}
"CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE" => {
Some(Self::CcSchedulerActionDrawIfPossible)
}
"CC_SCHEDULER_ACTION_DRAW_FORCED" => Some(Self::CcSchedulerActionDrawForced),
"CC_SCHEDULER_ACTION_DRAW_ABORT" => Some(Self::CcSchedulerActionDrawAbort),
"CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION" => {
Some(Self::CcSchedulerActionBeginLayerTreeFrameSinkCreation)
}
"CC_SCHEDULER_ACTION_PREPARE_TILES" => {
Some(Self::CcSchedulerActionPrepareTiles)
}
"CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK" => {
Some(Self::CcSchedulerActionInvalidateLayerTreeFrameSink)
}
"CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION" => {
Some(Self::CcSchedulerActionPerformImplSideInvalidation)
}
"CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL" => {
Some(Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil)
}
"CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON" => {
Some(Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon)
}
_ => None,
}
}
}
/// RAIL Mode is an indication of the kind of work that a Renderer is currently
/// performing which is in turn used to prioritise work accordingly.
/// A fuller description of these modes can be found <https://web.dev/rail/>
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ChromeRailMode {
RailModeNone = 0,
RailModeResponse = 1,
RailModeAnimation = 2,
RailModeIdle = 3,
RailModeLoad = 4,
}
impl ChromeRailMode {
/// String value of the enum field names used in the ProtoBuf definition.
///
/// The values are not transformed in any way and thus are considered stable
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
pub fn as_str_name(&self) -> &'static str {
match self {
Self::RailModeNone => "RAIL_MODE_NONE",
Self::RailModeResponse => "RAIL_MODE_RESPONSE",
Self::RailModeAnimation => "RAIL_MODE_ANIMATION",
Self::RailModeIdle => "RAIL_MODE_IDLE",
Self::RailModeLoad => "RAIL_MODE_LOAD",
}
}
/// Creates an enum from field names used in the ProtoBuf definition.
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"RAIL_MODE_NONE" => Some(Self::RailModeNone),
"RAIL_MODE_RESPONSE" => Some(Self::RailModeResponse),
"RAIL_MODE_ANIMATION" => Some(Self::RailModeAnimation),
"RAIL_MODE_IDLE" => Some(Self::RailModeIdle),
"RAIL_MODE_LOAD" => Some(Self::RailModeLoad),
_ => None,
}
}
}