--- rpl/src/gestion_processus.c 2016/03/22 17:12:14 1.84 +++ rpl/src/gestion_processus.c 2019/02/09 13:36:35 1.96 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.25 - Copyright (C) 1989-2016 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.31 + Copyright (C) 1989-2019 Dr. BERTRAND Joël This file is part of RPL/2. @@ -73,7 +73,6 @@ surveillance_processus(void *argument) sigfillset(&set); pthread_sigmask(SIG_BLOCK, &set, NULL); - nombre_thread_surveillance_processus++; s_argument_thread = argument; s_etat_processus = (*s_argument_thread).s_etat_processus; @@ -84,6 +83,7 @@ surveillance_processus(void *argument) BUG(1, uprintf("General mutex error!\n")); } + nombre_thread_surveillance_processus++; insertion_thread_surveillance(s_etat_processus, s_argument_thread); if (pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus)) != 0) @@ -363,7 +363,8 @@ surveillance_processus(void *argument) } } - envoi_signal_thread((*s_argument_thread).thread_pere, + envoi_signal_thread(NULL, + (*s_argument_thread).thread_pere, rpl_siginject); break; } @@ -390,7 +391,6 @@ surveillance_processus(void *argument) } else { - perror("read"); (*s_etat_processus).erreur_systeme = d_es_processus; } @@ -631,7 +631,8 @@ surveillance_processus(void *argument) d_es_processus; } - envoi_signal_thread((*s_argument_thread).thread_pere, + envoi_signal_thread(NULL, + (*s_argument_thread).thread_pere, rpl_siginject); if (pthread_mutex_lock(&((*s_etat_processus) @@ -1428,6 +1429,7 @@ surveillance_processus(void *argument) } retrait_thread_surveillance(s_etat_processus, s_argument_thread); + nombre_thread_surveillance_processus--; if (pthread_mutex_unlock(&((*s_etat_processus) .mutex_pile_processus)) != 0) @@ -1436,7 +1438,6 @@ surveillance_processus(void *argument) } } - nombre_thread_surveillance_processus--; pthread_exit(NULL); } @@ -3006,10 +3007,10 @@ scrutation_injection(struct_processus *s unsigned char tampon; unsigned char tampon_profilage[20]; - // Si on est dans le processus père, il n'y a rien à surveiller. - scrutation_interruptions(s_etat_processus); + // Si on est dans le processus père, il n'y a rien à surveiller. + if ((*s_etat_processus).var_volatile_processus_racine == 0) { fds.fd = (*s_etat_processus).pipe_nombre_injections; @@ -3173,7 +3174,6 @@ scrutation_injection(struct_processus *s } } } - } return;