Mercurial > controlcenter
changeset 81:4acd9b9d3555
Linux/Android: Switch to using sysinfo() instead of /proc/loadavg.
author | Brian Smith <brian@dbsoft.org> |
---|---|
date | Tue, 24 Aug 2021 19:16:19 -0500 |
parents | cd8f1ac1d050 |
children | d1217903b66c |
files | statsunx.c |
diffstat | 1 files changed, 10 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/statsunx.c Tue Aug 24 18:27:12 2021 -0500 +++ b/statsunx.c Tue Aug 24 19:16:19 2021 -0500 @@ -100,21 +100,23 @@ } fclose(fp); } - else if((fp = fopen("/proc/loadavg", "r"))) + else { - int cpucores = get_nprocs(); - float onemin, fivemin, fifteenmin; + struct sysinfo si; - if(fscanf(fp,"%f %f %f", &onemin, &fivemin, &fifteenmin) != EOF) + if(!sysinfo(&si)) { + int cpucores = get_nprocs(); + float f_load = 1.f / (1 << SI_LOAD_SHIFT); + double onemin = (double)si.loads[0] * f_load; + if(cpucores > 0) - *Load = ((double)onemin)/((double)cpucores); - else if(onemin < 1.0) - *Load = (double)onemin; + *Load = onemin / ((double)cpucores); + else if (onemin < 1.0) + *Load = onemin; else *Load = 1.0; } - fclose(fp); } #elif defined(__FreeBSD__) static long lastused = 0, lasttotal = 0;