From f49e566a9c0ef3d397b2e04dcf86a1e5ff351f05 Mon Sep 17 00:00:00 2001 From: MoneroOcean Date: Tue, 18 Jun 2019 11:30:58 -0700 Subject: [PATCH] Fixed Log usage --- src/App.cpp | 2 +- src/core/config/Config.new.cpp | 287 --------------------- src/core/config/Config.old.cpp | 439 --------------------------------- src/workers/Benchmark.cpp | 2 +- src/workers/Workers.cpp | 2 +- 5 files changed, 3 insertions(+), 729 deletions(-) delete mode 100644 src/core/config/Config.new.cpp delete mode 100644 src/core/config/Config.old.cpp diff --git a/src/App.cpp b/src/App.cpp index 978a23e3..da170ab3 100644 --- a/src/App.cpp +++ b/src/App.cpp @@ -99,7 +99,7 @@ int xmrig::App::exec() benchmark.set_controller(m_controller); // we need controller there to access config and network objects Workers::setListener(&benchmark); // register benchmark as job result listener to compute hashrates there // write text before first benchmark round - Log::i()->text(m_controller->config()->isColors() + xmrig::Log::print(xmrig::Log::colors ? GREEN_BOLD(" >>>>> ") WHITE_BOLD("STARTING ALGO PERFORMANCE CALIBRATION (with %i seconds round)") : " >>>>> STARTING ALGO PERFORMANCE CALIBRATION (with %i seconds round)", m_controller->config()->calibrateAlgoTime() diff --git a/src/core/config/Config.new.cpp b/src/core/config/Config.new.cpp deleted file mode 100644 index fb3fefac..00000000 --- a/src/core/config/Config.new.cpp +++ /dev/null @@ -1,287 +0,0 @@ -/* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2018-2019 SChernykh - * Copyright 2016-2019 XMRig , - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include -#include - - -#include "base/io/log/Log.h" -#include "base/kernel/interfaces/IJsonReader.h" -#include "common/cpu/Cpu.h" -#include "core/config/Config.h" -#include "crypto/Asm.h" -#include "crypto/CryptoNight_constants.h" -#include "rapidjson/document.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/prettywriter.h" -#include "workers/CpuThread.h" - - -static char affinity_tmp[20] = { 0 }; - - -xmrig::Config::Config() : - m_aesMode(AES_AUTO), - m_algoVariant(AV_AUTO), - m_assembly(ASM_AUTO), - m_hugePages(true), - m_safe(false), - m_shouldSave(false), - m_maxCpuUsage(100), - m_priority(-1) -{ -} - - -bool xmrig::Config::read(const IJsonReader &reader, const char *fileName) -{ - if (!BaseConfig::read(reader, fileName)) { - return false; - } - - m_hugePages = reader.getBool("huge-pages", true); - m_safe = reader.getBool("safe"); - - setAesMode(reader.getValue("hw-aes")); - setAlgoVariant(reader.getInt("av")); - setMaxCpuUsage(reader.getInt("max-cpu-usage", 100)); - setPriority(reader.getInt("cpu-priority", -1)); - setThreads(reader.getValue("threads")); - -# ifndef XMRIG_NO_ASM - setAssembly(reader.getValue("asm")); -# endif - - return finalize(); -} - - -void xmrig::Config::getJSON(rapidjson::Document &doc) const -{ - using namespace rapidjson; - - doc.SetObject(); - - auto &allocator = doc.GetAllocator(); - - doc.AddMember("algo", StringRef(algorithm().name()), allocator); - - Value api(kObjectType); - api.AddMember("id", m_apiId.toJSON(), allocator); - api.AddMember("worker-id", m_apiWorkerId.toJSON(), allocator); - doc.AddMember("api", api, allocator); - doc.AddMember("http", m_http.toJSON(doc), allocator); - -# ifndef XMRIG_NO_ASM - doc.AddMember("asm", Asm::toJSON(m_assembly), allocator); -# endif - - doc.AddMember("autosave", isAutoSave(), allocator); - doc.AddMember("av", algoVariant(), allocator); - doc.AddMember("background", isBackground(), allocator); - doc.AddMember("colors", Log::colors, allocator); - - if (affinity() != -1L) { - snprintf(affinity_tmp, sizeof(affinity_tmp) - 1, "0x%" PRIX64, affinity()); - doc.AddMember("cpu-affinity", StringRef(affinity_tmp), allocator); - } - else { - doc.AddMember("cpu-affinity", kNullType, allocator); - } - - doc.AddMember("cpu-priority", priority() != -1 ? Value(priority()) : Value(kNullType), allocator); - doc.AddMember("donate-level", m_pools.donateLevel(), allocator); - doc.AddMember("donate-over-proxy", m_pools.proxyDonate(), allocator); - doc.AddMember("huge-pages", isHugePages(), allocator); - doc.AddMember("hw-aes", m_aesMode == AES_AUTO ? Value(kNullType) : Value(m_aesMode == AES_HW), allocator); - doc.AddMember("log-file", m_logFile.toJSON(), allocator); - doc.AddMember("max-cpu-usage", m_maxCpuUsage, allocator); - doc.AddMember("pools", m_pools.toJSON(doc), allocator); - doc.AddMember("print-time", printTime(), allocator); - doc.AddMember("retries", m_pools.retries(), allocator); - doc.AddMember("retry-pause", m_pools.retryPause(), allocator); - doc.AddMember("safe", m_safe, allocator); - - if (threadsMode() != Simple) { - Value threads(kArrayType); - - for (const IThread *thread : m_threads.list) { - threads.PushBack(thread->toConfig(doc), allocator); - } - - doc.AddMember("threads", threads, allocator); - } - else { - doc.AddMember("threads", threadsCount(), allocator); - } - - doc.AddMember("user-agent", m_userAgent.toJSON(), allocator); - doc.AddMember("syslog", isSyslog(), allocator); - doc.AddMember("watch", m_watch, allocator); -} - - -bool xmrig::Config::finalize() -{ - if (!m_threads.cpu.empty()) { - m_threads.mode = Advanced; - const bool softAES = (m_aesMode == AES_AUTO ? (Cpu::info()->hasAES() ? AES_HW : AES_SOFT) : m_aesMode) == AES_SOFT; - - for (size_t i = 0; i < m_threads.cpu.size(); ++i) { - m_threads.list.push_back(CpuThread::createFromData(i, m_algorithm.algo(), m_threads.cpu[i], m_priority, softAES)); - } - - return true; - } - - const AlgoVariant av = getAlgoVariant(); - m_threads.mode = m_threads.count ? Simple : Automatic; - - const Variant v = m_algorithm.variant(); - const size_t size = CpuThread::multiway(av) * cn_select_memory(m_algorithm.algo(), v) / 1024; - - if (!m_threads.count) { - m_threads.count = Cpu::info()->optimalThreadsCount(size, m_maxCpuUsage); - } - else if (m_safe) { - const size_t count = Cpu::info()->optimalThreadsCount(size, m_maxCpuUsage); - if (m_threads.count > count) { - m_threads.count = count; - } - } - - for (size_t i = 0; i < m_threads.count; ++i) { - m_threads.list.push_back(CpuThread::createFromAV(i, m_algorithm.algo(), av, m_threads.mask, m_priority, m_assembly)); - } - - m_shouldSave = m_threads.mode == Automatic; - - return true; -} - - -void xmrig::Config::setAesMode(const rapidjson::Value &aesMode) -{ - if (aesMode.IsBool()) { - m_aesMode = aesMode.GetBool() ? AES_HW : AES_SOFT; - } -} - - -void xmrig::Config::setAlgoVariant(int av) -{ - if (av >= AV_AUTO && av < AV_MAX) { - m_algoVariant = static_cast(av); - } -} - - -void xmrig::Config::setMaxCpuUsage(int max) -{ - if (max > 0 && max <= 100) { - m_maxCpuUsage = max; - } -} - - -void xmrig::Config::setPriority(int priority) -{ - if (priority >= 0 && priority <= 5) { - m_priority = priority; - } -} - - -void xmrig::Config::setThreads(const rapidjson::Value &threads) -{ - if (threads.IsArray()) { - m_threads.cpu.clear(); - - for (const rapidjson::Value &value : threads.GetArray()) { - if (!value.IsObject()) { - continue; - } - - if (value.HasMember("low_power_mode")) { - auto data = CpuThread::parse(value); - - if (data.valid) { - m_threads.cpu.push_back(std::move(data)); - } - } - } - } - else if (threads.IsUint()) { - const unsigned count = threads.GetUint(); - if (count < 1024) { - m_threads.count = count; - } - } -} - - -xmrig::AlgoVariant xmrig::Config::getAlgoVariant() const -{ -# ifndef XMRIG_NO_AEON - if (m_algorithm.algo() == xmrig::CRYPTONIGHT_LITE) { - return getAlgoVariantLite(); - } -# endif - - if (m_algoVariant <= AV_AUTO || m_algoVariant >= AV_MAX) { - return Cpu::info()->hasAES() ? AV_SINGLE : AV_SINGLE_SOFT; - } - - if (m_safe && !Cpu::info()->hasAES() && m_algoVariant <= AV_DOUBLE) { - return static_cast(m_algoVariant + 2); - } - - return m_algoVariant; -} - - -#ifndef XMRIG_NO_AEON -xmrig::AlgoVariant xmrig::Config::getAlgoVariantLite() const -{ - if (m_algoVariant <= AV_AUTO || m_algoVariant >= AV_MAX) { - return Cpu::info()->hasAES() ? AV_DOUBLE : AV_DOUBLE_SOFT; - } - - if (m_safe && !Cpu::info()->hasAES() && m_algoVariant <= AV_DOUBLE) { - return static_cast(m_algoVariant + 2); - } - - return m_algoVariant; -} -#endif - - -#ifndef XMRIG_NO_ASM -void xmrig::Config::setAssembly(const rapidjson::Value &assembly) -{ - m_assembly = Asm::parse(assembly); -} -#endif diff --git a/src/core/config/Config.old.cpp b/src/core/config/Config.old.cpp deleted file mode 100644 index 1088de49..00000000 --- a/src/core/config/Config.old.cpp +++ /dev/null @@ -1,439 +0,0 @@ -/* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2016-2018 XMRig , - * Copyright 2018 MoneroOcean , - * Copyright 2018-2019 SChernykh - * Copyright 2016-2019 XMRig , - * Copyright 2018-2019 MoneroOcean , - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include - - -#include "common/config/ConfigLoader.h" -#include "common/cpu/Cpu.h" -#include "core/Config.h" -#include "core/ConfigCreator.h" -#include "crypto/Asm.h" -#include "crypto/CryptoNight_constants.h" -#include "rapidjson/document.h" -#include "rapidjson/filewritestream.h" -#include "rapidjson/prettywriter.h" -#include "workers/CpuThread.h" - -// for usage in Client::login to get_algo_perf -namespace xmrig { - Config* pconfig = nullptr; -}; - -static char affinity_tmp[20] = { 0 }; - - -xmrig::Config::Config() : xmrig::CommonConfig(), - m_aesMode(AES_AUTO), - m_algoVariant(AV_AUTO), - m_assembly(ASM_AUTO), - m_hugePages(true), - m_safe(false), - m_shouldSave(false), - m_maxCpuUsage(100), - m_priority(-1) -{ - // not defined algo performance is considered to be 0 - for (int a = 0; a != xmrig::PerfAlgo::PA_MAX; ++ a) { - const xmrig::PerfAlgo pa = static_cast(a); - m_algo_perf[pa] = 0.0f; - } -} - - -bool xmrig::Config::reload(const char *json) -{ - return xmrig::ConfigLoader::reload(this, json); -} - - -void xmrig::Config::getJSON(rapidjson::Document &doc) const -{ - using namespace rapidjson; - - doc.SetObject(); - - auto &allocator = doc.GetAllocator(); - - doc.AddMember("algo", StringRef(algorithm().name()), allocator); - - Value api(kObjectType); - api.AddMember("port", apiPort(), allocator); - api.AddMember("access-token", apiToken() ? Value(StringRef(apiToken())).Move() : Value(kNullType).Move(), allocator); - api.AddMember("id", apiId() ? Value(StringRef(apiId())).Move() : Value(kNullType).Move(), allocator); - api.AddMember("worker-id", apiWorkerId() ? Value(StringRef(apiWorkerId())).Move() : Value(kNullType).Move(), allocator); - api.AddMember("ipv6", isApiIPv6(), allocator); - api.AddMember("restricted", isApiRestricted(), allocator); - doc.AddMember("api", api, allocator); - -# ifndef XMRIG_NO_ASM - doc.AddMember("asm", Asm::toJSON(m_assembly), allocator); -# endif - - doc.AddMember("autosave", isAutoSave(), allocator); - doc.AddMember("av", algoVariant(), allocator); - doc.AddMember("background", isBackground(), allocator); - doc.AddMember("colors", isColors(), allocator); - - if (affinity() != -1L) { - snprintf(affinity_tmp, sizeof(affinity_tmp) - 1, "0x%" PRIX64, affinity()); - doc.AddMember("cpu-affinity", StringRef(affinity_tmp), allocator); - } - else { - doc.AddMember("cpu-affinity", kNullType, allocator); - } - - doc.AddMember("cpu-priority", priority() != -1 ? Value(priority()) : Value(kNullType), allocator); - doc.AddMember("donate-level", donateLevel(), allocator); - doc.AddMember("huge-pages", isHugePages(), allocator); - doc.AddMember("hw-aes", m_aesMode == AES_AUTO ? Value(kNullType) : Value(m_aesMode == AES_HW), allocator); - doc.AddMember("log-file", logFile() ? Value(StringRef(logFile())).Move() : Value(kNullType).Move(), allocator); - doc.AddMember("max-cpu-usage", m_maxCpuUsage, allocator); - doc.AddMember("pools", m_pools.toJSON(doc), allocator); - doc.AddMember("print-time", printTime(), allocator); - doc.AddMember("retries", m_pools.retries(), allocator); - doc.AddMember("retry-pause", m_pools.retryPause(), allocator); - doc.AddMember("safe", m_safe, allocator); - - // save extended "threads" based on m_threads - Value threads(kObjectType); - for (int a = 0; a != xmrig::Algo::ALGO_MAX; ++ a) { - const xmrig::Algo algo = static_cast(a); - Value key(xmrig::Algorithm::perfAlgoName(xmrig::Algorithm(algo).perf_algo()), allocator); - if (threadsMode(algo) != Simple) { - Value threads2(kArrayType); - for (const IThread *thread : m_threads[algo].list) { - threads2.PushBack(thread->toConfig(doc), allocator); - } - - threads.AddMember(key, threads2, allocator); - } - else { - threads.AddMember(key, threadsCount(), allocator); - } - } - doc.AddMember("threads", threads, allocator); - - // save "algo-perf" based on m_algo_perf - Value algo_perf(kObjectType); - for (int a = 0; a != xmrig::PerfAlgo::PA_MAX; ++ a) { - const xmrig::PerfAlgo pa = static_cast(a); - Value key(xmrig::Algorithm::perfAlgoName(pa), allocator); - algo_perf.AddMember(key, Value(m_algo_perf[pa]), allocator); - } - doc.AddMember("algo-perf", algo_perf, allocator); - - doc.AddMember("calibrate-algo", isCalibrateAlgo(), allocator); - doc.AddMember("calibrate-algo-time", calibrateAlgoTime(), allocator); - - doc.AddMember("user-agent", userAgent() ? Value(StringRef(userAgent())).Move() : Value(kNullType).Move(), allocator); - -# ifdef HAVE_SYSLOG_H - doc.AddMember("syslog", isSyslog(), allocator); -# endif - - doc.AddMember("watch", m_watch, allocator); -} - - -xmrig::Config *xmrig::Config::load(Process *process, IConfigListener *listener) -{ - return static_cast(ConfigLoader::load(process, new ConfigCreator(), listener)); -} - - -bool xmrig::Config::finalize() -{ - if (m_state != NoneState) { - return CommonConfig::finalize(); - } - - if (!CommonConfig::finalize()) { - return false; - } - - // auto configure m_threads - for (int a = 0; a != xmrig::Algo::ALGO_MAX; ++ a) { - const xmrig::Algo algo = static_cast(a); - if (!m_threads[algo].cpu.empty()) { - m_threads[algo].mode = Advanced; - const bool softAES = (m_aesMode == AES_AUTO ? (Cpu::info()->hasAES() ? AES_HW : AES_SOFT) : m_aesMode) == AES_SOFT; - for (size_t i = 0; i < m_threads[algo].cpu.size(); ++i) { - m_threads[algo].list.push_back(CpuThread::createFromData(i, algo, m_threads[algo].cpu[i], m_priority, softAES)); - } - } else { - const AlgoVariant av = getAlgoVariant(); - m_threads[algo].mode = m_threads[algo].count ? Simple : Automatic; - - const size_t size = CpuThread::multiway(av) * cn_select_memory(algo) / 1024; - - if (!m_threads[algo].count) { - m_threads[algo].count = Cpu::info()->optimalThreadsCount(size, m_maxCpuUsage); - } - else if (m_safe) { - const size_t count = Cpu::info()->optimalThreadsCount(size, m_maxCpuUsage); - if (m_threads[algo].count > count) { - m_threads[algo].count = count; - } - } - - for (size_t i = 0; i < m_threads[algo].count; ++i) { - m_threads[algo].list.push_back(CpuThread::createFromAV(i, algo, av, m_threads[algo].mask, m_priority, m_assembly)); - } - - m_shouldSave = m_shouldSave || m_threads[algo].mode == Automatic; - } - } - - return true; -} - - -bool xmrig::Config::parseBoolean(int key, bool enable) -{ - if (!CommonConfig::parseBoolean(key, enable)) { - return false; - } - - switch (key) { - case SafeKey: /* --safe */ - m_safe = enable; - break; - - case HugePagesKey: /* --no-huge-pages */ - m_hugePages = enable; - break; - - case HardwareAESKey: /* hw-aes config only */ - m_aesMode = enable ? AES_HW : AES_SOFT; - break; - -# ifndef XMRIG_NO_ASM - case AssemblyKey: - m_assembly = Asm::parse(enable); - break; -# endif - - default: - break; - } - - return true; -} - - -bool xmrig::Config::parseString(int key, const char *arg) -{ - if (!CommonConfig::parseString(key, arg)) { - return false; - } - - switch (key) { - case AVKey: /* --av */ - case MaxCPUUsageKey: /* --max-cpu-usage */ - case CPUPriorityKey: /* --cpu-priority */ - return parseUint64(key, strtol(arg, nullptr, 10)); - - case SafeKey: /* --safe */ - return parseBoolean(key, true); - - case HugePagesKey: /* --no-huge-pages */ - return parseBoolean(key, false); - - case ThreadsKey: /* --threads */ - if (strncmp(arg, "all", 3) == 0) { - m_threads[m_algorithm.algo()].count = Cpu::info()->threads(); // sets default algo threads - return true; - } - - return parseUint64(key, strtol(arg, nullptr, 10)); - - case CPUAffinityKey: /* --cpu-affinity */ - { - const char *p = strstr(arg, "0x"); - return parseUint64(key, p ? strtoull(p, nullptr, 16) : strtoull(arg, nullptr, 10)); - } - -# ifndef XMRIG_NO_ASM - case AssemblyKey: /* --asm */ - m_assembly = Asm::parse(arg); - break; -# endif - - default: - break; - } - - return true; -} - - -bool xmrig::Config::parseUint64(int key, uint64_t arg) -{ - if (!CommonConfig::parseUint64(key, arg)) { - return false; - } - - switch (key) { - case CPUAffinityKey: /* --cpu-affinity */ - if (arg) { - m_threads[m_algorithm.algo()].mask = arg; // sets default algo threads - } - break; - - default: - return parseInt(key, static_cast(arg)); - } - - return true; -} - - -// parse specific perf algo (or generic) threads config -void xmrig::Config::parseThreadsJSON(const rapidjson::Value &threads, const xmrig::Algo algo) -{ - for (const rapidjson::Value &value : threads.GetArray()) { - if (!value.IsObject()) { - continue; - } - - if (value.HasMember("low_power_mode")) { - auto data = CpuThread::parse(value); - - if (data.valid) { - m_threads[algo].cpu.push_back(std::move(data)); - } - } - } -} - -void xmrig::Config::parseJSON(const rapidjson::Document &doc) -{ - CommonConfig::parseJSON(doc); - - const rapidjson::Value &threads = doc["threads"]; - - if (threads.IsArray()) { - // parse generic (old) threads - parseThreadsJSON(threads, m_algorithm.algo()); - } else if (threads.IsObject()) { - // parse new specific perf algo threads - for (int a = 0; a != xmrig::Algo::ALGO_MAX; ++ a) { - const xmrig::Algo algo = static_cast(a); - const rapidjson::Value &threads2 = threads[xmrig::Algorithm::perfAlgoName(xmrig::Algorithm(algo).perf_algo())]; - if (threads2.IsArray()) { - parseThreadsJSON(threads2, algo); - } - } - } - - const rapidjson::Value &algo_perf = doc["algo-perf"]; - if (algo_perf.IsObject()) { - for (int a = 0; a != xmrig::PerfAlgo::PA_MAX; ++ a) { - const xmrig::PerfAlgo pa = static_cast(a); - const rapidjson::Value &key = algo_perf[xmrig::Algorithm::perfAlgoName(pa)]; - if (key.IsDouble()) { - m_algo_perf[pa] = static_cast(key.GetDouble()); - } else if (key.IsInt()) { - m_algo_perf[pa] = static_cast(key.GetInt()); - } - } - } -} - - -bool xmrig::Config::parseInt(int key, int arg) -{ - switch (key) { - case ThreadsKey: /* --threads */ - if (arg >= 0 && arg < 1024) { - m_threads[m_algorithm.algo()].count = arg; // sets default algo threads - } - break; - - case AVKey: /* --av */ - if (arg >= AV_AUTO && arg < AV_MAX) { - m_algoVariant = static_cast(arg); - } - break; - - case MaxCPUUsageKey: /* --max-cpu-usage */ - if (m_maxCpuUsage > 0 && arg <= 100) { - m_maxCpuUsage = arg; - } - break; - - case CPUPriorityKey: /* --cpu-priority */ - if (arg >= 0 && arg <= 5) { - m_priority = arg; - } - break; - - default: - break; - } - - return true; -} - - -xmrig::AlgoVariant xmrig::Config::getAlgoVariant() const -{ -# ifndef XMRIG_NO_AEON - if (m_algorithm.algo() == xmrig::CRYPTONIGHT_LITE) { - return getAlgoVariantLite(); - } -# endif - - if (m_algoVariant <= AV_AUTO || m_algoVariant >= AV_MAX) { - return Cpu::info()->hasAES() ? AV_SINGLE : AV_SINGLE_SOFT; - } - - if (m_safe && !Cpu::info()->hasAES() && m_algoVariant <= AV_DOUBLE) { - return static_cast(m_algoVariant + 2); - } - - return m_algoVariant; -} - - -#ifndef XMRIG_NO_AEON -xmrig::AlgoVariant xmrig::Config::getAlgoVariantLite() const -{ - if (m_algoVariant <= AV_AUTO || m_algoVariant >= AV_MAX) { - return Cpu::info()->hasAES() ? AV_DOUBLE : AV_DOUBLE_SOFT; - } - - if (m_safe && !Cpu::info()->hasAES() && m_algoVariant <= AV_DOUBLE) { - return static_cast(m_algoVariant + 2); - } - - return m_algoVariant; -} -#endif diff --git a/src/workers/Benchmark.cpp b/src/workers/Benchmark.cpp index fbfb29b7..ecbd624b 100644 --- a/src/workers/Benchmark.cpp +++ b/src/workers/Benchmark.cpp @@ -69,7 +69,7 @@ void Benchmark::onJobResult(const xmrig::JobResult& result) { else if (now - m_time_start > static_cast(m_controller->config()->calibrateAlgoTime())*1000) { // end of becnhmark round for m_pa const float hashrate = static_cast(m_hash_count) * result.diff / (now - m_time_start) * 1000.0f; m_controller->config()->set_algo_perf(m_pa, hashrate); // store hashrate result - Log::i()->text(m_controller->config()->isColors() + xmrig::Log::print(xmrig::Log::colors ? GREEN_BOLD(" ===> ") CYAN_BOLD("%s") WHITE_BOLD(" hashrate: ") CYAN_BOLD("%f") : " ===> %s hasrate: %f", xmrig::Algorithm::perfAlgoName(m_pa), diff --git a/src/workers/Workers.cpp b/src/workers/Workers.cpp index f69280c0..3e98da38 100644 --- a/src/workers/Workers.cpp +++ b/src/workers/Workers.cpp @@ -251,7 +251,7 @@ void Workers::switch_algo(const xmrig::Algorithm& algorithm) if (!str_threads.empty()) str_threads = str_threads + ", "; str_threads = str_threads + "x" + std::to_string(thread->multiway()); } - Log::i()->text(m_controller->config()->isColors() + xmrig::Log::print(xmrig::Log::colors ? GREEN_BOLD(" >>> ") WHITE_BOLD("ALGO CHANGE: ") CYAN_BOLD("%s") ", " CYAN_BOLD("%d (%s)") " thread(s)" : " >>> ALGO CHANGE: %s, %d (%s) thread(s)", algorithm.name(),