Wait till the avalon_send_tasks thread has filled the avalon with idle work before starting the avalon_get_results thread.
diff --git a/driver-avalon.c b/driver-avalon.c
index 875b1f9..a51e33f 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);