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) {