Diff for /rpl/src/instructions_d5.c between versions 1.31 and 1.39

version 1.31, 2010/07/14 14:19:35 version 1.39, 2010/08/26 17:49:34
Line 20 Line 20
 */  */
   
   
 #include "rpl.conv.h"  #include "rpl-conv.h"
   
   
 /*  /*
Line 1275  instruction_detach(struct_processus *s_e Line 1275  instruction_detach(struct_processus *s_e
             return;              return;
         }          }
   
   #       ifndef OS2
         if (pthread_attr_setschedpolicy(&attributs, SCHED_OTHER) != 0)          if (pthread_attr_setschedpolicy(&attributs, SCHED_OTHER) != 0)
         {          {
             (*s_etat_processus).erreur_systeme = d_es_processus;              (*s_etat_processus).erreur_systeme = d_es_processus;
Line 1293  instruction_detach(struct_processus *s_e Line 1294  instruction_detach(struct_processus *s_e
             (*s_etat_processus).erreur_systeme = d_es_processus;              (*s_etat_processus).erreur_systeme = d_es_processus;
             return;              return;
         }          }
   #       endif
   
         (*s_argument_thread).s_etat_processus = s_etat_processus;          (*s_argument_thread).s_etat_processus = s_etat_processus;
   
Line 1315  instruction_detach(struct_processus *s_e Line 1317  instruction_detach(struct_processus *s_e
          * Processus fils           * Processus fils
          */           */
   
   #       ifdef _BROKEN_SIGINFO
           liberation_fifos_signaux(s_etat_processus);
           creation_fifos_signaux(s_etat_processus);
   #       endif
   
         if ((*s_etat_processus).debug == d_vrai)          if ((*s_etat_processus).debug == d_vrai)
             if (((*s_etat_processus).type_debug &              if (((*s_etat_processus).type_debug &
                     d_debug_processus) != 0)                      d_debug_processus) != 0)
Line 1504  instruction_detach(struct_processus *s_e Line 1511  instruction_detach(struct_processus *s_e
                 }                  }
             }              }
   
   #           ifdef _BROKEN_SIGINFO
               destruction_fifos_signaux(s_etat_processus);
   #           endif
   
             BUG(1, uprintf("Process management error line %d\n", __LINE__));              BUG(1, uprintf("Process management error line %d\n", __LINE__));
             exit(EXIT_FAILURE);              exit(EXIT_FAILURE);
         }          }
Line 1534  instruction_detach(struct_processus *s_e Line 1545  instruction_detach(struct_processus *s_e
                 }                  }
             }              }
   
   #           ifdef _BROKEN_SIGINFO
               destruction_fifos_signaux(s_etat_processus);
   #           endif
   
             BUG(1, uprintf("Process management error line %d\n", __LINE__));              BUG(1, uprintf("Process management error line %d\n", __LINE__));
             exit(EXIT_FAILURE);              exit(EXIT_FAILURE);
         }          }
Line 1567  instruction_detach(struct_processus *s_e Line 1582  instruction_detach(struct_processus *s_e
                 }                  }
             }              }
   
   #           ifdef _BROKEN_SIGINFO
               destruction_fifos_signaux(s_etat_processus);
   #           endif
   
             BUG(1, uprintf("Process management error line %d\n", __LINE__));              BUG(1, uprintf("Process management error line %d\n", __LINE__));
             exit(EXIT_FAILURE);              exit(EXIT_FAILURE);
         }          }
Line 1589  instruction_detach(struct_processus *s_e Line 1608  instruction_detach(struct_processus *s_e
   
         liberation(s_etat_processus, (*s_etat_processus).at_exit);          liberation(s_etat_processus, (*s_etat_processus).at_exit);
         (*s_etat_processus).at_exit = NULL;          (*s_etat_processus).at_exit = NULL;
           liberation(s_etat_processus, (*s_etat_processus).at_poke);
           (*s_etat_processus).at_poke = NULL;
           (*s_etat_processus).traitement_at_poke = 'N';
   
         for(i = 0; i < d_NOMBRE_INTERRUPTIONS; i++)          for(i = 0; i < d_NOMBRE_INTERRUPTIONS; i++)
         {          {
Line 1712  instruction_detach(struct_processus *s_e Line 1734  instruction_detach(struct_processus *s_e
                 }                  }
             }              }
   
   #           ifdef _BROKEN_SIGINFO
               destruction_fifos_signaux(s_etat_processus);
   #           endif
   
             BUG(1, uprintf("Process management error line %d\n", __LINE__));              BUG(1, uprintf("Process management error line %d\n", __LINE__));
             exit(EXIT_FAILURE);              exit(EXIT_FAILURE);
         }          }
Line 1728  instruction_detach(struct_processus *s_e Line 1754  instruction_detach(struct_processus *s_e
             (*s_argument_thread2).nombre_references--;              (*s_argument_thread2).nombre_references--;
   
             BUG((*s_argument_thread2).nombre_references < 0,              BUG((*s_argument_thread2).nombre_references < 0,
   #                   ifdef _BROKEN_SIGINFO
                       destruction_fifos_signaux(s_etat_processus),
   #                   endif
                     printf("(*s_argument_thread2).nombre_references = %d\n",                      printf("(*s_argument_thread2).nombre_references = %d\n",
                     (int) (*s_argument_thread2).nombre_references));                      (int) (*s_argument_thread2).nombre_references));
   
Line 1791  instruction_detach(struct_processus *s_e Line 1820  instruction_detach(struct_processus *s_e
                 }                  }
             }              }
   
   #           ifdef _BROKEN_SIGINFO
               destruction_fifos_signaux(s_etat_processus);
   #           endif
   
             BUG(1, uprintf("Process management error line %d\n", __LINE__));              BUG(1, uprintf("Process management error line %d\n", __LINE__));
             exit(EXIT_FAILURE);              exit(EXIT_FAILURE);
         }          }
Line 1855  instruction_detach(struct_processus *s_e Line 1888  instruction_detach(struct_processus *s_e
                 }                  }
             }              }
   
   #           ifdef _BROKEN_SIGINFO
               destruction_fifos_signaux(s_etat_processus);
   #           endif
   
             BUG(1, uprintf("Process management error line %d\n", __LINE__));              BUG(1, uprintf("Process management error line %d\n", __LINE__));
             exit(EXIT_FAILURE);              exit(EXIT_FAILURE);
         }          }
Line 1907  instruction_detach(struct_processus *s_e Line 1944  instruction_detach(struct_processus *s_e
                 }                  }
             }              }
   
   #           ifdef _BROKEN_SIGINFO
               destruction_fifos_signaux(s_etat_processus);
   #           endif
   
             BUG(1, uprintf("Process management error line %d\n", __LINE__));              BUG(1, uprintf("Process management error line %d\n", __LINE__));
             exit(EXIT_FAILURE);              exit(EXIT_FAILURE);
         }          }
Line 2091  instruction_detach(struct_processus *s_e Line 2132  instruction_detach(struct_processus *s_e
         }          }
   
         liberation(s_etat_processus, (*s_etat_processus).at_exit);          liberation(s_etat_processus, (*s_etat_processus).at_exit);
           liberation(s_etat_processus, (*s_etat_processus).at_poke);
   
         l_element_courant = (*s_etat_processus).liste_mutexes;          l_element_courant = (*s_etat_processus).liste_mutexes;
         while(l_element_courant != NULL)          while(l_element_courant != NULL)
Line 2454  instruction_detach(struct_processus *s_e Line 2496  instruction_detach(struct_processus *s_e
                                     registre_stop;                                      registre_stop;
                         }                          }
   
   #                       ifdef _BROKEN_SIGINFO
                           destruction_fifos_signaux(s_etat_processus);
   #                       endif
   
                         (*s_etat_processus).erreur_systeme = d_es_signal;                          (*s_etat_processus).erreur_systeme = d_es_signal;
                         exit(EXIT_FAILURE);                          exit(EXIT_FAILURE);
                     }                      }
Line 2488  instruction_detach(struct_processus *s_e Line 2534  instruction_detach(struct_processus *s_e
   
                     if (sigaction(SIGPIPE, &registre, NULL) != 0)                      if (sigaction(SIGPIPE, &registre, NULL) != 0)
                     {                      {
   #                       ifdef _BROKEN_SIGINFO
                           destruction_fifos_signaux(s_etat_processus);
   #                       endif
   
                         pthread_mutex_unlock(&((*s_etat_processus).mutex));                          pthread_mutex_unlock(&((*s_etat_processus).mutex));
   
                         (*s_etat_processus).erreur_systeme = d_es_signal;                          (*s_etat_processus).erreur_systeme = d_es_signal;
Line 2804  instruction_detach(struct_processus *s_e Line 2854  instruction_detach(struct_processus *s_e
   
         liberation(s_etat_processus, s_objet);          liberation(s_etat_processus, s_objet);
   
 #       ifndef Cygwin  #       if !defined(Cygwin) && !defined(OpenBSD)
         (*s_etat_processus).pile_signal.ss_flags = SS_DISABLE;          (*s_etat_processus).pile_signal.ss_flags = SS_DISABLE;
         sigaltstack(&((*s_etat_processus).pile_signal), NULL);          sigaltstack(&((*s_etat_processus).pile_signal), NULL);
         free((*s_etat_processus).pile_signal.ss_sp);          free((*s_etat_processus).pile_signal.ss_sp);
Line 2881  instruction_detach(struct_processus *s_e Line 2931  instruction_detach(struct_processus *s_e
   
         clear_history();          clear_history();
   
   #       ifdef _BROKEN_SIGINFO
           destruction_fifos_signaux(s_etat_processus);
   #       endif
   
         free(s_etat_processus);          free(s_etat_processus);
   
 #       ifdef DEBUG_MEMOIRE  #       ifdef DEBUG_MEMOIRE

Removed from v.1.31  
changed lines
  Added in v.1.39


CVSweb interface <joel.bertrand@systella.fr>