The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

#ifdef __cplusplus
extern "C" {
#endif
#include <stdlib.h>
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#ifdef __cplusplus
}
#endif
MODULE = Sys::CpuLoad PACKAGE = Sys::CpuLoad
void
getloadavg()
PREINIT:
double loadavg[3];
int nelem;
PPCODE:
#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__APPLE__) || defined(__linux__) || defined(__sun) || defined(__DragonFly__)
nelem = getloadavg(loadavg, 3);
#else
nelem = -1;
#endif
if (nelem != -1) {
EXTEND(SP, 3);
PUSHs(sv_2mortal(newSVnv(loadavg[0])));
PUSHs(sv_2mortal(newSVnv(loadavg[1])));
PUSHs(sv_2mortal(newSVnv(loadavg[2])));
}
else {
XSRETURN_UNDEF;
}