diff options
author | Christian Göttsche <cgzones@googlemail.com> | 2021-06-12 18:17:28 +0200 |
---|---|---|
committer | Benny Baumann <BenBE@geshi.org> | 2021-07-18 07:44:02 +0200 |
commit | 41af31be7ffbd34518b27aad56a4f54af6a8adf3 (patch) | |
tree | 6e86813a332e93f7ee22b873d7522fa766b4af97 /linux/Platform.c | |
parent | c9abd788b17ab28424961310b7e224498510780c (diff) |
Rework CPU counting
Currently htop does not support offline CPUs and hot-swapping, e.g. via
echo 0 > /sys/devices/system/cpu/cpu2/online
Split the current single cpuCount variable into activeCPUs and
existingCPUs.
Supersedes: #650
Related: #580
Diffstat (limited to 'linux/Platform.c')
-rw-r--r-- | linux/Platform.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/linux/Platform.c b/linux/Platform.c index 2d28b8e1..d23bf57d 100644 --- a/linux/Platform.c +++ b/linux/Platform.c @@ -246,10 +246,16 @@ int Platform_getMaxPid() { double Platform_setCPUValues(Meter* this, unsigned int cpu) { const LinuxProcessList* pl = (const LinuxProcessList*) this->pl; - const CPUData* cpuData = &(pl->cpus[cpu]); + const CPUData* cpuData = &(pl->cpuData[cpu]); double total = (double) ( cpuData->totalPeriod == 0 ? 1 : cpuData->totalPeriod); double percent; double* v = this->values; + + if (!cpuData->online) { + this->curItems = 0; + return NAN; + } + v[CPU_METER_NICE] = cpuData->nicePeriod / total * 100.0; v[CPU_METER_NORMAL] = cpuData->userPeriod / total * 100.0; if (this->pl->settings->detailedCPUTime) { @@ -1000,7 +1006,7 @@ void Platform_init(void) { } #ifdef HAVE_SENSORS_SENSORS_H - LibSensors_init(NULL); + LibSensors_init(); #endif } |