Diff for /rpl/src/interruptions.c between versions 1.186 and 1.194

version 1.186, 2016/09/27 15:29:39 version 1.194, 2017/08/02 15:02:56
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.26    RPL/2 (R) version 4.1.27
   Copyright (C) 1989-2016 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 2028  sortie_interruption_depassement_pile(voi Line 2028  sortie_interruption_depassement_pile(voi
     return;      return;
 }  }
   
   #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 2044  interruption_depassement_pile(int urgenc Line 2045  interruption_depassement_pile(int urgenc
     interruption3(SIGUSR2);      interruption3(SIGUSR2);
     return;      return;
 }  }
   #endif
   
 int  int
 interruption_violation_access(void *adresse_fautive, int gravite)  interruption_violation_access(void *adresse_fautive, int gravite)
Line 2057  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 3205  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 3416  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 3431  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 3453  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 3558  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 3656  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.186  
changed lines
  Added in v.1.194


CVSweb interface <joel.bertrand@systella.fr>