Commit 0763070cb06c9a1aee623e87eeccc30f0041ae0c

Con Kolivas 2013-05-26T14:29:28

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);