From d1aadc2e3b7b52135a5b75b3214dd7697c6456df Mon Sep 17 00:00:00 2001 From: XMRig Date: Thu, 3 Oct 2019 07:45:25 +0700 Subject: [PATCH] More cleanup. --- src/core/Miner.cpp | 2 +- src/core/Miner.h | 3 +++ src/core/config/Config.cpp | 6 +++--- src/crypto/rx/Rx.cpp | 9 +++++---- src/crypto/rx/Rx.h | 3 ++- src/crypto/rx/RxConfig.cpp | 17 ++++++++++++++++- src/crypto/rx/RxConfig.h | 9 +++++++-- 7 files changed, 37 insertions(+), 12 deletions(-) diff --git a/src/core/Miner.cpp b/src/core/Miner.cpp index b6b89948..cbba3de3 100644 --- a/src/core/Miner.cpp +++ b/src/core/Miner.cpp @@ -234,7 +234,7 @@ public: # ifdef XMRIG_ALGO_RANDOMX bool initRX(IRxListener *listener) { - return Rx::init(job, controller->config()->rx().threads(), controller->config()->cpu().isHugePages(), controller->config()->rx().isNUMA(), listener); + return Rx::init(job, controller->config()->rx(), controller->config()->cpu().isHugePages(), listener); } # endif diff --git a/src/core/Miner.h b/src/core/Miner.h index 21568f12..6f4149c3 100644 --- a/src/core/Miner.h +++ b/src/core/Miner.h @@ -33,6 +33,7 @@ #include "base/api/interfaces/IApiListener.h" #include "base/kernel/interfaces/IBaseListener.h" #include "base/kernel/interfaces/ITimerListener.h" +#include "base/tools/Object.h" #include "crypto/common/Algorithm.h" @@ -48,6 +49,8 @@ class IBackend; class Miner : public ITimerListener, public IBaseListener, public IApiListener, public IRxListener { public: + XMRIG_DISABLE_COPY_MOVE_DEFAULT(Miner) + Miner(Controller *controller); ~Miner() override; diff --git a/src/core/config/Config.cpp b/src/core/config/Config.cpp index 33e5e54f..17b0e166 100644 --- a/src/core/config/Config.cpp +++ b/src/core/config/Config.cpp @@ -23,9 +23,9 @@ */ #include -#include +#include #include -#include +#include #include "backend/cpu/Cpu.h" @@ -79,7 +79,7 @@ public: } -xmrig::Config::Config() : BaseConfig(), +xmrig::Config::Config() : d_ptr(new ConfigPrivate()) { } diff --git a/src/crypto/rx/Rx.cpp b/src/crypto/rx/Rx.cpp index 4382e10d..25b633ec 100644 --- a/src/crypto/rx/Rx.cpp +++ b/src/crypto/rx/Rx.cpp @@ -38,6 +38,7 @@ #include "base/tools/Object.h" #include "crypto/rx/RxAlgo.h" #include "crypto/rx/RxCache.h" +#include "crypto/rx/RxConfig.h" #include "crypto/rx/RxDataset.h" #include "crypto/rx/RxSeed.h" @@ -222,7 +223,7 @@ public: } m_ready = 0; - m_numa = numa && Cpu::info()->nodes() > 1; + m_numa = numa; m_hugePages = hugePages; m_listener = listener; m_seed = job; @@ -256,7 +257,7 @@ private: } // namespace xmrig -bool xmrig::Rx::init(const Job &job, int initThreads, bool hugePages, bool numa, IRxListener *listener) +bool xmrig::Rx::init(const Job &job, const RxConfig &config, bool hugePages, IRxListener *listener) { if (job.algorithm().family() != Algorithm::RANDOM_X) { return true; @@ -268,8 +269,8 @@ bool xmrig::Rx::init(const Job &job, int initThreads, bool hugePages, bool numa, return true; } - d_ptr->setState(job, hugePages, numa, listener); - const uint32_t threads = initThreads < 1 ? static_cast(Cpu::info()->threads()) : static_cast(initThreads); + d_ptr->setState(job, hugePages, config.isNUMA(), listener); + const uint32_t threads = config.threads(); const String buf = Buffer::toHex(job.seed().data(), 8); const uint64_t counter = d_ptr->counter(); diff --git a/src/crypto/rx/Rx.h b/src/crypto/rx/Rx.h index 9392e80d..33eddc18 100644 --- a/src/crypto/rx/Rx.h +++ b/src/crypto/rx/Rx.h @@ -39,13 +39,14 @@ namespace xmrig class Algorithm; class IRxListener; class Job; +class RxConfig; class RxDataset; class Rx { public: - static bool init(const Job &job, int initThreads, bool hugePages, bool numa, IRxListener *listener); + static bool init(const Job &job, const RxConfig &config, bool hugePages, IRxListener *listener); static bool isReady(const Job &job); static RxDataset *dataset(const Job &job, uint32_t nodeId); static std::pair hugePages(); diff --git a/src/crypto/rx/RxConfig.cpp b/src/crypto/rx/RxConfig.cpp index dc543fb4..63f60b3b 100644 --- a/src/crypto/rx/RxConfig.cpp +++ b/src/crypto/rx/RxConfig.cpp @@ -23,8 +23,9 @@ */ -#include "base/io/json/Json.h" #include "crypto/rx/RxConfig.h" +#include "backend/cpu/Cpu.h" +#include "base/io/json/Json.h" #include "rapidjson/document.h" @@ -61,3 +62,17 @@ bool xmrig::RxConfig::read(const rapidjson::Value &value) return false; } + + +#ifdef XMRIG_FEATURE_HWLOC +bool xmrig::RxConfig::isNUMA() const +{ + return m_numa && Cpu::info()->nodes() > 1; +} +#endif + + +uint32_t xmrig::RxConfig::threads() const +{ + return m_threads < 1 ? static_cast(Cpu::info()->threads()) : static_cast(m_threads); +} diff --git a/src/crypto/rx/RxConfig.h b/src/crypto/rx/RxConfig.h index e06c764c..343a884b 100644 --- a/src/crypto/rx/RxConfig.h +++ b/src/crypto/rx/RxConfig.h @@ -38,8 +38,13 @@ public: bool read(const rapidjson::Value &value); rapidjson::Value toJSON(rapidjson::Document &doc) const; - inline bool isNUMA() const { return m_numa; } - inline int threads() const { return m_threads; } +# ifdef XMRIG_FEATURE_HWLOC + bool isNUMA() const; +# else + inline constexpr bool isNUMA() const { return false; } +# endif + + uint32_t threads() const; private: bool m_numa = true;