Diff for /rpl/src/gestion_interruptions.c between versions 1.59 and 1.70

version 1.59, 2016/03/01 22:12:27 version 1.70, 2020/01/10 11:15:42
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.25    RPL/2 (R) version 4.1.32
   Copyright (C) 1989-2016 Dr. BERTRAND Joël    Copyright (C) 1989-2020 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 39  void Line 39  void
 affectation_interruptions_logicielles(struct_processus *s_etat_processus)  affectation_interruptions_logicielles(struct_processus *s_etat_processus)
 {  {
     int                             interruption;      int                             interruption;
       int                             ios;
   
     sig_atomic_t                    registre;      sig_atomic_t                    registre;
   
Line 57  affectation_interruptions_logicielles(st Line 58  affectation_interruptions_logicielles(st
         return;          return;
     }      }
   
       if ((ios = pthread_mutex_trylock(&((*s_etat_processus)
               .mutex_pile_processus))) != 0)
       {
           if (ios != EBUSY)
           {
               (*s_etat_processus).erreur_systeme = d_es_processus;
           }
   
           return;
       }
   
     l_element_courant = (*s_etat_processus).l_base_pile_processus;      l_element_courant = (*s_etat_processus).l_base_pile_processus;
   
     while(l_element_courant != NULL)      while(l_element_courant != NULL)
Line 71  affectation_interruptions_logicielles(st Line 83  affectation_interruptions_logicielles(st
   
         if ((*(*l_element_courant).donnee).type != PRC)          if ((*(*l_element_courant).donnee).type != PRC)
         {          {
               pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus));
   
             (*s_etat_processus).erreur_systeme = d_es_processus;              (*s_etat_processus).erreur_systeme = d_es_processus;
             return;              return;
         }          }
Line 78  affectation_interruptions_logicielles(st Line 92  affectation_interruptions_logicielles(st
         if (pthread_mutex_lock(&((*(*((struct_processus_fils *)          if (pthread_mutex_lock(&((*(*((struct_processus_fils *)
                 (*(*l_element_courant).donnee).objet)).thread).mutex)) != 0)                  (*(*l_element_courant).donnee).objet)).thread).mutex)) != 0)
         {          {
               pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus));
   
             (*s_etat_processus).erreur_systeme = d_es_processus;              (*s_etat_processus).erreur_systeme = d_es_processus;
             return;              return;
         }          }
Line 111  affectation_interruptions_logicielles(st Line 127  affectation_interruptions_logicielles(st
                     pthread_mutex_unlock(&((*(*((struct_processus_fils *)                      pthread_mutex_unlock(&((*(*((struct_processus_fils *)
                             (*(*l_element_courant).donnee).objet)).thread)                              (*(*l_element_courant).donnee).objet)).thread)
                             .mutex));                              .mutex));
                       pthread_mutex_unlock(&((*s_etat_processus)
                               .mutex_pile_processus));
   
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
                             d_es_interruption_invalide;                              d_es_interruption_invalide;
Line 131  affectation_interruptions_logicielles(st Line 149  affectation_interruptions_logicielles(st
                         pthread_mutex_unlock(&((*(*((struct_processus_fils *)                          pthread_mutex_unlock(&((*(*((struct_processus_fils *)
                                 (*(*l_element_courant).donnee).objet)).thread)                                  (*(*l_element_courant).donnee).objet)).thread)
                                 .mutex));                                  .mutex));
                           pthread_mutex_unlock(&((*s_etat_processus)
                                   .mutex_pile_processus));
   
                         (*s_etat_processus).erreur_systeme =                          (*s_etat_processus).erreur_systeme =
                                 d_es_allocation_memoire;                                  d_es_allocation_memoire;
Line 146  affectation_interruptions_logicielles(st Line 166  affectation_interruptions_logicielles(st
                         pthread_mutex_unlock(&((*(*((struct_processus_fils *)                          pthread_mutex_unlock(&((*(*((struct_processus_fils *)
                                 (*(*l_element_courant).donnee).objet)).thread)                                  (*(*l_element_courant).donnee).objet)).thread)
                                 .mutex));                                  .mutex));
   
                           if (pthread_mutex_unlock(&((*s_etat_processus)
                                   .mutex_pile_processus)) != 0)
                           {
                               (*s_etat_processus).erreur_systeme = d_es_processus;
                               return;
                           }
   
                         return;                          return;
                     }                      }
   
Line 235  affectation_interruptions_logicielles(st Line 263  affectation_interruptions_logicielles(st
             {              {
                 pthread_mutex_unlock(&((*(*((struct_processus_fils *)                  pthread_mutex_unlock(&((*(*((struct_processus_fils *)
                         (*(*l_element_courant).donnee).objet)).thread).mutex));                          (*(*l_element_courant).donnee).objet)).thread).mutex));
                   pthread_mutex_unlock(&((*s_etat_processus)
                           .mutex_pile_processus));
   
                 if (registre == 0)                  if (registre == 0)
                 {                  {
Line 263  affectation_interruptions_logicielles(st Line 293  affectation_interruptions_logicielles(st
         l_element_courant = (*l_element_courant).suivant;          l_element_courant = (*l_element_courant).suivant;
     }      }
   
       if (pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus)) != 0)
       {
           (*s_etat_processus).erreur_systeme = d_es_processus;
           return;
       }
   
     return;      return;
 }  }
   

Removed from v.1.59  
changed lines
  Added in v.1.70


CVSweb interface <joel.bertrand@systella.fr>