Files
sunnypilot/selfdrive/proclogd/proclog.h
Dean Lee d0fa98931b proclogd: reduce the size of the procLog message by nearly half (#21800)
* cp msg to remove the space

* no orphans

* cleanup

* parse using istringstream

* add test

* split files

* cleanup

* add parser.cc to files_common

* add test for build message

* use > 0

* cleanup

* test proc/self/stat

* more test

* dd

* fix bug

* update test

* refactor pidStat

* cleanup

* test exe

* check procs size in message

* rename pidStat->ProcStat

* don't use util::format_string

* robust pids()

* catch conversion exception

* fix softirq

* udpate test

* use istringstream

* use REQUIRE_THAT&cleanup

* reserve vector of procStats

* use istream to parse cmdline

* cleanup
2021-08-05 11:27:02 +02:00

41 lines
966 B
C++

#include <optional>
#include <string>
#include <unordered_map>
#include <vector>
#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<std::string> 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<int> pids();
std::optional<ProcStat> procStat(std::string stat);
std::vector<std::string> cmdline(std::istream &stream);
std::vector<CPUTime> cpuTimes(std::istream &stream);
std::unordered_map<std::string, uint64_t> memInfo(std::istream &stream);
const ProcCache &getProcExtraInfo(int pid, const std::string &name);
}; // namespace Parser
void buildProcLogMessage(MessageBuilder &msg);