Macro definitions used throughout the prism library.
#define PM_FLEX_ARY_LEN
A macro for defining a flexible array member.
Definition defines.h:290
#define PRISM_EXPORTED_FUNCTION
By default, we compile with -fvisibility=hidden.
Definition defines.h:53
void * pm_arena_zalloc(pm_arena_t *arena, size_t size, size_t alignment)
Allocate zero-initialized memory from the arena.
Definition pm_arena.c:75
struct pm_arena_block pm_arena_block_t
A single block of memory in the arena.
void * pm_arena_memdup(pm_arena_t *arena, const void *src, size_t size, size_t alignment)
Allocate memory from the arena and copy the given data into it.
Definition pm_arena.c:85
void * pm_arena_alloc(pm_arena_t *arena, size_t size, size_t alignment)
Allocate memory from the arena.
Definition pm_arena.c:37
PRISM_EXPORTED_FUNCTION void pm_arena_free(pm_arena_t *arena)
Free all blocks in the arena.
Definition pm_arena.c:95
A single block of memory in the arena.
Definition pm_arena.h:20
struct pm_arena_block * prev
The previous block in the chain (for freeing).
Definition pm_arena.h:22
char data[PM_FLEX_ARY_LEN]
The block's data.
Definition pm_arena.h:31
size_t used
The number of bytes consumed so far.
Definition pm_arena.h:28
size_t capacity
The total usable bytes in data[].
Definition pm_arena.h:25
A bump allocator.
Definition pm_arena.h:39
size_t block_count
The number of blocks allocated.
Definition pm_arena.h:44
pm_arena_block_t * current
The active block (allocate from here).
Definition pm_arena.h:41