qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [6631] Avoid infinite loop around timed condition varia


From: C . W . Betts
Subject: Re: [Qemu-devel] [6631] Avoid infinite loop around timed condition variable
Date: Fri, 20 Feb 2009 22:58:43 -0700

Will these patches help with the OS X hang?
On Feb 20, 2009, at 10:48 PM, malc wrote:

Revision: 6631
         http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6631
Author:   malc
Date:     2009-02-21 05:48:13 +0000 (Sat, 21 Feb 2009)

Log Message:
-----------
Avoid infinite loop around timed condition variable

This can happen due to spurious wakeups

Modified Paths:
--------------
   trunk/posix-aio-compat.c

Modified: trunk/posix-aio-compat.c
===================================================================
--- trunk/posix-aio-compat.c 2009-02-21 05:48:11 UTC (rev 6630)
+++ trunk/posix-aio-compat.c 2009-02-21 05:48:13 UTC (rev 6631)
@@ -14,7 +14,7 @@
#include <pthread.h>
#include <unistd.h>
#include <errno.h>
-#include <sys/time.h>
+#include <time.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
@@ -86,16 +86,17 @@
        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);
        }







reply via email to

[Prev in Thread] Current Thread [Next in Thread]