- /* create SIMIX action to the communication */
- t_simdata->comm = SIMIX_action_communicate(t_simdata->sender->simdata->m_host->simdata->s_host,
- process->simdata->m_host->simdata->s_host,t->name, t_simdata->message_size,
- t_simdata->rate);
- /* if the process is suspend, create the action but stop its execution, it will be restart when the sender process resume */
- if (MSG_process_is_suspended(t_simdata->sender)) {
- DEBUG1("Process sender (%s) suspended", t_simdata->sender->name);
- SIMIX_action_set_priority(t_simdata->comm,0);
- }
- process->simdata->waiting_task = t;
- SIMIX_register_action_to_condition(t_simdata->comm, t_simdata->cond);
- SIMIX_cond_wait(t_simdata->cond,t_simdata->mutex);
- process->simdata->waiting_task = NULL;
-
- /* the task has already finished and the pointer must be null*/
- if (t->simdata->sender) {
- t->simdata->sender->simdata->waiting_task = NULL;
- /* action ended, set comm and compute = NULL, the actions is already destroyed in the main function */
- //t->simdata->comm = NULL;
- //t->simdata->compute = NULL;
- }
- /* for this process, don't need to change in get function*/
- t->simdata->receiver = NULL;
- SIMIX_mutex_unlock(t_simdata->mutex);
+ /* create SIMIX action to the communication */
+ t_simdata->comm =
+ SIMIX_action_communicate(t_simdata->sender->simdata->m_host->
+ simdata->s_host,
+ process->simdata->m_host->simdata->s_host,
+ t->name, t_simdata->message_size,
+ t_simdata->rate);
+ /* if the process is suspend, create the action but stop its execution, it will be restart when the sender process resume */
+ if (MSG_process_is_suspended(t_simdata->sender)) {
+ DEBUG1("Process sender (%s) suspended", t_simdata->sender->name);
+ SIMIX_action_set_priority(t_simdata->comm, 0);
+ }
+ process->simdata->waiting_task = t;
+ SIMIX_register_action_to_condition(t_simdata->comm, t_simdata->cond);
+ SIMIX_cond_wait(t_simdata->cond, t_simdata->mutex);
+ SIMIX_unregister_action_to_condition(t_simdata->comm, t_simdata->cond);
+ process->simdata->waiting_task = NULL;
+
+ /* the task has already finished and the pointer must be null */
+ if (t->simdata->sender) {
+ t->simdata->sender->simdata->waiting_task = NULL;
+ /* action ended, set comm and compute = NULL, the actions is already destroyed in the main function */
+ //t->simdata->comm = NULL;
+ //t->simdata->compute = NULL;
+ }
+ /* for this process, don't need to change in get function */
+ t->simdata->receiver = NULL;
+ SIMIX_mutex_unlock(t_simdata->mutex);