X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8eece7b129709e79f87d945138a01ba44179c42b..6a9d0cb70ec8497d66b6e7f95f2a08b5a2cf8da9:/src/simix/smx_process.c diff --git a/src/simix/smx_process.c b/src/simix/smx_process.c index 31e46e630a..aa1378ae3a 100644 --- a/src/simix/smx_process.c +++ b/src/simix/smx_process.c @@ -169,7 +169,7 @@ smx_process_t SIMIX_process_create_from_wrapper(smx_process_arg_t args) { * * This function actually creates the process. * It may be called when a SIMCALL_PROCESS_CREATE simcall occurs, - * or directly for SIMIX internal purposes. + * or directly for SIMIX internal purposes. The sure thing is that it's called from maestro context. * * \return the process created */ @@ -384,6 +384,10 @@ smx_action_t SIMIX_process_suspend(smx_process_t process, smx_process_t issuer) SIMIX_process_sleep_suspend(process->waiting_action); break; + case SIMIX_ACTION_SYNCHRO: + /* Suspension is delayed to when the process is rescheduled. */ + break; + default: xbt_die("Internal error in SIMIX_process_suspend: unexpected action type %d", (int)process->waiting_action->type); @@ -404,8 +408,10 @@ void SIMIX_process_resume(smx_process_t process, smx_process_t issuer) XBT_IN("process = %p, issuer = %p", process, issuer); - if(process->context->iwannadie) + if(process->context->iwannadie) { + XBT_VERB("Ignoring request to suspend a process that is currently dying."); return; + } if(!process->suspended) return; process->suspended = 0; @@ -431,14 +437,18 @@ void SIMIX_process_resume(smx_process_t process, smx_process_t issuer) SIMIX_process_sleep_resume(process->waiting_action); break; + case SIMIX_ACTION_SYNCHRO: + /* I cannot resume it now. This is delayed to when the process is rescheduled at + * the end of the synchro. */ + break; + default: xbt_die("Internal error in SIMIX_process_resume: unexpected action type %d", (int)process->waiting_action->type); } } - else - XBT_WARN("Strange. Process %p is trying to resume himself.", issuer); - } + } else XBT_WARN("Strange. Process %p is trying to resume himself.", issuer); + XBT_OUT(); }