+}
+
+static void *__context_wrapper(void *c)
+{
+ xbt_context_t context = c;
+
+#ifdef USE_PTHREADS
+ DEBUG2("**[%p:%p]** Lock ****",context,(void*)pthread_self());
+ pthread_mutex_lock(&(context->mutex));
+ DEBUG2("**[%p:%p]** Releasing the prisonner ****",context,(void*)pthread_self());
+ pthread_cond_signal(&(context->cond));
+ DEBUG2("**[%p:%p]** Going to Jail ****",context,(void*)pthread_self());
+ pthread_cond_wait(&(context->cond), &(context->mutex));
+ DEBUG2("**[%p:%p]** Unlocking ****",context,(void*)pthread_self());
+ pthread_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));