X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/312dad6a570ced09122bcec5404515e470b7505d..f71e493a21cbe3ca6dce72765bf0b46643db158c:/src/surf/cpu_interface.cpp diff --git a/src/surf/cpu_interface.cpp b/src/surf/cpu_interface.cpp index 33d23ebef3..9d4b575bce 100644 --- a/src/surf/cpu_interface.cpp +++ b/src/surf/cpu_interface.cpp @@ -52,7 +52,7 @@ void CpuModel::update_actions_state_full(double /*now*/, double delta) Cpu::Cpu(s4u::Host* host, const std::vector& speed_per_pstate) : Resource_T(host->get_cname()), piface_(host), speed_per_pstate_(speed_per_pstate) { - speed_.scale = 1; + speed_.scale = 1; speed_.peak = speed_per_pstate_.front(); host->pimpl_cpu = this; } @@ -73,13 +73,21 @@ Cpu* Cpu::set_pstate(int pstate_index) get_cname(), pstate_index, static_cast(speed_per_pstate_.size())); double new_peak_speed = speed_per_pstate_[pstate_index]; - pstate_ = pstate_index; - speed_.peak = new_peak_speed; + pstate_ = pstate_index; + speed_.peak = new_peak_speed; on_speed_change(); return this; } +Cpu* Cpu::set_pstate_speed(const std::vector& speed_per_state) +{ + xbt_assert(speed_per_state.size() > 0, "CPU %s: processor speed vector cannot be empty", get_cname()); + xbt_assert(not is_sealed(), "CPU %s: processor speed cannot be changed once CPU has been sealed", get_cname()); + speed_per_pstate_ = speed_per_state; + return this; +} + double Cpu::get_pstate_peak_speed(int pstate_index) const { xbt_assert((pstate_index <= static_cast(speed_per_pstate_.size())), @@ -152,13 +160,15 @@ void CpuAction::update_remains_lazy(double now) xbt::signal CpuAction::on_state_change; -void CpuAction::suspend(){ +void CpuAction::suspend() +{ Action::State previous = get_state(); on_state_change(*this, previous); Action::suspend(); } -void CpuAction::resume(){ +void CpuAction::resume() +{ Action::State previous = get_state(); on_state_change(*this, previous); Action::resume();