On (12/04/12 11:37), Rajagopal Venkat wrote: > Powertop fails to display frequency stats when cpuidle subsystem > is not enabled. Fix it. > > Signed-off-by: Rajagopal Venkat <rajagopal.ven...@linaro.org> > ---
looks good to me, thanks. -ss > src/cpu/cpu.h | 7 ++++++- > src/cpu/cpu_linux.cpp | 36 +++++++++++++++++++++++++++--------- > 2 files changed, 33 insertions(+), 10 deletions(-) > > diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h > index 4480b11..781e33c 100644 > --- a/src/cpu/cpu.h > +++ b/src/cpu/cpu.h > @@ -159,7 +159,12 @@ extern vector<class abstract_cpu *> all_cpus; > class cpu_linux: public abstract_cpu > { > > - void account_freq(uint64_t frequency, uint64_t duration); > + void account_freq(uint64_t frequency, uint64_t duration); > + void parse_pstates_start(void); > + void parse_cstates_start(void); > + void parse_pstates_end(void); > + void parse_cstates_end(void); > + > public: > virtual void measurement_start(void); > virtual void measurement_end(void); > diff --git a/src/cpu/cpu_linux.cpp b/src/cpu/cpu_linux.cpp > index d6caf45..e7a3d37 100644 > --- a/src/cpu/cpu_linux.cpp > +++ b/src/cpu/cpu_linux.cpp > @@ -47,17 +47,13 @@ static int is_turbo(uint64_t freq, uint64_t max, uint64_t > maxmo) > return 1; > } > > -void cpu_linux::measurement_start(void) > +void cpu_linux::parse_cstates_start(void) > { > ifstream file; > - > DIR *dir; > struct dirent *entry; > char filename[256]; > int len; > - unsigned int i; > - > - abstract_cpu::measurement_start(); > > len = sprintf(filename, "/sys/devices/system/cpu/cpu%i/cpuidle", > number); > > @@ -111,9 +107,16 @@ void cpu_linux::measurement_start(void) > > } > closedir(dir); > +} > > - last_stamp = 0; > > +void cpu_linux::parse_pstates_start(void) > +{ > + ifstream file; > + char filename[256]; > + unsigned int i; > + > + last_stamp = 0; > for (i = 0; i < children.size(); i++) > if (children[i]) > children[i]->wiggle(); > @@ -136,8 +139,14 @@ void cpu_linux::measurement_start(void) > account_freq(0, 0); > } > > +void cpu_linux::measurement_start(void) > +{ > + abstract_cpu::measurement_start(); > + parse_cstates_start(); > + parse_pstates_start(); > +} > > -void cpu_linux::measurement_end(void) > +void cpu_linux::parse_cstates_end(void) > { > DIR *dir; > struct dirent *entry; > @@ -187,6 +196,12 @@ void cpu_linux::measurement_end(void) > > } > closedir(dir); > +} > + > +void cpu_linux::parse_pstates_end(void) > +{ > + char filename[256]; > + ifstream file; > > sprintf(filename, > "/sys/devices/system/cpu/cpu%i/cpufreq/stats/time_in_state", number); > > @@ -216,12 +231,15 @@ void cpu_linux::measurement_end(void) > } > file.close(); > } > +} > > - > +void cpu_linux::measurement_end(void) > +{ > + parse_cstates_end(); > + parse_pstates_end(); > abstract_cpu::measurement_end(); > } > > - > char * cpu_linux::fill_cstate_line(int line_nr, char *buffer, const char > *separator) > { > unsigned int i; _______________________________________________ linaro-dev mailing list linaro-dev@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-dev