Diff for /rpl/src/rpl.h between versions 1.20 and 1.22

version 1.20, 2010/04/07 13:33:23 version 1.22, 2010/04/17 18:57:36
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.13    RPL/2 (R) version 4.0.14
   Copyright (C) 1989-2010 Dr. BERTRAND Joël    Copyright (C) 1989-2010 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
Line 182  typedef unsigned char   t_8_bits; Line 182  typedef unsigned char   t_8_bits;
 */  */
   
 #ifndef RPLARGS  #ifndef RPLARGS
   #   ifdef SEMAPHORES_NOMMES
   #       define LONGUEUR_NOM_SEMAPHORE   64
   #   endif
 #   ifndef MAIN_RPL  #   ifndef MAIN_RPL
     extern jmp_buf                  contexte;          extern jmp_buf              contexte;
     extern jmp_buf                  contexte_initial;          extern jmp_buf              contexte_initial;
   
   #       ifdef SEMAPHORES_NOMMES
           extern pthread_mutex_t      mutex_sem;
   #       endif
   
     extern pthread_key_t            semaphore_fork_processus_courant;          extern pthread_key_t        semaphore_fork_processus_courant;
   
     extern sem_t                    semaphore_liste_threads;          extern sem_t
     extern sem_t                    semaphore_gestionnaires_signaux;  #       ifdef SEMAPHORES_NOMMES
     extern sem_t                    semaphore_gestionnaires_signaux_atomique;          *
   #       endif
                                       semaphore_liste_threads;
   
           extern sem_t
   #       ifdef SEMAPHORES_NOMMES
           *
   #       endif
                                       semaphore_gestionnaires_signaux;
   
           extern sem_t
   #       ifdef SEMAPHORES_NOMMES
           *
   #       endif
                                       semaphore_gestionnaires_signaux_atomique;
   
   #       ifdef SEMAPHORES_NOMMES
           // 0 -> liste_threads
           // 1 -> gestionnaire_signaux
           // 2 -> gestionnaire_signaux_atomique
           // 3 -> &((*s_etat_processus).semaphore_fork)
               extern unsigned char    noms_semaphores[4][LONGUEUR_NOM_SEMAPHORE];
               extern sem_t            *semaphores_nommes[4];
   #       endif
 #   else  #   else
     jmp_buf                         contexte;          jmp_buf                     contexte;
     jmp_buf                         contexte_initial;          jmp_buf                     contexte_initial;
   
   #       ifdef SEMAPHORES_NOMMES
           pthread_mutex_t             mutex_sem = PTHREAD_MUTEX_INITIALIZER;
   #       endif
   
           pthread_key_t               semaphore_fork_processus_courant;
   
           sem_t
   #       ifdef SEMAPHORES_NOMMES
           *
   #       endif
                                       semaphore_liste_threads;
   
     pthread_key_t                   semaphore_fork_processus_courant;          sem_t
   #       ifdef SEMAPHORES_NOMMES
           *
   #       endif
                                       semaphore_gestionnaires_signaux;
   
     sem_t                           semaphore_liste_threads;          sem_t
     sem_t                           semaphore_gestionnaires_signaux;  #       ifdef SEMAPHORES_NOMMES
     sem_t                           semaphore_gestionnaires_signaux_atomique;          *
   #       endif
                                       semaphore_gestionnaires_signaux_atomique;
   
   #       ifdef SEMAPHORES_NOMMES
               unsigned char           noms_semaphores[4][LONGUEUR_NOM_SEMAPHORE];
               sem_t                   *semaphores_nommes[4];
   #       endif
 #   endif  #   endif
 #endif  #endif
   
   #ifdef SEMAPHORES_NOMMES
   enum t_semaphore    { sem_liste_threads = 0,
           sem_gestionnaires_signaux = 1,
           sem_gestionnaires_signaux_atomique = 2,
           sem_fork = 3 };
   
   sem_t *sem_init2(unsigned int valeur, enum t_semaphore semaphore);
   int sem_destroy2(sem_t *semaphore_p, enum t_semaphore semaphore);
   int sem_getvalue2(sem_t *semaphore, int *valeur);
   
   #define sem_getvalue(semaphore, value) sem_getvalue2(semaphore, value)
   #define sem_post(semaphore) \
           ({ int r; pthread_mutex_lock(&mutex_sem); \
           r = sem_post(semaphore), pthread_mutex_unlock(&mutex_sem); r; })
   #define sem_wait(semaphore) \
           ({ int r; pthread_mutex_lock(&mutex_sem); \
           r = sem_wait(semaphore), pthread_mutex_unlock(&mutex_sem); r; })
   #define sem_trywait(semaphore) \
           ({ int r; pthread_mutex_lock(&mutex_sem); \
           r = sem_trywait(semaphore), pthread_mutex_unlock(&mutex_sem); r; })
   #endif
   
 /*  /*
 ================================================================================  ================================================================================
   Macros    Macros
Line 487  void debug_memoire_retrait(void *ptr); Line 562  void debug_memoire_retrait(void *ptr);
 #   define d_es_interruption_invalide           2012  #   define d_es_interruption_invalide           2012
 #   define d_es_contexte                        2013  #   define d_es_contexte                        2013
 #   define d_es_somme_controle                  2014  #   define d_es_somme_controle                  2014
 #   define d_es_nom_implicite                   2015  
 #endif  #endif
   
 /*  /*
Line 622  void debug_memoire_retrait(void *ptr); Line 696  void debug_memoire_retrait(void *ptr);
 #   define d_ex_erreur_profilage                78  #   define d_ex_erreur_profilage                78
 #   define d_ex_enregistrement_inexistant       79  #   define d_ex_enregistrement_inexistant       79
 #   define d_ex_clef_inexistante                80  #   define d_ex_clef_inexistante                80
   #   define d_ex_nom_implicite                   81
 #endif  #endif
   
   
Line 1741  typedef struct processus Line 1816  typedef struct processus
     pthread_mutex_t             mutex;      pthread_mutex_t             mutex;
   
     // Sémaphore autorisant les fork()      // Sémaphore autorisant les fork()
     sem_t                       semaphore_fork;      sem_t
   #   ifdef SEMAPHORES_NOMMES
       *
   #   endif
                                   semaphore_fork;
   
 /* Mutexes                                          */  /* Mutexes                                          */
   

Removed from v.1.20  
changed lines
  Added in v.1.22


CVSweb interface <joel.bertrand@systella.fr>