Diff for /rpl/src/allocateur.c between versions 1.4 and 1.20

version 1.4, 2015/01/27 15:41:25 version 1.20, 2018/05/30 09:27:30
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.20    RPL/2 (R) version 4.1.29
   Copyright (C) 1989-2015 Dr. BERTRAND Joël    Copyright (C) 1989-2018 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 186  initialisation_allocateur_buffer(struct_ Line 186  initialisation_allocateur_buffer(struct_
         {          {
             longueur_tailles++;              longueur_tailles++;
         }          }
       }
   
         if (((*s_etat_processus).cache_buffer = sys_malloc(((size_t)      if (((*s_etat_processus).cache_buffer = sys_malloc(((size_t)
                 longueur_tailles) * sizeof(unsigned char **))) == NULL)              longueur_tailles) * sizeof(unsigned char **))) == NULL)
         {      {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;          (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
             return;          return;
         }      }
   
         if (((*s_etat_processus).pointeur_cache_buffer = sys_malloc(((size_t)      if (((*s_etat_processus).pointeur_cache_buffer = sys_malloc(((size_t)
                 longueur_tailles) * sizeof(int))) == NULL)              longueur_tailles) * sizeof(int))) == NULL)
         {      {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;          (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
             return;          return;
         }  
     }      }
   
     for(i = 0; i < longueur_tailles; i++)      for(i = 0; i < longueur_tailles; i++)
Line 287  allocation_buffer(struct_processus *s_et Line 287  allocation_buffer(struct_processus *s_et
   
     if (longueur == 0)      if (longueur == 0)
     {      {
         (*s_buffer).buffer = NULL;          if (((*s_buffer).buffer = sys_malloc(sizeof(struct_buffer *))) == NULL)
           {
               (*s_etat_processus).erreur_systeme =
                       d_es_allocation_memoire;
               return(NULL);
           }
   
         classe = -1;          classe = -1;
     }      }
     else      else
Line 405  rpl_malloc(struct_processus *s_etat_proc Line 411  rpl_malloc(struct_processus *s_etat_proc
   
     void                        *pointeur;      void                        *pointeur;
   
       if (pthread_mutex_lock(&((*s_etat_processus).mutex_allocation_buffer)) != 0)
       {
           (*s_etat_processus).erreur_systeme = d_es_processus;
           return(NULL);
       }
   
     if ((s_buffer = allocation_buffer(s_etat_processus, s)) == NULL)      if ((s_buffer = allocation_buffer(s_etat_processus, s)) == NULL)
     {      {
           pthread_mutex_unlock(&((*s_etat_processus).mutex_allocation_buffer));
   
         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;          (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
         return(NULL);          return(NULL);
     }      }
   
     pointeur = (*s_buffer).buffer + sizeof(struct_buffer *);      pointeur = (*s_buffer).buffer + sizeof(struct_buffer *);
   
       if (pthread_mutex_unlock(&((*s_etat_processus).mutex_allocation_buffer))
               != 0)
       {
           (*s_etat_processus).erreur_systeme = d_es_processus;
           return(NULL);
       }
   
     return(pointeur);      return(pointeur);
 }  }
   
Line 440  rpl_realloc(struct_processus *s_etat_pro Line 462  rpl_realloc(struct_processus *s_etat_pro
   
     void                        *pointeur;      void                        *pointeur;
   
       if (ptr == NULL)
       {
           return(rpl_malloc(s_etat_processus, s));
       }
   
       if (pthread_mutex_lock(&((*s_etat_processus).mutex_allocation_buffer)) != 0)
       {
           (*s_etat_processus).erreur_systeme = d_es_processus;
           return(NULL);
       }
   
     if ((s_nouveau_buffer = allocation_buffer(s_etat_processus, s)) == NULL)      if ((s_nouveau_buffer = allocation_buffer(s_etat_processus, s)) == NULL)
     {      {
           pthread_mutex_unlock(&((*s_etat_processus).mutex_allocation_buffer));
   
         (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;          (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
         return(NULL);          return(NULL);
     }      }
Line 458  rpl_realloc(struct_processus *s_etat_pro Line 493  rpl_realloc(struct_processus *s_etat_pro
     liberation_buffer(s_etat_processus, s_ancien_buffer);      liberation_buffer(s_etat_processus, s_ancien_buffer);
     pointeur = (*s_nouveau_buffer).buffer + sizeof(struct_buffer *);      pointeur = (*s_nouveau_buffer).buffer + sizeof(struct_buffer *);
   
       if (pthread_mutex_unlock(&((*s_etat_processus).mutex_allocation_buffer))
               != 0)
       {
           (*s_etat_processus).erreur_systeme = d_es_processus;
           return(NULL);
       }
   
     return(pointeur);      return(pointeur);
 }  }
   
Line 485  rpl_free(struct_processus *s_etat_proces Line 527  rpl_free(struct_processus *s_etat_proces
     }      }
   
     s_buffer = (*((struct_buffer **) (ptr - sizeof(struct_buffer *))));      s_buffer = (*((struct_buffer **) (ptr - sizeof(struct_buffer *))));
   
       if (pthread_mutex_lock(&((*s_etat_processus).mutex_allocation_buffer)) != 0)
       {
           (*s_etat_processus).erreur_systeme = d_es_processus;
           return;
       }
   
     liberation_buffer(s_etat_processus, s_buffer);      liberation_buffer(s_etat_processus, s_buffer);
   
       if (pthread_mutex_unlock(&((*s_etat_processus).mutex_allocation_buffer))
               != 0)
       {
           (*s_etat_processus).erreur_systeme = d_es_processus;
           return;
       }
   
     return;      return;
 }  }
   
Line 505  sys_free(void *ptr) Line 562  sys_free(void *ptr)
     return;      return;
 }  }
   
   void *
   sys_realloc(void *ptr, size_t s)
   {
       return(realloc(ptr, s));
   }
   
 // vim: ts=4  // vim: ts=4

Removed from v.1.4  
changed lines
  Added in v.1.20


CVSweb interface <joel.bertrand@systella.fr>