Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 145 additions & 2 deletions Android.bp

Large diffs are not rendered by default.

71 changes: 70 additions & 1 deletion BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -461,6 +461,8 @@ perfetto_cc_library(
":src_trace_processor_plugins_ancestor_tables",
":src_trace_processor_plugins_android_framework_track_event_android_framework_track_event",
":src_trace_processor_plugins_android_framework_track_event_tables",
":src_trace_processor_plugins_android_process_state_android_process_state",
":src_trace_processor_plugins_android_process_state_tables",
":src_trace_processor_plugins_args_args",
":src_trace_processor_plugins_art_heap_graph_functions_art_heap_graph_functions",
":src_trace_processor_plugins_art_process_metadata_importer_art_process_metadata_importer",
Expand Down Expand Up @@ -655,6 +657,7 @@ perfetto_cc_library(
":protos_perfetto_trace_translation_zero",
":protos_third_party_android_art_art_heap_graph_zero",
":protos_third_party_android_connectivity_connectivity_network_trace_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_interned_data_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_trace_packet_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_track_event_zero",
Expand Down Expand Up @@ -774,6 +777,8 @@ perfetto_cc_library(
":src_trace_processor_plugins_ancestor_tables",
":src_trace_processor_plugins_android_framework_track_event_android_framework_track_event",
":src_trace_processor_plugins_android_framework_track_event_tables",
":src_trace_processor_plugins_android_process_state_android_process_state",
":src_trace_processor_plugins_android_process_state_tables",
":src_trace_processor_plugins_args_args",
":src_trace_processor_plugins_art_heap_graph_functions_art_heap_graph_functions",
":src_trace_processor_plugins_art_process_metadata_importer_art_process_metadata_importer",
Expand Down Expand Up @@ -984,6 +989,7 @@ perfetto_cc_library(
":protos_perfetto_trace_translation_zero",
":protos_third_party_android_art_art_heap_graph_zero",
":protos_third_party_android_connectivity_connectivity_network_trace_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_interned_data_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_trace_packet_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_track_event_zero",
Expand Down Expand Up @@ -4441,6 +4447,35 @@ perfetto_cc_tp_tables(
],
)

# GN target: //src/trace_processor/plugins/android_process_state:android_process_state
perfetto_filegroup(
name = "src_trace_processor_plugins_android_process_state_android_process_state",
srcs = [
"src/trace_processor/plugins/android_process_state/android_process_state.cc",
"src/trace_processor/plugins/android_process_state/android_process_state.h",
"src/trace_processor/plugins/android_process_state/android_process_state_module.cc",
"src/trace_processor/plugins/android_process_state/android_process_state_module.h",
"src/trace_processor/plugins/android_process_state/android_process_state_tracker.cc",
"src/trace_processor/plugins/android_process_state/android_process_state_tracker.h",
],
)

# GN target: //src/trace_processor/plugins/android_process_state:tables
perfetto_cc_tp_tables(
name = "src_trace_processor_plugins_android_process_state_tables",
srcs = [
"src/trace_processor/plugins/android_process_state/tables.py",
],
deps = [
":src_trace_processor_tables_tables_python",
],
outs = [
"src/trace_processor/plugins/android_process_state/all_tables_fwd.h",
"src/trace_processor/plugins/android_process_state/tables_fwd.h",
"src/trace_processor/plugins/android_process_state/tables_py.h",
],
)

# GN target: //src/trace_processor/plugins/args:args
perfetto_filegroup(
name = "src_trace_processor_plugins_args_args",
Expand Down Expand Up @@ -7443,6 +7478,7 @@ perfetto_proto_library(
":protos_third_party_android_android_extensions_protos",
":protos_third_party_android_art_art_heap_graph_protos",
":protos_third_party_android_connectivity_connectivity_network_trace_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_interned_data_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_trace_packet_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_track_event_protos",
Expand Down Expand Up @@ -10050,6 +10086,7 @@ perfetto_proto_library(
":protos_perfetto_trace_translation_protos",
":protos_third_party_android_art_art_heap_graph_protos",
":protos_third_party_android_connectivity_connectivity_network_trace_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_interned_data_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_trace_packet_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_track_event_protos",
Expand All @@ -10063,6 +10100,7 @@ perfetto_proto_library(
exports = [
":protos_third_party_android_art_art_heap_graph_protos",
":protos_third_party_android_connectivity_connectivity_network_trace_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_interned_data_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_trace_packet_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_track_event_protos",
Expand Down Expand Up @@ -10289,6 +10327,25 @@ perfetto_cc_protozero_library(
],
)

# GN target: //protos/third_party/android/frameworks/base/proto/tracing:frameworks_base_common_source_set
perfetto_proto_library(
name = "protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_protos",
srcs = [
"protos/third_party/android/frameworks/base/proto/tracing/frameworks_base_common.proto",
],
visibility = [
PERFETTO_CONFIG.proto_library_visibility,
],
)

# GN target: //protos/third_party/android/frameworks/base/proto/tracing:frameworks_base_common_zero
perfetto_cc_protozero_library(
name = "protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_zero",
deps = [
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_protos",
],
)

# GN target: //protos/third_party/android/frameworks/base/proto/tracing:frameworks_base_interned_data_source_set
perfetto_proto_library(
name = "protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_interned_data_protos",
Expand Down Expand Up @@ -10447,10 +10504,12 @@ perfetto_proto_library(
":protos_perfetto_trace_system_info_protos",
":protos_perfetto_trace_track_event_protos",
":protos_perfetto_trace_translation_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_interned_data_protos",
],
] + PERFETTO_CONFIG.deps.protobuf_descriptor_proto,
exports = [
":protos_perfetto_trace_non_minimal_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_interned_data_protos",
],
)
Expand Down Expand Up @@ -10500,6 +10559,7 @@ perfetto_cc_protozero_library(
":protos_perfetto_trace_system_info_zero",
":protos_perfetto_trace_track_event_zero",
":protos_perfetto_trace_translation_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_interned_data_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_trace_packet_protos",
],
Expand All @@ -10517,10 +10577,12 @@ perfetto_proto_library(
deps = [
":protos_perfetto_trace_field_options_protos",
":protos_perfetto_trace_track_event_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_protos",
] + PERFETTO_CONFIG.deps.protobuf_descriptor_proto,
exports = [
":protos_perfetto_trace_field_options_protos",
":protos_perfetto_trace_track_event_protos",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_protos",
],
)

Expand All @@ -10530,6 +10592,7 @@ perfetto_cc_protozero_library(
deps = [
":protos_perfetto_trace_field_options_zero",
":protos_perfetto_trace_track_event_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_track_event_protos",
],
)
Expand Down Expand Up @@ -11584,6 +11647,8 @@ perfetto_cc_library(
":src_trace_processor_plugins_ancestor_tables",
":src_trace_processor_plugins_android_framework_track_event_android_framework_track_event",
":src_trace_processor_plugins_android_framework_track_event_tables",
":src_trace_processor_plugins_android_process_state_android_process_state",
":src_trace_processor_plugins_android_process_state_tables",
":src_trace_processor_plugins_args_args",
":src_trace_processor_plugins_art_heap_graph_functions_art_heap_graph_functions",
":src_trace_processor_plugins_art_process_metadata_importer_art_process_metadata_importer",
Expand Down Expand Up @@ -11778,6 +11843,7 @@ perfetto_cc_library(
":protos_perfetto_trace_translation_zero",
":protos_third_party_android_art_art_heap_graph_zero",
":protos_third_party_android_connectivity_connectivity_network_trace_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_interned_data_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_trace_packet_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_track_event_zero",
Expand Down Expand Up @@ -11928,6 +11994,8 @@ perfetto_cc_binary(
":src_trace_processor_plugins_ancestor_tables",
":src_trace_processor_plugins_android_framework_track_event_android_framework_track_event",
":src_trace_processor_plugins_android_framework_track_event_tables",
":src_trace_processor_plugins_android_process_state_android_process_state",
":src_trace_processor_plugins_android_process_state_tables",
":src_trace_processor_plugins_args_args",
":src_trace_processor_plugins_art_heap_graph_functions_art_heap_graph_functions",
":src_trace_processor_plugins_art_process_metadata_importer_art_process_metadata_importer",
Expand Down Expand Up @@ -12111,6 +12179,7 @@ perfetto_cc_binary(
":protos_perfetto_trace_translation_zero",
":protos_third_party_android_art_art_heap_graph_zero",
":protos_third_party_android_connectivity_connectivity_network_trace_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_common_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_interned_data_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_trace_packet_zero",
":protos_third_party_android_frameworks_base_proto_tracing_frameworks_base_track_event_zero",
Expand Down
1 change: 1 addition & 0 deletions protos/third_party/android/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ perfetto_proto_library("android_extensions_@TYPE@") {
public_deps = [
"art:art_heap_graph_@TYPE@",
"connectivity:connectivity_network_trace_@TYPE@",
"frameworks/base/proto/tracing:frameworks_base_common_@TYPE@",
"frameworks/base/proto/tracing:frameworks_base_interned_data_@TYPE@",
"frameworks/base/proto/tracing:frameworks_base_trace_packet_@TYPE@",
"frameworks/base/proto/tracing:frameworks_base_track_event_@TYPE@",
Expand Down
3 changes: 3 additions & 0 deletions protos/third_party/android/android_extensions.proto
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ syntax = "proto2";

package com.android.internal;

// Common definitions.
import public "protos/third_party/android/frameworks/base/proto/tracing/frameworks_base_common.proto";

// TrackEvent extensions.
import public "protos/third_party/android/frameworks/base/proto/tracing/frameworks_base_track_event.proto";
import public "protos/third_party/android/frameworks/native/tracing/frameworks_native_track_event.proto";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,16 @@

import("../../../../../../../gn/proto_library.gni")

perfetto_proto_library("frameworks_base_common_@TYPE@") {
sources = [ "frameworks_base_common.proto" ]
}

# Imports field_options.proto (a custom option), so it is protozero-only.
perfetto_proto_library("frameworks_base_track_event_@TYPE@") {
proto_generators = [ "zero" ]
sources = [ "frameworks_base_track_event.proto" ]
public_deps = [
":frameworks_base_common_@TYPE@",
"../../../../../../perfetto/trace:field_options_@TYPE@",
"../../../../../../perfetto/trace/track_event:@TYPE@",
]
Expand All @@ -34,9 +39,12 @@ perfetto_proto_library("frameworks_base_interned_data_@TYPE@") {
}

perfetto_proto_library("frameworks_base_trace_packet_@TYPE@") {
proto_generators = [ "zero" ]
sources = [ "frameworks_base_trace_packet.proto" ]
public_deps = [
":frameworks_base_common_@TYPE@",
":frameworks_base_interned_data_@TYPE@",
"../../../../../../perfetto/trace:non_minimal_@TYPE@",
]
import_dirs = [ "${perfetto_protobuf_src_dir}" ]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/*
* Copyright (C) 2026 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

// frameworks/base common tracing definitions. Source of truth lives at
// frameworks/base/proto/tracing/ in the Android tree.

syntax = "proto2";

package com.android.internal;

enum UnfreezeReason {
UFR_NONE = 0;
UFR_ACTIVITY = 1;
UFR_FINISH_RECEIVER = 2;
UFR_START_RECEIVER = 3;
UFR_BIND_SERVICE = 4;
UFR_UNBIND_SERVICE = 5;
UFR_START_SERVICE = 6;
UFR_GET_PROVIDER = 7;
UFR_REMOVE_PROVIDER = 8;
UFR_UI_VISIBILITY = 9;
UFR_ALLOWLIST = 10;
UFR_PROCESS_BEGIN = 11;
UFR_PROCESS_END = 12;
UFR_TRIM_MEMORY = 13;
UFR_PING = 15;
UFR_FILE_LOCKS = 16;
UFR_FILE_LOCK_CHECK_FAILURE = 17;
UFR_BINDER_TXNS = 18;
UFR_FEATURE_FLAGS = 19;
UFR_SHORT_FGS_TIMEOUT = 20;
UFR_SYSTEM_INIT = 21;
UFR_BACKUP = 22;
UFR_SHELL = 23;
UFR_REMOVE_TASK = 24;
UFR_UID_IDLE = 25;
UFR_STOP_SERVICE = 26;
UFR_EXECUTING_SERVICE = 27;
UFR_RESTRICTION_CHANGE = 28;
UFR_COMPONENT_DISABLED = 29;
UFR_OOM_ADJ_FOLLOW_UP = 30;
UFR_OOM_ADJ_RECONFIGURATION = 31;
UFR_OOM_ADJ_REASON_SERVICE_BINDER_CALL = 32;
UFR_OOM_ADJ_REASON_BATCH_UPDATE_REQUEST = 33;
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
syntax = "proto2";

import public "protos/perfetto/trace/trace_packet.proto";
import "protos/third_party/android/frameworks/base/proto/tracing/frameworks_base_common.proto";
import "protos/third_party/android/frameworks/base/proto/tracing/frameworks_base_interned_data.proto";

package com.android.internal;
Expand Down Expand Up @@ -106,10 +107,55 @@ message VideoFrameError {
optional Reason reason = 2;
}

// Snapshot of all running process states written at trace stop.
// See AndroidProcessStateChangedEvent in frameworks_base_track_event.proto
message AndroidProcessStateSnapshot {
// A single process state entry.
message Record {
// Process ID.
optional int32 pid = 1;
// Package UID of the process.
optional int32 uid = 2;
// Process state (ActivityManager process state enum).
optional int32 proc_state = 3;
// OOM score adjustment value.
optional int32 oom_score = 4;
// Process capability flags.
optional int32 capability_flags = 5;
// Process name.
optional string process_name = 6;
// start sequence id which is assigned to a process during start update
optional int64 start_seq_id = 7;
// Process start elapsed realtime in milliseconds.
optional int64 start_time_ms = 8;
}
repeated Record record = 1;
}

// Snapshot of frozen process states written at trace stop.
message AndroidFreezerStateSnapshot {
// A single freezer state entry for a frozen process.
message Record {
// Package UID of the process being frozen or unfrozen.
optional int32 uid = 1;
// Process ID of the process being frozen or unfrozen.
optional int32 pid = 2;
// Time in milliseconds since last unfrozen.
optional int64 unfrozen_dur_ms = 3;
// Time in milliseconds since last frozen.
optional int64 frozen_dur_ms = 4;
// Unfreeze reason.
optional UnfreezeReason unfreeze_reason = 5;
}
repeated Record record = 1;
}

message FrameworksBaseTracePacket {
extend perfetto.protos.TracePacket {
optional AppWakelockBundle app_wakelock_bundle = 116;
optional VideoFrame video_frame = 1000;
optional VideoFrameError video_frame_error = 1001;
optional AndroidProcessStateSnapshot android_process_state = 1002;
optional AndroidFreezerStateSnapshot android_freezer_state = 1003;
}
}
Loading
Loading