X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a4cd8aafa1caf358f873f87b142f76185acf1901..9b73466ada27682d1729f394549479da83ef4a99:/src/simix/smx_vm.c diff --git a/src/simix/smx_vm.c b/src/simix/smx_vm.c index f53c1881ed..05a9b45b18 100644 --- a/src/simix/smx_vm.c +++ b/src/simix/smx_vm.c @@ -106,7 +106,6 @@ 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); - SIMIX_simcall_answer(simcall); } /* ***** set/get state of a VM ***** */ @@ -150,7 +149,6 @@ void SIMIX_vm_migrate(smx_host_t ind_vm, smx_host_t ind_dst_pm) void SIMIX_pre_vm_migrate(smx_simcall_t simcall, smx_host_t ind_vm, smx_host_t ind_dst_pm) { SIMIX_vm_migrate(ind_vm, ind_dst_pm); - SIMIX_simcall_answer(simcall); } @@ -186,7 +184,28 @@ void SIMIX_vm_set_bound(smx_host_t ind_vm, double 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); - SIMIX_simcall_answer(simcall); +} + + +/** + * \brief Function to set the CPU affinity of the given SIMIX VM host. + * + * \param host the vm host (a smx_host_t) + * \param host the pm host (a smx_host_t) + * \param mask affinity mask (a unsigned long) + */ +void SIMIX_vm_set_affinity(smx_host_t ind_vm, smx_host_t ind_pm, unsigned long mask) +{ + /* make sure this at the MSG layer. */ + xbt_assert(SIMIX_vm_get_pm(ind_vm) == ind_pm); + + /* jump to vm_ws_set_vm_affinity(). */ + surf_vm_workstation_model->extension.vm_workstation.set_vm_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); } @@ -227,9 +246,6 @@ void SIMIX_pre_vm_suspend(smx_simcall_t simcall, smx_host_t ind_vm) SIMIX_vm_suspend(ind_vm, simcall->issuer); - /* without this, simcall_vm_suspend() does not return to the userland. why? */ - SIMIX_simcall_answer(simcall); - XBT_DEBUG("SIMIX_pre_vm_suspend done"); } @@ -262,7 +278,6 @@ 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) { SIMIX_vm_resume(ind_vm, simcall->issuer); - SIMIX_simcall_answer(simcall); } @@ -296,9 +311,6 @@ 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) { SIMIX_vm_save(ind_vm, simcall->issuer); - - /* without this, simcall_vm_suspend() does not return to the userland. why? */ - SIMIX_simcall_answer(simcall); } @@ -330,7 +342,6 @@ 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) { SIMIX_vm_restore(ind_vm, simcall->issuer); - SIMIX_simcall_answer(simcall); } @@ -363,7 +374,6 @@ void SIMIX_vm_shutdown(smx_host_t ind_vm, smx_process_t issuer) void SIMIX_pre_vm_shutdown(smx_simcall_t simcall, smx_host_t ind_vm) { SIMIX_vm_shutdown(ind_vm, simcall->issuer); - SIMIX_simcall_answer(simcall); } @@ -389,5 +399,4 @@ void SIMIX_vm_destroy(smx_host_t ind_vm) void SIMIX_pre_vm_destroy(smx_simcall_t simcall, smx_host_t ind_vm) { SIMIX_vm_destroy(ind_vm); - SIMIX_simcall_answer(simcall); }