Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #12177 from AdmiralCurtiss/noreserve
Common/MemArena: Set MAP_NORESERVE in LazyMemoryRegion on Linux.
  • Loading branch information
AdmiralCurtiss committed Sep 12, 2023
2 parents d16bedd + 7869abf commit 3dada56
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions Source/Core/Common/MemArenaUnix.cpp
Expand Up @@ -117,14 +117,21 @@ 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);

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);
Expand All @@ -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);
}

Expand Down

0 comments on commit 3dada56

Please sign in to comment.