| #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; | |
| } |