From 18448dd7c1bf2965b05928e32aeb7729c650a539 Mon Sep 17 00:00:00 2001 From: Abdelrahman Date: Sun, 2 Jun 2024 20:09:08 +0100 Subject: [PATCH] Define memory allocation and deallocation functions --- src/mem/util/mem_utils.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/mem/util/mem_utils.h b/src/mem/util/mem_utils.h index 851117f..f2a54e8 100644 --- a/src/mem/util/mem_utils.h +++ b/src/mem/util/mem_utils.h @@ -2,12 +2,49 @@ #define MEM_UTILS_H #include "aliases.h" +#include "platform.h" + +#if defined(WAPP_PLATFORM_WINDOWS) +#include +#include +#elif defined(WAPP_PLATFORM_POSIX) +#include +#else +#error "Unrecognised platform" +#endif #ifdef __cplusplus extern "C" { #endif // __cplusplus +typedef enum mem_access { + WAPP_MEM_ACCESS_NONE, + WAPP_MEM_ACCESS_READ_ONLY, + WAPP_MEM_ACCESS_EXEC_ONLY, + WAPP_MEM_ACCESS_READ_WRITE, + WAPP_MEM_ACCESS_READ_EXEC, + WAPP_MEM_ACCESS_READ_WRITE_EXEC, +} MemAccess; + +typedef enum mem_alloc_flags { +#if defined(WAPP_PLATFORM_WINDOWS) + WAPP_MEM_ALLOC_RESERVE = MEM_RESERVE, + WAPP_MEM_ALLOC_COMMIT = MEM_COMMIT, +#elif defined(WAPP_PLATFORM_POSIX) + WAPP_MEM_ALLOC_RESERVE = 0, + WAPP_MEM_ALLOC_COMMIT = MAP_POPULATE, +#endif +} MemAllocFlags; + +typedef enum mem_init_type { + WAPP_MEM_INIT_UNINITIALISED, + WAPP_MEM_INIT_INITIALISED, +} MemInitType; + void *wapp_mem_util_align_forward(void *ptr, u64 alignment); +void *wapp_mem_util_alloc(u64 size, MemAccess access, MemAllocFlags flags, + MemInitType type); +void wapp_mem_util_free(void *ptr, u64 size); #ifdef __cplusplus }