qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 05/14] Handle deleted IOHandlers in a single pass


From: Juan Quintela
Subject: [Qemu-devel] [PATCH 05/14] Handle deleted IOHandlers in a single pass
Date: Wed, 10 Mar 2010 11:03:19 +0100

Previous code 1st call normal functions and then remove deleted
handlers in the following pass.  Calllapse the two walks.

Signed-off-by: Juan Quintela <address@hidden>
---
 vl.c |   17 +++++++----------
 1 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/vl.c b/vl.c
index 354ea31..c2ae185 100644
--- a/vl.c
+++ b/vl.c
@@ -3846,20 +3846,17 @@ void main_loop_wait(int timeout)
     if (ret > 0) {
         IOHandlerRecord *pioh;

-        QTAILQ_FOREACH(ioh, &io_handlers, next) {
-            if (!ioh->deleted && ioh->fd_read && FD_ISSET(ioh->fd, &rfds)) {
-                ioh->fd_read(ioh->opaque);
-            }
-            if (!ioh->deleted && ioh->fd_write && FD_ISSET(ioh->fd, &wfds)) {
-                ioh->fd_write(ioh->opaque);
-            }
-        }
-
-       /* remove deleted IO handlers */
         QTAILQ_FOREACH_SAFE(ioh, &io_handlers, next, pioh) {
             if (ioh->deleted) {
                 QTAILQ_REMOVE(&io_handlers, ioh, next);
                 qemu_free(ioh);
+                continue;
+            }
+            if (ioh->fd_read && FD_ISSET(ioh->fd, &rfds)) {
+                ioh->fd_read(ioh->opaque);
+            }
+            if (ioh->fd_write && FD_ISSET(ioh->fd, &wfds)) {
+                ioh->fd_write(ioh->opaque);
             }
         }
     }
-- 
1.6.6.1





reply via email to

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