Diff for /rpl/src/rpl.h between versions 1.238 and 1.239

version 1.238, 2014/01/26 18:21:34 version 1.239, 2014/04/23 13:43:01
Line 110 Line 110
 #       include <sys/shm.h>  #       include <sys/shm.h>
 #   endif  #   endif
   
 #   ifndef IPCS_SYSV  #   ifndef __RPLCAS
 #       include <semaphore.h>  #       ifndef IPCS_SYSV
 #   else  #           include <semaphore.h>
 #       include <sys/ipc.h>  #       else
 #       include <sys/sem.h>  #           include <sys/ipc.h>
   #           include <sys/sem.h>
 #       ifdef OS2  
 #           define INCL_DOSSEMAPHORES  #           ifdef OS2
 #           define INCL_DOSMEMMGR  #               define INCL_DOSSEMAPHORES
 #           define INCL_DOSERRORS  #               define INCL_DOSMEMMGR
 #           include <os2.h>  #               define INCL_DOSERRORS
   #               include <os2.h>
             typedef struct _OS2SEM  
             {                  typedef struct _OS2SEM
                 HMTX    hmtx;                  {
                 HEV     hev;                      HMTX    hmtx;
                 ULONG   shared;                      HEV     hev;
                 ULONG   *cnt;                      ULONG   shared;
                 ULONG   *nopened;                      ULONG   *cnt;
                 ULONG   allocated;                      ULONG   *nopened;
             } sem_t;                      ULONG   allocated;
 #       else // IPCS_SYSV                  } sem_t;
             typedef struct  #           else // IPCS_SYSV
             {                  typedef struct
                 int             sem;                  {
                 int             alloue;                      int             sem;
                 unsigned char   *path;                      int             alloue;
                 pid_t           pid;                      unsigned char   *path;
                 pthread_t       tid;                      pid_t           pid;
             } sem_t;                      pthread_t       tid;
 #       endif                      } sem_t;
   #           endif
 #       ifndef SEM_FAILED  
 #           define SEM_FAILED   NULL  #           ifndef SEM_FAILED
   #               define SEM_FAILED   NULL
   #           endif
   
               sem_t *sem_open_SysV(const char *nom, int oflag, ...);
               int sem_init_SysV(sem_t *sem, int shared, unsigned int value);
               int sem_close_SysV(sem_t *sem);
               int sem_wait_SysV(sem_t *sem);
               int sem_trywait_SysV(sem_t *sem);
               int sem_timedwait_SysV(sem_t *sem, struct timespec *ts);
               int sem_post_SysV(sem_t *sem);
               int sem_getvalue_SysV(sem_t *sem, int *value);
               int sem_unlink_SysV(char *nom);
               int sem_destroy_SysV(sem_t *sem);
 #       endif  #       endif
   
         sem_t *sem_open_SysV(const char *nom, int oflag, ...);  
         int sem_init_SysV(sem_t *sem, int shared, unsigned int value);  
         int sem_close_SysV(sem_t *sem);  
         int sem_wait_SysV(sem_t *sem);  
         int sem_trywait_SysV(sem_t *sem);  
         int sem_timedwait_SysV(sem_t *sem, struct timespec *ts);  
         int sem_post_SysV(sem_t *sem);  
         int sem_getvalue_SysV(sem_t *sem, int *value);  
         int sem_unlink_SysV(char *nom);  
         int sem_destroy_SysV(sem_t *sem);  
 #   endif  #   endif
   
 #   include <setjmp.h>  #   include <setjmp.h>
Line 318  enum signaux_rpl Line 320  enum signaux_rpl
 #ifndef RPLARGS  #ifndef RPLARGS
 typedef struct queue_signaux  typedef struct queue_signaux
 {  {
 #   ifndef IPCS_SYSV  
 #       ifndef SEMAPHORES_NOMMES  
             sem_t               semaphore;  
             sem_t               signalisation;  
             sem_t               arret_signalisation;  
 #       endif  
 #   else  
         sem_t                   semaphore;  
         sem_t                   signalisation;  
         sem_t                   arret_signalisation;  
 #   endif  
   
     volatile int                pointeur_lecture;      volatile int                pointeur_lecture;
     volatile int                pointeur_ecriture;      volatile int                pointeur_ecriture;
     pthread_t                   thread_signaux;  
     volatile logical1           requete_arret;      volatile logical1           requete_arret;
   
       pthread_t                   thread_signaux;
   
     volatile struct      volatile struct
     {      {
         pid_t                   pid;          pid_t                   pid;
         enum signaux_rpl        signal;          enum signaux_rpl        signal;
     }                           queue[LONGUEUR_QUEUE_SIGNAUX];      }                           queue[LONGUEUR_QUEUE_SIGNAUX];
   
   #   ifdef OS2
       sem_t                       semaphore;
       sem_t                       signalisation;
       sem_t                       arret_signalisation;
   #   endif
 } struct_queue_signaux;  } struct_queue_signaux;
   
 __EXTERN__ struct_queue_signaux     *s_queue_signaux;  __EXTERN__ struct_queue_signaux *s_queue_signaux;
 __EXTERN__ int                      f_queue_signaux;  __EXTERN__ int                  f_queue_signaux;
   
 #   ifdef SEMAPHORES_NOMMES  #   ifndef OS2
         __EXTERN__ sem_t            *semaphore_queue_signaux;      __EXTERN__ sem_t            *semaphore_queue_signaux;
         __EXTERN__ sem_t            *semaphore_signalisation;      __EXTERN__ sem_t            *semaphore_signalisation;
         __EXTERN__ sem_t            *semaphore_arret_signalisation;      __EXTERN__ sem_t            *semaphore_arret_signalisation;
 #   endif  #   endif
 #endif  #endif
   
Line 480  union semun Line 477  union semun
   
     __EXTERN__ pid_t                pid_processus_pere;      __EXTERN__ pid_t                pid_processus_pere;
   
 #   ifdef SEMAPHORES_NOMMES  
     __EXTERN__ pthread_mutex_t      mutex_sem __STATIC_MUTEX_INITIALIZATION__;  
 #   endif  
   
     __EXTERN__ pthread_mutex_t      mutex_liste_threads      __EXTERN__ pthread_mutex_t      mutex_liste_threads
                                             __STATIC_MUTEX_INITIALIZATION__;                                              __STATIC_MUTEX_INITIALIZATION__;
     __EXTERN__ pthread_mutex_t      mutex_creation_variable_partagee      __EXTERN__ pthread_mutex_t      mutex_creation_variable_partagee
                                             __STATIC_MUTEX_INITIALIZATION__;                                              __STATIC_MUTEX_INITIALIZATION__;
     __EXTERN__ pthread_mutex_t      mutex_sections_critiques;      __EXTERN__ pthread_mutex_t      mutex_sections_critiques;
     __EXTERN__ pthread_mutex_t      mutex_liste_variables_partagees;      __EXTERN__ pthread_mutex_t      mutex_liste_variables_partagees;
       __EXTERN__ pthread_mutex_t      mutex_sem __STATIC_MUTEX_INITIALIZATION__;
   
     __EXTERN__ sem_t __PTR__        semaphore_gestionnaires_signaux;      __EXTERN__ sem_t __PTR__        semaphore_gestionnaires_signaux;
   
     __EXTERN__ volatile int         routine_recursive;      __EXTERN__ volatile int         routine_recursive;
 #endif  #endif
   
 #ifdef SEMAPHORES_NOMMES  
 #define SEM_FORK                0  #define SEM_FORK                0
 #define SEM_QUEUE               1  #define SEM_QUEUE               1
 #define SEM_SIGNAUX             2  #define SEM_SIGNAUX             2
Line 513  sem_t *sem_open2(pid_t pid, int ordre); Line 506  sem_t *sem_open2(pid_t pid, int ordre);
 // de sem_getvalue() sur un système comme MacOS X qui ne possède pas  // de sem_getvalue() sur un système comme MacOS X qui ne possède pas
 // cette fonction.  // cette fonction.
   
   #ifdef Darwin
 #define sem_getvalue(semaphore, value) sem_getvalue2(semaphore, value)  #define sem_getvalue(semaphore, value) sem_getvalue2(semaphore, value)
 #define sem_post(semaphore) \  #define sem_post(semaphore) \
         ({ int r; pthread_mutex_lock(&mutex_sem); \          ({ int r; pthread_mutex_lock(&mutex_sem); \

Removed from v.1.238  
changed lines
  Added in v.1.239


CVSweb interface <joel.bertrand@systella.fr>