1570af302Sopenharmony_ci#define _GNU_SOURCE 2570af302Sopenharmony_ci#include <stdlib.h> 3570af302Sopenharmony_ci#include <sys/sysinfo.h> 4570af302Sopenharmony_ci 5570af302Sopenharmony_ciint getloadavg(double *a, int n) 6570af302Sopenharmony_ci{ 7570af302Sopenharmony_ci struct sysinfo si; 8570af302Sopenharmony_ci if (n <= 0) return n ? -1 : 0; 9570af302Sopenharmony_ci sysinfo(&si); 10570af302Sopenharmony_ci if (n > 3) n = 3; 11570af302Sopenharmony_ci for (int i=0; i<n; i++) 12570af302Sopenharmony_ci a[i] = 1.0/(1<<SI_LOAD_SHIFT) * si.loads[i]; 13570af302Sopenharmony_ci return n; 14570af302Sopenharmony_ci} 15