arena_set_readwrite

This commit is contained in:
jacob 2024-08-12 15:04:27 -05:00
parent d17727c133
commit 192d5db2a5
4 changed files with 17 additions and 1 deletions

View File

@ -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);
}

View File

@ -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)
{

View File

@ -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

View File

@ -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
* ========================== */