diff options
Diffstat (limited to 'libc/stdlib/malloc/free.c')
| -rw-r--r-- | libc/stdlib/malloc/free.c | 35 | 
1 files changed, 35 insertions, 0 deletions
diff --git a/libc/stdlib/malloc/free.c b/libc/stdlib/malloc/free.c new file mode 100644 index 000000000..5d5b8f033 --- /dev/null +++ b/libc/stdlib/malloc/free.c @@ -0,0 +1,35 @@ +/* + * libc/stdlib/malloc-zarg/free.c -- free function + * + *  Copyright (C) 2002  NEC Corporation + *  Copyright (C) 2002  Miles Bader <miles@gnu.org> + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License.  See the file COPYING.LIB in the main + * directory of this archive for more details. + *  + * Written by Miles Bader <miles@gnu.org> + */ + +#include <stdlib.h> +#include <sys/mman.h> + +#include "malloc.h" +#include "heap.h" + + +void free (void *mem) +{ +  size_t size; + +  mem = (size_t *)mem - 1; +  size = *(size_t *)mem; + +  MALLOC_DEBUG ("free: 0x%lx (base = 0x%lx, total_size = %d)\n", +		(long)mem + sizeof (size_t), (long)mem, size); + +  if (size >= MALLOC_MMAP_THRESHOLD) +    munmap (mem, size); +  else +    __heap_free (&__malloc_heap, mem, size); +}  | 
