From 0c002751dde85d1e9fc7650e88bc7aa48c76ff0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= Date: Wed, 12 Apr 2023 18:10:00 +0200 Subject: darwin: avoid double division by zero on startup --- darwin/Platform.c | 18 ++++++++++++------ 1 file 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; -- cgit v1.2.3