diff options
| author | ivan-boikov <ik.boikov.public@protonmail.com> | 2024-02-14 21:47:31 +0100 |
|---|---|---|
| committer | ivan-boikov <ik.boikov.public@protonmail.com> | 2024-02-14 21:47:31 +0100 |
| commit | db8d69656ae4ce7f146e0ac7baea60cf3958a894 (patch) | |
| tree | d1ab26a20abb785cd9f3872769ab1aa4d1364504 /components/cpu.c | |
| parent | fa81583552d358173cd008802f63782977f8ff60 (diff) | |
Avg cpu freq, bit more compact
Diffstat (limited to 'components/cpu.c')
| -rw-r--r-- | components/cpu.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/components/cpu.c b/components/cpu.c index a0b7314..a78f17a 100644 --- a/components/cpu.c +++ b/components/cpu.c @@ -7,19 +7,22 @@ #include "../util.h" #if defined(__linux__) - #define CPU_FREQ "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq" - const char * cpu_freq(const char *unused) { - uintmax_t freq; - - /* in kHz */ - if (pscanf(CPU_FREQ, "%ju", &freq) != 1) - return NULL; + char cpu[128]; + unsigned int cores = 0; + uintmax_t freq, freq_sum = 0; + + while (1) { + sprintf(cpu, "/sys/devices/system/cpu/cpu%d/cpufreq/scaling_cur_freq", cores); + if (pscanf(cpu, "%ju", &freq) != 1) + break; + freq_sum += freq; + cores++; + } - //return fmt_human(freq * 1000, 1000); - return bprintf("%.1f", freq/1e6); + return bprintf("%.1f", freq_sum/1e6/cores); } const char * @@ -44,7 +47,7 @@ if (sum == 0) return NULL; - return bprintf("%d", (int)(100 * + return bprintf("%4.1f", (float)(100.0 * ((b[0] + b[1] + b[2] + b[5] + b[6]) - (a[0] + a[1] + a[2] + a[5] + a[6])) / sum)); } |
