X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b8ba0bc2f48c6b9b96dfedd8fd383b941d5fdd0b..c05339428d64488dac5a51e900da3d9c2400a077:/src/simix/smx_smurf.c diff --git a/src/simix/smx_smurf.c b/src/simix/smx_smurf.c index 56863f8051..ab94a65be2 100644 --- a/src/simix/smx_smurf.c +++ b/src/simix/smx_smurf.c @@ -13,14 +13,15 @@ XBT_INLINE smx_simcall_t SIMIX_simcall_mine() /** * \brief Makes the current process do a simcall to the kernel and yields - * until completion. + * until completion. If the current thread is maestro, we don't yield and + * execute the simcall directly. * \param self the current process */ void SIMIX_simcall_push(smx_process_t self) { if (self != simix_global->maestro_process) { XBT_DEBUG("Yield process '%s' on simcall %s (%d)", self->name, - SIMIX_simcall_name(self->simcall.call), self->simcall.call); + SIMIX_simcall_name(self->simcall.call), (int)self->simcall.call); SIMIX_process_yield(self); } else { SIMIX_simcall_pre(&self->simcall, 0); @@ -30,10 +31,15 @@ void SIMIX_simcall_push(smx_process_t self) void SIMIX_simcall_answer(smx_simcall_t simcall) { if (simcall->issuer != simix_global->maestro_process){ - XBT_DEBUG("Answer simcall %s (%d) issued by %s (%p)", SIMIX_simcall_name(simcall->call), simcall->call, + XBT_DEBUG("Answer simcall %s (%d) issued by %s (%p)", SIMIX_simcall_name(simcall->call), (int)simcall->call, simcall->issuer->name, simcall->issuer); simcall->issuer->simcall.call = SIMCALL_NONE; +/* This check should be useless and slows everyone. Reactivate if you see something + * weird in process scheduling. + */ +/* if(!xbt_dynar_member(simix_global->process_to_run, &(simcall->issuer))) */ xbt_dynar_push_as(simix_global->process_to_run, smx_process_t, simcall->issuer); +/* else DIE_IMPOSSIBLE; */ } } @@ -303,6 +309,7 @@ void SIMIX_simcall_pre(smx_simcall_t simcall, int value) simcall->process_create.code, simcall->process_create.data, simcall->process_create.hostname, + simcall->process_create.kill_time, simcall->process_create.argc, simcall->process_create.argv, simcall->process_create.properties);