X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7f4f03348bd07609e258eb3b545bdafc2c881847..05d190ed39b43f561714b3a065dbb6dcab48b364:/src/simix/smx_vm.cpp diff --git a/src/simix/smx_vm.cpp b/src/simix/smx_vm.cpp index dae28e7b8f..ae5fdbd923 100644 --- a/src/simix/smx_vm.cpp +++ b/src/simix/smx_vm.cpp @@ -5,10 +5,9 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include "smx_private.h" -#include "xbt/sysdep.h" -#include "xbt/log.h" -#include "xbt/dict.h" #include "mc/mc.h" +#include "src/surf/virtual_machine.hpp" +#include "src/surf/HostImpl.hpp" //If you need to log some stuffs, just uncomment these two lines and uses XBT_DEBUG for instance XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_vm, simix, "Logging specific to SIMIX (vms)"); @@ -38,7 +37,7 @@ sg_host_t SIMIX_vm_create(const char *name, sg_host_t ind_phys_host) static long host_get_ramsize(sg_host_t vm, int *overcommit) { s_vm_params_t params; - surf_host_get_params(vm, ¶ms); + vm->extension()->getParams(¶ms); if (overcommit) *overcommit = params.overcommit; @@ -61,12 +60,12 @@ static int __can_be_started(sg_host_t vm) } if (pm_overcommit) { - XBT_INFO("%s allows memory overcommit.", pm->key); + XBT_VERB("%s allows memory overcommit.", sg_host_get_name(pm)); return 1; } long total_ramsize_of_vms = 0; - xbt_dynar_t dyn_vms = surf_host_get_vms(pm); + xbt_dynar_t dyn_vms = pm->extension()->getVms(); { unsigned int cursor = 0; sg_host_t another_vm; @@ -78,28 +77,31 @@ static int __can_be_started(sg_host_t vm) if (vm_ramsize > pm_ramsize - total_ramsize_of_vms) { XBT_WARN("cannnot start %s@%s due to memory shortage: vm_ramsize %ld, free %ld, pm_ramsize %ld (bytes).", - vm->key, pm->key, vm_ramsize, pm_ramsize - total_ramsize_of_vms, pm_ramsize); + sg_host_get_name(vm), sg_host_get_name(pm), + vm_ramsize, pm_ramsize - total_ramsize_of_vms, pm_ramsize); xbt_dynar_free(&dyn_vms); return 0; } - xbt_dynar_free(&dyn_vms); - return 1; + return 1; } void SIMIX_vm_start(sg_host_t ind_vm) { if (__can_be_started(ind_vm)) - surf_host_set_state(surf_host_resource_priv(ind_vm), - (e_surf_resource_state_t) SURF_VM_STATE_RUNNING); + static_cast( + ind_vm->extension() + )->setState(SURF_VM_STATE_RUNNING); else - THROWF(vm_error, 0, "The VM %s cannot be started", SIMIX_host_get_name(ind_vm)); + THROWF(vm_error, 0, "The VM %s cannot be started", sg_host_get_name(ind_vm)); } -int SIMIX_vm_get_state(sg_host_t ind_vm) +e_surf_vm_state_t SIMIX_vm_get_state(sg_host_t ind_vm) { - return surf_host_get_state(surf_host_resource_priv(ind_vm)); + return static_cast( + ind_vm->extension() + )->getState(); } /** @@ -191,7 +193,7 @@ void SIMIX_vm_set_affinity(sg_host_t ind_vm, sg_host_t ind_pm, unsigned long mas */ void SIMIX_vm_suspend(sg_host_t ind_vm, smx_process_t issuer) { - const char *name = SIMIX_host_get_name(ind_vm); + const char *name = sg_host_get_name(ind_vm); if (SIMIX_vm_get_state(ind_vm) != SURF_VM_STATE_RUNNING) THROWF(vm_error, 0, "VM(%s) is not running", name); @@ -231,7 +233,7 @@ void simcall_HANDLER_vm_suspend(smx_simcall_t simcall, sg_host_t ind_vm) */ void SIMIX_vm_resume(sg_host_t ind_vm, smx_process_t issuer) { - const char *name = SIMIX_host_get_name(ind_vm); + const char *name = sg_host_get_name(ind_vm); if (SIMIX_vm_get_state(ind_vm) != SURF_VM_STATE_SUSPENDED) THROWF(vm_error, 0, "VM(%s) was not suspended", name); @@ -263,7 +265,7 @@ void simcall_HANDLER_vm_resume(smx_simcall_t simcall, sg_host_t ind_vm) */ void SIMIX_vm_save(sg_host_t ind_vm, smx_process_t issuer) { - const char *name = SIMIX_host_get_name(ind_vm); + const char *name = sg_host_get_name(ind_vm); if (SIMIX_vm_get_state(ind_vm) != SURF_VM_STATE_RUNNING) THROWF(vm_error, 0, "VM(%s) is not running", name); @@ -295,7 +297,7 @@ void simcall_HANDLER_vm_save(smx_simcall_t simcall, sg_host_t ind_vm) */ void SIMIX_vm_restore(sg_host_t ind_vm, smx_process_t issuer) { - const char *name = SIMIX_host_get_name(ind_vm); + const char *name = sg_host_get_name(ind_vm); if (SIMIX_vm_get_state(ind_vm) != SURF_VM_STATE_SAVED) THROWF(vm_error, 0, "VM(%s) was not saved", name); @@ -327,7 +329,7 @@ void simcall_HANDLER_vm_restore(smx_simcall_t simcall, sg_host_t ind_vm) */ void SIMIX_vm_shutdown(sg_host_t ind_vm, smx_process_t issuer) { - const char *name = SIMIX_host_get_name(ind_vm); + const char *name = sg_host_get_name(ind_vm); if (SIMIX_vm_get_state(ind_vm) != SURF_VM_STATE_RUNNING) THROWF(vm_error, 0, "VM(%s) is not running", name); @@ -342,8 +344,9 @@ void SIMIX_vm_shutdown(sg_host_t ind_vm, smx_process_t issuer) } /* FIXME: we may have to do something at the surf layer, e.g., vcpu action */ - surf_host_set_state(surf_host_resource_priv(ind_vm), - (e_surf_resource_state_t) SURF_VM_STATE_CREATED); + static_cast( + ind_vm->extension() + )->setState(SURF_VM_STATE_CREATED); } void simcall_HANDLER_vm_shutdown(smx_simcall_t simcall, sg_host_t ind_vm) @@ -361,8 +364,7 @@ void SIMIX_vm_destroy(sg_host_t ind_vm) { /* this code basically performs a similar thing like SIMIX_host_destroy() */ - xbt_assert((ind_vm != NULL), "Invalid parameters"); - const char *hostname = SIMIX_host_get_name(ind_vm); + const char *hostname = sg_host_get_name(ind_vm); XBT_DEBUG("destroy %s", hostname);