diff --git CMakeLists.txt CMakeLists.txt index 8d7084e..e081532 100644 --- CMakeLists.txt +++ CMakeLists.txt @@ -162,12 +162,14 @@ else() src/crypto/common/LinuxMemory.cpp ) set(EXTRA_LIBS pthread rt dl) elseif (XMRIG_OS_FREEBSD) set(EXTRA_LIBS kvm pthread) + elseif (XMRIG_OS_OPENBSD) + set(EXTRA_LIBS kvm pthread) endif() endif() add_definitions(/D__STDC_FORMAT_MACROS) add_definitions(/DUNICODE) diff --git cmake/os.cmake cmake/os.cmake index 0270cc9..41e97fc 100644 --- cmake/os.cmake +++ cmake/os.cmake @@ -14,12 +14,14 @@ else() if (ANDROID OR CMAKE_SYSTEM_NAME MATCHES "Android") set(XMRIG_OS_ANDROID ON) elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") set(XMRIG_OS_LINUX ON) elseif(CMAKE_SYSTEM_NAME STREQUAL FreeBSD) set(XMRIG_OS_FREEBSD ON) + elseif(CMAKE_SYSTEM_NAME STREQUAL OpenBSD) + set(XMRIG_OS_OPENBSD ON) endif() endif() if (XMRIG_OS_WIN) add_definitions(/DWIN32) diff --git src/base/kernel/Platform_unix.cpp src/base/kernel/Platform_unix.cpp index b6ca17e..f3ddaa3 100644 --- src/base/kernel/Platform_unix.cpp +++ src/base/kernel/Platform_unix.cpp @@ -84,21 +84,25 @@ char *xmrig::Platform::createUserAgent() } #ifndef XMRIG_FEATURE_HWLOC bool xmrig::Platform::setThreadAffinity(uint64_t cpu_id) { +# ifdef __OpenBSD__ + return true; +# else cpu_set_t mn; CPU_ZERO(&mn); CPU_SET(cpu_id, &mn); # ifndef __ANDROID__ return pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &mn) == 0; # else return sched_setaffinity(gettid(), sizeof(cpu_set_t), &mn) == 0; # endif +# endif } #endif uint32_t xmrig::Platform::setTimerResolution(uint32_t resolution) { diff --git src/crypto/common/VirtualMemory_unix.cpp src/crypto/common/VirtualMemory_unix.cpp index 0c77ba0..ab76c89 100644 --- src/crypto/common/VirtualMemory_unix.cpp +++ src/crypto/common/VirtualMemory_unix.cpp @@ -78,12 +78,14 @@ void *xmrig::VirtualMemory::allocateExecutableMemory(size_t size) void *xmrig::VirtualMemory::allocateLargePagesMemory(size_t size) { # if defined(__APPLE__) void *mem = mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, VM_FLAGS_SUPERPAGE_SIZE_2MB, 0); # elif defined(__FreeBSD__) void *mem = mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_ALIGNED_SUPER | MAP_PREFAULT_READ, -1, 0); +# elif defined(__OpenBSD__) + void *mem = mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); # else void *mem = mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB | MAP_POPULATE, 0, 0); # endif return mem == MAP_FAILED ? nullptr : mem; }