REDACTED-rig/src/crypto/argon2_hasher/hash/cpu/CpuHasher.h
2019-08-28 00:53:36 +03:00

42 lines
1.1 KiB
C++

//
// Created by Haifa Bogdan Adnan on 03/08/2018.
//
#ifndef ARGON2_CPU_HASHER_H
#define ARGON2_CPU_HASHER_H
struct CpuHasherThread {
Argon2 *argon2;
HashData hashData;
void *mem;
};
class CpuHasher : public Hasher {
public:
CpuHasher();
~CpuHasher();
virtual bool initialize(xmrig::Algo algorithm, xmrig::Variant variant);
virtual bool configure(xmrig::HasherConfig &config);
virtual void cleanup();
virtual int compute(int threadIdx, uint8_t *input, size_t size, uint8_t *output);
virtual size_t parallelism(int workerIdx);
virtual size_t deviceCount();
virtual DeviceInfo &device(int workerIdx);
private:
string detectFeaturesAndMakeDescription();
void loadArgon2BlockFiller();
void *allocateMemory(void *&buffer);
DeviceInfo m_deviceInfo;
string m_optimization;
int m_availableProcessingThr;
int m_availableMemoryThr;
void *m_dllHandle;
Argon2Profile *m_profile;
argon2BlocksFillerPtr m_argon2BlocksFillerPtr;
CpuHasherThread *m_threadData;
};
#endif //ARGON2_CPU_HASHER_H