| #define _GNU_SOURCE | |
| #include <stdlib.h> | |
| #include <sys/sysinfo.h> | |
| int getloadavg(double* a, int n) { | |
| struct sysinfo si; | |
| if (n <= 0) | |
| return n ? -1 : 0; | |
| sysinfo(&si); | |
| if (n > 3) | |
| n = 3; | |
| for (int i = 0; i < n; i++) | |
| a[i] = 1.0 / (1 << SI_LOAD_SHIFT) * si.loads[i]; | |
| return n; | |
| } |