#include "xbt/swag.h"
#include "xbt/xbt_os_thread.h"
#include "smx_private.h"
+#include "simgrid/sg_config.h"
#include "internal_config.h"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_context, simix,
*/
void SIMIX_context_mod_init(void)
{
+#if defined(CONTEXT_THREADS) && !defined(HAVE_THREAD_LOCAL_STORAGE)
+ /* the __thread storage class is not available on this platform:
+ * use getspecific/setspecific instead to store the current context in each thread */
+ xbt_os_thread_key_create(&smx_current_context_key);
+#endif
if (!simix_global->context_factory) {
/* select the context factory to use to create the contexts */
if (smx_factory_initializer_to_use) {
}
}
}
-
-#if defined(CONTEXT_THREADS) && !defined(HAVE_THREAD_LOCAL_STORAGE)
- /* the __thread storage class is not available on this platform:
- * use getspecific/setspecific instead to store the current context in each thread */
- xbt_os_thread_key_create(&smx_current_context_key);
-#endif
}
/**
finalize_factory = simix_global->context_factory->finalize;
finalize_factory(&simix_global->context_factory);
}
- xbt_dict_remove((xbt_dict_t) _surf_cfg_set,"contexts/factory");
+ xbt_dict_remove((xbt_dict_t) _sg_cfg_set,"contexts/factory");
}
/**
* \param nb_threads the number of threads to use
*/
XBT_INLINE void SIMIX_context_set_nthreads(int nb_threads) {
-
if (nb_threads<=0) {
nb_threads = xbt_os_get_numcores();
XBT_INFO("Auto-setting contexts/nthreads to %d",nb_threads);
THROWF(arg_error, 0, "The thread factory cannot be run in parallel");
#endif
}
-
smx_parallel_contexts = nb_threads;
}