3#ifndef PRINTLINES_ALLOWED
4#define PRINTLINES_ALLOWED 0
7static const char *FNAME =
"kest_bump_arena.c";
21static void *kest_bump_arena_alloc_wrapper(
void *data,
size_t size)
26static void *kest_bump_arena_realloc_wrapper(
void *data,
void *ptr,
size_t size)
31static void kest_bump_arena_free_wrapper(
void *data,
void *ptr)
54 uintptr_t addr = (uintptr_t)arena->
base_ua;
55 uintptr_t aligned = (addr + (align - 1)) & ~(uintptr_t)(align - 1);
57 arena->
arena = (
void*)aligned;
61 arena->
alloc.
alloc = kest_bump_arena_alloc_wrapper;
63 arena->
alloc.
free = kest_bump_arena_free_wrapper;
78 KEST_PRINTF(
"kest_bump_arena ERROR: arena has no memory!\n");
89 KEST_PRINTF(
"kest_bump_arena ERROR: Arena exhausted. Capacity: %d bytes; consumed: %d bytes. Requested: %d bytes\n",
94 uint8_t *ptr = (uint8_t*)arena->
arena + arena->
pos;
115 memcpy(new_ptr, p, size);
void kest_free(void *ptr)
void * kest_alloc(size_t size)
int kest_bump_arena_init_empty(kest_bump_arena *arena)
int kest_bump_arena_reset(kest_bump_arena *arena)
int kest_bump_arena_init(kest_bump_arena *arena, size_t capacity)
void * kest_bump_arena_realloc(kest_bump_arena *arena, void *p, size_t size)
void * kest_bump_arena_alloc(kest_bump_arena *arena, size_t size)
int kest_bump_arena_destroy(kest_bump_arena *arena)
#define KEST_BUMP_ARENA_ALLOC_ALIGN
#define KEST_BUMP_ARENA_INIT_ALIGN
void *(* alloc)(void *data, size_t)
void *(* realloc)(void *data, void *, size_t)
void(* free)(void *data, void *)