Diff for /rpl/src/instructions_d5.c between versions 1.159 and 1.168

version 1.159, 2017/08/03 15:13:04 version 1.168, 2019/02/11 06:18:20
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.27    RPL/2 (R) version 4.1.31
   Copyright (C) 1989-2017 Dr. BERTRAND Joël    Copyright (C) 1989-2019 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 2243  instruction_detach(struct_processus *s_e Line 2243  instruction_detach(struct_processus *s_e
                 {                  {
                     if ((*s_etat_processus).var_volatile_alarme != 0)                      if ((*s_etat_processus).var_volatile_alarme != 0)
                     {                      {
                         envoi_signal_thread((*(*((struct_processus_fils *)                          envoi_signal_thread(s_etat_processus,
                                   (*(*((struct_processus_fils *)
                                 (*(*l_element_courant).donnee).objet)).thread)                                  (*(*l_element_courant).donnee).objet)).thread)
                                 .tid, rpl_sigurg);                                  .tid, rpl_sigurg);
                     }                      }
Line 2251  instruction_detach(struct_processus *s_e Line 2252  instruction_detach(struct_processus *s_e
                     {                      {
                         if ((*s_etat_processus).arret_depuis_abort == -1)                          if ((*s_etat_processus).arret_depuis_abort == -1)
                         {                          {
                             envoi_signal_thread((*(*((struct_processus_fils *)                              envoi_signal_thread(s_etat_processus,
                                       (*(*((struct_processus_fils *)
                                     (*(*l_element_courant).donnee).objet))                                      (*(*l_element_courant).donnee).objet))
                                     .thread).tid, rpl_sigabort);                                      .thread).tid, rpl_sigabort);
                         }                          }
                         else                          else
                         {                          {
                             envoi_signal_thread((*(*((struct_processus_fils *)                              envoi_signal_thread(s_etat_processus,
                                       (*(*((struct_processus_fils *)
                                     (*(*l_element_courant).donnee).objet))                                      (*(*l_element_courant).donnee).objet))
                                     .thread).tid, rpl_sigstop);                                      .thread).tid, rpl_sigstop);
                         }                          }
Line 2304  instruction_detach(struct_processus *s_e Line 2307  instruction_detach(struct_processus *s_e
                             .donnee).objet)).thread).nombre_objets_dans_pipe--;                              .donnee).objet)).thread).nombre_objets_dans_pipe--;
   
                     action.sa_handler = SIG_IGN;                      action.sa_handler = SIG_IGN;
                     action.sa_flags = SA_ONSTACK;                      action.sa_flags = 0;
   
                     if (sigaction(SIGPIPE, &action, &registre) != 0)                      if (sigaction(SIGPIPE, &action, &registre) != 0)
                     {                      {
Line 2724  instruction_detach(struct_processus *s_e Line 2727  instruction_detach(struct_processus *s_e
         attente.tv_sec = 0;          attente.tv_sec = 0;
         attente.tv_nsec = GRANULARITE_us * 1000;          attente.tv_nsec = GRANULARITE_us * 1000;
   
           pthread_mutex_lock(&((*s_etat_processus).mutex_pile_processus));
   
         while(nombre_thread_surveillance_processus != 0)          while(nombre_thread_surveillance_processus != 0)
         {          {
               pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus));
             nanosleep(&attente, NULL);              nanosleep(&attente, NULL);
             INCR_GRANULARITE(attente.tv_nsec);              INCR_GRANULARITE(attente.tv_nsec);
               pthread_mutex_lock(&((*s_etat_processus).mutex_pile_processus));
         }          }
   
           pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus));
   
         closelog();          closelog();
   
         retrait_thread(s_etat_processus);          retrait_thread(s_etat_processus);
Line 2801  instruction_detach(struct_processus *s_e Line 2810  instruction_detach(struct_processus *s_e
     }      }
     else      else
     {      {
           deverrouillage_threads_concurrents(s_etat_processus);
         (*s_etat_processus).erreur_systeme = d_es_processus;          (*s_etat_processus).erreur_systeme = d_es_processus;
         return;          return;
     }      }
Line 2905  instruction_detach(struct_processus *s_e Line 2915  instruction_detach(struct_processus *s_e
     }      }
   
     return;      return;
 #endif  
 }  }
   
 // vim: ts=4  // vim: ts=4

Removed from v.1.159  
changed lines
  Added in v.1.168


CVSweb interface <joel.bertrand@systella.fr>