4#define MALLOC_INSPECT_ALL 1
7#define USE_SPIN_LOCKS 1
20#define BIT_ALLOCATOR_BLOCK (4096ul)
21#define BIT_ALLOCATOR_BLOCK_MASK (BIT_ALLOCATOR_BLOCK - 1)
22#define BITS_PER_PAGE (BIT_ALLOCATOR_BLOCK * 8ul)
31 void *usable_area = alloc + 1;
33 void *alligned_start =
36 size_t alligned_size = size - (((size_t) alligned_start) - ((size_t) _alloc));
44 alligned_pages -= bitmap_pages;
48 alloc->
start = alligned_start;
52 alloc->
root = create_mspace(0, 1);
72 data = mspace_malloc(alloc->
root, size);
76 __sync_fetch_and_add(&(_alloc->alloc_ns[!!data]),
78 __sync_fetch_and_add(&(_alloc->allocs[!!data]), 1);
92 mspace_free(alloc->
root, mem);
96 __sync_fetch_and_add(&(_alloc->free_ns),
98 __sync_fetch_and_add(&(_alloc->frees), 1);
106 destroy_mspace(alloc->
root);
111 struct mallinfo minfo = mspace_mallinfo(mspace);
125 stats.allocs[0] = _alloc->allocs[0];
126 stats.allocs[1] = _alloc->allocs[1];
127 stats.frees = _alloc->frees;
128 stats.alloc_ns[0] = _alloc->alloc_ns[0];
129 stats.alloc_ns[1] = _alloc->alloc_ns[1];
130 stats.free_ns = _alloc->free_ns;
136 void *arg),
void *arg)
140 mspace_inspect_all(alloc->
root, inspector, arg);
167 alloc->
root = create_mspace(0, 1);
#define arax_assert(EXPR)
struct utils_bitmap utils_bitmap_s
#define utils_timer_get_duration_ns(NAME)
#define utils_timer_set(NAME, WHAT)
size_t utils_bitmap_alloc_bits(utils_bitmap_s *bmp, size_t bits)
utils_bitmap_s * utils_bitmap_init(void *mem, size_t size_bits)
void utils_bitmap_free_bits(utils_bitmap_s *bmp, size_t start, size_t bits)
MALLINFO_FIELD_TYPE arena
MALLINFO_FIELD_TYPE uordblks
void * arax_ummap(void *a, size_t s)
arch_alloc_s * arch_alloc_create_sub_alloc(arch_alloc_s *parent)
#define BIT_ALLOCATOR_BLOCK_MASK
int arch_alloc_init_once(arch_alloc_s *_alloc, size_t size)
utils_bitmap_s * arch_alloc_get_bitmap()
void * arax_mmap(size_t s)
arch_alloc_stats_s arch_alloc_stats(arch_alloc_s *_alloc)
void arch_alloc_inspect(arch_alloc_s *_alloc, void(*inspector)(void *start, void *end, size_t size, void *arg), void *arg)
static void _arch_alloc_mspace_mallinfo(mspace *mspace, arch_alloc_stats_s *stats)
void arch_alloc_exit(arch_alloc_s *_alloc)
void arch_alloc_init_always(arch_alloc_s *alloc)
#define BIT_ALLOCATOR_BLOCK
void * arch_alloc_allocate(arch_alloc_s *_alloc, size_t size)
static struct arch_alloc_inner_s * global_alloc
void _arch_alloc_free(arch_alloc_s *_alloc, void *mem)