+#ifdef __MINGW32__
+#define _aligned_malloc __mingw_aligned_malloc
+#define _aligned_free __mingw_aligned_free
+#endif //MINGW
+
+
+
+#ifdef HAVE_VALGRIND_VALGRIND_H
+# include <valgrind/valgrind.h>
+#endif
+
+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;
+int smx_context_stack_size_was_set = 0;
+int smx_context_guard_size;
+int smx_context_guard_size_was_set = 0;
+#ifdef HAVE_THREAD_LOCAL_STORAGE
+static __thread smx_context_t smx_current_context_parallel;
+#else
+static xbt_os_thread_key_t smx_current_context_key = 0;
+#endif
+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_DEFAULT;
+
+/**
+ * This function is called by SIMIX_global_init() to initialize the context module.