->create_cpu(this, speeds)
->set_core_count(core_amount)
->seal();
+
if (physical_host->get_pstate() != 0)
set_pstate(physical_host->get_pstate());
- // Real hosts are (only) created through NetZone::create_host(), and this where the on_creation signal is fired.
- // VMs are created directly, thus firing the signal here. The right solution is probably to separate Host and VM.
- simgrid::s4u::Host::on_creation(*this);
+ seal(); // seal this host
}
VirtualMachine::~VirtualMachine()
{
on_destruction(*this);
- XBT_DEBUG("destroy %s", get_cname());
-
/* Don't free these things twice: they are the ones of my physical host */
set_netpoint(nullptr);
}
/* First, terminate all processes on the VM if necessary */
shutdown();
+ XBT_DEBUG("destroy %s", get_cname());
+
/* Then, destroy the VM object */
- get_impl()->destroy();
- delete this;
+ kernel::actor::simcall([this]() {
+ get_impl()->destroy();
+ delete this;
+ });
}
simgrid::s4u::Host* VirtualMachine::get_pm() const