--- rpl/src/interruptions.c 2010/04/29 07:30:58 1.11 +++ rpl/src/interruptions.c 2010/04/29 15:47:25 1.12 @@ -394,6 +394,11 @@ retrait_thread_surveillance(struct_proce if (pthread_mutex_lock(&((*s_argument_thread).mutex)) != 0) { +# ifndef SEMAPHORES_NOMMES + sem_post(&semaphore_liste_threads); +# else + sem_post(semaphore_liste_threads); +# endif pthread_sigmask(SIG_SETMASK, &oldset, NULL); sigpending(&set); @@ -411,6 +416,11 @@ retrait_thread_surveillance(struct_proce { if (pthread_mutex_unlock(&((*s_argument_thread).mutex)) != 0) { +# ifndef SEMAPHORES_NOMMES + sem_post(&semaphore_liste_threads); +# else + sem_post(semaphore_liste_threads); +# endif pthread_sigmask(SIG_SETMASK, &oldset, NULL); sigpending(&set); @@ -425,6 +435,11 @@ retrait_thread_surveillance(struct_proce { if (pthread_mutex_unlock(&((*s_argument_thread).mutex)) != 0) { +# ifndef SEMAPHORES_NOMMES + sem_post(&semaphore_liste_threads); +# else + sem_post(semaphore_liste_threads); +# endif pthread_sigmask(SIG_SETMASK, &oldset, NULL); sigpending(&set); @@ -1291,6 +1306,7 @@ liberation_threads(struct_processus *s_e if (pthread_mutex_lock(&((*s_argument_thread).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; + sem_post(&semaphore_liste_threads); return; } @@ -1305,6 +1321,7 @@ liberation_threads(struct_processus *s_e if (pthread_mutex_unlock(&((*s_argument_thread).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; + sem_post(&semaphore_liste_threads); return; } @@ -1316,6 +1333,7 @@ liberation_threads(struct_processus *s_e if (pthread_mutex_unlock(&((*s_argument_thread).mutex)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; + sem_post(&semaphore_liste_threads); return; } }