diff options
author | Thierry Strudel <tstrudel@google.com> | 2015-10-13 15:10:32 -0700 |
---|---|---|
committer | Thierry Strudel <tstrudel@google.com> | 2016-03-09 00:41:02 +0000 |
commit | e363c2db056fefd6b45d77a36a39de8fa85dad7b (patch) | |
tree | 030c60cd719757932fc8ecfc0832ee28e593e2cc /cpustats | |
parent | affcb23f280cae4d6c73388e98ec52e46a25dec3 (diff) | |
download | extras-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.c | 12 |
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); } /* |