Skip to content

Commit

Permalink
main-loop: use GSource to poll AIO file descriptors
Browse files Browse the repository at this point in the history
This lets us remove the hooks for the main loop in async.c.

Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
  • Loading branch information
bonzini committed Oct 30, 2012
1 parent 7ed2b24 commit 82cbbdc
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 18 deletions.
23 changes: 6 additions & 17 deletions main-loop.c
Expand Up @@ -205,6 +205,7 @@ static AioContext *qemu_aio_context;
int qemu_init_main_loop(void)
{
int ret;
GSource *src;

init_clocks();
init_timer_alarm();
Expand All @@ -222,6 +223,9 @@ int qemu_init_main_loop(void)
}

qemu_aio_context = aio_context_new();
src = aio_get_g_source(qemu_aio_context);
g_source_attach(src, NULL);
g_source_unref(src);
return 0;
}

Expand Down Expand Up @@ -484,8 +488,6 @@ int main_loop_wait(int nonblocking)

if (nonblocking) {
timeout = 0;
} else {
aio_bh_update_timeout(qemu_aio_context, &timeout);
}

/* poll any events */
Expand All @@ -508,10 +510,6 @@ int main_loop_wait(int nonblocking)

qemu_run_all_timers();

/* Check bottom-halves last in case any of the earlier events triggered
them. */
qemu_bh_poll();

return ret;
}

Expand All @@ -522,11 +520,6 @@ QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque)
return aio_bh_new(qemu_aio_context, cb, opaque);
}

int qemu_bh_poll(void)
{
return aio_bh_poll(qemu_aio_context);
}

void qemu_aio_flush(void)
{
aio_flush(qemu_aio_context);
Expand All @@ -546,16 +539,12 @@ void qemu_aio_set_fd_handler(int fd,
{
aio_set_fd_handler(qemu_aio_context, fd, io_read, io_write, io_flush,
opaque);

qemu_set_fd_handler2(fd, NULL, io_read, io_write, opaque);
}
#endif

void qemu_aio_set_event_notifier(EventNotifier *notifier,
EventNotifierHandler *io_read,
AioFlushEventNotifierHandler *io_flush)
{
qemu_aio_set_fd_handler(event_notifier_get_fd(notifier),
(IOHandler *)io_read, NULL,
(AioFlushHandler *)io_flush, notifier);
aio_set_event_notifier(qemu_aio_context, notifier, io_read, io_flush);
}
#endif
1 change: 0 additions & 1 deletion main-loop.h
Expand Up @@ -302,6 +302,5 @@ void qemu_iohandler_poll(fd_set *readfds, fd_set *writefds, fd_set *xfds, int rc

QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque);
void qemu_bh_schedule_idle(QEMUBH *bh);
int qemu_bh_poll(void);

#endif

0 comments on commit 82cbbdc

Please sign in to comment.