diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2023-09-12 16:21:59 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-12 16:21:59 +0200 |
| commit | 3dada564bf2e2a6e5b58ca0563b3f3e0ab911dd7 (patch) | |
| tree | 4059a64da6da8d5f0d556e7f2f28e5385c27a669 /Source/Core/Common/MemArenaUnix.cpp | |
| parent | d16bedd5c46a6777854a82590b0032ee8ed05e68 (diff) | |
| parent | 7869abf0e6cd691d37ceb319a29aca4e96396897 (diff) | |
Merge pull request #12177 from AdmiralCurtiss/noreserve
Common/MemArena: Set MAP_NORESERVE in LazyMemoryRegion on Linux.
Diffstat (limited to 'Source/Core/Common/MemArenaUnix.cpp')
| -rw-r--r-- | Source/Core/Common/MemArenaUnix.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/Source/Core/Common/MemArenaUnix.cpp b/Source/Core/Common/MemArenaUnix.cpp index 9bf3633ee2..83026f76b8 100644 --- a/Source/Core/Common/MemArenaUnix.cpp +++ b/Source/Core/Common/MemArenaUnix.cpp @@ -117,6 +117,12 @@ LazyMemoryRegion::~LazyMemoryRegion() Release(); } +#if !defined MAP_NORESERVE && (defined __FreeBSD__ || defined __OpenBSD__ || defined __NetBSD__) +// BSD does not implement MAP_NORESERVE, so define the flag to nothing. +// See https://reviews.freebsd.org/rS273250 +#define MAP_NORESERVE 0 +#endif + void* LazyMemoryRegion::Create(size_t size) { ASSERT(!m_memory); @@ -124,7 +130,8 @@ void* LazyMemoryRegion::Create(size_t size) if (size == 0) return nullptr; - void* memory = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + void* memory = + mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0); if (memory == MAP_FAILED) { NOTICE_LOG_FMT(MEMMAP, "Memory allocation of {} bytes failed.", size); @@ -142,7 +149,7 @@ void LazyMemoryRegion::Clear() ASSERT(m_memory); void* new_memory = mmap(m_memory, m_size, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0); + MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE | MAP_FIXED, -1, 0); ASSERT(new_memory == m_memory); } |
