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

version 1.83, 2013/03/21 14:13:55 version 1.89, 2013/06/21 14:15:50
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.13    RPL/2 (R) version 4.1.15
   Copyright (C) 1989-2013 Dr. BERTRAND Joël    Copyright (C) 1989-2013 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
Line 964  analyse_instruction(struct_processus *s_ Line 964  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 1159  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 1208  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 1246  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 1265  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 1273  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.89


CVSweb interface <joel.bertrand@systella.fr>