+#endif
+ xbt_assert0(0, "You can't be here!");
+}
+
+static void *__context_wrapper(void *c)
+{
+ xbt_context_t context = current_context;
+
+#ifdef CONTEXT_THREADS
+ context = (xbt_context_t) c;
+ context->thread = xbt_os_thread_self();
+
+ DEBUG3("**[ctx:%p;self:%p]** Lock creation_mutex %p ****", context,
+ (void *) xbt_os_thread_self(), creation_mutex);
+ xbt_os_mutex_lock(creation_mutex);
+ xbt_os_mutex_lock(context->mutex);
+
+ DEBUG4
+ ("**[ctx:%p;self:%p]** Releasing the creator (creation_cond %p,%p) ****",
+ context, (void *) xbt_os_thread_self(), creation_cond,
+ creation_mutex);
+ xbt_os_cond_signal(creation_cond);
+ xbt_os_mutex_unlock(creation_mutex);
+
+ DEBUG4("**[ctx:%p;self:%p]** Going to Jail on lock %p and cond %p ****",
+ context, (void *) xbt_os_thread_self(), context->mutex,
+ context->cond);
+ xbt_os_cond_wait(context->cond, context->mutex);
+
+ DEBUG3("**[ctx:%p;self:%p]** Unlocking individual %p ****",
+ context, (void *) xbt_os_thread_self(), context->mutex);
+ xbt_os_mutex_unlock(context->mutex);
+
+#endif
+
+ if (context->startup_func)
+ context->startup_func(context->startup_arg);
+
+ DEBUG0("Calling the main function");
+
+ __context_exit(context, (context->code) (context->argc, context->argv));