* (because the user changed the pstate, or because of external trace events) ("onSpeedChange") */
static void on_host_change(simgrid::s4u::Host const& h)
{
- auto* host = &h;
+ const auto* host = &h;
if (const auto* vm = dynamic_cast<simgrid::s4u::VirtualMachine const*>(host)) // Take the PM of virtual machines
host = vm->get_pm();
static void on_activity_suspend_resume(simgrid::s4u::Activity const& activity)
{
- if (auto* action = dynamic_cast<simgrid::kernel::resource::CpuAction*>(activity.get_impl()->model_action_);
- action != nullptr)
+ if (const auto* action = dynamic_cast<simgrid::kernel::resource::CpuAction*>(activity.get_impl()->model_action_))
on_action_state_change(*action, /*ignored*/ action->get_state());
}
HostEnergy::EXTENSION_ID = simgrid::s4u::Host::extension_create<HostEnergy>();
simgrid::s4u::Host::on_creation_cb(&on_creation);
- simgrid::s4u::Host::on_state_change_cb(&on_host_change);
+ simgrid::s4u::Host::on_onoff_cb(&on_host_change);
simgrid::s4u::Host::on_speed_change_cb(&on_host_change);
simgrid::s4u::Host::on_destruction_cb(&on_host_destruction);
simgrid::s4u::Host::on_exec_state_change_cb(&on_action_state_change);
simgrid::s4u::Engine::on_simulation_end_cb(&on_simulation_end);
// We may only have one actor on a node. If that actor executes something like
// compute -> recv -> compute
- // the recv operation will not trigger a "CpuAction::on_state_change". This means
+ // the recv operation will not trigger a "Host::on_exec_state_change_cb". This means
// that the next trigger would be the 2nd compute, hence ignoring the idle time
// during the recv call. By updating at the beginning of a compute, we can
// fix that. (If the cpu is not idle, this is not required.)
simgrid::s4u::Host* host = activity.get_host();
if (const auto* vm = dynamic_cast<simgrid::s4u::VirtualMachine*>(host))
host = vm->get_pm();
+ xbt_assert(host != nullptr);
host->extension<HostEnergy>()->update();
}
});
double sg_host_get_consumed_energy(const_sg_host_t host)
{
ensure_plugin_inited();
- auto host_energy = host->extension<HostEnergy>();
+ auto* host_energy = host->extension<HostEnergy>();
xbt_assert(host_energy->has_pstate_power_values(), "No power range properties specified for host %s",
host->get_cname());
return host_energy->get_consumed_energy();
double sg_host_get_current_consumption(const_sg_host_t host)
{
ensure_plugin_inited();
- auto host_energy = host->extension<HostEnergy>();
+ auto* host_energy = host->extension<HostEnergy>();
xbt_assert(host_energy->has_pstate_power_values(), "No power range properties specified for host %s",
host->get_cname());
return host_energy->get_current_watts_value();