- if (context) {
-/* m_process_t self = msg_global->current_process; */
- if(context->save==NULL) {
- /* WARNING("**** Yielding to somebody else ****"); */
- /* WARNING("Saving current_context value (%p) to context(%p)->save",current_context,context); */
- context->save = current_context ;
- context->uc.uc_link = &(current_context->uc);
- /* WARNING("current_context becomes context(%p) ",context); */
- current_context = context ;
- /* WARNING("Current position memorized (context->save). Jumping to context (%p)",context); */
- if(!swapcontext (&(context->save->uc), &(context->uc)))
- xbt_assert0(0,"Context swapping failure");
- /* WARNING("I am (%p). Coming back\n",context); */
- } else {
- context_t old_context = context->save ;
- /* WARNING("**** Back ! ****"); */
- /* WARNING("Setting current_context (%p) to context(%p)->save",current_context,context); */
- current_context = context->save ;
- /* WARNING("Setting context(%p)->save to NULL",current_context,context); */
- context->save = NULL ;
- /* WARNING("Current position memorized (%p). Jumping to context (%p)",context,old_context); */
- if(!swapcontext (&(context->uc), &(old_context->uc)) )
- xbt_assert0(0,"Context swapping failure");
- /* WARNING("I am (%p). Coming back\n",context); */
- }
-/* msg_global->current_process = self; */
- }
+ 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);