Properly handle pthread_cond_timedwait timing out
authormalc <malc@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 21 Feb 2009 05:48:19 +0000 (05:48 +0000)
committermalc <malc@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 21 Feb 2009 05:48:19 +0000 (05:48 +0000)
pthread_cond_timedwait is allowed to both consume the signal and
return with the value indicating the timeout, hence predicate should
always be (re)checked before taking an action

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6634 c046a42c-6fe2-441c-8c8c-71466251a162

posix-aio-compat.c

index 1956917..6b547f4 100644 (file)
@@ -104,7 +104,7 @@ static void *aio_thread(void *unused)
             ret = cond_timedwait(&cond, &lock, &ts);
         }
 
-        if (ret == ETIMEDOUT)
+        if (TAILQ_EMPTY(&request_list))
             break;
 
         aiocb = TAILQ_FIRST(&request_list);