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 ***** */
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);
}
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);
}
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");
}
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);
}
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);
}
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);
}
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);
}
void SIMIX_pre_vm_destroy(smx_simcall_t simcall, smx_host_t ind_vm)
{
SIMIX_vm_destroy(ind_vm);
- SIMIX_simcall_answer(simcall);
}