diff --git a/src/platform.c b/src/platform.c index 4c1b8a8..36ca78a 100644 --- a/src/platform.c +++ b/src/platform.c @@ -23,6 +23,34 @@ void platform_free(void *mem) free(mem); } + +static void *platform_allocator_func(Allocator *allocator, AllocOperation operation , void *memory, U32 size, U32 align) +{ + switch (operation) { + case Alloc_Op_Aligned: + return aligned_alloc(size, align); + + case Alloc_Op_Free: // can't free/Free_all from an marena + free(memory); + return NULL; + + case Alloc_Op_Free_All: + free(memory);; + return NULL; + } + + Assert(false); +} + +Allocator platform_allocator(void) +{ + Allocator allocator = {}; + allocator.op_func_ptr = platform_allocator_func; + allocator.data = NULL; + + return allocator; +} + void *memory_allocate_and_commit(size_t size) { Assert(IsPageAligned(size)); diff --git a/src/platform.h b/src/platform.h index 54c3700..f7932dd 100644 --- a/src/platform.h +++ b/src/platform.h @@ -1,7 +1,11 @@ #pragma once #include +#include "base_core.h" void *platform_malloc(size_t size); +void platform_free(void *mem); +Allocator platform_allocator(void); + U32 platform_page_size(void); // Memory functions expect mem and size to be page aligned