trace_processor: add support for sched_process_exit events
This allows for identifying when threads are ending in traces associated
with startup.
Change-Id: I05c3b9479b927b7dd0d287f7ac4840632c634503
Bug: 133848691
diff --git a/src/trace_processor/proto_trace_parser.cc b/src/trace_processor/proto_trace_parser.cc
index 1a71bec..3d5f467 100644
--- a/src/trace_processor/proto_trace_parser.cc
+++ b/src/trace_processor/proto_trace_parser.cc
@@ -477,6 +477,10 @@
ParseSchedWakeup(ts, data);
break;
}
+ case protos::pbzero::FtraceEvent::kSchedProcessExitFieldNumber: {
+ ParseSchedProcessExit(ts, data);
+ break;
+ }
case protos::pbzero::FtraceEvent::kCpuFrequencyFieldNumber: {
ParseCpuFreq(ts, data);
break;
@@ -698,6 +702,13 @@
utid, RefType::kRefUtid);
}
+void ProtoTraceParser::ParseSchedProcessExit(int64_t ts, ConstBytes blob) {
+ protos::pbzero::SchedProcessExitFtraceEvent::Decoder ex(blob.data, blob.size);
+ uint32_t pid = static_cast<uint32_t>(ex.pid());
+ uint32_t tgid = static_cast<uint32_t>(ex.tgid());
+ context_->process_tracker->EndThread(ts, pid, tgid);
+}
+
void ProtoTraceParser::ParseTaskNewTask(int64_t ts,
uint32_t source_tid,
ConstBytes blob) {