*/
void SIMIX_process_runall(void)
{
- SIMIX_context_runall(simix_global->process_to_run);
+ SIMIX_context_runall();
+
xbt_dynar_t tmp = simix_global->process_that_ran;
simix_global->process_that_ran = simix_global->process_to_run;
simix_global->process_to_run = tmp;
void SIMIX_process_suspend(smx_process_t process, smx_process_t issuer)
{
+ xbt_assert((process != NULL), "Invalid parameters");
+
+ if (process->suspended) {
+ XBT_DEBUG("Process '%s' is already suspended", process->name);
+ return;
+ }
+
process->suspended = 1;
/* If we are suspending another process, and it is waiting on an action,
- suspend it's action. */
+ suspend its action. */
if (process != issuer) {
if (process->waiting_action) {
break;
default:
- THROW_IMPOSSIBLE;
+ xbt_die("Internal error in SIMIX_process_suspend: unexpected action type %d",
+ process->waiting_action->type);
}
}
}
{
xbt_assert((process != NULL), "Invalid parameters");
+ if (!process->suspended) {
+ XBT_DEBUG("Process '%s' is not suspended", process->name);
+ return;
+ }
+
process->suspended = 0;
/* If we are resuming another process, resume the action it was waiting for
break;
default:
- THROW_IMPOSSIBLE;
+ xbt_die("Internal error in SIMIX_process_resume: unexpected action type %d",
+ process->waiting_action->type);
}
}
else {
SIMIX_context_suspend(self->context);
/* Ok, maestro returned control to us */
- XBT_DEBUG("Maestro returned control to me: '%s'", self->name);
+ XBT_DEBUG("Control returned to me: '%s'", self->name);
if (self->context->iwannadie){
XBT_DEBUG("I wanna die!");