--- rpl/src/rpl.h 2013/03/26 11:06:14 1.218 +++ rpl/src/rpl.h 2013/05/23 09:20:08 1.224 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.1.13 + RPL/2 (R) version 4.1.14 Copyright (C) 1989-2013 Dr. BERTRAND Joël This file is part of RPL/2. @@ -73,6 +73,7 @@ #include #include #include +#include #ifndef RPLARGS # include @@ -154,7 +155,6 @@ # endif # include -# include # include # include # include @@ -318,10 +318,12 @@ typedef struct queue_signaux # ifndef SEMAPHORES_NOMMES sem_t semaphore; sem_t signalisation; + sem_t arret_signalisation; # endif # else sem_t semaphore; sem_t signalisation; + sem_t arret_signalisation; # endif volatile int pointeur_lecture; @@ -342,6 +344,7 @@ __EXTERN__ int f_queue_signaux; # ifdef SEMAPHORES_NOMMES __EXTERN__ sem_t *semaphore_queue_signaux; __EXTERN__ sem_t *semaphore_signalisation; + __EXTERN__ sem_t *semaphore_arret_signalisation; # endif #endif @@ -492,10 +495,11 @@ union semun #endif #ifdef SEMAPHORES_NOMMES -#define SEM_FORK 0 -#define SEM_QUEUE 1 -#define SEM_SIGNAUX 2 -#define SEM_SIGNALISATION 3 +#define SEM_FORK 0 +#define SEM_QUEUE 1 +#define SEM_SIGNAUX 2 +#define SEM_SIGNALISATION 3 +#define SEM_ARRET_SIGNALISATION 4 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); int sem_destroy2(sem_t *semaphore_p, pid_t pid, int ordre); @@ -1460,8 +1464,10 @@ typedef struct descripteur_thread int pipe_injections[2]; int pipe_nombre_injections[2]; int pipe_interruptions[2]; - int pipe_nombre_objets_attente[2]; - int pipe_nombre_interruptions_attente[2]; + // pipe_nombre_elements_attente == 0 => initialisation ou terminaison + // pipe_nombre_elements_attente == 1 => objet en attente + // pipe_nombre_elements_attente == 2 => interruption en attente + int pipe_nombre_elements_attente[2]; int pipe_acquittement[2]; volatile integer8 nombre_objets_dans_pipe; @@ -1945,8 +1951,7 @@ typedef struct processus int pipe_injections; int pipe_nombre_injections; int pipe_interruptions; - int pipe_nombre_objets_attente; - int pipe_nombre_interruptions_attente; + int pipe_nombre_elements_attente; int nombre_objets_envoyes_non_lus; int nombre_objets_injectes; @@ -2182,8 +2187,8 @@ typedef struct processus /* Traitement des erreurs */ int erreur_compilation; - int erreur_execution; - int erreur_systeme; + volatile int erreur_execution; + volatile int erreur_systeme; struct_objet *s_objet_errone; struct_objet *s_objet_erreur; @@ -2317,7 +2322,11 @@ typedef struct processus pthread_mutex_t protection_liste_mutexes; unsigned int sections_critiques; -/* Drapeau nécessaire ŕ RESTART */ +/* Variable d'initialisation pour SCHED */ + + logical1 initialisation_scheduler; + +/* Drapeau nécessaire ŕ RESTART */ volatile logical1 requete_redemarrage;