From 70e6daf2dd47ab20957cf3c7129d4f61c606c8b9 Mon Sep 17 00:00:00 2001 From: Allen Webster Date: Fri, 13 Aug 2021 11:28:01 -0700 Subject: [PATCH] linux low level memory implementation (not tested on linux yet) --- source/md.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/source/md.c b/source/md.c index fc91a8d..8f9811c 100644 --- a/source/md.c +++ b/source/md.c @@ -207,8 +207,28 @@ MD_LINUX_FileIterIncrement(MD_Arena *arena, MD_FileIter *opaque_it, MD_String8 p # define MD_IMPL_Release MD_LINUX_Release #endif -// TODO(allen): implement -# error not implemented +static void* +MD_LINUX_Reserve(MD_u64 size){ + void *result = mmap(0, size, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, (off_t)0); + return(result); +} + +static void +MD_LINUX_Commit(void *ptr, MD_u64 size){ + mprotect(ptr, size, PROT_READ|PROT_WRITE); +} + +static void +MD_LINUX_Decommit(void *ptr, MD_u64 size){ + mprotect(ptr, size, PROT_NONE); + madvise(ptr, size, MADV_DONTNEED); +} + +static void +MD_LINUX_Release(void *ptr, MD_u64 size){ + munmap(ptr, size); +} + #endif //~/////////////////////////////////////////////////////////////////////////////