Diff for /rpl/src/rpl.c between versions 1.21 and 1.23

version 1.21, 2010/04/28 07:05:38 version 1.23, 2010/04/29 07:30:58
Line 447  rplinit(int argc, char *argv[], unsigned Line 447  rplinit(int argc, char *argv[], unsigned
         return(EXIT_FAILURE);          return(EXIT_FAILURE);
     }      }
   
       if (sigaction(SIGFABORT, &action, NULL) != 0)
       {
           erreur = d_es_signal;
   
           if ((*s_etat_processus).langue == 'F')
           {
               printf("+++Système : Initialisation des signaux POSIX "
                       "impossible\n");
           }
           else
           {
               printf("+++System : Initialization of POSIX signals failed\n");
           }
   
           return(EXIT_FAILURE);
       }
   
     action.sa_sigaction = interruption8;      action.sa_sigaction = interruption8;
     action.sa_flags = SA_NODEFER | SA_ONSTACK | SA_SIGINFO;      action.sa_flags = SA_NODEFER | SA_ONSTACK | SA_SIGINFO;
   
Line 1857  rplinit(int argc, char *argv[], unsigned Line 1874  rplinit(int argc, char *argv[], unsigned
             (*s_etat_processus).var_volatile_traitement_sigint = 0;              (*s_etat_processus).var_volatile_traitement_sigint = 0;
             (*s_etat_processus).var_volatile_recursivite = 0;              (*s_etat_processus).var_volatile_recursivite = 0;
             (*s_etat_processus).var_volatile_exception_gsl = 0;              (*s_etat_processus).var_volatile_exception_gsl = 0;
               (*s_etat_processus).arret_depuis_abort = 0;
   
             initialisation_allocateur(s_etat_processus);              initialisation_allocateur(s_etat_processus);
             initialisation_drapeaux(s_etat_processus);              initialisation_drapeaux(s_etat_processus);
Line 2623  rplinit(int argc, char *argv[], unsigned Line 2641  rplinit(int argc, char *argv[], unsigned
   
                         if (erreur == d_absence_erreur)                          if (erreur == d_absence_erreur)
                         {                          {
                             if ((*s_etat_processus).at_exit != NULL)                              if (((*s_etat_processus).var_volatile_alarme == 0)
                                       && ((*s_etat_processus).arret_depuis_abort
                                       == 0) && ((*s_etat_processus).at_exit
                                       != NULL))
                             {                              {
                                 erreur = evaluation(s_etat_processus,                                  erreur = evaluation(s_etat_processus,
                                         (*s_etat_processus).at_exit, 'E');                                          (*s_etat_processus).at_exit, 'E');
Line 2750  rplinit(int argc, char *argv[], unsigned Line 2771  rplinit(int argc, char *argv[], unsigned
                             }                              }
                             else                              else
                             {                              {
                                 kill((*(*((struct_processus_fils *)                                  if ((*s_etat_processus).arret_depuis_abort
                                         (*(*((struct_liste_chainee *)                                          == -1)
                                         l_element_courant)).donnee).objet))                                  {
                                         .thread).pid, SIGFSTOP);                                      kill((*(*((struct_processus_fils *)
                                               (*(*((struct_liste_chainee *)
                                               l_element_courant)).donnee).objet))
                                               .thread).pid, SIGFABORT);
                                   }
                                   else
                                   {
                                       kill((*(*((struct_processus_fils *)
                                               (*(*((struct_liste_chainee *)
                                               l_element_courant)).donnee).objet))
                                               .thread).pid, SIGFSTOP);
                                   }
                             }                              }
                         }                          }
                         else                          else
Line 2778  rplinit(int argc, char *argv[], unsigned Line 2810  rplinit(int argc, char *argv[], unsigned
                                 }                                  }
                                 else                                  else
                                 {                                  {
                                     pthread_kill((*(*((struct_processus_fils *)                                      if ((*s_etat_processus).arret_depuis_abort
                                             (*(*((struct_liste_chainee *)                                              == -1)
                                             l_element_courant)).donnee).objet))                                      {
                                             .thread).tid, SIGFSTOP);                                          pthread_kill(
                                                   (*(*((struct_processus_fils *)
                                                   (*(*((struct_liste_chainee *)
                                                   l_element_courant)).donnee)
                                                   .objet)).thread).tid,
                                                   SIGFABORT);
                                       }
                                       else
                                       {
                                           pthread_kill(
                                                   (*(*((struct_processus_fils *)
                                                   (*(*((struct_liste_chainee *)
                                                   l_element_courant)).donnee)
                                                   .objet)).thread).tid,
                                                   SIGFSTOP);
                                       }
                                 }                                  }
                             }                              }
   
Line 2814  rplinit(int argc, char *argv[], unsigned Line 2861  rplinit(int argc, char *argv[], unsigned
                         l_element_courant = (void *)                          l_element_courant = (void *)
                                 (*s_etat_processus).l_base_pile_processus;                                  (*s_etat_processus).l_base_pile_processus;
   
                         if ((*s_etat_processus)  
                                 .nombre_interruptions_non_affectees != 0)  
                         {  
                             affectation_interruptions_logicielles(  
                                     s_etat_processus);  
                         }  
   
                         for(i = 0; i < (unsigned long)                          for(i = 0; i < (unsigned long)
                                 (*(*((struct_processus_fils *)                                  (*(*((struct_processus_fils *)
                                 (*(*((struct_liste_chainee *)                                  (*(*((struct_liste_chainee *)
Line 2879  rplinit(int argc, char *argv[], unsigned Line 2919  rplinit(int argc, char *argv[], unsigned
                         }                          }
   
                         pthread_mutex_unlock(&((*s_etat_processus).mutex));                          pthread_mutex_unlock(&((*s_etat_processus).mutex));
   
                           if ((*s_etat_processus)
                                   .nombre_interruptions_non_affectees != 0)
                           {
                               affectation_interruptions_logicielles(
                                       s_etat_processus);
                           }
   
                         nanosleep(&attente, NULL);                          nanosleep(&attente, NULL);
                         pthread_mutex_lock(&((*s_etat_processus).mutex));                          pthread_mutex_lock(&((*s_etat_processus).mutex));
                     }                      }

Removed from v.1.21  
changed lines
  Added in v.1.23


CVSweb interface <joel.bertrand@systella.fr>