mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-11 07:17:58 +00:00
Turn work_restart array into a bool in thr_info
This commit is contained in:
parent
892e9bf88a
commit
d4af2d0535
12
cgminer.c
12
cgminer.c
@ -158,8 +158,6 @@ int gpur_thr_id;
|
|||||||
static int api_thr_id;
|
static int api_thr_id;
|
||||||
static int total_threads;
|
static int total_threads;
|
||||||
|
|
||||||
struct work_restart *work_restart = NULL;
|
|
||||||
|
|
||||||
static pthread_mutex_t hash_lock;
|
static pthread_mutex_t hash_lock;
|
||||||
static pthread_mutex_t qd_lock;
|
static pthread_mutex_t qd_lock;
|
||||||
static pthread_mutex_t *stgd_lock;
|
static pthread_mutex_t *stgd_lock;
|
||||||
@ -2516,7 +2514,7 @@ static void restart_threads(void)
|
|||||||
queue_request(NULL, true);
|
queue_request(NULL, true);
|
||||||
|
|
||||||
for (i = 0; i < mining_threads; i++)
|
for (i = 0; i < mining_threads; i++)
|
||||||
work_restart[i].restart = 1;
|
thr_info[i].work_restart = true;
|
||||||
|
|
||||||
mutex_lock(&restart_lock);
|
mutex_lock(&restart_lock);
|
||||||
pthread_cond_broadcast(&restart_cond);
|
pthread_cond_broadcast(&restart_cond);
|
||||||
@ -4021,7 +4019,7 @@ void *miner_thread(void *userdata)
|
|||||||
gettimeofday(&tv_lastupdate, NULL);
|
gettimeofday(&tv_lastupdate, NULL);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
work_restart[thr_id].restart = 0;
|
mythr->work_restart = false;
|
||||||
if (api->free_work && likely(work->pool))
|
if (api->free_work && likely(work->pool))
|
||||||
api->free_work(mythr, work);
|
api->free_work(mythr, work);
|
||||||
if (unlikely(!get_work(work, requested, mythr, thr_id))) {
|
if (unlikely(!get_work(work, requested, mythr, thr_id))) {
|
||||||
@ -4076,7 +4074,7 @@ void *miner_thread(void *userdata)
|
|||||||
|
|
||||||
gettimeofday(&getwork_start, NULL);
|
gettimeofday(&getwork_start, NULL);
|
||||||
|
|
||||||
if (unlikely(work_restart[thr_id].restart)) {
|
if (unlikely(mythr->work_restart)) {
|
||||||
|
|
||||||
/* Apart from device_thread 0, we stagger the
|
/* Apart from device_thread 0, we stagger the
|
||||||
* starting of every next thread to try and get
|
* starting of every next thread to try and get
|
||||||
@ -5326,10 +5324,6 @@ int main(int argc, char *argv[])
|
|||||||
#endif // defined(unix)
|
#endif // defined(unix)
|
||||||
|
|
||||||
total_threads = mining_threads + 7;
|
total_threads = mining_threads + 7;
|
||||||
work_restart = calloc(total_threads, sizeof(*work_restart));
|
|
||||||
if (!work_restart)
|
|
||||||
quit(1, "Failed to calloc work_restart");
|
|
||||||
|
|
||||||
thr_info = calloc(total_threads, sizeof(*thr));
|
thr_info = calloc(total_threads, sizeof(*thr));
|
||||||
if (!thr_info)
|
if (!thr_info)
|
||||||
quit(1, "Failed to calloc thr_info");
|
quit(1, "Failed to calloc thr_info");
|
||||||
|
@ -308,7 +308,7 @@ static uint64_t bitforce_get_result(struct thr_info *thr, struct work *work)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
while (bitforce->wait_ms < BITFORCE_LONG_TIMEOUT_MS) {
|
while (bitforce->wait_ms < BITFORCE_LONG_TIMEOUT_MS) {
|
||||||
if (unlikely(work_restart[thr->id].restart))
|
if (unlikely(thr->work_restart))
|
||||||
return 1;
|
return 1;
|
||||||
mutex_lock(&bitforce->device_mutex);
|
mutex_lock(&bitforce->device_mutex);
|
||||||
BFwrite(fdDev, "ZFX", 3);
|
BFwrite(fdDev, "ZFX", 3);
|
||||||
|
26
driver-cpu.c
26
driver-cpu.c
@ -81,51 +81,51 @@ extern int dev_from_id(int thr_id);
|
|||||||
|
|
||||||
|
|
||||||
/* chipset-optimized hash functions */
|
/* chipset-optimized hash functions */
|
||||||
extern bool ScanHash_4WaySSE2(int, const unsigned char *pmidstate,
|
extern bool ScanHash_4WaySSE2(struct thr_info*, const unsigned char *pmidstate,
|
||||||
unsigned char *pdata, unsigned char *phash1, unsigned char *phash,
|
unsigned char *pdata, unsigned char *phash1, unsigned char *phash,
|
||||||
const unsigned char *ptarget,
|
const unsigned char *ptarget,
|
||||||
uint32_t max_nonce, uint32_t *last_nonce, uint32_t nonce);
|
uint32_t max_nonce, uint32_t *last_nonce, uint32_t nonce);
|
||||||
|
|
||||||
extern bool ScanHash_altivec_4way(int thr_id, const unsigned char *pmidstate,
|
extern bool ScanHash_altivec_4way(struct thr_info*, const unsigned char *pmidstate,
|
||||||
unsigned char *pdata,
|
unsigned char *pdata,
|
||||||
unsigned char *phash1, unsigned char *phash,
|
unsigned char *phash1, unsigned char *phash,
|
||||||
const unsigned char *ptarget,
|
const unsigned char *ptarget,
|
||||||
uint32_t max_nonce, uint32_t *last_nonce, uint32_t nonce);
|
uint32_t max_nonce, uint32_t *last_nonce, uint32_t nonce);
|
||||||
|
|
||||||
extern bool scanhash_via(int, const unsigned char *pmidstate,
|
extern bool scanhash_via(struct thr_info*, const unsigned char *pmidstate,
|
||||||
unsigned char *pdata,
|
unsigned char *pdata,
|
||||||
unsigned char *phash1, unsigned char *phash,
|
unsigned char *phash1, unsigned char *phash,
|
||||||
const unsigned char *target,
|
const unsigned char *target,
|
||||||
uint32_t max_nonce, uint32_t *last_nonce, uint32_t n);
|
uint32_t max_nonce, uint32_t *last_nonce, uint32_t n);
|
||||||
|
|
||||||
extern bool scanhash_c(int, const unsigned char *midstate, unsigned char *data,
|
extern bool scanhash_c(struct thr_info*, const unsigned char *midstate, unsigned char *data,
|
||||||
unsigned char *hash1, unsigned char *hash,
|
unsigned char *hash1, unsigned char *hash,
|
||||||
const unsigned char *target,
|
const unsigned char *target,
|
||||||
uint32_t max_nonce, uint32_t *last_nonce, uint32_t n);
|
uint32_t max_nonce, uint32_t *last_nonce, uint32_t n);
|
||||||
|
|
||||||
extern bool scanhash_cryptopp(int, const unsigned char *midstate,unsigned char *data,
|
extern bool scanhash_cryptopp(struct thr_info*, const unsigned char *midstate,unsigned char *data,
|
||||||
unsigned char *hash1, unsigned char *hash,
|
unsigned char *hash1, unsigned char *hash,
|
||||||
const unsigned char *target,
|
const unsigned char *target,
|
||||||
uint32_t max_nonce, uint32_t *last_nonce, uint32_t n);
|
uint32_t max_nonce, uint32_t *last_nonce, uint32_t n);
|
||||||
|
|
||||||
extern bool scanhash_asm32(int, const unsigned char *midstate,unsigned char *data,
|
extern bool scanhash_asm32(struct thr_info*, const unsigned char *midstate,unsigned char *data,
|
||||||
unsigned char *hash1, unsigned char *hash,
|
unsigned char *hash1, unsigned char *hash,
|
||||||
const unsigned char *target,
|
const unsigned char *target,
|
||||||
uint32_t max_nonce, uint32_t *last_nonce, uint32_t nonce);
|
uint32_t max_nonce, uint32_t *last_nonce, uint32_t nonce);
|
||||||
|
|
||||||
extern bool scanhash_sse2_64(int, const unsigned char *pmidstate, unsigned char *pdata,
|
extern bool scanhash_sse2_64(struct thr_info*, const unsigned char *pmidstate, unsigned char *pdata,
|
||||||
unsigned char *phash1, unsigned char *phash,
|
unsigned char *phash1, unsigned char *phash,
|
||||||
const unsigned char *ptarget,
|
const unsigned char *ptarget,
|
||||||
uint32_t max_nonce, uint32_t *last_nonce,
|
uint32_t max_nonce, uint32_t *last_nonce,
|
||||||
uint32_t nonce);
|
uint32_t nonce);
|
||||||
|
|
||||||
extern bool scanhash_sse4_64(int, const unsigned char *pmidstate, unsigned char *pdata,
|
extern bool scanhash_sse4_64(struct thr_info*, const unsigned char *pmidstate, unsigned char *pdata,
|
||||||
unsigned char *phash1, unsigned char *phash,
|
unsigned char *phash1, unsigned char *phash,
|
||||||
const unsigned char *ptarget,
|
const unsigned char *ptarget,
|
||||||
uint32_t max_nonce, uint32_t *last_nonce,
|
uint32_t max_nonce, uint32_t *last_nonce,
|
||||||
uint32_t nonce);
|
uint32_t nonce);
|
||||||
|
|
||||||
extern bool scanhash_sse2_32(int, const unsigned char *pmidstate, unsigned char *pdata,
|
extern bool scanhash_sse2_32(struct thr_info*, const unsigned char *pmidstate, unsigned char *pdata,
|
||||||
unsigned char *phash1, unsigned char *phash,
|
unsigned char *phash1, unsigned char *phash,
|
||||||
const unsigned char *ptarget,
|
const unsigned char *ptarget,
|
||||||
uint32_t max_nonce, uint32_t *last_nonce,
|
uint32_t max_nonce, uint32_t *last_nonce,
|
||||||
@ -224,8 +224,7 @@ double bench_algo_stage3(
|
|||||||
memset(&work, 0, sizeof(work));
|
memset(&work, 0, sizeof(work));
|
||||||
memcpy(&work, &bench_block, min_size);
|
memcpy(&work, &bench_block, min_size);
|
||||||
|
|
||||||
struct work_restart dummy;
|
struct thr_info dummy = {0};
|
||||||
work_restart = &dummy;
|
|
||||||
|
|
||||||
struct timeval end;
|
struct timeval end;
|
||||||
struct timeval start;
|
struct timeval start;
|
||||||
@ -236,7 +235,7 @@ double bench_algo_stage3(
|
|||||||
{
|
{
|
||||||
sha256_func func = sha256_funcs[algo];
|
sha256_func func = sha256_funcs[algo];
|
||||||
(*func)(
|
(*func)(
|
||||||
0,
|
&dummy,
|
||||||
work.midstate,
|
work.midstate,
|
||||||
work.data,
|
work.data,
|
||||||
work.hash1,
|
work.hash1,
|
||||||
@ -248,7 +247,6 @@ double bench_algo_stage3(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
gettimeofday(&end, 0);
|
gettimeofday(&end, 0);
|
||||||
work_restart = NULL;
|
|
||||||
|
|
||||||
uint64_t usec_end = ((uint64_t)end.tv_sec)*1000*1000 + end.tv_usec;
|
uint64_t usec_end = ((uint64_t)end.tv_sec)*1000*1000 + end.tv_usec;
|
||||||
uint64_t usec_start = ((uint64_t)start.tv_sec)*1000*1000 + start.tv_usec;
|
uint64_t usec_start = ((uint64_t)start.tv_sec)*1000*1000 + start.tv_usec;
|
||||||
@ -795,7 +793,7 @@ CPUSearch:
|
|||||||
{
|
{
|
||||||
sha256_func func = sha256_funcs[opt_algo];
|
sha256_func func = sha256_funcs[opt_algo];
|
||||||
rc = (*func)(
|
rc = (*func)(
|
||||||
thr_id,
|
thr,
|
||||||
work->midstate,
|
work->midstate,
|
||||||
work->data,
|
work->data,
|
||||||
work->hash1,
|
work->hash1,
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#ifndef __DEVICE_CPU_H__
|
#ifndef __DEVICE_CPU_H__
|
||||||
#define __DEVICE_CPU_H__
|
#define __DEVICE_CPU_H__
|
||||||
|
|
||||||
#include "miner.h" /* for work_restart, TODO: re-factor dependency */
|
#include "miner.h"
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
@ -198,7 +198,7 @@ static void rev(unsigned char *s, size_t l)
|
|||||||
#define icarus_open2(devpath, purge) serial_open(devpath, 115200, ICARUS_READ_FAULT_DECISECONDS, purge)
|
#define icarus_open2(devpath, purge) serial_open(devpath, 115200, ICARUS_READ_FAULT_DECISECONDS, purge)
|
||||||
#define icarus_open(devpath) icarus_open2(devpath, false)
|
#define icarus_open(devpath) icarus_open2(devpath, false)
|
||||||
|
|
||||||
static int icarus_gets(unsigned char *buf, int fd, struct timeval *tv_finish, int thr_id, int read_count)
|
static int icarus_gets(unsigned char *buf, int fd, struct timeval *tv_finish, struct thr_info *thr, int read_count)
|
||||||
{
|
{
|
||||||
ssize_t ret = 0;
|
ssize_t ret = 0;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
@ -232,7 +232,7 @@ static int icarus_gets(unsigned char *buf, int fd, struct timeval *tv_finish, in
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (thr_id >= 0 && work_restart[thr_id].restart) {
|
if (thr->work_restart) {
|
||||||
if (opt_debug) {
|
if (opt_debug) {
|
||||||
applog(LOG_DEBUG,
|
applog(LOG_DEBUG,
|
||||||
"Icarus Read: Work restart at %.2f seconds",
|
"Icarus Read: Work restart at %.2f seconds",
|
||||||
@ -392,7 +392,10 @@ static bool icarus_detect_one(const char *devpath)
|
|||||||
gettimeofday(&tv_start, NULL);
|
gettimeofday(&tv_start, NULL);
|
||||||
|
|
||||||
memset(nonce_bin, 0, sizeof(nonce_bin));
|
memset(nonce_bin, 0, sizeof(nonce_bin));
|
||||||
icarus_gets(nonce_bin, fd, &tv_finish, -1, 1);
|
struct thr_info dummy = {
|
||||||
|
.work_restart = false,
|
||||||
|
};
|
||||||
|
icarus_gets(nonce_bin, fd, &tv_finish, &dummy, 1);
|
||||||
|
|
||||||
icarus_close(fd);
|
icarus_close(fd);
|
||||||
|
|
||||||
@ -474,7 +477,6 @@ static bool icarus_prepare(struct thr_info *thr)
|
|||||||
static uint64_t icarus_scanhash(struct thr_info *thr, struct work *work,
|
static uint64_t icarus_scanhash(struct thr_info *thr, struct work *work,
|
||||||
__maybe_unused uint64_t max_nonce)
|
__maybe_unused uint64_t max_nonce)
|
||||||
{
|
{
|
||||||
const int thr_id = thr->id;
|
|
||||||
struct cgpu_info *icarus;
|
struct cgpu_info *icarus;
|
||||||
int fd;
|
int fd;
|
||||||
int ret;
|
int ret;
|
||||||
@ -529,7 +531,7 @@ static uint64_t icarus_scanhash(struct thr_info *thr, struct work *work,
|
|||||||
/* Icarus will return 4 bytes (ICARUS_READ_SIZE) nonces or nothing */
|
/* Icarus will return 4 bytes (ICARUS_READ_SIZE) nonces or nothing */
|
||||||
memset(nonce_bin, 0, sizeof(nonce_bin));
|
memset(nonce_bin, 0, sizeof(nonce_bin));
|
||||||
info = icarus_info[icarus->device_id];
|
info = icarus_info[icarus->device_id];
|
||||||
ret = icarus_gets(nonce_bin, fd, &tv_finish, thr_id, info->read_count);
|
ret = icarus_gets(nonce_bin, fd, &tv_finish, thr, info->read_count);
|
||||||
|
|
||||||
work->blk.nonce = 0xffffffff;
|
work->blk.nonce = 0xffffffff;
|
||||||
memcpy((char *)&nonce, nonce_bin, sizeof(nonce_bin));
|
memcpy((char *)&nonce, nonce_bin, sizeof(nonce_bin));
|
||||||
|
@ -390,7 +390,7 @@ fd_set fds;
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define work_restart(thr) work_restart[thr->id].restart
|
#define work_restart(thr) thr->work_restart
|
||||||
|
|
||||||
static uint64_t
|
static uint64_t
|
||||||
modminer_process_results(struct thr_info*thr)
|
modminer_process_results(struct thr_info*thr)
|
||||||
|
@ -240,9 +240,9 @@ static uint64_t ztex_scanhash(struct thr_info *thr, struct work *work,
|
|||||||
overflow = false;
|
overflow = false;
|
||||||
|
|
||||||
applog(LOG_DEBUG, "%s: entering poll loop", ztex->repr);
|
applog(LOG_DEBUG, "%s: entering poll loop", ztex->repr);
|
||||||
while (!(overflow || work_restart[thr->id].restart)) {
|
while (!(overflow || thr->work_restart)) {
|
||||||
usleep(250000);
|
usleep(250000);
|
||||||
if (work_restart[thr->id].restart) {
|
if (thr->work_restart) {
|
||||||
applog(LOG_DEBUG, "%s: New work detected", ztex->repr);
|
applog(LOG_DEBUG, "%s: New work detected", ztex->repr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -265,7 +265,7 @@ static uint64_t ztex_scanhash(struct thr_info *thr, struct work *work,
|
|||||||
}
|
}
|
||||||
ztex_releaseFpga(ztex);
|
ztex_releaseFpga(ztex);
|
||||||
|
|
||||||
if (work_restart[thr->id].restart) {
|
if (thr->work_restart) {
|
||||||
applog(LOG_DEBUG, "%s: New work detected", ztex->repr);
|
applog(LOG_DEBUG, "%s: New work detected", ztex->repr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
10
miner.h
10
miner.h
@ -419,6 +419,8 @@ struct thr_info {
|
|||||||
bool pause;
|
bool pause;
|
||||||
bool getwork;
|
bool getwork;
|
||||||
double rolling;
|
double rolling;
|
||||||
|
|
||||||
|
bool work_restart;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern int thr_info_create(struct thr_info *thr, pthread_attr_t *attr, void *(*start) (void *), void *arg);
|
extern int thr_info_create(struct thr_info *thr, pthread_attr_t *attr, void *(*start) (void *), void *arg);
|
||||||
@ -553,7 +555,7 @@ extern json_t *json_rpc_call(CURL *curl, const char *url, const char *userpass,
|
|||||||
extern char *bin2hex(const unsigned char *p, size_t len);
|
extern char *bin2hex(const unsigned char *p, size_t len);
|
||||||
extern bool hex2bin(unsigned char *p, const char *hexstr, size_t len);
|
extern bool hex2bin(unsigned char *p, const char *hexstr, size_t len);
|
||||||
|
|
||||||
typedef bool (*sha256_func)(int thr_id, const unsigned char *pmidstate,
|
typedef bool (*sha256_func)(struct thr_info*, const unsigned char *pmidstate,
|
||||||
unsigned char *pdata,
|
unsigned char *pdata,
|
||||||
unsigned char *phash1, unsigned char *phash,
|
unsigned char *phash1, unsigned char *phash,
|
||||||
const unsigned char *ptarget,
|
const unsigned char *ptarget,
|
||||||
@ -565,11 +567,6 @@ extern bool fulltest(const unsigned char *hash, const unsigned char *target);
|
|||||||
|
|
||||||
extern int opt_scantime;
|
extern int opt_scantime;
|
||||||
|
|
||||||
struct work_restart {
|
|
||||||
volatile unsigned long restart;
|
|
||||||
char padding[128 - sizeof(unsigned long)];
|
|
||||||
};
|
|
||||||
|
|
||||||
extern pthread_mutex_t restart_lock;
|
extern pthread_mutex_t restart_lock;
|
||||||
extern pthread_cond_t restart_cond;
|
extern pthread_cond_t restart_cond;
|
||||||
|
|
||||||
@ -609,7 +606,6 @@ extern int num_processors;
|
|||||||
extern int hw_errors;
|
extern int hw_errors;
|
||||||
extern bool use_syslog;
|
extern bool use_syslog;
|
||||||
extern struct thr_info *thr_info;
|
extern struct thr_info *thr_info;
|
||||||
extern struct work_restart *work_restart;
|
|
||||||
extern struct cgpu_info gpus[MAX_GPUDEVICES];
|
extern struct cgpu_info gpus[MAX_GPUDEVICES];
|
||||||
extern int gpu_threads;
|
extern int gpu_threads;
|
||||||
extern double total_secs;
|
extern double total_secs;
|
||||||
|
@ -100,7 +100,7 @@ static const unsigned int pSHA256InitState[8] =
|
|||||||
{0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19};
|
{0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19};
|
||||||
|
|
||||||
|
|
||||||
bool ScanHash_4WaySSE2(int thr_id, const unsigned char *pmidstate,
|
bool ScanHash_4WaySSE2(struct thr_info*thr, const unsigned char *pmidstate,
|
||||||
unsigned char *pdata,
|
unsigned char *pdata,
|
||||||
unsigned char *phash1, unsigned char *phash,
|
unsigned char *phash1, unsigned char *phash,
|
||||||
const unsigned char *ptarget,
|
const unsigned char *ptarget,
|
||||||
@ -139,7 +139,7 @@ bool ScanHash_4WaySSE2(int thr_id, const unsigned char *pmidstate,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((nonce >= max_nonce) || work_restart[thr_id].restart)
|
if ((nonce >= max_nonce) || thr->work_restart)
|
||||||
{
|
{
|
||||||
*last_nonce = nonce;
|
*last_nonce = nonce;
|
||||||
return false;
|
return false;
|
||||||
|
@ -73,7 +73,7 @@ static const unsigned int pSHA256InitState[8] =
|
|||||||
{0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19};
|
{0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19};
|
||||||
|
|
||||||
|
|
||||||
bool ScanHash_altivec_4way(int thr_id, const unsigned char *pmidstate,
|
bool ScanHash_altivec_4way(struct thr_info*thr, const unsigned char *pmidstate,
|
||||||
unsigned char *pdata,
|
unsigned char *pdata,
|
||||||
unsigned char *phash1, unsigned char *phash,
|
unsigned char *phash1, unsigned char *phash,
|
||||||
const unsigned char *ptarget,
|
const unsigned char *ptarget,
|
||||||
@ -111,7 +111,7 @@ bool ScanHash_altivec_4way(int thr_id, const unsigned char *pmidstate,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((nonce >= max_nonce) || work_restart[thr_id].restart)
|
if ((nonce >= max_nonce) || thr->work_restart)
|
||||||
{
|
{
|
||||||
*last_nonce = nonce;
|
*last_nonce = nonce;
|
||||||
return false;
|
return false;
|
||||||
|
@ -93,7 +93,7 @@ static void runhash(void *state, const void *input, const void *init)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* suspiciously similar to ScanHash* from bitcoin */
|
/* suspiciously similar to ScanHash* from bitcoin */
|
||||||
bool scanhash_cryptopp(int thr_id, const unsigned char *midstate,
|
bool scanhash_cryptopp(struct thr_info*thr, const unsigned char *midstate,
|
||||||
unsigned char *data,
|
unsigned char *data,
|
||||||
unsigned char *hash1, unsigned char *hash,
|
unsigned char *hash1, unsigned char *hash,
|
||||||
const unsigned char *target,
|
const unsigned char *target,
|
||||||
@ -105,8 +105,6 @@ bool scanhash_cryptopp(int thr_id, const unsigned char *midstate,
|
|||||||
|
|
||||||
data += 64;
|
data += 64;
|
||||||
|
|
||||||
work_restart[thr_id].restart = 0;
|
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
n++;
|
n++;
|
||||||
*nonce = n;
|
*nonce = n;
|
||||||
@ -119,7 +117,7 @@ bool scanhash_cryptopp(int thr_id, const unsigned char *midstate,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((n >= max_nonce) || work_restart[thr_id].restart) {
|
if ((n >= max_nonce) || thr->work_restart) {
|
||||||
*last_nonce = n;
|
*last_nonce = n;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -577,7 +575,7 @@ static void runhash32(void *state, const void *input, const void *init)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* suspiciously similar to ScanHash* from bitcoin */
|
/* suspiciously similar to ScanHash* from bitcoin */
|
||||||
bool scanhash_asm32(int thr_id, const unsigned char *midstate,
|
bool scanhash_asm32(struct thr_info*thr, const unsigned char *midstate,
|
||||||
unsigned char *data,
|
unsigned char *data,
|
||||||
unsigned char *hash1, unsigned char *hash,
|
unsigned char *hash1, unsigned char *hash,
|
||||||
const unsigned char *target,
|
const unsigned char *target,
|
||||||
@ -601,7 +599,7 @@ bool scanhash_asm32(int thr_id, const unsigned char *midstate,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((n >= max_nonce) || work_restart[thr_id].restart) {
|
if ((n >= max_nonce) || thr->work_restart) {
|
||||||
*last_nonce = n;
|
*last_nonce = n;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -239,7 +239,7 @@ const uint32_t sha256_init_state[8] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* suspiciously similar to ScanHash* from bitcoin */
|
/* suspiciously similar to ScanHash* from bitcoin */
|
||||||
bool scanhash_c(int thr_id, const unsigned char *midstate, unsigned char *data,
|
bool scanhash_c(struct thr_info*thr, const unsigned char *midstate, unsigned char *data,
|
||||||
unsigned char *hash1, unsigned char *hash,
|
unsigned char *hash1, unsigned char *hash,
|
||||||
const unsigned char *target,
|
const unsigned char *target,
|
||||||
uint32_t max_nonce, uint32_t *last_nonce,
|
uint32_t max_nonce, uint32_t *last_nonce,
|
||||||
@ -265,7 +265,7 @@ bool scanhash_c(int thr_id, const unsigned char *midstate, unsigned char *data,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((n >= max_nonce) || work_restart[thr_id].restart) {
|
if ((n >= max_nonce) || thr->work_restart) {
|
||||||
*last_nonce = n;
|
*last_nonce = n;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ const uint32_t sha256_init[8]__attribute__((aligned(0x100))) =
|
|||||||
__m128i g_4sha256_k[64];
|
__m128i g_4sha256_k[64];
|
||||||
__m128i sha256_consts_m128i[64]__attribute__((aligned(0x1000)));
|
__m128i sha256_consts_m128i[64]__attribute__((aligned(0x1000)));
|
||||||
|
|
||||||
bool scanhash_sse2_64(int thr_id, const unsigned char *pmidstate,
|
bool scanhash_sse2_64(struct thr_info*thr, const unsigned char *pmidstate,
|
||||||
unsigned char *pdata,
|
unsigned char *pdata,
|
||||||
unsigned char *phash1, unsigned char *phash,
|
unsigned char *phash1, unsigned char *phash,
|
||||||
const unsigned char *ptarget,
|
const unsigned char *ptarget,
|
||||||
@ -119,7 +119,7 @@ bool scanhash_sse2_64(int thr_id, const unsigned char *pmidstate,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unlikely((nonce >= max_nonce) || work_restart[thr_id].restart))
|
if (unlikely((nonce >= max_nonce) || thr->work_restart))
|
||||||
{
|
{
|
||||||
*last_nonce = nonce;
|
*last_nonce = nonce;
|
||||||
return false;
|
return false;
|
||||||
|
@ -48,7 +48,7 @@ const uint32_t sha256_32init[8]__attribute__((aligned(0x100))) =
|
|||||||
__m128i g_4sha256_k[64];
|
__m128i g_4sha256_k[64];
|
||||||
__m128i sha256_consts_m128i[64]__attribute__((aligned(0x1000)));
|
__m128i sha256_consts_m128i[64]__attribute__((aligned(0x1000)));
|
||||||
|
|
||||||
bool scanhash_sse2_32(int thr_id, const unsigned char *pmidstate,
|
bool scanhash_sse2_32(struct thr_info*thr, const unsigned char *pmidstate,
|
||||||
unsigned char *pdata,
|
unsigned char *pdata,
|
||||||
unsigned char *phash1, unsigned char *phash,
|
unsigned char *phash1, unsigned char *phash,
|
||||||
const unsigned char *ptarget,
|
const unsigned char *ptarget,
|
||||||
@ -111,7 +111,7 @@ bool scanhash_sse2_32(int thr_id, const unsigned char *pmidstate,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unlikely((nonce >= max_nonce) || work_restart[thr_id].restart)) {
|
if (unlikely((nonce >= max_nonce) || thr->work_restart)) {
|
||||||
*last_nonce = nonce;
|
*last_nonce = nonce;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ static uint32_t g_sha256_hinit[8] =
|
|||||||
|
|
||||||
__m128i g_4sha256_k[64];
|
__m128i g_4sha256_k[64];
|
||||||
|
|
||||||
bool scanhash_sse4_64(int thr_id, const unsigned char *pmidstate,
|
bool scanhash_sse4_64(struct thr_info*thr, const unsigned char *pmidstate,
|
||||||
unsigned char *pdata,
|
unsigned char *pdata,
|
||||||
unsigned char *phash1, unsigned char *phash,
|
unsigned char *phash1, unsigned char *phash,
|
||||||
const unsigned char *ptarget,
|
const unsigned char *ptarget,
|
||||||
@ -118,7 +118,7 @@ bool scanhash_sse4_64(int thr_id, const unsigned char *pmidstate,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unlikely((nonce >= max_nonce) || work_restart[thr_id].restart))
|
if (unlikely((nonce >= max_nonce) || thr->work_restart))
|
||||||
{
|
{
|
||||||
*last_nonce = nonce;
|
*last_nonce = nonce;
|
||||||
return false;
|
return false;
|
||||||
|
@ -19,7 +19,7 @@ static void via_sha256(void *hash, void *buf, unsigned len)
|
|||||||
:"memory");
|
:"memory");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool scanhash_via(int thr_id, const unsigned char *pmidstate,
|
bool scanhash_via(struct thr_info*thr, const unsigned char *pmidstate,
|
||||||
unsigned char *data_inout,
|
unsigned char *data_inout,
|
||||||
unsigned char *phash1, unsigned char *phash,
|
unsigned char *phash1, unsigned char *phash,
|
||||||
const unsigned char *target,
|
const unsigned char *target,
|
||||||
@ -74,7 +74,7 @@ bool scanhash_via(int thr_id, const unsigned char *pmidstate,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((n >= max_nonce) || work_restart[thr_id].restart) {
|
if ((n >= max_nonce) || thr->work_restart) {
|
||||||
*last_nonce = n;
|
*last_nonce = n;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user