Diff for /rpl/src/rpl.h between versions 1.163 and 1.177

version 1.163, 2012/05/16 09:14:04 version 1.177, 2012/10/01 11:05:09
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.8    RPL/2 (R) version 4.1.11
   Copyright (C) 1989-2012 Dr. BERTRAND Joël    Copyright (C) 1989-2012 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
Line 145 Line 145
         int sem_close_SysV(sem_t *sem);          int sem_close_SysV(sem_t *sem);
         int sem_wait_SysV(sem_t *sem);          int sem_wait_SysV(sem_t *sem);
         int sem_trywait_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_post_SysV(sem_t *sem);
         int sem_getvalue_SysV(sem_t *sem, int *value);          int sem_getvalue_SysV(sem_t *sem, int *value);
         int sem_unlink_SysV(const char *nom);          int sem_unlink_SysV(char *nom);
         int sem_destroy_SysV(sem_t *sem);          int sem_destroy_SysV(sem_t *sem);
 #   endif  #   endif
   
Line 229 Line 230
 ================================================================================  ================================================================================
 */  */
   
   // Néant
   
   /*
   ================================================================================
     TYPES
   ================================================================================
   */
   
   typedef FILE                    file;
   typedef unsigned char           t_8_bits;
   
   #ifndef RPLARGS
   #   include "rpltypes-conv.h"
   #else
   #   include "rpltypes.h"
   #endif
   
 enum signaux_rpl  enum signaux_rpl
 {  {
     rpl_signull = 0,      rpl_signull = 0,
Line 263  typedef struct queue_signaux Line 281  typedef struct queue_signaux
 #   ifndef IPCS_SYSV  #   ifndef IPCS_SYSV
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
             sem_t               semaphore;              sem_t               semaphore;
               sem_t               signalisation;
 #       endif  #       endif
 #   else  #   else
         sem_t                   semaphore;          sem_t                   semaphore;
           sem_t                   signalisation;
 #   endif  #   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 struct      volatile struct
     {      {
Line 283  __EXTERN__ int      f_queue_signaux; Line 305  __EXTERN__ int      f_queue_signaux;
   
 #   ifdef SEMAPHORES_NOMMES  #   ifdef SEMAPHORES_NOMMES
         __EXTERN__ sem_t            *semaphore_queue_signaux;          __EXTERN__ sem_t            *semaphore_queue_signaux;
           __EXTERN__ sem_t            *semaphore_signalisation;
 #   endif  #   endif
 #endif  #endif
   
Line 320  union semun Line 343  union semun
 #   define sem_destroy(a)       sem_destroy_SysV(a)  #   define sem_destroy(a)       sem_destroy_SysV(a)
 #   define sem_wait(a)          sem_wait_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_post(a)          sem_post_SysV(a)  #   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__)
Line 345  union semun Line 369  union semun
 //  SIGHUP  //  SIGHUP
 //  SIGALRM  //  SIGALRM
   
 #   define SIGTEST                  SIGUSR1  #   define SIGTEST                  255
   
 //  Nombre d'interruptions disponibles  //  Nombre d'interruptions disponibles
 #   define d_NOMBRE_INTERRUPTIONS   64  #   define d_NOMBRE_INTERRUPTIONS   64
Line 388  union semun Line 412  union semun
   
 /*  /*
 ================================================================================  ================================================================================
   TYPES  
 ================================================================================  
 */  
   
 typedef FILE                    file;  
 typedef unsigned char           t_8_bits;  
   
 #ifndef RPLARGS  
 #   include "rpltypes-conv.h"  
 #else  
 #   include "rpltypes.h"  
 #endif  
   
 /*  
 ================================================================================  
   Variables globales    Variables globales
 ================================================================================  ================================================================================
 */  */
Line 424  typedef unsigned char   t_8_bits; Line 433  typedef unsigned char   t_8_bits;
     __EXTERN__ jmp_buf              contexte_processus;      __EXTERN__ jmp_buf              contexte_processus;
     __EXTERN__ jmp_buf              contexte_thread;      __EXTERN__ jmp_buf              contexte_thread;
   
     __EXTERN__ int                  signal_test;      __EXTERN__ volatile int         signal_test;
   
     __EXTERN__ pid_t                pid_processus_pere;      __EXTERN__ pid_t                pid_processus_pere;
   
Line 436  typedef unsigned char   t_8_bits; Line 445  typedef unsigned char   t_8_bits;
                                             __STATIC_MUTEX_INITIALIZATION__;                                              __STATIC_MUTEX_INITIALIZATION__;
     __EXTERN__ pthread_mutex_t      mutex_gestionnaires_signaux_atomique      __EXTERN__ pthread_mutex_t      mutex_gestionnaires_signaux_atomique
                                             __STATIC_MUTEX_INITIALIZATION__;                                              __STATIC_MUTEX_INITIALIZATION__;
       __EXTERN__ pthread_mutex_t      mutex_sections_critiques;
   
     __EXTERN__ sem_t __PTR__        semaphore_gestionnaires_signaux;      __EXTERN__ sem_t __PTR__        semaphore_gestionnaires_signaux;
   
Line 446  typedef unsigned char   t_8_bits; Line 456  typedef unsigned char   t_8_bits;
 #define SEM_FORK            0  #define SEM_FORK            0
 #define SEM_QUEUE           1  #define SEM_QUEUE           1
 #define SEM_SIGNAUX         2  #define SEM_SIGNAUX         2
   #define SEM_SIGNALISATION   3
 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);
 int sem_destroy2(sem_t *semaphore_p, pid_t pid, int ordre);  int sem_destroy2(sem_t *semaphore_p, pid_t pid, int ordre);
Line 1275  typedef struct liste_chainee Line 1286  typedef struct liste_chainee
   
 /*  /*
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
     Structure de gestion des signaux en provenance de rplsignal
   --------------------------------------------------------------------------------
   */
   
   #define d_NOMBRE_SIGNAUX                64
   
   typedef struct gestion_signaux
   {
       unsigned char               masque_signaux[d_NOMBRE_SIGNAUX];
   
       /*
        * 'I' : signal ignoré
        * 'Q' : signal mis en queue pour un traitement ultérieur
        * 'N' : traitement normal du signal
        */
   
       integer8                    queue_signaux[d_NOMBRE_SIGNAUX];
       integer8                    nombre_signaux_en_queue;
       struct_objet                *corps_signaux[d_NOMBRE_SIGNAUX];
   
       pthread_mutex_t             mutex;
   } struct_gestion_signaux;
   
   #ifndef MAIN_RPL
   #   define __STATIC_GESTION_SIGNAUX__
   #else
   #   define __STATIC_GESTION_SIGNAUX__ = { .mutex = PTHREAD_MUTEX_INITIALIZER }
   #endif
   
   __EXTERN__ volatile struct_gestion_signaux signaux_externes
           __STATIC_GESTION_SIGNAUX__;
   
   
   /*
   --------------------------------------------------------------------------------
   Structure liste profilage    Structure liste profilage
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
 */  */
Line 1436  typedef struct liste_pile_systeme Line 1482  typedef struct liste_pile_systeme
   
     /*      /*
     type clôture :      type clôture :
     C     SELECT  : END termine un test SELECT/DEFAULT/END.      C     SELECT   : END termine un test SELECT/DEFAULT/END.
     D     DO      : END termine une boucle DO/UNTIL/END.      D     DO       : END termine une boucle DO/UNTIL/END.
     I     IF      : END termine un test IF/THEN (ELSE)/END.      I     IF       : END termine un test IF/THEN (ELSE)/END.
     J     IFERR   : END termine un test IFERR/THEN (ELSE)/END.      J     IFERR    : END termine un test IFERR/THEN (ELSE)/END.
     K     CASE    : END termine un test CASE/THEN/END      K     CASE     : END termine un test CASE/THEN/END
     W     WHILE   : END termine une boucle WHILE/REPEAT/END.      W     WHILE    : END termine une boucle WHILE/REPEAT/END.
       Q     CRITICAL : END termine une section critique CRITICAL/END
   
     F     FOR     : NEXT ou STEP termine une boucle avec compteur.      F     FOR     : NEXT ou STEP termine une boucle avec compteur.
     S     START   : NEXT ou STEP termine une boucle sans compteur.      S     START   : NEXT ou STEP termine une boucle sans compteur.
     L     LOOP    : boucle utilisé dans le traitement de l'instruction RETURN.      L     LOOP    : boucle utilisé dans le traitement de l'instruction RETURN.
             Elle correspond à une boucle FOR ou START mais sans son              Elle correspond à une boucle FOR ou START mais sans son
             initialisation.              initialisation.
       A     FORALL  : NEXT termine une boucle sur un objet.
     */      */
   
     unsigned long               adresse_retour;      unsigned long               adresse_retour;
Line 2164  typedef struct processus Line 2212  typedef struct processus
     pthread_mutex_t             mutex_allocation;      pthread_mutex_t             mutex_allocation;
   
     // Mutex autorisant les fork()      // Mutex autorisant les fork()
     sem_t      sem_t __PTR__               semaphore_fork;
 #   ifdef SEMAPHORES_NOMMES  
         *  
 #   endif  
                                 semaphore_fork;  
   
 /* Mutexes                                          */  /* Mutexes                                          */
   
     struct_liste_chainee        *liste_mutexes;      struct_liste_chainee        *liste_mutexes;
     pthread_mutex_t             protection_liste_mutexes;      pthread_mutex_t             protection_liste_mutexes;
       unsigned int                sections_critiques;
   
 /* Drapeau nécessaire à RESTART                 */  /* Drapeau nécessaire à RESTART                 */
   
Line 2346  void instruction_cosh(struct_processus * Line 2391  void instruction_cosh(struct_processus *
 void instruction_cov(struct_processus *s_etat_processus);  void instruction_cov(struct_processus *s_etat_processus);
 void instruction_cr(struct_processus *s_etat_processus);  void instruction_cr(struct_processus *s_etat_processus);
 void instruction_create(struct_processus *s_etat_processus);  void instruction_create(struct_processus *s_etat_processus);
   void instruction_critical(struct_processus *s_etat_processus);
 void instruction_crmtx(struct_processus *s_etat_processus);  void instruction_crmtx(struct_processus *s_etat_processus);
 void instruction_cross(struct_processus *s_etat_processus);  void instruction_cross(struct_processus *s_etat_processus);
 void instruction_crsmphr(struct_processus *s_etat_processus);  void instruction_crsmphr(struct_processus *s_etat_processus);
Line 2430  void instruction_fleche_str(struct_proce Line 2476  void instruction_fleche_str(struct_proce
 void instruction_fleche_table(struct_processus *s_etat_processus);  void instruction_fleche_table(struct_processus *s_etat_processus);
 void instruction_floor(struct_processus *s_etat_processus);  void instruction_floor(struct_processus *s_etat_processus);
 void instruction_for(struct_processus *s_etat_processus);  void instruction_for(struct_processus *s_etat_processus);
   void instruction_forall(struct_processus *s_etat_processus);
 void instruction_format(struct_processus *s_etat_processus);  void instruction_format(struct_processus *s_etat_processus);
 void instruction_fp(struct_processus *s_etat_processus);  void instruction_fp(struct_processus *s_etat_processus);
 void instruction_fs_test(struct_processus *s_etat_processus);  void instruction_fs_test(struct_processus *s_etat_processus);
Line 3058  struct_liste_chainee *sauvegarde_argumen Line 3105  struct_liste_chainee *sauvegarde_argumen
 #ifndef RPLARGS  #ifndef RPLARGS
 unsigned char *analyse_algebrique(struct_processus *s_etat_processus,  unsigned char *analyse_algebrique(struct_processus *s_etat_processus,
         unsigned char *chaine_algebrique, struct_liste_chainee **l_base_liste);          unsigned char *chaine_algebrique, struct_liste_chainee **l_base_liste);
   unsigned char *analyse_flux(struct_processus *s_etat_processus,
           unsigned char *flux, long longueur);
 unsigned char *recherche_chemin_fichiers_temporaires(struct_processus  unsigned char *recherche_chemin_fichiers_temporaires(struct_processus
         *s_etat_processus);          *s_etat_processus);
 unsigned char *compactage(unsigned char *chaine);  unsigned char *compactage(unsigned char *chaine);

Removed from v.1.163  
changed lines
  Added in v.1.177


CVSweb interface <joel.bertrand@systella.fr>