Skip to content

Commit e363c2d

Browse files
author
Thierry Strudel
committed
cpustats: do not die in case a CPU is offlined
Change-Id: I05700266f1c7584ff51557b3e559654045379e87
1 parent affcb23 commit e363c2d

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

cpustats/cpustats.c

+9-3
Original file line numberDiff line numberDiff line change
@@ -267,16 +267,22 @@ static void read_freq_stats(int cpu) {
267267

268268
sprintf(filename, "/sys/devices/system/cpu/cpu%d/cpufreq/stats/time_in_state", cpu);
269269
file = fopen(filename, "r");
270-
if (!file) die("Could not open %s\n", filename);
271270
for (i = 0; i < new_cpus[cpu].freq_count; i++) {
272-
fscanf(file, "%u %lu\n", &new_cpus[cpu].freqs[i].freq,
271+
if (file) {
272+
fscanf(file, "%u %lu\n", &new_cpus[cpu].freqs[i].freq,
273273
&new_cpus[cpu].freqs[i].time);
274+
} else {
275+
/* The CPU has been off lined for some reason */
276+
new_cpus[cpu].freqs[i].freq = old_cpus[cpu].freqs[i].freq;
277+
new_cpus[cpu].freqs[i].time = old_cpus[cpu].freqs[i].time;
278+
}
274279
if (aggregate_freq_stats) {
275280
new_total_cpu.freqs[i].freq = new_cpus[cpu].freqs[i].freq;
276281
new_total_cpu.freqs[i].time += new_cpus[cpu].freqs[i].time;
277282
}
278283
}
279-
fclose(file);
284+
if (file)
285+
fclose(file);
280286
}
281287

282288
/*

0 commit comments

Comments
 (0)