--- rpl/src/rpl.h 2013/05/21 12:10:12 1.222 +++ rpl/src/rpl.h 2013/12/12 07:27:41 1.237 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.1.14 + RPL/2 (R) version 4.1.17 Copyright (C) 1989-2013 Dr. BERTRAND Joël This file is part of RPL/2. @@ -56,6 +56,10 @@ # define sched_yield(arg) #endif +#ifdef CYGWIN +# define SA_ONSTACK 0 +#endif + /* ================================================================================ @@ -318,10 +322,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 +348,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 @@ -479,8 +486,6 @@ union semun __EXTERN__ pthread_mutex_t mutex_liste_threads __STATIC_MUTEX_INITIALIZATION__; - __EXTERN__ pthread_mutex_t mutex_gestionnaires_signaux_atomique - __STATIC_MUTEX_INITIALIZATION__; __EXTERN__ pthread_mutex_t mutex_creation_variable_partagee __STATIC_MUTEX_INITIALIZATION__; __EXTERN__ pthread_mutex_t mutex_sections_critiques; @@ -492,10 +497,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); @@ -2305,9 +2311,10 @@ typedef struct processus struct_liste_profilage2 *pile_profilage_fonctions; struct timeval horodatage_profilage; - // Mutex spécifique au processus et donnant accès à la pile des processus - pthread_mutex_t mutex; pthread_mutex_t mutex_allocation; + pthread_mutex_t mutex_interruptions; + pthread_mutex_t mutex_pile_processus; + pthread_mutex_t mutex_signaux; // Mutex autorisant les fork() sem_t __PTR__ semaphore_fork; @@ -2318,7 +2325,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; @@ -2793,6 +2804,8 @@ void instruction_return(struct_processus void instruction_revlist(struct_processus *s_etat_processus); void instruction_rewind(struct_processus *s_etat_processus); void instruction_rfuse(struct_processus *s_etat_processus); +void instruction_rgdl(struct_processus *s_etat_processus); +void instruction_rgdr(struct_processus *s_etat_processus); void instruction_rl(struct_processus *s_etat_processus); void instruction_rlb(struct_processus *s_etat_processus); void instruction_rnd(struct_processus *s_etat_processus);