version 1.28, 2011/06/27 09:04:55
|
version 1.35, 2011/10/10 16:39:00
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.0 |
RPL/2 (R) version 4.1.4 |
Copyright (C) 1989-2011 Dr. BERTRAND Joël |
Copyright (C) 1989-2011 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
Line 45 fusible(void *argument)
|
Line 45 fusible(void *argument)
|
real8 temps_cpu_precedent; |
real8 temps_cpu_precedent; |
real8 temps_cpu_courant; |
real8 temps_cpu_courant; |
|
|
sigset_t masque; |
|
|
|
struct_processus *s_etat_processus; |
struct_processus *s_etat_processus; |
|
|
struct rusage s_rusage; |
struct rusage s_rusage; |
Line 55 fusible(void *argument)
|
Line 53 fusible(void *argument)
|
|
|
s_etat_processus = 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).debug == d_vrai) |
if (((*s_etat_processus).type_debug & |
if (((*s_etat_processus).type_debug & |
d_debug_fusible) != 0) |
d_debug_fusible) != 0) |
Line 87 fusible(void *argument)
|
Line 75 fusible(void *argument)
|
temporisation.tv_sec = 0; |
temporisation.tv_sec = 0; |
temporisation.tv_nsec = 100000000; // un dixième de seconde |
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); |
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); |
|
# endif |
|
|
getrusage(RUSAGE_SELF, &s_rusage); |
getrusage(RUSAGE_SELF, &s_rusage); |
temps_cpu_courant = s_rusage.ru_utime.tv_sec + |
temps_cpu_courant = s_rusage.ru_utime.tv_sec + |
Line 110 fusible(void *argument)
|
Line 102 fusible(void *argument)
|
{ |
{ |
(*s_etat_processus).temps_maximal_cpu = 0; |
(*s_etat_processus).temps_maximal_cpu = 0; |
|
|
pthread_kill((*s_etat_processus).thread_surveille_par_fusible, |
envoi_signal_thread((*s_etat_processus) |
SIGFSTOP); |
.thread_surveille_par_fusible, rpl_sigstop); |
break; |
break; |
} |
} |
} while((*s_etat_processus).var_volatile_requete_arret == 0); |
} while((*s_etat_processus).var_volatile_requete_arret == 0); |