Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
prefer automatic memory management
[simgrid.git] / src / surf / cpu_interface.cpp
index 98bb02c..c4ef192 100644 (file)
@@ -134,17 +134,11 @@ int Cpu::get_core_count()
   return core_count_;
 }
 
-void Cpu::set_state_trace(tmgr_trace_t trace)
-{
-  xbt_assert(state_event_ == nullptr, "Cannot set a second state trace to Host %s", host_->get_cname());
-
-  state_event_ = future_evt_set->add_trace(trace, this);
-}
 void Cpu::set_speed_trace(tmgr_trace_t trace)
 {
   xbt_assert(speed_.event == nullptr, "Cannot set a second speed trace to Host %s", host_->get_cname());
 
-  speed_.event = future_evt_set->add_trace(trace, this);
+  speed_.event = future_evt_set.add_trace(trace, this);
 }
 
 
@@ -172,22 +166,25 @@ void CpuAction::update_remains_lazy(double now)
   set_last_value(get_variable()->get_value());
 }
 
-simgrid::xbt::signal<void(simgrid::surf::CpuAction*)> CpuAction::on_state_change;
+simgrid::xbt::signal<void(simgrid::surf::CpuAction*, kernel::resource::Action::State)> CpuAction::on_state_change;
 
 void CpuAction::suspend(){
-  on_state_change(this);
+  Action::State previous = get_state();
+  on_state_change(this, previous);
   Action::suspend();
 }
 
 void CpuAction::resume(){
-  on_state_change(this);
+  Action::State previous = get_state();
+  on_state_change(this, previous);
   Action::resume();
 }
 
 void CpuAction::set_state(Action::State state)
 {
+  Action::State previous = get_state();
   Action::set_state(state);
-  on_state_change(this);
+  on_state_change(this, previous);
 }
 
 /** @brief returns a list of all CPUs that this action is using */