From fa8d436c87f156d18208df3819fecee9fc1dbd9e Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 29 Jan 2002 07:54:51 +0000 Subject: Update. 2002-01-18 Wolfram Gloger * malloc/malloc.c: Rewrite, adapted from Doug Lea's malloc-2.7.0.c. * malloc/malloc.h: Likewise. * malloc/arena.c: New file. * malloc/hooks.c: New file. * malloc/tst-mallocstate.c: New file. * malloc/Makefile: Add new testcase tst-mallocstate. Add arena.c and hooks.c to distribute. Fix commented CPPFLAGS. 2002-01-28 Ulrich Drepper * stdlib/msort.c: Remove last patch. The optimization violates the same rule which qsort.c had problems with. 2002-01-27 Paul Eggert * stdlib/qsort.c (_quicksort): Do not apply the comparison function to a pivot element that lies outside the array to be sorted, as ISO C99 requires that the comparison function be called only with addresses of array elements [PR libc/2880]. --- malloc/malloc.h | 53 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 22 deletions(-) (limited to 'malloc/malloc.h') diff --git a/malloc/malloc.h b/malloc/malloc.h index 8accd64699..aaa95b3a2c 100644 --- a/malloc/malloc.h +++ b/malloc/malloc.h @@ -20,24 +20,26 @@ #ifndef _MALLOC_H #define _MALLOC_H 1 +#ifdef _LIBC #include +#endif /* - `ptmalloc', a malloc implementation for multiple threads without - lock contention, by Wolfram Gloger . - See the files `ptmalloc.c' or `COPYRIGHT' for copying conditions. + $Id$ + `ptmalloc2', a malloc implementation for multiple threads without + lock contention, by Wolfram Gloger . - VERSION 2.6.4-pt Wed Dec 4 00:35:54 MET 1996 + VERSION 2.7.0 - This work is mainly derived from malloc-2.6.4 by Doug Lea + This work is mainly derived from malloc-2.7.0 by Doug Lea , which is available from: - ftp://g.oswego.edu/pub/misc/malloc.c + ftp://gee.cs.oswego.edu/pub/misc/malloc.c This trimmed-down header file only provides function prototypes and the exported data structures. For more detailed function descriptions and compile-time options, see the source file - `ptmalloc.c'. + `malloc.c'. */ #if defined(__STDC__) || defined (__cplusplus) @@ -112,11 +114,6 @@ extern "C" { #endif extern int __malloc_initialized; -/* Initialize global configuration. Not needed with GNU libc. */ -#ifndef __GLIBC__ -extern void ptmalloc_init __MALLOC_P ((void)); -#endif - /* Allocate SIZE bytes of memory. */ extern __malloc_ptr_t malloc __MALLOC_P ((size_t __size)) __attribute_malloc__; @@ -156,16 +153,17 @@ extern __malloc_ptr_t __default_morecore __MALLOC_P ((ptrdiff_t __size)) __attribute_malloc__; /* SVID2/XPG mallinfo structure */ + struct mallinfo { - int arena; /* total space allocated from system */ - int ordblks; /* number of non-inuse chunks */ - int smblks; /* unused -- always zero */ + int arena; /* non-mmapped space allocated from system */ + int ordblks; /* number of free chunks */ + int smblks; /* number of fastbin blocks */ int hblks; /* number of mmapped regions */ - int hblkhd; /* total space in mmapped regions */ - int usmblks; /* unused -- always zero */ - int fsmblks; /* unused -- always zero */ + int hblkhd; /* space in mmapped regions */ + int usmblks; /* maximum total allocated space */ + int fsmblks; /* space available in freed fastbin blocks */ int uordblks; /* total allocated space */ - int fordblks; /* total non-inuse space */ + int fordblks; /* total free space */ int keepcost; /* top-most, releasable (via malloc_trim) space */ }; @@ -174,7 +172,7 @@ extern struct mallinfo mallinfo __MALLOC_P ((void)); /* SVID2/XPG mallopt options */ #ifndef M_MXFAST -# define M_MXFAST 1 /* UNUSED in this malloc */ +# define M_MXFAST 1 /* maximum request size for "fastbins" */ #endif #ifndef M_NLBLKS # define M_NLBLKS 2 /* UNUSED in this malloc */ @@ -214,7 +212,6 @@ extern __malloc_ptr_t malloc_get_state __MALLOC_P ((void)); malloc_get_state(). */ extern int malloc_set_state __MALLOC_P ((__malloc_ptr_t __ptr)); -#if defined __GLIBC__ || defined MALLOC_HOOKS /* Called once when malloc is initialized; redefining this variable in the application provides the preferred way to set up the hook pointers. */ @@ -234,7 +231,19 @@ extern void (*__after_morecore_hook) __MALLOC_PMT ((void)); /* Activate a standard set of debugging hooks. */ extern void __malloc_check_init __MALLOC_P ((void)); -#endif + +/* Internal routines, operating on "arenas". */ +struct malloc_state; +typedef struct malloc_state *mstate; + +extern mstate _int_new_arena __MALLOC_P ((size_t __ini_size)); +extern __malloc_ptr_t _int_malloc __MALLOC_P ((mstate __m, size_t __size)); +extern void _int_free __MALLOC_P ((mstate __m, __malloc_ptr_t __ptr)); +extern __malloc_ptr_t _int_realloc __MALLOC_P ((mstate __m, + __malloc_ptr_t __ptr, + size_t __size)); +extern __malloc_ptr_t _int_memalign __MALLOC_P ((mstate __m, size_t __alignment, + size_t __size)); #ifdef __cplusplus }; /* end of extern "C" */ -- cgit v1.2.3