From 192d5db2a58f942ac598eeecf5978f4277a6ea00 Mon Sep 17 00:00:00 2001 From: jacob Date: Mon, 12 Aug 2024 15:04:27 -0500 Subject: [PATCH] arena_set_readwrite --- src/arena.c | 8 ++++++++ src/arena.h | 1 + src/sys.h | 1 + src/sys_win32.c | 8 +++++++- 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/arena.c b/src/arena.c index 4e030dd4..d64b8cdd 100644 --- a/src/arena.c +++ b/src/arena.c @@ -124,3 +124,11 @@ void arena_set_readonly(struct arena *arena) arena->readonly = true; #endif } + +void arena_set_readwrite(struct arena *arena) +{ +#if RTC + arena->readonly = false; +#endif + sys_memory_set_committed_readwrite(arena->base, arena->committed); +} diff --git a/src/arena.h b/src/arena.h index 38e7e1d0..36b84894 100644 --- a/src/arena.h +++ b/src/arena.h @@ -33,6 +33,7 @@ void *_arena_push_bytes(struct arena *arena, u64 size, u64 align); void arena_copy_replace(struct arena *dest, struct arena *src); void arena_decommit_unused_blocks(struct arena *arena); void arena_set_readonly(struct arena *arena); +void arena_set_readwrite(struct arena *arena); INLINE void *_arena_push_bytes_zero(struct arena *arena, u64 size, u64 align) { diff --git a/src/sys.h b/src/sys.h index df5e708b..2840a843 100644 --- a/src/sys.h +++ b/src/sys.h @@ -168,6 +168,7 @@ void *sys_memory_commit(void *address, u64 size); void sys_memory_decommit(void *address, u64 size); void sys_memory_set_committed_readonly(void *address, u64 size); +void sys_memory_set_committed_readwrite(void *address, u64 size); /* ========================== * * Time diff --git a/src/sys_win32.c b/src/sys_win32.c index da3e64e7..644c85b2 100644 --- a/src/sys_win32.c +++ b/src/sys_win32.c @@ -208,10 +208,16 @@ void sys_memory_decommit(void *address, u64 size) void sys_memory_set_committed_readonly(void *address, u64 size) { - DWORD old = PAGE_READWRITE; + DWORD old; VirtualProtect(address, size, PAGE_READONLY, &old); } +void sys_memory_set_committed_readwrite(void *address, u64 size) +{ + DWORD old; + VirtualProtect(address, size, PAGE_READWRITE, &old); +} + /* ========================== * * Time * ========================== */