--- rpl/src/interruptions.c 2013/02/23 18:32:15 1.116 +++ rpl/src/interruptions.c 2013/05/21 12:10:12 1.125 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.12 - Copyright (C) 1989-2012 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.14 + Copyright (C) 1989-2013 Dr. BERTRAND Joël This file is part of RPL/2. @@ -555,7 +555,7 @@ liberation_threads(struct_processus *s_e struct_liste_variables_statiques *l_element_statique_courant; struct_liste_variables_statiques *l_element_statique_suivant; - unsigned long i; + integer8 i; void *element_candidat; void *element_courant; @@ -598,8 +598,7 @@ liberation_threads(struct_processus *s_e close((*s_etat_processus).pipe_injections); close((*s_etat_processus).pipe_nombre_injections); close((*s_etat_processus).pipe_interruptions); - close((*s_etat_processus).pipe_nombre_objets_attente); - close((*s_etat_processus).pipe_nombre_interruptions_attente); + close((*s_etat_processus).pipe_nombre_elements_attente); liberation(s_etat_processus, (*s_etat_processus).at_exit); @@ -667,10 +666,8 @@ liberation_threads(struct_processus *s_e close((*s_argument_thread).pipe_acquittement[1]); close((*s_argument_thread).pipe_injections[1]); close((*s_argument_thread).pipe_nombre_injections[1]); - close((*s_argument_thread).pipe_nombre_objets_attente[0]); + close((*s_argument_thread).pipe_nombre_elements_attente[0]); close((*s_argument_thread).pipe_interruptions[0]); - close((*s_argument_thread) - .pipe_nombre_interruptions_attente[0]); if (pthread_mutex_unlock(&((*s_argument_thread) .mutex_nombre_references)) != 0) @@ -1311,9 +1308,8 @@ liberation_threads(struct_processus *s_e close((*s_argument_thread).pipe_acquittement[1]); close((*s_argument_thread).pipe_injections[1]); close((*s_argument_thread).pipe_nombre_injections[1]); - close((*s_argument_thread).pipe_nombre_objets_attente[0]); + close((*s_argument_thread).pipe_nombre_elements_attente[0]); close((*s_argument_thread).pipe_interruptions[0]); - close((*s_argument_thread).pipe_nombre_interruptions_attente[0]); if (pthread_mutex_unlock(&((*s_argument_thread) .mutex_nombre_references)) != 0) @@ -2409,8 +2405,9 @@ signal_hup(struct_processus *s_etat_proc return; } - snprintf(nom, 8 + 64 + 1, "rpl-out-%lu-%lu", (unsigned long) getpid(), - (unsigned long) pthread_self()); + snprintf(nom, 8 + 64 + 1, "rpl-out-%llu-%llu", + (unsigned long long) getpid(), + (unsigned long long) pthread_self()); if ((fichier = fopen(nom, "w+")) != NULL) { @@ -2951,6 +2948,12 @@ envoi_signal_thread(pthread_t tid, enum struct_processus *s_etat_processus; + if (pthread_mutex_lock(&mutex_interruptions) != 0) + { + pthread_mutex_unlock(&mutex_liste_threads); + return(1); + } + if (pthread_mutex_lock(&mutex_liste_threads) != 0) { return(1); @@ -2974,12 +2977,6 @@ envoi_signal_thread(pthread_t tid, enum { pthread_mutex_unlock(&mutex_liste_threads); return(1); - } - - if (pthread_mutex_lock(&mutex_interruptions) != 0) - { - pthread_mutex_unlock(&mutex_liste_threads); - return(1); } s_etat_processus = (*((struct_thread *) (*l_element_courant).donnee))