X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/38227c3d9557ae51fbf0cdbecc709e1cb12e3634..23f5bf52cc58cf837840f231cf638e9fcd45097b:/src/simix/smx_context.c diff --git a/src/simix/smx_context.c b/src/simix/smx_context.c index f1588b6242..9e1a961f35 100644 --- a/src/simix/smx_context.c +++ b/src/simix/smx_context.c @@ -11,7 +11,6 @@ #include "xbt/swag.h" #include "xbt/xbt_os_thread.h" #include "smx_private.h" -#include "simix/context.h" #include "gras_config.h" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_context, simix, @@ -29,7 +28,7 @@ static xbt_os_thread_key_t smx_current_context_key = 0; static smx_context_t smx_current_context_serial; static int smx_parallel_contexts = 1; static int smx_parallel_threshold = 2; -static e_xbt_parmap_mode_t smx_parallel_synchronization_mode = XBT_PARMAP_FUTEX; +static e_xbt_parmap_mode_t smx_parallel_synchronization_mode = XBT_PARMAP_DEFAULT; /** * This function is called by SIMIX_global_init() to initialize the context module. @@ -45,13 +44,13 @@ void SIMIX_context_mod_init(void) if (smx_context_factory_name == NULL) { /* use the default factory */ - #ifdef HAVE_RAWCTX - SIMIX_ctx_raw_factory_init(&simix_global->context_factory); - #elif CONTEXT_UCONTEXT - SIMIX_ctx_sysv_factory_init(&simix_global->context_factory); - #else - SIMIX_ctx_thread_factory_init(&simix_global->context_factory); - #endif + #ifdef HAVE_RAWCTX + SIMIX_ctx_raw_factory_init(&simix_global->context_factory); + #elif CONTEXT_UCONTEXT + SIMIX_ctx_sysv_factory_init(&simix_global->context_factory); + #else + SIMIX_ctx_thread_factory_init(&simix_global->context_factory); + #endif } else if (!strcmp(smx_context_factory_name, "ucontext")) { /* use ucontext */ @@ -62,12 +61,12 @@ void SIMIX_context_mod_init(void) #endif } else if (!strcmp(smx_context_factory_name, "thread")) { - /* use os threads (either pthreads or windows ones) */ + /* use os threads (either pthreads or windows ones) */ SIMIX_ctx_thread_factory_init(&simix_global->context_factory); } else if (!strcmp(smx_context_factory_name, "raw")) { - /* use raw contexts */ - SIMIX_ctx_raw_factory_init(&simix_global->context_factory); + /* use raw contexts */ + SIMIX_ctx_raw_factory_init(&simix_global->context_factory); } else { XBT_ERROR("Invalid context factory specified. Valid factories on this machine:"); @@ -139,11 +138,11 @@ XBT_INLINE int SIMIX_context_get_nthreads(void) { */ XBT_INLINE void SIMIX_context_set_nthreads(int nb_threads) { - if (nb_threads<=0) { + if (nb_threads<=0) { nb_threads = xbt_os_get_numcores(); XBT_INFO("Auto-setting contexts/nthreads to %d",nb_threads); } - + if (nb_threads > 1) { #ifndef CONTEXT_THREADS THROWF(arg_error, 0, "The thread factory cannot be run in parallel");