X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/838d182d3af0dbb5d77bde6eeffd6e322ebe4aa9..4a9c3381fce251cc5d9c6dbbe6dbe03f9189c279:/src/simix/smx_context.c diff --git a/src/simix/smx_context.c b/src/simix/smx_context.c index 59638fa518..281c2d886f 100644 --- a/src/simix/smx_context.c +++ b/src/simix/smx_context.c @@ -10,12 +10,11 @@ #include "xbt/log.h" #include "xbt/swag.h" #include "private.h" +#include "simix/smx_context_private.h" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_context, simix, "Context switching mecanism"); -const char *xbt_ctx_factory_to_use = NULL; -typedef void (*SIMIX_ctx_factory_initializer_t)(smx_context_factory_t *); SIMIX_ctx_factory_initializer_t factory_initializer_to_use = NULL; /** @@ -52,62 +51,3 @@ void SIMIX_context_mod_exit(void) (*finalize_factory) (&simix_global->context_factory); } } - -/** - * This function is used to change the context factory. - * Warning: it destroy all the existing processes (even for maestro), and it - * will create a new maestro process using the new context factory. - */ -int SIMIX_context_select_factory(const char *name) -{ - /* if a context factory is already instantiated and it is different from the - newly selected one, then kill all the processes, exit the context module - and initialize the new factory. - */ - - - if (simix_global->context_factory != NULL) { - if (strcmp(simix_global->context_factory->name, name)) { - - SIMIX_process_killall(); - - /* kill maestro process */ - SIMIX_context_free(simix_global->maestro_process->context); - free(simix_global->maestro_process); - simix_global->maestro_process = NULL; - - SIMIX_context_mod_exit(); - } else - /* the same context factory is requested return directly */ - return 0; - } - - /* init the desired factory */ - smx_context_factory_t * factory = &simix_global->context_factory; - if (!strcmp(name, "thread")) -#ifdef CONTEXT_THREADS - SIMIX_ctx_thread_factory_init(factory); -#else - THROW0(not_found_error, 0, - "Factory 'thread' does not exist: thread support was not compiled in the SimGrid library"); -#endif /* CONTEXT_THREADS */ - - else if (!strcmp(name, "sysv")) -#if !defined(_XBT_WIN32) && !defined(CONTEXT_THREADS) - SIMIX_ctx_sysv_factory_init(factory); -#else - THROW0(not_found_error, 0, - "Factory 'sysv' does not exist: no System V thread support under Windows"); -#endif - - else - THROW1(not_found_error, 0, "Factory '%s' does not exist", name); - - - - - SIMIX_create_maestro_process(); - - return 0; -} -