probes: add raw_syscall/sys_{enter,exit} format and generated protos
Change-Id: I396cf90a0efdea5f32ef6d905ae9c09609df8d31
diff --git a/Android.bp b/Android.bp
index f3df9e5..8395fec 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1220,6 +1220,7 @@
"protos/perfetto/trace/ftrace/mm_event.proto",
"protos/perfetto/trace/ftrace/oom.proto",
"protos/perfetto/trace/ftrace/power.proto",
+ "protos/perfetto/trace/ftrace/raw_syscalls.proto",
"protos/perfetto/trace/ftrace/regulator.proto",
"protos/perfetto/trace/ftrace/sched.proto",
"protos/perfetto/trace/ftrace/signal.proto",
@@ -1257,6 +1258,7 @@
"external/perfetto/protos/perfetto/trace/ftrace/mm_event.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/oom.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/power.pb.cc",
+ "external/perfetto/protos/perfetto/trace/ftrace/raw_syscalls.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/regulator.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/sched.pb.cc",
"external/perfetto/protos/perfetto/trace/ftrace/signal.pb.cc",
@@ -1295,6 +1297,7 @@
"protos/perfetto/trace/ftrace/mm_event.proto",
"protos/perfetto/trace/ftrace/oom.proto",
"protos/perfetto/trace/ftrace/power.proto",
+ "protos/perfetto/trace/ftrace/raw_syscalls.proto",
"protos/perfetto/trace/ftrace/regulator.proto",
"protos/perfetto/trace/ftrace/sched.proto",
"protos/perfetto/trace/ftrace/signal.proto",
@@ -1332,6 +1335,7 @@
"external/perfetto/protos/perfetto/trace/ftrace/mm_event.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/oom.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/power.pb.h",
+ "external/perfetto/protos/perfetto/trace/ftrace/raw_syscalls.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/regulator.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/sched.pb.h",
"external/perfetto/protos/perfetto/trace/ftrace/signal.pb.h",
@@ -1373,6 +1377,7 @@
"protos/perfetto/trace/ftrace/mm_event.proto",
"protos/perfetto/trace/ftrace/oom.proto",
"protos/perfetto/trace/ftrace/power.proto",
+ "protos/perfetto/trace/ftrace/raw_syscalls.proto",
"protos/perfetto/trace/ftrace/regulator.proto",
"protos/perfetto/trace/ftrace/sched.proto",
"protos/perfetto/trace/ftrace/signal.proto",
@@ -1411,6 +1416,7 @@
"external/perfetto/protos/perfetto/trace/ftrace/mm_event.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/oom.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/power.pbzero.cc",
+ "external/perfetto/protos/perfetto/trace/ftrace/raw_syscalls.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/regulator.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/sched.pbzero.cc",
"external/perfetto/protos/perfetto/trace/ftrace/signal.pbzero.cc",
@@ -1449,6 +1455,7 @@
"protos/perfetto/trace/ftrace/mm_event.proto",
"protos/perfetto/trace/ftrace/oom.proto",
"protos/perfetto/trace/ftrace/power.proto",
+ "protos/perfetto/trace/ftrace/raw_syscalls.proto",
"protos/perfetto/trace/ftrace/regulator.proto",
"protos/perfetto/trace/ftrace/sched.proto",
"protos/perfetto/trace/ftrace/signal.proto",
@@ -1487,6 +1494,7 @@
"external/perfetto/protos/perfetto/trace/ftrace/mm_event.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/oom.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/power.pbzero.h",
+ "external/perfetto/protos/perfetto/trace/ftrace/raw_syscalls.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/regulator.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/sched.pbzero.h",
"external/perfetto/protos/perfetto/trace/ftrace/signal.pbzero.h",
diff --git a/protos/perfetto/trace/ftrace/all_protos.gni b/protos/perfetto/trace/ftrace/all_protos.gni
index 23d9c1a..a5042a9 100644
--- a/protos/perfetto/trace/ftrace/all_protos.gni
+++ b/protos/perfetto/trace/ftrace/all_protos.gni
@@ -39,6 +39,7 @@
"mm_event.proto",
"oom.proto",
"power.proto",
+ "raw_syscalls.proto",
"regulator.proto",
"sched.proto",
"signal.proto",
diff --git a/protos/perfetto/trace/ftrace/ftrace_event.proto b/protos/perfetto/trace/ftrace/ftrace_event.proto
index 75b80e5..df4ec06 100644
--- a/protos/perfetto/trace/ftrace/ftrace_event.proto
+++ b/protos/perfetto/trace/ftrace/ftrace_event.proto
@@ -24,6 +24,7 @@
import "perfetto/trace/ftrace/mm_event.proto";
import "perfetto/trace/ftrace/oom.proto";
import "perfetto/trace/ftrace/power.proto";
+import "perfetto/trace/ftrace/raw_syscalls.proto";
import "perfetto/trace/ftrace/regulator.proto";
import "perfetto/trace/ftrace/sched.proto";
import "perfetto/trace/ftrace/signal.proto";
@@ -389,5 +390,7 @@
OomScoreAdjUpdateFtraceEvent oom_score_adj_update = 326;
GenericFtraceEvent generic = 327;
MmEventRecordFtraceEvent mm_event_record = 328;
+ SysEnterFtraceEvent sys_enter = 329;
+ SysExitFtraceEvent sys_exit = 330;
}
}
diff --git a/protos/perfetto/trace/ftrace/raw_syscalls.proto b/protos/perfetto/trace/ftrace/raw_syscalls.proto
new file mode 100644
index 0000000..0dda679
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/raw_syscalls.proto
@@ -0,0 +1,15 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+option optimize_for = LITE_RUNTIME;
+package perfetto.protos;
+
+message SysEnterFtraceEvent {
+ optional int64 id = 1;
+}
+message SysExitFtraceEvent {
+ optional int64 id = 1;
+ optional int64 ret = 2;
+}
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index a36d187..fc066e8 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -1774,6 +1774,8 @@
// removed field with id 326
GenericFtraceEvent generic = 327;
MmEventRecordFtraceEvent mm_event_record = 328;
+ SysEnterFtraceEvent sys_enter = 329;
+ SysExitFtraceEvent sys_exit = 330;
}
}
@@ -2160,6 +2162,18 @@
// End of protos/perfetto/trace/ftrace/power.proto
+// Begin of protos/perfetto/trace/ftrace/raw_syscalls.proto
+
+message SysEnterFtraceEvent {
+ optional int64 id = 1;
+}
+message SysExitFtraceEvent {
+ optional int64 id = 1;
+ optional int64 ret = 2;
+}
+
+// End of protos/perfetto/trace/ftrace/raw_syscalls.proto
+
// Begin of protos/perfetto/trace/ftrace/sched.proto
message SchedSwitchFtraceEvent {
diff --git a/src/trace_processor/ftrace_descriptors.cc b/src/trace_processor/ftrace_descriptors.cc
index 13d2176..96b0737 100644
--- a/src/trace_processor/ftrace_descriptors.cc
+++ b/src/trace_processor/ftrace_descriptors.cc
@@ -8,7 +8,7 @@
namespace trace_processor {
namespace {
-std::array<MessageDescriptor, 329> descriptors{{
+std::array<MessageDescriptor, 331> descriptors{{
{},
{},
{},
@@ -3191,6 +3191,21 @@
{"type", ProtoSchemaType::kUint32},
},
},
+ {
+ "sys_enter",
+ {
+ {},
+ {"id", ProtoSchemaType::kInt64},
+ },
+ },
+ {
+ "sys_exit",
+ {
+ {},
+ {"id", ProtoSchemaType::kInt64},
+ {"ret", ProtoSchemaType::kInt64},
+ },
+ },
}};
} // namespace
diff --git a/src/traced/probes/ftrace/event_info.cc b/src/traced/probes/ftrace/event_info.cc
index f5bbd9f..df587e5 100644
--- a/src/traced/probes/ftrace/event_info.cc
+++ b/src/traced/probes/ftrace/event_info.cc
@@ -3615,6 +3615,25 @@
{
events.emplace_back(Event{});
Event* event = &events.back();
+ event->name = "sys_enter";
+ event->group = "raw_syscalls";
+ event->proto_field_id = 329;
+ event->fields.push_back(MakeField("id", 1, ProtoSchemaType::kInt64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "sys_exit";
+ event->group = "raw_syscalls";
+ event->proto_field_id = 330;
+ event->fields.push_back(MakeField("id", 1, ProtoSchemaType::kInt64));
+ event->fields.push_back(MakeField("ret", 2, ProtoSchemaType::kInt64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
event->name = "regulator_disable";
event->group = "regulator";
event->proto_field_id = 60;
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/raw_syscalls/sys_enter/format b/src/traced/probes/ftrace/test/data/synthetic/events/raw_syscalls/sys_enter/format
new file mode 100644
index 0000000..92983dd
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/raw_syscalls/sys_enter/format
@@ -0,0 +1,12 @@
+name: sys_enter
+ID: 17
+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:long id; offset:8; size:8; signed:1;
+ field:unsigned long args[6]; offset:16; size:48; signed:0;
+
+print fmt: "NR %ld (%lx, %lx, %lx, %lx, %lx, %lx)", REC->id, REC->args[0], REC->args[1], REC->args[2], REC->args[3], REC->args[4], REC->args[5]
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/raw_syscalls/sys_exit/format b/src/traced/probes/ftrace/test/data/synthetic/events/raw_syscalls/sys_exit/format
new file mode 100644
index 0000000..f2f131b
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/raw_syscalls/sys_exit/format
@@ -0,0 +1,12 @@
+name: sys_exit
+ID: 18
+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:long id; offset:8; size:8; signed:1;
+ field:long ret; offset:16; size:8; signed:1;
+
+print fmt: "NR %ld = %ld", REC->id, REC->ret
diff --git a/tools/ftrace_proto_gen/event_whitelist b/tools/ftrace_proto_gen/event_whitelist
index cfed0e8..e2ceeec 100644
--- a/tools/ftrace_proto_gen/event_whitelist
+++ b/tools/ftrace_proto_gen/event_whitelist
@@ -323,3 +323,5 @@
signal/signal_generate
oom/oom_score_adj_update
mm_event/mm_event_record
+raw_syscalls/sys_enter
+raw_syscalls/sys_exit
diff --git a/tools/gen_merged_protos b/tools/gen_merged_protos
index d96ced8..05ac277 100755
--- a/tools/gen_merged_protos
+++ b/tools/gen_merged_protos
@@ -59,6 +59,7 @@
'protos/perfetto/trace/ftrace/lowmemorykiller.proto',
'protos/perfetto/trace/ftrace/mm_event.proto',
'protos/perfetto/trace/ftrace/power.proto',
+ 'protos/perfetto/trace/ftrace/raw_syscalls.proto',
'protos/perfetto/trace/ftrace/sched.proto',
'protos/perfetto/trace/ftrace/signal.proto',
'protos/perfetto/trace/ftrace/task.proto',