--- rpl/src/fusible.c 2011/01/03 12:08:03 1.19 +++ rpl/src/fusible.c 2011/10/10 16:39:00 1.35 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.20 + RPL/2 (R) version 4.1.4 Copyright (C) 1989-2011 Dr. BERTRAND Joël This file is part of RPL/2. @@ -45,8 +45,6 @@ fusible(void *argument) real8 temps_cpu_precedent; real8 temps_cpu_courant; - sigset_t masque; - struct_processus *s_etat_processus; struct rusage s_rusage; @@ -55,16 +53,6 @@ fusible(void *argument) s_etat_processus = argument; - sigemptyset(&masque); - sigaddset(&masque, SIGINJECT); - sigaddset(&masque, SIGFSTOP); - sigaddset(&masque, SIGFABORT); - sigaddset(&masque, SIGURG); - sigaddset(&masque, SIGALRM); - sigaddset(&masque, SIGCONT); - sigaddset(&masque, SIGINT); - pthread_sigmask(SIG_BLOCK, &masque, NULL); - if ((*s_etat_processus).debug == d_vrai) if (((*s_etat_processus).type_debug & d_debug_fusible) != 0) @@ -87,7 +75,11 @@ fusible(void *argument) temporisation.tv_sec = 0; temporisation.tv_nsec = 100000000; // un dixième de seconde + // Par défaut, le thread peut être annulé. + +# ifdef PTHREAD_CANCEL_ENABLE pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); +# endif getrusage(RUSAGE_SELF, &s_rusage); temps_cpu_courant = s_rusage.ru_utime.tv_sec + @@ -110,8 +102,8 @@ fusible(void *argument) { (*s_etat_processus).temps_maximal_cpu = 0; - pthread_kill((*s_etat_processus).thread_surveille_par_fusible, - SIGFSTOP); + envoi_signal_thread((*s_etat_processus) + .thread_surveille_par_fusible, rpl_sigstop); break; } } while((*s_etat_processus).var_volatile_requete_arret == 0);