Stackdb
Stackdb is a stackable, multi-target and -level source debugger and memory forensics library.
|
#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>
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_chunk * | mchunkptr |
typedef struct malloc_chunk * | sbinptr |
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_chunk * | tchunkptr |
typedef struct malloc_tree_chunk * | tbinptr |
typedef struct malloc_segment | msegment |
typedef struct malloc_segment * | msegmentptr |
typedef struct malloc_state * | mstate |
#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 | ) |
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, | |
s | |||
) | 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, | |
P | |||
) |
Definition at line 2798 of file dlmalloc.c.
#define check_inuse_chunk | ( | M, | |
P | |||
) |
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, | |||
N | |||
) |
Definition at line 2800 of file dlmalloc.c.
#define check_mmapped_chunk | ( | M, | |
P | |||
) |
Definition at line 2801 of file dlmalloc.c.
#define check_top_chunk | ( | M, | |
P | |||
) |
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.
Definition at line 2275 of file dlmalloc.c.
#define CHUNK_OVERHEAD (SIZE_T_SIZE) |
Definition at line 2210 of file dlmalloc.c.
Definition at line 2274 of file dlmalloc.c.
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.
Definition at line 2271 of file dlmalloc.c.
#define clear_pinuse | ( | p | ) | ((p)->head &= ~PINUSE_BIT) |
Definition at line 2269 of file dlmalloc.c.
Definition at line 2924 of file dlmalloc.c.
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, | |
I | |||
) |
Definition at line 2970 of file dlmalloc.c.
#define compute_tree_index | ( | S, | |
I | |||
) |
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.
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.
Definition at line 2285 of file dlmalloc.c.
#define gm (&_gm_) |
Definition at line 2638 of file dlmalloc.c.
#define granularity_align | ( | S | ) |
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.
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, | |||
S | |||
) |
Definition at line 3791 of file dlmalloc.c.
#define insert_large_chunk | ( | M, | |
X, | |||
S | |||
) |
Definition at line 3650 of file dlmalloc.c.
#define insert_small_chunk | ( | M, | |
P, | |||
S | |||
) |
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, | |
b | |||
) | 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.
Definition at line 2415 of file dlmalloc.c.
#define leftshift_for_tree_index | ( | i | ) |
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, | |||
s | |||
) |
Definition at line 3051 of file dlmalloc.c.
Definition at line 2923 of file dlmalloc.c.
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 | ) |
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 | ) |
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, | |
s | |||
) | munmap((a), (s)) |
Definition at line 1645 of file dlmalloc.c.
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, | |
a | |||
) | ((char*)(a) >= (M)->least_addr) |
Definition at line 3014 of file dlmalloc.c.
Definition at line 3018 of file dlmalloc.c.
#define ok_magic | ( | M | ) | (1) |
Definition at line 3033 of file dlmalloc.c.
Definition at line 3016 of file dlmalloc.c.
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.
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, | |||
S | |||
) |
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, | |
A | |||
) | ((char*)(A) >= S->base && (char*)(A) < S->base + S->size) |
Definition at line 2699 of file dlmalloc.c.
Definition at line 2270 of file dlmalloc.c.
Definition at line 2286 of file dlmalloc.c.
#define set_free_with_pinuse | ( | p, | |
s, | |||
n | |||
) | (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, | |||
s | |||
) |
Definition at line 3056 of file dlmalloc.c.
#define set_inuse_and_pinuse | ( | M, | |
p, | |||
s | |||
) |
Definition at line 3061 of file dlmalloc.c.
#define set_lock | ( | M, | |
L | |||
) |
Definition at line 2668 of file dlmalloc.c.
#define set_size_and_pinuse_of_free_chunk | ( | p, | |
s | |||
) | ((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, | |||
s | |||
) | ((p)->head = (s|PINUSE_BIT|CINUSE_BIT)) |
Definition at line 3066 of file dlmalloc.c.
#define should_trim | ( | M, | |
s | |||
) | ((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.
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.
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.
Definition at line 2836 of file dlmalloc.c.
#define TREEBIN_SHIFT (8U) |
Definition at line 2579 of file dlmalloc.c.
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, | |||
S | |||
) |
Definition at line 3795 of file dlmalloc.c.
#define unlink_first_small_chunk | ( | M, | |
B, | |||
P, | |||
I | |||
) |
Definition at line 3617 of file dlmalloc.c.
#define unlink_large_chunk | ( | M, | |
X | |||
) |
Definition at line 3718 of file dlmalloc.c.
#define unlink_small_chunk | ( | M, | |
P, | |||
S | |||
) |
Definition at line 3591 of file dlmalloc.c.
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 |
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 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.
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