--- rpl/src/analyse.c 2011/12/05 19:35:53 1.66 +++ rpl/src/analyse.c 2012/10/01 11:04:57 1.75 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.5 - Copyright (C) 1989-2011 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.11 + Copyright (C) 1989-2012 Dr. BERTRAND Joël This file is part of RPL/2. @@ -757,6 +757,7 @@ initialisation_instructions(struct_proce //DOLIST //=> { 29 42 57 } INSTRUCTION("ELSEIF", instruction_elseif); + INSTRUCTION("FORALL", instruction_forall); INSTRUCTION("FORMAT", instruction_format); //INSTRUCTION("HEIGHT") INSTRUCTION("ITRACE", instruction_itrace); @@ -840,6 +841,7 @@ initialisation_instructions(struct_proce INSTRUCTION("CLRCNTXT", instruction_clrcntxt); INSTRUCTION("CLRSMPHR", instruction_clrsmphr); INSTRUCTION("CONTINUE", instruction_continue); + INSTRUCTION("CRITICAL", instruction_critical); INSTRUCTION("DUPCNTXT", instruction_dupcntxt); INSTRUCTION("FUNCTION", instruction_function); INSTRUCTION("IMPLICIT", instruction_implicit); @@ -1021,6 +1023,22 @@ analyse(struct_processus *s_etat_process } } + /* + * Verrou pour les sections_critiques + */ + + if (pthread_mutex_lock(&mutex_sections_critiques) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } + + if (pthread_mutex_unlock(&mutex_sections_critiques) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } + scrutation_injection(s_etat_processus); if (fonction == NULL)