Commit 4bed9837 authored by Juan Quintela's avatar Juan Quintela Committed by Anthony Liguori
Browse files

Handle deleted IOHandlers in a single buffer

parent ca96c316
Loading
Loading
Loading
Loading
+7 −10
Original line number Diff line number Diff line
@@ -2836,20 +2836,17 @@ void main_loop_wait(int nonblocking)
    if (ret > 0) {
        IOHandlerRecord *pioh;

        QLIST_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 */
        QLIST_FOREACH_SAFE(ioh, &io_handlers, next, pioh) {
            if (ioh->deleted) {
                QLIST_REMOVE(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);
            }
        }
    }