--- rpl/src/analyse.c 2012/04/13 14:12:44 1.70 +++ rpl/src/analyse.c 2013/02/27 17:11:39 1.81 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.8 - Copyright (C) 1989-2012 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.13 + Copyright (C) 1989-2013 Dr. BERTRAND Joël This file is part of RPL/2. @@ -722,6 +722,7 @@ initialisation_instructions(struct_proce INSTRUCTION("ATEXIT", instruction_atexit); INSTRUCTION("ATPOKE", instruction_atpoke); INSTRUCTION("BESSEL", instruction_bessel); + INSTRUCTION("CIPHER", instruction_cipher); INSTRUCTION("CLRERR", instruction_clrerr); INSTRUCTION("CLRMTX", instruction_clrmtx); INSTRUCTION("CLRSWI", instruction_clrswi); @@ -746,6 +747,7 @@ initialisation_instructions(struct_proce INSTRUCTION("DETACH", instruction_spawn); # endif INSTRUCTION("DIAG->", instruction_diag_fleche); + INSTRUCTION("DIGEST", instruction_digest); //INSTRUCTION("DOLIST") //Instruction HP48 (application d'une fonction à une liste) //liste(s) nombre_de_listes_a_traiter fonction DOLIST @@ -757,6 +759,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 +843,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 +1025,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)