// Virtual memory U64 VM_PageSize() { SYSTEM_INFO info; GetSystemInfo(&info); U64 result = info.dwPageSize; return result; } U64 VM_AllocationGranularity() { SYSTEM_INFO info; GetSystemInfo(&info); U64 result = info.dwAllocationGranularity; return result; } void *VM_Reserve(U64 size) { void *result = VirtualAlloc(0, size, MEM_RESERVE, PAGE_NOACCESS); return result; } B32 VM_Commit(void *base, U64 size) { B32 result = VirtualAlloc(base, size, MEM_COMMIT, PAGE_READWRITE) != 0; return result; } void VM_Decommit(void *base, U64 size) { VirtualFree(base, size, MEM_DECOMMIT); } void VM_Release(void *base, U64 size) { (void) size; VirtualFree(base, 0, MEM_RELEASE); }