From: malc Date: Sat, 21 Feb 2009 05:48:13 +0000 (+0000) Subject: Avoid infinite loop around timed condition variable X-Git-Tag: xen-3.4.0-rc2~12^2~54 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=30525aff78e9ee2099b24a3dc7534317ee130383;p=qemu-xen-3.4-testing.git Avoid infinite loop around timed condition variable This can happen due to spurious wakeups git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6631 c046a42c-6fe2-441c-8c8c-71466251a162 --- diff --git a/posix-aio-compat.c b/posix-aio-compat.c index 154b0511..aa1b6f59 100644 --- a/posix-aio-compat.c +++ b/posix-aio-compat.c @@ -14,7 +14,7 @@ #include #include #include -#include +#include #include #include #include @@ -86,16 +86,17 @@ static void *aio_thread(void *unused) struct qemu_paiocb *aiocb; size_t offset; int ret = 0; + qemu_timeval tv; + struct timespec ts; + + qemu_gettimeofday(&tv); + ts.tv_sec = tv.tv_sec + 10; + ts.tv_nsec = 0; mutex_lock(&lock); while (TAILQ_EMPTY(&request_list) && !(ret == ETIMEDOUT)) { - struct timespec ts = { 0 }; - qemu_timeval tv; - - qemu_gettimeofday(&tv); - ts.tv_sec = tv.tv_sec + 10; ret = cond_timedwait(&cond, &lock, &ts); }