Diff for /rpl/src/rpl.h between versions 1.55 and 1.64

version 1.55, 2010/08/13 21:00:37 version 1.64, 2010/08/26 19:07:42
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.18    RPL/2 (R) version 4.0.19
   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 31 Line 31
 #   define  _DARWIN_C_SOURCE  #   define  _DARWIN_C_SOURCE
 #endif  #endif
   
   #ifdef OpenBSD
   #   define _BSD_SOURCE
   #endif
   
 #ifdef OS2  #ifdef OS2
 #   define _BSD_SOURCE  #   define _BSD_SOURCE
 #   define _XOPEN_SOURCE    600  #   define _XOPEN_SOURCE    600
 #   define _BROKEN_SIGINFO  
   
 #   include <types.h>  #   include <types.h>
     enum { SHUT_RD = 0, SHUT_WR, SHUT_RDWR };      enum { SHUT_RD = 0, SHUT_WR, SHUT_RDWR };
Line 45 Line 48
 #   include "getaddrinfo-conv.h"  #   include "getaddrinfo-conv.h"
   
 #   define sched_yield(arg)  #   define sched_yield(arg)
 #else  
 #   undef _BROKEN_SIGINFO  
 #endif  #endif
   
   
Line 67 Line 68
   
 #ifndef RPLARGS  #ifndef RPLARGS
 #   include <sys/mman.h>  #   include <sys/mman.h>
   #   include <sys/time.h>
 #   include <sys/resource.h>  #   include <sys/resource.h>
 #   include <sys/select.h>  #   include <sys/select.h>
 #   include <sys/socket.h>  #   include <sys/socket.h>
 #   include <sys/stat.h>  #   include <sys/stat.h>
 #   include <sys/time.h>  
 #   include <sys/timeb.h>  #   include <sys/timeb.h>
 #   include <sys/types.h>  #   include <sys/types.h>
 #   include <sys/un.h>  #   include <sys/un.h>
Line 92 Line 93
   
 #   include <pwd.h>  #   include <pwd.h>
   
   #   ifdef _BROKEN_SIGINFO
   #       include <sys/ipc.h>
   #       include <sys/shm.h>
   #   endif
   
 #   ifndef SEMAPHORES_SYSV  #   ifndef SEMAPHORES_SYSV
 #       include <semaphore.h>  #       include <semaphore.h>
 #   else  #   else
   #       include <sys/ipc.h>
   #       include <sys/sem.h>
   
 #       ifdef OS2  #       ifdef OS2
 #           define INCL_DOSSEMAPHORES  #           define INCL_DOSSEMAPHORES
 #           define INCL_DOSMEMMGR  #           define INCL_DOSMEMMGR
Line 111 Line 120
                 ULONG   allocated;                  ULONG   allocated;
             } sem_t;              } sem_t;
 #       else  #       else
             typedef int sem_t;              typedef struct
               {
                   int             sem;
                   unsigned char   *path;
                   pid_t           pid;
               } sem_t;
 #       endif  #       endif
   
 #       define SEM_FAILED   NULL  #       define SEM_FAILED   NULL
Line 179 Line 193
   
 #include "librplprototypes.h"  #include "librplprototypes.h"
   
   #ifndef RPLARGS
   #   ifndef UNIX_PATH_MAX
           struct sockaddr_un sizecheck;
   #       define UNIX_PATH_MAX sizeof(sizecheck.sun_path)
   #   endif
   #endif
   
   /*
   ================================================================================
     Bugs spécifiques
   ================================================================================
   */
   
   #ifdef _BROKEN_SIGINFO
   #   define SIGHANDLER_ARGS  int signal
   #   ifdef SA_SIGINFO
   #       undef SA_SIGINFO
   #   endif
   #   define SA_SIGINFO   0
   
   #   ifndef __BROKEN_SIGINFO_ROUTINES__
   
   // pthread_kill() est une macro sous OS/2.
   #       ifdef pthread_kill
   #           undef pthread_kill
   #       endif
   
   #       define kill(a, b)           kill_broken_siginfo(a, b)
   #       define pthread_kill(a, b)   pthread_kill_broken_siginfo(a, b)
   #   endif
   
       int kill_broken_siginfo(pid_t pid, int signal);
       int pthread_kill_broken_siginfo(pthread_t tid, int signal);
       pid_t origine_signal(int signal);
       int queue_in(pid_t pid, int signal);
   #else
   #   define SIGHANDLER_ARGS  int signal, siginfo_t *siginfo, void *context
   #endif
   
   #ifdef OpenBSD
   #   ifdef PTHREAD_SCOPE_SYSTEM
   #       undef PTHREAD_SCOPE_SYSTEM
   #   endif
   #   define PTHREAD_SCOPE_SYSTEM 0
   #endif
   
   #ifdef OS2
   #   define readline(s) readline_wrapper(s)
       unsigned char readline_wrapper(unsigned char *s);
   #endif
   
   #if ! defined(UNION_SEMUN) && defined(SEMAPHORES_SYSV)
   union semun
   {
       int                 val;
       struct semid_ds     *buf;
       unsigned short      *array;
       struct seminfo      *__buf;
   };
   #endif
   
   
 /*  /*
 ================================================================================  ================================================================================
Line 206 Line 281
 */  */
   
 #ifndef RPLARGS  #ifndef RPLARGS
 #   if defined(Darwin)  
 #       define SIGPOLL              SIGINFO  // Signaux utilisés par défaut :
 #   endif  //  SIGINT
   //  SIGTSTP
   //  SIGCONT
   //  SIGURG
   //  SIGPIPE
   //  SIGALRM
   
 //  Arrêt par STOP  //  Arrêt par STOP
 #   define SIGFSTOP                 SIGUSR1  #   define SIGFSTOP                 SIGUSR1
Line 217 Line 297
 //  Injection de données  //  Injection de données
 #   define SIGINJECT                SIGQUIT  #   define SIGINJECT                SIGQUIT
 //  Arrêt général  //  Arrêt général
 #   define SIGABORT                 SIGPROF  #   ifndef OpenBSD
   //  La libpthread d'OpenBSD utilise SIGPROF
   #       define SIGABORT             SIGPROF
   #   else
   #       define SIGABORT             SIGTHR
   #   endif
 //  Arrêt d'un processus fils depuis autre chose que STOP  //  Arrêt d'un processus fils depuis autre chose que STOP
 #   define SIGFABORT                SIGPOLL  #   if defined(Darwin) || defined(OpenBSD)
   #       define SIGFABORT            SIGINFO
   #   else
   #       define SIGFABORT            SIGPOLL
   #   endif
   
 //  Nombre d'interruptions disponibles  //  Nombre d'interruptions disponibles
 #   define d_NOMBRE_INTERRUPTIONS   64  #   define d_NOMBRE_INTERRUPTIONS   64
 #endif  #endif
Line 284  typedef unsigned char   t_8_bits; Line 374  typedef unsigned char   t_8_bits;
 #   ifdef SEMAPHORES_NOMMES  #   ifdef SEMAPHORES_NOMMES
 #       define LONGUEUR_NOM_SEMAPHORE   64  #       define LONGUEUR_NOM_SEMAPHORE   64
 #   endif  #   endif
   
 #   ifndef MAIN_RPL  #   ifndef MAIN_RPL
   #       ifdef _BROKEN_SIGINFO
               extern int              *fifos_signaux;
   #       endif
   
         extern jmp_buf              contexte;          extern jmp_buf              contexte;
         extern jmp_buf              contexte_initial;          extern jmp_buf              contexte_initial;
   
Line 321  typedef unsigned char   t_8_bits; Line 416  typedef unsigned char   t_8_bits;
             extern sem_t            *semaphores_nommes[4];              extern sem_t            *semaphores_nommes[4];
 #       endif  #       endif
 #   else  #   else
   #       ifdef _BROKEN_SIGINFO
               int                     *fifos_signaux;
   #       endif
   
         jmp_buf                     contexte;          jmp_buf                     contexte;
         jmp_buf                     contexte_initial;          jmp_buf                     contexte_initial;
   
Line 647  pid_t debug_fork(); Line 746  pid_t debug_fork();
 #ifdef DEBUG_ERREURS  #ifdef DEBUG_ERREURS
 #   ifdef MESSAGES  #   ifdef MESSAGES
 #       define __erreur(i)  i  #       define __erreur(i)  i
   #       define __erreur_(i) i
 #   else  #   else
   #       undef _ERREURS_VARIABLES
   #       ifdef _ERREURS_VARIABLES
   #           define __erreur_(i) __erreur(i)
   #       else
   #           define __erreur_(i) i
   #       endif
 #       define __erreur(i)  ({ if (strstr(__FUNCTION__, "recherche_variable") \  #       define __erreur(i)  ({ if (strstr(__FUNCTION__, "recherche_variable") \
                 == NULL) fprintf(stderr, "ERROR %d AT %s() LINE %d\n", \                  == NULL) ufprintf(stderr, \
                 i, __FUNCTION__, __LINE__); i; })                  "ERROR %d AT %s() FROM %s LINE %d\n", \
                   i, __FUNCTION__, __FILE__, __LINE__); i; })
 #   endif  #   endif
 #else  #else
 #   define __erreur(i)  i  #   define __erreur(i)  i
   #   define __erreur_(i) i
 #endif  #endif
   
   
Line 661  pid_t debug_fork(); Line 769  pid_t debug_fork();
 #ifndef RPLARGS  #ifndef RPLARGS
 #   define d_es                                 2000  #   define d_es                                 2000
 #   define d_es_allocation_memoire              __erreur(2001)  #   define d_es_allocation_memoire              __erreur(2001)
 #   define d_es_variable_introuvable            __erreur(2002)  #   define d_es_variable_introuvable            __erreur_(2002)
 #   define d_es_pile_vide                       __erreur(2003)  #   define d_es_pile_vide                       __erreur(2003)
 #   define d_es_end_incoherent                  __erreur(2004)  #   define d_es_end_incoherent                  __erreur(2004)
 #   define d_es_peripherique_stdin              __erreur(2005)  #   define d_es_peripherique_stdin              __erreur(2005)
Line 674  pid_t debug_fork(); Line 782  pid_t debug_fork();
 #   define d_es_interruption_invalide           __erreur(2012)  #   define d_es_interruption_invalide           __erreur(2012)
 #   define d_es_contexte                        __erreur(2013)  #   define d_es_contexte                        __erreur(2013)
 #   define d_es_somme_controle                  __erreur(2014)  #   define d_es_somme_controle                  __erreur(2014)
   #   define d_es_semaphore                       __erreur(2015)
 #endif  #endif
   
 /*  /*
Line 739  pid_t debug_fork(); Line 848  pid_t debug_fork();
 #   define d_ex_absence_graphique_courant       __erreur(9)  #   define d_ex_absence_graphique_courant       __erreur(9)
 #   define d_ex_erreur_traitement_condition     __erreur(10)  #   define d_ex_erreur_traitement_condition     __erreur(10)
 #   define d_ex_erreur_traitement_boucle        __erreur(11)  #   define d_ex_erreur_traitement_boucle        __erreur(11)
 #   define d_ex_variable_non_definie            __erreur(12)  #   define d_ex_variable_non_definie            __erreur_(12)
 #   define d_ex_drapeau_inexistant              __erreur(13)  #   define d_ex_drapeau_inexistant              __erreur(13)
 #   define d_ex_nom_invalide                    __erreur(14)  #   define d_ex_nom_invalide                    __erreur(14)
 #   define d_ex_element_inexistant              __erreur(15)  #   define d_ex_element_inexistant              __erreur(15)
Line 1646  typedef struct processus Line 1755  typedef struct processus
     pthread_t                   thread_surveille_par_fusible;      pthread_t                   thread_surveille_par_fusible;
   
 #   if !defined(Cygwin)  #   if !defined(Cygwin)
   #       if !(OpenBSD)
     stack_t                     pile_signal;      stack_t                     pile_signal;
   #       else
   #           ifdef SA_ONSTACK
   #               undef SA_ONSTACK
   #           endif
   #           define SA_ONSTACK   0
   #       endif
 #   else  #   else
 #   define SA_ONSTACK           0  #   define SA_ONSTACK           0
 #   define RTLD_LOCAL           0  #   define RTLD_LOCAL           0
Line 2691  void insertion_thread_surveillance(struc Line 2807  void insertion_thread_surveillance(struc
 void integrale_romberg(struct_processus *s_etat_processus,  void integrale_romberg(struct_processus *s_etat_processus,
         struct_objet *s_expression, unsigned char *variable,          struct_objet *s_expression, unsigned char *variable,
         real8 a, real8 b, real8 precision);          real8 a, real8 b, real8 precision);
 void interruption1(int signal, siginfo_t *siginfo, void *context);  void interruption1(SIGHANDLER_ARGS);
 void interruption2(int signal, siginfo_t *siginfo, void *context);  void interruption2(SIGHANDLER_ARGS);
 void interruption3(int signal, siginfo_t *siginfo, void *context);  void interruption3(SIGHANDLER_ARGS);
 void interruption4(int signal, siginfo_t *siginfo, void *context);  void interruption4(SIGHANDLER_ARGS);
 void interruption5(int signal, siginfo_t *siginfo, void *context);  void interruption5(SIGHANDLER_ARGS);
 void interruption6(int signal, siginfo_t *siginfo, void *context);  void interruption6(SIGHANDLER_ARGS);
 void interruption7(int signal, siginfo_t *siginfo, void *context);  void interruption7(SIGHANDLER_ARGS);
 void interruption8(int signal, siginfo_t *siginfo, void *context);  void interruption8(SIGHANDLER_ARGS);
 void interruption9(int signal, siginfo_t *siginfo, void *context);  void interruption9(SIGHANDLER_ARGS);
 void interruption10(int signal, siginfo_t *siginfo, void *context);  void interruption10(SIGHANDLER_ARGS);
 void interruption11(int signal, siginfo_t *siginfo, void *context);  void interruption11(SIGHANDLER_ARGS);
 void inversion_matrice(struct_processus *s_etat_processus,  void inversion_matrice(struct_processus *s_etat_processus,
         struct_matrice *s_matrice);          struct_matrice *s_matrice);
 void lancement_daemon(struct_processus *s_etat_processus);  void lancement_daemon(struct_processus *s_etat_processus);
Line 2760  void valeurs_singulieres(struct_processu Line 2876  void valeurs_singulieres(struct_processu
 void verrouillage_threads_concurrents(struct_processus *s_etat_processus);  void verrouillage_threads_concurrents(struct_processus *s_etat_processus);
 #endif  #endif
   
   #ifndef RPLARGS
   #ifdef _BROKEN_SIGINFO
   void creation_fifos_signaux(struct_processus *s_etat_processus);
   void destruction_fifos_signaux(struct_processus *s_etat_processus);
   void liberation_fifos_signaux(struct_processus *s_etat_processus);
   #endif
   #endif
   
 /*  /*
 --------------------------------------------------------------------------------  --------------------------------------------------------------------------------
   Fonctions de sommation de vecteur dans perte de précision    Fonctions de sommation de vecteur dans perte de précision

Removed from v.1.55  
changed lines
  Added in v.1.64


CVSweb interface <joel.bertrand@systella.fr>