From 0763070cb06c9a1aee623e87eeccc30f0041ae0c Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sun, 26 May 2013 14:29:28 +1000 Subject: [PATCH] Wait till the avalon_send_tasks thread has filled the avalon with idle work before starting the avalon_get_results thread. --- driver-avalon.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/driver-avalon.c b/driver-avalon.c index 875b1f90..a51e33f2 100644 --- a/driver-avalon.c +++ b/driver-avalon.c @@ -703,7 +703,7 @@ static void *avalon_send_tasks(void *userdata) for (i = start_count, j = 0; i < end_count; i++, j++) { if (unlikely(avalon_buffer_full(fd) == AVA_BUFFER_FULL)) { applog(LOG_WARNING, - "AVA%i: Buffer full before all work queued", + "AVA%i: Buffer full before all work queued", avalon->device_id); break; } @@ -765,6 +765,10 @@ static bool avalon_prepare(struct thr_info *thr) if (pthread_create(&info->read_thr, NULL, avalon_get_results, (void *)avalon)) quit(1, "Failed to create avalon read_thr"); + mutex_lock(&info->qlock); + pthread_cond_wait(&info->qcond, &info->qlock); + mutex_unlock(&info->qlock); + avalon_init(avalon); cgtime(&now);