summaryrefslogtreecommitdiff
path: root/cpustats
diff options
context:
space:
mode:
authorThierry Strudel <tstrudel@google.com>2015-10-13 15:10:32 -0700
committerThierry Strudel <tstrudel@google.com>2016-03-09 00:41:02 +0000
commite363c2db056fefd6b45d77a36a39de8fa85dad7b (patch)
tree030c60cd719757932fc8ecfc0832ee28e593e2cc /cpustats
parentaffcb23f280cae4d6c73388e98ec52e46a25dec3 (diff)
downloadextras-e363c2db056fefd6b45d77a36a39de8fa85dad7b.tar.gz
cpustats: do not die in case a CPU is offlined
Change-Id: I05700266f1c7584ff51557b3e559654045379e87
Diffstat (limited to 'cpustats')
-rw-r--r--cpustats/cpustats.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/cpustats/cpustats.c b/cpustats/cpustats.c
index 32d75b2b..0042caf5 100644
--- a/cpustats/cpustats.c
+++ b/cpustats/cpustats.c
@@ -267,16 +267,22 @@ static void read_freq_stats(int cpu) {
sprintf(filename, "/sys/devices/system/cpu/cpu%d/cpufreq/stats/time_in_state", cpu);
file = fopen(filename, "r");
- if (!file) die("Could not open %s\n", filename);
for (i = 0; i < new_cpus[cpu].freq_count; i++) {
- fscanf(file, "%u %lu\n", &new_cpus[cpu].freqs[i].freq,
+ if (file) {
+ fscanf(file, "%u %lu\n", &new_cpus[cpu].freqs[i].freq,
&new_cpus[cpu].freqs[i].time);
+ } else {
+ /* The CPU has been off lined for some reason */
+ new_cpus[cpu].freqs[i].freq = old_cpus[cpu].freqs[i].freq;
+ new_cpus[cpu].freqs[i].time = old_cpus[cpu].freqs[i].time;
+ }
if (aggregate_freq_stats) {
new_total_cpu.freqs[i].freq = new_cpus[cpu].freqs[i].freq;
new_total_cpu.freqs[i].time += new_cpus[cpu].freqs[i].time;
}
}
- fclose(file);
+ if (file)
+ fclose(file);
}
/*