--- rpl/src/analyse.c 2013/03/21 14:39:09 1.84 +++ rpl/src/analyse.c 2018/12/24 15:54:56 1.112 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.13 - Copyright (C) 1989-2013 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.30 + Copyright (C) 1989-2018 Dr. BERTRAND Joël This file is part of RPL/2. @@ -323,6 +323,7 @@ initialisation_instructions(struct_proce INSTRUCTION("EGV", instruction_egv); INSTRUCTION("END", instruction_end); INSTRUCTION("ENG", instruction_eng); + INSTRUCTION("EQV", instruction_eqv); INSTRUCTION("EXP", instruction_exp); INSTRUCTION("FC?", instruction_fc_test); INSTRUCTION("FFT", instruction_fft); @@ -513,6 +514,8 @@ initialisation_instructions(struct_proce INSTRUCTION("RECV", instruction_recv); INSTRUCTION("REGV", instruction_regv); INSTRUCTION("REPL", instruction_repl); + INSTRUCTION("RGDL", instruction_rgdl); + INSTRUCTION("RGDR", instruction_rgdr); INSTRUCTION("RNRM", instruction_rnrm); INSTRUCTION("ROLL", instruction_roll); //INSTRUCTION("ROOT") @@ -772,6 +775,7 @@ initialisation_instructions(struct_proce INSTRUCTION("RCLSWI", instruction_rclswi); INSTRUCTION("RECALL", instruction_recall); INSTRUCTION("RECODE", instruction_recode); + INSTRUCTION("RECORD", instruction_record); INSTRUCTION("REDRAW", instruction_redraw); INSTRUCTION("REMOVE", instruction_remove); INSTRUCTION("REPEAT", instruction_repeat); @@ -822,6 +826,7 @@ initialisation_instructions(struct_proce INSTRUCTION("INQUIRE", instruction_inquire); INSTRUCTION("MEMLOCK", instruction_memlock); INSTRUCTION("MTXLOCK", instruction_mtxlock); + INSTRUCTION("NBRCPUS", instruction_nbrcpus); INSTRUCTION("PERSIST", instruction_persist); INSTRUCTION("PLOTTER", instruction_plotter); INSTRUCTION("PRIVATE", instruction_private); @@ -964,8 +969,6 @@ analyse_instruction(struct_processus *s_ void analyse(struct_processus *s_etat_processus, void (*fonction)()) { - static logical1 initialisation = d_faux; - real8 attente; real8 pourcentage; real8 temps_cpu; @@ -1161,9 +1164,23 @@ analyse(struct_processus *s_etat_process { if ((*s_etat_processus).test_instruction == 'N') { - if ((*s_etat_processus).nombre_interruptions_non_affectees != 0) + if (pthread_mutex_lock(&(*s_etat_processus).mutex_interruptions) + != 0) { - affectation_interruptions_logicielles(s_etat_processus); + (*s_etat_processus).erreur_systeme = d_es_processus; + } + else + { + if ((*s_etat_processus).nombre_interruptions_non_affectees != 0) + { + affectation_interruptions_logicielles(s_etat_processus); + } + + if (pthread_mutex_unlock(&(*s_etat_processus) + .mutex_interruptions) != 0) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + } } if (((*s_etat_processus).nombre_interruptions_en_queue != 0) && @@ -1196,7 +1213,7 @@ analyse(struct_processus *s_etat_process gettimeofday(&horodatage_final, NULL); - if (initialisation == d_vrai) + if ((*s_etat_processus).initialisation_scheduler == d_vrai) { temps_reel = ((real8) (horodatage_final.tv_sec - horodatage_initial.tv_sec)) + @@ -1253,7 +1270,7 @@ analyse(struct_processus *s_etat_process } else { - initialisation = d_vrai; + (*s_etat_processus).initialisation_scheduler = d_vrai; horodatage_initial = horodatage_final; usage_initial = usage_final; @@ -1261,7 +1278,7 @@ analyse(struct_processus *s_etat_process } else { - initialisation = d_faux; + (*s_etat_processus).initialisation_scheduler = d_faux; } /*