Add bcl_exynos/bcl_irq_trigger ftrace event
Bug: 341946760
Test: Build and confirm in the ui
Change-Id: Ie7f3a50ef03f62acd092fe27727691d03a3f60b6
diff --git a/Android.bp b/Android.bp
index ceb98b2..3a57165 100644
--- a/Android.bp
+++ b/Android.bp
@@ -6477,6 +6477,7 @@
"protos/perfetto/trace/extension_descriptor.proto",
"protos/perfetto/trace/filesystem/inode_file_map.proto",
"protos/perfetto/trace/ftrace/android_fs.proto",
+ "protos/perfetto/trace/ftrace/bcl_exynos.proto",
"protos/perfetto/trace/ftrace/binder.proto",
"protos/perfetto/trace/ftrace/block.proto",
"protos/perfetto/trace/ftrace/cgroup.proto",
@@ -6904,6 +6905,7 @@
name: "perfetto_protos_perfetto_trace_ftrace_cpp",
srcs: [
"protos/perfetto/trace/ftrace/android_fs.proto",
+ "protos/perfetto/trace/ftrace/bcl_exynos.proto",
"protos/perfetto/trace/ftrace/binder.proto",
"protos/perfetto/trace/ftrace/block.proto",
"protos/perfetto/trace/ftrace/cgroup.proto",
@@ -6992,6 +6994,7 @@
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=wrapper_namespace=gen:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_ftrace_cpp)",
out: [
"external/perfetto/protos/perfetto/trace/ftrace/android_fs.gen.cc",
+ "external/perfetto/protos/perfetto/trace/ftrace/bcl_exynos.gen.cc",
"external/perfetto/protos/perfetto/trace/ftrace/binder.gen.cc",
"external/perfetto/protos/perfetto/trace/ftrace/block.gen.cc",
"external/perfetto/protos/perfetto/trace/ftrace/cgroup.gen.cc",
@@ -7080,6 +7083,7 @@
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=wrapper_namespace=gen:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_ftrace_cpp)",
out: [
"external/perfetto/protos/perfetto/trace/ftrace/android_fs.gen.h",
+ "external/perfetto/protos/perfetto/trace/ftrace/bcl_exynos.gen.h",
"external/perfetto/protos/perfetto/trace/ftrace/binder.gen.h",
"external/perfetto/protos/perfetto/trace/ftrace/block.gen.h",
"external/perfetto/protos/perfetto/trace/ftrace/cgroup.gen.h",
@@ -7164,6 +7168,7 @@
name: "perfetto_protos_perfetto_trace_ftrace_lite",
srcs: [
"protos/perfetto/trace/ftrace/android_fs.proto",
+ "protos/perfetto/trace/ftrace/bcl_exynos.proto",
"protos/perfetto/trace/ftrace/binder.proto",
"protos/perfetto/trace/ftrace/block.proto",
"protos/perfetto/trace/ftrace/cgroup.proto",
@@ -7251,6 +7256,7 @@
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_ftrace_lite)",
out: [
"external/perfetto/protos/perfetto/trace/ftrace/android_fs.pb.cc",
+ "external/perfetto/protos/perfetto/trace/ftrace/bcl_exynos.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/binder.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/block.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/cgroup.pb.cc",
@@ -7338,6 +7344,7 @@
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_ftrace_lite)",
out: [
"external/perfetto/protos/perfetto/trace/ftrace/android_fs.pb.h",
+ "external/perfetto/protos/perfetto/trace/ftrace/bcl_exynos.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/binder.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/block.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/cgroup.pb.h",
@@ -7422,6 +7429,7 @@
name: "perfetto_protos_perfetto_trace_ftrace_zero",
srcs: [
"protos/perfetto/trace/ftrace/android_fs.proto",
+ "protos/perfetto/trace/ftrace/bcl_exynos.proto",
"protos/perfetto/trace/ftrace/binder.proto",
"protos/perfetto/trace/ftrace/block.proto",
"protos/perfetto/trace/ftrace/cgroup.proto",
@@ -7510,6 +7518,7 @@
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_ftrace_zero)",
out: [
"external/perfetto/protos/perfetto/trace/ftrace/android_fs.pbzero.cc",
+ "external/perfetto/protos/perfetto/trace/ftrace/bcl_exynos.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/binder.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/block.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/cgroup.pbzero.cc",
@@ -7598,6 +7607,7 @@
cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_ftrace_zero)",
out: [
"external/perfetto/protos/perfetto/trace/ftrace/android_fs.pbzero.h",
+ "external/perfetto/protos/perfetto/trace/ftrace/bcl_exynos.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/binder.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/block.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/cgroup.pbzero.h",
@@ -14597,6 +14607,7 @@
"protos/perfetto/trace/extension_descriptor.proto",
"protos/perfetto/trace/filesystem/inode_file_map.proto",
"protos/perfetto/trace/ftrace/android_fs.proto",
+ "protos/perfetto/trace/ftrace/bcl_exynos.proto",
"protos/perfetto/trace/ftrace/binder.proto",
"protos/perfetto/trace/ftrace/block.proto",
"protos/perfetto/trace/ftrace/cgroup.proto",
@@ -15904,6 +15915,7 @@
"protos/perfetto/trace/extension_descriptor.proto",
"protos/perfetto/trace/filesystem/inode_file_map.proto",
"protos/perfetto/trace/ftrace/android_fs.proto",
+ "protos/perfetto/trace/ftrace/bcl_exynos.proto",
"protos/perfetto/trace/ftrace/binder.proto",
"protos/perfetto/trace/ftrace/block.proto",
"protos/perfetto/trace/ftrace/cgroup.proto",
diff --git a/BUILD b/BUILD
index 97ca505..132487e 100644
--- a/BUILD
+++ b/BUILD
@@ -5016,6 +5016,7 @@
name = "protos_perfetto_trace_ftrace_protos",
srcs = [
"protos/perfetto/trace/ftrace/android_fs.proto",
+ "protos/perfetto/trace/ftrace/bcl_exynos.proto",
"protos/perfetto/trace/ftrace/binder.proto",
"protos/perfetto/trace/ftrace/block.proto",
"protos/perfetto/trace/ftrace/cgroup.proto",
diff --git a/protos/perfetto/trace/ftrace/all_protos.gni b/protos/perfetto/trace/ftrace/all_protos.gni
index aaa1971..1cb6085 100644
--- a/protos/perfetto/trace/ftrace/all_protos.gni
+++ b/protos/perfetto/trace/ftrace/all_protos.gni
@@ -21,6 +21,7 @@
"test_bundle_wrapper.proto",
"generic.proto",
"android_fs.proto",
+ "bcl_exynos.proto",
"binder.proto",
"block.proto",
"cgroup.proto",
diff --git a/protos/perfetto/trace/ftrace/bcl_exynos.proto b/protos/perfetto/trace/ftrace/bcl_exynos.proto
new file mode 100644
index 0000000..801a2ca
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/bcl_exynos.proto
@@ -0,0 +1,18 @@
+// Autogenerated by:
+// ../../src/tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+package perfetto.protos;
+
+message BclIrqTriggerFtraceEvent {
+ optional int32 id = 1;
+ optional int32 throttle = 2;
+ optional int32 cpu0_limit = 3;
+ optional int32 cpu1_limit = 4;
+ optional int32 cpu2_limit = 5;
+ optional int32 tpu_limit = 6;
+ optional int32 gpu_limit = 7;
+ optional int32 voltage = 8;
+ optional int32 capacity = 9;
+}
diff --git a/protos/perfetto/trace/ftrace/ftrace_event.proto b/protos/perfetto/trace/ftrace/ftrace_event.proto
index 7e1b236..6d9334e 100644
--- a/protos/perfetto/trace/ftrace/ftrace_event.proto
+++ b/protos/perfetto/trace/ftrace/ftrace_event.proto
@@ -21,6 +21,7 @@
syntax = "proto2";
import "protos/perfetto/trace/ftrace/android_fs.proto";
+import "protos/perfetto/trace/ftrace/bcl_exynos.proto";
import "protos/perfetto/trace/ftrace/binder.proto";
import "protos/perfetto/trace/ftrace/block.proto";
import "protos/perfetto/trace/ftrace/cgroup.proto";
@@ -668,5 +669,6 @@
MaliMaliPMMCUPENDONRELOADFtraceEvent mali_mali_PM_MCU_PEND_ON_RELOAD = 530;
MaliMaliPMMCUPOWERDOWNFtraceEvent mali_mali_PM_MCU_POWER_DOWN = 531;
MaliMaliPMMCURESETWAITFtraceEvent mali_mali_PM_MCU_RESET_WAIT = 532;
+ BclIrqTriggerFtraceEvent bcl_irq_trigger = 533;
}
}
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index c7a1537..fc8270e 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -6814,6 +6814,22 @@
// End of protos/perfetto/trace/ftrace/android_fs.proto
+// Begin of protos/perfetto/trace/ftrace/bcl_exynos.proto
+
+message BclIrqTriggerFtraceEvent {
+ optional int32 id = 1;
+ optional int32 throttle = 2;
+ optional int32 cpu0_limit = 3;
+ optional int32 cpu1_limit = 4;
+ optional int32 cpu2_limit = 5;
+ optional int32 tpu_limit = 6;
+ optional int32 gpu_limit = 7;
+ optional int32 voltage = 8;
+ optional int32 capacity = 9;
+}
+
+// End of protos/perfetto/trace/ftrace/bcl_exynos.proto
+
// Begin of protos/perfetto/trace/ftrace/binder.proto
message BinderTransactionFtraceEvent {
@@ -10963,6 +10979,7 @@
MaliMaliPMMCUPENDONRELOADFtraceEvent mali_mali_PM_MCU_PEND_ON_RELOAD = 530;
MaliMaliPMMCUPOWERDOWNFtraceEvent mali_mali_PM_MCU_POWER_DOWN = 531;
MaliMaliPMMCURESETWAITFtraceEvent mali_mali_PM_MCU_RESET_WAIT = 532;
+ BclIrqTriggerFtraceEvent bcl_irq_trigger = 533;
}
}
diff --git a/src/tools/ftrace_proto_gen/event_list b/src/tools/ftrace_proto_gen/event_list
index 132949c..8d1463c 100644
--- a/src/tools/ftrace_proto_gen/event_list
+++ b/src/tools/ftrace_proto_gen/event_list
@@ -527,3 +527,4 @@
mali/mali_PM_MCU_PEND_ON_RELOAD
mali/mali_PM_MCU_POWER_DOWN
mali/mali_PM_MCU_RESET_WAIT
+bcl_exynos/bcl_irq_trigger
diff --git a/src/trace_processor/importers/common/track_tracker.cc b/src/trace_processor/importers/common/track_tracker.cc
index a2ba1f8..b217d5b 100644
--- a/src/trace_processor/importers/common/track_tracker.cc
+++ b/src/trace_processor/importers/common/track_tracker.cc
@@ -47,6 +47,8 @@
return "Thermals";
case TrackTracker::Group::kClockFrequency:
return "Clock Freqeuncy";
+ case TrackTracker::Group::kBatteryMitigation:
+ return "Battery Mitigation";
case TrackTracker::Group::kSizeSentinel:
PERFETTO_FATAL("Unexpected size passed as group");
}
diff --git a/src/trace_processor/importers/common/track_tracker.h b/src/trace_processor/importers/common/track_tracker.h
index c066204..261b562 100644
--- a/src/trace_processor/importers/common/track_tracker.h
+++ b/src/trace_processor/importers/common/track_tracker.h
@@ -43,6 +43,7 @@
kDeviceState,
kThermals,
kClockFrequency,
+ kBatteryMitigation,
// Keep this last.
kSizeSentinel,
diff --git a/src/trace_processor/importers/ftrace/ftrace_descriptors.cc b/src/trace_processor/importers/ftrace/ftrace_descriptors.cc
index c5c6547..3fd5e92 100644
--- a/src/trace_processor/importers/ftrace/ftrace_descriptors.cc
+++ b/src/trace_processor/importers/ftrace/ftrace_descriptors.cc
@@ -24,7 +24,7 @@
namespace trace_processor {
namespace {
-std::array<FtraceMessageDescriptor, 533> descriptors{{
+std::array<FtraceMessageDescriptor, 534> descriptors{{
{nullptr, 0, {}},
{nullptr, 0, {}},
{nullptr, 0, {}},
@@ -5867,6 +5867,22 @@
{"info_val", ProtoSchemaType::kUint64},
},
},
+ {
+ "bcl_exynos_bcl_irq_trigger",
+ 9,
+ {
+ {},
+ {"id", ProtoSchemaType::kInt32},
+ {"throttle", ProtoSchemaType::kInt32},
+ {"cpu0_limit", ProtoSchemaType::kInt32},
+ {"cpu1_limit", ProtoSchemaType::kInt32},
+ {"cpu2_limit", ProtoSchemaType::kInt32},
+ {"tpu_limit", ProtoSchemaType::kInt32},
+ {"gpu_limit", ProtoSchemaType::kInt32},
+ {"voltage", ProtoSchemaType::kInt32},
+ {"capacity", ProtoSchemaType::kInt32},
+ },
+ },
}};
} // namespace
diff --git a/src/trace_processor/importers/ftrace/ftrace_parser.cc b/src/trace_processor/importers/ftrace/ftrace_parser.cc
index e368073..21a199a 100644
--- a/src/trace_processor/importers/ftrace/ftrace_parser.cc
+++ b/src/trace_processor/importers/ftrace/ftrace_parser.cc
@@ -46,6 +46,7 @@
#include "protos/perfetto/common/gpu_counter_descriptor.pbzero.h"
#include "protos/perfetto/trace/ftrace/android_fs.pbzero.h"
+#include "protos/perfetto/trace/ftrace/bcl_exynos.pbzero.h"
#include "protos/perfetto/trace/ftrace/binder.pbzero.h"
#include "protos/perfetto/trace/ftrace/cma.pbzero.h"
#include "protos/perfetto/trace/ftrace/cpuhp.pbzero.h"
@@ -341,6 +342,15 @@
ion_total_unknown_id_(context->storage->InternString("mem.ion.unknown")),
ion_change_unknown_id_(
context->storage->InternString("mem.ion_change.unknown")),
+ bcl_irq_id_(context_->storage->InternString("bcl_irq_id")),
+ bcl_irq_throttle_(context_->storage->InternString("bcl_irq_throttle")),
+ bcl_irq_cpu0_(context_->storage->InternString("bcl_irq_cpu0")),
+ bcl_irq_cpu1_(context_->storage->InternString("bcl_irq_cpu1")),
+ bcl_irq_cpu2_(context_->storage->InternString("bcl_irq_cpu2")),
+ bcl_irq_tpu_(context_->storage->InternString("bcl_irq_tpu")),
+ bcl_irq_gpu_(context_->storage->InternString("bcl_irq_gpu")),
+ bcl_irq_voltage_(context_->storage->InternString("bcl_irq_voltage")),
+ bcl_irq_capacity_(context_->storage->InternString("bcl_irq_capacity")),
signal_generate_id_(context->storage->InternString("signal_generate")),
signal_deliver_id_(context->storage->InternString("signal_deliver")),
oom_score_adj_id_(context->storage->InternString("oom_score_adj")),
@@ -1284,6 +1294,10 @@
ParseDevicePmCallbackEnd(ts, fld_bytes);
break;
}
+ case FtraceEvent::kBclIrqTriggerFieldNumber: {
+ ParseBclIrq(ts, fld_bytes);
+ break;
+ }
default:
break;
}
@@ -1874,6 +1888,59 @@
}
}
+void FtraceParser::ParseBclIrq(int64_t ts, protozero::ConstBytes data) {
+ protos::pbzero::BclIrqTriggerFtraceEvent::Decoder bcl(data.data, data.size);
+ int throttle = bcl.throttle();
+ // id
+ TrackId track = context_->track_tracker->InternGlobalCounterTrack(
+ TrackTracker::Group::kBatteryMitigation, bcl_irq_id_);
+ context_->event_tracker->PushCounter(ts,
+ throttle ? bcl.id() : -1,
+ track);
+ // throttle
+ track = context_->track_tracker->InternGlobalCounterTrack(
+ TrackTracker::Group::kBatteryMitigation, bcl_irq_throttle_);
+ context_->event_tracker->PushCounter(ts, throttle, track);
+ // cpu0_limit
+ track = context_->track_tracker->InternGlobalCounterTrack(
+ TrackTracker::Group::kBatteryMitigation, bcl_irq_cpu0_);
+ context_->event_tracker->PushCounter(ts,
+ throttle ? bcl.cpu0_limit() : 0,
+ track);
+ // cpu1_limit
+ track = context_->track_tracker->InternGlobalCounterTrack(
+ TrackTracker::Group::kBatteryMitigation, bcl_irq_cpu1_);
+ context_->event_tracker->PushCounter(ts,
+ throttle ? bcl.cpu1_limit() : 0,
+ track);
+ // cpu2_limit
+ track = context_->track_tracker->InternGlobalCounterTrack(
+ TrackTracker::Group::kBatteryMitigation, bcl_irq_cpu2_);
+ context_->event_tracker->PushCounter(ts,
+ throttle ? bcl.cpu2_limit() : 0,
+ track);
+ // tpu_limit
+ track = context_->track_tracker->InternGlobalCounterTrack(
+ TrackTracker::Group::kBatteryMitigation, bcl_irq_tpu_);
+ context_->event_tracker->PushCounter(ts,
+ throttle ? bcl.tpu_limit(): 0,
+ track);
+ // gpu_limit
+ track = context_->track_tracker->InternGlobalCounterTrack(
+ TrackTracker::Group::kBatteryMitigation, bcl_irq_gpu_);
+ context_->event_tracker->PushCounter(ts,
+ throttle ? bcl.gpu_limit() : 0,
+ track);
+ // voltage
+ track = context_->track_tracker->InternGlobalCounterTrack(
+ TrackTracker::Group::kBatteryMitigation, bcl_irq_voltage_);
+ context_->event_tracker->PushCounter(ts, bcl.voltage(), track);
+ // capacity
+ track = context_->track_tracker->InternGlobalCounterTrack(
+ TrackTracker::Group::kBatteryMitigation, bcl_irq_capacity_);
+ context_->event_tracker->PushCounter(ts, bcl.capacity(), track);
+}
+
void FtraceParser::ParseDmaHeapStat(int64_t timestamp,
uint32_t pid,
protozero::ConstBytes data) {
diff --git a/src/trace_processor/importers/ftrace/ftrace_parser.h b/src/trace_processor/importers/ftrace/ftrace_parser.h
index 2520572..97aa089 100644
--- a/src/trace_processor/importers/ftrace/ftrace_parser.h
+++ b/src/trace_processor/importers/ftrace/ftrace_parser.h
@@ -106,6 +106,7 @@
protozero::ConstBytes,
bool grow);
void ParseIonStat(int64_t timestamp, uint32_t pid, protozero::ConstBytes);
+ void ParseBclIrq(int64_t timestamp, protozero::ConstBytes);
void ParseDmaHeapStat(int64_t timestamp, uint32_t pid, protozero::ConstBytes);
void ParseSignalGenerate(int64_t timestamp, protozero::ConstBytes);
void ParseSignalDeliver(int64_t timestamp,
@@ -336,6 +337,15 @@
const StringId dma_buffer_id_;
const StringId ion_total_unknown_id_;
const StringId ion_change_unknown_id_;
+ const StringId bcl_irq_id_;
+ const StringId bcl_irq_throttle_;
+ const StringId bcl_irq_cpu0_;
+ const StringId bcl_irq_cpu1_;
+ const StringId bcl_irq_cpu2_;
+ const StringId bcl_irq_tpu_;
+ const StringId bcl_irq_gpu_;
+ const StringId bcl_irq_voltage_;
+ const StringId bcl_irq_capacity_;
const StringId signal_generate_id_;
const StringId signal_deliver_id_;
const StringId oom_score_adj_id_;
diff --git a/src/traced/probes/ftrace/event_info.cc b/src/traced/probes/ftrace/event_info.cc
index 2c5231d..7a5d793 100644
--- a/src/traced/probes/ftrace/event_info.cc
+++ b/src/traced/probes/ftrace/event_info.cc
@@ -157,6 +157,40 @@
kUnsetFtraceId,
436,
kUnsetSize},
+ {"bcl_irq_trigger",
+ "bcl_exynos",
+ {
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "id", 1, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "throttle", 2, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "cpu0_limit", 3, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "cpu1_limit", 4, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "cpu2_limit", 5, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "tpu_limit", 6, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "gpu_limit", 7, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "voltage", 8, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+ "capacity", 9, ProtoSchemaType::kInt32,
+ TranslationStrategy::kInvalidTranslationStrategy},
+ },
+ kUnsetFtraceId,
+ 533,
+ kUnsetSize},
{"binder_transaction",
"binder",
{
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/bcl_exynos/bcl_irq_trigger/format b/src/traced/probes/ftrace/test/data/synthetic/events/bcl_exynos/bcl_irq_trigger/format
new file mode 100644
index 0000000..4df557b
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/bcl_exynos/bcl_irq_trigger/format
@@ -0,0 +1,19 @@
+name: bcl_irq_trigger
+ID: 1127
+format:
+ field:unsigned short common_type; offset:0; size:2; signed:0;
+ field:unsigned char common_flags; offset:2; size:1; signed:0;
+ field:unsigned char common_preempt_count; offset:3; size:1; signed:0;
+ field:int common_pid; offset:4; size:4; signed:1;
+
+ field:int id; offset:8; size:4; signed:1;
+ field:int throttle; offset:12; size:4; signed:1;
+ field:int cpu0_limit; offset:16; size:4; signed:1;
+ field:int cpu1_limit; offset:20; size:4; signed:1;
+ field:int cpu2_limit; offset:24; size:4; signed:1;
+ field:int tpu_limit; offset:28; size:4; signed:1;
+ field:int gpu_limit; offset:32; size:4; signed:1;
+ field:int voltage; offset:36; size:4; signed:1;
+ field:int capacity; offset:40; size:4; signed:1;
+
+print fmt: "bcl irq %d trig %d: cpu0=%d, cpu1=%d, cpu2=%d, tpu=%d, gpu=%d, volt=%d cap=%d", REC->id, REC->throttle, REC->cpu0_limit, REC->cpu1_limit, REC->cpu2_limit, REC->tpu_limit, REC->gpu_limit, REC->voltage, REC->capacity
\ No newline at end of file