summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2023-04-12 18:10:00 +0200
committerBenBE <BenBE@geshi.org>2024-04-20 23:34:58 +0200
commit0c002751dde85d1e9fc7650e88bc7aa48c76ff0e (patch)
tree42ca898118f55bf8f35dcfbda1731a7e87100698
parent6f142695cbf5281dd2a5f67b7233d6b93111fa99 (diff)
darwin: avoid double division by zero on startup
-rw-r--r--darwin/Platform.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/darwin/Platform.c b/darwin/Platform.c
index d16156c6..ba31a59f 100644
--- a/darwin/Platform.c
+++ b/darwin/Platform.c
@@ -272,12 +272,18 @@ double Platform_setCPUValues(Meter* mtr, unsigned int cpu) {
total += (double)curr->cpu_ticks[i] - (double)prev->cpu_ticks[i];
}
- mtr->values[CPU_METER_NICE]
- = ((double)curr->cpu_ticks[CPU_STATE_NICE] - (double)prev->cpu_ticks[CPU_STATE_NICE]) * 100.0 / total;
- mtr->values[CPU_METER_NORMAL]
- = ((double)curr->cpu_ticks[CPU_STATE_USER] - (double)prev->cpu_ticks[CPU_STATE_USER]) * 100.0 / total;
- mtr->values[CPU_METER_KERNEL]
- = ((double)curr->cpu_ticks[CPU_STATE_SYSTEM] - (double)prev->cpu_ticks[CPU_STATE_SYSTEM]) * 100.0 / total;
+ if (total > 1e-6) {
+ mtr->values[CPU_METER_NICE]
+ = ((double)curr->cpu_ticks[CPU_STATE_NICE] - (double)prev->cpu_ticks[CPU_STATE_NICE]) * 100.0 / total;
+ mtr->values[CPU_METER_NORMAL]
+ = ((double)curr->cpu_ticks[CPU_STATE_USER] - (double)prev->cpu_ticks[CPU_STATE_USER]) * 100.0 / total;
+ mtr->values[CPU_METER_KERNEL]
+ = ((double)curr->cpu_ticks[CPU_STATE_SYSTEM] - (double)prev->cpu_ticks[CPU_STATE_SYSTEM]) * 100.0 / total;
+ } else {
+ mtr->values[CPU_METER_NICE] = 0.0;
+ mtr->values[CPU_METER_NORMAL] = 0.0;
+ mtr->values[CPU_METER_KERNEL] = 0.0;
+ }
mtr->curItems = 3;

© 2014-2024 Faster IT GmbH | imprint | privacy policy