X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a69dbf9a2522d0ccde10350b49c5866ed9d731bd..47fd440ad6382d295645c81ca4c5c09bd5d51cc6:/src/simix/smx_vm.c diff --git a/src/simix/smx_vm.c b/src/simix/smx_vm.c index 9dcd99d4ce..213c1651f5 100644 --- a/src/simix/smx_vm.c +++ b/src/simix/smx_vm.c @@ -34,12 +34,6 @@ smx_host_t SIMIX_vm_create(const char *name, smx_host_t ind_phys_host) } -smx_host_t simcall_HANDLER_vm_create(smx_simcall_t simcall, const char *name, smx_host_t ind_phys_host) -{ - return SIMIX_vm_create(name, ind_phys_host); -} - - /* works for VMs and PMs */ static long host_get_ramsize(smx_host_t vm, int *overcommit) { @@ -103,23 +97,11 @@ void SIMIX_vm_start(smx_host_t ind_vm) } - -void simcall_HANDLER_vm_start(smx_simcall_t simcall, smx_host_t ind_vm) -{ - SIMIX_vm_start(ind_vm); -} - int SIMIX_vm_get_state(smx_host_t ind_vm) { return surf_resource_get_state(surf_workstation_resource_priv(ind_vm)); } -int simcall_HANDLER_vm_get_state(smx_simcall_t simcall, smx_host_t ind_vm) -{ - return SIMIX_vm_get_state(ind_vm); -} - - /** * \brief Function to migrate a SIMIX VM host. * @@ -134,11 +116,31 @@ void SIMIX_vm_migrate(smx_host_t ind_vm, smx_host_t ind_dst_pm) surf_vm_workstation_migrate(ind_vm, ind_dst_pm); } -void simcall_HANDLER_vm_migrate(smx_simcall_t simcall, smx_host_t ind_vm, smx_host_t ind_dst_pm) +/** + * \brief Encompassing simcall to prevent the removal of the src or the dst node at the end of a VM migration + * The simcall actually invokes the following calls: + * simcall_vm_set_affinity(vm, src_pm, 0); + * simcall_vm_migrate(vm, dst_pm); + * simcall_vm_resume(vm); + * + * It is called at the end of the migration_rx_fun function from msg/msg_vm.c + * + * \param vm VM to migrate + * \param src_pm Source physical host + * \param dst_pmt Destination physical host + */ +void SIMIX_vm_migratefrom_resumeto(smx_host_t vm, smx_host_t src_pm, smx_host_t dst_pm) { - SIMIX_vm_migrate(ind_vm, ind_dst_pm); -} + /* deinstall the current affinity setting for the CPU */ + SIMIX_vm_set_affinity(vm, src_pm, 0); + /* Update the vm location */ + SIMIX_vm_migrate(vm, dst_pm); + + /* Resume the VM */ + smx_process_t self = SIMIX_process_self(); + SIMIX_vm_resume(vm, self->simcall.issuer); +} /** * \brief Function to get the physical host of the given SIMIX VM host. @@ -151,12 +153,6 @@ void *SIMIX_vm_get_pm(smx_host_t ind_vm) return surf_vm_workstation_get_pm(ind_vm); } -void *simcall_HANDLER_vm_get_pm(smx_simcall_t simcall, smx_host_t ind_vm) -{ - return SIMIX_vm_get_pm(ind_vm); -} - - /** * \brief Function to set the CPU bound of the given SIMIX VM host. * @@ -169,12 +165,6 @@ void SIMIX_vm_set_bound(smx_host_t ind_vm, double bound) surf_vm_workstation_set_bound(ind_vm, bound); } -void simcall_HANDLER_vm_set_bound(smx_simcall_t simcall, smx_host_t ind_vm, double bound) -{ - SIMIX_vm_set_bound(ind_vm, bound); -} - - /** * \brief Function to set the CPU affinity of the given SIMIX VM host. * @@ -191,11 +181,6 @@ void SIMIX_vm_set_affinity(smx_host_t ind_vm, smx_host_t ind_pm, unsigned long m surf_vm_workstation_set_affinity(ind_vm, ind_pm, mask); } -void simcall_HANDLER_vm_set_affinity(smx_simcall_t simcall, smx_host_t ind_vm, smx_host_t ind_pm, unsigned long mask) -{ - SIMIX_vm_set_affinity(ind_vm, ind_pm, mask); -} - /** * \brief Function to suspend a SIMIX VM host. This function stops the execution of the @@ -387,8 +372,3 @@ void SIMIX_vm_destroy(smx_host_t ind_vm) /* jump to vm_ws_destroy(). The surf level resource will be freed. */ surf_vm_workstation_destroy(ind_vm); } - -void simcall_HANDLER_vm_destroy(smx_simcall_t simcall, smx_host_t ind_vm) -{ - SIMIX_vm_destroy(ind_vm); -}