diff options
author | psychocrypt <psychocrypt@users.noreply.github.com> | 2017-10-01 00:36:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-01 00:36:33 +0200 |
commit | 4e5e98a095ed0ec038b9ea5421407b630bda273d (patch) | |
tree | 85c1401542a888b9d48255342095c8b6952d71bf /xmrstak/backend/miner_work.hpp | |
parent | 0afbc279e0db816dbb9d4d623929e2faf8108451 (diff) | |
parent | 2c8d64abfa1c989f260dd4fcaa5c6d7707a5f668 (diff) | |
download | xmr-stak-4e5e98a095ed0ec038b9ea5421407b630bda273d.zip xmr-stak-4e5e98a095ed0ec038b9ea5421407b630bda273d.tar.gz |
Merge pull request #1 from psychocrypt/topic-restructure11
refactor xmr-stak
Diffstat (limited to 'xmrstak/backend/miner_work.hpp')
-rw-r--r-- | xmrstak/backend/miner_work.hpp | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/xmrstak/backend/miner_work.hpp b/xmrstak/backend/miner_work.hpp new file mode 100644 index 0000000..e9f9e07 --- /dev/null +++ b/xmrstak/backend/miner_work.hpp @@ -0,0 +1,85 @@ +#pragma once + +#include <thread> +#include <atomic> +#include <mutex> +#include <cstdint> +#include <iostream> +#include <cassert> +#include <cstring> + +namespace xmrstak +{ + struct miner_work + { + char sJobID[64]; + uint8_t bWorkBlob[112]; + uint32_t iWorkSize; + uint32_t iResumeCnt; + uint64_t iTarget; + // \todo remove workaround needed for amd + uint32_t iTarget32; + bool bNiceHash; + bool bStall; + size_t iPoolId; + + miner_work() : iWorkSize(0), bNiceHash(false), bStall(true), iPoolId(0) { } + + miner_work(const char* sJobID, const uint8_t* bWork, uint32_t iWorkSize, uint32_t iResumeCnt, + uint64_t iTarget, size_t iPoolId) : iWorkSize(iWorkSize), iResumeCnt(iResumeCnt), + iTarget(iTarget), bNiceHash(false), bStall(false), iPoolId(iPoolId) + { + assert(iWorkSize <= sizeof(bWorkBlob)); + memcpy(this->sJobID, sJobID, sizeof(miner_work::sJobID)); + memcpy(this->bWorkBlob, bWork, iWorkSize); + } + + miner_work(miner_work const&) = delete; + + miner_work& operator=(miner_work const& from) + { + assert(this != &from); + + iWorkSize = from.iWorkSize; + iResumeCnt = from.iResumeCnt; + iTarget = from.iTarget; + iTarget32 = from.iTarget32; + bNiceHash = from.bNiceHash; + bStall = from.bStall; + iPoolId = from.iPoolId; + + assert(iWorkSize <= sizeof(bWorkBlob)); + memcpy(sJobID, from.sJobID, sizeof(sJobID)); + memcpy(bWorkBlob, from.bWorkBlob, iWorkSize); + + return *this; + } + + miner_work(miner_work&& from) : iWorkSize(from.iWorkSize), iTarget(from.iTarget),iTarget32(from.iTarget32), + bStall(from.bStall), iPoolId(from.iPoolId) + { + assert(iWorkSize <= sizeof(bWorkBlob)); + memcpy(sJobID, from.sJobID, sizeof(sJobID)); + memcpy(bWorkBlob, from.bWorkBlob, iWorkSize); + } + + miner_work& operator=(miner_work&& from) + { + assert(this != &from); + + iWorkSize = from.iWorkSize; + iResumeCnt = from.iResumeCnt; + iTarget = from.iTarget; + iTarget32 = from.iTarget32; + bNiceHash = from.bNiceHash; + bStall = from.bStall; + iPoolId = from.iPoolId; + + assert(iWorkSize <= sizeof(bWorkBlob)); + memcpy(sJobID, from.sJobID, sizeof(sJobID)); + memcpy(bWorkBlob, from.bWorkBlob, iWorkSize); + + return *this; + } + }; +} // namepsace xmrstak |