- simdata_process_t simdata = NULL;
- simdata_task_t simdata_task = NULL;
- int i;
-
- xbt_assert0(((process) && (process->simdata)), "Invalid parameters");
-
- PAJE_PROCESS_PUSH_STATE(process,"S");
-
- if(process!=MSG_process_self()) {
- simdata = process->simdata;
-
- xbt_assert0(simdata->waiting_task,"Process not waiting for anything else. Weird !");
-
- simdata_task = simdata->waiting_task->simdata;
-
- simdata->suspended = 1;
- if(simdata->blocked) return MSG_OK;
-
- xbt_assert0(((simdata_task->compute)||(simdata_task->comm))&&
- !((simdata_task->compute)&&(simdata_task->comm)),
- "Got a problem in deciding which action to choose !");
- simdata->suspended = 1;
- if(simdata_task->compute)
- surf_workstation_resource->common_public->suspend(simdata_task->compute);
- else
- surf_workstation_resource->common_public->suspend(simdata_task->comm);
- } else {
- m_task_t dummy = MSG_TASK_UNINITIALIZED;
- dummy = MSG_task_create("suspended", 0.0, 0, NULL);