#include "src/plugins/vm/VmHostExt.hpp"
#include "src/surf/cpu_cas01.hpp"
-XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_vm, "S4U virtual machines");
-
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(s4u_vm, s4u, "S4U virtual machines");
namespace simgrid {
namespace s4u {
{
on_start(*this);
- simgrid::kernel::actor::simcall([this]() {
- simgrid::vm::VmHostExt::ensureVmExtInstalled();
+ kernel::actor::simcall([this]() {
+ vm::VmHostExt::ensureVmExtInstalled();
- simgrid::s4u::Host* pm = this->pimpl_vm_->get_physical_host();
- if (pm->extension<simgrid::vm::VmHostExt>() == nullptr)
- pm->extension_set(new simgrid::vm::VmHostExt());
+ Host* pm = this->pimpl_vm_->get_physical_host();
+ if (pm->extension<vm::VmHostExt>() == nullptr)
+ pm->extension_set(new vm::VmHostExt());
- long pm_ramsize = pm->extension<simgrid::vm::VmHostExt>()->ramsize;
- int pm_overcommit = pm->extension<simgrid::vm::VmHostExt>()->overcommit;
+ long pm_ramsize = pm->extension<vm::VmHostExt>()->ramsize;
+ int pm_overcommit = pm->extension<vm::VmHostExt>()->overcommit;
long vm_ramsize = this->get_ramsize();
if (pm_ramsize && not pm_overcommit) { /* Only verify that we don't overcommit on need */
/* Retrieve the memory occupied by the VMs on that host. Yep, we have to traverse all VMs of all hosts for that */
long total_ramsize_of_vms = 0;
- for (simgrid::s4u::VirtualMachine* const& ws_vm : simgrid::vm::VirtualMachineImpl::allVms_)
+ for (VirtualMachine* const& ws_vm : vm::VirtualMachineImpl::allVms_)
if (pm == ws_vm->get_pm())
total_ramsize_of_vms += ws_vm->get_ramsize();
void VirtualMachine::suspend()
{
on_suspend(*this);
- smx_actor_t issuer = SIMIX_process_self();
- simgrid::kernel::actor::simcall([this, issuer]() { pimpl_vm_->suspend(issuer); });
+ kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self();
+ kernel::actor::simcall([this, issuer]() { pimpl_vm_->suspend(issuer); });
}
void VirtualMachine::resume()
void VirtualMachine::shutdown()
{
- smx_actor_t issuer = SIMIX_process_self();
- simgrid::kernel::actor::simcall([this, issuer]() { pimpl_vm_->shutdown(issuer); });
+ kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self();
+ kernel::actor::simcall([this, issuer]() { pimpl_vm_->shutdown(issuer); });
on_shutdown(*this);
}
Host::destroy();
}
-simgrid::s4u::Host* VirtualMachine::get_pm()
+simgrid::s4u::Host* VirtualMachine::get_pm() const
{
return pimpl_vm_->get_physical_host();
}
void VirtualMachine::set_pm(simgrid::s4u::Host* pm)
{
- simgrid::kernel::actor::simcall([this, pm]() { pimpl_vm_->set_physical_host(pm); });
+ kernel::actor::simcall([this, pm]() { pimpl_vm_->set_physical_host(pm); });
}
VirtualMachine::state VirtualMachine::get_state()
{
- return simgrid::kernel::actor::simcall([this]() { return pimpl_vm_->get_state(); });
+ return kernel::actor::simcall([this]() { return pimpl_vm_->get_state(); });
}
-size_t VirtualMachine::get_ramsize()
+size_t VirtualMachine::get_ramsize() const
{
return pimpl_vm_->get_ramsize();
}
*/
void VirtualMachine::set_bound(double bound)
{
- simgrid::kernel::actor::simcall([this, bound]() { pimpl_vm_->set_bound(bound); });
+ kernel::actor::simcall([this, bound]() { pimpl_vm_->set_bound(bound); });
}
} // namespace simgrid
return new simgrid::s4u::VirtualMachine(name, pm, coreAmount);
}
-const char* sg_vm_get_name(sg_vm_t vm)
+const char* sg_vm_get_name(const_sg_vm_t vm)
{
return vm->get_cname();
}
/** @brief Get the physical host of a given VM. */
-sg_host_t sg_vm_get_pm(sg_vm_t vm)
+sg_host_t sg_vm_get_pm(const_sg_vm_t vm)
{
return vm->get_pm();
}
vm->set_ramsize(size);
}
-size_t sg_vm_get_ramsize(sg_vm_t vm)
+size_t sg_vm_get_ramsize(const_sg_vm_t vm)
{
return vm->get_ramsize();
}
}
/** @brief Immediately kills all processes within the given VM.
- * Any memory that they allocated will be leaked, unless you used #MSG_process_on_exit().
*
- * No extra delay occurs. If you want to simulate this too, you want to use a #MSG_process_sleep().
+ @beginrst
+
+ The memory allocated by these actors is leaked, unless you used :cpp:func:`simgrid::s4u::Actor::on_exit`.
+
+ @endrst
+ *
+ * No extra delay occurs by default. You may let your actor sleep by a specific amount to simulate any extra delay that you want.
*/
void sg_vm_shutdown(sg_vm_t vm)
{