summaryrefslogtreecommitdiffstats
path: root/minethd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'minethd.cpp')
-rw-r--r--minethd.cpp28
1 files changed, 15 insertions, 13 deletions
diff --git a/minethd.cpp b/minethd.cpp
index fd83e82..5c7871d 100644
--- a/minethd.cpp
+++ b/minethd.cpp
@@ -150,7 +150,7 @@ void telemetry::push_perf_value(size_t iThd, uint64_t iHashCount, uint64_t iTime
iBucketTop[iThd] = (iTop + 1) & iBucketMask;
}
-minethd::minethd(miner_work& pWork, size_t iNo, bool double_work, bool no_prefetch, int affinity)
+minethd::minethd(miner_work& pWork, size_t iNo, bool double_work, bool no_prefetch, int64_t affinity)
{
oWork = pWork;
bQuit = 0;
@@ -307,15 +307,6 @@ std::vector<minethd*>* minethd::thread_starter(miner_work& pWork)
jconf::inst()->GetThreadConfig(i, cfg);
minethd* thd = new minethd(pWork, i, cfg.bDoubleMode, cfg.bNoPrefetch, cfg.iCpuAff);
-
- if(cfg.iCpuAff >= 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.iCpuAff);
- }
-
pvThreads->push_back(thd);
if(cfg.iCpuAff >= 0)
@@ -370,11 +361,22 @@ minethd::cn_hash_fun minethd::func_selector(bool bHaveAes, bool bNoPrefetch)
return func_table[digit.to_ulong()];
}
-void minethd::work_main()
+void minethd::pin_thd_affinity()
{
// pin memory to NUMA node
bindMemoryToNUMANode(affinity);
+#if defined(__APPLE__)
+ printer::inst()->print_msg(L1, "WARNING on MacOS thread affinity is only advisory.");
+#endif
+ thd_setaffinity(oWorkThd.native_handle(), affinity);
+}
+
+void minethd::work_main()
+{
+ if(affinity >= 0) //-1 means no affinity
+ pin_thd_affinity();
+
cn_hash_fun hash_fun;
cryptonight_ctx* ctx;
uint64_t iCount = 0;
@@ -462,8 +464,8 @@ minethd::cn_hash_fun_dbl minethd::func_dbl_selector(bool bHaveAes, bool bNoPrefe
void minethd::double_work_main()
{
- // pin memory to NUMA node
- bindMemoryToNUMANode(affinity);
+ if(affinity >= 0) //-1 means no affinity
+ pin_thd_affinity();
cn_hash_fun_dbl hash_fun;
cryptonight_ctx* ctx0;
OpenPOWER on IntegriCloud