From c2bdae70fe254c8f1d68afb43427c90d9df731f5 Mon Sep 17 00:00:00 2001 From: SChernykh Date: Wed, 7 Oct 2020 18:00:36 +0200 Subject: [PATCH] Fix FreeBSD compilation --- src/crypto/common/VirtualMemory_unix.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/crypto/common/VirtualMemory_unix.cpp b/src/crypto/common/VirtualMemory_unix.cpp index ad4253c56..70bb13d52 100644 --- a/src/crypto/common/VirtualMemory_unix.cpp +++ b/src/crypto/common/VirtualMemory_unix.cpp @@ -67,6 +67,17 @@ void *xmrig::VirtualMemory::allocateExecutableMemory(size_t size, bool hugePages { # if defined(__APPLE__) void *mem = mmap(0, size, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANON, -1, 0); +# elif defined(__FreeBSD__) + void *mem = nullptr; + + if (hugePages) { + mem = mmap(0, size, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS | MAP_ALIGNED_SUPER | MAP_PREFAULT_READ, -1, 0); + } + + if (!mem) { + mem = mmap(0, size, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + } + # else # if defined(MAP_HUGE_2MB) @@ -84,7 +95,7 @@ void *xmrig::VirtualMemory::allocateExecutableMemory(size_t size, bool hugePages } if (!mem) { - void *mem = mmap(0, size, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + mem = mmap(0, size, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); } # endif