summaryrefslogtreecommitdiff
path: root/components/cpu.c
diff options
context:
space:
mode:
authorIvan K. Boikov <mail@ikboikov.net>2025-01-20 20:38:03 +0100
committerIvan K. Boikov <mail@ikboikov.net>2025-01-20 20:38:59 +0100
commit09ca5e445264535ecab10d2d75699361cab17915 (patch)
tree56da4b318a7cd8e2cab7779c22e780c2a21ab92e /components/cpu.c
parent7e0b6a552e4ca65982d9e035cfa091cfd4e8e0df (diff)
CPU edge casesHEADmaster
Diffstat (limited to 'components/cpu.c')
-rw-r--r--components/cpu.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/components/cpu.c b/components/cpu.c
index 48e1b60..1af8b31 100644
--- a/components/cpu.c
+++ b/components/cpu.c
@@ -30,6 +30,7 @@
{
static long double a[7];
long double b[7], sum;
+ float res;
memcpy(b, a, sizeof(b));
/* cpu user nice system idle iowait irq softirq */
@@ -47,9 +48,16 @@
if (sum == 0)
return NULL;
- 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));
+ res = (100.0 *
+ ((b[0] + b[1] + b[2] + b[5] + b[6]) -
+ (a[0] + a[1] + a[2] + a[5] + a[6])) / sum);
+
+ if (res < 0)
+ res = 0.0;
+ if (res >= 100.0)
+ res = 99.9;
+
+ return bprintf("%4.1f", res);
}
#elif defined(__OpenBSD__)
#include <sys/param.h>