Add mmap allocator

This commit is contained in:
Nils O. Selåsdal
2026-06-07 02:27:56 +02:00
parent 256de68410
commit c31aff806d
7 changed files with 116 additions and 51 deletions
+7 -16
View File
@@ -1,25 +1,13 @@
#pragma once
#include "base_core.h"
#if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
#include <sanitizer/asan_interface.h>
#define ASAN_POISON_MEMORY_REGION(addr, size) \
__asan_poison_memory_region((addr), (size))
#define ASAN_UNPOISON_MEMORY_REGION(addr, size) \
__asan_unpoison_memory_region((addr), (size))
#else
#define ASAN_POISON_MEMORY_REGION(addr, size) \
((void)(addr), (void)(size))
#define ASAN_UNPOISON_MEMORY_REGION(addr, size) \
((void)(addr), (void)(size))
#endif
typedef U32 ArenaFlags;
enum {
ArenaFlag_UseMalloc = (1 << 0),
};
typedef struct ArenaParams ArenaParams;
enum {
ArenaFlag_UseMalloc = (1 << 0),
};
struct ArenaParams {
U32 size;
ArenaFlags flags; // No flags defined yet
@@ -52,10 +40,13 @@ static INLINE U32 arena_available(const Arena *arena)
return arena->size - arena->pos;
}
Arena *arena_alloc_(const ArenaParams *params);
Arena *arena_alloc(const ArenaParams *params);
void arena_free(Arena *arena);
void *arena_push(Arena *arena, U32 size, U32 align);
#define arena_push_type(arena, type) arena_push(arena, (U32)sizeof(type), alignof(type))
#define arena_push_array_of(arena, type, len) arena_push(arena, (U32) (sizeof(type) * (len)), alignof(type))
ArenaCheckPoint arena_temp_begin(Arena *arena);
void arena_temp_end(ArenaCheckPoint *checkpoint);
void arena_pop_to(Arena *arena, U32 abs_pos);