aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/abstract_cpu.cpp
diff options
context:
space:
mode:
authorIvan Shapovalov <intelfx100@gmail.com>2012-12-24 03:08:51 +0400
committerKristen Carlson Accardi <kristen@linux.intel.com>2013-01-31 14:03:28 -0800
commit41ea35b2da7720db875e22257a3adb8c3253bed4 (patch)
treeb1cfd2c14e80b6c1641da25121d61a38057df71d /src/cpu/abstract_cpu.cpp
parentd344d65e03a036e1d8129f455c8cc62c3a36ef9d (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.cpp11
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)