Diff for /rpl/src/analyse.c between versions 1.83 and 1.105

version 1.83, 2013/03/21 14:13:55 version 1.105, 2017/01/18 15:44:16
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.13    RPL/2 (R) version 4.1.26
   Copyright (C) 1989-2013 Dr. BERTRAND Joël    Copyright (C) 1989-2017 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 323  initialisation_instructions(struct_proce Line 323  initialisation_instructions(struct_proce
     INSTRUCTION("EGV", instruction_egv);      INSTRUCTION("EGV", instruction_egv);
     INSTRUCTION("END", instruction_end);      INSTRUCTION("END", instruction_end);
     INSTRUCTION("ENG", instruction_eng);      INSTRUCTION("ENG", instruction_eng);
       INSTRUCTION("EQV", instruction_eqv);
     INSTRUCTION("EXP", instruction_exp);      INSTRUCTION("EXP", instruction_exp);
     INSTRUCTION("FC?", instruction_fc_test);      INSTRUCTION("FC?", instruction_fc_test);
     INSTRUCTION("FFT", instruction_fft);      INSTRUCTION("FFT", instruction_fft);
Line 513  initialisation_instructions(struct_proce Line 514  initialisation_instructions(struct_proce
     INSTRUCTION("RECV", instruction_recv);      INSTRUCTION("RECV", instruction_recv);
     INSTRUCTION("REGV", instruction_regv);      INSTRUCTION("REGV", instruction_regv);
     INSTRUCTION("REPL", instruction_repl);      INSTRUCTION("REPL", instruction_repl);
       INSTRUCTION("RGDL", instruction_rgdl);
       INSTRUCTION("RGDR", instruction_rgdr);
     INSTRUCTION("RNRM", instruction_rnrm);      INSTRUCTION("RNRM", instruction_rnrm);
     INSTRUCTION("ROLL", instruction_roll);      INSTRUCTION("ROLL", instruction_roll);
     //INSTRUCTION("ROOT")      //INSTRUCTION("ROOT")
Line 964  analyse_instruction(struct_processus *s_ Line 967  analyse_instruction(struct_processus *s_
 void  void
 analyse(struct_processus *s_etat_processus, void (*fonction)())  analyse(struct_processus *s_etat_processus, void (*fonction)())
 {  {
     static logical1                 initialisation = d_faux;  
   
     real8                           attente;      real8                           attente;
     real8                           pourcentage;      real8                           pourcentage;
     real8                           temps_cpu;      real8                           temps_cpu;
Line 1161  analyse(struct_processus *s_etat_process Line 1162  analyse(struct_processus *s_etat_process
     {      {
         if ((*s_etat_processus).test_instruction == 'N')          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) &&              if (((*s_etat_processus).nombre_interruptions_en_queue != 0) &&
Line 1196  analyse(struct_processus *s_etat_process Line 1211  analyse(struct_processus *s_etat_process
   
         gettimeofday(&horodatage_final, NULL);          gettimeofday(&horodatage_final, NULL);
   
         if (initialisation == d_vrai)          if ((*s_etat_processus).initialisation_scheduler == d_vrai)
         {          {
             temps_reel = ((real8) (horodatage_final.tv_sec -              temps_reel = ((real8) (horodatage_final.tv_sec -
                     horodatage_initial.tv_sec)) +                      horodatage_initial.tv_sec)) +
Line 1234  analyse(struct_processus *s_etat_process Line 1249  analyse(struct_processus *s_etat_process
                             (*s_etat_processus).pourcentage_maximal_cpu)                              (*s_etat_processus).pourcentage_maximal_cpu)
                             - (pourcentage * temps_cpu / 100);                              - (pourcentage * temps_cpu / 100);
   
                     temporisation.tv_sec = (__time_t) floor(attente);                      temporisation.tv_sec = (time_t) floor(attente);
                     temporisation.tv_nsec = (__suseconds_t) ((attente                      temporisation.tv_nsec = (suseconds_t) ((attente
                             - ((real8) temporisation.tv_sec)) * 1E9);                              - ((real8) temporisation.tv_sec)) * 1E9);
   
                     while(nanosleep(&temporisation, &temporisation) == -1)                      while(nanosleep(&temporisation, &temporisation) == -1)
Line 1253  analyse(struct_processus *s_etat_process Line 1268  analyse(struct_processus *s_etat_process
         }          }
         else          else
         {          {
             initialisation = d_vrai;              (*s_etat_processus).initialisation_scheduler = d_vrai;
   
             horodatage_initial = horodatage_final;              horodatage_initial = horodatage_final;
             usage_initial = usage_final;              usage_initial = usage_final;
Line 1261  analyse(struct_processus *s_etat_process Line 1276  analyse(struct_processus *s_etat_process
     }      }
     else      else
     {      {
         initialisation = d_faux;          (*s_etat_processus).initialisation_scheduler = d_faux;
     }      }
   
 /*  /*

Removed from v.1.83  
changed lines
  Added in v.1.105


CVSweb interface <joel.bertrand@systella.fr>