From f4428e2cdf5da231bb30ce1ed9eb5ce567a9dc55 Mon Sep 17 00:00:00 2001 From: Michael Roth Date: Thu, 2 Dec 2010 20:43:31 -0600 Subject: [PATCH] Add qemu_set_fd_handler() wrappers to qemu-tools.c This adds state information for managing fd handlers to qemu-tools.c so that tools that build against it can implement an I/O loop for interacting with objects that use qemu_set_fd_handler() --- qemu-tool.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/qemu-tool.c b/qemu-tool.c index 392e1c9505..78d3532dda 100644 --- a/qemu-tool.c +++ b/qemu-tool.c @@ -22,6 +22,8 @@ QEMUClock *rt_clock; FILE *logfile; +static QLIST_HEAD(, IOHandlerRecord) io_handlers = + QLIST_HEAD_INITIALIZER(io_handlers); struct QEMUBH { @@ -103,11 +105,32 @@ void qemu_bh_delete(QEMUBH *bh) qemu_free(bh); } +/* definitions to implement i/o loop for fd handlers in tools */ int qemu_set_fd_handler2(int fd, IOCanReadHandler *fd_read_poll, IOHandler *fd_read, IOHandler *fd_write, void *opaque) { - return 0; + return qemu_set_fd_handler3(&io_handlers, fd, fd_read_poll, fd_read, + fd_write, opaque); +} + +int qemu_set_fd_handler(int fd, + IOHandler *fd_read, + IOHandler *fd_write, + void *opaque) +{ + return qemu_set_fd_handler2(fd, NULL, fd_read, fd_write, opaque); +} + +void qemu_get_fdset(int *nfds, fd_set *rfds, fd_set *wfds, fd_set *xfds) +{ + return qemu_get_fdset2(&io_handlers, nfds, rfds, wfds, xfds); +} + +void qemu_process_fd_handlers(const fd_set *rfds, const fd_set *wfds, + const fd_set *xfds) +{ + return qemu_process_fd_handlers2(&io_handlers, rfds, wfds, xfds); } -- 2.11.4.GIT