Diff for /rpl/src/gestion_objets.c between versions 1.120 and 1.132

version 1.120, 2015/02/19 11:01:20 version 1.132, 2017/06/29 12:33:34
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.21    RPL/2 (R) version 4.1.27
   Copyright (C) 1989-2015 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 343  allocation(struct_processus *s_etat_proc Line 343  allocation(struct_processus *s_etat_proc
     }      }
   
     (*s_objet).type = type;      (*s_objet).type = type;
       (*s_objet).extension_type = 0;
       (*s_objet).descripteur_bibliotheque = NULL;
   
     switch(type)      switch(type)
     {      {
Line 434  allocation(struct_processus *s_etat_proc Line 436  allocation(struct_processus *s_etat_proc
             break;              break;
         }          }
   
           case EXT :
           {
               // Aucune allocation
               break;
           }
   
         case FCT :          case FCT :
         {          {
             if ((*s_etat_processus).pointeur_fct > 0)              if ((*s_etat_processus).pointeur_fct > 0)
Line 950  liberation(struct_processus *s_etat_proc Line 958  liberation(struct_processus *s_etat_proc
             break;              break;
         }          }
   
           case EXT :
           {
               if (decrementation_atomique(s_objet) > 0)
               {
                   return;
               }
   
               BUG((*s_objet).descripteur_bibliotheque == NULL,
                       pthread_mutex_unlock(&((*s_objet).mutex)),
                       printf("(*s_objet).liberation==NULL\n"));
               break;
           }
   
         case FCH :          case FCH :
         {          {
             if (decrementation_atomique(s_objet) > 0)              if (decrementation_atomique(s_objet) > 0)
Line 2434  copie_objet(struct_processus *s_etat_pro Line 2455  copie_objet(struct_processus *s_etat_pro
                     (*((struct_socket *) ((*s_objet).objet))).pid;                      (*((struct_socket *) ((*s_objet).objet))).pid;
             (*((struct_socket *) ((*s_nouvel_objet).objet))).tid =              (*((struct_socket *) ((*s_nouvel_objet).objet))).tid =
                     (*((struct_socket *) ((*s_objet).objet))).tid;                      (*((struct_socket *) ((*s_objet).objet))).tid;
               (*((struct_socket *) ((*s_nouvel_objet).objet))).options =
                       (*((struct_socket *) ((*s_objet).objet))).options;
               (*((struct_socket *) ((*s_nouvel_objet).objet))).priorite =
                       (*((struct_socket *) ((*s_objet).objet))).priorite;
               (*((struct_socket *) ((*s_nouvel_objet).objet))).buffer_reception =
                       (*((struct_socket *) ((*s_objet).objet))).buffer_reception;
               (*((struct_socket *) ((*s_nouvel_objet).objet))).buffer_emission =
                       (*((struct_socket *) ((*s_objet).objet))).buffer_emission;
               (*((struct_socket *) ((*s_nouvel_objet).objet))).timeout_reception =
                       (*((struct_socket *) ((*s_objet).objet))).timeout_reception;
               (*((struct_socket *) ((*s_nouvel_objet).objet))).timeout_emission =
                       (*((struct_socket *) ((*s_objet).objet))).timeout_emission;
   
             if (((*((struct_socket *) ((*s_nouvel_objet).objet))).format =              if (((*((struct_socket *) ((*s_nouvel_objet).objet))).format =
                     copie_objet(s_etat_processus, (*((struct_socket *)                      copie_objet(s_etat_processus, (*((struct_socket *)
Line 2846  copie_etat_processus(struct_processus *s Line 2879  copie_etat_processus(struct_processus *s
     if ((s_nouvel_etat_processus = sys_malloc(sizeof(struct_processus)))      if ((s_nouvel_etat_processus = sys_malloc(sizeof(struct_processus)))
             == NULL)              == NULL)
     {      {
           if (pthread_mutex_unlock(&((*s_etat_processus)
                   .mutex_pile_processus)) != 0)
           {
               (*s_etat_processus).erreur_systeme = d_es_processus;
               return(NULL);
           }
   
         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;          (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
         return(NULL);          return(NULL);
     }      }
Line 3593  copie_etat_processus(struct_processus *s Line 3633  copie_etat_processus(struct_processus *s
             &attributs_mutex);              &attributs_mutex);
     pthread_mutexattr_destroy(&attributs_mutex);      pthread_mutexattr_destroy(&attributs_mutex);
   
       pthread_mutexattr_init(&attributs_mutex);
       pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL);
       pthread_mutex_init(&((*s_nouvel_etat_processus).protection_liste_mutexes),
               &attributs_mutex);
       pthread_mutexattr_destroy(&attributs_mutex);
   
     if (pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus)) != 0)      if (pthread_mutex_unlock(&((*s_etat_processus).mutex_pile_processus)) != 0)
     {      {
         (*s_etat_processus).erreur_systeme = d_es_processus;          (*s_etat_processus).erreur_systeme = d_es_processus;

Removed from v.1.120  
changed lines
  Added in v.1.132


CVSweb interface <joel.bertrand@systella.fr>