Changeset View
Changeset View
Standalone View
Standalone View
src/support/lockedpool.cpp
Show First 20 Lines • Show All 244 Lines • ▼ Show 20 Lines | |||||
#endif | #endif | ||||
void *PosixLockedPageAllocator::AllocateLocked(size_t len, | void *PosixLockedPageAllocator::AllocateLocked(size_t len, | ||||
bool *lockingSuccess) { | bool *lockingSuccess) { | ||||
void *addr; | void *addr; | ||||
len = align_up(len, page_size); | len = align_up(len, page_size); | ||||
addr = mmap(nullptr, len, PROT_READ | PROT_WRITE, | addr = mmap(nullptr, len, PROT_READ | PROT_WRITE, | ||||
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); | ||||
if (addr == MAP_FAILED) { | |||||
return nullptr; | |||||
} | |||||
if (addr) { | if (addr) { | ||||
*lockingSuccess = mlock(addr, len) == 0; | *lockingSuccess = mlock(addr, len) == 0; | ||||
} | } | ||||
return addr; | return addr; | ||||
} | } | ||||
void PosixLockedPageAllocator::FreeLocked(void *addr, size_t len) { | void PosixLockedPageAllocator::FreeLocked(void *addr, size_t len) { | ||||
len = align_up(len, page_size); | len = align_up(len, page_size); | ||||
memory_cleanse(addr, len); | memory_cleanse(addr, len); | ||||
▲ Show 20 Lines • Show All 143 Lines • Show Last 20 Lines |