Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge tag 'v3_9_90' into hypervisor
[simgrid.git] / src / simix / smx_vm.c
index f53c1881eddaa8bac0d86abbf9a8d67d5d2b161d..05a9b45b18693194e3cd053a3609da636c15a6f1 100644 (file)
@@ -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);
 }