--- rpl/src/rpl.h 2012/07/05 08:07:41 1.172 +++ rpl/src/rpl.h 2012/10/01 11:05:09 1.177 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.1.9 + RPL/2 (R) version 4.1.11 Copyright (C) 1989-2012 Dr. BERTRAND Joël This file is part of RPL/2. @@ -445,6 +445,7 @@ union semun __STATIC_MUTEX_INITIALIZATION__; __EXTERN__ pthread_mutex_t mutex_gestionnaires_signaux_atomique __STATIC_MUTEX_INITIALIZATION__; + __EXTERN__ pthread_mutex_t mutex_sections_critiques; __EXTERN__ sem_t __PTR__ semaphore_gestionnaires_signaux; @@ -1481,18 +1482,20 @@ typedef struct liste_pile_systeme /* type clôture : - C SELECT : END termine un test SELECT/DEFAULT/END. - D DO : END termine une boucle DO/UNTIL/END. - I IF : END termine un test IF/THEN (ELSE)/END. - J IFERR : END termine un test IFERR/THEN (ELSE)/END. - K CASE : END termine un test CASE/THEN/END - W WHILE : END termine une boucle WHILE/REPEAT/END. + C SELECT : END termine un test SELECT/DEFAULT/END. + D DO : END termine une boucle DO/UNTIL/END. + I IF : END termine un test IF/THEN (ELSE)/END. + J IFERR : END termine un test IFERR/THEN (ELSE)/END. + K CASE : END termine un test CASE/THEN/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. S START : NEXT ou STEP termine une boucle sans compteur. L LOOP : boucle utilisé dans le traitement de l'instruction RETURN. Elle correspond à une boucle FOR ou START mais sans son initialisation. + A FORALL : NEXT termine une boucle sur un objet. */ unsigned long adresse_retour; @@ -2215,6 +2218,7 @@ typedef struct processus struct_liste_chainee *liste_mutexes; pthread_mutex_t protection_liste_mutexes; + unsigned int sections_critiques; /* Drapeau nécessaire à RESTART */ @@ -2387,6 +2391,7 @@ void instruction_cosh(struct_processus * void instruction_cov(struct_processus *s_etat_processus); void instruction_cr(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_cross(struct_processus *s_etat_processus); void instruction_crsmphr(struct_processus *s_etat_processus); @@ -2471,6 +2476,7 @@ void instruction_fleche_str(struct_proce void instruction_fleche_table(struct_processus *s_etat_processus); void instruction_floor(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_fp(struct_processus *s_etat_processus); void instruction_fs_test(struct_processus *s_etat_processus);