39 lines
694 B
C
39 lines
694 B
C
|
|
// 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);
|
||
|
|
}
|
||
|
|
|