Track CPU usage of AOS processes in starterd
Change-Id: I7aff742ec992c20a09fcf1ffcf5de4cbdec4bef8
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/starter/subprocess.cc b/aos/starter/subprocess.cc
index c1eb618..f0c8f85 100644
--- a/aos/starter/subprocess.cc
+++ b/aos/starter/subprocess.cc
@@ -346,10 +346,16 @@
}
flatbuffers::Offset<aos::starter::ApplicationStatus>
-Application::PopulateStatus(flatbuffers::FlatBufferBuilder *builder) {
+Application::PopulateStatus(flatbuffers::FlatBufferBuilder *builder,
+ util::Top *top) {
CHECK_NOTNULL(builder);
auto name_fbs = builder->CreateString(name_);
+ const bool valid_pid = pid_ > 0 && status_ != aos::starter::State::STOPPED;
+ const flatbuffers::Offset<util::ProcessInfo> process_info =
+ valid_pid ? top->InfoForProcess(builder, pid_)
+ : flatbuffers::Offset<util::ProcessInfo>();
+
aos::starter::ApplicationStatus::Builder status_builder(*builder);
status_builder.add_name(name_fbs);
status_builder.add_state(status_);
@@ -361,6 +367,8 @@
status_builder.add_pid(pid_);
status_builder.add_id(id_);
}
+ // Note that even if process_info is null, calling add_process_info is fine.
+ status_builder.add_process_info(process_info);
status_builder.add_last_start_time(start_time_.time_since_epoch().count());
return status_builder.Finish();
}