Add support for symbolizing kernel symbols for ftrace events
Makes use of the kallsyms parser perviously introduced
by aosp/1196774. The parser is enabled only when setting
symbolize_ksyms=true in the FtraceConfig proto.
For now the CL works only when perfetto is run as root
on dev phones. Will follow up with security team to
figure out a way forward.
This CL uses the FtraceMetadata to keep track of the
incremental symbols discovered. FtraceMetadata is
shared across all cpus, but is per-session. As a
summary this is the whole callstack of a ftrace read
cycle:
FtraceController::ReadTick()
for cpu = 0 .. num_cpus
CpuReader[i].ReadCycle(data_sources)
for (batch = 0; ...; batch++)
ReadAndProcessBatch(data_sources)
for (ds : data_sources)
ProcessPagesForDataSource(ds)
writes metadata
OnFtraceDataWrittenIntoDataSourceBuffers()
for (ds : data_souces)
// Forward metadata to other data souces.
metadata->Clear()
Design doc: go/perfetto-kallsyms
Bug: 147809529
Test: still TODO (but tested manually)
Change-Id: I59be90da96513c9e99981f73035dd7ee3a822d49
diff --git a/Android.bp b/Android.bp
index 861e382..b9638b1 100644
--- a/Android.bp
+++ b/Android.bp
@@ -476,6 +476,7 @@
":perfetto_src_traced_probes_filesystem_filesystem",
":perfetto_src_traced_probes_ftrace_format_parser",
":perfetto_src_traced_probes_ftrace_ftrace",
+ ":perfetto_src_traced_probes_ftrace_kallsyms_kallsyms",
":perfetto_src_traced_probes_initial_display_state_initial_display_state",
":perfetto_src_traced_probes_metatrace_metatrace",
":perfetto_src_traced_probes_packages_list_packages_list",
@@ -992,6 +993,7 @@
":perfetto_src_traced_probes_filesystem_filesystem",
":perfetto_src_traced_probes_ftrace_format_parser",
":perfetto_src_traced_probes_ftrace_ftrace",
+ ":perfetto_src_traced_probes_ftrace_kallsyms_kallsyms",
":perfetto_src_traced_probes_initial_display_state_initial_display_state",
":perfetto_src_traced_probes_metatrace_metatrace",
":perfetto_src_traced_probes_packages_list_packages_list",
@@ -1237,6 +1239,7 @@
":perfetto_src_traced_probes_filesystem_filesystem",
":perfetto_src_traced_probes_ftrace_format_parser",
":perfetto_src_traced_probes_ftrace_ftrace",
+ ":perfetto_src_traced_probes_ftrace_kallsyms_kallsyms",
":perfetto_src_traced_probes_initial_display_state_initial_display_state",
":perfetto_src_traced_probes_metatrace_metatrace",
":perfetto_src_traced_probes_packages_list_packages_list",
@@ -1629,6 +1632,7 @@
":perfetto_src_traced_probes_ftrace_format_parser",
":perfetto_src_traced_probes_ftrace_ftrace",
":perfetto_src_traced_probes_ftrace_integrationtests",
+ ":perfetto_src_traced_probes_ftrace_kallsyms_kallsyms",
":perfetto_src_traced_probes_ftrace_test_support",
":perfetto_src_traced_probes_initial_display_state_initial_display_state",
":perfetto_src_traced_probes_metatrace_metatrace",
@@ -7350,6 +7354,7 @@
name: "perfetto_src_traced_probes_ftrace_kallsyms_kallsyms",
srcs: [
"src/traced/probes/ftrace/kallsyms/kernel_symbol_map.cc",
+ "src/traced/probes/ftrace/kallsyms/lazy_kernel_symbolizer.cc",
],
}