Diff for /rpl/src/instructions_r6.c between versions 1.72 and 1.79

version 1.72, 2018/12/24 15:56:24 version 1.79, 2020/01/10 11:15:48
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.30    RPL/2 (R) version 4.1.32
   Copyright (C) 1989-2018 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 316  instruction_recv(struct_processus *s_eta Line 316  instruction_recv(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;  
             }  
         }  
   
         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)
         {          {
Line 346  instruction_recv(struct_processus *s_eta Line 333  instruction_recv(struct_processus *s_eta
             return;              return;
         }          }
   
           if (pthread_mutex_lock(&mutex_sigaction) != 0)
           {
               (*s_etat_processus).erreur_systeme = d_es_processus;
               return;
           }
   
         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 370  instruction_recv(struct_processus *s_eta Line 363  instruction_recv(struct_processus *s_eta
                 profilage(s_etat_processus, NULL);                  profilage(s_etat_processus, NULL);
             }              }
   
               pthread_mutex_unlock(&mutex_sigaction);
             (*s_etat_processus).erreur_systeme = d_es_signal;              (*s_etat_processus).erreur_systeme = d_es_signal;
             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;  
         }  
   
         while((longueur_ecriture = write_atomic(s_etat_processus,          while((longueur_ecriture = write_atomic(s_etat_processus,
                 (*(*((struct_processus_fils *) (*(*l_element_courant)                  (*(*((struct_processus_fils *) (*(*l_element_courant)
                 .donnee).objet)).thread).pipe_nombre_injections[1], "+",                  .donnee).objet)).thread).pipe_nombre_injections[1], "+",
Line 404  instruction_recv(struct_processus *s_eta Line 388  instruction_recv(struct_processus *s_eta
         {          {
             if (errno != EINTR)              if (errno != EINTR)
             {              {
                   pthread_mutex_unlock(&mutex_sigaction);
                 (*s_etat_processus).erreur_systeme = d_es_processus;                  (*s_etat_processus).erreur_systeme = d_es_processus;
                 return;                  return;
             }              }
Line 433  instruction_recv(struct_processus *s_eta Line 418  instruction_recv(struct_processus *s_eta
             return;              return;
         }          }
   
           if (pthread_mutex_unlock(&mutex_sigaction) != 0)
           {
               (*s_etat_processus).erreur_systeme = d_es_processus;
               return;
           }
   
         if (pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus))          if (pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus))
                 != 0)                  != 0)
         {          {

Removed from v.1.72  
changed lines
  Added in v.1.79


CVSweb interface <joel.bertrand@systella.fr>