--- rpl/src/gestion_threads.c 2013/03/20 17:11:44 1.74 +++ rpl/src/gestion_threads.c 2013/04/01 15:29:34 1.78 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.1.13 + RPL/2 (R) version 4.1.14 Copyright (C) 1989-2013 Dr. BERTRAND Joël This file is part of RPL/2. @@ -89,9 +89,8 @@ lancement_thread(void *argument) # endif (*s_argument_thread).tid = pthread_self(); - (*s_argument_thread).thread_actif = d_vrai; - insertion_thread(s_etat_processus, d_faux); + (*s_argument_thread).thread_actif = d_vrai; // Envoi d'une donnée pour signaler le démarrage du thread au thread // de surveillance. @@ -189,13 +188,17 @@ lancement_thread(void *argument) } else { - if (((*s_etat_processus).var_volatile_alarme == 0) - && ((*s_etat_processus).arret_depuis_abort == 0) + if (((*s_etat_processus).arret_depuis_abort == 0) && ((*s_etat_processus).at_exit != NULL)) { (*s_etat_processus).var_volatile_requete_arret = 0; - (*s_etat_processus).var_volatile_traitement_retarde_stop = - -1; + (*s_etat_processus).var_volatile_alarme = 0; + (*s_etat_processus).var_volatile_traitement_sigint = 0; + + if ((*s_etat_processus).profilage == d_vrai) + { + profilage(s_etat_processus, "ATEXIT"); + } if (evaluation(s_etat_processus, (*s_etat_processus).at_exit, 'E') == d_erreur) @@ -207,6 +210,11 @@ lancement_thread(void *argument) d_ex_erreur_evaluation; } } + + if ((*s_etat_processus).profilage == d_vrai) + { + profilage(s_etat_processus, NULL); + } } } }