Stackdb
Stackdb is a stackable, multi-target and -level source debugger and memory forensics library.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Data Structures | Macros | Typedefs | Functions
dlmalloc.c File Reference
#include <sys/types.h>
#include <stdio.h>
#include <errno.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <unistd.h>
#include <sched.h>
#include <pthread.h>
#include <sys/param.h>
Include dependency graph for dlmalloc.c:

Go to the source code of this file.

Data Structures

struct  mallinfo
 
struct  malloc_chunk
 
struct  malloc_tree_chunk
 
struct  malloc_segment
 
struct  malloc_state
 
struct  malloc_params
 

Macros

#define DLMALLOC_VERSION   20806
 
#define DLMALLOC_EXPORT   extern
 
#define MAX_SIZE_T   (~(size_t)0)
 
#define USE_LOCKS
 
#define USE_SPIN_LOCKS   0
 
#define ONLY_MSPACES   0
 
#define MSPACES   0
 
#define MALLOC_ALIGNMENT   ((size_t)(2 * sizeof(void *)))
 
#define FOOTERS   0
 
#define ABORT   abort()
 
#define ABORT_ON_ASSERT_FAILURE   1
 
#define PROCEED_ON_ERROR   0
 
#define INSECURE   0
 
#define MALLOC_INSPECT_ALL   0
 
#define HAVE_MMAP   1
 
#define MMAP_CLEARS   1
 
#define HAVE_MREMAP   0
 
#define MALLOC_FAILURE_ACTION   errno = ENOMEM;
 
#define HAVE_MORECORE   1
 
#define MORECORE_DEFAULT   sbrk
 
#define MORECORE_CONTIGUOUS   1
 
#define DEFAULT_GRANULARITY   (0) /* 0 means to compute in init_mparams */
 
#define DEFAULT_TRIM_THRESHOLD   ((size_t)2U * (size_t)1024U * (size_t)1024U)
 
#define DEFAULT_MMAP_THRESHOLD   ((size_t)256U * (size_t)1024U)
 
#define MAX_RELEASE_CHECK_RATE   4095
 
#define USE_BUILTIN_FFS   0
 
#define USE_DEV_RANDOM   0
 
#define NO_MALLINFO   0
 
#define MALLINFO_FIELD_TYPE   size_t
 
#define NO_MALLOC_STATS   0
 
#define NO_SEGMENT_TRAVERSAL   0
 
#define M_TRIM_THRESHOLD   (-1)
 
#define M_GRANULARITY   (-2)
 
#define M_MMAP_THRESHOLD   (-3)
 
#define _STRUCT_MALLINFO
 
#define STRUCT_MALLINFO_DECLARED   1
 
#define NOINLINE
 
#define FORCEINLINE
 
#define dlcalloc   calloc
 
#define dlfree   free
 
#define dlmalloc   malloc
 
#define dlmemalign   memalign
 
#define dlposix_memalign   posix_memalign
 
#define dlrealloc   realloc
 
#define dlrealloc_in_place   realloc_in_place
 
#define dlvalloc   valloc
 
#define dlpvalloc   pvalloc
 
#define dlmallinfo   mallinfo
 
#define dlmallopt   mallopt
 
#define dlmalloc_trim   malloc_trim
 
#define dlmalloc_stats   malloc_stats
 
#define dlmalloc_usable_size   malloc_usable_size
 
#define dlmalloc_footprint   malloc_footprint
 
#define dlmalloc_max_footprint   malloc_max_footprint
 
#define dlmalloc_footprint_limit   malloc_footprint_limit
 
#define dlmalloc_set_footprint_limit   malloc_set_footprint_limit
 
#define dlmalloc_inspect_all   malloc_inspect_all
 
#define dlindependent_calloc   independent_calloc
 
#define dlindependent_comalloc   independent_comalloc
 
#define dlbulk_free   bulk_free
 
#define assert(x)
 
#define DEBUG   0
 
#define LOCK_AT_FORK   0
 
#define malloc_getpagesize   ((size_t)4096U)
 
#define SIZE_T_SIZE   (sizeof(size_t))
 
#define SIZE_T_BITSIZE   (sizeof(size_t) << 3)
 
#define SIZE_T_ZERO   ((size_t)0)
 
#define SIZE_T_ONE   ((size_t)1)
 
#define SIZE_T_TWO   ((size_t)2)
 
#define SIZE_T_FOUR   ((size_t)4)
 
#define TWO_SIZE_T_SIZES   (SIZE_T_SIZE<<1)
 
#define FOUR_SIZE_T_SIZES   (SIZE_T_SIZE<<2)
 
#define SIX_SIZE_T_SIZES   (FOUR_SIZE_T_SIZES+TWO_SIZE_T_SIZES)
 
#define HALF_MAX_SIZE_T   (MAX_SIZE_T / 2U)
 
#define CHUNK_ALIGN_MASK   (MALLOC_ALIGNMENT - SIZE_T_ONE)
 
#define is_aligned(A)   (((size_t)((A)) & (CHUNK_ALIGN_MASK)) == 0)
 
#define align_offset(A)
 
#define MFAIL   ((void*)(MAX_SIZE_T))
 
#define CMFAIL   ((char*)(MFAIL)) /* defined for convenience */
 
#define MUNMAP_DEFAULT(a, s)   munmap((a), (s))
 
#define MMAP_PROT   (PROT_READ|PROT_WRITE)
 
#define MMAP_FLAGS   (MAP_PRIVATE)
 
#define MMAP_DEFAULT(s)
 
#define DIRECT_MMAP_DEFAULT(s)   MMAP_DEFAULT(s)
 
#define CALL_MORECORE(S)   MORECORE_DEFAULT(S)
 
#define USE_MMAP_BIT   (SIZE_T_ONE)
 
#define CALL_MMAP(s)   MMAP_DEFAULT(s)
 
#define CALL_MUNMAP(a, s)   MUNMAP_DEFAULT((a), (s))
 
#define CALL_DIRECT_MMAP(s)   DIRECT_MMAP_DEFAULT(s)
 
#define CALL_MREMAP(addr, osz, nsz, mv)   MFAIL
 
#define USE_NONCONTIGUOUS_BIT   (4U)
 
#define EXTERN_BIT   (8U)
 
#define MLOCK_T   pthread_mutex_t
 
#define ACQUIRE_LOCK(lk)   pthread_mutex_lock(lk)
 
#define RELEASE_LOCK(lk)   pthread_mutex_unlock(lk)
 
#define TRY_LOCK(lk)   (!pthread_mutex_trylock(lk))
 
#define INITIAL_LOCK(lk)   pthread_init_lock(lk)
 
#define DESTROY_LOCK(lk)   pthread_mutex_destroy(lk)
 
#define USE_LOCK_BIT   (2U)
 
#define ACQUIRE_MALLOC_GLOBAL_LOCK()   ACQUIRE_LOCK(&malloc_global_mutex);
 
#define RELEASE_MALLOC_GLOBAL_LOCK()   RELEASE_LOCK(&malloc_global_mutex);
 
#define MCHUNK_SIZE   (sizeof(mchunk))
 
#define CHUNK_OVERHEAD   (SIZE_T_SIZE)
 
#define MMAP_CHUNK_OVERHEAD   (TWO_SIZE_T_SIZES)
 
#define MMAP_FOOT_PAD   (FOUR_SIZE_T_SIZES)
 
#define MIN_CHUNK_SIZE   ((MCHUNK_SIZE + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK)
 
#define chunk2mem(p)   ((void*)((char*)(p) + TWO_SIZE_T_SIZES))
 
#define mem2chunk(mem)   ((mchunkptr)((char*)(mem) - TWO_SIZE_T_SIZES))
 
#define align_as_chunk(A)   (mchunkptr)((A) + align_offset(chunk2mem(A)))
 
#define MAX_REQUEST   ((-MIN_CHUNK_SIZE) << 2)
 
#define MIN_REQUEST   (MIN_CHUNK_SIZE - CHUNK_OVERHEAD - SIZE_T_ONE)
 
#define pad_request(req)   (((req) + CHUNK_OVERHEAD + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK)
 
#define request2size(req)   (((req) < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(req))
 
#define PINUSE_BIT   (SIZE_T_ONE)
 
#define CINUSE_BIT   (SIZE_T_TWO)
 
#define FLAG4_BIT   (SIZE_T_FOUR)
 
#define INUSE_BITS   (PINUSE_BIT|CINUSE_BIT)
 
#define FLAG_BITS   (PINUSE_BIT|CINUSE_BIT|FLAG4_BIT)
 
#define FENCEPOST_HEAD   (INUSE_BITS|SIZE_T_SIZE)
 
#define cinuse(p)   ((p)->head & CINUSE_BIT)
 
#define pinuse(p)   ((p)->head & PINUSE_BIT)
 
#define flag4inuse(p)   ((p)->head & FLAG4_BIT)
 
#define is_inuse(p)   (((p)->head & INUSE_BITS) != PINUSE_BIT)
 
#define is_mmapped(p)   (((p)->head & INUSE_BITS) == 0)
 
#define chunksize(p)   ((p)->head & ~(FLAG_BITS))
 
#define clear_pinuse(p)   ((p)->head &= ~PINUSE_BIT)
 
#define set_flag4(p)   ((p)->head |= FLAG4_BIT)
 
#define clear_flag4(p)   ((p)->head &= ~FLAG4_BIT)
 
#define chunk_plus_offset(p, s)   ((mchunkptr)(((char*)(p)) + (s)))
 
#define chunk_minus_offset(p, s)   ((mchunkptr)(((char*)(p)) - (s)))
 
#define next_chunk(p)   ((mchunkptr)( ((char*)(p)) + ((p)->head & ~FLAG_BITS)))
 
#define prev_chunk(p)   ((mchunkptr)( ((char*)(p)) - ((p)->prev_foot) ))
 
#define next_pinuse(p)   ((next_chunk(p)->head) & PINUSE_BIT)
 
#define get_foot(p, s)   (((mchunkptr)((char*)(p) + (s)))->prev_foot)
 
#define set_foot(p, s)   (((mchunkptr)((char*)(p) + (s)))->prev_foot = (s))
 
#define set_size_and_pinuse_of_free_chunk(p, s)   ((p)->head = (s|PINUSE_BIT), set_foot(p, s))
 
#define set_free_with_pinuse(p, s, n)   (clear_pinuse(n), set_size_and_pinuse_of_free_chunk(p, s))
 
#define overhead_for(p)   (is_mmapped(p)? MMAP_CHUNK_OVERHEAD : CHUNK_OVERHEAD)
 
#define calloc_must_clear(p)   (!is_mmapped(p))
 
#define leftmost_child(t)   ((t)->child[0] != 0? (t)->child[0] : (t)->child[1])
 
#define is_mmapped_segment(S)   ((S)->sflags & USE_MMAP_BIT)
 
#define is_extern_segment(S)   ((S)->sflags & EXTERN_BIT)
 
#define NSMALLBINS   (32U)
 
#define NTREEBINS   (32U)
 
#define SMALLBIN_SHIFT   (3U)
 
#define SMALLBIN_WIDTH   (SIZE_T_ONE << SMALLBIN_SHIFT)
 
#define TREEBIN_SHIFT   (8U)
 
#define MIN_LARGE_SIZE   (SIZE_T_ONE << TREEBIN_SHIFT)
 
#define MAX_SMALL_SIZE   (MIN_LARGE_SIZE - SIZE_T_ONE)
 
#define MAX_SMALL_REQUEST   (MAX_SMALL_SIZE - CHUNK_ALIGN_MASK - CHUNK_OVERHEAD)
 
#define ensure_initialization()   (void)(mparams.magic != 0 || init_mparams())
 
#define gm   (&_gm_)
 
#define is_global(M)   ((M) == &_gm_)
 
#define is_initialized(M)   ((M)->top != 0)
 
#define use_lock(M)   ((M)->mflags & USE_LOCK_BIT)
 
#define enable_lock(M)   ((M)->mflags |= USE_LOCK_BIT)
 
#define disable_lock(M)   ((M)->mflags &= ~USE_LOCK_BIT)
 
#define use_mmap(M)   ((M)->mflags & USE_MMAP_BIT)
 
#define enable_mmap(M)   ((M)->mflags |= USE_MMAP_BIT)
 
#define disable_mmap(M)   ((M)->mflags &= ~USE_MMAP_BIT)
 
#define use_noncontiguous(M)   ((M)->mflags & USE_NONCONTIGUOUS_BIT)
 
#define disable_contiguous(M)   ((M)->mflags |= USE_NONCONTIGUOUS_BIT)
 
#define set_lock(M, L)
 
#define page_align(S)   (((S) + (mparams.page_size - SIZE_T_ONE)) & ~(mparams.page_size - SIZE_T_ONE))
 
#define granularity_align(S)
 
#define mmap_align(S)   page_align(S)
 
#define SYS_ALLOC_PADDING   (TOP_FOOT_SIZE + MALLOC_ALIGNMENT)
 
#define is_page_aligned(S)   (((size_t)(S) & (mparams.page_size - SIZE_T_ONE)) == 0)
 
#define is_granularity_aligned(S)   (((size_t)(S) & (mparams.granularity - SIZE_T_ONE)) == 0)
 
#define segment_holds(S, A)   ((char*)(A) >= S->base && (char*)(A) < S->base + S->size)
 
#define should_trim(M, s)   ((s) > (M)->trim_check)
 
#define TOP_FOOT_SIZE   (align_offset(chunk2mem(0))+pad_request(sizeof(struct malloc_segment))+MIN_CHUNK_SIZE)
 
#define PREACTION(M)   ((use_lock(M))? ACQUIRE_LOCK(&(M)->mutex) : 0)
 
#define POSTACTION(M)   { if (use_lock(M)) RELEASE_LOCK(&(M)->mutex); }
 
#define CORRUPTION_ERROR_ACTION(m)   ABORT
 
#define USAGE_ERROR_ACTION(m, p)   ABORT
 
#define check_free_chunk(M, P)
 
#define check_inuse_chunk(M, P)
 
#define check_malloced_chunk(M, P, N)
 
#define check_mmapped_chunk(M, P)
 
#define check_malloc_state(M)
 
#define check_top_chunk(M, P)
 
#define is_small(s)   (((s) >> SMALLBIN_SHIFT) < NSMALLBINS)
 
#define small_index(s)   (bindex_t)((s) >> SMALLBIN_SHIFT)
 
#define small_index2size(i)   ((i) << SMALLBIN_SHIFT)
 
#define MIN_SMALL_INDEX   (small_index(MIN_CHUNK_SIZE))
 
#define smallbin_at(M, i)   ((sbinptr)((char*)&((M)->smallbins[(i)<<1])))
 
#define treebin_at(M, i)   (&((M)->treebins[i]))
 
#define compute_tree_index(S, I)
 
#define bit_for_tree_index(i)   (i == NTREEBINS-1)? (SIZE_T_BITSIZE-1) : (((i) >> 1) + TREEBIN_SHIFT - 2)
 
#define leftshift_for_tree_index(i)
 
#define minsize_for_tree_index(i)
 
#define idx2bit(i)   ((binmap_t)(1) << (i))
 
#define mark_smallmap(M, i)   ((M)->smallmap |= idx2bit(i))
 
#define clear_smallmap(M, i)   ((M)->smallmap &= ~idx2bit(i))
 
#define smallmap_is_marked(M, i)   ((M)->smallmap & idx2bit(i))
 
#define mark_treemap(M, i)   ((M)->treemap |= idx2bit(i))
 
#define clear_treemap(M, i)   ((M)->treemap &= ~idx2bit(i))
 
#define treemap_is_marked(M, i)   ((M)->treemap & idx2bit(i))
 
#define least_bit(x)   ((x) & -(x))
 
#define left_bits(x)   ((x<<1) | -(x<<1))
 
#define same_or_left_bits(x)   ((x) | -(x))
 
#define compute_bit2idx(X, I)
 
#define ok_address(M, a)   ((char*)(a) >= (M)->least_addr)
 
#define ok_next(p, n)   ((char*)(p) < (char*)(n))
 
#define ok_inuse(p)   is_inuse(p)
 
#define ok_pinuse(p)   pinuse(p)
 
#define ok_magic(M)   (1)
 
#define RTCHECK(e)   (e)
 
#define mark_inuse_foot(M, p, s)
 
#define set_inuse(M, p, s)
 
#define set_inuse_and_pinuse(M, p, s)
 
#define set_size_and_pinuse_of_inuse_chunk(M, p, s)   ((p)->head = (s|PINUSE_BIT|CINUSE_BIT))
 
#define insert_small_chunk(M, P, S)
 
#define unlink_small_chunk(M, P, S)
 
#define unlink_first_small_chunk(M, B, P, I)
 
#define replace_dv(M, P, S)
 
#define insert_large_chunk(M, X, S)
 
#define unlink_large_chunk(M, X)
 
#define insert_chunk(M, P, S)
 
#define unlink_chunk(M, P, S)
 
#define internal_malloc(m, b)   dlmalloc(b)
 
#define internal_free(m, mem)   dlfree(mem)
 
#define fm   gm
 

Typedefs

typedef struct malloc_chunk mchunk
 
typedef struct malloc_chunkmchunkptr
 
typedef struct malloc_chunksbinptr
 
typedef unsigned int bindex_t
 
typedef unsigned int binmap_t
 
typedef unsigned int flag_t
 
typedef struct malloc_tree_chunk tchunk
 
typedef struct malloc_tree_chunktchunkptr
 
typedef struct malloc_tree_chunktbinptr
 
typedef struct malloc_segment msegment
 
typedef struct malloc_segmentmsegmentptr
 
typedef struct malloc_statemstate
 

Functions

DLMALLOC_EXPORT void * dlmalloc (size_t)
 
DLMALLOC_EXPORT void dlfree (void *)
 
DLMALLOC_EXPORT void * dlcalloc (size_t, size_t)
 
DLMALLOC_EXPORT void * dlrealloc (void *, size_t)
 
DLMALLOC_EXPORT void * dlrealloc_in_place (void *, size_t)
 
DLMALLOC_EXPORT void * dlmemalign (size_t, size_t)
 
DLMALLOC_EXPORT int dlposix_memalign (void **, size_t, size_t)
 
DLMALLOC_EXPORT void * dlvalloc (size_t)
 
DLMALLOC_EXPORT int dlmallopt (int, int)
 
DLMALLOC_EXPORT size_t dlmalloc_footprint (void)
 
DLMALLOC_EXPORT size_t dlmalloc_max_footprint (void)
 
DLMALLOC_EXPORT size_t dlmalloc_footprint_limit ()
 
DLMALLOC_EXPORT size_t dlmalloc_set_footprint_limit (size_t bytes)
 
DLMALLOC_EXPORT struct mallinfo dlmallinfo (void)
 
DLMALLOC_EXPORT void ** dlindependent_calloc (size_t, size_t, void **)
 
DLMALLOC_EXPORT void ** dlindependent_comalloc (size_t, size_t *, void **)
 
DLMALLOC_EXPORT size_t dlbulk_free (void **, size_t n_elements)
 
DLMALLOC_EXPORT void * dlpvalloc (size_t)
 
DLMALLOC_EXPORT int dlmalloc_trim (size_t)
 
DLMALLOC_EXPORT void dlmalloc_stats (void)
 
size_t dlmalloc_usable_size (void *)
 
void * MORECORE (int size)
 
void ** dlindependent_calloc (size_t n_elements, size_t elem_size, void *chunks[])
 
void ** dlindependent_comalloc (size_t n_elements, size_t sizes[], void *chunks[])
 
size_t dlbulk_free (void *array[], size_t nelem)
 

Macro Definition Documentation

#define _STRUCT_MALLINFO

Definition at line 761 of file dlmalloc.c.

#define ABORT   abort()

Definition at line 624 of file dlmalloc.c.

#define ABORT_ON_ASSERT_FAILURE   1

Definition at line 627 of file dlmalloc.c.

#define ACQUIRE_LOCK (   lk)    pthread_mutex_lock(lk)

Definition at line 2009 of file dlmalloc.c.

#define ACQUIRE_MALLOC_GLOBAL_LOCK ( )    ACQUIRE_LOCK(&malloc_global_mutex);

Definition at line 2043 of file dlmalloc.c.

#define align_as_chunk (   A)    (mchunkptr)((A) + align_offset(chunk2mem(A)))

Definition at line 2226 of file dlmalloc.c.

#define align_offset (   A)
Value:
((((size_t)(A) & CHUNK_ALIGN_MASK) == 0)? 0 :\
#define MALLOC_ALIGNMENT
Definition: dlmalloc.c:618
#define CHUNK_ALIGN_MASK
Definition: dlmalloc.c:1619

Definition at line 1625 of file dlmalloc.c.

#define assert (   x)

Definition at line 1456 of file dlmalloc.c.

#define bit_for_tree_index (   i)    (i == NTREEBINS-1)? (SIZE_T_BITSIZE-1) : (((i) >> 1) + TREEBIN_SHIFT - 2)

Definition at line 2903 of file dlmalloc.c.

#define CALL_DIRECT_MMAP (   s)    DIRECT_MMAP_DEFAULT(s)

Definition at line 1746 of file dlmalloc.c.

#define CALL_MMAP (   s)    MMAP_DEFAULT(s)

Definition at line 1736 of file dlmalloc.c.

#define CALL_MORECORE (   S)    MORECORE_DEFAULT(S)

Definition at line 1721 of file dlmalloc.c.

#define CALL_MREMAP (   addr,
  osz,
  nsz,
  mv 
)    MFAIL

Define CALL_MREMAP

Definition at line 1769 of file dlmalloc.c.

#define CALL_MUNMAP (   a,
 
)    MUNMAP_DEFAULT((a), (s))

Definition at line 1741 of file dlmalloc.c.

#define calloc_must_clear (   p)    (!is_mmapped(p))

Definition at line 2302 of file dlmalloc.c.

#define check_free_chunk (   M,
 
)

Definition at line 2798 of file dlmalloc.c.

#define check_inuse_chunk (   M,
 
)

Definition at line 2799 of file dlmalloc.c.

#define check_malloc_state (   M)

Definition at line 2802 of file dlmalloc.c.

#define check_malloced_chunk (   M,
  P,
 
)

Definition at line 2800 of file dlmalloc.c.

#define check_mmapped_chunk (   M,
 
)

Definition at line 2801 of file dlmalloc.c.

#define check_top_chunk (   M,
 
)

Definition at line 2803 of file dlmalloc.c.

#define chunk2mem (   p)    ((void*)((char*)(p) + TWO_SIZE_T_SIZES))

Definition at line 2223 of file dlmalloc.c.

#define CHUNK_ALIGN_MASK   (MALLOC_ALIGNMENT - SIZE_T_ONE)

Definition at line 1619 of file dlmalloc.c.

#define chunk_minus_offset (   p,
 
)    ((mchunkptr)(((char*)(p)) - (s)))

Definition at line 2275 of file dlmalloc.c.

#define CHUNK_OVERHEAD   (SIZE_T_SIZE)

Definition at line 2210 of file dlmalloc.c.

#define chunk_plus_offset (   p,
 
)    ((mchunkptr)(((char*)(p)) + (s)))

Definition at line 2274 of file dlmalloc.c.

#define chunksize (   p)    ((p)->head & ~(FLAG_BITS))

Definition at line 2267 of file dlmalloc.c.

#define cinuse (   p)    ((p)->head & CINUSE_BIT)

Definition at line 2261 of file dlmalloc.c.

#define CINUSE_BIT   (SIZE_T_TWO)

Definition at line 2252 of file dlmalloc.c.

#define clear_flag4 (   p)    ((p)->head &= ~FLAG4_BIT)

Definition at line 2271 of file dlmalloc.c.

#define clear_pinuse (   p)    ((p)->head &= ~PINUSE_BIT)

Definition at line 2269 of file dlmalloc.c.

#define clear_smallmap (   M,
  i 
)    ((M)->smallmap &= ~idx2bit(i))

Definition at line 2924 of file dlmalloc.c.

#define clear_treemap (   M,
  i 
)    ((M)->treemap &= ~idx2bit(i))

Definition at line 2928 of file dlmalloc.c.

#define CMFAIL   ((char*)(MFAIL)) /* defined for convenience */

Definition at line 1640 of file dlmalloc.c.

#define compute_bit2idx (   X,
 
)
Value:
{\
unsigned int Y = X - 1;\
unsigned int K = Y >> (16-4) & 16;\
unsigned int N = K; Y >>= K;\
N += K = Y >> (8-3) & 8; Y >>= K;\
N += K = Y >> (4-2) & 4; Y >>= K;\
N += K = Y >> (2-1) & 2; Y >>= K;\
N += K = Y >> (1-0) & 1; Y >>= K;\
I = (bindex_t)(N + Y);\
}
unsigned int bindex_t
Definition: dlmalloc.c:2199

Definition at line 2970 of file dlmalloc.c.

#define compute_tree_index (   S,
 
)
Value:
{\
size_t X = S >> TREEBIN_SHIFT;\
if (X == 0)\
I = 0;\
else if (X > 0xFFFF)\
I = NTREEBINS-1;\
else {\
unsigned int Y = (unsigned int)X;\
unsigned int N = ((Y - 0x100) >> 16) & 8;\
unsigned int K = (((Y <<= N) - 0x1000) >> 16) & 4;\
N += K;\
N += K = (((Y <<= K) - 0x4000) >> 16) & 2;\
K = 14 - N + ((Y <<= K) >> 15);\
I = (K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1));\
}\
}
#define NTREEBINS
Definition: dlmalloc.c:2576
#define TREEBIN_SHIFT
Definition: dlmalloc.c:2579

Definition at line 2883 of file dlmalloc.c.

#define CORRUPTION_ERROR_ACTION (   m)    ABORT

Definition at line 2784 of file dlmalloc.c.

#define DEBUG   0

Definition at line 1458 of file dlmalloc.c.

#define DEFAULT_GRANULARITY   (0) /* 0 means to compute in init_mparams */

Definition at line 673 of file dlmalloc.c.

#define DEFAULT_MMAP_THRESHOLD   ((size_t)256U * (size_t)1024U)

Definition at line 687 of file dlmalloc.c.

#define DEFAULT_TRIM_THRESHOLD   ((size_t)2U * (size_t)1024U * (size_t)1024U)

Definition at line 680 of file dlmalloc.c.

#define DESTROY_LOCK (   lk)    pthread_mutex_destroy(lk)

Definition at line 2013 of file dlmalloc.c.

#define DIRECT_MMAP_DEFAULT (   s)    MMAP_DEFAULT(s)

Definition at line 1666 of file dlmalloc.c.

#define disable_contiguous (   M)    ((M)->mflags |= USE_NONCONTIGUOUS_BIT)

Definition at line 2666 of file dlmalloc.c.

#define disable_lock (   M)    ((M)->mflags &= ~USE_LOCK_BIT)

Definition at line 2652 of file dlmalloc.c.

#define disable_mmap (   M)    ((M)->mflags &= ~USE_MMAP_BIT)

Definition at line 2660 of file dlmalloc.c.

#define dlbulk_free   bulk_free

Definition at line 837 of file dlmalloc.c.

#define dlcalloc   calloc

Definition at line 816 of file dlmalloc.c.

#define dlfree   free

Definition at line 817 of file dlmalloc.c.

#define dlindependent_calloc   independent_calloc

Definition at line 835 of file dlmalloc.c.

#define dlindependent_comalloc   independent_comalloc

Definition at line 836 of file dlmalloc.c.

#define dlmallinfo   mallinfo

Definition at line 825 of file dlmalloc.c.

#define dlmalloc   malloc

Definition at line 818 of file dlmalloc.c.

#define DLMALLOC_EXPORT   extern

Definition at line 530 of file dlmalloc.c.

#define dlmalloc_footprint   malloc_footprint

Definition at line 830 of file dlmalloc.c.

#define dlmalloc_footprint_limit   malloc_footprint_limit

Definition at line 832 of file dlmalloc.c.

#define dlmalloc_inspect_all   malloc_inspect_all

Definition at line 834 of file dlmalloc.c.

#define dlmalloc_max_footprint   malloc_max_footprint

Definition at line 831 of file dlmalloc.c.

#define dlmalloc_set_footprint_limit   malloc_set_footprint_limit

Definition at line 833 of file dlmalloc.c.

void dlmalloc_stats   malloc_stats

Definition at line 828 of file dlmalloc.c.

#define dlmalloc_trim   malloc_trim

Definition at line 827 of file dlmalloc.c.

#define dlmalloc_usable_size   malloc_usable_size

Definition at line 829 of file dlmalloc.c.

#define DLMALLOC_VERSION   20806

Definition at line 526 of file dlmalloc.c.

#define dlmallopt   mallopt

Definition at line 826 of file dlmalloc.c.

#define dlmemalign   memalign

Definition at line 819 of file dlmalloc.c.

#define dlposix_memalign   posix_memalign

Definition at line 820 of file dlmalloc.c.

#define dlpvalloc   pvalloc

Definition at line 824 of file dlmalloc.c.

#define dlrealloc   realloc

Definition at line 821 of file dlmalloc.c.

#define dlrealloc_in_place   realloc_in_place

Definition at line 822 of file dlmalloc.c.

#define dlvalloc   valloc

Definition at line 823 of file dlmalloc.c.

#define enable_lock (   M)    ((M)->mflags |= USE_LOCK_BIT)

Definition at line 2650 of file dlmalloc.c.

#define enable_mmap (   M)    ((M)->mflags |= USE_MMAP_BIT)

Definition at line 2658 of file dlmalloc.c.

#define ensure_initialization ( )    (void)(mparams.magic != 0 || init_mparams())

Definition at line 2632 of file dlmalloc.c.

#define EXTERN_BIT   (8U)

Definition at line 1776 of file dlmalloc.c.

#define FENCEPOST_HEAD   (INUSE_BITS|SIZE_T_SIZE)

Definition at line 2258 of file dlmalloc.c.

#define FLAG4_BIT   (SIZE_T_FOUR)

Definition at line 2253 of file dlmalloc.c.

#define flag4inuse (   p)    ((p)->head & FLAG4_BIT)

Definition at line 2263 of file dlmalloc.c.

#define FLAG_BITS   (PINUSE_BIT|CINUSE_BIT|FLAG4_BIT)

Definition at line 2255 of file dlmalloc.c.

#define fm   gm
#define FOOTERS   0

Definition at line 621 of file dlmalloc.c.

#define FORCEINLINE

Definition at line 808 of file dlmalloc.c.

#define FOUR_SIZE_T_SIZES   (SIZE_T_SIZE<<2)

Definition at line 1614 of file dlmalloc.c.

#define get_foot (   p,
 
)    (((mchunkptr)((char*)(p) + (s)))->prev_foot)

Definition at line 2285 of file dlmalloc.c.

#define gm   (&_gm_)

Definition at line 2638 of file dlmalloc.c.

#define granularity_align (   S)
Value:
(((S) + (mparams.granularity - SIZE_T_ONE))\
& ~(mparams.granularity - SIZE_T_ONE))
#define SIZE_T_ONE
Definition: dlmalloc.c:1610
size_t granularity
Definition: dlmalloc.c:2623

Definition at line 2678 of file dlmalloc.c.

#define HALF_MAX_SIZE_T   (MAX_SIZE_T / 2U)

Definition at line 1616 of file dlmalloc.c.

#define HAVE_MMAP   1

Definition at line 640 of file dlmalloc.c.

#define HAVE_MORECORE   1

Definition at line 660 of file dlmalloc.c.

#define HAVE_MREMAP   0

Definition at line 650 of file dlmalloc.c.

#define idx2bit (   i)    ((binmap_t)(1) << (i))

Definition at line 2920 of file dlmalloc.c.

#define INITIAL_LOCK (   lk)    pthread_init_lock(lk)

Definition at line 2012 of file dlmalloc.c.

#define INSECURE   0

Definition at line 634 of file dlmalloc.c.

#define insert_chunk (   M,
  P,
 
)
Value:
if (is_small(S)) insert_small_chunk(M, P, S)\
else { tchunkptr TP = (tchunkptr)(P); insert_large_chunk(M, TP, S); }
#define insert_large_chunk(M, X, S)
Definition: dlmalloc.c:3650
#define insert_small_chunk(M, P, S)
Definition: dlmalloc.c:3572
struct malloc_tree_chunk * tchunkptr
Definition: dlmalloc.c:2411
#define is_small(s)
Definition: dlmalloc.c:2829

Definition at line 3791 of file dlmalloc.c.

#define insert_large_chunk (   M,
  X,
 
)

Definition at line 3650 of file dlmalloc.c.

#define insert_small_chunk (   M,
  P,
 
)
Value:
{\
if (!smallmap_is_marked(M, I))\
else if (RTCHECK(ok_address(M, B->fd)))\
F = B->fd;\
else {\
}\
B->fd = P;\
F->bk = P;\
P->fd = F;\
P->bk = B;\
}
#define RTCHECK(e)
Definition: dlmalloc.c:3041
#define smallmap_is_marked(M, i)
Definition: dlmalloc.c:2925
#define assert(x)
Definition: dlmalloc.c:1456
struct malloc_chunk * mchunkptr
Definition: dlmalloc.c:2197
#define small_index(s)
Definition: dlmalloc.c:2830
unsigned int bindex_t
Definition: dlmalloc.c:2199
#define mark_smallmap(M, i)
Definition: dlmalloc.c:2923
#define CORRUPTION_ERROR_ACTION(m)
Definition: dlmalloc.c:2784
#define MIN_CHUNK_SIZE
Definition: dlmalloc.c:2219
#define smallbin_at(M, i)
Definition: dlmalloc.c:2835
#define ok_address(M, a)
Definition: dlmalloc.c:3014

Definition at line 3572 of file dlmalloc.c.

#define internal_free (   m,
  mem 
)    dlfree(mem)

Definition at line 3813 of file dlmalloc.c.

#define internal_malloc (   m,
 
)    dlmalloc(b)

Definition at line 3812 of file dlmalloc.c.

#define INUSE_BITS   (PINUSE_BIT|CINUSE_BIT)

Definition at line 2254 of file dlmalloc.c.

#define is_aligned (   A)    (((size_t)((A)) & (CHUNK_ALIGN_MASK)) == 0)

Definition at line 1622 of file dlmalloc.c.

#define is_extern_segment (   S)    ((S)->sflags & EXTERN_BIT)

Definition at line 2482 of file dlmalloc.c.

#define is_global (   M)    ((M) == &_gm_)

Definition at line 2639 of file dlmalloc.c.

#define is_granularity_aligned (   S)    (((size_t)(S) & (mparams.granularity - SIZE_T_ONE)) == 0)

Definition at line 2695 of file dlmalloc.c.

#define is_initialized (   M)    ((M)->top != 0)

Definition at line 2643 of file dlmalloc.c.

#define is_inuse (   p)    (((p)->head & INUSE_BITS) != PINUSE_BIT)

Definition at line 2264 of file dlmalloc.c.

#define is_mmapped (   p)    (((p)->head & INUSE_BITS) == 0)

Definition at line 2265 of file dlmalloc.c.

#define is_mmapped_segment (   S)    ((S)->sflags & USE_MMAP_BIT)

Definition at line 2481 of file dlmalloc.c.

#define is_page_aligned (   S)    (((size_t)(S) & (mparams.page_size - SIZE_T_ONE)) == 0)

Definition at line 2693 of file dlmalloc.c.

#define is_small (   s)    (((s) >> SMALLBIN_SHIFT) < NSMALLBINS)

Definition at line 2829 of file dlmalloc.c.

#define least_bit (   x)    ((x) & -(x))

Definition at line 2932 of file dlmalloc.c.

#define left_bits (   x)    ((x<<1) | -(x<<1))

Definition at line 2935 of file dlmalloc.c.

#define leftmost_child (   t)    ((t)->child[0] != 0? (t)->child[0] : (t)->child[1])

Definition at line 2415 of file dlmalloc.c.

#define leftshift_for_tree_index (   i)
Value:
((i == NTREEBINS-1)? 0 : \
((SIZE_T_BITSIZE-SIZE_T_ONE) - (((i) >> 1) + TREEBIN_SHIFT - 2)))
#define NTREEBINS
Definition: dlmalloc.c:2576
static uint64_t unsigned int i
#define SIZE_T_BITSIZE
Definition: dlmalloc.c:1605
#define SIZE_T_ONE
Definition: dlmalloc.c:1610
#define TREEBIN_SHIFT
Definition: dlmalloc.c:2579

Definition at line 2907 of file dlmalloc.c.

#define LOCK_AT_FORK   0

Definition at line 1532 of file dlmalloc.c.

#define M_GRANULARITY   (-2)

Definition at line 726 of file dlmalloc.c.

#define M_MMAP_THRESHOLD   (-3)

Definition at line 727 of file dlmalloc.c.

#define M_TRIM_THRESHOLD   (-1)

Definition at line 725 of file dlmalloc.c.

#define MALLINFO_FIELD_TYPE   size_t

Definition at line 709 of file dlmalloc.c.

#define MALLOC_ALIGNMENT   ((size_t)(2 * sizeof(void *)))

Definition at line 618 of file dlmalloc.c.

#define MALLOC_FAILURE_ACTION   errno = ENOMEM;

Definition at line 654 of file dlmalloc.c.

#define malloc_getpagesize   ((size_t)4096U)

Definition at line 1590 of file dlmalloc.c.

#define MALLOC_INSPECT_ALL   0

Definition at line 637 of file dlmalloc.c.

#define mark_inuse_foot (   M,
  p,
 
)

Definition at line 3051 of file dlmalloc.c.

#define mark_smallmap (   M,
  i 
)    ((M)->smallmap |= idx2bit(i))

Definition at line 2923 of file dlmalloc.c.

#define mark_treemap (   M,
  i 
)    ((M)->treemap |= idx2bit(i))

Definition at line 2927 of file dlmalloc.c.

#define MAX_RELEASE_CHECK_RATE   4095

Definition at line 694 of file dlmalloc.c.

#define MAX_REQUEST   ((-MIN_CHUNK_SIZE) << 2)

Definition at line 2229 of file dlmalloc.c.

#define MAX_SIZE_T   (~(size_t)0)

Definition at line 585 of file dlmalloc.c.

#define MAX_SMALL_REQUEST   (MAX_SMALL_SIZE - CHUNK_ALIGN_MASK - CHUNK_OVERHEAD)

Definition at line 2582 of file dlmalloc.c.

#define MAX_SMALL_SIZE   (MIN_LARGE_SIZE - SIZE_T_ONE)

Definition at line 2581 of file dlmalloc.c.

#define MCHUNK_SIZE   (sizeof(mchunk))

Definition at line 2205 of file dlmalloc.c.

#define mem2chunk (   mem)    ((mchunkptr)((char*)(mem) - TWO_SIZE_T_SIZES))

Definition at line 2224 of file dlmalloc.c.

#define MFAIL   ((void*)(MAX_SIZE_T))

Definition at line 1639 of file dlmalloc.c.

#define MIN_CHUNK_SIZE   ((MCHUNK_SIZE + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK)

Definition at line 2219 of file dlmalloc.c.

#define MIN_LARGE_SIZE   (SIZE_T_ONE << TREEBIN_SHIFT)

Definition at line 2580 of file dlmalloc.c.

#define MIN_REQUEST   (MIN_CHUNK_SIZE - CHUNK_OVERHEAD - SIZE_T_ONE)

Definition at line 2230 of file dlmalloc.c.

#define MIN_SMALL_INDEX   (small_index(MIN_CHUNK_SIZE))

Definition at line 2832 of file dlmalloc.c.

#define minsize_for_tree_index (   i)
Value:
((SIZE_T_ONE << (((i) >> 1) + TREEBIN_SHIFT)) | \
(((size_t)((i) & SIZE_T_ONE)) << (((i) >> 1) + TREEBIN_SHIFT - 1)))
static uint64_t unsigned int i
#define SIZE_T_ONE
Definition: dlmalloc.c:1610
#define TREEBIN_SHIFT
Definition: dlmalloc.c:2579

Definition at line 2912 of file dlmalloc.c.

#define MLOCK_T   pthread_mutex_t

Definition at line 2008 of file dlmalloc.c.

#define mmap_align (   S)    page_align(S)

Definition at line 2687 of file dlmalloc.c.

#define MMAP_CHUNK_OVERHEAD   (TWO_SIZE_T_SIZES)

Definition at line 2214 of file dlmalloc.c.

#define MMAP_CLEARS   1

Definition at line 643 of file dlmalloc.c.

#define MMAP_DEFAULT (   s)
Value:
((dev_zero_fd < 0) ? \
(dev_zero_fd = open("/dev/zero", O_RDWR), \
mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) : \
mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0))
void * mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset)
Definition: qemuhacks.c:213
#define MMAP_PROT
Definition: dlmalloc.c:1646
#define MMAP_FLAGS
Definition: dlmalloc.c:1658

Definition at line 1660 of file dlmalloc.c.

#define MMAP_FLAGS   (MAP_PRIVATE)

Definition at line 1658 of file dlmalloc.c.

#define MMAP_FOOT_PAD   (FOUR_SIZE_T_SIZES)

Definition at line 2216 of file dlmalloc.c.

#define MMAP_PROT   (PROT_READ|PROT_WRITE)

Definition at line 1646 of file dlmalloc.c.

#define MORECORE_CONTIGUOUS   1

Definition at line 668 of file dlmalloc.c.

#define MORECORE_DEFAULT   sbrk

Definition at line 666 of file dlmalloc.c.

#define MSPACES   0

Definition at line 614 of file dlmalloc.c.

#define MUNMAP_DEFAULT (   a,
 
)    munmap((a), (s))

Definition at line 1645 of file dlmalloc.c.

#define next_chunk (   p)    ((mchunkptr)( ((char*)(p)) + ((p)->head & ~FLAG_BITS)))

Definition at line 2278 of file dlmalloc.c.

#define next_pinuse (   p)    ((next_chunk(p)->head) & PINUSE_BIT)

Definition at line 2282 of file dlmalloc.c.

#define NO_MALLINFO   0

Definition at line 706 of file dlmalloc.c.

#define NO_MALLOC_STATS   0

Definition at line 712 of file dlmalloc.c.

#define NO_SEGMENT_TRAVERSAL   0

Definition at line 715 of file dlmalloc.c.

#define NOINLINE

Definition at line 797 of file dlmalloc.c.

#define NSMALLBINS   (32U)

Definition at line 2575 of file dlmalloc.c.

#define NTREEBINS   (32U)

Definition at line 2576 of file dlmalloc.c.

#define ok_address (   M,
 
)    ((char*)(a) >= (M)->least_addr)

Definition at line 3014 of file dlmalloc.c.

#define ok_inuse (   p)    is_inuse(p)

Definition at line 3018 of file dlmalloc.c.

#define ok_magic (   M)    (1)

Definition at line 3033 of file dlmalloc.c.

#define ok_next (   p,
 
)    ((char*)(p) < (char*)(n))

Definition at line 3016 of file dlmalloc.c.

#define ok_pinuse (   p)    pinuse(p)

Definition at line 3020 of file dlmalloc.c.

#define ONLY_MSPACES   0

Definition at line 608 of file dlmalloc.c.

#define overhead_for (   p)    (is_mmapped(p)? MMAP_CHUNK_OVERHEAD : CHUNK_OVERHEAD)

Definition at line 2297 of file dlmalloc.c.

#define pad_request (   req)    (((req) + CHUNK_OVERHEAD + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK)

Definition at line 2233 of file dlmalloc.c.

#define page_align (   S)    (((S) + (mparams.page_size - SIZE_T_ONE)) & ~(mparams.page_size - SIZE_T_ONE))

Definition at line 2674 of file dlmalloc.c.

#define pinuse (   p)    ((p)->head & PINUSE_BIT)

Definition at line 2262 of file dlmalloc.c.

#define PINUSE_BIT   (SIZE_T_ONE)

Definition at line 2251 of file dlmalloc.c.

#define POSTACTION (   M)    { if (use_lock(M)) RELEASE_LOCK(&(M)->mutex); }

Definition at line 2749 of file dlmalloc.c.

#define PREACTION (   M)    ((use_lock(M))? ACQUIRE_LOCK(&(M)->mutex) : 0)

Definition at line 2748 of file dlmalloc.c.

#define prev_chunk (   p)    ((mchunkptr)( ((char*)(p)) - ((p)->prev_foot) ))

Definition at line 2279 of file dlmalloc.c.

#define PROCEED_ON_ERROR   0

Definition at line 630 of file dlmalloc.c.

#define RELEASE_LOCK (   lk)    pthread_mutex_unlock(lk)

Definition at line 2010 of file dlmalloc.c.

#define RELEASE_MALLOC_GLOBAL_LOCK ( )    RELEASE_LOCK(&malloc_global_mutex);

Definition at line 2047 of file dlmalloc.c.

#define replace_dv (   M,
  P,
 
)
Value:
{\
size_t DVS = M->dvsize;\
if (DVS != 0) {\
mchunkptr DV = M->dv;\
insert_small_chunk(M, DV, DVS);\
}\
M->dvsize = S;\
M->dv = P;\
}
#define assert(x)
Definition: dlmalloc.c:1456
#define insert_small_chunk(M, P, S)
Definition: dlmalloc.c:3572
struct malloc_chunk * mchunkptr
Definition: dlmalloc.c:2197
#define is_small(s)
Definition: dlmalloc.c:2829

Definition at line 3636 of file dlmalloc.c.

#define request2size (   req)    (((req) < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(req))

Definition at line 2237 of file dlmalloc.c.

#define RTCHECK (   e)    (e)

Definition at line 3041 of file dlmalloc.c.

#define same_or_left_bits (   x)    ((x) | -(x))

Definition at line 2938 of file dlmalloc.c.

#define segment_holds (   S,
 
)    ((char*)(A) >= S->base && (char*)(A) < S->base + S->size)

Definition at line 2699 of file dlmalloc.c.

#define set_flag4 (   p)    ((p)->head |= FLAG4_BIT)

Definition at line 2270 of file dlmalloc.c.

#define set_foot (   p,
 
)    (((mchunkptr)((char*)(p) + (s)))->prev_foot = (s))

Definition at line 2286 of file dlmalloc.c.

#define set_free_with_pinuse (   p,
  s,
 
)    (clear_pinuse(n), set_size_and_pinuse_of_free_chunk(p, s))

Definition at line 2293 of file dlmalloc.c.

#define set_inuse (   M,
  p,
 
)
Value:
((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\
((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT)
void * p
#define PINUSE_BIT
Definition: dlmalloc.c:2251
#define CINUSE_BIT
Definition: dlmalloc.c:2252

Definition at line 3056 of file dlmalloc.c.

#define set_inuse_and_pinuse (   M,
  p,
 
)
Value:
((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\
((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT)
void * p
struct malloc_chunk * mchunkptr
Definition: dlmalloc.c:2197
#define PINUSE_BIT
Definition: dlmalloc.c:2251
#define CINUSE_BIT
Definition: dlmalloc.c:2252

Definition at line 3061 of file dlmalloc.c.

#define set_lock (   M,
 
)
Value:
((M)->mflags = (L)?\
((M)->mflags | USE_LOCK_BIT) :\
((M)->mflags & ~USE_LOCK_BIT))
#define USE_LOCK_BIT
Definition: dlmalloc.c:2040

Definition at line 2668 of file dlmalloc.c.

#define set_size_and_pinuse_of_free_chunk (   p,
 
)    ((p)->head = (s|PINUSE_BIT), set_foot(p, s))

Definition at line 2289 of file dlmalloc.c.

#define set_size_and_pinuse_of_inuse_chunk (   M,
  p,
 
)    ((p)->head = (s|PINUSE_BIT|CINUSE_BIT))

Definition at line 3066 of file dlmalloc.c.

#define should_trim (   M,
 
)    ((s) > (M)->trim_check)

Definition at line 2725 of file dlmalloc.c.

#define SIX_SIZE_T_SIZES   (FOUR_SIZE_T_SIZES+TWO_SIZE_T_SIZES)

Definition at line 1615 of file dlmalloc.c.

#define SIZE_T_BITSIZE   (sizeof(size_t) << 3)

Definition at line 1605 of file dlmalloc.c.

#define SIZE_T_FOUR   ((size_t)4)

Definition at line 1612 of file dlmalloc.c.

#define SIZE_T_ONE   ((size_t)1)

Definition at line 1610 of file dlmalloc.c.

#define SIZE_T_SIZE   (sizeof(size_t))

Definition at line 1604 of file dlmalloc.c.

#define SIZE_T_TWO   ((size_t)2)

Definition at line 1611 of file dlmalloc.c.

#define SIZE_T_ZERO   ((size_t)0)

Definition at line 1609 of file dlmalloc.c.

#define small_index (   s)    (bindex_t)((s) >> SMALLBIN_SHIFT)

Definition at line 2830 of file dlmalloc.c.

#define small_index2size (   i)    ((i) << SMALLBIN_SHIFT)

Definition at line 2831 of file dlmalloc.c.

#define smallbin_at (   M,
  i 
)    ((sbinptr)((char*)&((M)->smallbins[(i)<<1])))

Definition at line 2835 of file dlmalloc.c.

#define SMALLBIN_SHIFT   (3U)

Definition at line 2577 of file dlmalloc.c.

#define SMALLBIN_WIDTH   (SIZE_T_ONE << SMALLBIN_SHIFT)

Definition at line 2578 of file dlmalloc.c.

#define smallmap_is_marked (   M,
  i 
)    ((M)->smallmap & idx2bit(i))

Definition at line 2925 of file dlmalloc.c.

#define STRUCT_MALLINFO_DECLARED   1

Definition at line 762 of file dlmalloc.c.

#define SYS_ALLOC_PADDING   (TOP_FOOT_SIZE + MALLOC_ALIGNMENT)

Definition at line 2691 of file dlmalloc.c.

#define TOP_FOOT_SIZE   (align_offset(chunk2mem(0))+pad_request(sizeof(struct malloc_segment))+MIN_CHUNK_SIZE)

Definition at line 2735 of file dlmalloc.c.

#define treebin_at (   M,
  i 
)    (&((M)->treebins[i]))

Definition at line 2836 of file dlmalloc.c.

#define TREEBIN_SHIFT   (8U)

Definition at line 2579 of file dlmalloc.c.

#define treemap_is_marked (   M,
  i 
)    ((M)->treemap & idx2bit(i))

Definition at line 2929 of file dlmalloc.c.

#define TRY_LOCK (   lk)    (!pthread_mutex_trylock(lk))

Definition at line 2011 of file dlmalloc.c.

#define TWO_SIZE_T_SIZES   (SIZE_T_SIZE<<1)

Definition at line 1613 of file dlmalloc.c.

#define unlink_chunk (   M,
  P,
 
)
Value:
if (is_small(S)) unlink_small_chunk(M, P, S)\
else { tchunkptr TP = (tchunkptr)(P); unlink_large_chunk(M, TP); }
#define unlink_small_chunk(M, P, S)
Definition: dlmalloc.c:3591
#define unlink_large_chunk(M, X)
Definition: dlmalloc.c:3718
struct malloc_tree_chunk * tchunkptr
Definition: dlmalloc.c:2411
#define is_small(s)
Definition: dlmalloc.c:2829

Definition at line 3795 of file dlmalloc.c.

#define unlink_first_small_chunk (   M,
  B,
  P,
 
)
Value:
{\
mchunkptr F = P->fd;\
assert(P != B);\
assert(P != F);\
if (B == F) {\
}\
else if (RTCHECK(ok_address(M, F) && F->bk == P)) {\
F->bk = B;\
B->fd = F;\
}\
else {\
}\
}
#define RTCHECK(e)
Definition: dlmalloc.c:3041
#define assert(x)
Definition: dlmalloc.c:1456
#define small_index2size(i)
Definition: dlmalloc.c:2831
#define clear_smallmap(M, i)
Definition: dlmalloc.c:2924
struct malloc_chunk * mchunkptr
Definition: dlmalloc.c:2197
struct malloc_chunk * fd
Definition: dlmalloc.c:2192
#define CORRUPTION_ERROR_ACTION(m)
Definition: dlmalloc.c:2784
#define ok_address(M, a)
Definition: dlmalloc.c:3014
#define chunksize(p)
Definition: dlmalloc.c:2267

Definition at line 3617 of file dlmalloc.c.

#define unlink_large_chunk (   M,
 
)

Definition at line 3718 of file dlmalloc.c.

#define unlink_small_chunk (   M,
  P,
 
)
Value:
{\
mchunkptr F = P->fd;\
mchunkptr B = P->bk;\
assert(P != B);\
assert(P != F);\
if (RTCHECK(F == smallbin_at(M,I) || (ok_address(M, F) && F->bk == P))) { \
if (B == F) {\
}\
else if (RTCHECK(B == smallbin_at(M,I) ||\
(ok_address(M, B) && B->fd == P))) {\
F->bk = B;\
B->fd = F;\
}\
else {\
}\
}\
else {\
}\
}
#define RTCHECK(e)
Definition: dlmalloc.c:3041
struct malloc_chunk * bk
Definition: dlmalloc.c:2193
#define assert(x)
Definition: dlmalloc.c:1456
#define small_index2size(i)
Definition: dlmalloc.c:2831
#define clear_smallmap(M, i)
Definition: dlmalloc.c:2924
struct malloc_chunk * mchunkptr
Definition: dlmalloc.c:2197
struct malloc_chunk * fd
Definition: dlmalloc.c:2192
#define small_index(s)
Definition: dlmalloc.c:2830
unsigned int bindex_t
Definition: dlmalloc.c:2199
#define CORRUPTION_ERROR_ACTION(m)
Definition: dlmalloc.c:2784
#define smallbin_at(M, i)
Definition: dlmalloc.c:2835
#define ok_address(M, a)
Definition: dlmalloc.c:3014
#define chunksize(p)
Definition: dlmalloc.c:2267

Definition at line 3591 of file dlmalloc.c.

#define USAGE_ERROR_ACTION (   m,
  p 
)    ABORT

Definition at line 2788 of file dlmalloc.c.

#define USE_BUILTIN_FFS   0

Definition at line 700 of file dlmalloc.c.

#define USE_DEV_RANDOM   0

Definition at line 703 of file dlmalloc.c.

#define use_lock (   M)    ((M)->mflags & USE_LOCK_BIT)

Definition at line 2649 of file dlmalloc.c.

#define USE_LOCK_BIT   (2U)

Definition at line 2040 of file dlmalloc.c.

#define USE_LOCKS
Value:
((defined(USE_SPIN_LOCKS) && USE_SPIN_LOCKS != 0) || \
(defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0))
#define USE_SPIN_LOCKS
Definition: dlmalloc.c:604

Definition at line 588 of file dlmalloc.c.

#define use_mmap (   M)    ((M)->mflags & USE_MMAP_BIT)

Definition at line 2657 of file dlmalloc.c.

#define USE_MMAP_BIT   (SIZE_T_ONE)

Define CALL_MMAP/CALL_MUNMAP/CALL_DIRECT_MMAP

Definition at line 1731 of file dlmalloc.c.

#define use_noncontiguous (   M)    ((M)->mflags & USE_NONCONTIGUOUS_BIT)

Definition at line 2665 of file dlmalloc.c.

#define USE_NONCONTIGUOUS_BIT   (4U)

Definition at line 1773 of file dlmalloc.c.

#define USE_SPIN_LOCKS   0

Definition at line 604 of file dlmalloc.c.

Typedef Documentation

typedef unsigned int bindex_t

Definition at line 2199 of file dlmalloc.c.

typedef unsigned int binmap_t

Definition at line 2200 of file dlmalloc.c.

typedef unsigned int flag_t

Definition at line 2201 of file dlmalloc.c.

typedef struct malloc_chunk mchunk

Definition at line 2196 of file dlmalloc.c.

typedef struct malloc_chunk* mchunkptr

Definition at line 2197 of file dlmalloc.c.

typedef struct malloc_segment msegment

Definition at line 2484 of file dlmalloc.c.

typedef struct malloc_segment* msegmentptr

Definition at line 2485 of file dlmalloc.c.

typedef struct malloc_state* mstate

Definition at line 2609 of file dlmalloc.c.

typedef struct malloc_chunk* sbinptr

Definition at line 2198 of file dlmalloc.c.

typedef struct malloc_tree_chunk* tbinptr

Definition at line 2412 of file dlmalloc.c.

typedef struct malloc_tree_chunk tchunk

Definition at line 2410 of file dlmalloc.c.

typedef struct malloc_tree_chunk* tchunkptr

Definition at line 2411 of file dlmalloc.c.

Function Documentation

DLMALLOC_EXPORT size_t dlbulk_free ( void **  ,
size_t  n_elements 
)
size_t dlbulk_free ( void *  array[],
size_t  nelem 
)

Definition at line 5318 of file dlmalloc.c.

void * dlcalloc ( size_t  n_elements,
size_t  elem_size 
)

Definition at line 4793 of file dlmalloc.c.

void dlfree ( void *  mem)

Definition at line 4684 of file dlmalloc.c.

DLMALLOC_EXPORT void** dlindependent_calloc ( size_t  ,
size_t  ,
void **   
)
void** dlindependent_calloc ( size_t  n_elements,
size_t  elem_size,
void *  chunks[] 
)

Definition at line 5307 of file dlmalloc.c.

DLMALLOC_EXPORT void** dlindependent_comalloc ( size_t  ,
size_t *  ,
void **   
)
void** dlindependent_comalloc ( size_t  n_elements,
size_t  sizes[],
void *  chunks[] 
)

Definition at line 5313 of file dlmalloc.c.

struct mallinfo dlmallinfo ( void  )

Definition at line 5371 of file dlmalloc.c.

void * dlmalloc ( size_t  bytes)

Definition at line 4546 of file dlmalloc.c.

size_t dlmalloc_footprint ( void  )

Definition at line 5346 of file dlmalloc.c.

size_t dlmalloc_footprint_limit ( void  )

Definition at line 5354 of file dlmalloc.c.

size_t dlmalloc_max_footprint ( void  )

Definition at line 5350 of file dlmalloc.c.

size_t dlmalloc_set_footprint_limit ( size_t  bytes)

Definition at line 5359 of file dlmalloc.c.

DLMALLOC_EXPORT void dlmalloc_stats ( void  )

Definition at line 5377 of file dlmalloc.c.

int dlmalloc_trim ( size_t  pad)

Definition at line 5336 of file dlmalloc.c.

size_t dlmalloc_usable_size ( void *  mem)

Definition at line 5386 of file dlmalloc.c.

int dlmallopt ( int  param_number,
int  value 
)

Definition at line 5382 of file dlmalloc.c.

void * dlmemalign ( size_t  alignment,
size_t  bytes 
)

Definition at line 5263 of file dlmalloc.c.

int dlposix_memalign ( void **  pp,
size_t  alignment,
size_t  bytes 
)

Definition at line 5270 of file dlmalloc.c.

void * dlpvalloc ( size_t  bytes)

Definition at line 5300 of file dlmalloc.c.

void * dlrealloc ( void *  oldmem,
size_t  bytes 
)

Definition at line 5187 of file dlmalloc.c.

void * dlrealloc_in_place ( void *  oldmem,
size_t  bytes 
)

Definition at line 5232 of file dlmalloc.c.

void * dlvalloc ( size_t  bytes)

Definition at line 5293 of file dlmalloc.c.

void* MORECORE ( int  size)

Define CALL_MORECORE