Changeset View
Changeset View
Standalone View
Standalone View
source/lib/sysdep/os/unix/uvm.cpp
Show All 34 Lines | |||||
static const int mmap_flags = MAP_PRIVATE|MAP_ANONYMOUS; | static const int mmap_flags = MAP_PRIVATE|MAP_ANONYMOUS; | ||||
namespace vm { | namespace vm { | ||||
void* ReserveAddressSpace(size_t size, size_t UNUSED(commitSize), PageType UNUSED(pageType), int UNUSED(prot)) | void* ReserveAddressSpace(size_t size, size_t UNUSED(commitSize), PageType UNUSED(pageType), int UNUSED(prot)) | ||||
{ | { | ||||
errno = 0; | errno = 0; | ||||
#if defined(__FreeBSD__) | |||||
void* p = mmap(0, size, PROT_NONE, mmap_flags, -1, 0); | |||||
#else | |||||
void* p = mmap(0, size, PROT_NONE, mmap_flags|MAP_NORESERVE, -1, 0); | void* p = mmap(0, size, PROT_NONE, mmap_flags|MAP_NORESERVE, -1, 0); | ||||
#endif | |||||
if(p == MAP_FAILED) | if(p == MAP_FAILED) | ||||
return 0; | return 0; | ||||
return p; | return p; | ||||
} | } | ||||
void ReleaseAddressSpace(void* p, size_t size) | void ReleaseAddressSpace(void* p, size_t size) | ||||
{ | { | ||||
ENSURE(size != 0); | ENSURE(size != 0); | ||||
Show All 20 Lines | if(prot != (PROT_READ|PROT_WRITE)) | ||||
(void)Protect(address, size, prot); | (void)Protect(address, size, prot); | ||||
return true; | return true; | ||||
} | } | ||||
bool Decommit(uintptr_t address, size_t size) | bool Decommit(uintptr_t address, size_t size) | ||||
{ | { | ||||
errno = 0; | errno = 0; | ||||
#if defined(__FreeBSD__) | |||||
if(mmap((void*)address, size, PROT_NONE, mmap_flags|MAP_FIXED, -1, 0) == MAP_FAILED) | |||||
#else | |||||
if(mmap((void*)address, size, PROT_NONE, mmap_flags|MAP_NORESERVE|MAP_FIXED, -1, 0) == MAP_FAILED) | if(mmap((void*)address, size, PROT_NONE, mmap_flags|MAP_NORESERVE|MAP_FIXED, -1, 0) == MAP_FAILED) | ||||
#endif | |||||
return false; | return false; | ||||
return true; | return true; | ||||
} | } | ||||
bool Protect(uintptr_t address, size_t size, int prot) | bool Protect(uintptr_t address, size_t size, int prot) | ||||
{ | { | ||||
errno = 0; | errno = 0; | ||||
▲ Show 20 Lines • Show All 48 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator