Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
more debuging
[simgrid.git] / src / xbt / context.c
index f5af18b..bc16f82 100644 (file)
@@ -44,11 +44,17 @@ static void __xbt_context_yield(xbt_context_t context)
 #ifdef USE_PTHREADS
   if (context) {
     xbt_context_t self = current_context;
+    DEBUG0("**** Locking ****");
     pthread_mutex_lock(&(context->mutex));
+    DEBUG0("**** Updating current_context ****");
     current_context = context;
+    DEBUG0("**** Releasing the prisonner ****");
     pthread_cond_signal(&(context->cond));
+    DEBUG0("**** Going to jail ****");
     pthread_cond_wait(&(context->cond), &(context->mutex));
+    DEBUG0("**** Unlocking ****");
     pthread_mutex_unlock(&(context->mutex));
+    DEBUG0("**** Updating current_context ****");
     current_context = self;
   }
 #else
@@ -102,8 +108,13 @@ static void *__context_wrapper(void *c)
   int i;
 
 #ifdef USE_PTHREADS
+  DEBUG0("**** Lock ****");
   pthread_mutex_lock(&(context->mutex));
+  DEBUG0("**** Releasing the prisonner ****");
+  pthread_cond_signal(&(context->cond));
+  DEBUG0("**** Going to Jail ****");
   pthread_cond_wait(&(context->cond), &(context->mutex));
+  DEBUG0("**** Unlocking ****");
   pthread_mutex_unlock(&(context->mutex));
 #endif
 
@@ -169,8 +180,15 @@ void xbt_context_start(xbt_context_t context)
 {
 #ifdef USE_PTHREADS
   /* Launch the thread */
+  DEBUG0("**** Locking ****");
+  pthread_mutex_lock(&(context->mutex));
+  DEBUG0("**** Pthread create ****");
   xbt_assert0(!pthread_create(context->thread, NULL, __context_wrapper, context),
              "Unable to create a thread.");
+  DEBUG0("**** Going to jail ****");
+  pthread_cond_wait(&(context->cond), &(context->mutex));
+  DEBUG0("**** Unlocking ****");
+  pthread_mutex_unlock(&(context->mutex));  
 #else
   makecontext (&(context->uc), (void (*) (void)) __context_wrapper,
               1, context);