10#define KiB(bytes) ((u64)bytes << 10)
11#define MiB(bytes) ((u64)bytes << 20)
12#define GiB(bytes) ((u64)bytes << 30)
167#define arena_alloc(arena, type, size) \
168 __arena_alloc(arena, sizeof(type) * size);
187#define arena_dealloc(arena, type, size) \
188 __arena_dealloc(arena, sizeof(type) * size);
void __arena_dealloc(struct arena *arena, u64 size)
Deallocate a chunk of memory from the arena.
Definition arena.c:319
void * __arena_alloc(struct arena *arena, u64 size)
Allocate a chunk of memory to the arena.
Definition arena.c:288
void arena_free(arena_t *arena)
Free an arena.
Definition arena.c:278
struct arena arena_t
An arena.
void arena_clear(arena_t *arena)
Clear the arena.
Definition arena.c:337
temp_arena_t temp_arena_new(arena_t *arena)
Create a new temp_arena.
Definition arena.c:346
void arena_dealloc_to(arena_t *arena, u64 pos)
Set arena position to @pos.
Definition arena.c:330
struct temp_arena temp_arena_t
A temporary arena.
arena_t * arena_new(u64 reserve_size, u64 commit_size)
Create a new arena.
Definition arena.c:255
void temp_arena_free(temp_arena_t temp)
Free a temp_arena.
Definition arena.c:351
uint64_t u64
Definition basictypes.h:17
An arena.
Definition arena.h:26
u64 reserved
Definition arena.h:27
u64 commit_pos
Definition arena.h:30
u64 committed
Definition arena.h:28
u64 pos
Definition arena.h:29
A temporary arena.
Definition arena.h:39
u64 start_pos
Definition arena.h:41
struct arena * arena
Definition arena.h:40