Diff for /rpl/src/instructions_s1.c between versions 1.108 and 1.112

version 1.108, 2019/06/17 13:27:35 version 1.112, 2019/07/19 06:53:29
Line 19 Line 19
 ================================================================================  ================================================================================
 */  */
   
   #define DEBUG_ERREURS
 #include "rpl-conv.h"  #include "rpl-conv.h"
   
   
Line 3484  instruction_syseval(struct_processus *s_ Line 3484  instruction_syseval(struct_processus *s_
     struct_objet                *s_objet_resultat;      struct_objet                *s_objet_resultat;
     struct_objet                *s_objet_temporaire;      struct_objet                *s_objet_temporaire;
   
       struct pollfd               fds;
   
     struct sigaction            action_courante;      struct sigaction            action_courante;
     struct sigaction            action_passee;      struct sigaction            action_passee;
   
Line 3875  instruction_syseval(struct_processus *s_ Line 3877  instruction_syseval(struct_processus *s_
                 if (dup2(pipes_entree[0], STDIN_FILENO) == -1)                  if (dup2(pipes_entree[0], STDIN_FILENO) == -1)
                 {                  {
                     (*s_etat_processus).erreur_systeme = d_es_processus;                      (*s_etat_processus).erreur_systeme = d_es_processus;
                 printf("%d\n",__LINE__);                      printf("%d\n",__LINE__);
                 }                  }
             }              }
   
Line 3884  instruction_syseval(struct_processus *s_ Line 3886  instruction_syseval(struct_processus *s_
                 if (dup2(pipes_sortie[1], STDOUT_FILENO) == -1)                  if (dup2(pipes_sortie[1], STDOUT_FILENO) == -1)
                 {                  {
                     (*s_etat_processus).erreur_systeme = d_es_processus;                      (*s_etat_processus).erreur_systeme = d_es_processus;
                 printf("%d\n",__LINE__);                      printf("%d\n",__LINE__);
                 }                  }
             }              }
   
Line 3893  instruction_syseval(struct_processus *s_ Line 3895  instruction_syseval(struct_processus *s_
                 if (dup2(pipes_sortie[1], STDERR_FILENO) == -1)                  if (dup2(pipes_sortie[1], STDERR_FILENO) == -1)
                 {                  {
                     (*s_etat_processus).erreur_systeme = d_es_processus;                      (*s_etat_processus).erreur_systeme = d_es_processus;
                 printf("%d\n",__LINE__);                      printf("%d\n",__LINE__);
                 }                  }
             }              }
   
Line 3932  instruction_syseval(struct_processus *s_ Line 3934  instruction_syseval(struct_processus *s_
   
             if ((*s_etat_processus).langue == 'F')              if ((*s_etat_processus).langue == 'F')
             {              {
                 printf("+++Système : erreurinterne dans SYSEVAL [%d]\n",                  printf("+++Système : erreur interne dans SYSEVAL [%d]\n",
                         (int) getpid());                          (int) getpid());
             }              }
             else              else
Line 4047  instruction_syseval(struct_processus *s_ Line 4049  instruction_syseval(struct_processus *s_
   
             while((ios = (int) read_atomic_signal(s_etat_processus,              while((ios = (int) read_atomic_signal(s_etat_processus,
                     pipes_sortie[0], &(tampon[pointeur]),                      pipes_sortie[0], &(tampon[pointeur]),
                     (size_t) longueur_lecture)) > 0)                      (size_t) longueur_lecture)) >= 0)
             {              {
                   if ((ios == 0) && ((*s_etat_processus)
                           .var_volatile_requete_arret == 0))
                   {
                       // Correspond à un buffer vide en l'absence
                       // d'interruption. On ne boucle pas, il n'y a rien à
                       // lire.
   
                       break;
                   }
   
 #               ifndef SEMAPHORES_NOMMES  #               ifndef SEMAPHORES_NOMMES
                     while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0)                      while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0)
 #               else  #               else
Line 4103  instruction_syseval(struct_processus *s_ Line 4115  instruction_syseval(struct_processus *s_
                     }                      }
   
                     etape = 1;                      etape = 1;
                       attente.tv_sec = 0;
                       attente.tv_nsec = GRANULARITE_us * 1000;
   
                     while((ios = getc(fpipe)) != EOF)                      fds.fd = pipes_sortie[0];
                       fds.events = POLLIN;
   
                       while(feof(fpipe) != 0)
                     {                      {
                           if (poll(&fds, 1, 0) > 0)
                           {
                               getc(fpipe);
                               attente.tv_sec = 0;
                               attente.tv_nsec = GRANULARITE_us * 1000;
                           }
                           else
                           {
                               nanosleep(&attente, NULL);
                               INCR_GRANULARITE(attente.tv_nsec);
                           }
   
                         if (etape == 1)                          if (etape == 1)
                         {                          {
                             gettimeofday(&horodatage_final, NULL);                              gettimeofday(&horodatage_final, NULL);
Line 4125  instruction_syseval(struct_processus *s_ Line 4154  instruction_syseval(struct_processus *s_
                         }                          }
                     }                      }
   
                     fclose(fpipe);  
                     break;                      break;
                 }                  }
             }              }

Removed from v.1.108  
changed lines
  Added in v.1.112


CVSweb interface <joel.bertrand@systella.fr>