#2104 Added user configurable idle time.

This commit is contained in:
XMRig 2021-02-19 23:35:30 +07:00
parent f599807bbb
commit ee341118ce
No known key found for this signature in database
GPG key ID: 446A53638BE94409
16 changed files with 99 additions and 114 deletions

View file

@ -1,12 +1,6 @@
/* XMRig
* Copyright 2010 Jeff Garzik <jgarzik@pobox.com>
* Copyright 2012-2014 pooler <pooler@litecoinpool.org>
* Copyright 2014 Lucas Jones <https://github.com/lucasjones>
* Copyright 2014-2016 Wolf9466 <https://github.com/OhGodAPet>
* Copyright 2016 Jay D Dee <jayddee246@gmail.com>
* Copyright 2017-2018 XMR-Stak <https://github.com/fireice-uk>, <https://github.com/psychocrypt>
* Copyright 2018-2021 SChernykh <https://github.com/SChernykh>
* Copyright 2016-2021 XMRig <https://github.com/xmrig>, <support@xmrig.com>
* Copyright (c) 2018-2021 SChernykh <https://github.com/SChernykh>
* Copyright (c) 2016-2021 XMRig <https://github.com/xmrig>, <support@xmrig.com>
*
* 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
@ -22,6 +16,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <algorithm>
#include <cinttypes>
#include <cstring>
@ -54,6 +49,13 @@
namespace xmrig {
constexpr static uint32_t kIdleTime = 60U;
const char *Config::kPauseOnBattery = "pause-on-battery";
const char *Config::kPauseOnActive = "pause-on-active";
#ifdef XMRIG_FEATURE_OPENCL
const char *Config::kOcl = "opencl";
#endif
@ -74,7 +76,9 @@ const char *Config::kDMI = "dmi";
class ConfigPrivate
{
public:
bool pauseOnBattery = false;
CpuConfig cpu;
uint32_t idleTime = 0;
# ifdef XMRIG_ALGO_RANDOMX
RxConfig rx;
@ -89,12 +93,22 @@ public:
# endif
# if defined(XMRIG_FEATURE_NVML) || defined (XMRIG_FEATURE_ADL)
uint32_t healthPrintTime = 60;
uint32_t healthPrintTime = 60U;
# endif
# ifdef XMRIG_FEATURE_DMI
bool dmi = true;
# endif
void setIdleTime(const rapidjson::Value &value)
{
if (value.IsBool()) {
idleTime = value.GetBool() ? kIdleTime : 0U;
}
else if (value.IsUint()) {
idleTime = value.GetUint();
}
}
};
}
@ -112,12 +126,24 @@ xmrig::Config::~Config()
}
bool xmrig::Config::isPauseOnBattery() const
{
return d_ptr->pauseOnBattery;
}
const xmrig::CpuConfig &xmrig::Config::cpu() const
{
return d_ptr->cpu;
}
uint32_t xmrig::Config::idleTime() const
{
return d_ptr->idleTime * 1000U;
}
#ifdef XMRIG_FEATURE_OPENCL
const xmrig::OclConfig &xmrig::Config::cl() const
{
@ -186,6 +212,9 @@ bool xmrig::Config::read(const IJsonReader &reader, const char *fileName)
return false;
}
d_ptr->pauseOnBattery = reader.getBool(kPauseOnBattery, d_ptr->pauseOnBattery);
d_ptr->setIdleTime(reader.getValue(kPauseOnActive));
d_ptr->cpu.read(reader.getValue(CpuConfig::kField));
# ifdef XMRIG_ALGO_RANDOMX
@ -270,5 +299,5 @@ void xmrig::Config::getJSON(rapidjson::Document &doc) const
doc.AddMember(StringRef(kVerbose), Log::verbose(), allocator);
doc.AddMember(StringRef(kWatch), m_watch, allocator);
doc.AddMember(StringRef(kPauseOnBattery), isPauseOnBattery(), allocator);
doc.AddMember(StringRef(kPauseOnActive), isPauseOnActive(), allocator);
doc.AddMember(StringRef(kPauseOnActive), (d_ptr->idleTime == 0U || d_ptr->idleTime == kIdleTime) ? Value(isPauseOnActive()) : Value(d_ptr->idleTime), allocator);
}