|
XenevaOS
|
#include <stdint.h>#include <string.h>
Classes | |
| struct | malloc_chunk |
| struct | malloc_tree_chunk |
| struct | malloc_segment |
| struct | malloc_state |
| struct | malloc_params |
Macros | |
| #define | LACKS_UNISTD_H |
| #define | LACKS_FCNTL_H |
| #define | LACKS_SYS_PARAM_H |
| #define | stderr 0 |
| #define | HAVE_MORECORE 1 |
| #define | MORECORE au_request_page |
| #define | MORECORE_CONTIGUOUS 1 |
| #define | MORECORE_CANNOT_TRIM 0 |
| #define | USE_DL_PREFIX |
| #define | LACKS_TIME_H |
| #define | USE_LOCKS 0 |
| #define | MALLOC_FAILURE_ACTION |
| #define | CALL_MMAP(size) au_request_page(size) |
| #define | CALL_MUNMAP(ptr, size) au_free_page(ptr, size) |
| #define | HAVE_MMAP 1 |
| #define | HAVE_MREMAP 0 |
| #define | NO_MALLINFO 1 |
| #define | NO_MALLOC_STATS 1 |
| #define | DEFAULT_GRANULARITY 64 |
| #define | DLMALLOC_VERSION 20806 |
| #define | DLMALLOC_EXPORT extern |
| #define | MORECORE_CONTIGUOUS 0 |
| #define | HAVE_MMAP 0 |
| #define | HAVE_MREMAP 0 |
| #define | LACKS_UNISTD_H 1 |
| #define | LACKS_SYS_TYPES_H 1 |
| #define | LACKS_SYS_MMAN_H 1 |
| #define | LACKS_FCNTL_H 1 |
| #define | LACKS_TIME_H 1 |
| #define | ABORT for(;;); |
| #define | LACKS_STDLIB_H 1 |
| #define | LACKS_STRING_H 1 |
| #define | LACKS_WINDOWS_H 1 |
| #define | LACKS_ERRNO_H 1 |
| #define | NO_MALLOC_STATS 1 |
| #define | EINVAL 22 |
| #define | ENOMEM 12 |
| #define | ENOTSUP 95 |
| #define | errno _kernel_errno |
| #define | errno 0 |
| #define | MORECORE_FAILURE ((void*)(-1)) |
| #define | MAX_SIZE_T (~(size_t)0) |
| #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_ON_ASSERT_FAILURE 1 |
| #define | PROCEED_ON_ERROR 0 |
| #define | INSECURE 0 |
| #define | MALLOC_INSPECT_ALL 0 |
| #define | MMAP_CLEARS 1 |
| #define | MORECORE_DEFAULT sbrk |
| #define | DEFAULT_TRIM_THRESHOLD MAX_SIZE_T |
| #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 | MALLINFO_FIELD_TYPE size_t |
| #define | NO_SEGMENT_TRAVERSAL 0 |
| #define | M_TRIM_THRESHOLD (-1) |
| #define | M_GRANULARITY (-2) |
| #define | M_MMAP_THRESHOLD (-3) |
| #define | NOINLINE |
| #define | FORCEINLINE |
| #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(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 | USE_LOCK_BIT (0U) |
| #define | INITIAL_LOCK(l) (0) |
| #define | DESTROY_LOCK(l) (0) |
| #define | ACQUIRE_MALLOC_GLOBAL_LOCK() |
| #define | RELEASE_MALLOC_GLOBAL_LOCK() |
| #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) |
| #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) (0) |
| #define | TOP_FOOT_SIZE (align_offset(chunk2mem(0))+pad_request(sizeof(struct malloc_segment))+MIN_CHUNK_SIZE) |
| #define | PREACTION(M) (0) |
| #define | POSTACTION(M) |
| #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 unsigned long | DWORD |
| typedef void * | HANDLE |
| typedef void * | PVOID |
| typedef long | LONG |
| 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 ABORT for(;;); |
| #define ABORT_ON_ASSERT_FAILURE 1 |
| #define ACQUIRE_MALLOC_GLOBAL_LOCK | ( | ) |
| #define align_as_chunk | ( | A | ) | (mchunkptr)((A) + align_offset(chunk2mem(A))) |
| #define align_offset | ( | A | ) |
| #define assert | ( | x | ) |
| #define bit_for_tree_index | ( | i | ) | (i == NTREEBINS-1)? (SIZE_T_BITSIZE-1) : (((i) >> 1) + TREEBIN_SHIFT - 2) |
| #define CALL_DIRECT_MMAP | ( | s | ) | DIRECT_MMAP_DEFAULT(s) |
| #define CALL_MMAP | ( | s | ) | MMAP_DEFAULT(s) |
| #define CALL_MMAP | ( | size | ) | au_request_page(size) |
| #define CALL_MORECORE | ( | S | ) | MORECORE(S) |
Define CALL_MORECORE
| #define CALL_MREMAP | ( | addr, | |
| osz, | |||
| nsz, | |||
| mv | |||
| ) | MFAIL |
Define CALL_MREMAP
| #define CALL_MUNMAP | ( | a, | |
| s | |||
| ) | MUNMAP_DEFAULT((a), (s)) |
| #define CALL_MUNMAP | ( | ptr, | |
| size | |||
| ) | au_free_page(ptr, size) |
| #define calloc_must_clear | ( | p | ) | (!is_mmapped(p)) |
| #define check_free_chunk | ( | M, | |
| P | |||
| ) |
| #define check_inuse_chunk | ( | M, | |
| P | |||
| ) |
| #define check_malloc_state | ( | M | ) |
| #define check_malloced_chunk | ( | M, | |
| P, | |||
| N | |||
| ) |
| #define check_mmapped_chunk | ( | M, | |
| P | |||
| ) |
| #define check_top_chunk | ( | M, | |
| P | |||
| ) |
| #define chunk2mem | ( | p | ) | ((void*)((char*)(p) + TWO_SIZE_T_SIZES)) |
| #define CHUNK_ALIGN_MASK (MALLOC_ALIGNMENT - SIZE_T_ONE) |
| #define chunk_minus_offset | ( | p, | |
| s | |||
| ) | ((mchunkptr)(((char*)(p)) - (s))) |
| #define CHUNK_OVERHEAD (SIZE_T_SIZE) |
| #define chunk_plus_offset | ( | p, | |
| s | |||
| ) | ((mchunkptr)(((char*)(p)) + (s))) |
| #define chunksize | ( | p | ) | ((p)->head & ~(FLAG_BITS)) |
| #define cinuse | ( | p | ) | ((p)->head & CINUSE_BIT) |
| #define CINUSE_BIT (SIZE_T_TWO) |
| #define clear_flag4 | ( | p | ) | ((p)->head &= ~FLAG4_BIT) |
| #define clear_pinuse | ( | p | ) | ((p)->head &= ~PINUSE_BIT) |
| #define clear_smallmap | ( | M, | |
| i | |||
| ) | ((M)->smallmap &= ~idx2bit(i)) |
| #define clear_treemap | ( | M, | |
| i | |||
| ) | ((M)->treemap &= ~idx2bit(i)) |
| #define CMFAIL ((char*)(MFAIL)) /* defined for convenience */ |
| #define compute_bit2idx | ( | X, | |
| I | |||
| ) |
| #define compute_tree_index | ( | S, | |
| I | |||
| ) |
| #define CORRUPTION_ERROR_ACTION | ( | m | ) | ABORT |
| #define DEBUG 0 |
| #define DEFAULT_GRANULARITY 64 |
| #define DEFAULT_TRIM_THRESHOLD MAX_SIZE_T |
| #define DESTROY_LOCK | ( | l | ) | (0) |
| #define DIRECT_MMAP_DEFAULT | ( | s | ) | MMAP_DEFAULT(s) |
| #define disable_contiguous | ( | M | ) | ((M)->mflags |= USE_NONCONTIGUOUS_BIT) |
| #define disable_lock | ( | M | ) |
| #define disable_mmap | ( | M | ) | ((M)->mflags &= ~USE_MMAP_BIT) |
| #define DLMALLOC_EXPORT extern |
| #define DLMALLOC_VERSION 20806 |
| #define EINVAL 22 |
| #define enable_lock | ( | M | ) | ((M)->mflags |= USE_LOCK_BIT) |
| #define enable_mmap | ( | M | ) | ((M)->mflags |= USE_MMAP_BIT) |
| #define ENOMEM 12 |
| #define ENOTSUP 95 |
| #define ensure_initialization | ( | ) | (void)(mparams.magic != 0 || init_mparams()) |
| #define errno _kernel_errno |
| #define errno 0 |
| #define EXTERN_BIT (8U) |
| #define FENCEPOST_HEAD (INUSE_BITS|SIZE_T_SIZE) |
| #define FLAG4_BIT (SIZE_T_FOUR) |
| #define flag4inuse | ( | p | ) | ((p)->head & FLAG4_BIT) |
| #define FLAG_BITS (PINUSE_BIT|CINUSE_BIT|FLAG4_BIT) |
| #define fm gm |
| #define FOOTERS 0 |
| #define FORCEINLINE |
| #define FOUR_SIZE_T_SIZES (SIZE_T_SIZE<<2) |
| #define get_foot | ( | p, | |
| s | |||
| ) | (((mchunkptr)((char*)(p) + (s)))->prev_foot) |
| #define gm (&_gm_) |
| #define granularity_align | ( | S | ) |
| #define HALF_MAX_SIZE_T (MAX_SIZE_T / 2U) |
| #define HAVE_MMAP 1 |
| #define HAVE_MMAP 0 |
| #define HAVE_MORECORE 1 |
| #define HAVE_MREMAP 0 |
| #define HAVE_MREMAP 0 |
| #define idx2bit | ( | i | ) | ((binmap_t)(1) << (i)) |
| #define INITIAL_LOCK | ( | l | ) | (0) |
| #define INSECURE 0 |
| #define insert_chunk | ( | M, | |
| P, | |||
| S | |||
| ) |
| #define insert_large_chunk | ( | M, | |
| X, | |||
| S | |||
| ) |
| #define insert_small_chunk | ( | M, | |
| P, | |||
| S | |||
| ) |
| #define internal_free | ( | m, | |
| mem | |||
| ) | dlfree(mem) |
| #define internal_malloc | ( | m, | |
| b | |||
| ) | dlmalloc(b) |
| #define INUSE_BITS (PINUSE_BIT|CINUSE_BIT) |
| #define is_aligned | ( | A | ) | (((size_t)((A)) & (CHUNK_ALIGN_MASK)) == 0) |
| #define is_extern_segment | ( | S | ) | ((S)->sflags & EXTERN_BIT) |
| #define is_global | ( | M | ) | ((M) == &_gm_) |
| #define is_granularity_aligned | ( | S | ) | (((size_t)(S) & (mparams.granularity - SIZE_T_ONE)) == 0) |
| #define is_initialized | ( | M | ) | ((M)->top != 0) |
| #define is_inuse | ( | p | ) | (((p)->head & INUSE_BITS) != PINUSE_BIT) |
| #define is_mmapped | ( | p | ) | (((p)->head & INUSE_BITS) == 0) |
| #define is_mmapped_segment | ( | S | ) | ((S)->sflags & USE_MMAP_BIT) |
| #define is_page_aligned | ( | S | ) | (((size_t)(S) & (mparams.page_size - SIZE_T_ONE)) == 0) |
| #define is_small | ( | s | ) | (((s) >> SMALLBIN_SHIFT) < NSMALLBINS) |
| #define LACKS_ERRNO_H 1 |
| #define LACKS_FCNTL_H |
| #define LACKS_FCNTL_H 1 |
| #define LACKS_STDLIB_H 1 |
| #define LACKS_STRING_H 1 |
| #define LACKS_SYS_MMAN_H 1 |
| #define LACKS_SYS_PARAM_H |
| #define LACKS_SYS_TYPES_H 1 |
| #define LACKS_TIME_H |
| #define LACKS_TIME_H 1 |
| #define LACKS_UNISTD_H |
| #define LACKS_UNISTD_H 1 |
| #define LACKS_WINDOWS_H 1 |
| #define least_bit | ( | x | ) | ((x) & -(x)) |
| #define left_bits | ( | x | ) | ((x<<1) | -(x<<1)) |
| #define leftshift_for_tree_index | ( | i | ) |
| #define LOCK_AT_FORK 0 |
| #define M_GRANULARITY (-2) |
| #define M_MMAP_THRESHOLD (-3) |
| #define M_TRIM_THRESHOLD (-1) |
| #define MALLINFO_FIELD_TYPE size_t |
| #define MALLOC_ALIGNMENT ((size_t)(2 * sizeof(void *))) |
| #define MALLOC_FAILURE_ACTION |
| #define malloc_getpagesize ((size_t)4096U) |
| #define MALLOC_INSPECT_ALL 0 |
| #define mark_inuse_foot | ( | M, | |
| p, | |||
| s | |||
| ) |
| #define mark_smallmap | ( | M, | |
| i | |||
| ) | ((M)->smallmap |= idx2bit(i)) |
| #define mark_treemap | ( | M, | |
| i | |||
| ) | ((M)->treemap |= idx2bit(i)) |
| #define MAX_RELEASE_CHECK_RATE 4095 |
| #define MAX_REQUEST ((-MIN_CHUNK_SIZE) << 2) |
| #define MAX_SIZE_T (~(size_t)0) |
| #define MAX_SMALL_REQUEST (MAX_SMALL_SIZE - CHUNK_ALIGN_MASK - CHUNK_OVERHEAD) |
| #define MAX_SMALL_SIZE (MIN_LARGE_SIZE - SIZE_T_ONE) |
| #define MCHUNK_SIZE (sizeof(mchunk)) |
| #define mem2chunk | ( | mem | ) | ((mchunkptr)((char*)(mem) - TWO_SIZE_T_SIZES)) |
| #define MFAIL ((void*)(MAX_SIZE_T)) |
| #define MIN_CHUNK_SIZE ((MCHUNK_SIZE + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) |
| #define MIN_LARGE_SIZE (SIZE_T_ONE << TREEBIN_SHIFT) |
| #define MIN_REQUEST (MIN_CHUNK_SIZE - CHUNK_OVERHEAD - SIZE_T_ONE) |
| #define MIN_SMALL_INDEX (small_index(MIN_CHUNK_SIZE)) |
| #define minsize_for_tree_index | ( | i | ) |
| #define mmap_align | ( | S | ) | page_align(S) |
| #define MMAP_CHUNK_OVERHEAD (TWO_SIZE_T_SIZES) |
| #define MMAP_CLEARS 1 |
| #define MMAP_DEFAULT | ( | s | ) |
| #define MMAP_FLAGS (MAP_PRIVATE) |
| #define MMAP_FOOT_PAD (FOUR_SIZE_T_SIZES) |
| #define MMAP_PROT (PROT_READ|PROT_WRITE) |
| #define MORECORE au_request_page |
| #define MORECORE_CANNOT_TRIM 0 |
| #define MORECORE_CONTIGUOUS 1 |
| #define MORECORE_CONTIGUOUS 0 |
| #define MORECORE_DEFAULT sbrk |
| #define MORECORE_FAILURE ((void*)(-1)) |
| #define MSPACES 0 |
| #define MUNMAP_DEFAULT | ( | a, | |
| s | |||
| ) | munmap((a), (s)) |
| #define next_pinuse | ( | p | ) | ((next_chunk(p)->head) & PINUSE_BIT) |
| #define NO_MALLINFO 1 |
| #define NO_MALLOC_STATS 1 |
| #define NO_MALLOC_STATS 1 |
| #define NO_SEGMENT_TRAVERSAL 0 |
| #define NOINLINE |
| #define NSMALLBINS (32U) |
| #define NTREEBINS (32U) |
| #define ok_address | ( | M, | |
| a | |||
| ) | ((char*)(a) >= (M)->least_addr) |
| #define ok_inuse | ( | p | ) | is_inuse(p) |
| #define ok_magic | ( | M | ) | (1) |
| #define ok_next | ( | p, | |
| n | |||
| ) | ((char*)(p) < (char*)(n)) |
| #define ok_pinuse | ( | p | ) | pinuse(p) |
| #define ONLY_MSPACES 0 |
| #define overhead_for | ( | p | ) | (is_mmapped(p)? MMAP_CHUNK_OVERHEAD : CHUNK_OVERHEAD) |
| #define pad_request | ( | req | ) | (((req) + CHUNK_OVERHEAD + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) |
| #define page_align | ( | S | ) | (((S) + (mparams.page_size - SIZE_T_ONE)) & ~(mparams.page_size - SIZE_T_ONE)) |
| #define pinuse | ( | p | ) | ((p)->head & PINUSE_BIT) |
| #define PINUSE_BIT (SIZE_T_ONE) |
| #define POSTACTION | ( | M | ) |
| #define PREACTION | ( | M | ) | (0) |
| #define prev_chunk | ( | p | ) | ((mchunkptr)( ((char*)(p)) - ((p)->prev_foot) )) |
| #define PROCEED_ON_ERROR 0 |
| #define RELEASE_MALLOC_GLOBAL_LOCK | ( | ) |
| #define replace_dv | ( | M, | |
| P, | |||
| S | |||
| ) |
| #define request2size | ( | req | ) | (((req) < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(req)) |
| #define RTCHECK | ( | e | ) | (e) |
| #define same_or_left_bits | ( | x | ) | ((x) | -(x)) |
| #define segment_holds | ( | S, | |
| A | |||
| ) | ((char*)(A) >= S->base && (char*)(A) < S->base + S->size) |
| #define set_flag4 | ( | p | ) | ((p)->head |= FLAG4_BIT) |
| #define set_foot | ( | p, | |
| s | |||
| ) | (((mchunkptr)((char*)(p) + (s)))->prev_foot = (s)) |
| #define set_free_with_pinuse | ( | p, | |
| s, | |||
| n | |||
| ) | (clear_pinuse(n), set_size_and_pinuse_of_free_chunk(p, s)) |
| #define set_inuse | ( | M, | |
| p, | |||
| s | |||
| ) |
| #define set_inuse_and_pinuse | ( | M, | |
| p, | |||
| s | |||
| ) |
| #define set_lock | ( | M, | |
| L | |||
| ) |
| #define set_size_and_pinuse_of_free_chunk | ( | p, | |
| s | |||
| ) | ((p)->head = (s|PINUSE_BIT), set_foot(p, s)) |
| #define set_size_and_pinuse_of_inuse_chunk | ( | M, | |
| p, | |||
| s | |||
| ) | ((p)->head = (s|PINUSE_BIT|CINUSE_BIT)) |
| #define should_trim | ( | M, | |
| s | |||
| ) | (0) |
| #define SIX_SIZE_T_SIZES (FOUR_SIZE_T_SIZES+TWO_SIZE_T_SIZES) |
| #define SIZE_T_BITSIZE (sizeof(size_t) << 3) |
| #define SIZE_T_FOUR ((size_t)4) |
| #define SIZE_T_ONE ((size_t)1) |
| #define SIZE_T_SIZE (sizeof(size_t)) |
| #define SIZE_T_TWO ((size_t)2) |
| #define SIZE_T_ZERO ((size_t)0) |
| #define small_index | ( | s | ) | (bindex_t)((s) >> SMALLBIN_SHIFT) |
| #define small_index2size | ( | i | ) | ((i) << SMALLBIN_SHIFT) |
| #define smallbin_at | ( | M, | |
| i | |||
| ) | ((sbinptr)((char*)&((M)->smallbins[(i)<<1]))) |
| #define SMALLBIN_SHIFT (3U) |
| #define SMALLBIN_WIDTH (SIZE_T_ONE << SMALLBIN_SHIFT) |
| #define smallmap_is_marked | ( | M, | |
| i | |||
| ) | ((M)->smallmap & idx2bit(i)) |
| #define stderr 0 |
| #define SYS_ALLOC_PADDING (TOP_FOOT_SIZE + MALLOC_ALIGNMENT) |
| #define TOP_FOOT_SIZE (align_offset(chunk2mem(0))+pad_request(sizeof(struct malloc_segment))+MIN_CHUNK_SIZE) |
| #define treebin_at | ( | M, | |
| i | |||
| ) | (&((M)->treebins[i])) |
| #define TREEBIN_SHIFT (8U) |
| #define treemap_is_marked | ( | M, | |
| i | |||
| ) | ((M)->treemap & idx2bit(i)) |
| #define TWO_SIZE_T_SIZES (SIZE_T_SIZE<<1) |
| #define unlink_chunk | ( | M, | |
| P, | |||
| S | |||
| ) |
| #define unlink_first_small_chunk | ( | M, | |
| B, | |||
| P, | |||
| I | |||
| ) |
| #define unlink_large_chunk | ( | M, | |
| X | |||
| ) |
| #define unlink_small_chunk | ( | M, | |
| P, | |||
| S | |||
| ) |
| #define USAGE_ERROR_ACTION | ( | m, | |
| p | |||
| ) | ABORT |
| #define USE_BUILTIN_FFS 0 |
| #define USE_DEV_RANDOM 0 |
| #define USE_DL_PREFIX |
| #define use_lock | ( | M | ) | ((M)->mflags & USE_LOCK_BIT) |
| #define USE_LOCK_BIT (0U) |
| #define USE_LOCKS 0 |
| #define use_mmap | ( | M | ) | ((M)->mflags & USE_MMAP_BIT) |
| #define USE_MMAP_BIT (SIZE_T_ONE) |
Define CALL_MMAP/CALL_MUNMAP/CALL_DIRECT_MMAP
| #define use_noncontiguous | ( | M | ) | ((M)->mflags & USE_NONCONTIGUOUS_BIT) |
| #define USE_NONCONTIGUOUS_BIT (4U) |
| #define USE_SPIN_LOCKS 0 |
| typedef unsigned int bindex_t |
| typedef unsigned int binmap_t |
| typedef unsigned long DWORD |
| typedef unsigned int flag_t |
| typedef void* HANDLE |
| typedef long LONG |
| typedef struct malloc_chunk mchunk |
| typedef struct malloc_chunk* mchunkptr |
| typedef struct malloc_segment msegment |
| typedef struct malloc_segment* msegmentptr |
| typedef struct malloc_state* mstate |
| typedef void* PVOID |
| typedef struct malloc_chunk* sbinptr |
| typedef struct malloc_tree_chunk* tbinptr |
| typedef struct malloc_tree_chunk tchunk |
| typedef struct malloc_tree_chunk* tchunkptr |
|
extern |
BSD 2-Clause License
Copyright (c) 2022 - 2023, Manas Kamal Choudhury All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
extern |
| DLMALLOC_EXPORT size_t dlbulk_free | ( | void ** | , |
| size_t | n_elements | ||
| ) |
| DLMALLOC_EXPORT void dlfree | ( | void * | mem | ) |
| DLMALLOC_EXPORT void ** dlindependent_calloc | ( | size_t | , |
| size_t | , | ||
| void ** | |||
| ) |
| DLMALLOC_EXPORT void ** dlindependent_comalloc | ( | size_t | , |
| size_t * | , | ||
| void ** | |||
| ) |
| DLMALLOC_EXPORT void * dlmalloc | ( | size_t | bytes | ) |
| size_t dlmalloc_footprint | ( | void | ) |
| size_t dlmalloc_footprint_limit | ( | void | ) |
| size_t dlmalloc_max_footprint | ( | void | ) |
| DLMALLOC_EXPORT void dlmalloc_stats | ( | void | ) |
| int dlmalloc_trim | ( | size_t | pad | ) |
| size_t dlmalloc_usable_size | ( | void * | mem | ) |
| int dlmallopt | ( | int | param_number, |
| int | value | ||
| ) |
| void * dlpvalloc | ( | size_t | bytes | ) |
| void * dlrealloc | ( | void * | oldmem, |
| size_t | bytes | ||
| ) |
| void * dlrealloc_in_place | ( | void * | oldmem, |
| size_t | bytes | ||
| ) |
| void * dlvalloc | ( | size_t | bytes | ) |
|
extern |