Loadavg (BSD): use sysctl

This commit is contained in:
李通洲
2024-05-09 09:20:18 +08:00
parent f79498e4b5
commit b62ad16aa6
+8 -2
View File
@@ -1,8 +1,14 @@
#include "detection/loadavg/loadavg.h"
#include <stdlib.h>
#include <sys/sysctl.h>
const char* ffDetectLoadavg(double result[3])
{
return getloadavg(result, 3) < 0 ? "getloadavg() failed" : NULL;
struct loadavg load;
size_t size = sizeof(load);
if (sysctl((int []) { CTL_VM, VM_LOADAVG }, 2, &load, &size, NULL, 0) < 0)
return "sysctl({CTL_VM, VM_LOADAVG}) failed";
for (int i = 0; i < 3; i++)
result[i] = (double) load.ldavg[i] / (double) load.fscale;
return NULL;
}