Diff for /rpl/src/fusible.c between versions 1.13 and 1.35

version 1.13, 2010/08/06 15:32:58 version 1.35, 2011/10/10 16:39:00
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.18    RPL/2 (R) version 4.1.4
   Copyright (C) 1989-2010 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 40 Line 40
 void *  void *
 fusible(void *argument)  fusible(void *argument)
 {  {
   #   ifndef OS2
   
     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 53  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 85  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
   
 #   ifndef OS2      // 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  #   endif
   
Line 97  fusible(void *argument) Line 89  fusible(void *argument)
     {      {
         pthread_testcancel();          pthread_testcancel();
         nanosleep(&temporisation, NULL);          nanosleep(&temporisation, NULL);
   
         getrusage(RUSAGE_SELF, &s_rusage);          getrusage(RUSAGE_SELF, &s_rusage);
   
         temps_cpu_precedent = temps_cpu_courant;          temps_cpu_precedent = temps_cpu_courant;
Line 111  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);
Line 134  fusible(void *argument) Line 125  fusible(void *argument)
         fflush(stdout);          fflush(stdout);
     }      }
   
   #   else
   
       struct_processus        *s_etat_processus;
   
       s_etat_processus = argument;
   
       if ((*s_etat_processus).langue == 'F')
       {
           printf("+++Attention : Support indisponible sous OS/2\n");
       }
       else
       {
           printf("+++Warning : Function unavailable\n");
       }
   #   endif
   
     pthread_exit(NULL);      pthread_exit(NULL);
 }  }
   

Removed from v.1.13  
changed lines
  Added in v.1.35


CVSweb interface <joel.bertrand@systella.fr>