Diff for /rpl/src/instructions_d5.c between versions 1.15 and 1.18

version 1.15, 2010/04/28 09:38:27 version 1.18, 2010/05/06 15:02:43
Line 1062  instruction_detach(struct_processus *s_e Line 1062  instruction_detach(struct_processus *s_e
         return;          return;
     }      }
   
       if (sigaddset(&set, SIGFABORT) != 0)
       {
           (*s_etat_processus).erreur_systeme = d_es_processus;
           return;
       }
   
     if (sigaddset(&set, SIGURG) != 0)      if (sigaddset(&set, SIGURG) != 0)
     {      {
         (*s_etat_processus).erreur_systeme = d_es_processus;          (*s_etat_processus).erreur_systeme = d_es_processus;
Line 1824  instruction_detach(struct_processus *s_e Line 1830  instruction_detach(struct_processus *s_e
          * Destruction des piles de connecteurs SQL           * Destruction des piles de connecteurs SQL
          */           */
   
   /*
   ================================================================================
     À noter : on ne ferme pas la connexion car la conséquence immédiate est
     une destruction de l'objet pour le processus père.
   ================================================================================
   
         l_element_courant = (*s_etat_processus).s_connecteurs_sql;          l_element_courant = (*s_etat_processus).s_connecteurs_sql;
   
         while(l_element_courant != NULL)          while(l_element_courant != NULL)
Line 1834  instruction_detach(struct_processus *s_e Line 1846  instruction_detach(struct_processus *s_e
             liberation(s_etat_processus, (*l_element_courant).donnee);              liberation(s_etat_processus, (*l_element_courant).donnee);
             l_element_courant = l_element_suivant;              l_element_courant = l_element_suivant;
         }          }
   */
   
           (*s_etat_processus).s_connecteurs_sql = NULL;
   
         /*          /*
          * On ne détruit pas les sockets car il faut utiliser DETACH           * On ne détruit pas les sockets car il faut utiliser DETACH
Line 1864  instruction_detach(struct_processus *s_e Line 1879  instruction_detach(struct_processus *s_e
                 }                  }
                 else                  else
                 {                  {
                     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))
                     {                      {
                         (*s_etat_processus).var_volatile_requete_arret = 0;                          (*s_etat_processus).var_volatile_requete_arret = 0;
                         (*s_etat_processus)  
                                 .var_volatile_traitement_retarde_stop = -1;  
   
                         if (evaluation(s_etat_processus,                          if (evaluation(s_etat_processus,
                                 (*s_etat_processus).at_exit, 'E') == d_erreur)                                  (*s_etat_processus).at_exit, 'E') == d_erreur)
Line 1895  instruction_detach(struct_processus *s_e Line 1910  instruction_detach(struct_processus *s_e
                     if ((*s_etat_processus).at_exit != NULL)                      if ((*s_etat_processus).at_exit != NULL)
                     {                      {
                         (*s_etat_processus).var_volatile_requete_arret = 0;                          (*s_etat_processus).var_volatile_requete_arret = 0;
                         (*s_etat_processus)  
                                 .var_volatile_traitement_retarde_stop = -1;  
   
                         if (evaluation(s_etat_processus,                          if (evaluation(s_etat_processus,
                                 (*s_etat_processus).at_exit, 'E') == d_erreur)                                  (*s_etat_processus).at_exit, 'E') == d_erreur)
Line 2139  instruction_detach(struct_processus *s_e Line 2152  instruction_detach(struct_processus *s_e
                 }                  }
                 else                  else
                 {                  {
                     kill((*(*((struct_processus_fils *)                      if ((*s_etat_processus).arret_depuis_abort == -1)
                             (*(*l_element_courant).donnee).objet)).thread).pid,                      {
                             SIGFSTOP);                          kill((*(*((struct_processus_fils *)
                                   (*(*l_element_courant).donnee).objet)).thread)
                                   .pid, SIGFABORT);
                       }
                       else
                       {
                           kill((*(*((struct_processus_fils *)
                                   (*(*l_element_courant).donnee).objet)).thread)
                                   .pid, SIGFSTOP);
                       }
                 }                  }
             }              }
             else              else
Line 2188  instruction_detach(struct_processus *s_e Line 2210  instruction_detach(struct_processus *s_e
                     }                      }
                     else                      else
                     {                      {
                         pthread_kill((*(*((struct_processus_fils *)                          if ((*s_etat_processus).arret_depuis_abort == -1)
                                 (*(*l_element_courant).donnee).objet)).thread)                          {
                                 .tid, SIGFSTOP);                              pthread_kill((*(*((struct_processus_fils *)
                                       (*(*l_element_courant).donnee).objet))
                                       .thread).tid, SIGFABORT);
                           }
                           else
                           {
                               pthread_kill((*(*((struct_processus_fils *)
                                       (*(*l_element_courant).donnee).objet))
                                       .thread).tid, SIGFSTOP);
                           }
                     }                      }
                 }                  }
   
Line 2218  instruction_detach(struct_processus *s_e Line 2249  instruction_detach(struct_processus *s_e
             l_element_courant = (struct_liste_chainee *)              l_element_courant = (struct_liste_chainee *)
                     (*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);  
             }  
   
             registre_stop = (*s_etat_processus)              registre_stop = (*s_etat_processus)
                     .var_volatile_traitement_retarde_stop;                      .var_volatile_traitement_retarde_stop;
             (*s_etat_processus).var_volatile_traitement_retarde_stop = 1;              (*s_etat_processus).var_volatile_traitement_retarde_stop = 1;
Line 2305  instruction_detach(struct_processus *s_e Line 2331  instruction_detach(struct_processus *s_e
             }              }
   
             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.15  
changed lines
  Added in v.1.18


CVSweb interface <joel.bertrand@systella.fr>