Diff for /rpl/src/interruptions.c between versions 1.187 and 1.198

version 1.187, 2016/10/11 11:30:30 version 1.198, 2018/12/24 15:56:35
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.26    RPL/2 (R) version 4.1.30
   Copyright (C) 1989-2016 Dr. BERTRAND Joël    Copyright (C) 1989-2018 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 2028  sortie_interruption_depassement_pile(voi Line 2028  sortie_interruption_depassement_pile(voi
     return;      return;
 }  }
   
 #ifndef BROKEN_SIGSEGV  #ifdef HAVE_SIGSEGV_RECOVERY
 void  void
 interruption_depassement_pile(int urgence, stackoverflow_context_t scp)  interruption_depassement_pile(int urgence, stackoverflow_context_t scp)
 {  {
Line 2059  interruption_violation_access(void *adre Line 2059  interruption_violation_access(void *adre
     {      {
         // Il peut s'agir d'un dépassement de pile.          // Il peut s'agir d'un dépassement de pile.
   
         sigsegv_leave_handler(sortie_interruption_depassement_pile,  #       ifdef HAVE_SIGSEGV_RECOVERY
                 (void *) &routine_recursive, NULL, NULL);              sigsegv_leave_handler(sortie_interruption_depassement_pile,
                       (void *) &routine_recursive, NULL, NULL);
   #       else
               sortie_interruption_depassement_pile((void *) &routine_recursive,
                       NULL, NULL);
   #       endif
     }      }
   
     // On est dans une bonne vieille violation d'accès. On essaie      // On est dans une bonne vieille violation d'accès. On essaie
Line 3207  creation_queue_signaux(struct_processus Line 3212  creation_queue_signaux(struct_processus
   
     unsigned char                   *nom;      unsigned char                   *nom;
   
     if (lancement_thread_signaux(s_etat_processus) == d_erreur)  
     {  
         (*s_etat_processus).erreur_systeme = d_es_processus;  
         return;  
     }  
   
     racine_segment = (*s_etat_processus).chemin_fichiers_temporaires;      racine_segment = (*s_etat_processus).chemin_fichiers_temporaires;
   
 #   ifndef IPCS_SYSV // POSIX  #   ifndef IPCS_SYSV // POSIX
Line 3418  creation_queue_signaux(struct_processus Line 3417  creation_queue_signaux(struct_processus
 #       endif  #       endif
 #   endif  #   endif
   
       (*s_queue_signaux).controle = getpid();
   
       if (lancement_thread_signaux(s_etat_processus) == d_erreur)
       {
           (*s_etat_processus).erreur_systeme = d_es_processus;
           return;
       }
   
     // Lancement du thread de récupération des signaux.      // Lancement du thread de récupération des signaux.
   
     if (pthread_attr_init(&attributs) != 0)      if (pthread_attr_init(&attributs) != 0)
Line 3433  creation_queue_signaux(struct_processus Line 3440  creation_queue_signaux(struct_processus
         return;          return;
     }      }
   
     (*s_queue_signaux).controle = getpid();  
   
     if (pthread_create(&((*s_queue_signaux).thread_signaux), &attributs,      if (pthread_create(&((*s_queue_signaux).thread_signaux), &attributs,
             thread_surveillance_signaux, s_etat_processus) != 0)              thread_surveillance_signaux, s_etat_processus) != 0)
     {      {
Line 3455  creation_queue_signaux(struct_processus Line 3460  creation_queue_signaux(struct_processus
         (*s_etat_processus).erreur_systeme = d_es_processus;          (*s_etat_processus).erreur_systeme = d_es_processus;
         return;          return;
     }      }
 #           endif  #   endif
   
     return;      return;
 }  }
Line 3560  destruction_queue_signaux(struct_process Line 3565  destruction_queue_signaux(struct_process
         return;          return;
     }      }
   
       arret_thread_signaux(s_etat_processus);
   
 #   ifdef IPCS_SYSV // SystemV  #   ifdef IPCS_SYSV // SystemV
 #       ifndef OS2  #       ifndef OS2
             // Il faut commencer par éliminer le sémaphore.              // Il faut commencer par éliminer le sémaphore.
Line 3658  destruction_queue_signaux(struct_process Line 3665  destruction_queue_signaux(struct_process
         sys_free(nom);          sys_free(nom);
 #   endif  #   endif
   
     arret_thread_signaux(s_etat_processus);  
     return;      return;
 }  }
   

Removed from v.1.187  
changed lines
  Added in v.1.198


CVSweb interface <joel.bertrand@systella.fr>