Load averages for FreeBSD!

This commit is contained in:
Hisham Muhammad 2014-11-27 20:03:29 -02:00
parent 96e03739c4
commit 6d92d7f73d
3 changed files with 23 additions and 0 deletions

View File

@ -20,6 +20,8 @@ in the source distribution for its full text.
#include <sys/types.h> #include <sys/types.h>
#include <sys/sysctl.h> #include <sys/sysctl.h>
#include <sys/time.h> #include <sys/time.h>
#include <sys/resource.h>
#include <vm/vm_param.h>
#include <time.h> #include <time.h>
/*{ /*{
@ -64,3 +66,20 @@ int Platform_getUptime() {
return (int) difftime(currTime.tv_sec, bootTime.tv_sec); return (int) difftime(currTime.tv_sec, bootTime.tv_sec);
} }
void Platform_getLoadAverage(double* one, double* five, double* fifteen) {
struct loadavg loadAverage;
int mib[2] = { CTL_VM, VM_LOADAVG };
size_t size = sizeof(loadAverage);
int err = sysctl(mib, 2, &loadAverage, &size, NULL, 0);
if (err) {
*one = 0;
*five = 0;
*fifteen = 0;
return;
}
*one = (double) loadAverage.ldavg[0] / loadAverage.fscale;
*five = (double) loadAverage.ldavg[1] / loadAverage.fscale;
*fifteen = (double) loadAverage.ldavg[2] / loadAverage.fscale;
}

View File

@ -17,4 +17,6 @@ extern MeterClass* Platform_meterTypes[];
int Platform_getUptime(); int Platform_getUptime();
void Platform_getLoadAverage(double* one, double* five, double* fifteen);
#endif #endif

View File

@ -17,4 +17,6 @@ extern MeterClass* Platform_meterTypes[];
int Platform_getUptime(); int Platform_getUptime();
void Platform_getLoadAverage(double* one, double* five, double* fifteen);
#endif #endif