Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
And now, use the correct syntax for default values in variable substitution
[simgrid.git] / src / simix / smx_process.c
index 0e31c2e..fa1fc66 100644 (file)
@@ -332,8 +332,9 @@ void SIMIX_process_suspend(smx_process_t process)
     surf_workstation_model->common_public->suspend(dummy->simdata->surf_action);
     SIMIX_register_action_to_condition(dummy, cond);
     __SIMIX_cond_wait(cond);
-    //SIMIX_action_destroy(dummy);
-    //SIMIX_cond_destroy(cond);
+    SIMIX_unregister_action_to_condition(dummy, cond);
+    SIMIX_action_destroy(dummy);
+    SIMIX_cond_destroy(cond);
   }
   return;
 }
@@ -381,6 +382,21 @@ void SIMIX_process_resume(smx_process_t process)
 
 }
 
+/**
+ * \brief Migrates an agent to another location.
+ *
+ * This function changes the value of the host on which \a process is running.
+ */
+void SIMIX_process_change_host(smx_process_t process, char *source, char *dest)
+{
+  smx_simdata_process_t p_simdata = process->simdata;
+  smx_host_t h1 = SIMIX_host_get_by_name(source);
+  smx_host_t h2 = SIMIX_host_get_by_name(dest);
+  p_simdata->smx_host =  h2;
+  xbt_swag_remove(process, h1->simdata->process_list);
+  xbt_swag_insert(process, h2->simdata->process_list);
+}
+
 /**
  * \brief Returns true if the process is suspended .
  *