Diff for /rpl/src/allocateur.c between versions 1.5 and 1.29

version 1.5, 2015/01/30 07:53:14 version 1.29, 2024/01/09 07:33:45
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.20    RPL/2 (R) version 4.1.35
   Copyright (C) 1989-2015 Dr. BERTRAND Joël    Copyright (C) 1989-2024 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 240  liberation_allocateur_buffer(struct_proc Line 240  liberation_allocateur_buffer(struct_proc
   
     for(i = 0; i < longueur_tailles; i++)      for(i = 0; i < longueur_tailles; i++)
     {      {
 uprintf("L %d ************* %d ********************\n", getpid(), i);  
         for(j = 0; j < (*s_etat_processus).pointeur_cache_buffer[i]; j++)          for(j = 0; j < (*s_etat_processus).pointeur_cache_buffer[i]; j++)
         {          {
 uprintf("L %d %p\n", getpid(), (*s_etat_processus).cache_buffer[i][j]);  
             sys_free((*s_etat_processus).cache_buffer[i][j]);              sys_free((*s_etat_processus).cache_buffer[i][j]);
         }          }
   
Line 289  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 306  allocation_buffer(struct_processus *s_et Line 310  allocation_buffer(struct_processus *s_et
             {              {
                 (*s_buffer).buffer = (*s_etat_processus).cache_buffer[classe]                  (*s_buffer).buffer = (*s_etat_processus).cache_buffer[classe]
                         [--(*s_etat_processus).pointeur_cache_buffer[classe]];                          [--(*s_etat_processus).pointeur_cache_buffer[classe]];
 uprintf("Cachée : %d %p\n", getpid(), (*s_buffer).buffer);  
             }              }
             else              else
             {              {
Line 318  uprintf("Cachée : %d %p\n", getpid(), (* Line 321  uprintf("Cachée : %d %p\n", getpid(), (*
                             d_es_allocation_memoire;                              d_es_allocation_memoire;
                     return(NULL);                      return(NULL);
                 }                  }
 uprintf("Alloué : %d %p\n", getpid(), (*s_buffer).buffer);  
             }              }
         }          }
         else          else
Line 329  uprintf("Alloué : %d %p\n", getpid(), (* Line 331  uprintf("Alloué : %d %p\n", getpid(), (*
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                 return(NULL);                  return(NULL);
             }              }
 uprintf("Alloué (non cachée) : %d %p\n", getpid(), (*s_buffer).buffer);  
         }          }
     }      }
   
Line 367  liberation_buffer(struct_processus *s_et Line 368  liberation_buffer(struct_processus *s_et
         if ((*s_buffer).buffer != NULL)          if ((*s_buffer).buffer != NULL)
         {          {
             sys_free((*s_buffer).buffer);              sys_free((*s_buffer).buffer);
 uprintf("Libération (trop grand) : %d %p\n", getpid(), (*s_buffer).buffer);  
         }          }
     }      }
     else      else
Line 378  uprintf("Libération (trop grand) : %d %p Line 378  uprintf("Libération (trop grand) : %d %p
             (*s_etat_processus).cache_buffer[(*s_buffer).classe]              (*s_etat_processus).cache_buffer[(*s_buffer).classe]
                     [(*s_etat_processus).pointeur_cache_buffer                      [(*s_etat_processus).pointeur_cache_buffer
                     [(*s_buffer).classe]++] = (*s_buffer).buffer;                      [(*s_buffer).classe]++] = (*s_buffer).buffer;
 uprintf("Mise en cache : %d %p\n", getpid(), (*s_buffer).buffer);  
         }          }
         else          else
         {          {
             sys_free((*s_buffer).buffer);              sys_free((*s_buffer).buffer);
 uprintf("Libération (cache plein) : %d %p\n", getpid(), (*s_buffer).buffer);  
         }          }
     }      }
   
Line 464  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)      if (pthread_mutex_lock(&((*s_etat_processus).mutex_allocation_buffer)) != 0)
     {      {
         (*s_etat_processus).erreur_systeme = d_es_processus;          (*s_etat_processus).erreur_systeme = d_es_processus;
Line 559  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.5  
changed lines
  Added in v.1.29


CVSweb interface <joel.bertrand@systella.fr>