mirror of
https://github.com/GOSTSec/sgminer
synced 2025-09-03 09:42:17 +00:00
Provide a noop can_limit_work for devices that don't support it.
This commit is contained in:
parent
5b22f092d9
commit
8e12a05b47
15
cgminer.c
15
cgminer.c
@ -5372,7 +5372,7 @@ void *miner_thread(void *userdata)
|
|||||||
const long cycle = opt_log_interval / 5 ? : 1;
|
const long cycle = opt_log_interval / 5 ? : 1;
|
||||||
struct timeval tv_start, tv_end, tv_workstart, tv_lastupdate;
|
struct timeval tv_start, tv_end, tv_workstart, tv_lastupdate;
|
||||||
struct timeval diff, sdiff, wdiff = {0, 0};
|
struct timeval diff, sdiff, wdiff = {0, 0};
|
||||||
uint32_t max_nonce = drv->can_limit_work ? drv->can_limit_work(mythr) : 0xffffffff;
|
uint32_t max_nonce = drv->can_limit_work(mythr);
|
||||||
int64_t hashes_done = 0;
|
int64_t hashes_done = 0;
|
||||||
int64_t hashes;
|
int64_t hashes;
|
||||||
struct work *work;
|
struct work *work;
|
||||||
@ -5478,7 +5478,7 @@ void *miner_thread(void *userdata)
|
|||||||
if (unlikely((long)sdiff.tv_sec < cycle)) {
|
if (unlikely((long)sdiff.tv_sec < cycle)) {
|
||||||
int mult;
|
int mult;
|
||||||
|
|
||||||
if (likely(!drv->can_limit_work || max_nonce == 0xffffffff))
|
if (likely(max_nonce == 0xffffffff))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
mult = 1000000 / ((sdiff.tv_usec + 0x400) / 0x400) + 0x10;
|
mult = 1000000 / ((sdiff.tv_usec + 0x400) / 0x400) + 0x10;
|
||||||
@ -5487,9 +5487,9 @@ void *miner_thread(void *userdata)
|
|||||||
max_nonce = 0xffffffff;
|
max_nonce = 0xffffffff;
|
||||||
else
|
else
|
||||||
max_nonce = (max_nonce * mult) / 0x400;
|
max_nonce = (max_nonce * mult) / 0x400;
|
||||||
} else if (unlikely(sdiff.tv_sec > cycle) && drv->can_limit_work)
|
} else if (unlikely(sdiff.tv_sec > cycle))
|
||||||
max_nonce = max_nonce * cycle / sdiff.tv_sec;
|
max_nonce = max_nonce * cycle / sdiff.tv_sec;
|
||||||
else if (unlikely(sdiff.tv_usec > 100000) && drv->can_limit_work)
|
else if (unlikely(sdiff.tv_usec > 100000))
|
||||||
max_nonce = max_nonce * 0x400 / (((cycle * 1000000) + sdiff.tv_usec) / (cycle * 1000000 / 0x400));
|
max_nonce = max_nonce * 0x400 / (((cycle * 1000000) + sdiff.tv_usec) / (cycle * 1000000 / 0x400));
|
||||||
|
|
||||||
timersub(&tv_end, &tv_lastupdate, &diff);
|
timersub(&tv_end, &tv_lastupdate, &diff);
|
||||||
@ -6389,6 +6389,11 @@ static bool noop_thread_prepare(struct thr_info __maybe_unused *thr)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint64_t noop_can_limit_work(struct thr_info __maybe_unused *thr)
|
||||||
|
{
|
||||||
|
return 0xffffffff;
|
||||||
|
}
|
||||||
|
|
||||||
/* Fill missing driver api functions with noops */
|
/* Fill missing driver api functions with noops */
|
||||||
void fill_device_api(struct cgpu_info *cgpu)
|
void fill_device_api(struct cgpu_info *cgpu)
|
||||||
{
|
{
|
||||||
@ -6404,6 +6409,8 @@ void fill_device_api(struct cgpu_info *cgpu)
|
|||||||
drv->get_stats = &noop_get_stats;
|
drv->get_stats = &noop_get_stats;
|
||||||
if (!drv->thread_prepare)
|
if (!drv->thread_prepare)
|
||||||
drv->thread_prepare = &noop_thread_prepare;
|
drv->thread_prepare = &noop_thread_prepare;
|
||||||
|
if (!drv->can_limit_work)
|
||||||
|
drv->can_limit_work = &noop_can_limit_work;
|
||||||
}
|
}
|
||||||
|
|
||||||
void enable_device(struct cgpu_info *cgpu)
|
void enable_device(struct cgpu_info *cgpu)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user