blob: b2a240ae8ef146d50a15888341fd1d8416ec428f [file] [log] [blame]
// AUTOGENERATED - DO NOT EDIT
// ---------------------------
// This file has been generated by
// AOSP://external/perfetto/tools/gen_merged_protos
// merging the perfetto config protos.
// This fused proto is intended to be copied in:
// - Android tree, for statsd.
// - Google internal repos.
syntax = "proto2";
package perfetto.protos;
option go_package = "github.com/google/perfetto/perfetto_proto";
// Begin of protos/perfetto/common/ftrace_descriptor.proto
message FtraceDescriptor {
message AtraceCategory {
optional string name = 1;
optional string description = 2;
}
// Report the available atrace categories.
//
// Used by Traceur via `perfetto --query`.
repeated AtraceCategory atrace_categories = 1;
}
// End of protos/perfetto/common/ftrace_descriptor.proto
// Begin of protos/perfetto/common/gpu_counter_descriptor.proto
// Description of GPU counters.
// This message is sent by a GPU counter producer to specify the counters
// available in the hardware.
message GpuCounterDescriptor {
// Logical groups for a counter. This is used in the UI to present the
// related counters together.
enum GpuCounterGroup {
UNCLASSIFIED = 0;
SYSTEM = 1;
VERTICES = 2;
FRAGMENTS = 3;
PRIMITIVES = 4;
// Includes counters relating to caching and bandwidth.
MEMORY = 5;
COMPUTE = 6;
}
message GpuCounterSpec {
optional uint32 counter_id = 1;
optional string name = 2;
optional string description = 3;
// MeasureUnit unit (deprecated)
reserved 4;
oneof peak_value {
int64 int_peak_value = 5;
double double_peak_value = 6;
}
repeated MeasureUnit numerator_units = 7;
repeated MeasureUnit denominator_units = 8;
optional bool select_by_default = 9;
repeated GpuCounterGroup groups = 10;
}
repeated GpuCounterSpec specs = 1;
// 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.
message GpuCounterBlock {
// required. Unique ID for the counter group.
optional uint32 block_id = 1;
// optional. Number of counters supported by the block. No limit if unset.
optional uint32 block_capacity = 2;
// optional. Name of block.
optional string name = 3;
// optional. Description for the block.
optional string description = 4;
// list of counters that are part of the block.
repeated uint32 counter_ids = 5;
}
repeated GpuCounterBlock blocks = 2;
// optional. Minimum sampling period supported by the producer in
// nanoseconds.
optional uint64 min_sampling_period_ns = 3;
// optional. Maximum sampling period supported by the producer in
// nanoseconds.
optional uint64 max_sampling_period_ns = 4;
// optional. The producer supports counter sampling by instrumenting the
// command buffer.
optional bool supports_instrumented_sampling = 5;
// next id: 41
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;
}
}
// End of protos/perfetto/common/gpu_counter_descriptor.proto
// Begin of protos/perfetto/common/track_event_descriptor.proto
message TrackEventCategory {
optional string name = 1;
optional string description = 2;
repeated string tags = 3;
}
message TrackEventDescriptor {
repeated TrackEventCategory available_categories = 1;
}
// End of protos/perfetto/common/track_event_descriptor.proto
// Begin of protos/perfetto/common/data_source_descriptor.proto
// 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.
message DataSourceDescriptor {
// e.g., "linux.ftrace", "chromium.tracing"
optional string name = 1;
// 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.
optional uint64 id = 7;
// 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.
optional bool will_notify_on_stop = 2;
// 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.
optional bool will_notify_on_start = 3;
// 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.
optional bool handles_incremental_state_clear = 4;
// 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.
optional bool no_flush = 9;
// Optional specification about available GPU counters.
optional GpuCounterDescriptor gpu_counter_descriptor = 5 [lazy = true];
optional TrackEventDescriptor track_event_descriptor = 6 [lazy = true];
optional FtraceDescriptor ftrace_descriptor = 8 [lazy = true];
}
// End of protos/perfetto/common/data_source_descriptor.proto
// Begin of protos/perfetto/common/tracing_service_state.proto
// Reports the state of the tracing service. Used to gather details about the
// data sources connected.
// See ConsumerPort::QueryServiceState().
message TracingServiceState {
// Describes a producer process.
message Producer {
// Unique ID of the producer (monotonic counter).
optional int32 id = 1;
// Typically matches the process name.
optional string name = 2;
// Unix pid of the remote process. Supported only on Linux-based systems.
// Introduced in v24 / Android T.
optional int32 pid = 5;
// Unix uid of the remote process.
optional int32 uid = 3;
// 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.
optional string sdk_version = 4;
}
// Describes a data source registered by a producer. Data sources are listed
// regardless of the fact that they are being used or not.
message DataSource {
// Descriptor passed by the data source when calling RegisterDataSource().
optional DataSourceDescriptor ds_descriptor = 1;
// ID of the producer, as per Producer.id.
optional int32 producer_id = 2;
}
message TracingSession {
// The TracingSessionID.
optional uint64 id = 1;
// 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.
optional int32 consumer_uid = 2;
// Internal state of the tracing session.
// These strings are FYI only and subjected to change.
optional string state = 3;
// The unique_session_name as set in the trace config (might be empty).
optional string unique_session_name = 4;
// The number and size of each buffer.
repeated uint32 buffer_size_kb = 5;
// Duration, as specified in the TraceConfig.duration_ms.
optional uint32 duration_ms = 6;
// Number of data sources involved in the session.
optional uint32 num_data_sources = 7;
// Time when the session was started, in the CLOCK_REALTIME domain.
// Available only on Linux-based systems.
optional int64 start_realtime_ns = 8;
// The fields below have been introduced in v42.
// The bugreport_score, as set in TraceConfig.bugreport_score.
optional int32 bugreport_score = 9;
// As per TraceConfig.bugreport_filename.
optional string bugreport_filename = 10;
// If true, the session is in the STARTED state. If false the session is in
// any other state (see `state` field).
optional bool is_started = 11;
}
// Lists all the producers connected.
repeated Producer producers = 1;
// Lists the data sources available.
repeated DataSource data_sources = 2;
// 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.
repeated TracingSession tracing_sessions = 6;
// 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.
optional bool supports_tracing_sessions = 7;
// Total number of tracing sessions.
optional int32 num_sessions = 3;
// Number of tracing sessions in the started state. Always <= num_sessions.
optional int32 num_sessions_started = 4;
// 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.
optional string tracing_service_version = 5;
}
// End of protos/perfetto/common/tracing_service_state.proto
// Begin of protos/perfetto/common/builtin_clock.proto
enum BuiltinClock {
BUILTIN_CLOCK_UNKNOWN = 0;
BUILTIN_CLOCK_REALTIME = 1;
BUILTIN_CLOCK_REALTIME_COARSE = 2;
BUILTIN_CLOCK_MONOTONIC = 3;
BUILTIN_CLOCK_MONOTONIC_COARSE = 4;
BUILTIN_CLOCK_MONOTONIC_RAW = 5;
BUILTIN_CLOCK_BOOTTIME = 6;
BUILTIN_CLOCK_MAX_ID = 63;
reserved 7, 8;
// An internal CL (ag/16521245) has taken this for BUILTIN_CLOCK_TSC.
// That might get upstreamed later on. Avoid diverging on this ID in future.
reserved 9;
}
// End of protos/perfetto/common/builtin_clock.proto
// Begin of protos/perfetto/config/android/android_game_intervention_list_config.proto
// Data source that lists game modes and game interventions of games
// on an Android device.
message AndroidGameInterventionListConfig {
// If not empty, emit info about only the following list of package names
// (exact match, no regex). Otherwise, emit info about all packages.
repeated string package_name_filter = 1;
}
// End of protos/perfetto/config/android/android_game_intervention_list_config.proto
// Begin of protos/perfetto/common/android_log_constants.proto
// Values from NDK's android/log.h.
enum AndroidLogId {
// MAIN.
LID_DEFAULT = 0;
LID_RADIO = 1;
LID_EVENTS = 2;
LID_SYSTEM = 3;
LID_CRASH = 4;
LID_STATS = 5;
LID_SECURITY = 6;
LID_KERNEL = 7;
}
enum AndroidLogPriority {
PRIO_UNSPECIFIED = 0;
// _DEFAULT, but should never be seen in logs.
PRIO_UNUSED = 1;
PRIO_VERBOSE = 2;
PRIO_DEBUG = 3;
PRIO_INFO = 4;
PRIO_WARN = 5;
PRIO_ERROR = 6;
PRIO_FATAL = 7;
}
// End of protos/perfetto/common/android_log_constants.proto
// Begin of protos/perfetto/config/android/android_log_config.proto
message AndroidLogConfig {
repeated AndroidLogId log_ids = 1;
// Was |poll_ms|, deprecated.
reserved 2;
// If set ignores all log messages whose prio is < the given value.
optional AndroidLogPriority min_prio = 3;
// If non-empty ignores all log messages whose tag doesn't match one of the
// specified values.
repeated string filter_tags = 4;
}
// End of protos/perfetto/config/android/android_log_config.proto
// Begin of protos/perfetto/config/android/android_polled_state_config.proto
// Data source that polls for display state. This should only be used for
// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
message 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.
optional uint32 poll_ms = 1;
}
// End of protos/perfetto/config/android/android_polled_state_config.proto
// Begin of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
// 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
message 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.
optional bool surfaceflinger_skia_track_events = 1;
// 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.
optional bool hwui_skia_track_events = 2;
// If non-empty, hwui_skia_track_events applies to only the packages listed.
// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
repeated string hwui_package_name_filter = 3;
}
// End of protos/perfetto/config/android/android_sdk_sysprop_guard_config.proto
// Begin of protos/perfetto/config/android/android_system_property_config.proto
// Data source that polls for system properties.
message 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.
optional uint32 poll_ms = 1;
// Properties to poll. All property names must start with "debug.tracing.".
repeated string property_name = 2;
}
// End of protos/perfetto/config/android/android_system_property_config.proto
// Begin of protos/perfetto/config/android/network_trace_config.proto
// Network tracing data source that records details on all packets sent or
// received by the network.
message 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).
optional uint32 poll_ms = 1;
// 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.
optional uint32 aggregation_threshold = 2;
// 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.
optional uint32 intern_limit = 3;
// 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.
optional bool drop_local_port = 4;
optional bool drop_remote_port = 5;
optional bool drop_tcp_flags = 6;
}
// End of protos/perfetto/config/android/network_trace_config.proto
// Begin of protos/perfetto/config/android/packages_list_config.proto
// Data source that lists details (such as version code) about packages on an
// Android device.
message PackagesListConfig {
// If not empty, emit info about only the following list of package names
// (exact match, no regex). Otherwise, emit info about all packages.
repeated string package_name_filter = 1;
}
// End of protos/perfetto/config/android/packages_list_config.proto
// Begin of protos/perfetto/common/protolog_common.proto
enum ProtoLogLevel {
PROTOLOG_LEVEL_UNDEFINED = 0;
PROTOLOG_LEVEL_DEBUG = 1;
PROTOLOG_LEVEL_VERBOSE = 2;
PROTOLOG_LEVEL_INFO = 3;
PROTOLOG_LEVEL_WARN = 4;
PROTOLOG_LEVEL_ERROR = 5;
PROTOLOG_LEVEL_WTF = 6;
}
// End of protos/perfetto/common/protolog_common.proto
// Begin of protos/perfetto/config/android/protolog_config.proto
// 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.
message ProtoLogConfig {
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.
ENABLE_ALL = 1;
}
// Specified the configurations for each of the logging groups. If none is
// specified for a group the defaults will be used.
repeated ProtoLogGroup group_overrides = 1;
// Specified what tracing mode to use for the tracing instance.
optional TracingMode tracing_mode = 2;
}
message ProtoLogGroup {
// The ProtoLog group name this configuration entry applies to.
optional string group_name = 1;
// 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.
optional ProtoLogLevel log_from = 2;
// When set to true we will collect the stacktrace for each protolog message
// in this group that we are tracing.
optional bool collect_stacktrace = 3;
}
// End of protos/perfetto/config/android/protolog_config.proto
// Begin of protos/perfetto/config/android/surfaceflinger_layers_config.proto
// Custom configuration for the "android.surfaceflinger.layers" data source.
message SurfaceFlingerLayersConfig {
enum Mode {
MODE_UNSPECIFIED = 0;
// Trace layers snapshots. A snapshot is taken every time a layers change
// occurs.
MODE_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.
MODE_GENERATED = 2;
// Trace a single layers snapshot.
MODE_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.
MODE_GENERATED_BUGREPORT_ONLY = 4;
}
optional Mode mode = 1;
enum TraceFlag {
TRACE_FLAG_UNSPECIFIED = 0;
TRACE_FLAG_INPUT = 0x02;
TRACE_FLAG_COMPOSITION = 0x04;
TRACE_FLAG_EXTRA = 0x08;
TRACE_FLAG_HWC = 0x10;
TRACE_FLAG_BUFFERS = 0x20;
TRACE_FLAG_VIRTUAL_DISPLAYS = 0x40;
// INPUT | COMPOSITION | EXTRA
TRACE_FLAG_ALL = 0x0e;
}
repeated TraceFlag trace_flags = 2;
}
// End of protos/perfetto/config/android/surfaceflinger_layers_config.proto
// Begin of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
// Custom configuration for the "android.surfaceflinger.transactions" data
// source.
message SurfaceFlingerTransactionsConfig {
enum Mode {
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.
MODE_CONTINUOUS = 1;
// SurfaceFlinger writes the initial state and then each incoming
// transaction until the data source is stopped.
MODE_ACTIVE = 2;
}
optional Mode mode = 1;
}
// End of protos/perfetto/config/android/surfaceflinger_transactions_config.proto
// Begin of protos/perfetto/config/chrome/chrome_config.proto
message ChromeConfig {
optional string trace_config = 1;
// When enabled, the data source should only fill in fields in the output that
// are not potentially privacy sensitive.
optional bool privacy_filtering_enabled = 2;
// 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.
optional bool convert_to_legacy_json = 3;
// Priority of the tracing session client. A higher priority session may
// preempt a lower priority one in configurations where concurrent sessions
// aren't supported.
enum ClientPriority {
UNKNOWN = 0;
BACKGROUND = 1;
USER_INITIATED = 2;
}
optional ClientPriority client_priority = 4;
// 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.
optional string json_agent_label_filter = 5;
}
// End of protos/perfetto/config/chrome/chrome_config.proto
// Begin of protos/perfetto/config/chrome/v8_config.proto
message 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.
optional bool log_script_sources = 1;
// 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.
optional bool log_instructions = 2;
}
// End of protos/perfetto/config/chrome/v8_config.proto
// Begin of protos/perfetto/config/etw/etw_config.proto
// 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
message EtwConfig {
// The KernelFlag represent list of kernel flags that we are intrested in.
// To get a more extensive list run 'xperf -providers k'.
enum KernelFlag {
CSWITCH = 0;
DISPATCHER = 1;
}
// 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.
repeated KernelFlag kernel_flags = 1;
}
// End of protos/perfetto/config/etw/etw_config.proto
// Begin of protos/perfetto/config/ftrace/ftrace_config.proto
// Next id: 28
message FtraceConfig {
// Ftrace events to record, example: "sched/sched_switch".
repeated string ftrace_events = 1;
// Android-specific event categories:
repeated string atrace_categories = 2;
repeated string atrace_apps = 3;
// 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.
optional uint32 buffer_size_kb = 10;
// 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.
optional uint32 drain_period_ms = 11;
// 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.1.
// Introduced in: perfetto v43.
optional uint32 drain_buffer_percent = 26;
// 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.
message 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
optional bool enabled = 1;
}
optional CompactSchedConfig compact_sched = 12;
// 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).
message PrintFilter {
message Rule {
// Matches an atrace message of the form:
// <type>|pid|<prefix>...
message AtraceMessage {
optional string type = 1;
optional string prefix = 2;
}
oneof match {
// This rule matches if `prefix` matches exactly with the beginning of
// the "ftrace/print" "buf" field.
string prefix = 1;
// This rule matches if the "buf" field contains an atrace-style print
// message as specified in `atrace_msg`.
AtraceMessage atrace_msg = 3;
}
optional bool allow = 2;
}
repeated Rule rules = 1;
}
optional PrintFilter print_filter = 22;
// 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.
optional bool symbolize_ksyms = 13;
// 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.
enum KsymsMemPolicy {
KSYMS_UNSPECIFIED = 0;
KSYMS_CLEANUP_ON_STOP = 1;
KSYMS_RETAIN = 2;
}
optional KsymsMemPolicy ksyms_mem_policy = 17;
// 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.
optional bool initialize_ksyms_synchronously_for_testing = 14
[deprecated = true];
// 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.
optional bool throttle_rss_stat = 15;
// 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.
optional bool disable_generic_events = 16;
// The subset of syscalls to record. Enables raw_syscalls/sys_{enter,exit}.
// To record all syscalls, leave this unset and add raw_syscalls to
// |ftrace_events|.
// Example: ["sys_read", "sys_open"].
// Introduced in: Android U.
repeated string syscall_events = 18;
// 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.
optional bool enable_function_graph = 19;
// 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.
repeated string function_filters = 20;
// 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.
repeated string function_graph_roots = 21;
// 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).
optional bool preserve_ftrace_buffer = 23;
// If true, overrides the default timestamp clock and uses a raw hardware
// based monotonic clock for getting timestamps.
// * Introduced in: Android U.
optional bool use_monotonic_raw_clock = 24;
// 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
optional string instance_name = 25;
// 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.
optional bool buffer_size_lower_bound = 27;
}
// End of protos/perfetto/config/ftrace/ftrace_config.proto
// Begin of protos/perfetto/config/gpu/gpu_counter_config.proto
message GpuCounterConfig {
// Desired sampling interval for counters.
optional uint64 counter_period_ns = 1;
// List of counters to be sampled. Counter IDs correspond to the ones
// described in GpuCounterSpec in the data source descriptor.
repeated uint32 counter_ids = 2;
// Sample counters by instrumenting command buffers.
optional bool instrumented_sampling = 3;
// Fix gpu clock rate during trace session.
optional bool fix_gpu_clock = 4;
}
// End of protos/perfetto/config/gpu/gpu_counter_config.proto
// Begin of protos/perfetto/config/gpu/vulkan_memory_config.proto
message VulkanMemoryConfig {
// Tracking driver memory usage events
optional bool track_driver_memory_usage = 1;
// Tracking device memory usage events
optional bool track_device_memory_usage = 2;
}
// End of protos/perfetto/config/gpu/vulkan_memory_config.proto
// Begin of protos/perfetto/config/inode_file/inode_file_config.proto
message InodeFileConfig {
message MountPointMappingEntry {
optional string mountpoint = 1;
repeated string scan_roots = 2;
}
// How long to pause between batches.
optional uint32 scan_interval_ms = 1;
// How long to wait before the first scan in order to accumulate inodes.
optional uint32 scan_delay_ms = 2;
// How many inodes to scan in one batch.
optional uint32 scan_batch_size = 3;
// Do not scan for inodes not found in the static map.
optional bool do_not_scan = 4;
// If non-empty, only scan inodes corresponding to block devices named in
// this list.
repeated string scan_mount_points = 5;
// When encountering an inode belonging to a block device corresponding
// to one of the mount points in this map, scan its scan_roots instead.
repeated MountPointMappingEntry mount_point_mapping = 6;
}
// End of protos/perfetto/config/inode_file/inode_file_config.proto
// Begin of protos/perfetto/config/interceptors/console_config.proto
message ConsoleConfig {
enum Output {
OUTPUT_UNSPECIFIED = 0;
OUTPUT_STDOUT = 1;
OUTPUT_STDERR = 2;
}
optional Output output = 1;
optional bool enable_colors = 2;
}
// End of protos/perfetto/config/interceptors/console_config.proto
// Begin of protos/perfetto/config/interceptor_config.proto
// 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.
message InterceptorConfig {
// Matches the name given to RegisterInterceptor().
optional string name = 1;
optional ConsoleConfig console_config = 100;
}
// End of protos/perfetto/config/interceptor_config.proto
// Begin of protos/perfetto/config/power/android_power_config.proto
message AndroidPowerConfig {
enum BatteryCounters {
BATTERY_COUNTER_UNSPECIFIED = 0;
// Coulomb counter.
BATTERY_COUNTER_CHARGE = 1;
// Charge (%).
BATTERY_COUNTER_CAPACITY_PERCENT = 2;
// Instantaneous current.
BATTERY_COUNTER_CURRENT = 3;
// Avg current.
BATTERY_COUNTER_CURRENT_AVG = 4;
// Instantaneous voltage.
BATTERY_COUNTER_VOLTAGE = 5;
}
optional uint32 battery_poll_ms = 1;
repeated BatteryCounters battery_counters = 2;
// Where available enables per-power-rail measurements.
optional bool collect_power_rails = 3;
// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
// Available from Android S.
optional bool collect_energy_estimation_breakdown = 4;
// Provides a breakdown of time in state for various subsystems.
// Available from Android U.
optional bool collect_entity_state_residency = 5;
}
// End of protos/perfetto/config/power/android_power_config.proto
// Begin of protos/perfetto/config/process_stats/process_stats_config.proto
message ProcessStatsConfig {
enum Quirks {
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.
DISABLE_INITIAL_DUMP = 1 [deprecated = true];
DISABLE_ON_DEMAND = 2;
}
repeated Quirks quirks = 1;
// If enabled all processes will be scanned and dumped when the trace starts.
optional bool scan_all_processes_on_start = 2;
// If enabled thread names are also recoded (this is redundant if sched_switch
// is enabled).
optional bool record_thread_names = 3;
// 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.
optional uint32 proc_stats_poll_ms = 4;
// id 5 never used
// 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.
optional uint32 proc_stats_cache_ttl_ms = 6;
// 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.
optional bool resolve_process_fds = 9;
// If true, output will include memory stats from /proc/pid/smaps_rollup.
optional bool scan_smaps_rollup = 10;
// If true: process descriptions will include process age (starttime in
// /proc/pid/stat).
// Introduced in: perfetto v44.
optional bool record_process_age = 11;
// 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.
optional bool record_process_runtime = 12;
// record_thread_time_in_state
reserved 7;
// thread_time_in_state_cache_size
reserved 8;
}
// End of protos/perfetto/config/process_stats/process_stats_config.proto
// Begin of protos/perfetto/config/profiling/heapprofd_config.proto
// Configuration for go/heapprofd.
// Next id: 28
message HeapprofdConfig {
message ContinuousDumpConfig {
// ms to wait before first dump.
optional uint32 dump_phase_ms = 5;
// ms to wait between following dumps.
optional uint32 dump_interval_ms = 6;
}
// 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.
optional uint64 sampling_interval_bytes = 1;
// 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.
optional uint64 adaptive_sampling_shmem_threshold = 24;
// Stop doubling the sampling_interval once the sampling interval has reached
// this value.
optional uint64 adaptive_sampling_max_sampling_interval_bytes = 25;
// 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.
repeated string process_cmdline = 2;
// For watermark based triggering or local debugging.
repeated uint64 pid = 4;
// 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+.
repeated string target_installed_by = 26;
// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
// "malloc".
//
// Introduced in Android 12.
repeated string heaps = 20;
// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
// combination with all_heaps;
//
// Introduced in Android 12.
repeated string exclude_heaps = 27;
optional bool stream_allocations = 23;
// 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.
repeated uint64 heap_sampling_intervals = 22;
// Sample all heaps registered by target process. Introduced in Android 12.
optional bool all_heaps = 21;
// 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.
optional bool all = 5;
// Do not profile processes whose anon RSS + swap < given value.
// Introduced in Android 11.
optional uint32 min_anonymous_memory_kb = 15;
// Stop profile if heapprofd memory usage goes beyond the given value.
// Introduced in Android 11.
optional uint32 max_heapprofd_memory_kb = 16;
// Stop profile if heapprofd CPU time since start of this data-source
// goes beyond given value.
// Introduced in Android 11.
optional uint64 max_heapprofd_cpu_secs = 17;
// Do not emit function names for mappings starting with this prefix.
// E.g. /system to not emit symbols for any system libraries.
repeated string skip_symbol_prefix = 7;
// Dump at a predefined interval.
optional ContinuousDumpConfig continuous_dump_config = 6;
// 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.
optional uint64 shmem_size_bytes = 8;
// 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.
optional bool block_client = 9;
// 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.
optional uint32 block_client_timeout_us = 14;
// 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.
optional bool no_startup = 10;
// 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.
optional bool no_running = 11;
// deprecated idle_allocations.
reserved 12;
// 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.
optional bool dump_at_max = 13;
// FEATURE FLAGS. THERE BE DRAGONS.
// 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.
optional bool disable_fork_teardown = 18;
// 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.
optional bool disable_vfork_detection = 19;
}
// End of protos/perfetto/config/profiling/heapprofd_config.proto
// Begin of protos/perfetto/config/profiling/java_hprof_config.proto
// Configuration for managed app heap graph snapshots.
message JavaHprofConfig {
// If dump_interval_ms != 0, the following configuration is used.
message ContinuousDumpConfig {
// ms to wait before first continuous dump.
// A dump is always created at the beginning of the trace.
optional uint32 dump_phase_ms = 1;
// ms to wait between following dumps.
optional uint32 dump_interval_ms = 2;
// 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+.
optional bool scan_pids_only_on_start = 3;
}
// 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.
repeated string process_cmdline = 1;
// For watermark based triggering or local debugging.
repeated uint64 pid = 2;
// 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+.
repeated string target_installed_by = 7;
// Dump at a predefined interval.
optional ContinuousDumpConfig continuous_dump_config = 3;
// Do not profile processes whose anon RSS + swap < given value.
optional uint32 min_anonymous_memory_kb = 4;
// 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
optional bool dump_smaps = 5;
// Exclude objects of the following types from the profile. This can be
// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
repeated string ignored_types = 6;
}
// End of protos/perfetto/config/profiling/java_hprof_config.proto
// Begin of protos/perfetto/common/perf_events.proto
// Next id: 12
message PerfEvents {
// What event to sample on, and how often. Commented from the perspective of
// its use in |PerfEventConfig|.
message 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.
oneof 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.
uint64 frequency = 2;
// Per-cpu sampling will occur every |period| counts of |event|.
// Prefer |frequency| by default, as it's easier to oversample with a
// fixed period.
uint64 period = 1;
}
// 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.
oneof event {
Counter counter = 4;
Tracepoint tracepoint = 3;
RawEvent raw_event = 5;
}
// 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.
optional PerfClock timestamp_clock = 11;
// 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.
optional string name = 10;
}
// 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
enum Counter {
UNKNOWN_COUNTER = 0;
// cpu-clock
SW_CPU_CLOCK = 1;
// page-faults, faults
SW_PAGE_FAULTS = 2;
// task-clock
SW_TASK_CLOCK = 3;
// context-switches, cs
SW_CONTEXT_SWITCHES = 4;
// cpu-migrations, migrations
SW_CPU_MIGRATIONS = 5;
// minor-faults
SW_PAGE_FAULTS_MIN = 6;
// major-faults
SW_PAGE_FAULTS_MAJ = 7;
// alignment-faults
SW_ALIGNMENT_FAULTS = 8;
// emulation-faults
SW_EMULATION_FAULTS = 9;
// dummy
SW_DUMMY = 20;
// cpu-cycles, cycles
HW_CPU_CYCLES = 10;
// instructions
HW_INSTRUCTIONS = 11;
// cache-references
HW_CACHE_REFERENCES = 12;
// cache-misses
HW_CACHE_MISSES = 13;
// branch-instructions, branches
HW_BRANCH_INSTRUCTIONS = 14;
// branch-misses
HW_BRANCH_MISSES = 15;
// bus-cycles
HW_BUS_CYCLES = 16;
// stalled-cycles-frontend, idle-cycles-frontend
HW_STALLED_CYCLES_FRONTEND = 17;
// stalled-cycles-backend, idle-cycles-backend
HW_STALLED_CYCLES_BACKEND = 18;
// ref-cycles
HW_REF_CPU_CYCLES = 19;
}
message Tracepoint {
// Group and name for the tracepoint, acceptable forms:
// * "sched/sched_switch"
// * "sched:sched_switch"
optional string name = 1;
// 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
optional string filter = 2;
}
// 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.
message RawEvent {
optional uint32 type = 1;
optional uint64 config = 2;
optional uint64 config1 = 3;
optional uint64 config2 = 4;
}
// 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.
enum PerfClock {
UNKNOWN_PERF_CLOCK = 0;
PERF_CLOCK_REALTIME = 1;
PERF_CLOCK_MONOTONIC = 2;
PERF_CLOCK_MONOTONIC_RAW = 3;
PERF_CLOCK_BOOTTIME = 4;
}
}
// End of protos/perfetto/common/perf_events.proto
// Begin of protos/perfetto/config/profiling/perf_event_config.proto
// 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: 19
message PerfEventConfig {
// What event to sample on, and how often.
// Defined in common/perf_events.proto.
optional PerfEvents.Timebase timebase = 15;
// 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.
optional CallstackSampling callstack_sampling = 16;
//
// Kernel <-> userspace ring buffer options:
//
// How often the per-cpu ring buffers are read by the producer.
// If unset, an implementation-defined default is used.
optional uint32 ring_buffer_read_period_ms = 8;
// 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.
optional uint32 ring_buffer_pages = 3;
//
// Daemon's resource usage limits:
//
// 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.
optional uint64 max_enqueued_footprint_kb = 17;
// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
// footprint exceeds this value.
optional uint32 max_daemon_memory_kb = 13;
//
// Uncommon options:
//
// 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.
optional uint32 remote_descriptor_timeout_ms = 9;
// 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.
optional uint32 unwind_state_clear_period_ms = 10;
// 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+.
repeated string target_installed_by = 18;
//
// Deprecated (superseded by options above):
//
// Do not set *any* of these fields in new configs.
//
// Note: legacy configs had to set |all_cpus| to true to pass parsing.
// We rely on this to detect such configs.
optional bool all_cpus = 1;
optional uint32 sampling_frequency = 2;
optional bool kernel_frames = 12;
repeated int32 target_pid = 4;
repeated string target_cmdline = 5;
repeated int32 exclude_pid = 6;
repeated string exclude_cmdline = 7;
optional uint32 additional_cmdline_count = 11;
// previously |tracepoint|
reserved 14;
//
// Sub-messages (nested for generated code namespacing).
//
message 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.
optional Scope scope = 1;
// 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.
optional bool kernel_frames = 2;
// 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).
optional UnwindMode user_frames = 3;
}
message 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.
repeated int32 target_pid = 1;
// 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.
repeated string target_cmdline = 2;
// List of excluded pids.
repeated int32 exclude_pid = 3;
// List of excluded cmdlines. See description of |target_cmdline| for how
// this is handled.
repeated string exclude_cmdline = 4;
// Niche features for systemwide callstacks:
// 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.
optional uint32 additional_cmdline_count = 5;
// 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.
optional uint32 process_shard_count = 6;
}
// Userspace unwinding mode. A possible future addition is kernel-unwound
// callchains for frame pointer based systems.
enum UnwindMode {
UNWIND_UNKNOWN = 0;
// Do not unwind userspace:
UNWIND_SKIP = 1;
// Use libunwindstack (default):
UNWIND_DWARF = 2;
}
}
// End of protos/perfetto/config/profiling/perf_event_config.proto
// Begin of protos/perfetto/config/statsd/atom_ids.proto
// 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.
enum AtomId {
ATOM_UNSPECIFIED = 0;
ATOM_BLE_SCAN_STATE_CHANGED = 2;
ATOM_PROCESS_STATE_CHANGED = 3;
ATOM_BLE_SCAN_RESULT_RECEIVED = 4;
ATOM_SENSOR_STATE_CHANGED = 5;
ATOM_GPS_SCAN_STATE_CHANGED = 6;
ATOM_SYNC_STATE_CHANGED = 7;
ATOM_SCHEDULED_JOB_STATE_CHANGED = 8;
ATOM_SCREEN_BRIGHTNESS_CHANGED = 9;
ATOM_WAKELOCK_STATE_CHANGED = 10;
ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED = 11;
ATOM_MOBILE_RADIO_POWER_STATE_CHANGED = 12;
ATOM_WIFI_RADIO_POWER_STATE_CHANGED = 13;
ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED = 14;
ATOM_MEMORY_FACTOR_STATE_CHANGED = 15;
ATOM_EXCESSIVE_CPU_USAGE_REPORTED = 16;
ATOM_CACHED_KILL_REPORTED = 17;
ATOM_PROCESS_MEMORY_STAT_REPORTED = 18;
ATOM_LAUNCHER_EVENT = 19;
ATOM_BATTERY_SAVER_MODE_STATE_CHANGED = 20;
ATOM_DEVICE_IDLE_MODE_STATE_CHANGED = 21;
ATOM_DEVICE_IDLING_MODE_STATE_CHANGED = 22;
ATOM_AUDIO_STATE_CHANGED = 23;
ATOM_MEDIA_CODEC_STATE_CHANGED = 24;
ATOM_CAMERA_STATE_CHANGED = 25;
ATOM_FLASHLIGHT_STATE_CHANGED = 26;
ATOM_UID_PROCESS_STATE_CHANGED = 27;
ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED = 28;
ATOM_SCREEN_STATE_CHANGED = 29;
ATOM_BATTERY_LEVEL_CHANGED = 30;
ATOM_CHARGING_STATE_CHANGED = 31;
ATOM_PLUGGED_STATE_CHANGED = 32;
ATOM_INTERACTIVE_STATE_CHANGED = 33;
ATOM_TOUCH_EVENT_REPORTED = 34;
ATOM_WAKEUP_ALARM_OCCURRED = 35;
ATOM_KERNEL_WAKEUP_REPORTED = 36;
ATOM_WIFI_LOCK_STATE_CHANGED = 37;
ATOM_WIFI_SIGNAL_STRENGTH_CHANGED = 38;
ATOM_WIFI_SCAN_STATE_CHANGED = 39;
ATOM_PHONE_SIGNAL_STRENGTH_CHANGED = 40;
ATOM_SETTING_CHANGED = 41;
ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED = 42;
ATOM_ISOLATED_UID_CHANGED = 43;
ATOM_PACKET_WAKEUP_OCCURRED = 44;
ATOM_WALL_CLOCK_TIME_SHIFTED = 45;
ATOM_ANOMALY_DETECTED = 46;
ATOM_APP_BREADCRUMB_REPORTED = 47;
ATOM_APP_START_OCCURRED = 48;
ATOM_APP_START_CANCELED = 49;
ATOM_APP_START_FULLY_DRAWN = 50;
ATOM_LMK_KILL_OCCURRED = 51;
ATOM_PICTURE_IN_PICTURE_STATE_CHANGED = 52;
ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED = 53;
ATOM_LMK_STATE_CHANGED = 54;
ATOM_APP_START_MEMORY_STATE_CAPTURED = 55;
ATOM_SHUTDOWN_SEQUENCE_REPORTED = 56;
ATOM_BOOT_SEQUENCE_REPORTED = 57;
ATOM_DAVEY_OCCURRED = 58;
ATOM_OVERLAY_STATE_CHANGED = 59;
ATOM_FOREGROUND_SERVICE_STATE_CHANGED = 60;
ATOM_CALL_STATE_CHANGED = 61;
ATOM_KEYGUARD_STATE_CHANGED = 62;
ATOM_KEYGUARD_BOUNCER_STATE_CHANGED = 63;
ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED = 64;
ATOM_APP_DIED = 65;
ATOM_RESOURCE_CONFIGURATION_CHANGED = 66;
ATOM_BLUETOOTH_ENABLED_STATE_CHANGED = 67;
ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED = 68;
ATOM_GPS_SIGNAL_QUALITY_CHANGED = 69;
ATOM_USB_CONNECTOR_STATE_CHANGED = 70;
ATOM_SPEAKER_IMPEDANCE_REPORTED = 71;
ATOM_HARDWARE_FAILED = 72;
ATOM_PHYSICAL_DROP_DETECTED = 73;
ATOM_CHARGE_CYCLES_REPORTED = 74;
ATOM_MOBILE_CONNECTION_STATE_CHANGED = 75;
ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED = 76;
ATOM_USB_DEVICE_ATTACHED = 77;
ATOM_APP_CRASH_OCCURRED = 78;
ATOM_ANR_OCCURRED = 79;
ATOM_WTF_OCCURRED = 80;
ATOM_LOW_MEM_REPORTED = 81;
ATOM_GENERIC_ATOM = 82;
ATOM_VIBRATOR_STATE_CHANGED = 84;
ATOM_DEFERRED_JOB_STATS_REPORTED = 85;
ATOM_THERMAL_THROTTLING = 86;
ATOM_BIOMETRIC_ACQUIRED = 87;
ATOM_BIOMETRIC_AUTHENTICATED = 88;
ATOM_BIOMETRIC_ERROR_OCCURRED = 89;
ATOM_UI_EVENT_REPORTED = 90;
ATOM_BATTERY_HEALTH_SNAPSHOT = 91;
ATOM_SLOW_IO = 92;
ATOM_BATTERY_CAUSED_SHUTDOWN = 93;
ATOM_PHONE_SERVICE_STATE_CHANGED = 94;
ATOM_PHONE_STATE_CHANGED = 95;
ATOM_USER_RESTRICTION_CHANGED = 96;
ATOM_SETTINGS_UI_CHANGED = 97;
ATOM_CONNECTIVITY_STATE_CHANGED = 98;
ATOM_SERVICE_STATE_CHANGED = 99;
ATOM_SERVICE_LAUNCH_REPORTED = 100;
ATOM_FLAG_FLIP_UPDATE_OCCURRED = 101;
ATOM_BINARY_PUSH_STATE_CHANGED = 102;
ATOM_DEVICE_POLICY_EVENT = 103;
ATOM_DOCS_UI_FILE_OP_CANCELED = 104;
ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED = 105;
ATOM_DOCS_UI_FILE_OP_FAILURE = 106;
ATOM_DOCS_UI_PROVIDER_FILE_OP = 107;
ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST = 108;
ATOM_DOCS_UI_LAUNCH_REPORTED = 109;
ATOM_DOCS_UI_ROOT_VISITED = 110;
ATOM_DOCS_UI_STARTUP_MS = 111;
ATOM_DOCS_UI_USER_ACTION_REPORTED = 112;
ATOM_WIFI_ENABLED_STATE_CHANGED = 113;
ATOM_WIFI_RUNNING_STATE_CHANGED = 114;
ATOM_APP_COMPACTED = 115;
ATOM_NETWORK_DNS_EVENT_REPORTED = 116;
ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED = 117;
ATOM_DOCS_UI_PICK_RESULT_REPORTED = 118;
ATOM_DOCS_UI_SEARCH_MODE_REPORTED = 119;
ATOM_DOCS_UI_SEARCH_TYPE_REPORTED = 120;
ATOM_DATA_STALL_EVENT = 121;
ATOM_RESCUE_PARTY_RESET_REPORTED = 122;
ATOM_SIGNED_CONFIG_REPORTED = 123;
ATOM_GNSS_NI_EVENT_REPORTED = 124;
ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT = 125;
ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED = 126;
ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED = 127;
ATOM_APP_DOWNGRADED = 128;
ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED = 129;
ATOM_LOW_STORAGE_STATE_CHANGED = 130;
ATOM_GNSS_NFW_NOTIFICATION_REPORTED = 131;
ATOM_GNSS_CONFIGURATION_REPORTED = 132;
ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED = 133;
ATOM_NFC_ERROR_OCCURRED = 134;
ATOM_NFC_STATE_CHANGED = 135;
ATOM_NFC_BEAM_OCCURRED = 136;
ATOM_NFC_CARDEMULATION_OCCURRED = 137;
ATOM_NFC_TAG_OCCURRED = 138;
ATOM_NFC_HCE_TRANSACTION_OCCURRED = 139;
ATOM_SE_STATE_CHANGED = 140;
ATOM_SE_OMAPI_REPORTED = 141;
ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED = 142;
ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED = 143;
ATOM_ADB_CONNECTION_CHANGED = 144;
ATOM_SPEECH_DSP_STAT_REPORTED = 145;
ATOM_USB_CONTAMINANT_REPORTED = 146;
ATOM_WATCHDOG_ROLLBACK_OCCURRED = 147;
ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED = 148;
ATOM_BUBBLE_UI_CHANGED = 149;
ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED = 150;
ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED = 151;
ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED = 152;
ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED = 153;
ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED = 154;
ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED = 155;
ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED = 156;
ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED = 157;
ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED = 158;
ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED = 159;
ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED = 160;
ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED = 161;
ATOM_BLUETOOTH_DEVICE_INFO_REPORTED = 162;
ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED = 163;
ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED = 164;
ATOM_BLUETOOTH_BOND_STATE_CHANGED = 165;
ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED = 166;
ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED = 167;
ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED = 168;
ATOM_PROCESS_START_TIME = 169;
ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED = 170;
ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED = 171;
ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED = 172;
ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED = 173;
ATOM_ASSIST_GESTURE_STAGE_REPORTED = 174;
ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED = 175;
ATOM_ASSIST_GESTURE_PROGRESS_REPORTED = 176;
ATOM_TOUCH_GESTURE_CLASSIFIED = 177;
ATOM_HIDDEN_API_USED = 178;
ATOM_STYLE_UI_CHANGED = 179;
ATOM_PRIVACY_INDICATORS_INTERACTED = 180;
ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED = 181;
ATOM_NETWORK_STACK_REPORTED = 182;
ATOM_APP_MOVED_STORAGE_REPORTED = 183;
ATOM_BIOMETRIC_ENROLLED = 184;
ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED = 185;
ATOM_TOMB_STONE_OCCURRED = 186;
ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED = 187;
ATOM_INTELLIGENCE_EVENT_REPORTED = 188;
ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED = 189;
ATOM_ROLE_REQUEST_RESULT_REPORTED = 190;
ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED = 191;
ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED = 192;
ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED = 193;
ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED = 194;
ATOM_MEDIAMETRICS_CODEC_REPORTED = 195;
ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED = 196;
ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED = 197;
ATOM_MEDIAMETRICS_MEDIADRM_REPORTED = 198;
ATOM_MEDIAMETRICS_NUPLAYER_REPORTED = 199;
ATOM_MEDIAMETRICS_RECORDER_REPORTED = 200;
ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED = 201;
ATOM_CAR_POWER_STATE_CHANGED = 203;
ATOM_GARAGE_MODE_INFO = 204;
ATOM_TEST_ATOM_REPORTED = 205;
ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED = 206;
ATOM_CONTENT_CAPTURE_SERVICE_EVENTS = 207;
ATOM_CONTENT_CAPTURE_SESSION_EVENTS = 208;
ATOM_CONTENT_CAPTURE_FLUSHED = 209;
ATOM_LOCATION_MANAGER_API_USAGE_REPORTED = 210;
ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED = 211;
ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT = 212;
ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS = 213;
ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION = 214;
ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED = 215;
ATOM_APP_PERMISSION_FRAGMENT_VIEWED = 216;
ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED = 217;
ATOM_PERMISSION_APPS_FRAGMENT_VIEWED = 218;
ATOM_TEXT_SELECTION_EVENT = 219;
ATOM_TEXT_LINKIFY_EVENT = 220;
ATOM_CONVERSATION_ACTIONS_EVENT = 221;
ATOM_LANGUAGE_DETECTION_EVENT = 222;
ATOM_EXCLUSION_RECT_STATE_CHANGED = 223;
ATOM_BACK_GESTURE_REPORTED_REPORTED = 224;
ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED = 225;
ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED = 226;
ATOM_CAMERA_ACTION_EVENT = 227;
ATOM_APP_COMPATIBILITY_CHANGE_REPORTED = 228;
ATOM_PERFETTO_UPLOADED = 229;
ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED = 230;
ATOM_MEDIA_PROVIDER_SCAN_OCCURRED = 233;
ATOM_MEDIA_CONTENT_DELETED = 234;
ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED = 235;
ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED = 236;
ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED = 237;
ATOM_REBOOT_ESCROW_RECOVERY_REPORTED = 238;
ATOM_BOOT_TIME_EVENT_DURATION_REPORTED = 239;
ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED = 240;
ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED = 241;
ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED = 242;
ATOM_USERSPACE_REBOOT_REPORTED = 243;
ATOM_NOTIFICATION_REPORTED = 244;
ATOM_NOTIFICATION_PANEL_REPORTED = 245;
ATOM_NOTIFICATION_CHANNEL_MODIFIED = 246;
ATOM_INTEGRITY_CHECK_RESULT_REPORTED = 247;
ATOM_INTEGRITY_RULES_PUSHED = 248;
ATOM_CB_MESSAGE_REPORTED = 249;
ATOM_CB_MESSAGE_ERROR = 250;
ATOM_WIFI_HEALTH_STAT_REPORTED = 251;
ATOM_WIFI_FAILURE_STAT_REPORTED = 252;
ATOM_WIFI_CONNECTION_RESULT_REPORTED = 253;
ATOM_APP_FREEZE_CHANGED = 254;
ATOM_SNAPSHOT_MERGE_REPORTED = 255;
ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED = 256;
ATOM_DISPLAY_JANK_REPORTED = 257;
ATOM_APP_STANDBY_BUCKET_CHANGED = 258;
ATOM_SHARESHEET_STARTED = 259;
ATOM_RANKING_SELECTED = 260;
ATOM_TVSETTINGS_UI_INTERACTED = 261;
ATOM_LAUNCHER_SNAPSHOT = 262;
ATOM_PACKAGE_INSTALLER_V2_REPORTED = 263;
ATOM_USER_LIFECYCLE_JOURNEY_REPORTED = 264;
ATOM_USER_LIFECYCLE_EVENT_OCCURRED = 265;
ATOM_ACCESSIBILITY_SHORTCUT_REPORTED = 266;
ATOM_ACCESSIBILITY_SERVICE_REPORTED = 267;
ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED = 268;
ATOM_APP_USAGE_EVENT_OCCURRED = 269;
ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED = 270;
ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED = 271;
ATOM_AUTO_REVOKED_APP_INTERACTION = 272;
ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION = 273;
ATOM_EVS_USAGE_STATS_REPORTED = 274;
ATOM_AUDIO_POWER_USAGE_DATA_REPORTED = 275;
ATOM_TV_TUNER_STATE_CHANGED = 276;
ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED = 277;
ATOM_CB_MESSAGE_FILTERED = 278;
ATOM_TV_TUNER_DVR_STATUS = 279;
ATOM_TV_CAS_SESSION_OPEN_STATUS = 280;
ATOM_ASSISTANT_INVOCATION_REPORTED = 281;
ATOM_DISPLAY_WAKE_REPORTED = 282;
ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED = 283;
ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED = 284;
ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED = 285;
ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED = 286;
ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED = 287;
ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED = 288;
ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED = 289;
ATOM_NETWORK_IP_PROVISIONING_REPORTED = 290;
ATOM_NETWORK_DHCP_RENEW_REPORTED = 291;
ATOM_NETWORK_VALIDATION_REPORTED = 292;
ATOM_NETWORK_STACK_QUIRK_REPORTED = 293;
ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED = 294;
ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED = 295;
ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED = 296;
ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED = 297;
ATOM_BLOB_COMMITTED = 298;
ATOM_BLOB_LEASED = 299;
ATOM_BLOB_OPENED = 300;
ATOM_CONTACTS_PROVIDER_STATUS_REPORTED = 301;
ATOM_KEYSTORE_KEY_EVENT_REPORTED = 302;
ATOM_NETWORK_TETHERING_REPORTED = 303;
ATOM_IME_TOUCH_REPORTED = 304;
ATOM_UI_INTERACTION_FRAME_INFO_REPORTED = 305;
ATOM_UI_ACTION_LATENCY_REPORTED = 306;
ATOM_WIFI_DISCONNECT_REPORTED = 307;
ATOM_WIFI_CONNECTION_STATE_CHANGED = 308;
ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED = 309;
ATOM_HDMI_CEC_MESSAGE_REPORTED = 310;
ATOM_AIRPLANE_MODE = 311;
ATOM_MODEM_RESTART = 312;
ATOM_CARRIER_ID_MISMATCH_REPORTED = 313;
ATOM_CARRIER_ID_TABLE_UPDATED = 314;
ATOM_DATA_STALL_RECOVERY_REPORTED = 315;
ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED = 316;
ATOM_TLS_HANDSHAKE_REPORTED = 317;
ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED = 318;
ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED = 319;
ATOM_MEDIAMETRICS_PLAYBACK_REPORTED = 320;
ATOM_MEDIA_NETWORK_INFO_CHANGED = 321;
ATOM_MEDIA_PLAYBACK_STATE_CHANGED = 322;
ATOM_MEDIA_PLAYBACK_ERROR_REPORTED = 323;
ATOM_MEDIA_PLAYBACK_TRACK_CHANGED = 324;
ATOM_WIFI_SCAN_REPORTED = 325;
ATOM_WIFI_PNO_SCAN_REPORTED = 326;
ATOM_TIF_TUNE_CHANGED = 327;
ATOM_AUTO_ROTATE_REPORTED = 328;
ATOM_PERFETTO_TRIGGER = 329;
ATOM_TRANSCODING_DATA = 330;
ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED = 331;
ATOM_DEVICE_ROTATED = 333;
ATOM_SIM_SPECIFIC_SETTINGS_RESTORED = 334;
ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED = 335;
ATOM_PIN_STORAGE_EVENT = 336;
ATOM_FACE_DOWN_REPORTED = 337;
ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED = 338;
ATOM_REBOOT_ESCROW_PREPARATION_REPORTED = 339;
ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED = 340;
ATOM_REBOOT_ESCROW_REBOOT_REPORTED = 341;
ATOM_BINDER_LATENCY_REPORTED = 342;
ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED = 343;
ATOM_MEDIA_TRANSCODING_SESSION_ENDED = 344;
ATOM_MAGNIFICATION_USAGE_REPORTED = 345;
ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED = 346;
ATOM_APP_SEARCH_CALL_STATS_REPORTED = 347;
ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED = 348;
ATOM_DEVICE_CONTROL_CHANGED = 349;
ATOM_DEVICE_STATE_CHANGED = 350;
ATOM_INPUTDEVICE_REGISTERED = 351;
ATOM_SMARTSPACE_CARD_REPORTED = 352;
ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED = 353;
ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED = 354;
ATOM_AUTH_ENROLL_ACTION_INVOKED = 355;
ATOM_AUTH_DEPRECATED_API_USED = 356;
ATOM_UNATTENDED_REBOOT_OCCURRED = 357;
ATOM_LONG_REBOOT_BLOCKING_REPORTED = 358;
ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED = 359;
ATOM_FDTRACK_EVENT_OCCURRED = 364;
ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED = 365;
ATOM_ALARM_BATCH_DELIVERED = 367;
ATOM_ALARM_SCHEDULED = 368;
ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED = 369;
ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED = 370;
ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED = 371;
ATOM_APP_SEARCH_QUERY_STATS_REPORTED = 372;
ATOM_APP_PROCESS_DIED = 373;
ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED = 374;
ATOM_SLOW_INPUT_EVENT_REPORTED = 375;
ATOM_ANR_OCCURRED_PROCESSING_STARTED = 376;
ATOM_APP_SEARCH_REMOVE_STATS_REPORTED = 377;
ATOM_MEDIA_CODEC_REPORTED = 378;
ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION = 379;
ATOM_PERMISSION_DETAILS_INTERACTION = 380;
ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION = 381;
ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION = 382;
ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED = 383;
ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT = 384;
ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED = 385;
ATOM_APP_COMPAT_STATE_CHANGED = 386;
ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED = 387;
ATOM_SPLITSCREEN_UI_CHANGED = 388;
ATOM_NETWORK_DNS_HANDSHAKE_REPORTED = 389;
ATOM_BLUETOOTH_CODE_PATH_COUNTER = 390;
ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY = 392;
ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED = 393;
ATOM_NEURALNETWORKS_COMPILATION_COMPLETED = 394;
ATOM_NEURALNETWORKS_EXECUTION_COMPLETED = 395;
ATOM_NEURALNETWORKS_COMPILATION_FAILED = 396;
ATOM_NEURALNETWORKS_EXECUTION_FAILED = 397;
ATOM_CONTEXT_HUB_BOOTED = 398;
ATOM_CONTEXT_HUB_RESTARTED = 399;
ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED = 400;
ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED = 401;
ATOM_UWB_SESSION_INITED = 402;
ATOM_UWB_SESSION_CLOSED = 403;
ATOM_UWB_FIRST_RANGING_RECEIVED = 404;
ATOM_UWB_RANGING_MEASUREMENT_RECEIVED = 405;
ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED = 406;
ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED = 407;
ATOM_CLIPBOARD_CLEARED = 408;
ATOM_VM_CREATION_REQUESTED = 409;
ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED = 410;
ATOM_CAMERA_COMPAT_CONTROL_EVENT_REPORTED = 411;
ATOM_APPLICATION_LOCALES_CHANGED = 412;
ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED = 413;
ATOM_FOLD_STATE_DURATION_REPORTED = 414;
ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED = 415;
ATOM_DISPLAY_HBM_STATE_CHANGED = 416;
ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED = 417;
ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED = 418;
ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED = 419;
ATOM_VBMETA_DIGEST_REPORTED = 420;
ATOM_APEX_INFO_GATHERED = 421;
ATOM_PVM_INFO_GATHERED = 422;
ATOM_WEAR_SETTINGS_UI_INTERACTED = 423;
ATOM_TRACING_SERVICE_REPORT_EVENT = 424;
ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED = 425;
ATOM_LAUNCHER_LATENCY = 426;
ATOM_DROPBOX_ENTRY_DROPPED = 427;
ATOM_WIFI_P2P_CONNECTION_REPORTED = 428;
ATOM_GAME_STATE_CHANGED = 429;
ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED = 430;
ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED = 431;
ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED = 432;
ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED = 433;
ATOM_HOTWORD_DETECTOR_EVENTS = 434;
ATOM_AD_SERVICES_API_CALLED = 435;
ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED = 436;
ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED = 437;
ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED = 440;
ATOM_APP_BACKGROUND_RESTRICTIONS_INFO = 441;
ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED = 442;
ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED = 443;
ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED = 444;
ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED = 445;
ATOM_GNSS_PSDS_DOWNLOAD_REPORTED = 446;
ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED = 447;
ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED = 448;
ATOM_DREAM_UI_EVENT_REPORTED = 449;
ATOM_TASK_MANAGER_EVENT_REPORTED = 450;
ATOM_CDM_ASSOCIATION_ACTION = 451;
ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED = 452;
ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED = 453;
ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED = 454;
ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED = 455;
ATOM_UWB_DEVICE_ERROR_REPORTED = 456;
ATOM_ISOLATED_COMPILATION_SCHEDULED = 457;
ATOM_ISOLATED_COMPILATION_ENDED = 458;
ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE = 459;
ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED = 460;
ATOM_TELEPHONY_ANOMALY_DETECTED = 461;
ATOM_LETTERBOX_POSITION_CHANGED = 462;
ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT = 463;
ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO = 464;
ATOM_REMOTE_KEY_PROVISIONING_TIMING = 465;
ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT = 466;
ATOM_SYNC_EXEMPTION_OCCURRED = 468;
ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED = 469;
ATOM_DOCK_STATE_CHANGED = 470;
ATOM_SAFETY_SOURCE_STATE_COLLECTED = 471;
ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED = 472;
ATOM_SAFETY_CENTER_INTERACTION_REPORTED = 473;
ATOM_SETTINGS_PROVIDER_SETTING_CHANGED = 474;
ATOM_BROADCAST_DELIVERY_EVENT_REPORTED = 475;
ATOM_SERVICE_REQUEST_EVENT_REPORTED = 476;
ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED = 477;
ATOM_BLUETOOTH_DEVICE_NAME_REPORTED = 478;
ATOM_CB_CONFIG_UPDATED = 479;
ATOM_CB_MODULE_ERROR_REPORTED = 480;
ATOM_CB_SERVICE_FEATURE_CHANGED = 481;
ATOM_CB_RECEIVER_FEATURE_CHANGED = 482;
ATOM_JSSCRIPTENGINE_LATENCY_REPORTED = 483;
ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION = 484;
ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION = 485;
ATOM_PRIVACY_SIGNALS_JOB_FAILURE = 486;
ATOM_VIBRATION_REPORTED = 487;
ATOM_UWB_RANGING_START = 489;
ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED = 490;
ATOM_APP_COMPACTED_V2 = 491;
ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED = 493;
ATOM_DISPLAY_BRIGHTNESS_CHANGED = 494;
ATOM_ACTIVITY_ACTION_BLOCKED = 495;
ATOM_BACKGROUND_FETCH_PROCESS_REPORTED = 496;
ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED = 497;
ATOM_RUN_AD_BIDDING_PROCESS_REPORTED = 498;
ATOM_RUN_AD_SCORING_PROCESS_REPORTED = 499;
ATOM_RUN_AD_SELECTION_PROCESS_REPORTED = 500;
ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED = 501;
ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED = 502;
ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED = 503;
ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED = 504;
ATOM_VM_BOOTED = 505;
ATOM_VM_EXITED = 506;
ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED = 507;
ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED = 508;
ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED = 509;
ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED = 510;
ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED = 511;
ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS = 512;
ATOM_HEARING_AID_INFO_REPORTED = 513;
ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED = 514;
ATOM_AMBIENT_MODE_CHANGED = 515;
ATOM_ANR_LATENCY_REPORTED = 516;
ATOM_RESOURCE_API_INFO = 517;
ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED = 518;
ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED = 519;
ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED = 520;
ATOM_AIRPLANE_MODE_SESSION_REPORTED = 521;
ATOM_VM_CPU_STATUS_REPORTED = 522;
ATOM_VM_MEM_STATUS_REPORTED = 523;
ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED = 524;
ATOM_DEFAULT_NETWORK_REMATCH_INFO = 525;
ATOM_NETWORK_SELECTION_PERFORMANCE = 526;
ATOM_NETWORK_NSD_REPORTED = 527;
ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED = 529;
ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED = 530;
ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED = 531;
ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED = 532;
ATOM_BLUETOOTH_GATT_APP_INFO = 533;
ATOM_BRIGHTNESS_CONFIGURATION_UPDATED = 534;
ATOM_AD_SERVICES_GET_TOPICS_REPORTED = 535;
ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED = 536;
ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED = 537;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED = 538;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED = 539;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED = 540;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED = 541;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY = 542;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY = 543;
ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED = 544;
ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED = 545;
ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED = 546;
ATOM_LAUNCHER_IMPRESSION_EVENT = 547;
ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY = 549;
ATOM_WS_WATCH_FACE_EDITED = 551;
ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED = 552;
ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED = 553;
ATOM_PACKAGE_UNINSTALLATION_REPORTED = 554;
ATOM_GAME_MODE_CHANGED = 555;
ATOM_GAME_MODE_CONFIGURATION_CHANGED = 556;
ATOM_BEDTIME_MODE_STATE_CHANGED = 557;
ATOM_NETWORK_SLICE_SESSION_ENDED = 558;
ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED = 559;
ATOM_NFC_TAG_TYPE_OCCURRED = 560;
ATOM_NFC_AID_CONFLICT_OCCURRED = 561;
ATOM_NFC_READER_CONFLICT_OCCURRED = 562;
ATOM_WS_TILE_LIST_CHANGED = 563;
ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION = 564;
ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED = 566;
ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED = 567;
ATOM_MEDIA_DRM_CREATED = 568;
ATOM_MEDIA_DRM_ERRORED = 569;
ATOM_MEDIA_DRM_SESSION_OPENED = 570;
ATOM_MEDIA_DRM_SESSION_CLOSED = 571;
ATOM_USER_SELECTED_RESOLUTION = 572;
ATOM_UNSAFE_INTENT_EVENT_REPORTED = 573;
ATOM_PERFORMANCE_HINT_SESSION_REPORTED = 574;
ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED = 576;
ATOM_BIOMETRIC_TOUCH_REPORTED = 577;
ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED = 578;
ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED = 579;
ATOM_LOCATION_ENABLED_STATE_CHANGED = 580;
ATOM_IME_REQUEST_FINISHED = 581;
ATOM_USB_COMPLIANCE_WARNINGS_REPORTED = 582;
ATOM_APP_SUPPORTED_LOCALES_CHANGED = 583;
ATOM_GRAMMATICAL_INFLECTION_CHANGED = 584;
ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED = 586;
ATOM_BIOMETRIC_PROPERTIES_COLLECTED = 587;
ATOM_KERNEL_WAKEUP_ATTRIBUTED = 588;
ATOM_SCREEN_STATE_CHANGED_V2 = 589;
ATOM_WS_BACKUP_ACTION_REPORTED = 590;
ATOM_WS_RESTORE_ACTION_REPORTED = 591;
ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED = 592;
ATOM_MEDIA_SESSION_UPDATED = 594;
ATOM_WEAR_OOBE_STATE_CHANGED = 595;
ATOM_WS_NOTIFICATION_UPDATED = 596;
ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED = 601;
ATOM_WS_COMPLICATION_TAPPED = 602;
ATOM_WS_WEAR_TIME_SESSION = 610;
ATOM_WIFI_BYTES_TRANSFER = 10000;
ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG = 10001;
ATOM_MOBILE_BYTES_TRANSFER = 10002;
ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG = 10003;
ATOM_BLUETOOTH_BYTES_TRANSFER = 10006;
ATOM_KERNEL_WAKELOCK = 10004;
ATOM_SUBSYSTEM_SLEEP_STATE = 10005;
ATOM_CPU_TIME_PER_UID = 10009;
ATOM_CPU_TIME_PER_UID_FREQ = 10010;
ATOM_WIFI_ACTIVITY_INFO = 10011;
ATOM_MODEM_ACTIVITY_INFO = 10012;
ATOM_BLUETOOTH_ACTIVITY_INFO = 10007;
ATOM_PROCESS_MEMORY_STATE = 10013;
ATOM_SYSTEM_ELAPSED_REALTIME = 10014;
ATOM_SYSTEM_UPTIME = 10015;
ATOM_CPU_ACTIVE_TIME = 10016;
ATOM_CPU_CLUSTER_TIME = 10017;
ATOM_DISK_SPACE = 10018;
ATOM_REMAINING_BATTERY_CAPACITY = 10019;
ATOM_FULL_BATTERY_CAPACITY = 10020;
ATOM_TEMPERATURE = 10021;
ATOM_BINDER_CALLS = 10022;
ATOM_BINDER_CALLS_EXCEPTIONS = 10023;
ATOM_LOOPER_STATS = 10024;
ATOM_DISK_STATS = 10025;
ATOM_DIRECTORY_USAGE = 10026;
ATOM_APP_SIZE = 10027;
ATOM_CATEGORY_SIZE = 10028;
ATOM_PROC_STATS = 10029;
ATOM_BATTERY_VOLTAGE = 10030;
ATOM_NUM_FINGERPRINTS_ENROLLED = 10031;
ATOM_DISK_IO = 10032;
ATOM_POWER_PROFILE = 10033;
ATOM_PROC_STATS_PKG_PROC = 10034;
ATOM_PROCESS_CPU_TIME = 10035;
ATOM_CPU_TIME_PER_THREAD_FREQ = 10037;
ATOM_ON_DEVICE_POWER_MEASUREMENT = 10038;
ATOM_DEVICE_CALCULATED_POWER_USE = 10039;
ATOM_PROCESS_MEMORY_HIGH_WATER_MARK = 10042;
ATOM_BATTERY_LEVEL = 10043;
ATOM_BUILD_INFORMATION = 10044;
ATOM_BATTERY_CYCLE_COUNT = 10045;
ATOM_DEBUG_ELAPSED_CLOCK = 10046;
ATOM_DEBUG_FAILING_ELAPSED_CLOCK = 10047;
ATOM_NUM_FACES_ENROLLED = 10048;
ATOM_ROLE_HOLDER = 10049;
ATOM_DANGEROUS_PERMISSION_STATE = 10050;
ATOM_TRAIN_INFO = 10051;
ATOM_TIME_ZONE_DATA_INFO = 10052;
ATOM_EXTERNAL_STORAGE_INFO = 10053;
ATOM_GPU_STATS_GLOBAL_INFO = 10054;
ATOM_GPU_STATS_APP_INFO = 10055;
ATOM_SYSTEM_ION_HEAP_SIZE = 10056;
ATOM_APPS_ON_EXTERNAL_STORAGE_INFO = 10057;
ATOM_FACE_SETTINGS = 10058;
ATOM_COOLING_DEVICE = 10059;
ATOM_APP_OPS = 10060;
ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE = 10061;
ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO = 10062;
ATOM_SURFACEFLINGER_STATS_LAYER_INFO = 10063;
ATOM_PROCESS_MEMORY_SNAPSHOT = 10064;
ATOM_VMS_CLIENT_STATS = 10065;
ATOM_NOTIFICATION_REMOTE_VIEWS = 10066;
ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED = 10067;
ATOM_GRAPHICS_STATS = 10068;
ATOM_RUNTIME_APP_OP_ACCESS = 10069;
ATOM_ION_HEAP_SIZE = 10070;
ATOM_PACKAGE_NOTIFICATION_PREFERENCES = 10071;
ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES = 10072;
ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES = 10073;
ATOM_GNSS_STATS = 10074;
ATOM_ATTRIBUTED_APP_OPS = 10075;
ATOM_VOICE_CALL_SESSION = 10076;
ATOM_VOICE_CALL_RAT_USAGE = 10077;
ATOM_SIM_SLOT_STATE = 10078;
ATOM_SUPPORTED_RADIO_ACCESS_FAMILY = 10079;
ATOM_SETTING_SNAPSHOT = 10080;
ATOM_BLOB_INFO = 10081;
ATOM_DATA_USAGE_BYTES_TRANSFER = 10082;
ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED = 10083;
ATOM_DND_MODE_RULE = 10084;
ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS = 10085;
ATOM_INCOMING_SMS = 10086;
ATOM_OUTGOING_SMS = 10087;
ATOM_CARRIER_ID_TABLE_VERSION = 10088;
ATOM_DATA_CALL_SESSION = 10089;
ATOM_CELLULAR_SERVICE_STATE = 10090;
ATOM_CELLULAR_DATA_SERVICE_SWITCH = 10091;
ATOM_SYSTEM_MEMORY = 10092;
ATOM_IMS_REGISTRATION_TERMINATION = 10093;
ATOM_IMS_REGISTRATION_STATS = 10094;
ATOM_CPU_TIME_PER_CLUSTER_FREQ = 10095;
ATOM_CPU_CYCLES_PER_UID_CLUSTER = 10096;
ATOM_DEVICE_ROTATED_DATA = 10097;
ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER = 10098;
ATOM_MEDIA_DRM_ACTIVITY_INFO = 10099;
ATOM_OEM_MANAGED_BYTES_TRANSFER = 10100;
ATOM_GNSS_POWER_STATS = 10101;
ATOM_TIME_ZONE_DETECTOR_STATE = 10102;
ATOM_KEYSTORE2_STORAGE_STATS = 10103;
ATOM_RKP_POOL_STATS = 10104;
ATOM_PROCESS_DMABUF_MEMORY = 10105;
ATOM_PENDING_ALARM_INFO = 10106;
ATOM_USER_LEVEL_HIBERNATED_APPS = 10107;
ATOM_LAUNCHER_LAYOUT_SNAPSHOT = 10108;
ATOM_GLOBAL_HIBERNATED_APPS = 10109;
ATOM_INPUT_EVENT_LATENCY_SKETCH = 10110;
ATOM_BATTERY_USAGE_STATS_BEFORE_RESET = 10111;
ATOM_BATTERY_USAGE_STATS_SINCE_RESET = 10112;
ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL = 10113;
ATOM_INSTALLED_INCREMENTAL_PACKAGE = 10114;
ATOM_TELEPHONY_NETWORK_REQUESTS = 10115;
ATOM_APP_SEARCH_STORAGE_INFO = 10116;
ATOM_VMSTAT = 10117;
ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO = 10118;
ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO = 10119;
ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO = 10120;
ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW = 10121;
ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO = 10122;
ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO = 10123;
ATOM_RKP_ERROR_STATS = 10124;
ATOM_KEYSTORE2_CRASH_STATS = 10125;
ATOM_VENDOR_APEX_INFO = 10126;
ATOM_ACCESSIBILITY_SHORTCUT_STATS = 10127;
ATOM_ACCESSIBILITY_FLOATING_MENU_STATS = 10128;
ATOM_DATA_USAGE_BYTES_TRANSFER_V2 = 10129;
ATOM_MEDIA_CAPABILITIES = 10130;
ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY = 10131;
ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY = 10132;
ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS = 10133;
ATOM_RCS_CLIENT_PROVISIONING_STATS = 10134;
ATOM_RCS_ACS_PROVISIONING_STATS = 10135;
ATOM_SIP_DELEGATE_STATS = 10136;
ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS = 10137;
ATOM_SIP_MESSAGE_RESPONSE = 10138;
ATOM_SIP_TRANSPORT_SESSION = 10139;
ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT = 10140;
ATOM_IMS_DEDICATED_BEARER_EVENT = 10141;
ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS = 10142;
ATOM_UCE_EVENT_STATS = 10143;
ATOM_PRESENCE_NOTIFY_EVENT = 10144;
ATOM_GBA_EVENT = 10145;
ATOM_PER_SIM_STATUS = 10146;
ATOM_GPU_WORK_PER_UID = 10147;
ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE = 10148;
ATOM_SIGNED_PARTITION_INFO = 10149;
ATOM_PINNED_FILE_SIZES_PER_PACKAGE = 10150;
ATOM_PENDING_INTENTS_PER_PACKAGE = 10151;
ATOM_USER_INFO = 10152;
ATOM_TELEPHONY_NETWORK_REQUESTS_V2 = 10153;
ATOM_DEVICE_TELEPHONY_PROPERTIES = 10154;
ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS = 10155;
ATOM_SAFETY_STATE = 10156;
ATOM_INCOMING_MMS = 10157;
ATOM_OUTGOING_MMS = 10158;
ATOM_MULTI_USER_INFO = 10160;
ATOM_NETWORK_BPF_MAP_INFO = 10161;
ATOM_OUTGOING_SHORT_CODE_SMS = 10162;
ATOM_CONNECTIVITY_STATE_SAMPLE = 10163;
ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO = 10164;
ATOM_GAME_MODE_INFO = 10165;
ATOM_GAME_MODE_CONFIGURATION = 10166;
ATOM_GAME_MODE_LISTENER = 10167;
ATOM_NETWORK_SLICE_REQUEST_COUNT = 10168;
ATOM_WS_TILE_SNAPSHOT = 10169;
ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT = 10170;
ATOM_PROCESS_STATE = 10171;
ATOM_PROCESS_ASSOCIATION = 10172;
ATOM_ADPF_SYSTEM_COMPONENT_INFO = 10173;
ATOM_NOTIFICATION_MEMORY_USE = 10174;
ATOM_HDR_CAPABILITIES = 10175;
ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT = 10176;
ATOM_WIFI_AWARE_NDP_REPORTED = 638;
ATOM_WIFI_AWARE_ATTACH_REPORTED = 639;
ATOM_WIFI_SELF_RECOVERY_TRIGGERED = 661;
ATOM_SOFT_AP_STARTED = 680;
ATOM_SOFT_AP_STOPPED = 681;
ATOM_WIFI_LOCK_RELEASED = 687;
ATOM_WIFI_LOCK_DEACTIVATED = 688;
ATOM_WIFI_CONFIG_SAVED = 689;
ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED = 690;
ATOM_WIFI_AWARE_HAL_API_CALLED = 691;
ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED = 692;
ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED = 693;
ATOM_WIFI_THREAD_TASK_EXECUTED = 694;
ATOM_WIFI_STATE_CHANGED = 700;
ATOM_WIFI_AWARE_CAPABILITIES = 10190;
ATOM_WIFI_MODULE_INFO = 10193;
ATOM_SETTINGS_SPA_REPORTED = 622;
ATOM_EXPRESS_EVENT_REPORTED = 528;
ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED = 593;
ATOM_EXPRESS_UID_EVENT_REPORTED = 644;
ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED = 658;
ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED = 645;
ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED = 646;
ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION = 647;
ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED = 648;
ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED = 649;
ATOM_WS_INCOMING_CALL_ACTION_REPORTED = 626;
ATOM_WS_CALL_DISCONNECTION_REPORTED = 627;
ATOM_WS_CALL_DURATION_REPORTED = 628;
ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED = 629;
ATOM_WS_CALL_INTERACTION_REPORTED = 630;
ATOM_FULL_SCREEN_INTENT_LAUNCHED = 631;
ATOM_BAL_ALLOWED = 632;
ATOM_IN_TASK_ACTIVITY_STARTED = 685;
ATOM_CACHED_APPS_HIGH_WATERMARK = 10189;
ATOM_ODREFRESH_REPORTED = 366;
ATOM_ODSIGN_REPORTED = 548;
ATOM_ART_DATUM_REPORTED = 332;
ATOM_ART_DEVICE_DATUM_REPORTED = 550;
ATOM_ART_DATUM_DELTA_REPORTED = 565;
ATOM_BACKGROUND_DEXOPT_JOB_ENDED = 467;
ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED = 619;
ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED = 620;
ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED = 621;
ATOM_EMERGENCY_STATE_CHANGED = 633;
ATOM_DND_STATE_CHANGED = 657;
ATOM_MTE_STATE = 10181;
ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED = 598;
ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED = 599;
ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS = 640;
ATOM_AD_SERVICES_ERROR_REPORTED = 662;
ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED = 663;
ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION = 673;
ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION = 674;
ATOM_AD_SERVICES_MEASUREMENT_JOBS = 675;
ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT = 676;
ATOM_AD_SERVICES_CONSENT_MIGRATED = 702;
ATOM_RKPD_POOL_STATS = 664;
ATOM_RKPD_CLIENT_OPERATION = 665;
ATOM_AUTOFILL_UI_EVENT_REPORTED = 603;
ATOM_AUTOFILL_FILL_REQUEST_REPORTED = 604;
ATOM_AUTOFILL_FILL_RESPONSE_REPORTED = 605;
ATOM_AUTOFILL_SAVE_EVENT_REPORTED = 606;
ATOM_AUTOFILL_SESSION_COMMITTED = 607;
ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED = 659;
ATOM_TEST_EXTENSION_ATOM_REPORTED = 660;
ATOM_TEST_RESTRICTED_ATOM_REPORTED = 672;
ATOM_STATS_SOCKET_LOSS_REPORTED = 752;
ATOM_PLUGIN_INITIALIZED = 655;
ATOM_TV_LOW_POWER_STANDBY_POLICY = 679;
ATOM_LOCKSCREEN_SHORTCUT_SELECTED = 611;
ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED = 612;
ATOM_EMERGENCY_NUMBERS_INFO = 10180;
ATOM_QUALIFIED_RAT_LIST_CHANGED = 634;
ATOM_QNS_IMS_CALL_DROP_STATS = 635;
ATOM_QNS_FALLBACK_RESTRICTION_CHANGED = 636;
ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO = 10177;
ATOM_QNS_HANDOVER_TIME_MILLIS = 10178;
ATOM_QNS_HANDOVER_PINGPONG = 10179;
ATOM_SATELLITE_CONTROLLER = 10182;
ATOM_SATELLITE_SESSION = 10183;
ATOM_SATELLITE_INCOMING_DATAGRAM = 10184;
ATOM_SATELLITE_OUTGOING_DATAGRAM = 10185;
ATOM_SATELLITE_PROVISION = 10186;
ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER = 10187;
ATOM_IKE_SESSION_TERMINATED = 678;
ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED = 760;
ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED = 613;
ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION = 614;
ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION = 615;
ATOM_BLUETOOTH_LE_SESSION_CONNECTED = 656;
ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED = 666;
ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED = 696;
ATOM_HEALTH_CONNECT_UI_IMPRESSION = 623;
ATOM_HEALTH_CONNECT_UI_INTERACTION = 624;
ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED = 625;
ATOM_HEALTH_CONNECT_API_CALLED = 616;
ATOM_HEALTH_CONNECT_USAGE_STATS = 617;
ATOM_HEALTH_CONNECT_STORAGE_STATS = 618;
ATOM_HEALTH_CONNECT_API_INVOKED = 643;
ATOM_EXERCISE_ROUTE_API_CALLED = 654;
ATOM_ATOM_9999 = 9999;
ATOM_ATOM_99999 = 99999;
ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED = 738;
ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED = 739;
ATOM_THREADNETWORK_DEVICE_INFO_REPORTED = 740;
ATOM_EMERGENCY_NUMBER_DIALED = 637;
ATOM_SANDBOX_API_CALLED = 488;
ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED = 735;
ATOM_SANDBOX_SDK_STORAGE = 10159;
ATOM_CRONET_ENGINE_CREATED = 703;
ATOM_CRONET_TRAFFIC_REPORTED = 704;
ATOM_CRONET_ENGINE_BUILDER_INITIALIZED = 762;
ATOM_CRONET_HTTP_FLAGS_INITIALIZED = 763;
ATOM_CRONET_INITIALIZED = 764;
ATOM_DAILY_KEEPALIVE_INFO_REPORTED = 650;
ATOM_IP_CLIENT_RA_INFO_REPORTED = 778;
ATOM_APF_SESSION_INFO_REPORTED = 777;
ATOM_CREDENTIAL_MANAGER_API_CALLED = 585;
ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED = 651;
ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED = 652;
ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED = 653;
ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED = 667;
ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED = 668;
ATOM_CREDENTIAL_MANAGER_GET_REPORTED = 669;
ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED = 670;
ATOM_CREDENTIAL_MANAGER_APIV2_CALLED = 671;
ATOM_UWB_ACTIVITY_INFO = 10188;
ATOM_MEDIA_ACTION_REPORTED = 608;
ATOM_MEDIA_CONTROLS_LAUNCHED = 609;
ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED = 600;
ATOM_MEDIA_CODEC_STARTED = 641;
ATOM_MEDIA_CODEC_STOPPED = 642;
ATOM_MEDIA_CODEC_RENDERED = 684;
}
// End of protos/perfetto/config/statsd/atom_ids.proto
// Begin of protos/perfetto/config/statsd/statsd_tracing_config.proto
// 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.
message StatsdTracingConfig {
// This is for the common case of the atom id being known in the enum AtomId.
repeated AtomId push_atom_id = 1;
// Escape hatch for Atom IDs that are not yet in the AtomId enum
// (e.g. non-upstream atoms that don't exist in AOSP).
repeated int32 raw_push_atom_id = 2;
repeated StatsdPullAtomConfig pull_config = 3;
}
message StatsdPullAtomConfig {
repeated AtomId pull_atom_id = 1;
repeated int32 raw_pull_atom_id = 2;
optional int32 pull_frequency_ms = 3;
repeated string packages = 4;
}
// End of protos/perfetto/config/statsd/statsd_tracing_config.proto
// Begin of protos/perfetto/common/sys_stats_counters.proto
// When editing entries here remember also to update "sys_stats_counters.h" with
// the corresponding string definitions for the actual /proc files parser.
// Counter definitions for Linux's /proc/meminfo.
enum MeminfoCounters {
MEMINFO_UNSPECIFIED = 0;
MEMINFO_MEM_TOTAL = 1;
MEMINFO_MEM_FREE = 2;
MEMINFO_MEM_AVAILABLE = 3;
MEMINFO_BUFFERS = 4;
MEMINFO_CACHED = 5;
MEMINFO_SWAP_CACHED = 6;
MEMINFO_ACTIVE = 7;
MEMINFO_INACTIVE = 8;
MEMINFO_ACTIVE_ANON = 9;
MEMINFO_INACTIVE_ANON = 10;
MEMINFO_ACTIVE_FILE = 11;
MEMINFO_INACTIVE_FILE = 12;
MEMINFO_UNEVICTABLE = 13;
MEMINFO_MLOCKED = 14;
MEMINFO_SWAP_TOTAL = 15;
MEMINFO_SWAP_FREE = 16;
MEMINFO_DIRTY = 17;
MEMINFO_WRITEBACK = 18;
MEMINFO_ANON_PAGES = 19;
MEMINFO_MAPPED = 20;
MEMINFO_SHMEM = 21;
MEMINFO_SLAB = 22;
MEMINFO_SLAB_RECLAIMABLE = 23;
MEMINFO_SLAB_UNRECLAIMABLE = 24;
MEMINFO_KERNEL_STACK = 25;
MEMINFO_PAGE_TABLES = 26;
MEMINFO_COMMIT_LIMIT = 27;
MEMINFO_COMMITED_AS = 28;
MEMINFO_VMALLOC_TOTAL = 29;
MEMINFO_VMALLOC_USED = 30;
MEMINFO_VMALLOC_CHUNK = 31;
MEMINFO_CMA_TOTAL = 32;
MEMINFO_CMA_FREE = 33;
}
// Counter definitions for Linux's /proc/vmstat.
enum VmstatCounters {
VMSTAT_UNSPECIFIED = 0;
VMSTAT_NR_FREE_PAGES = 1;
VMSTAT_NR_ALLOC_BATCH = 2;
VMSTAT_NR_INACTIVE_ANON = 3;
VMSTAT_NR_ACTIVE_ANON = 4;
VMSTAT_NR_INACTIVE_FILE = 5;
VMSTAT_NR_ACTIVE_FILE = 6;
VMSTAT_NR_UNEVICTABLE = 7;
VMSTAT_NR_MLOCK = 8;
VMSTAT_NR_ANON_PAGES = 9;
VMSTAT_NR_MAPPED = 10;
VMSTAT_NR_FILE_PAGES = 11;
VMSTAT_NR_DIRTY = 12;
VMSTAT_NR_WRITEBACK = 13;
VMSTAT_NR_SLAB_RECLAIMABLE = 14;
VMSTAT_NR_SLAB_UNRECLAIMABLE = 15;
VMSTAT_NR_PAGE_TABLE_PAGES = 16;
VMSTAT_NR_KERNEL_STACK = 17;
VMSTAT_NR_OVERHEAD = 18;
VMSTAT_NR_UNSTABLE = 19;
VMSTAT_NR_BOUNCE = 20;
VMSTAT_NR_VMSCAN_WRITE = 21;
VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM = 22;
VMSTAT_NR_WRITEBACK_TEMP = 23;
VMSTAT_NR_ISOLATED_ANON = 24;
VMSTAT_NR_ISOLATED_FILE = 25;
VMSTAT_NR_SHMEM = 26;
VMSTAT_NR_DIRTIED = 27;
VMSTAT_NR_WRITTEN = 28;
VMSTAT_NR_PAGES_SCANNED = 29;
VMSTAT_WORKINGSET_REFAULT = 30;
VMSTAT_WORKINGSET_ACTIVATE = 31;
VMSTAT_WORKINGSET_NODERECLAIM = 32;
VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES = 33;
VMSTAT_NR_FREE_CMA = 34;
VMSTAT_NR_SWAPCACHE = 35;
VMSTAT_NR_DIRTY_THRESHOLD = 36;
VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD = 37;
VMSTAT_PGPGIN = 38;
VMSTAT_PGPGOUT = 39;
VMSTAT_PGPGOUTCLEAN = 40;
VMSTAT_PSWPIN = 41;
VMSTAT_PSWPOUT = 42;
VMSTAT_PGALLOC_DMA = 43;
VMSTAT_PGALLOC_NORMAL = 44;
VMSTAT_PGALLOC_MOVABLE = 45;
VMSTAT_PGFREE = 46;
VMSTAT_PGACTIVATE = 47;
VMSTAT_PGDEACTIVATE = 48;
VMSTAT_PGFAULT = 49;
VMSTAT_PGMAJFAULT = 50;
VMSTAT_PGREFILL_DMA = 51;
VMSTAT_PGREFILL_NORMAL = 52;
VMSTAT_PGREFILL_MOVABLE = 53;
VMSTAT_PGSTEAL_KSWAPD_DMA = 54;
VMSTAT_PGSTEAL_KSWAPD_NORMAL = 55;
VMSTAT_PGSTEAL_KSWAPD_MOVABLE = 56;
VMSTAT_PGSTEAL_DIRECT_DMA = 57;
VMSTAT_PGSTEAL_DIRECT_NORMAL = 58;
VMSTAT_PGSTEAL_DIRECT_MOVABLE = 59;
VMSTAT_PGSCAN_KSWAPD_DMA = 60;
VMSTAT_PGSCAN_KSWAPD_NORMAL = 61;
VMSTAT_PGSCAN_KSWAPD_MOVABLE = 62;
VMSTAT_PGSCAN_DIRECT_DMA = 63;
VMSTAT_PGSCAN_DIRECT_NORMAL = 64;
VMSTAT_PGSCAN_DIRECT_MOVABLE = 65;
VMSTAT_PGSCAN_DIRECT_THROTTLE = 66;
VMSTAT_PGINODESTEAL = 67;
VMSTAT_SLABS_SCANNED = 68;
VMSTAT_KSWAPD_INODESTEAL = 69;
VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY = 70;
VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY = 71;
VMSTAT_PAGEOUTRUN = 72;
VMSTAT_ALLOCSTALL = 73;
VMSTAT_PGROTATED = 74;
VMSTAT_DROP_PAGECACHE = 75;
VMSTAT_DROP_SLAB = 76;
VMSTAT_PGMIGRATE_SUCCESS = 77;
VMSTAT_PGMIGRATE_FAIL = 78;
VMSTAT_COMPACT_MIGRATE_SCANNED = 79;
VMSTAT_COMPACT_FREE_SCANNED = 80;
VMSTAT_COMPACT_ISOLATED = 81;
VMSTAT_COMPACT_STALL = 82;
VMSTAT_COMPACT_FAIL = 83;
VMSTAT_COMPACT_SUCCESS = 84;
VMSTAT_COMPACT_DAEMON_WAKE = 85;
VMSTAT_UNEVICTABLE_PGS_CULLED = 86;
VMSTAT_UNEVICTABLE_PGS_SCANNED = 87;
VMSTAT_UNEVICTABLE_PGS_RESCUED = 88;
VMSTAT_UNEVICTABLE_PGS_MLOCKED = 89;
VMSTAT_UNEVICTABLE_PGS_MUNLOCKED = 90;
VMSTAT_UNEVICTABLE_PGS_CLEARED = 91;
VMSTAT_UNEVICTABLE_PGS_STRANDED = 92;
VMSTAT_NR_ZSPAGES = 93;
VMSTAT_NR_ION_HEAP = 94;
VMSTAT_NR_GPU_HEAP = 95;
VMSTAT_ALLOCSTALL_DMA = 96;
VMSTAT_ALLOCSTALL_MOVABLE = 97;
VMSTAT_ALLOCSTALL_NORMAL = 98;
VMSTAT_COMPACT_DAEMON_FREE_SCANNED = 99;
VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED = 100;
VMSTAT_NR_FASTRPC = 101;
VMSTAT_NR_INDIRECTLY_RECLAIMABLE = 102;
VMSTAT_NR_ION_HEAP_POOL = 103;
VMSTAT_NR_KERNEL_MISC_RECLAIMABLE = 104;
VMSTAT_NR_SHADOW_CALL_STACK_BYTES = 105;
VMSTAT_NR_SHMEM_HUGEPAGES = 106;
VMSTAT_NR_SHMEM_PMDMAPPED = 107;
VMSTAT_NR_UNRECLAIMABLE_PAGES = 108;
VMSTAT_NR_ZONE_ACTIVE_ANON = 109;
VMSTAT_NR_ZONE_ACTIVE_FILE = 110;
VMSTAT_NR_ZONE_INACTIVE_ANON = 111;
VMSTAT_NR_ZONE_INACTIVE_FILE = 112;
VMSTAT_NR_ZONE_UNEVICTABLE = 113;
VMSTAT_NR_ZONE_WRITE_PENDING = 114;
VMSTAT_OOM_KILL = 115;
VMSTAT_PGLAZYFREE = 116;
VMSTAT_PGLAZYFREED = 117;
VMSTAT_PGREFILL = 118;
VMSTAT_PGSCAN_DIRECT = 119;
VMSTAT_PGSCAN_KSWAPD = 120;
VMSTAT_PGSKIP_DMA = 121;
VMSTAT_PGSKIP_MOVABLE = 122;
VMSTAT_PGSKIP_NORMAL = 123;
VMSTAT_PGSTEAL_DIRECT = 124;
VMSTAT_PGSTEAL_KSWAPD = 125;
VMSTAT_SWAP_RA = 126;
VMSTAT_SWAP_RA_HIT = 127;
VMSTAT_WORKINGSET_RESTORE = 128;
VMSTAT_ALLOCSTALL_DEVICE = 129;
VMSTAT_ALLOCSTALL_DMA32 = 130;
VMSTAT_BALLOON_DEFLATE = 131;
VMSTAT_BALLOON_INFLATE = 132;
VMSTAT_BALLOON_MIGRATE = 133;
VMSTAT_CMA_ALLOC_FAIL = 134;
VMSTAT_CMA_ALLOC_SUCCESS = 135;
VMSTAT_NR_FILE_HUGEPAGES = 136;
VMSTAT_NR_FILE_PMDMAPPED = 137;
VMSTAT_NR_FOLL_PIN_ACQUIRED = 138;
VMSTAT_NR_FOLL_PIN_RELEASED = 139;
VMSTAT_NR_SEC_PAGE_TABLE_PAGES = 140;
VMSTAT_NR_SHADOW_CALL_STACK = 141;
VMSTAT_NR_SWAPCACHED = 142;
VMSTAT_NR_THROTTLED_WRITTEN = 143;
VMSTAT_PGALLOC_DEVICE = 144;
VMSTAT_PGALLOC_DMA32 = 145;
VMSTAT_PGDEMOTE_DIRECT = 146;
VMSTAT_PGDEMOTE_KSWAPD = 147;
VMSTAT_PGREUSE = 148;
VMSTAT_PGSCAN_ANON = 149;
VMSTAT_PGSCAN_FILE = 150;
VMSTAT_PGSKIP_DEVICE = 151;
VMSTAT_PGSKIP_DMA32 = 152;
VMSTAT_PGSTEAL_ANON = 153;
VMSTAT_PGSTEAL_FILE = 154;
VMSTAT_THP_COLLAPSE_ALLOC = 155;
VMSTAT_THP_COLLAPSE_ALLOC_FAILED = 156;
VMSTAT_THP_DEFERRED_SPLIT_PAGE = 157;
VMSTAT_THP_FAULT_ALLOC = 158;
VMSTAT_THP_FAULT_FALLBACK = 159;
VMSTAT_THP_FAULT_FALLBACK_CHARGE = 160;
VMSTAT_THP_FILE_ALLOC = 161;
VMSTAT_THP_FILE_FALLBACK = 162;
VMSTAT_THP_FILE_FALLBACK_CHARGE = 163;
VMSTAT_THP_FILE_MAPPED = 164;
VMSTAT_THP_MIGRATION_FAIL = 165;
VMSTAT_THP_MIGRATION_SPLIT = 166;
VMSTAT_THP_MIGRATION_SUCCESS = 167;
VMSTAT_THP_SCAN_EXCEED_NONE_PTE = 168;
VMSTAT_THP_SCAN_EXCEED_SHARE_PTE = 169;
VMSTAT_THP_SCAN_EXCEED_SWAP_PTE = 170;
VMSTAT_THP_SPLIT_PAGE = 171;
VMSTAT_THP_SPLIT_PAGE_FAILED = 172;
VMSTAT_THP_SPLIT_PMD = 173;
VMSTAT_THP_SWPOUT = 174;
VMSTAT_THP_SWPOUT_FALLBACK = 175;
VMSTAT_THP_ZERO_PAGE_ALLOC = 176;
VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED = 177;
VMSTAT_VMA_LOCK_ABORT = 178;
VMSTAT_VMA_LOCK_MISS = 179;
VMSTAT_VMA_LOCK_RETRY = 180;
VMSTAT_VMA_LOCK_SUCCESS = 181;
VMSTAT_WORKINGSET_ACTIVATE_ANON = 182;
VMSTAT_WORKINGSET_ACTIVATE_FILE = 183;
VMSTAT_WORKINGSET_NODES = 184;
VMSTAT_WORKINGSET_REFAULT_ANON = 185;
VMSTAT_WORKINGSET_REFAULT_FILE = 186;
VMSTAT_WORKINGSET_RESTORE_ANON = 187;
VMSTAT_WORKINGSET_RESTORE_FILE = 188;
}
// End of protos/perfetto/common/sys_stats_counters.proto
// Begin of protos/perfetto/config/sys_stats/sys_stats_config.proto
// 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]
message 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]
optional uint32 meminfo_period_ms = 1;
// If empty all known counters are reported. Otherwise, only the counters
// specified below are reported.
repeated MeminfoCounters meminfo_counters = 2;
// 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]
optional uint32 vmstat_period_ms = 3;
repeated VmstatCounters vmstat_counters = 4;
// 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]
optional uint32 stat_period_ms = 5;
enum StatCounters {
STAT_UNSPECIFIED = 0;
STAT_CPU_TIMES = 1;
STAT_IRQ_COUNTS = 2;
STAT_SOFTIRQ_COUNTS = 3;
STAT_FORK_COUNT = 4;
}
repeated StatCounters stat_counters = 6;
// 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.
optional uint32 devfreq_period_ms = 7;
// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
// This is required to be > 10ms to avoid excessive CPU usage.
optional uint32 cpufreq_period_ms = 8;
// Polls /proc/buddyinfo every X ms, if non-zero.
// This is required to be > 10ms to avoid excessive CPU usage.
optional uint32 buddyinfo_period_ms = 9;
// Polls /proc/diskstats every X ms, if non-zero.
// This is required to be > 10ms to avoid excessive CPU usage.
optional uint32 diskstat_period_ms = 10;
// Polls /proc/pressure/* every X ms, if non-zero.
// This is required to be > 10ms to avoid excessive CPU usage.
optional uint32 psi_period_ms = 11;
}
// End of protos/perfetto/config/sys_stats/sys_stats_config.proto
// Begin of protos/perfetto/config/system_info/system_info.proto
// 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.
message SystemInfoConfig {}
// End of protos/perfetto/config/system_info/system_info.proto
// Begin of protos/perfetto/config/test_config.proto
// The configuration for a fake producer used in tests.
message TestConfig {
message DummyFields {
optional uint32 field_uint32 = 1;
optional int32 field_int32 = 2;
optional uint64 field_uint64 = 3;
optional int64 field_int64 = 4;
optional fixed64 field_fixed64 = 5;
optional sfixed64 field_sfixed64 = 6;
optional fixed32 field_fixed32 = 7;
optional sfixed32 field_sfixed32 = 8;
optional double field_double = 9;
optional float field_float = 10;
optional sint64 field_sint64 = 11;
optional sint32 field_sint32 = 12;
optional string field_string = 13;
optional bytes field_bytes = 14;
}
// The number of messages the fake producer should send.
optional uint32 message_count = 1;
// 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.
optional uint32 max_messages_per_second = 2;
// The seed value for a simple multiplicative congruential pseudo-random
// number sequence.
optional uint32 seed = 3;
// 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.
optional uint32 message_size = 4;
// Whether the producer should send a event batch when the data source is
// is initially registered.
optional bool send_batch_on_register = 5;
optional DummyFields dummy_fields = 6;
}
// End of protos/perfetto/config/test_config.proto
// Begin of protos/perfetto/config/track_event/track_event_config.proto
message TrackEventConfig {
// 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, the category is enabled by default.
//
// Examples:
//
// - To enable all non-slow/debug categories:
//
// No configuration needed, happens by default.
//
// - To enable a specific category:
//
// disabled_categories = ["*"]
// enabled_categories = ["my_category"]
//
// - To enable only categories with a specific tag:
//
// disabled_tags = ["*"]
// enabled_tags = ["my_tag"]
//
// Default: []
repeated string disabled_categories = 1;
// Default: []
repeated string enabled_categories = 2;
// Default: ["slow", "debug"]
repeated string disabled_tags = 3;
// Default: []
repeated string enabled_tags = 4;
// Default: false (i.e. enabled by default)
optional bool disable_incremental_timestamps = 5;
// 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).
optional uint64 timestamp_unit_multiplier = 6;
// 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.
optional bool filter_debug_annotations = 7;
// 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
optional bool enable_thread_time_sampling = 8;
// 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.
optional bool filter_dynamic_event_names = 9;
}
// End of protos/perfetto/config/track_event/track_event_config.proto
// Begin of protos/perfetto/config/data_source_config.proto
// The configuration that is passed to each data source when starting tracing.
// Next id: 127
message DataSourceConfig {
enum SessionInitiator {
SESSION_INITIATOR_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.
SESSION_INITIATOR_TRUSTED_SYSTEM = 1;
};
// Data source unique name, e.g., "linux.ftrace". This must match
// the name passed by the data source when it registers (see
// RegisterDataSource()).
optional string name = 1;
// 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.
optional uint32 target_buffer = 2;
// Set by the service to indicate the duration of the trace.
// DO NOT SET in consumer as this will be overridden by the service.
optional uint32 trace_duration_ms = 3;
// If true, |trace_duration_ms| should count also time in suspend. This
// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
optional bool prefer_suspend_clock_for_duration = 122;
// 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.
optional uint32 stop_timeout_ms = 7;
// 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.
optional bool enable_extra_guardrails = 6;
// Set by the service to indicate which user initiated this trace.
// DO NOT SET in consumer as this will be overridden by the service.
optional SessionInitiator session_initiator = 8;
// 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.
optional uint64 tracing_session_id = 4;
// Keeep the lower IDs (up to 99) for fields that are *not* specific to
// data-sources and needs to be processed by the traced daemon.
// All data source config fields must be marked as [lazy=true]. This prevents
// the proto-to-cpp generator from recursing into those when generating the
// cpp classes and polluting tracing/core with data-source-specific classes.
// Instead they are treated as opaque strings containing raw proto bytes.
// Data source name: linux.ftrace
optional FtraceConfig ftrace_config = 100 [lazy = true];
// Data source name: linux.inode_file_map
optional InodeFileConfig inode_file_config = 102 [lazy = true];
// Data source name: linux.process_stats
optional ProcessStatsConfig process_stats_config = 103 [lazy = true];
// Data source name: linux.sys_stats
optional SysStatsConfig sys_stats_config = 104 [lazy = true];
// Data source name: android.heapprofd
// Introduced in Android 10.
optional HeapprofdConfig heapprofd_config = 105 [lazy = true];
// Data source name: android.java_hprof
// Introduced in Android 11.
optional JavaHprofConfig java_hprof_config = 110 [lazy = true];
// Data source name: android.power
optional AndroidPowerConfig android_power_config = 106 [lazy = true];
// Data source name: android.log
optional AndroidLogConfig android_log_config = 107 [lazy = true];
// TODO(fmayer): Add data source name for this.
optional GpuCounterConfig gpu_counter_config = 108 [lazy = true];
// Data source name: android.game_interventions
optional AndroidGameInterventionListConfig
android_game_intervention_list_config = 116 [lazy = true];
// Data source name: android.packages_list
optional PackagesListConfig packages_list_config = 109 [lazy = true];
// Data source name: linux.perf
optional PerfEventConfig perf_event_config = 111 [lazy = true];
// Data source name: vulkan.memory_tracker
optional VulkanMemoryConfig vulkan_memory_config = 112 [lazy = true];
// Data source name: track_event
optional TrackEventConfig track_event_config = 113 [lazy = true];
// Data source name: android.polled_state
optional AndroidPolledStateConfig android_polled_state_config = 114
[lazy = true];
// Data source name: android.system_property
optional AndroidSystemPropertyConfig android_system_property_config = 118
[lazy = true];
// Data source name: android.statsd
optional StatsdTracingConfig statsd_tracing_config = 117 [lazy = true];
// Data source name: linux.system_info
optional SystemInfoConfig system_info_config = 119;
// 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.
optional ChromeConfig chrome_config = 101;
// Data source name: code.v8.dev
optional V8Config v8_config = 127 [lazy = true];
// 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.
optional InterceptorConfig interceptor_config = 115;
// Data source name: android.network_packets.
// Introduced in Android 14 (U).
optional NetworkPacketTraceConfig network_packet_trace_config = 120
[lazy = true];
// Data source name: android.surfaceflinger.layers
optional SurfaceFlingerLayersConfig surfaceflinger_layers_config = 121
[lazy = true];
// Data source name: android.surfaceflinger.transactions
optional SurfaceFlingerTransactionsConfig surfaceflinger_transactions_config =
123 [lazy = true];
// Data source name: android.sdk_sysprop_guard
// Introduced in Android 14 (U) QPR1.
optional AndroidSdkSyspropGuardConfig android_sdk_sysprop_guard_config = 124
[lazy = true];
// Data source name: windows.etw
optional EtwConfig etw_config = 125 [lazy = true];
// Data source name: android.protolog
optional ProtoLogConfig protolog_config = 126 [lazy = true];
// 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.
optional string legacy_config = 1000;
// This field is only used for testing.
optional TestConfig for_testing = 1001;
// Was |for_testing|. Caused more problems then found.
reserved 268435455;
}
// End of protos/perfetto/config/data_source_config.proto
// Begin of protos/perfetto/config/trace_config.proto
// 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: 39.