Diff for /rpl/src/interruptions.c between versions 1.145 and 1.146

version 1.145, 2014/05/17 21:39:59 version 1.146, 2014/06/05 20:51:54
Line 99  thread_surveillance_signaux(void *argume Line 99  thread_surveillance_signaux(void *argume
   
             if ((*s_queue_signaux).requete_arret == d_vrai)              if ((*s_queue_signaux).requete_arret == d_vrai)
             {              {
   uprintf("Fin du thread\n");
                 sem_post(semaphore_arret_signalisation);                  sem_post(semaphore_arret_signalisation);
                 sem_post(semaphore_signalisation);                  sem_post(semaphore_signalisation);
   
Line 188  thread_surveillance_signaux(void *argume Line 189  thread_surveillance_signaux(void *argume
         }          }
     }      }
   
   uprintf("Zouh...\n");
     pthread_exit(NULL);      pthread_exit(NULL);
 }  }
   
Line 2481  scrutation_interruptions(struct_processu Line 2483  scrutation_interruptions(struct_processu
                     ((*s_queue_signaux).pointeur_lecture + 1)                      ((*s_queue_signaux).pointeur_lecture + 1)
                     % LONGUEUR_QUEUE_SIGNAUX;                      % LONGUEUR_QUEUE_SIGNAUX;
   
   #           ifndef IPCS_SYSV
             if (msync(s_queue_signaux, sizeof(s_queue_signaux),              if (msync(s_queue_signaux, sizeof(s_queue_signaux),
                     MS_ASYNC | MS_INVALIDATE) != 0)                      MS_ASYNC | MS_INVALIDATE) != 0)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_processus;                  (*s_etat_processus).erreur_systeme = d_es_processus;
                 return;                  return;
             }              }
   #           endif
   
             while(sem_wait(semaphore_signalisation) != 0)              while(sem_wait(semaphore_signalisation) != 0)
             {              {
Line 2651  envoi_signal_processus(pid_t pid, enum s Line 2655  envoi_signal_processus(pid_t pid, enum s
                 ((*s_queue_signaux).pointeur_ecriture + 1)                  ((*s_queue_signaux).pointeur_ecriture + 1)
                 % LONGUEUR_QUEUE_SIGNAUX;                  % LONGUEUR_QUEUE_SIGNAUX;
   
   #       ifndef IPCS_SYSV
         if (msync(s_queue_signaux, sizeof(s_queue_signaux),          if (msync(s_queue_signaux, sizeof(s_queue_signaux),
                 MS_ASYNC | MS_INVALIDATE) != 0)                  MS_ASYNC | MS_INVALIDATE) != 0)
         {          {
             return(1);              return(1);
         }          }
   #       endif
   
         if (sem_post(semaphore_queue_signaux) != 0)          if (sem_post(semaphore_queue_signaux) != 0)
         {          {
Line 2764  envoi_signal_processus(pid_t pid, enum s Line 2770  envoi_signal_processus(pid_t pid, enum s
         (*queue).pointeur_ecriture = ((*queue).pointeur_ecriture + 1)          (*queue).pointeur_ecriture = ((*queue).pointeur_ecriture + 1)
                 % LONGUEUR_QUEUE_SIGNAUX;                  % LONGUEUR_QUEUE_SIGNAUX;
   
   #       ifndef IPCS_SYSV
         if (msync(queue, sizeof(queue), MS_ASYNC | MS_INVALIDATE) != 0)          if (msync(queue, sizeof(queue), MS_ASYNC | MS_INVALIDATE) != 0)
         {          {
             sem_close(semaphore);              sem_close(semaphore);
             sem_close(signalisation);              sem_close(signalisation);
             return(1);              return(1);
         }          }
   #       endif
   
         if (sem_post(semaphore) != 0)          if (sem_post(semaphore) != 0)
         {          {
Line 2995  creation_queue_signaux(struct_processus Line 3003  creation_queue_signaux(struct_processus
   
         (*s_queue_signaux).requete_arret = d_faux;          (*s_queue_signaux).requete_arret = d_faux;
   
   #       ifndef IPCS_SYSV
         if (msync(s_queue_signaux, sizeof(struct_queue_signaux), MS_SYNC))          if (msync(s_queue_signaux, sizeof(struct_queue_signaux), MS_SYNC))
         {          {
             (*s_etat_processus).erreur_systeme = d_es_processus;              (*s_etat_processus).erreur_systeme = d_es_processus;
             return;              return;
         }          }
   #       endif
 #   else // IPCS_SYSV  #   else // IPCS_SYSV
 #       ifndef OS2  #       ifndef OS2
             int                             segment;              int                             segment;
Line 3181  void Line 3191  void
 liberation_queue_signaux(struct_processus *s_etat_processus)  liberation_queue_signaux(struct_processus *s_etat_processus)
 {  {
     sem_wait(semaphore_arret_signalisation);      sem_wait(semaphore_arret_signalisation);
   
     (*s_queue_signaux).requete_arret = d_vrai;      (*s_queue_signaux).requete_arret = d_vrai;
   
   #   ifndef IPCS_SYSV
     msync(s_queue_signaux, sizeof(s_queue_signaux), MS_ASYNC | MS_INVALIDATE);      msync(s_queue_signaux, sizeof(s_queue_signaux), MS_ASYNC | MS_INVALIDATE);
   #   endif
   
     sem_post(semaphore_arret_signalisation);      sem_post(semaphore_arret_signalisation);
   
     // Incrémenter le sémaphore pour être sûr de le débloquer.      // Incrémenter le sémaphore pour être sûr de le débloquer.
   
     sem_post(semaphore_signalisation);      sem_post(semaphore_signalisation);
   
     pthread_join((*s_queue_signaux).thread_signaux, NULL);      pthread_join((*s_queue_signaux).thread_signaux, NULL);
   
 #   ifdef IPCS_SYSV // SystemV  #   ifdef IPCS_SYSV // SystemV
Line 3243  destruction_queue_signaux(struct_process Line 3254  destruction_queue_signaux(struct_process
     sem_wait(semaphore_arret_signalisation);      sem_wait(semaphore_arret_signalisation);
   
     (*s_queue_signaux).requete_arret = d_vrai;      (*s_queue_signaux).requete_arret = d_vrai;
   
   #   ifndef IPCS_SYSV
     msync(s_queue_signaux, sizeof(s_queue_signaux), MS_ASYNC | MS_INVALIDATE);      msync(s_queue_signaux, sizeof(s_queue_signaux), MS_ASYNC | MS_INVALIDATE);
   #   endif
   
     sem_post(semaphore_arret_signalisation);      sem_post(semaphore_arret_signalisation);
   
     // Incrémenter le sémaphore pour être sûr de le débloquer.      // Incrémenter le sémaphore pour être sûr de le débloquer.
   
     sem_post(semaphore_signalisation);      sem_post(semaphore_signalisation);
       uprintf("Requête arrêt\n");
     pthread_join((*s_queue_signaux).thread_signaux, NULL);      int ios;
       ios = pthread_join((*s_queue_signaux).thread_signaux, NULL);
       if (ios) perror("pthread_join");
   
 #   ifdef IPCS_SYSV // SystemV  #   ifdef IPCS_SYSV // SystemV
 #       ifndef OS2  #       ifndef OS2

Removed from v.1.145  
changed lines
  Added in v.1.146


CVSweb interface <joel.bertrand@systella.fr>