X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4aa1cd22325b98b31547d515f870d99ba2057d5f..4f6f4197d794403edec36db6fb1c0d1987bdda9d:/src/simix/smx_vm.c diff --git a/src/simix/smx_vm.c b/src/simix/smx_vm.c index d91b857b7d..9bf0d6ba01 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 SIMIX_pre_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 SIMIX_pre_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 SIMIX_pre_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,30 @@ 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 SIMIX_pre_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 */ + SIMIX_vm_resume(vm); +} /** * \brief Function to get the physical host of the given SIMIX VM host. @@ -151,12 +152,6 @@ void *SIMIX_vm_get_pm(smx_host_t ind_vm) return surf_vm_workstation_get_pm(ind_vm); } -void *SIMIX_pre_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 +164,6 @@ void SIMIX_vm_set_bound(smx_host_t ind_vm, double bound) surf_vm_workstation_set_bound(ind_vm, bound); } -void SIMIX_pre_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 +180,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 SIMIX_pre_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 @@ -225,7 +209,7 @@ void SIMIX_vm_suspend(smx_host_t ind_vm, smx_process_t issuer) XBT_DEBUG("suspend all processes on the VM done done"); } -void SIMIX_pre_vm_suspend(smx_simcall_t simcall, smx_host_t ind_vm) +void simcall_HANDLER_vm_suspend(smx_simcall_t simcall, smx_host_t ind_vm) { if (simcall->issuer->smx_host == ind_vm) { XBT_ERROR("cannot suspend the VM where I run"); @@ -234,7 +218,7 @@ void SIMIX_pre_vm_suspend(smx_simcall_t simcall, smx_host_t ind_vm) SIMIX_vm_suspend(ind_vm, simcall->issuer); - XBT_DEBUG("SIMIX_pre_vm_suspend done"); + XBT_DEBUG("simcall_HANDLER_vm_suspend done"); } @@ -263,7 +247,7 @@ void SIMIX_vm_resume(smx_host_t ind_vm, smx_process_t issuer) } } -void SIMIX_pre_vm_resume(smx_simcall_t simcall, smx_host_t ind_vm) +void simcall_HANDLER_vm_resume(smx_simcall_t simcall, smx_host_t ind_vm) { SIMIX_vm_resume(ind_vm, simcall->issuer); } @@ -296,7 +280,7 @@ void SIMIX_vm_save(smx_host_t ind_vm, smx_process_t issuer) } } -void SIMIX_pre_vm_save(smx_simcall_t simcall, smx_host_t ind_vm) +void simcall_HANDLER_vm_save(smx_simcall_t simcall, smx_host_t ind_vm) { SIMIX_vm_save(ind_vm, simcall->issuer); } @@ -327,7 +311,7 @@ void SIMIX_vm_restore(smx_host_t ind_vm, smx_process_t issuer) } } -void SIMIX_pre_vm_restore(smx_simcall_t simcall, smx_host_t ind_vm) +void simcall_HANDLER_vm_restore(smx_simcall_t simcall, smx_host_t ind_vm) { SIMIX_vm_restore(ind_vm, simcall->issuer); } @@ -361,7 +345,7 @@ void SIMIX_vm_shutdown(smx_host_t ind_vm, smx_process_t issuer) (int)SURF_VM_STATE_CREATED); } -void SIMIX_pre_vm_shutdown(smx_simcall_t simcall, smx_host_t ind_vm) +void simcall_HANDLER_vm_shutdown(smx_simcall_t simcall, smx_host_t ind_vm) { SIMIX_vm_shutdown(ind_vm, simcall->issuer); } @@ -387,8 +371,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 SIMIX_pre_vm_destroy(smx_simcall_t simcall, smx_host_t ind_vm) -{ - SIMIX_vm_destroy(ind_vm); -}