--- rpl/src/gestion_threads.c 2013/05/23 12:45:08 1.81 +++ rpl/src/gestion_threads.c 2013/05/28 22:09:55 1.82 @@ -664,11 +664,28 @@ lancement_thread(void *argument) } } + if (pthread_mutex_lock(&((*s_etat_processus).mutex_interruptions)) != 0) + { + pthread_mutex_unlock(&((*s_etat_processus).mutex)); + + (*s_etat_processus).erreur_systeme = d_es_processus; + exit(EXIT_FAILURE); + } + if ((*s_etat_processus).nombre_interruptions_non_affectees != 0) { affectation_interruptions_logicielles(s_etat_processus); } + if (pthread_mutex_unlock(&((*s_etat_processus).mutex_interruptions)) + != 0) + { + pthread_mutex_unlock(&((*s_etat_processus).mutex)); + + (*s_etat_processus).erreur_systeme = d_es_processus; + exit(EXIT_FAILURE); + } + pthread_mutex_unlock(&((*s_etat_processus).mutex)); nanosleep(&attente, NULL); pthread_mutex_lock(&((*s_etat_processus).mutex)); @@ -997,6 +1014,7 @@ lancement_thread(void *argument) retrait_thread(s_etat_processus); pthread_mutex_destroy(&((*s_etat_processus).mutex)); pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation)); + pthread_mutex_destroy(&((*s_etat_processus).mutex_interruptions)); # ifndef SEMAPHORES_NOMMES sem_destroy(&((*s_etat_processus).semaphore_fork));