MacOS support
This commit is contained in:
parent
6dae500753
commit
262cedb0b5
|
@ -14,6 +14,7 @@ if("${MHTD}" STREQUAL "MHTD-NOTFOUND")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(OpenSSL REQUIRED)
|
find_package(OpenSSL REQUIRED)
|
||||||
|
include_directories(${OPENSSL_INCLUDE_DIR})
|
||||||
|
|
||||||
#set(CMAKE_VERBOSE_MAKEFILE ON)
|
#set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||||
set(CMAKE_CONFIGURATION_TYPES "RELEASE;STATIC")
|
set(CMAKE_CONFIGURATION_TYPES "RELEASE;STATIC")
|
||||||
|
|
18
minethd.cpp
18
minethd.cpp
|
@ -38,12 +38,25 @@ void thd_setaffinity(std::thread::native_handle_type h, uint64_t cpu_id)
|
||||||
#else
|
#else
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
|
||||||
|
#if defined(__APPLE__)
|
||||||
|
#include <mach/thread_policy.h>
|
||||||
|
#include <mach/thread_act.h>
|
||||||
|
#define SYSCTL_CORE_COUNT "machdep.cpu.core_count"
|
||||||
|
#endif
|
||||||
|
|
||||||
void thd_setaffinity(std::thread::native_handle_type h, uint64_t cpu_id)
|
void thd_setaffinity(std::thread::native_handle_type h, uint64_t cpu_id)
|
||||||
{
|
{
|
||||||
|
#if defined(__APPLE__)
|
||||||
|
thread_port_t mach_thread;
|
||||||
|
thread_affinity_policy_data_t policy = { cpu_id };
|
||||||
|
mach_thread = pthread_mach_thread_np(h);
|
||||||
|
thread_policy_set(mach_thread, THREAD_AFFINITY_POLICY, (thread_policy_t)&policy, 1);
|
||||||
|
#else
|
||||||
cpu_set_t mn;
|
cpu_set_t mn;
|
||||||
CPU_ZERO(&mn);
|
CPU_ZERO(&mn);
|
||||||
CPU_SET(cpu_id, &mn);
|
CPU_SET(cpu_id, &mn);
|
||||||
pthread_setaffinity_np(h, sizeof(cpu_set_t), &mn);
|
pthread_setaffinity_np(h, sizeof(cpu_set_t), &mn);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif // _WIN32
|
#endif // _WIN32
|
||||||
|
|
||||||
|
@ -177,7 +190,12 @@ std::vector<minethd*>* minethd::thread_starter(miner_work& pWork)
|
||||||
minethd* thd = new minethd(pWork, i, &vGpuData[i]);
|
minethd* thd = new minethd(pWork, i, &vGpuData[i]);
|
||||||
|
|
||||||
if(cfg.cpu_aff >= 0)
|
if(cfg.cpu_aff >= 0)
|
||||||
|
{
|
||||||
|
#if defined(__APPLE__)
|
||||||
|
printer::inst()->print_msg(L1, "WARNING on MacOS thread affinity is only advisory.");
|
||||||
|
#endif
|
||||||
thd_setaffinity(thd->oWorkThd.native_handle(), cfg.cpu_aff);
|
thd_setaffinity(thd->oWorkThd.native_handle(), cfg.cpu_aff);
|
||||||
|
}
|
||||||
|
|
||||||
pvThreads->push_back(thd);
|
pvThreads->push_back(thd);
|
||||||
if(cfg.cpu_aff >= 0)
|
if(cfg.cpu_aff >= 0)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
#include <string>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
|
|
5
socks.h
5
socks.h
|
@ -76,7 +76,12 @@ inline void sock_close(SOCKET s)
|
||||||
inline const char* sock_strerror(char* buf, size_t len)
|
inline const char* sock_strerror(char* buf, size_t len)
|
||||||
{
|
{
|
||||||
buf[0] = '\0';
|
buf[0] = '\0';
|
||||||
|
#if defined(__APPLE__)
|
||||||
|
strerror_r(errno, buf, len);
|
||||||
|
return buf;
|
||||||
|
#else
|
||||||
return strerror_r(errno, buf, len);
|
return strerror_r(errno, buf, len);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const char* sock_gai_strerror(int err, char* buf, size_t len)
|
inline const char* sock_gai_strerror(int err, char* buf, size_t len)
|
||||||
|
|
Loading…
Reference in New Issue