rntviewer/src/mem.h
2024-07-16 17:50:30 +02:00

36 lines
701 B
C

#define ARENA_HEADER_SIZE 128
#define ARENA_COMMIT_SIZE (64 * 1024)
#define ARENA_RESERVE_SIZE (64 * 1024 * 1024)
struct Arena {
Arena *prev;
Arena *cur;
u64 base_pos;
u64 pos;
u64 cmt;
u64 res;
u64 align;
u64 mem_used;
u64 mem_peak_used;
b8 grow;
};
struct Temp {
Arena *arena;
u64 pos;
};
struct Thread_Ctx {
Arena *arenas[2];
};
#define countof(a) (sizeof(a) / sizeof((a)[0]))
internal Arena *arena_alloc();
internal void arena_release(Arena *arena);
internal Arena *tctx_get_scratch(Arena **conflicts, u64 count);
#define scratch_begin(conflicts, count) temp_begin(tctx_get_scratch((conflicts), (count)))
#define scratch_end(scratch) temp_end(scratch)