ftrace_reader: Use atrace --only_userspace option
Bug: 73625407
Change-Id: I5c75233b641b31bfe4d4a8c6ebc1d6b71bf1f5e0
diff --git a/src/ftrace_reader/ftrace_config_muxer.cc b/src/ftrace_reader/ftrace_config_muxer.cc
index 641bd28..2f221b7 100644
--- a/src/ftrace_reader/ftrace_config_muxer.cc
+++ b/src/ftrace_reader/ftrace_config_muxer.cc
@@ -236,8 +236,6 @@
return 0;
// If we're about to turn tracing on use this opportunity do some setup:
- if (RequiresAtrace(request))
- EnableAtrace(request);
SetupClock(request);
SetupBufferSize(request);
} else {
@@ -248,6 +246,9 @@
std::set<std::string> events = GetFtraceEvents(request, table_);
+ if (RequiresAtrace(request))
+ UpdateAtrace(request);
+
for (auto& name : events) {
const Event* event = table_->GetEventByName(name);
if (!event) {
@@ -341,14 +342,13 @@
current_state_.cpu_buffer_size_pages = pages;
}
-void FtraceConfigMuxer::EnableAtrace(const FtraceConfig& request) {
- PERFETTO_DCHECK(!current_state_.atrace_on);
-
- PERFETTO_DLOG("Start atrace...");
+void FtraceConfigMuxer::UpdateAtrace(const FtraceConfig& request) {
+ PERFETTO_DLOG("Update atrace config...");
std::vector<std::string> args;
args.push_back("atrace"); // argv0 for exec()
args.push_back("--async_start");
+ args.push_back("--only_userspace");
for (const auto& category : request.atrace_categories())
args.push_back(category);
if (!request.atrace_apps().empty()) {
@@ -368,7 +368,7 @@
PERFETTO_DLOG("Stop atrace...");
- if (RunAtrace({"atrace", "--async_stop"}))
+ if (RunAtrace({"atrace", "--async_stop", "--only_userspace"}))
current_state_.atrace_on = false;
PERFETTO_DLOG("...done");
diff --git a/src/ftrace_reader/ftrace_config_muxer.h b/src/ftrace_reader/ftrace_config_muxer.h
index de2a7b0..82f51c4 100644
--- a/src/ftrace_reader/ftrace_config_muxer.h
+++ b/src/ftrace_reader/ftrace_config_muxer.h
@@ -80,7 +80,7 @@
void SetupClock(const FtraceConfig& request);
void SetupBufferSize(const FtraceConfig& request);
- void EnableAtrace(const FtraceConfig& request);
+ void UpdateAtrace(const FtraceConfig& request);
void DisableAtrace();
FtraceConfigId GetNextId();
diff --git a/test/configs/atrace.cfg b/test/configs/atrace.cfg
index dde7f38..9267238 100644
--- a/test/configs/atrace.cfg
+++ b/test/configs/atrace.cfg
@@ -9,7 +9,7 @@
name: "com.google.perfetto.ftrace"
target_buffer: 0
ftrace_config {
- ftrace_events: "sched_switch"
+ atrace_categories: "input"
buffer_size_kb: 168 # 4 (page size) * 42
drain_period_ms: 42
}