diff options
author | Ivan Shapovalov <intelfx100@gmail.com> | 2012-12-24 03:08:51 +0400 |
---|---|---|
committer | Kristen Carlson Accardi <kristen@linux.intel.com> | 2013-01-31 14:03:28 -0800 |
commit | 41ea35b2da7720db875e22257a3adb8c3253bed4 (patch) | |
tree | b1cfd2c14e80b6c1641da25121d61a38057df71d /src/cpu/abstract_cpu.cpp | |
parent | d344d65e03a036e1d8129f455c8cc62c3a36ef9d (diff) |
Deduplication: properly merge cpu_package::calculate_freq() into abstract_cpu::calculate_freq()
The overridden method "cpu_package::calculate_freq()" differs from a generic implementation in
that it propagates the package's frequency to all in-package cores by
calling change_effective_frequency().
Instead of duplicating the code, introduce a small virtual function
freq_updated() which normally propagates frequency changes upwards and
override it for cpu_package, retaining the correct behavior. Then remove the override of
calculate_freq().
Signed-off-by: Ivan Shapovalov <intelfx100@gmail.com>
Diffstat (limited to 'src/cpu/abstract_cpu.cpp')
-rw-r--r-- | src/cpu/abstract_cpu.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/cpu/abstract_cpu.cpp b/src/cpu/abstract_cpu.cpp index ec52f55..fea377b 100644 --- a/src/cpu/abstract_cpu.cpp +++ b/src/cpu/abstract_cpu.cpp @@ -69,6 +69,13 @@ void abstract_cpu::account_freq(uint64_t freq, uint64_t duration) } +void abstract_cpu::freq_updated(uint64_t time) +{ + if(parent) + parent->calculate_freq(time); + old_idle = idle; +} + void abstract_cpu::measurement_start(void) { unsigned int i; @@ -385,9 +392,7 @@ void abstract_cpu::calculate_freq(uint64_t time) current_frequency = freq; idle = is_idle; - if (parent) - parent->calculate_freq(time); - old_idle = idle; + freq_updated(time); } void abstract_cpu::change_effective_frequency(uint64_t time, uint64_t frequency) |