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

version 1.150, 2011/12/01 15:23:49 version 1.163, 2012/05/16 09:14:04
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.5    RPL/2 (R) version 4.1.8
   Copyright (C) 1989-2011 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 71 Line 71
 #include <syslog.h>  #include <syslog.h>
 #include <errno.h>  #include <errno.h>
 #include <stdarg.h>  #include <stdarg.h>
   #include <poll.h>
   
 #ifndef RPLARGS  #ifndef RPLARGS
 #   include <sys/mman.h>  #   include <sys/mman.h>
Line 214 Line 215
 #   endif  #   endif
 #endif  #endif
   
   #ifdef MAIN_RPL
   #   define __EXTERN__
   #   define __STATIC_MUTEX_INITIALIZATION__ = PTHREAD_MUTEX_INITIALIZER
   #else
   #   define __EXTERN__                       extern
   #   define __STATIC_MUTEX_INITIALIZATION__
   #endif
   
 /*  /*
 ================================================================================  ================================================================================
   Bugs spécifiques    Bugs spécifiques
Line 269  typedef struct queue_signaux Line 278  typedef struct queue_signaux
     }                           queue[LONGUEUR_QUEUE_SIGNAUX];      }                           queue[LONGUEUR_QUEUE_SIGNAUX];
 } struct_queue_signaux;  } struct_queue_signaux;
   
 #   ifndef MAIN_RPL  __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  #   ifdef SEMAPHORES_NOMMES
             extern sem_t                    *semaphore_queue_signaux;          __EXTERN__ sem_t            *semaphore_queue_signaux;
 #       endif  
 #   else  
         struct_queue_signaux                *s_queue_signaux;  
         int                                 f_queue_signaux;  
 #       ifdef SEMAPHORES_NOMMES  
             sem_t                           *semaphore_queue_signaux;  
 #       endif  
 #   endif  #   endif
 #endif  #endif
   
Line 340  union semun Line 342  union semun
 //  SIGCONT  //  SIGCONT
 //  SIGPIPE  //  SIGPIPE
 //  SIGUSR1 et SIGUSR2 sont utilisé par libsigsegv.  //  SIGUSR1 et SIGUSR2 sont utilisé par libsigsegv.
   //  SIGHUP
   //  SIGALRM
   
 #   define SIGTEST                  SIGUSR1  #   define SIGTEST                  SIGUSR1
   
Line 408  typedef unsigned char   t_8_bits; Line 412  typedef unsigned char   t_8_bits;
 #       define LONGUEUR_NOM_SEMAPHORE   64  #       define LONGUEUR_NOM_SEMAPHORE   64
 #   endif  #   endif
   
 #   ifndef MAIN_RPL  #   ifdef SEMAPHORES_NOMMES
         extern jmp_buf              contexte_ecriture;  #       define __PTR__      *
         extern jmp_buf              contexte_impression;  #   else
         extern jmp_buf              contexte_initial;  #       define __PTR__
         extern jmp_buf              contexte_processus;  #   endif
         extern jmp_buf              contexte_thread;  
   
         extern int                  signal_test;  
   
         extern pid_t                pid_processus_pere;  
   
 #       ifdef SEMAPHORES_NOMMES  
         extern pthread_mutex_t      mutex_sem;  
 #       endif  
   
         extern pthread_mutex_t      mutex_liste_threads;  
         extern pthread_mutex_t      mutex_gestionnaires_signaux_atomique;  
   
         extern sem_t      __EXTERN__ jmp_buf              contexte_ecriture;
 #       ifdef SEMAPHORES_NOMMES      __EXTERN__ jmp_buf              contexte_impression;
             *      __EXTERN__ jmp_buf              contexte_initial;
 #       endif      __EXTERN__ jmp_buf              contexte_processus;
                                     semaphore_gestionnaires_signaux;      __EXTERN__ jmp_buf              contexte_thread;
   
         extern volatile int         routine_recursive;      __EXTERN__ int                  signal_test;
 #   else  
         jmp_buf                     contexte_ecriture;  
         jmp_buf                     contexte_impression;  
         jmp_buf                     contexte_initial;  
         jmp_buf                     contexte_processus;  
         jmp_buf                     contexte_thread;  
   
         int                         signal_test;      __EXTERN__ pid_t                pid_processus_pere;
   
         pid_t                       pid_processus_pere;  #   ifdef SEMAPHORES_NOMMES
       __EXTERN__ pthread_mutex_t      mutex_sem __STATIC_MUTEX_INITIALIZATION__;
   #   endif
   
 #       ifdef SEMAPHORES_NOMMES      __EXTERN__ pthread_mutex_t      mutex_liste_threads
         pthread_mutex_t             mutex_sem = PTHREAD_MUTEX_INITIALIZER;                                              __STATIC_MUTEX_INITIALIZATION__;
 #       endif      __EXTERN__ pthread_mutex_t      mutex_gestionnaires_signaux_atomique
                                               __STATIC_MUTEX_INITIALIZATION__;
   
         pthread_mutex_t             mutex_liste_threads =      __EXTERN__ sem_t __PTR__        semaphore_gestionnaires_signaux;
                                             PTHREAD_MUTEX_INITIALIZER;  
         pthread_mutex_t             mutex_gestionnaires_signaux =  
                                             PTHREAD_MUTEX_INITIALIZER;  
         pthread_mutex_t             mutex_gestionnaires_signaux_atomique =  
                                             PTHREAD_MUTEX_INITIALIZER;  
         sem_t  
 #       ifdef SEMAPHORES_NOMMES  
             *  
 #       endif  
                                     semaphore_gestionnaires_signaux;  
   
         volatile int                routine_recursive;      __EXTERN__ volatile int         routine_recursive;
 #   endif  
 #endif  #endif
   
 #ifdef SEMAPHORES_NOMMES  #ifdef SEMAPHORES_NOMMES
Line 519  sem_t *sem_open2(pid_t pid, int ordre); Line 497  sem_t *sem_open2(pid_t pid, int ordre);
 #   define fclose(...) ({ int ios; \  #   define fclose(...) ({ int ios; \
             while((ios = fclose(__VA_ARGS__)) != 0) \              while((ios = fclose(__VA_ARGS__)) != 0) \
             { if ((errno != EINTR) && (errno != 0)) break; } ios; })              { if ((errno != EINTR) && (errno != 0)) break; } ios; })
 #   define fread(...) ({ int ios; \  
             while((ios = fread(__VA_ARGS__)) < 0) \  
             { if ((errno != EINTR) && (errno != 0)) break; } ios; })  
 #   define fflush(flux) ({ int ios; \  #   define fflush(flux) ({ int ios; \
             while((ios = fflush((flux == stdout) ? stderr : flux)) != 0) \              while((ios = fflush((flux == stdout) ? stderr : flux)) != 0) \
             { if ((errno != EINTR) && (errno != 0)) break; } ios; })              { if ((errno != EINTR) && (errno != 0)) break; } ios; })
Line 939  pid_t debug_fork(); Line 914  pid_t debug_fork();
 #   define d_ex_fichier_corrompu                __erreur(85)  #   define d_ex_fichier_corrompu                __erreur(85)
 #   define d_ex_mutex_acquis_autre_thread       __erreur(86)  #   define d_ex_mutex_acquis_autre_thread       __erreur(86)
 #   define d_ex_expression_reguliere            __erreur(87)  #   define d_ex_expression_reguliere            __erreur(87)
   #   define d_ex_instruction_indisponible        __erreur(88)
 #endif  #endif
   
   
Line 1200  typedef struct descripteur_fichier Line 1176  typedef struct descripteur_fichier
     pid_t                       pid;      pid_t                       pid;
     pthread_t                   tid;      pthread_t                   tid;
   
     file                        *descripteur_c;      union
     sqlite3                     *descripteur_sqlite;      {
           file                    *descripteur_c;
           sqlite3                 *descripteur_sqlite;
       };
 } struct_descripteur_fichier;  } struct_descripteur_fichier;
 #endif  #endif
   
Line 2168  typedef struct processus Line 2147  typedef struct processus
   
     pid_t                       pid_processus_pere;      pid_t                       pid_processus_pere;
     pthread_t                   tid_processus_pere;      pthread_t                   tid_processus_pere;
       pthread_t                   tid;
   
     logical1                    processus_detache;      logical1                    processus_detache;
   
Line 2586  void instruction_pmax(struct_processus * Line 2566  void instruction_pmax(struct_processus *
 void instruction_pmin(struct_processus *s_etat_processus);  void instruction_pmin(struct_processus *s_etat_processus);
 void instruction_poke(struct_processus *s_etat_processus);  void instruction_poke(struct_processus *s_etat_processus);
 void instruction_polar(struct_processus *s_etat_processus);  void instruction_polar(struct_processus *s_etat_processus);
   void instruction_poll(struct_processus *s_etat_processus);
 void instruction_pos(struct_processus *s_etat_processus);  void instruction_pos(struct_processus *s_etat_processus);
 void instruction_pourcent(struct_processus *s_etat_processus);  void instruction_pourcent(struct_processus *s_etat_processus);
 void instruction_pourcent_ch(struct_processus *s_etat_processus);  void instruction_pourcent_ch(struct_processus *s_etat_processus);
Line 3227  int liste_variables(struct_processus *s_ Line 3208  int liste_variables(struct_processus *s_
         struct_arbre_variables *l_element_courant);          struct_arbre_variables *l_element_courant);
 int nombre_variables(struct_processus *s_etat_processus,  int nombre_variables(struct_processus *s_etat_processus,
         struct_arbre_variables *l_element_courant);          struct_arbre_variables *l_element_courant);
   int readline_analyse_syntaxique(int count, int key);
   int readline_effacement(int count, int key);
 #endif  #endif
 int tex_fprintf(struct_processus *s_etat_processus,  int tex_fprintf(struct_processus *s_etat_processus,
         file *flux, const char *format, ...);          file *flux, const char *format, ...);

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


CVSweb interface <joel.bertrand@systella.fr>