Introduction
Introduction Statistics Contact Development Disclaimer Help
cpu_perc: Check for division by zero - slstatus - status monitor
git clone git://git.suckless.org/slstatus
Log
Files
Refs
README
LICENSE
---
commit 10bdf01b715dcc994f3fe32a6881d5e0b2613a6c
parent d518472e6235dde0164115cd68f383f3db3427f2
Author: Ingo Feinerer <[email protected]>
Date: Thu, 14 Feb 2019 19:25:51 +0100
cpu_perc: Check for division by zero
Diffstat:
M components/cpu.c | 45 +++++++++++++++++++----------…
1 file changed, 27 insertions(+), 18 deletions(-)
---
diff --git a/components/cpu.c b/components/cpu.c
@@ -24,7 +24,7 @@
cpu_perc(void)
{
static long double a[7];
- long double b[7];
+ long double b[7], sum;
memcpy(b, a, sizeof(b));
/* cpu user nice system idle iowait irq softirq */
@@ -37,13 +37,16 @@
return NULL;
}
+ sum = (b[0] + b[1] + b[2] + b[3] + b[4] + b[5] + b[6]) -
+ (a[0] + a[1] + a[2] + a[3] + a[4] + a[5] + a[6]);
+
+ if (sum == 0) {
+ return NULL;
+ }
+
return bprintf("%d", (int)(100 *
((b[0] + b[1] + b[2] + b[5] + b[6]) -
- (a[0] + a[1] + a[2] + a[5] + a[6])) /
- ((b[0] + b[1] + b[2] + b[3] + b[4] + b[5] +
- b[6]) -
- (a[0] + a[1] + a[2] + a[3] + a[4] + a[5] +
- a[6]))));
+ (a[0] + a[1] + a[2] + a[5] + a[6])) / sum));
}
#elif defined(__OpenBSD__)
#include <sys/param.h>
@@ -75,7 +78,7 @@
{
int mib[2];
static uintmax_t a[CPUSTATES];
- uintmax_t b[CPUSTATES];
+ uintmax_t b[CPUSTATES], sum;
size_t size;
mib[0] = CTL_KERN;
@@ -92,15 +95,18 @@
return NULL;
}
+ sum = (a[CP_USER] + a[CP_NICE] + a[CP_SYS] + a[CP_INTR] + a[CP…
+ (b[CP_USER] + b[CP_NICE] + b[CP_SYS] + b[CP_INTR] + b[CP…
+
+ if (sum == 0) {
+ return NULL;
+ }
+
return bprintf("%d", 100 *
((a[CP_USER] + a[CP_NICE] + a[CP_SYS] +
a[CP_INTR]) -
(b[CP_USER] + b[CP_NICE] + b[CP_SYS] +
- b[CP_INTR])) /
- ((a[CP_USER] + a[CP_NICE] + a[CP_SYS] +
- a[CP_INTR] + a[CP_IDLE]) -
- (b[CP_USER] + b[CP_NICE] + b[CP_SYS] +
- b[CP_INTR] + b[CP_IDLE])));
+ b[CP_INTR])) / sum);
}
#elif defined(__FreeBSD__)
#include <sys/param.h>
@@ -129,7 +135,7 @@
{
size_t size;
static long a[CPUSTATES];
- long b[CPUSTATES];
+ long b[CPUSTATES], sum;
size = sizeof(a);
memcpy(b, a, sizeof(b));
@@ -142,14 +148,17 @@
return NULL;
}
+ sum = (a[CP_USER] + a[CP_NICE] + a[CP_SYS] + a[CP_INTR] + a[CP…
+ (b[CP_USER] + b[CP_NICE] + b[CP_SYS] + b[CP_INTR] + b[CP…
+
+ if (sum == 0) {
+ return NULL;
+ }
+
return bprintf("%d", 100 *
((a[CP_USER] + a[CP_NICE] + a[CP_SYS] +
a[CP_INTR]) -
(b[CP_USER] + b[CP_NICE] + b[CP_SYS] +
- b[CP_INTR])) /
- ((a[CP_USER] + a[CP_NICE] + a[CP_SYS] +
- a[CP_INTR] + a[CP_IDLE]) -
- (b[CP_USER] + b[CP_NICE] + b[CP_SYS] +
- b[CP_INTR] + b[CP_IDLE])));
+ b[CP_INTR])) / sum);
}
#endif
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.