Rebased to xmrig v2.14.0
This commit is contained in:
commit
dcbfe53869
43 changed files with 1958 additions and 3421 deletions
|
@ -61,6 +61,10 @@ char *Platform::createUserAgent()
|
|||
|
||||
# if defined(__x86_64__)
|
||||
length += snprintf(buf + length, max - length, "x86_64) libuv/%s", uv_version_string());
|
||||
# elif defined(__aarch64__)
|
||||
length += snprintf(buf + length, max - length, "aarch64) libuv/%s", uv_version_string());
|
||||
# elif defined(__arm__)
|
||||
length += snprintf(buf + length, max - length, "arm) libuv/%s", uv_version_string());
|
||||
# else
|
||||
length += snprintf(buf + length, max - length, "i686) libuv/%s", uv_version_string());
|
||||
# endif
|
||||
|
|
|
@ -53,6 +53,11 @@
|
|||
#include "rapidjson/fwd.h"
|
||||
|
||||
|
||||
#ifdef XMRIG_FEATURE_EMBEDDED_CONFIG
|
||||
# include "core/ConfigLoader_default.h"
|
||||
#endif
|
||||
|
||||
|
||||
xmrig::ConfigWatcher *xmrig::ConfigLoader::m_watcher = nullptr;
|
||||
xmrig::IConfigCreator *xmrig::ConfigLoader::m_creator = nullptr;
|
||||
xmrig::IConfigListener *xmrig::ConfigLoader::m_listener = nullptr;
|
||||
|
@ -180,6 +185,15 @@ xmrig::IConfig *xmrig::ConfigLoader::load(Process *process, IConfigCreator *crea
|
|||
loadFromFile(config, process->location(Process::ExeLocation, "config.json"));
|
||||
}
|
||||
|
||||
# ifdef XMRIG_FEATURE_EMBEDDED_CONFIG
|
||||
if (!config->finalize()) {
|
||||
delete config;
|
||||
|
||||
config = m_creator->create();
|
||||
loadFromJSON(config, default_config);
|
||||
}
|
||||
# endif
|
||||
|
||||
if (!config->finalize()) {
|
||||
if (!config->algorithm().isValid()) {
|
||||
fprintf(stderr, "No valid algorithm specified. Exiting.\n");
|
||||
|
|
|
@ -36,6 +36,10 @@
|
|||
# define bit_AES (1 << 25)
|
||||
#endif
|
||||
|
||||
#ifndef bit_OSXSAVE
|
||||
# define bit_OSXSAVE (1 << 27)
|
||||
#endif
|
||||
|
||||
#ifndef bit_AVX2
|
||||
# define bit_AVX2 (1 << 5)
|
||||
#endif
|
||||
|
@ -107,10 +111,19 @@ static inline bool has_avx2()
|
|||
}
|
||||
|
||||
|
||||
static inline bool has_ossave()
|
||||
{
|
||||
int32_t cpu_info[4] = { 0 };
|
||||
cpuid(PROCESSOR_INFO, cpu_info);
|
||||
|
||||
return (cpu_info[ECX_Reg] & bit_OSXSAVE) != 0;
|
||||
}
|
||||
|
||||
|
||||
xmrig::BasicCpuInfo::BasicCpuInfo() :
|
||||
m_assembly(ASM_NONE),
|
||||
m_aes(has_aes_ni()),
|
||||
m_avx2(has_avx2()),
|
||||
m_avx2(has_avx2() && has_ossave()),
|
||||
m_brand(),
|
||||
m_threads(std::thread::hardware_concurrency())
|
||||
{
|
||||
|
|
|
@ -55,18 +55,21 @@ struct AlgoData
|
|||
|
||||
|
||||
static AlgoData const algorithms[] = {
|
||||
{ "cryptonight", "cn", xmrig::CRYPTONIGHT, xmrig::VARIANT_AUTO },
|
||||
{ "cryptonight/0", "cn/0", xmrig::CRYPTONIGHT, xmrig::VARIANT_0 },
|
||||
{ "cryptonight/1", "cn/1", xmrig::CRYPTONIGHT, xmrig::VARIANT_1 },
|
||||
{ "cryptonight/xtl", "cn/xtl", xmrig::CRYPTONIGHT, xmrig::VARIANT_XTL },
|
||||
{ "cryptonight/msr", "cn/msr", xmrig::CRYPTONIGHT, xmrig::VARIANT_MSR },
|
||||
{ "cryptonight/xao", "cn/xao", xmrig::CRYPTONIGHT, xmrig::VARIANT_XAO },
|
||||
{ "cryptonight/rto", "cn/rto", xmrig::CRYPTONIGHT, xmrig::VARIANT_RTO },
|
||||
{ "cryptonight/2", "cn/2", xmrig::CRYPTONIGHT, xmrig::VARIANT_2 },
|
||||
{ "cryptonight/half", "cn/half", xmrig::CRYPTONIGHT, xmrig::VARIANT_HALF },
|
||||
{ "cryptonight/xtlv9", "cn/xtlv9", xmrig::CRYPTONIGHT, xmrig::VARIANT_HALF },
|
||||
{ "cryptonight/wow", "cn/wow", xmrig::CRYPTONIGHT, xmrig::VARIANT_WOW },
|
||||
{ "cryptonight/r", "cn/r", xmrig::CRYPTONIGHT, xmrig::VARIANT_4 },
|
||||
{ "cryptonight", "cn", xmrig::CRYPTONIGHT, xmrig::VARIANT_AUTO },
|
||||
{ "cryptonight/0", "cn/0", xmrig::CRYPTONIGHT, xmrig::VARIANT_0 },
|
||||
{ "cryptonight/1", "cn/1", xmrig::CRYPTONIGHT, xmrig::VARIANT_1 },
|
||||
{ "cryptonight/xtl", "cn/xtl", xmrig::CRYPTONIGHT, xmrig::VARIANT_XTL },
|
||||
{ "cryptonight/msr", "cn/msr", xmrig::CRYPTONIGHT, xmrig::VARIANT_MSR },
|
||||
{ "cryptonight/xao", "cn/xao", xmrig::CRYPTONIGHT, xmrig::VARIANT_XAO },
|
||||
{ "cryptonight/rto", "cn/rto", xmrig::CRYPTONIGHT, xmrig::VARIANT_RTO },
|
||||
{ "cryptonight/2", "cn/2", xmrig::CRYPTONIGHT, xmrig::VARIANT_2 },
|
||||
{ "cryptonight/half", "cn/half", xmrig::CRYPTONIGHT, xmrig::VARIANT_HALF },
|
||||
{ "cryptonight/xtlv9", "cn/xtlv9", xmrig::CRYPTONIGHT, xmrig::VARIANT_HALF },
|
||||
{ "cryptonight/wow", "cn/wow", xmrig::CRYPTONIGHT, xmrig::VARIANT_WOW },
|
||||
{ "cryptonight/r", "cn/r", xmrig::CRYPTONIGHT, xmrig::VARIANT_4 },
|
||||
{ "cryptonight/rwz", "cn/rwz", xmrig::CRYPTONIGHT, xmrig::VARIANT_RWZ },
|
||||
{ "cryptonight/zls", "cn/zls", xmrig::CRYPTONIGHT, xmrig::VARIANT_ZLS },
|
||||
{ "cryptonight/double", "cn/double", xmrig::CRYPTONIGHT, xmrig::VARIANT_DOUBLE },
|
||||
|
||||
# ifndef XMRIG_NO_AEON
|
||||
{ "cryptonight-lite", "cn-lite", xmrig::CRYPTONIGHT_LITE, xmrig::VARIANT_AUTO },
|
||||
|
@ -134,6 +137,9 @@ static const char *variants[] = {
|
|||
"gpu",
|
||||
"wow",
|
||||
"r",
|
||||
"rwz",
|
||||
"zls",
|
||||
"double"
|
||||
};
|
||||
|
||||
|
||||
|
@ -300,6 +306,9 @@ const char *xmrig::Algorithm::perfAlgoName(const xmrig::PerfAlgo pa) {
|
|||
"cn/half",
|
||||
"cn/gpu",
|
||||
"cn/r",
|
||||
"cn/rwz",
|
||||
"cn/zls",
|
||||
"cn/double",
|
||||
"cn-lite",
|
||||
"cn-heavy",
|
||||
"cn-pico",
|
||||
|
@ -330,6 +339,18 @@ xmrig::Algorithm::Algorithm(const xmrig::PerfAlgo pa) {
|
|||
m_algo = xmrig::CRYPTONIGHT;
|
||||
m_variant = xmrig::VARIANT_4;
|
||||
break;
|
||||
case PA_CN_RWZ:
|
||||
m_algo = xmrig::CRYPTONIGHT;
|
||||
m_variant = xmrig::VARIANT_RWZ;
|
||||
break;
|
||||
case PA_CN_ZLS:
|
||||
m_algo = xmrig::CRYPTONIGHT;
|
||||
m_variant = xmrig::VARIANT_ZLS;
|
||||
break;
|
||||
case PA_CN_DOUBLE:
|
||||
m_algo = xmrig::CRYPTONIGHT;
|
||||
m_variant = xmrig::VARIANT_DOUBLE;
|
||||
break;
|
||||
case PA_CN_LITE:
|
||||
m_algo = xmrig::CRYPTONIGHT_LITE;
|
||||
m_variant = xmrig::VARIANT_1;
|
||||
|
@ -353,12 +374,15 @@ xmrig::PerfAlgo xmrig::Algorithm::perf_algo() const {
|
|||
switch (m_algo) {
|
||||
case CRYPTONIGHT:
|
||||
switch (m_variant) {
|
||||
case VARIANT_2: return PA_CN2;
|
||||
case VARIANT_HALF: return PA_CN_HALF;
|
||||
case VARIANT_GPU: return PA_CN_GPU;
|
||||
case VARIANT_WOW: return PA_CN_R;
|
||||
case VARIANT_4: return PA_CN_R;
|
||||
default: return PA_CN;
|
||||
case VARIANT_2: return PA_CN2;
|
||||
case VARIANT_HALF: return PA_CN_HALF;
|
||||
case VARIANT_GPU: return PA_CN_GPU;
|
||||
case VARIANT_WOW: return PA_CN_R;
|
||||
case VARIANT_4: return PA_CN_R;
|
||||
case VARIANT_RWZ: return PA_CN_RWZ;
|
||||
case VARIANT_ZLS: return PA_CN_ZLS;
|
||||
case VARIANT_DOUBLE: return PA_CN_DOUBLE;
|
||||
default: return PA_CN;
|
||||
}
|
||||
case CRYPTONIGHT_LITE: return PA_CN_LITE;
|
||||
case CRYPTONIGHT_HEAVY: return PA_CN_HEAVY;
|
||||
|
|
|
@ -138,6 +138,12 @@ bool xmrig::Job::setBlob(const char *blob)
|
|||
else if (m_algorithm.variant() == VARIANT_WOW && m_blob[0] < 11) {
|
||||
m_algorithm.setVariant(VARIANT_2);
|
||||
}
|
||||
else if (m_algorithm.variant() == VARIANT_RWZ && m_blob[0] < 12) {
|
||||
m_algorithm.setVariant(VARIANT_2);
|
||||
}
|
||||
else if (m_algorithm.variant() == VARIANT_ZLS && m_blob[0] < 8) {
|
||||
m_algorithm.setVariant(VARIANT_2);
|
||||
}
|
||||
}
|
||||
|
||||
# ifdef XMRIG_PROXY_PROJECT
|
||||
|
|
|
@ -43,14 +43,17 @@ enum Algo {
|
|||
// algorithms that can has different performance
|
||||
enum PerfAlgo {
|
||||
PA_INVALID = -1,
|
||||
PA_CN, /* cn/0 (Monero) */
|
||||
PA_CN2, /* cn/2 (Monero) */
|
||||
PA_CN_HALF, /* cn/half (MSR) */
|
||||
PA_CN_GPU, /* cn/gpu (RYO) */
|
||||
PA_CN_R, /* cn/4 (Monero) */
|
||||
PA_CN_LITE, /* cn-lite/1 (AEON) */
|
||||
PA_CN_HEAVY, /* cn-heavy/0 (LOKI) */
|
||||
PA_CN_PICO, /* cn-pico/trtl (TRTL) */
|
||||
PA_CN, /* cn/0 (Monero) */
|
||||
PA_CN2, /* cn/2 (Monero) */
|
||||
PA_CN_HALF, /* cn/half (MSR) */
|
||||
PA_CN_GPU, /* cn/gpu (RYO) */
|
||||
PA_CN_R, /* cn/4 (Monero) */
|
||||
PA_CN_RWZ, /* cn/rwz (Graft) */
|
||||
PA_CN_ZLS, /* cn/zls (Zelerius) */
|
||||
PA_CN_DOUBLE, /* cn/double (Double) */
|
||||
PA_CN_LITE, /* cn-lite/1 (AEON) */
|
||||
PA_CN_HEAVY, /* cn-heavy/0 (LOKI) */
|
||||
PA_CN_PICO, /* cn-pico/trtl (TRTL) */
|
||||
PA_MAX
|
||||
};
|
||||
|
||||
|
@ -75,21 +78,24 @@ enum AlgoVariant {
|
|||
|
||||
|
||||
enum Variant {
|
||||
VARIANT_AUTO = -1, // Autodetect
|
||||
VARIANT_0 = 0, // Original CryptoNight or CryptoNight-Heavy
|
||||
VARIANT_1 = 1, // CryptoNight variant 1 also known as Monero7 and CryptoNightV7
|
||||
VARIANT_TUBE = 2, // Modified CryptoNight-Heavy (TUBE only)
|
||||
VARIANT_XTL = 3, // Modified CryptoNight variant 1 (Stellite only)
|
||||
VARIANT_MSR = 4, // Modified CryptoNight variant 1 (Masari only)
|
||||
VARIANT_XHV = 5, // Modified CryptoNight-Heavy (Haven Protocol only)
|
||||
VARIANT_XAO = 6, // Modified CryptoNight variant 0 (Alloy only)
|
||||
VARIANT_RTO = 7, // Modified CryptoNight variant 1 (Arto only)
|
||||
VARIANT_2 = 8, // CryptoNight variant 2
|
||||
VARIANT_HALF = 9, // CryptoNight variant 2 with half iterations (Masari/Stellite)
|
||||
VARIANT_TRTL = 10, // CryptoNight Turtle (TRTL)
|
||||
VARIANT_GPU = 11, // CryptoNight-GPU (Ryo)
|
||||
VARIANT_WOW = 12, // CryptoNightR (Wownero)
|
||||
VARIANT_4 = 13, // CryptoNightR (Monero's variant 4)
|
||||
VARIANT_AUTO = -1, // Autodetect
|
||||
VARIANT_0 = 0, // Original CryptoNight or CryptoNight-Heavy
|
||||
VARIANT_1 = 1, // CryptoNight variant 1 also known as Monero7 and CryptoNightV7
|
||||
VARIANT_TUBE = 2, // Modified CryptoNight-Heavy (TUBE only)
|
||||
VARIANT_XTL = 3, // Modified CryptoNight variant 1 (Stellite only)
|
||||
VARIANT_MSR = 4, // Modified CryptoNight variant 1 (Masari only)
|
||||
VARIANT_XHV = 5, // Modified CryptoNight-Heavy (Haven Protocol only)
|
||||
VARIANT_XAO = 6, // Modified CryptoNight variant 0 (Alloy only)
|
||||
VARIANT_RTO = 7, // Modified CryptoNight variant 1 (Arto only)
|
||||
VARIANT_2 = 8, // CryptoNight variant 2
|
||||
VARIANT_HALF = 9, // CryptoNight variant 2 with half iterations (Masari/Stellite)
|
||||
VARIANT_TRTL = 10, // CryptoNight Turtle (TRTL)
|
||||
VARIANT_GPU = 11, // CryptoNight-GPU (Ryo)
|
||||
VARIANT_WOW = 12, // CryptoNightR (Wownero)
|
||||
VARIANT_4 = 13, // CryptoNightR (Monero's variant 4)
|
||||
VARIANT_RWZ = 14, // CryptoNight variant 2 with 3/4 iterations and reversed shuffle operation (Graft)
|
||||
VARIANT_ZLS = 15, // CryptoNight variant 2 with 3/4 iterations (Zelerius)
|
||||
VARIANT_DOUBLE = 16, // CryptoNight variant 2 with double iterations (X-CASH)
|
||||
VARIANT_MAX
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue