1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2025-01-12 19:06:36 +00:00

Use the canonical source for the number of CPUs.

Counting cpu\d lines from /proc/stat can give the wrong number if CPUs
are present but offline.
This commit is contained in:
Marius Nuennerich 2016-01-10 16:13:50 +00:00
parent 2fab2d3820
commit 98c4100b66

View File

@ -799,13 +799,14 @@ void get_cpu_count(void)
{ {
FILE *stat_fp; FILE *stat_fp;
static int rep = 0; static int rep = 0;
int highest_cpu_index;
char buf[256]; char buf[256];
if (info.cpu_usage) { if (info.cpu_usage) {
return; return;
} }
if (!(stat_fp = open_file("/proc/stat", &rep))) { if (!(stat_fp = open_file("/sys/devices/system/cpu/present", &rep))) {
return; return;
} }
@ -816,11 +817,8 @@ void get_cpu_count(void)
break; break;
} }
if (strncmp(buf, "cpu", 3) == 0 && isdigit(buf[3])) { if (sscanf(buf, "%*d-%d", &highest_cpu_index) == 1) {
if (info.cpu_count == 0) { info.cpu_count = highest_cpu_index + 1;
determine_longstat(buf);
}
info.cpu_count++;
} }
} }
info.cpu_usage = (float*)malloc((info.cpu_count + 1) * sizeof(float)); info.cpu_usage = (float*)malloc((info.cpu_count + 1) * sizeof(float));