-/* Copyright (c) 2015-2019. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2015-2020. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
surf_cpu_model_vm->create_cpu(this, speeds, core_amount);
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);
}
VirtualMachine::~VirtualMachine()
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)
+VirtualMachine* VirtualMachine::set_pm(simgrid::s4u::Host* pm)
{
kernel::actor::simcall([this, pm]() { pimpl_vm_->set_physical_host(pm); });
+ return this;
}
VirtualMachine::state VirtualMachine::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_ramsize(size_t ramsize)
+VirtualMachine* VirtualMachine::set_ramsize(size_t ramsize)
{
pimpl_vm_->set_ramsize(ramsize);
+ return this;
}
/** @brief Set a CPU bound for a given VM.
* @ingroup msg_VMs
* 2. Note that bound == 0 means no bound (i.e., unlimited). But, if a host has multiple CPU cores, the CPU share of a
* computation task (or a VM) never exceeds the capacity of a CPU core.
*/
-void VirtualMachine::set_bound(double bound)
+VirtualMachine* VirtualMachine::set_bound(double bound)
{
kernel::actor::simcall([this, bound]() { pimpl_vm_->set_bound(bound); });
+ return this;
}
} // namespace simgrid
}
/** @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();
}