X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1637938a79546eb0b858a3e8ae3b28bd4af96ea4..daf48de02c5ddf826a62409660b93eaaeaa7006b:/src/plugins/vm/s4u_VirtualMachine.cpp diff --git a/src/plugins/vm/s4u_VirtualMachine.cpp b/src/plugins/vm/s4u_VirtualMachine.cpp index 45a9899da6..7dd96b893a 100644 --- a/src/plugins/vm/s4u_VirtualMachine.cpp +++ b/src/plugins/vm/s4u_VirtualMachine.cpp @@ -3,12 +3,12 @@ /* 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. */ +#include "simgrid/Exception.hpp" #include "simgrid/s4u/Actor.hpp" #include "simgrid/vm.h" #include "src/include/surf/surf.hpp" #include "src/plugins/vm/VirtualMachineImpl.hpp" #include "src/plugins/vm/VmHostExt.hpp" -#include "src/simix/smx_host_private.hpp" #include "src/surf/cpu_cas01.hpp" XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_vm, "S4U virtual machines"); @@ -16,21 +16,21 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_vm, "S4U virtual machines"); namespace simgrid { namespace s4u { -simgrid::xbt::signal VirtualMachine::on_start; -simgrid::xbt::signal VirtualMachine::on_started; -simgrid::xbt::signal VirtualMachine::on_shutdown; -simgrid::xbt::signal VirtualMachine::on_suspend; -simgrid::xbt::signal VirtualMachine::on_resume; -simgrid::xbt::signal VirtualMachine::on_migration_start; -simgrid::xbt::signal VirtualMachine::on_migration_end; - -VirtualMachine::VirtualMachine(std::string name, s4u::Host* physical_host, int core_amount) - : VirtualMachine(std::move(name), physical_host, core_amount, 1024) +simgrid::xbt::signal VirtualMachine::on_start; +simgrid::xbt::signal VirtualMachine::on_started; +simgrid::xbt::signal VirtualMachine::on_shutdown; +simgrid::xbt::signal VirtualMachine::on_suspend; +simgrid::xbt::signal VirtualMachine::on_resume; +simgrid::xbt::signal VirtualMachine::on_migration_start; +simgrid::xbt::signal VirtualMachine::on_migration_end; + +VirtualMachine::VirtualMachine(const std::string& name, s4u::Host* physical_host, int core_amount) + : VirtualMachine(name, physical_host, core_amount, 1024) { } -VirtualMachine::VirtualMachine(std::string name, s4u::Host* physical_host, int core_amount, size_t ramsize) - : Host(std::move(name)), pimpl_vm_(new vm::VirtualMachineImpl(this, physical_host, core_amount, ramsize)) +VirtualMachine::VirtualMachine(const std::string& name, s4u::Host* physical_host, int core_amount, size_t ramsize) + : Host(name), pimpl_vm_(new vm::VirtualMachineImpl(this, physical_host, core_amount, ramsize)) { // xbt_assert(s4u::Host::by_name(name) == nullptr, // "Cannot create a VM named %s: this name is already used by a host or a VM", get_cname()); @@ -45,7 +45,7 @@ VirtualMachine::VirtualMachine(std::string name, s4u::Host* physical_host, int c for (int i = 0; i < physical_host->get_pstate_count(); i++) speeds.push_back(physical_host->get_pstate_speed(i)); - surf_cpu_model_vm->create_cpu(this, &speeds, core_amount); + surf_cpu_model_vm->create_cpu(this, speeds, core_amount); if (physical_host->get_pstate() != 0) set_pstate(physical_host->get_pstate()); } @@ -85,8 +85,9 @@ void VirtualMachine::start() if (vm_ramsize > pm_ramsize - total_ramsize_of_vms) { XBT_WARN("cannot start %s@%s due to memory shortage: vm_ramsize %ld, free %ld, pm_ramsize %ld (bytes).", this->get_cname(), pm->get_cname(), vm_ramsize, pm_ramsize - total_ramsize_of_vms, pm_ramsize); - THROWF(vm_error, 0, "Memory shortage on host '%s', VM '%s' cannot be started", pm->get_cname(), - this->get_cname()); + throw VmFailureException(XBT_THROW_POINT, + xbt::string_printf("Memory shortage on host '%s', VM '%s' cannot be started", + pm->get_cname(), this->get_cname())); } }