diff options
author | Christian Göttsche <cgzones@googlemail.com> | 2023-04-12 18:10:00 +0200 |
---|---|---|
committer | BenBE <BenBE@geshi.org> | 2024-04-20 23:34:58 +0200 |
commit | 0c002751dde85d1e9fc7650e88bc7aa48c76ff0e (patch) | |
tree | 42ca898118f55bf8f35dcfbda1731a7e87100698 | |
parent | 6f142695cbf5281dd2a5f67b7233d6b93111fa99 (diff) |
darwin: avoid double division by zero on startup
-rw-r--r-- | darwin/Platform.c | 18 |
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; |