Diff for /rpl/src/instructions_d5.c between versions 1.85 and 1.93

version 1.85, 2012/01/05 10:19:01 version 1.93, 2012/10/04 15:21:26
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.5    RPL/2 (R) version 4.1.11
   Copyright (C) 1989-2012 Dr. BERTRAND Joël    Copyright (C) 1989-2012 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
Line 1423  instruction_detach(struct_processus *s_e Line 1423  instruction_detach(struct_processus *s_e
             exit(EXIT_FAILURE);              exit(EXIT_FAILURE);
         }          }
   
           if (pthread_mutex_destroy(&mutex_sections_critiques) != 0)
           {
               (*s_etat_processus).erreur_systeme = d_es_processus;
   
               pid_final = -2;
   
               while((longueur_ecriture = write_atomic(s_etat_processus,
                       (*s_argument_thread).pipe_nombre_interruptions_attente[1],
                       &pid_final, sizeof(pid_final))) != sizeof(pid_final))
               {
                   if (longueur_ecriture == -1)
                   {
                       break;
                   }
               }
   
               while((longueur_ecriture = write_atomic(s_etat_processus,
                       (*s_argument_thread).pipe_nombre_objets_attente[1],
                       &pid_final, sizeof(pid_final))) != sizeof(pid_final))
               {
                   if (longueur_ecriture == -1)
                   {
                       break;
                   }
               }
   
               destruction_queue_signaux(s_etat_processus);
               BUG(1, uprintf("Process management error line %d\n", __LINE__));
               exit(EXIT_FAILURE);
           }
   
           pthread_mutexattr_init(&attributs_mutex);
           pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_RECURSIVE);
           pthread_mutex_init(&mutex_sections_critiques, &attributs_mutex);
           pthread_mutexattr_destroy(&attributs_mutex);
   
         if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0)          if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0)
         {          {
             (*s_etat_processus).erreur_systeme = d_es_processus;              (*s_etat_processus).erreur_systeme = d_es_processus;
Line 1578  instruction_detach(struct_processus *s_e Line 1614  instruction_detach(struct_processus *s_e
         (*s_etat_processus).presence_fusible = d_faux;          (*s_etat_processus).presence_fusible = d_faux;
         (*s_etat_processus).thread_fusible = 0;          (*s_etat_processus).thread_fusible = 0;
         (*s_etat_processus).pid_erreur_processus_fils = getpid();          (*s_etat_processus).pid_erreur_processus_fils = getpid();
           (*s_etat_processus).sections_critiques = 0;
   
         if ((*s_etat_processus).profilage == d_vrai)          if ((*s_etat_processus).profilage == d_vrai)
         {          {
Line 2027  instruction_detach(struct_processus *s_e Line 2064  instruction_detach(struct_processus *s_e
             free(s);              free(s);
         }          }
   
           for(i = 0; i < (*s_etat_processus).sections_critiques; i++)
           {
               pthread_mutex_unlock(&mutex_sections_critiques);
           }
   
         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);          liberation(s_etat_processus, (*s_etat_processus).at_poke);
   
Line 2566  instruction_detach(struct_processus *s_e Line 2608  instruction_detach(struct_processus *s_e
                 (*s_etat_processus).s_arbre_variables, d_vrai);                  (*s_etat_processus).s_arbre_variables, d_vrai);
         free((*s_etat_processus).pointeurs_caracteres_variables);          free((*s_etat_processus).pointeurs_caracteres_variables);
   
   #warning A FIXER
           /*
         for(i = 0; i < (*s_etat_processus).nombre_variables_statiques; i++)          for(i = 0; i < (*s_etat_processus).nombre_variables_statiques; i++)
         {          {
             liberation(s_etat_processus,              liberation(s_etat_processus,
Line 2574  instruction_detach(struct_processus *s_e Line 2618  instruction_detach(struct_processus *s_e
         }          }
   
         free((*s_etat_processus).s_liste_variables_statiques);          free((*s_etat_processus).s_liste_variables_statiques);
           */
   
         for(i = 0; i < (*(*s_etat_processus).s_liste_variables_partagees)          for(i = 0; i < (*(*s_etat_processus).s_liste_variables_partagees)
                 .nombre_variables; i++)                  .nombre_variables; i++)
Line 2773  instruction_detach(struct_processus *s_e Line 2818  instruction_detach(struct_processus *s_e
         pthread_mutex_destroy(&((*s_etat_processus).mutex));          pthread_mutex_destroy(&((*s_etat_processus).mutex));
         pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation));          pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation));
         pthread_mutex_destroy(&((*s_etat_processus).protection_liste_mutexes));          pthread_mutex_destroy(&((*s_etat_processus).protection_liste_mutexes));
           pthread_mutex_destroy(&mutex_sections_critiques);
   
 #       ifndef SEMAPHORES_NOMMES  #       ifndef SEMAPHORES_NOMMES
         sem_post(&((*s_etat_processus).semaphore_fork));          sem_post(&((*s_etat_processus).semaphore_fork));

Removed from v.1.85  
changed lines
  Added in v.1.93


CVSweb interface <joel.bertrand@systella.fr>