Diff for /rpl/src/rpl.h between versions 1.245 and 1.246

version 1.245, 2014/06/16 18:48:22 version 1.246, 2014/07/15 14:12:38
Line 377  union semun Line 377  union semun
 */  */
   
 #ifdef IPCS_SYSV  #ifdef IPCS_SYSV
   #   ifdef DEBUG_SEMAPHORES
   #   define sem_wait(a) ({ int value; sem_getvalue(a, &value); \
               uprintf("[%d-%llu] Semaphore %s (%p) "\
               "waiting at %s() " \
               "line #%d\n", (int) getpid(), (unsigned long long) pthread_self(), \
               #a, a, __FUNCTION__, __LINE__), fflush(stdout); \
               if (value > 1) BUG(1, uprintf("Value %d\n", value)); \
               sem_wait_SysV(a); })
   #   define sem_post(a) ({ int value; sem_getvalue(a, &value); \
               uprintf("[%d-%llu] Semaphore %s (%p) "\
               "posting at %s() " \
               "line #%d\n", (int) getpid(), (unsigned long long) pthread_self(), \
               #a, a, __FUNCTION__, __LINE__), fflush(stdout); \
               if (value > 0) BUG(1, uprintf("Value %d\n", value)); \
               sem_post_SysV(a); })
   #   define sem_destroy(a) ({ int value; sem_getvalue(a, &value); \
               if (value == 0) BUG(1, uprintf("Value %d\n", value)); \
               sem_destroy_SysV(a); })
   #else
   #       define sem_destroy(a)       sem_destroy_SysV(a)
   #       define sem_wait(a)          sem_wait_SysV(a)
   #       define sem_post(a)          sem_post_SysV(a)
   #   endif
   
 #   define sem_init(a, b, c)    sem_init_SysV(a, b, c)  #   define sem_init(a, b, c)    sem_init_SysV(a, b, c)
 #   define sem_destroy(a)       sem_destroy_SysV(a)  
 #   define sem_wait(a)          sem_wait_SysV(a)  
 #   define sem_trywait(a)       sem_trywait_SysV(a)  #   define sem_trywait(a)       sem_trywait_SysV(a)
 #   define sem_timedwait(a, b)  sem_timedwait_SysV(a, b)  #   define sem_timedwait(a, b)  sem_timedwait_SysV(a, b)
 #   define sem_post(a)          sem_post_SysV(a)  
 #   define sem_getvalue(a, b)   sem_getvalue_SysV(a, b)  #   define sem_getvalue(a, b)   sem_getvalue_SysV(a, b)
 #   define sem_open(...)        sem_open_SysV(__VA_ARGS__)  #   define sem_open(...)        sem_open_SysV(__VA_ARGS__)
 #   define sem_close(a)         sem_close_SysV(a)  #   define sem_close(a)         sem_close_SysV(a)
 #   define sem_unlink(a)        sem_unlink_SysV(a)  #   define sem_unlink(a)        sem_unlink_SysV(a)
   #else
   #   define sem_wait(a) ({ int value; sem_getvalue(a, &value); \
               uprintf("[%d-%llu] Semaphore %s (%p) "\
               "waiting at %s() " \
               "line #%d\n", (int) getpid(), (unsigned long long) pthread_self(), \
               #a, a, __FUNCTION__, __LINE__), fflush(stdout); \
               if (value > 1) BUG(1, uprintf("Value %d\n", value)); sem_wait(a); })
   #   define sem_post(a) ({ int value; sem_getvalue(a, &value); \
               uprintf("[%d-%llu] Semaphore %s (%p) "\
               "posting at %s() " \
               "line #%d\n", (int) getpid(), (unsigned long long) pthread_self(), \
               #a, a, __FUNCTION__, __LINE__), fflush(stdout); \
               if (value > 0) BUG(1, uprintf("Value %d\n", value)); sem_post(a); })
   #   define sem_destroy(a) ({ int value; sem_getvalue(a, &value); \
               if (value == 0) BUG(1, uprintf("Value %d\n", value)); \
               sem_destroy(a); })
 #endif  #endif
   
   
Line 480  union semun Line 517  union semun
     __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__ pthread_mutex_t      mutex_sem __STATIC_MUTEX_INITIALIZATION__;
   
     __EXTERN__ sem_t __PTR__        semaphore_gestionnaires_signaux;  
   
     __EXTERN__ volatile int         routine_recursive;      __EXTERN__ volatile int         routine_recursive;
   
 #   define SEM_FORK             0  #   define SEM_FORK             0
 #   define SEM_QUEUE                1  #   define SEM_QUEUE                1
 #   define SEM_SIGNAUX              2  #   define SEM_SIGNALISATION        2
 #   define SEM_SIGNALISATION        3  #   define SEM_ARRET_SIGNALISATION  3
 #   define SEM_ARRET_SIGNALISATION  4  
   
     sem_t *sem_init2(unsigned int valeur, pid_t pid, int ordre);      sem_t *sem_init2(unsigned int valeur, pid_t pid, int ordre);
     sem_t *sem_init3(unsigned int valeur, pid_t pid, pthread_t tid, int ordre);      sem_t *sem_init3(unsigned int valeur, pid_t pid, pthread_t tid, int ordre);
Line 687  pid_t debug_fork(); Line 721  pid_t debug_fork();
         pthread_mutex_unlock(mutex)          pthread_mutex_unlock(mutex)
 #endif  #endif
   
 #ifdef DEBUG_SEMAPHORES  
 #define sem_wait(a) ({ int value; sem_getvalue(a, &value); \  
         uprintf("[%d-%llu] Semaphore %s (%p) "\  
         "waiting at %s() " \  
         "line #%d\n", (int) getpid(), (unsigned long long) pthread_self(), \  
         #a, a, __FUNCTION__, __LINE__), fflush(stdout); \  
         if (value > 1) BUG(1, uprintf("Value %d\n", value)); sem_wait(a); })  
 #define sem_post(a) ({ int value; sem_getvalue(a, &value); \  
         uprintf("[%d-%llu] Semaphore %s (%p) "\  
         "posting at %s() " \  
         "line #%d\n", (int) getpid(), (unsigned long long) pthread_self(), \  
         #a, a, __FUNCTION__, __LINE__), fflush(stdout); \  
         if (value > 0) BUG(1, uprintf("Value %d\n", value)); sem_post(a); })  
 #define sem_destroy(a) ({ int value; sem_getvalue(a, &value); \  
         if (value == 0) BUG(1, uprintf("Value %d\n", value)); sem_destroy(a); })  
 #endif  
   
   
 /*  /*
 ================================================================================  ================================================================================

Removed from v.1.245  
changed lines
  Added in v.1.246


CVSweb interface <joel.bertrand@systella.fr>