#include #include #include #include #include "cereal/messaging/messaging.h" struct CPUTime { int id; unsigned long utime, ntime, stime, itime; unsigned long iowtime, irqtime, sirqtime; }; struct ProcCache { int pid; std::string name, exe; std::vector cmdline; }; struct ProcStat { int pid, ppid, processor; char state; long cutime, cstime, priority, nice, num_threads; unsigned long utime, stime, vms, rss; unsigned long long starttime; std::string name; }; namespace Parser { std::vector pids(); std::optional procStat(std::string stat); std::vector cmdline(std::istream &stream); std::vector cpuTimes(std::istream &stream); std::unordered_map memInfo(std::istream &stream); const ProcCache &getProcExtraInfo(int pid, const std::string &name); }; // namespace Parser void buildProcLogMessage(MessageBuilder &msg);