Diff for /rpl/src/gestion_objets.c between versions 1.21 and 1.24

version 1.21, 2010/05/25 18:09:44 version 1.24, 2010/06/08 10:22:36
Line 1110  liberation(struct_processus *s_etat_proc Line 1110  liberation(struct_processus *s_etat_proc
   
         case PRC :          case PRC :
         {          {
               if (pthread_mutex_lock(&((*s_etat_processus).mutex)) != 0)
               {
                   (*s_etat_processus).erreur_systeme = d_es_processus;
                   return;
               }
   
             if (pthread_mutex_lock(&((*(*((struct_processus_fils *)              if (pthread_mutex_lock(&((*(*((struct_processus_fils *)
                     (*s_objet).objet)).thread).mutex)) != 0)                      (*s_objet).objet)).thread).mutex)) != 0)
             {              {
                   if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0)
                   {
                       (*s_etat_processus).erreur_systeme = d_es_processus;
                       return;
                   }
   
                 (*s_etat_processus).erreur_systeme = d_es_processus;                  (*s_etat_processus).erreur_systeme = d_es_processus;
                 return;                  return;
             }              }
Line 1121  liberation(struct_processus *s_etat_proc Line 1133  liberation(struct_processus *s_etat_proc
                     .nombre_references--;                      .nombre_references--;
   
             BUG((*(*((struct_processus_fils *) (*s_objet).objet)).thread)              BUG((*(*((struct_processus_fils *) (*s_objet).objet)).thread)
                     .nombre_references < 0, printf("(*(*((struct_processus_fils"                      .nombre_references < 0, uprintf(
                       "(*(*((struct_processus_fils"
                     " *) (*s_objet).objet)).thread).nombre_references = %d\n",                      " *) (*s_objet).objet)).thread).nombre_references = %d\n",
                     (int) (*(*((struct_processus_fils *) (*s_objet).objet))                      (int) (*(*((struct_processus_fils *) (*s_objet).objet))
                     .thread).nombre_references));                      .thread).nombre_references));
Line 1139  liberation(struct_processus *s_etat_proc Line 1152  liberation(struct_processus *s_etat_proc
             if (pthread_mutex_unlock(&((*(*((struct_processus_fils *)              if (pthread_mutex_unlock(&((*(*((struct_processus_fils *)
                     (*s_objet).objet)).thread).mutex)) != 0)                      (*s_objet).objet)).thread).mutex)) != 0)
             {              {
                   if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0)
                   {
                       (*s_etat_processus).erreur_systeme = d_es_processus;
                       return;
                   }
   
                 (*s_etat_processus).erreur_systeme = d_es_processus;                  (*s_etat_processus).erreur_systeme = d_es_processus;
                 return;                  return;
             }              }
Line 1150  liberation(struct_processus *s_etat_proc Line 1169  liberation(struct_processus *s_etat_proc
                 free((*((struct_processus_fils *) (*s_objet).objet)).thread);                  free((*((struct_processus_fils *) (*s_objet).objet)).thread);
             }              }
   
               if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0)
               {
                   (*s_etat_processus).erreur_systeme = d_es_processus;
                   return;
               }
   
             if (decrementation_atomique(s_objet) > 0)              if (decrementation_atomique(s_objet) > 0)
             {              {
                 return;                  return;
Line 2239  copie_objet(struct_processus *s_etat_pro Line 2264  copie_objet(struct_processus *s_etat_pro
   
         case PRC :          case PRC :
         {          {
               if (pthread_mutex_lock(&((*s_etat_processus).mutex)) != 0)
               {
                   return(NULL);
               }
   
             if (pthread_mutex_lock(&((*(*((struct_processus_fils *)              if (pthread_mutex_lock(&((*(*((struct_processus_fils *)
                     (*s_objet).objet)).thread).mutex)) != 0)                      (*s_objet).objet)).thread).mutex)) != 0)
             {              {
                   if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0)
                   {
                       return(NULL);
                   }
   
                 return(NULL);                  return(NULL);
             }              }
   
Line 2251  copie_objet(struct_processus *s_etat_pro Line 2286  copie_objet(struct_processus *s_etat_pro
             if (pthread_mutex_unlock(&((*(*((struct_processus_fils *)              if (pthread_mutex_unlock(&((*(*((struct_processus_fils *)
                     (*s_objet).objet)).thread).mutex)) != 0)                      (*s_objet).objet)).thread).mutex)) != 0)
             {              {
                   if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0)
                   {
                       return(NULL);
                   }
   
                 return(NULL);                  return(NULL);
             }              }
   
             if (type != 'O')              if (type != 'O')
             {              {
                 incrementation_atomique(s_objet);                  incrementation_atomique(s_objet);
   
                   if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0)
                   {
                       return(NULL);
                   }
   
                 return(s_objet);                  return(s_objet);
             }              }
   
             if ((s_nouvel_objet = allocation(s_etat_processus, PRC)) == NULL)              if ((s_nouvel_objet = allocation(s_etat_processus, PRC)) == NULL)
             {              {
                   if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0)
                   {
                       return(NULL);
                   }
   
                 return(NULL);                  return(NULL);
             }              }
   
             (*((struct_processus_fils *) (*s_nouvel_objet).objet)) =              (*((struct_processus_fils *) (*s_nouvel_objet).objet)) =
                     (*((struct_processus_fils *) (*s_objet).objet));                      (*((struct_processus_fils *) (*s_objet).objet));
   
               if (pthread_mutex_unlock(&((*s_etat_processus).mutex)) != 0)
               {
                   return(NULL);
               }
   
             break;              break;
         }          }
   
Line 3928  debug_memoire_verification() Line 3985  debug_memoire_verification()
     return;      return;
 }  }
   
 void  
 debug_memoire_verrouillage()  
 {  
     pthread_mutex_lock(&mutex_allocation);  
     return;  
 }  
   
 void  
 debug_memoire_deverrouillage()  
 {  
     pthread_mutex_unlock(&mutex_allocation);  
     return;  
 }  
   
 pid_t  pid_t
 debug_fork()  debug_fork()
 {  {

Removed from v.1.21  
changed lines
  Added in v.1.24


CVSweb interface <joel.bertrand@systella.fr>