+ while(MSG_process_is_suspended(t_simdata->sender)) {
+ DEBUG1("Oooups, the sender (%s) has been suspended in the meantime. Let's wait for him",
+ t_simdata->sender->name);
+ m_task_t task_to_wait_for = t_simdata->sender->simdata->waiting_task;
+ if(__MSG_process_isBlocked(t_simdata->sender)) {
+ DEBUG0("He's blocked. Let's wait for him to go in the suspended state");
+ __MSG_process_unblock(t_simdata->sender);
+ task_to_wait_for->simdata->using++;
+ __MSG_task_wait_event(process, task_to_wait_for);
+ MSG_task_destroy(task_to_wait_for);
+ } else {
+ DEBUG0("He's suspended. Let's wait for him to go in the resumed state");
+ task_to_wait_for->simdata->using++;
+ __MSG_task_wait_event(process, task_to_wait_for);
+ MSG_task_destroy(task_to_wait_for);
+ DEBUG0("He's resumed. He should block again. So let's free him.");
+ __MSG_process_unblock(t_simdata->sender);
+ break;
+ }
+ }