return pakfire_parse_file("/proc/stat", pakfire_parse_cpustat, cpustat);
}
+// Load Average
+
+static int pakfire_parse_loadavg(char* line, size_t length, void* data) {
+ struct pakfire_loadavg* loadavg = data;
+ int r;
+
+ // Parse the first three values
+ r = sscanf(line, "%lf %lf %lf", &loadavg->load1, &loadavg->load5, &loadavg->load15);
+ if (r < 3)
+ return -EINVAL;
+
+ return 0;
+}
+
+int pakfire_loadavg(struct pakfire_loadavg* loadavg) {
+ return pakfire_parse_file("/proc/loadavg", pakfire_parse_loadavg, loadavg);
+}
+
// Meminfo
static int pakfire_parse_meminfo_value(uint64_t* mem, const char* s) {
return EXIT_FAILURE;
}
+// This test parses /proc/loadavg
+static int test_loadavg(const struct test* t) {
+ struct pakfire_loadavg loadavg = {};
+
+ ASSERT_SUCCESS(pakfire_loadavg(&loadavg));
+
+ ASSERT(loadavg.load1 >= 0);
+ ASSERT(loadavg.load5 >= 0);
+ ASSERT(loadavg.load15 >= 0);
+
+ return EXIT_SUCCESS;
+
+FAIL:
+ return EXIT_FAILURE;
+}
+
// This test parses /proc/meminfo
static int test_meminfo(const struct test* t) {
struct pakfire_meminfo meminfo = {};
int main(int argc, const char* argv[]) {
testsuite_add_test(test_cpuinfo);
testsuite_add_test(test_cpustat);
+ testsuite_add_test(test_loadavg);
testsuite_add_test(test_meminfo);
return testsuite_run(argc, argv);