Diff for /rpl/src/instructions_p7.c between versions 1.80 and 1.81

version 1.80, 2019/02/11 09:45:51 version 1.81, 2019/02/12 14:38:43
Line 752  instruction_poke(struct_processus *s_eta Line 752  instruction_poke(struct_processus *s_eta
                     action.sa_handler = SIG_IGN;                      action.sa_handler = SIG_IGN;
                     action.sa_flags = 0;                      action.sa_flags = 0;
   
   #                   ifndef SEMAPHORES_NOMMES
                           if (sem_post(&((*s_etat_processus).semaphore_fork))
                                   != 0)
   #                   else
                           if (sem_post((*s_etat_processus).semaphore_fork) != 0)
   #                   endif
                       {
                           (*s_etat_processus).erreur_systeme = d_es_processus;
                           return;
                       }
   
                     if (pthread_mutex_lock(&mutex_sigaction) != 0)                      if (pthread_mutex_lock(&mutex_sigaction) != 0)
                     {                      {
                         (*s_etat_processus).erreur_systeme = d_es_processus;                          (*s_etat_processus).erreur_systeme = d_es_processus;
Line 799  instruction_poke(struct_processus *s_eta Line 810  instruction_poke(struct_processus *s_eta
                         }                          }
                     }                      }
   
                     /*  
 #                   ifndef SEMAPHORES_NOMMES  
                         if (sem_post(&((*s_etat_processus).semaphore_fork))  
                                 != 0)  
 #                   else  
                         if (sem_post((*s_etat_processus).semaphore_fork) != 0)  
 #                   endif  
                     {  
                         pthread_mutex_unlock(&mutex_sigaction);  
                         (*s_etat_processus).erreur_systeme = d_es_processus;  
                         return;  
                     }  
                     */  
   
                     while((longueur_ecriture = write_atomic(s_etat_processus,                      while((longueur_ecriture = write_atomic(s_etat_processus,
                             (*(*((struct_processus_fils *)                              (*(*((struct_processus_fils *)
                             (*(*l_element_courant).donnee).objet)).thread)                              (*(*l_element_courant).donnee).objet)).thread)
                             .pipe_nombre_injections[1], "-",                              .pipe_nombre_injections[1], "-",
                             sizeof(unsigned char))) != sizeof(unsigned char))                              sizeof(unsigned char))) != sizeof(unsigned char))
                     {                      {
                         /*  
 #                       ifndef SEMAPHORES_NOMMES  
                             while(sem_wait(  
                                     &((*s_etat_processus).semaphore_fork)) != 0)  
 #                       else  
                             while(sem_wait(  
                                     (*s_etat_processus).semaphore_fork) != 0)  
 #                       endif  
                         {  
                             if (errno != EINTR)  
                             {  
                                 (*s_etat_processus).erreur_systeme =  
                                         d_es_processus;  
                                 return;  
                             }  
                         }  
                         */  
   
                         if (longueur_ecriture == -1)                          if (longueur_ecriture == -1)
                         {                          {
                             pthread_mutex_unlock(&mutex_sigaction);                              pthread_mutex_unlock(&mutex_sigaction);
Line 876  instruction_poke(struct_processus *s_eta Line 855  instruction_poke(struct_processus *s_eta
   
                             return;                              return;
                         }                          }
   
                         /*  
 #                       ifndef SEMAPHORES_NOMMES  
                             if (sem_post(  
                                     &((*s_etat_processus).semaphore_fork)) != 0)  
 #                       else  
                             if (sem_post(  
                                     (*s_etat_processus).semaphore_fork) != 0)  
 #                       endif  
                         {  
                             (*s_etat_processus).erreur_systeme = d_es_processus;  
                             return;  
                         }  
                         */  
                     }                      }
   
                     if (ecriture_pipe(s_etat_processus,                      if (ecriture_pipe(s_etat_processus,
Line 906  instruction_poke(struct_processus *s_eta Line 871  instruction_poke(struct_processus *s_eta
                         }                          }
                     }                      }
   
                     /*  
 #                   ifndef SEMAPHORES_NOMMES  
                         while(sem_wait(&((*s_etat_processus).semaphore_fork))  
                                 != 0)  
 #                   else  
                         while(sem_wait((*s_etat_processus).semaphore_fork) != 0)  
 #                   endif  
                     {  
                         if (errno != EINTR)  
                         {  
                             (*s_etat_processus).erreur_systeme = d_es_processus;  
                             return;  
                         }  
                     }  
                     */  
   
                     if (registre_stop == 0)                      if (registre_stop == 0)
                     {                      {
                         if ((*s_etat_processus)                          if ((*s_etat_processus)
Line 956  instruction_poke(struct_processus *s_eta Line 905  instruction_poke(struct_processus *s_eta
                         return;                          return;
                     }                      }
   
   #                   ifndef SEMAPHORES_NOMMES
                           while(sem_wait(&((*s_etat_processus).semaphore_fork))
                                   != 0)
   #                   else
                           while(sem_wait((*s_etat_processus).semaphore_fork) != 0)
   #                   endif
                       {
                           if (errno != EINTR)
                           {
                               (*s_etat_processus).erreur_systeme = d_es_processus;
                               return;
                           }
                       }
   
                     break;                      break;
                 }                  }
             }              }
Line 982  instruction_poke(struct_processus *s_eta Line 945  instruction_poke(struct_processus *s_eta
                     // de lecteur et on peut se prendre un SIGPIPE dans la                      // de lecteur et on peut se prendre un SIGPIPE dans la
                     // figure !                      // figure !
   
   #                   ifndef SEMAPHORES_NOMMES
                           if (sem_post(&((*s_etat_processus).semaphore_fork))
                                   != 0)
   #                   else
                           if (sem_post((*s_etat_processus).semaphore_fork) != 0)
   #                   endif
                       {
                           (*s_etat_processus).erreur_systeme = d_es_processus;
                           return;
                       }
   
                     if (pthread_mutex_lock(&mutex_sigaction) != 0)                      if (pthread_mutex_lock(&mutex_sigaction) != 0)
                     {                      {
   #                       ifndef SEMAPHORES_NOMMES
                               while(sem_wait(&((*s_etat_processus)
                                       .semaphore_fork)) != 0)
   #                       else
                               while(sem_wait((*s_etat_processus)
                                       .semaphore_fork) != 0)
   #                       endif
                           {
                               if (errno != EINTR)
                               {
                                   (*s_etat_processus).erreur_systeme =
                                           d_es_processus;
                                   return;
                               }
                           }
   
                         (*s_etat_processus).erreur_systeme = d_es_processus;                          (*s_etat_processus).erreur_systeme = d_es_processus;
                         return;                          return;
                     }                      }
Line 993  instruction_poke(struct_processus *s_eta Line 983  instruction_poke(struct_processus *s_eta
   
                     if (sigaction(SIGPIPE, &action, &registre) != 0)                      if (sigaction(SIGPIPE, &action, &registre) != 0)
                     {                      {
   #                       ifndef SEMAPHORES_NOMMES
                               while(sem_wait(&((*s_etat_processus)
                                       .semaphore_fork)) != 0)
   #                       else
                               while(sem_wait((*s_etat_processus)
                                       .semaphore_fork) != 0)
   #                       endif
                           {
                               if (errno != EINTR)
                               {
                                   (*s_etat_processus).erreur_systeme =
                                           d_es_processus;
                                   return;
                               }
                           }
   
                         pthread_mutex_unlock(&mutex_sigaction);                          pthread_mutex_unlock(&mutex_sigaction);
                         pthread_mutex_unlock(&((*s_etat_processus)                          pthread_mutex_unlock(&((*s_etat_processus)
                                 .mutex_pile_processus));                                  .mutex_pile_processus));
Line 1009  instruction_poke(struct_processus *s_eta Line 1015  instruction_poke(struct_processus *s_eta
                             (*(*l_element_courant).donnee).objet)).thread)                              (*(*l_element_courant).donnee).objet)).thread)
                             .mutex)) != 0)                              .mutex)) != 0)
                     {                      {
   #                       ifndef SEMAPHORES_NOMMES
                               while(sem_wait(&((*s_etat_processus)
                                       .semaphore_fork)) != 0)
   #                       else
                               while(sem_wait((*s_etat_processus)
                                       .semaphore_fork) != 0)
   #                       endif
                           {
                               if (errno != EINTR)
                               {
                                   (*s_etat_processus).erreur_systeme =
                                           d_es_processus;
                                   return;
                               }
                           }
   
                         pthread_mutex_unlock(&mutex_sigaction);                          pthread_mutex_unlock(&mutex_sigaction);
                         (*s_etat_processus).erreur_systeme = d_es_processus;                          (*s_etat_processus).erreur_systeme = d_es_processus;
                         return;                          return;
Line 1030  instruction_poke(struct_processus *s_eta Line 1052  instruction_poke(struct_processus *s_eta
                                     (*(*l_element_courant).donnee).objet))                                      (*(*l_element_courant).donnee).objet))
                                     .thread).mutex)) != 0)                                      .thread).mutex)) != 0)
                             {                              {
   #                               ifndef SEMAPHORES_NOMMES
                                       while(sem_wait(&((*s_etat_processus)
                                               .semaphore_fork)) != 0)
   #                               else
                                       while(sem_wait((*s_etat_processus)
                                               .semaphore_fork) != 0)
   #                               endif
                                   {
                                       if (errno != EINTR)
                                       {
                                           (*s_etat_processus).erreur_systeme =
                                                   d_es_processus;
                                           return;
                                       }
                                   }
   
                                 pthread_mutex_unlock(&mutex_sigaction);                                  pthread_mutex_unlock(&mutex_sigaction);
                                 (*s_etat_processus).erreur_systeme =                                  (*s_etat_processus).erreur_systeme =
                                         d_es_processus;                                          d_es_processus;
Line 1046  instruction_poke(struct_processus *s_eta Line 1084  instruction_poke(struct_processus *s_eta
                                 (*(*l_element_courant).donnee).objet))                                  (*(*l_element_courant).donnee).objet))
                                 .thread).mutex)) != 0)                                  .thread).mutex)) != 0)
                         {                          {
   #                           ifndef SEMAPHORES_NOMMES
                                   while(sem_wait(&((*s_etat_processus)
                                           .semaphore_fork)) != 0)
   #                           else
                                   while(sem_wait((*s_etat_processus)
                                           .semaphore_fork) != 0)
   #                           endif
                               {
                                   if (errno != EINTR)
                                   {
                                       (*s_etat_processus).erreur_systeme =
                                               d_es_processus;
                                       return;
                                   }
                               }
   
                             pthread_mutex_unlock(&mutex_sigaction);                              pthread_mutex_unlock(&mutex_sigaction);
                             (*s_etat_processus).erreur_systeme = d_es_processus;                              (*s_etat_processus).erreur_systeme = d_es_processus;
                             return;                              return;
Line 1058  instruction_poke(struct_processus *s_eta Line 1112  instruction_poke(struct_processus *s_eta
                             (*(*l_element_courant).donnee).objet)).thread)                              (*(*l_element_courant).donnee).objet)).thread)
                             .mutex)) != 0)                              .mutex)) != 0)
                     {                      {
   #                       ifndef SEMAPHORES_NOMMES
                               while(sem_wait(&((*s_etat_processus)
                                       .semaphore_fork)) != 0)
   #                       else
                               while(sem_wait((*s_etat_processus)
                                       .semaphore_fork) != 0)
   #                       endif
                           {
                               if (errno != EINTR)
                               {
                                   (*s_etat_processus).erreur_systeme =
                                           d_es_processus;
                                   return;
                               }
                           }
   
                         pthread_mutex_unlock(&mutex_sigaction);                          pthread_mutex_unlock(&mutex_sigaction);
                         (*s_etat_processus).erreur_systeme = d_es_processus;                          (*s_etat_processus).erreur_systeme = d_es_processus;
                         return;                          return;
Line 1075  instruction_poke(struct_processus *s_eta Line 1145  instruction_poke(struct_processus *s_eta
   
                         if ((*s_etat_processus).erreur_systeme != d_es)                          if ((*s_etat_processus).erreur_systeme != d_es)
                         {                          {
   #                           ifndef SEMAPHORES_NOMMES
                                   while(sem_wait(&((*s_etat_processus)
                                           .semaphore_fork)) != 0)
   #                           else
                                   while(sem_wait((*s_etat_processus)
                                           .semaphore_fork) != 0)
   #                           endif
                               {
                                   if (errno != EINTR)
                                   {
                                       (*s_etat_processus).erreur_systeme =
                                               d_es_processus;
                                       return;
                                   }
                               }
   
                             pthread_mutex_unlock(&mutex_sigaction);                              pthread_mutex_unlock(&mutex_sigaction);
                             pthread_mutex_unlock(&((*s_etat_processus)                              pthread_mutex_unlock(&((*s_etat_processus)
                                     .mutex_pile_processus));                                      .mutex_pile_processus));
Line 1082  instruction_poke(struct_processus *s_eta Line 1168  instruction_poke(struct_processus *s_eta
                         }                          }
                     }                      }
   
                     /*  
 #                   ifndef SEMAPHORES_NOMMES  
                         if (sem_post(  
                                 &((*s_etat_processus).semaphore_fork)) != 0)  
 #                   else  
                         if (sem_post(  
                                 (*s_etat_processus).semaphore_fork) != 0)  
 #                   endif  
                     {  
                         (*s_etat_processus).erreur_systeme = d_es_processus;  
                         return;  
                     }  
                     */  
   
                     while((longueur_ecriture = write_atomic(s_etat_processus,                      while((longueur_ecriture = write_atomic(s_etat_processus,
                             (*(*((struct_processus_fils *)                              (*(*((struct_processus_fils *)
                             (*(*l_element_courant).donnee).objet)).thread)                              (*(*l_element_courant).donnee).objet)).thread)
                             .pipe_nombre_injections[1], "-",                              .pipe_nombre_injections[1], "-",
                             sizeof(unsigned char))) != sizeof(unsigned char))                              sizeof(unsigned char))) != sizeof(unsigned char))
                     {                      {
                         /*  
 #                       ifndef SEMAPHORES_NOMMES  
                             while(sem_wait(  
                                     &((*s_etat_processus).semaphore_fork)) != 0)  
 #                       else  
                             while(sem_wait(  
                                     (*s_etat_processus).semaphore_fork) != 0)  
 #                       endif  
                         {  
                             if (errno != EINTR)  
                             {  
                                 (*s_etat_processus).erreur_systeme =  
                                         d_es_processus;  
                                 return;  
                             }  
                         }  
                         */  
   
                         if (longueur_ecriture == -1)                          if (longueur_ecriture == -1)
                         {                          {
                             pthread_mutex_unlock(&((*s_etat_processus)                              pthread_mutex_unlock(&((*s_etat_processus)
Line 1150  instruction_poke(struct_processus *s_eta Line 1204  instruction_poke(struct_processus *s_eta
   
                             if (sigaction(SIGPIPE, &registre, NULL) != 0)                              if (sigaction(SIGPIPE, &registre, NULL) != 0)
                             {                              {
   #                               ifndef SEMAPHORES_NOMMES
                                       while(sem_wait(&((*s_etat_processus)
                                               .semaphore_fork)) != 0)
   #                               else
                                       while(sem_wait((*s_etat_processus)
                                               .semaphore_fork) != 0)
   #                               endif
                                   {
                                       if (errno != EINTR)
                                       {
                                           (*s_etat_processus).erreur_systeme =
                                                   d_es_processus;
                                           return;
                                       }
                                   }
   
                                 pthread_mutex_unlock(&mutex_sigaction);                                  pthread_mutex_unlock(&mutex_sigaction);
                                 (*s_etat_processus).erreur_systeme =                                  (*s_etat_processus).erreur_systeme =
                                         d_es_signal;                                          d_es_signal;
                                 return;                                  return;
                             }                              }
   
                             pthread_mutex_unlock(&mutex_sigaction);  #                           ifndef SEMAPHORES_NOMMES
                             return;                                  while(sem_wait(&((*s_etat_processus)
                         }                                          .semaphore_fork)) != 0)
   #                           else
                                   while(sem_wait((*s_etat_processus)
                                           .semaphore_fork) != 0)
   #                           endif
                               {
                                   if (errno != EINTR)
                                   {
                                       (*s_etat_processus).erreur_systeme =
                                               d_es_processus;
                                       return;
                                   }
                               }
   
                         /*                              pthread_mutex_unlock(&mutex_sigaction);
 #                       ifndef SEMAPHORES_NOMMES  
                             if (sem_post(  
                                     &((*s_etat_processus).semaphore_fork)) != 0)  
 #                       else  
                             if (sem_post(  
                                     (*s_etat_processus).semaphore_fork) != 0)  
 #                       endif  
                         {  
                             (*s_etat_processus).erreur_systeme = d_es_processus;  
                             return;                              return;
                         }                          }
                         */  
                     }                      }
   
                     if (ecriture_pipe(s_etat_processus,                      if (ecriture_pipe(s_etat_processus,
Line 1189  instruction_poke(struct_processus *s_eta Line 1261  instruction_poke(struct_processus *s_eta
                         }                          }
                     }                      }
   
                     /*  
 #                   ifndef SEMAPHORES_NOMMES  
                         while(sem_wait(  
                                 &((*s_etat_processus).semaphore_fork)) != 0)  
 #                   else  
                         while(sem_wait(  
                                 (*s_etat_processus).semaphore_fork) != 0)  
 #                   endif  
                     {  
                         if (errno != EINTR)  
                         {  
                             (*s_etat_processus).erreur_systeme = d_es_processus;  
                             return;  
                         }  
                     }  
                     */  
   
                     if (registre_stop == 0)                      if (registre_stop == 0)
                     {                      {
                         if ((*s_etat_processus)                          if ((*s_etat_processus)
Line 1226  instruction_poke(struct_processus *s_eta Line 1281  instruction_poke(struct_processus *s_eta
   
                     if (sigaction(SIGPIPE, &registre, NULL) != 0)                      if (sigaction(SIGPIPE, &registre, NULL) != 0)
                     {                      {
   #                       ifndef SEMAPHORES_NOMMES
                               while(sem_wait(&((*s_etat_processus)
                                       .semaphore_fork)) != 0)
   #                       else
                               while(sem_wait((*s_etat_processus)
                                       .semaphore_fork) != 0)
   #                       endif
                           {
                               if (errno != EINTR)
                               {
                                   (*s_etat_processus).erreur_systeme =
                                           d_es_processus;
                                   return;
                               }
                           }
   
                         pthread_mutex_unlock(&mutex_sigaction);                          pthread_mutex_unlock(&mutex_sigaction);
                         pthread_mutex_unlock(&((*s_etat_processus)                          pthread_mutex_unlock(&((*s_etat_processus)
                                 .mutex_pile_processus));                                  .mutex_pile_processus));
Line 1236  instruction_poke(struct_processus *s_eta Line 1307  instruction_poke(struct_processus *s_eta
   
                     if (pthread_mutex_unlock(&mutex_sigaction) != 0)                      if (pthread_mutex_unlock(&mutex_sigaction) != 0)
                     {                      {
   #                       ifndef SEMAPHORES_NOMMES
                               while(sem_wait(&((*s_etat_processus)
                                       .semaphore_fork)) != 0)
   #                       else
                               while(sem_wait((*s_etat_processus)
                                       .semaphore_fork) != 0)
   #                       endif
                           {
                               if (errno != EINTR)
                               {
                                   (*s_etat_processus).erreur_systeme =
                                           d_es_processus;
                                   return;
                               }
                           }
   
                         (*s_etat_processus).erreur_systeme = d_es_processus;                          (*s_etat_processus).erreur_systeme = d_es_processus;
                         return;                          return;
                     }                      }
   
   #                   ifndef SEMAPHORES_NOMMES
                           while(sem_wait(&((*s_etat_processus).semaphore_fork))
                                   != 0)
   #                   else
                           while(sem_wait((*s_etat_processus).semaphore_fork) != 0)
   #                   endif
                       {
                           if (errno != EINTR)
                           {
                               (*s_etat_processus).erreur_systeme = d_es_processus;
                               return;
                           }
                       }
   
                     break;                      break;
                 }                  }
             }              }

Removed from v.1.80  
changed lines
  Added in v.1.81


CVSweb interface <joel.bertrand@systella.fr>