-#include "private.h"
-#include <lua5.1/lauxlib.h>
-#include <ruby.h>
-#include "smx_context_ruby.c"
-
-#define HAVE_RUBY /* HACK HACK */
-// #define DEBUG
-
-#ifdef HAVE_RUBY
- extern void SIMIX_ctx_ruby_factory_init(smx_context_factory_t *factory);
-#endif
-
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_context, simix, "Context switching mecanism");
-
-const char *xbt_ctx_factory_to_use = NULL;
+#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,
+ "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
+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;