#include "xbt/swag.h"
#include "xbt/xbt_os_thread.h"
#include "smx_private.h"
-#include "gras_config.h"
+#include "simgrid/sg_config.h"
+#include "internal_config.h"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_context, simix,
"Context switching mechanism");
char* smx_context_factory_name = NULL; /* factory name specified by --cfg=contexts/factory:value */
smx_ctx_factory_initializer_t smx_factory_initializer_to_use = NULL;
int smx_context_stack_size = 128 * 1024;
-
+int smx_context_stack_size_was_set = 0;
#ifdef HAVE_THREAD_LOCAL_STORAGE
static __thread smx_context_t smx_current_context_parallel;
#else
*/
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
}
/**
- * This function is call by SIMIX_clean() to finalize the context module.
+ * This function is called by SIMIX_clean() to finalize the context module.
*/
void SIMIX_context_mod_exit(void)
{
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;
}