From 8f9eb8ef2e10872344ecf4281c9a0a0946b00e4c Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 14 Nov 2017 16:12:18 +0000 Subject: change getName to static lc string (sorry psc) --- xmrstak/backend/iBackend.hpp | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'xmrstak/backend') diff --git a/xmrstak/backend/iBackend.hpp b/xmrstak/backend/iBackend.hpp index dbfbc99..3d2115a 100644 --- a/xmrstak/backend/iBackend.hpp +++ b/xmrstak/backend/iBackend.hpp @@ -8,22 +8,33 @@ #include #include +template +constexpr std::size_t countof(T const (&)[N]) noexcept +{ + return N; +} + namespace xmrstak { struct iBackend { - enum BackendType : uint32_t { UNKNOWN = 0, CPU = 1u, AMD = 2u, NVIDIA = 3u }; + enum BackendType : uint32_t { UNKNOWN = 0u, CPU = 1u, AMD = 2u, NVIDIA = 3u }; - static std::string getName(const BackendType type) + static const char* getName(const BackendType type) { - std::vector backendNames = { - "UNKNOWN", - "CPU", - "AMD", - "NVIDIA" + const char* backendNames[] = { + "unknown", + "cpu", + "amd", + "nvidia" }; - return backendNames[static_cast(type)]; + + uint32_t i = static_cast(type); + if(i >= countof(backendNames)) + i = 0; + + return backendNames[i]; } std::atomic iHashCount; -- cgit v1.1 From 608139ccde751eb053b54e8d41899aec9208017d Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 14 Nov 2017 16:42:12 +0000 Subject: Pass threadno up the food chain --- xmrstak/backend/amd/minethd.cpp | 2 +- xmrstak/backend/cpu/minethd.cpp | 8 ++++---- xmrstak/backend/nvidia/minethd.cpp | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'xmrstak/backend') diff --git a/xmrstak/backend/amd/minethd.cpp b/xmrstak/backend/amd/minethd.cpp index 912587b..ce62565 100644 --- a/xmrstak/backend/amd/minethd.cpp +++ b/xmrstak/backend/amd/minethd.cpp @@ -237,7 +237,7 @@ void minethd::work_main() hash_fun(bWorkBlob, oWork.iWorkSize, bResult, cpu_ctx); if ( (*((uint64_t*)(bResult + 24))) < oWork.iTarget) - executor::inst()->push_event(ex_event(job_result(oWork.sJobID, results[i], bResult), oWork.iPoolId)); + executor::inst()->push_event(ex_event(job_result(oWork.sJobID, results[i], bResult, iThreadNo), oWork.iPoolId)); else executor::inst()->log_result_error("AMD Invalid Result"); } diff --git a/xmrstak/backend/cpu/minethd.cpp b/xmrstak/backend/cpu/minethd.cpp index 8b913cf..8b0eec1 100644 --- a/xmrstak/backend/cpu/minethd.cpp +++ b/xmrstak/backend/cpu/minethd.cpp @@ -354,7 +354,8 @@ void minethd::work_main() piHashVal = (uint64_t*)(result.bResult + 24); piNonce = (uint32_t*)(oWork.bWorkBlob + 39); globalStates::inst().inst().iConsumeCnt++; - + result.iThreadId = iThreadNo; + while (bQuit == 0) { if (oWork.bStall) @@ -535,17 +536,16 @@ void minethd::double_work_main() globalStates::inst().calc_start_nonce(iNonce, oWork.bNiceHash, nonce_chunk); } - *piNonce0 = ++iNonce; *piNonce1 = ++iNonce; hash_fun(bDoubleWorkBlob, oWork.iWorkSize, bDoubleHashOut, ctx0, ctx1); if (*piHashVal0 < oWork.iTarget) - executor::inst()->push_event(ex_event(job_result(oWork.sJobID, iNonce-1, bDoubleHashOut), oWork.iPoolId)); + executor::inst()->push_event(ex_event(job_result(oWork.sJobID, iNonce-1, bDoubleHashOut, iThreadNo), oWork.iPoolId)); if (*piHashVal1 < oWork.iTarget) - executor::inst()->push_event(ex_event(job_result(oWork.sJobID, iNonce, bDoubleHashOut + 32), oWork.iPoolId)); + executor::inst()->push_event(ex_event(job_result(oWork.sJobID, iNonce, bDoubleHashOut + 32, iThreadNo), oWork.iPoolId)); std::this_thread::yield(); } diff --git a/xmrstak/backend/nvidia/minethd.cpp b/xmrstak/backend/nvidia/minethd.cpp index a1cafa7..e15fc56 100644 --- a/xmrstak/backend/nvidia/minethd.cpp +++ b/xmrstak/backend/nvidia/minethd.cpp @@ -279,7 +279,7 @@ void minethd::work_main() hash_fun(bWorkBlob, oWork.iWorkSize, bResult, cpu_ctx); if ( (*((uint64_t*)(bResult + 24))) < oWork.iTarget) - executor::inst()->push_event(ex_event(job_result(oWork.sJobID, foundNonce[i], bResult), oWork.iPoolId)); + executor::inst()->push_event(ex_event(job_result(oWork.sJobID, foundNonce[i], bResult, iThreadNo), oWork.iPoolId)); else executor::inst()->log_result_error("NVIDIA Invalid Result"); } -- cgit v1.1