mirror of
https://github.com/GOSTSec/sgminer
synced 2025-02-02 10:04:33 +00:00
Queue and pop precisely the same amount of work in flush_request to ensure all work is cleared and there isn't an uneven add/remove possible.
This commit is contained in:
parent
af6e7937ca
commit
f90e73af51
19
main.c
19
main.c
@ -719,27 +719,24 @@ static bool discard_request(void)
|
|||||||
|
|
||||||
static void flush_requests(void)
|
static void flush_requests(void)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
int i, extra;
|
||||||
|
|
||||||
/* Queue a whole batch of new requests */
|
extra = requests_queued();
|
||||||
for (i = 0; i < opt_queue; i++) {
|
for (i = 0; i < extra; i++) {
|
||||||
|
/* Queue a whole batch of new requests */
|
||||||
if (unlikely(!queue_request())) {
|
if (unlikely(!queue_request())) {
|
||||||
applog(LOG_ERR, "Failed to queue requests in flush_requests");
|
applog(LOG_ERR, "Failed to queue requests in flush_requests");
|
||||||
kill_work();
|
kill_work();
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
}
|
/* Pop off the old requests. Cancelling the requests would be better
|
||||||
|
* but is tricky */
|
||||||
/* Pop off the old requests. Cancelling the requests would be better
|
|
||||||
* but is tricky */
|
|
||||||
while (requests_queued() > opt_queue) {
|
|
||||||
if (unlikely(!discard_request())) {
|
if (unlikely(!discard_request())) {
|
||||||
applog(LOG_ERR, "Failed to discard requests in flush_requests");
|
applog(LOG_ERR, "Failed to discard requests in flush_requests");
|
||||||
kill_work();
|
kill_work();
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool get_work(struct work *work, bool queued)
|
static bool get_work(struct work *work, bool queued)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user