X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b1d1799f478bc70bbe13e2e66d0a490b5fd8456c..496721993cb6a1a41c1b9402a274b5d143aa373a:/src/simix/smx_global.c diff --git a/src/simix/smx_global.c b/src/simix/smx_global.c index c04067bc0f..5a3ed08eae 100644 --- a/src/simix/smx_global.c +++ b/src/simix/smx_global.c @@ -199,24 +199,19 @@ void __SIMIX_main(void) /** * \brief Kill all running process - * + * Only maestro can kill everyone :) */ void SIMIX_process_killall() { smx_process_t p = NULL; - smx_process_t self = SIMIX_process_self(); + xbt_assert0((simix_global->current_process == simix_global->maestro_process), + "You are not supposed to run this function here!"); - while ((p = xbt_swag_extract(simix_global->process_list))) { - if (p != self) - SIMIX_process_kill(p); - } + while ((p = xbt_swag_extract(simix_global->process_list))) + SIMIX_process_kill(p); SIMIX_process_empty_trash(); - if (self != simix_global->maestro_process) { - __SIMIX_process_yield(); - } - return; } @@ -235,13 +230,15 @@ void SIMIX_clean(void) xbt_swag_free(simix_global->process_to_destroy); xbt_swag_free(simix_global->process_list); simix_global->process_list = NULL; + simix_global->process_to_destroy = NULL; xbt_dict_free(&(simix_global->registered_functions)); xbt_dict_free(&(simix_global->host)); /* Let's free maestro now */ SIMIX_context_free(simix_global->maestro_process->context); free(simix_global->maestro_process); - + simix_global->maestro_process = NULL; + /* Finish context module and SURF */ SIMIX_context_mod_exit(); surf_exit();