--- rpl/src/allocateur.c 2015/01/30 07:53:14 1.5 +++ rpl/src/allocateur.c 2018/12/24 15:54:56 1.21 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.20 - Copyright (C) 1989-2015 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.30 + Copyright (C) 1989-2018 Dr. BERTRAND Joël This file is part of RPL/2. @@ -186,20 +186,20 @@ initialisation_allocateur_buffer(struct_ { longueur_tailles++; } + } - if (((*s_etat_processus).cache_buffer = sys_malloc(((size_t) - longueur_tailles) * sizeof(unsigned char **))) == NULL) - { - (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; - return; - } + if (((*s_etat_processus).cache_buffer = sys_malloc(((size_t) + longueur_tailles) * sizeof(unsigned char **))) == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return; + } - if (((*s_etat_processus).pointeur_cache_buffer = sys_malloc(((size_t) - longueur_tailles) * sizeof(int))) == NULL) - { - (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; - return; - } + if (((*s_etat_processus).pointeur_cache_buffer = sys_malloc(((size_t) + longueur_tailles) * sizeof(int))) == NULL) + { + (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; + return; } for(i = 0; i < longueur_tailles; i++) @@ -240,10 +240,8 @@ liberation_allocateur_buffer(struct_proc 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++) { -uprintf("L %d %p\n", getpid(), (*s_etat_processus).cache_buffer[i][j]); sys_free((*s_etat_processus).cache_buffer[i][j]); } @@ -289,7 +287,13 @@ allocation_buffer(struct_processus *s_et 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; } else @@ -306,7 +310,6 @@ allocation_buffer(struct_processus *s_et { (*s_buffer).buffer = (*s_etat_processus).cache_buffer[classe] [--(*s_etat_processus).pointeur_cache_buffer[classe]]; -uprintf("Cachée : %d %p\n", getpid(), (*s_buffer).buffer); } else { @@ -318,7 +321,6 @@ uprintf("Cachée : %d %p\n", getpid(), (* d_es_allocation_memoire; return(NULL); } -uprintf("Alloué : %d %p\n", getpid(), (*s_buffer).buffer); } } else @@ -329,7 +331,6 @@ uprintf("Alloué : %d %p\n", getpid(), (* (*s_etat_processus).erreur_systeme = d_es_allocation_memoire; return(NULL); } -uprintf("Alloué (non cachée) : %d %p\n", getpid(), (*s_buffer).buffer); } } @@ -367,7 +368,6 @@ liberation_buffer(struct_processus *s_et if ((*s_buffer).buffer != NULL) { sys_free((*s_buffer).buffer); -uprintf("Libération (trop grand) : %d %p\n", getpid(), (*s_buffer).buffer); } } else @@ -378,12 +378,10 @@ uprintf("Libération (trop grand) : %d %p (*s_etat_processus).cache_buffer[(*s_buffer).classe] [(*s_etat_processus).pointeur_cache_buffer [(*s_buffer).classe]++] = (*s_buffer).buffer; -uprintf("Mise en cache : %d %p\n", getpid(), (*s_buffer).buffer); } else { sys_free((*s_buffer).buffer); -uprintf("Libération (cache plein) : %d %p\n", getpid(), (*s_buffer).buffer); } } @@ -464,6 +462,11 @@ rpl_realloc(struct_processus *s_etat_pro 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; @@ -559,4 +562,10 @@ sys_free(void *ptr) return; } +void * +sys_realloc(void *ptr, size_t s) +{ + return(realloc(ptr, s)); +} + // vim: ts=4