Commit d6da1e9e authored by Paolo Bonzini's avatar Paolo Bonzini
Browse files

event_notifier: cleanups around event_notifier_set_handler



Remove the useless is_external argument.  Since the iohandler
AioContext is never used for block devices, aio_disable_external
is never called on it.  This lets us remove stubs/iohandler.c.

Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent a0f80010
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -407,7 +407,7 @@ static int init_event_notifier(EmulatedState *card)
        DPRINTF(card, 2, "event notifier creation failed\n");
        return -1;
    }
    event_notifier_set_handler(&card->notifier, false, card_event_handler);
    event_notifier_set_handler(&card->notifier, card_event_handler);
    return 0;
}

+5 −5
Original line number Diff line number Diff line
@@ -2090,10 +2090,10 @@ void virtio_queue_set_guest_notifier_fd_handler(VirtQueue *vq, bool assign,
                                                bool with_irqfd)
{
    if (assign && !with_irqfd) {
        event_notifier_set_handler(&vq->guest_notifier, false,
        event_notifier_set_handler(&vq->guest_notifier,
                                   virtio_queue_guest_notifier_read);
    } else {
        event_notifier_set_handler(&vq->guest_notifier, false, NULL);
        event_notifier_set_handler(&vq->guest_notifier, NULL);
    }
    if (!assign) {
        /* Test and clear notifier before closing it,
@@ -2262,7 +2262,7 @@ static int virtio_device_start_ioeventfd_impl(VirtIODevice *vdev)
            err = r;
            goto assign_error;
        }
        event_notifier_set_handler(&vq->host_notifier, true,
        event_notifier_set_handler(&vq->host_notifier,
                                   virtio_queue_host_notifier_read);
    }

@@ -2283,7 +2283,7 @@ assign_error:
            continue;
        }

        event_notifier_set_handler(&vq->host_notifier, true, NULL);
        event_notifier_set_handler(&vq->host_notifier, NULL);
        r = virtio_bus_set_host_notifier(qbus, n, false);
        assert(r >= 0);
    }
@@ -2309,7 +2309,7 @@ static void virtio_device_stop_ioeventfd_impl(VirtIODevice *vdev)
        if (!virtio_queue_get_num(vdev, n)) {
            continue;
        }
        event_notifier_set_handler(&vq->host_notifier, true, NULL);
        event_notifier_set_handler(&vq->host_notifier, NULL);
        r = virtio_bus_set_host_notifier(qbus, n, false);
        assert(r >= 0);
    }
+0 −3
Original line number Diff line number Diff line
@@ -34,9 +34,6 @@ int event_notifier_init(EventNotifier *, int active);
void event_notifier_cleanup(EventNotifier *);
int event_notifier_set(EventNotifier *);
int event_notifier_test_and_clear(EventNotifier *);
int event_notifier_set_handler(EventNotifier *,
                               bool is_external,
                               EventNotifierHandler *);

#ifdef CONFIG_POSIX
void event_notifier_init_fd(EventNotifier *, int fd);
+15 −0
Original line number Diff line number Diff line
@@ -203,6 +203,21 @@ void qemu_set_fd_handler(int fd,
                         IOHandler *fd_write,
                         void *opaque);


/**
 * event_notifier_set_handler: Register an EventNotifier with the main loop
 *
 * This function tells the main loop to wake up whenever the
 * #EventNotifier was set.
 *
 * @e: The #EventNotifier to be observed.
 *
 * @handler: A level-triggered callback that is fired when @e
 * has been set.  @e is passed to it as a parameter.
 */
void event_notifier_set_handler(EventNotifier *e,
                                EventNotifierHandler *handler);

GSource *iohandler_get_g_source(void);
AioContext *iohandler_get_aio_context(void);
#ifdef CONFIG_POSIX
+8 −0
Original line number Diff line number Diff line
@@ -66,6 +66,14 @@ void qemu_set_fd_handler(int fd,
                       fd_read, fd_write, NULL, opaque);
}

void event_notifier_set_handler(EventNotifier *e,
                                EventNotifierHandler *handler)
{
    iohandler_init();
    aio_set_event_notifier(iohandler_ctx, e, false,
                           handler, NULL);
}

/* reaping of zombies.  right now we're not passing the status to
   anyone, but it would be possible to add a callback.  */
#ifndef _WIN32
Loading