--- rpl/src/gestion_processus.c 2013/05/21 12:10:11 1.66 +++ rpl/src/gestion_processus.c 2013/05/28 22:09:55 1.67 @@ -274,8 +274,23 @@ surveillance_processus(void *argument) (*(*((struct_processus_fils *) (*(*l_element_courant).donnee).objet)) .thread).nombre_interruptions_dans_pipe++; + + if (pthread_mutex_lock(&((*s_etat_processus) + .mutex_interruptions)) != 0) + { + (*s_etat_processus).erreur_systeme = + d_es_processus; + } + (*s_etat_processus) .nombre_interruptions_non_affectees++; + + if (pthread_mutex_unlock(&((*s_etat_processus) + .mutex_interruptions)) != 0) + { + (*s_etat_processus).erreur_systeme = + d_es_processus; + } } if (pthread_mutex_unlock( @@ -430,8 +445,7 @@ surveillance_processus(void *argument) (*(*l_element_courant).donnee).objet)) .thread).processus_detache == d_vrai) { - l_element_courant = (*l_element_courant) - .suivant; + l_element_courant = (*l_element_courant).suivant; continue; } @@ -516,8 +530,23 @@ surveillance_processus(void *argument) (*(*((struct_processus_fils *) (*(*l_element_courant).donnee).objet)) .thread).nombre_interruptions_dans_pipe++; + + if (pthread_mutex_lock(&((*s_etat_processus) + .mutex_interruptions)) != 0) + { + (*s_etat_processus).erreur_systeme = + d_es_processus; + } + (*s_etat_processus) .nombre_interruptions_non_affectees++; + + if (pthread_mutex_unlock(&((*s_etat_processus) + .mutex_interruptions)) != 0) + { + (*s_etat_processus).erreur_systeme = + d_es_processus; + } } if (pthread_mutex_unlock( @@ -592,8 +621,23 @@ surveillance_processus(void *argument) } } + if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) + != 0) + { + (*s_etat_processus).erreur_systeme_processus_fils = + d_es_processus; + } + envoi_signal_thread((*s_argument_thread).thread_pere, rpl_siginject); + + if (pthread_mutex_lock(&((*s_etat_processus).mutex)) + != 0) + { + (*s_etat_processus).erreur_systeme_processus_fils = + d_es_processus; + } + break; } @@ -790,8 +834,23 @@ surveillance_processus(void *argument) (*(*l_element_courant).donnee).objet)) .thread) .nombre_interruptions_dans_pipe++; + + if (pthread_mutex_lock(&((*s_etat_processus) + .mutex_interruptions)) != 0) + { + (*s_etat_processus).erreur_systeme = + d_es_processus; + } + (*s_etat_processus) .nombre_interruptions_non_affectees++; + + if (pthread_mutex_unlock(&((*s_etat_processus) + .mutex_interruptions)) != 0) + { + (*s_etat_processus).erreur_systeme = + d_es_processus; + } } if (pthread_mutex_unlock( @@ -893,8 +952,23 @@ surveillance_processus(void *argument) (*(*l_element_courant).donnee).objet)) .thread) .nombre_interruptions_dans_pipe++; + + if (pthread_mutex_lock(&((*s_etat_processus) + .mutex_interruptions)) != 0) + { + (*s_etat_processus).erreur_systeme = + d_es_processus; + } + (*s_etat_processus) .nombre_interruptions_non_affectees++; + + if (pthread_mutex_unlock(&((*s_etat_processus) + .mutex_interruptions)) != 0) + { + (*s_etat_processus).erreur_systeme = + d_es_processus; + } } if (pthread_mutex_unlock(