trace_processor: add support for sched priorities and descheduling reason

Bug: 122876520
Change-Id: I06efa2c4363a2430d865deb5af7bcfeee96a23cf
diff --git a/src/trace_processor/proto_trace_parser.cc b/src/trace_processor/proto_trace_parser.cc
index aaf0cfd..7a802d8 100644
--- a/src/trace_processor/proto_trace_parser.cc
+++ b/src/trace_processor/proto_trace_parser.cc
@@ -849,16 +849,17 @@
   ProtoDecoder decoder(sswitch.data(), sswitch.length());
 
   uint32_t prev_pid = 0;
-  uint32_t prev_state = 0;
+  int64_t prev_state = 0;
   base::StringView next_comm;
   uint32_t next_pid = 0;
+  int32_t next_prio = 0;
   for (auto fld = decoder.ReadField(); fld.id != 0; fld = decoder.ReadField()) {
     switch (fld.id) {
       case protos::SchedSwitchFtraceEvent::kPrevPidFieldNumber:
         prev_pid = fld.as_uint32();
         break;
       case protos::SchedSwitchFtraceEvent::kPrevStateFieldNumber:
-        prev_state = fld.as_uint32();
+        prev_state = fld.as_int64();
         break;
       case protos::SchedSwitchFtraceEvent::kNextPidFieldNumber:
         next_pid = fld.as_uint32();
@@ -866,12 +867,15 @@
       case protos::SchedSwitchFtraceEvent::kNextCommFieldNumber:
         next_comm = fld.as_string();
         break;
+      case protos::SchedSwitchFtraceEvent::kNextPrioFieldNumber:
+        next_prio = fld.as_int32();
+        break;
       default:
         break;
     }
   }
   context_->event_tracker->PushSchedSwitch(cpu, timestamp, prev_pid, prev_state,
-                                           next_pid, next_comm);
+                                           next_pid, next_comm, next_prio);
   PERFETTO_DCHECK(decoder.IsEndOfBuffer());
 }