This function will be used to assign fd handlers. Future commits will be enable each handler to be enabled/disabled individually.
Make qemu_set_fd_handler2() a wrapper to assign_fd_handlers(). remove_fd_handlers() removes all the assigned handlers and marks the iohandler for deletion. It's a wrapper to assign_fd_handlers() with NULL handlers. Signed-off-by: Amit Shah <amit.s...@redhat.com> --- qemu-char.h | 6 ++++++ vl.c | 24 +++++++++++++++++++----- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/qemu-char.h b/qemu-char.h index e6ee6c4..0ef83f4 100644 --- a/qemu-char.h +++ b/qemu-char.h @@ -109,6 +109,12 @@ size_t qemu_chr_mem_osize(const CharDriverState *chr); /* async I/O support */ +int assign_fd_handlers(int fd, + IOCanReadHandler *fd_read_poll, + IOHandler *fd_read, + IOHandler *fd_write, + void *opaque); +void remove_fd_handlers(int fd); int qemu_set_fd_handler2(int fd, IOCanReadHandler *fd_read_poll, IOHandler *fd_read, diff --git a/vl.c b/vl.c index 9e365f6..38e0a3c 100644 --- a/vl.c +++ b/vl.c @@ -1036,11 +1036,11 @@ static IOHandlerRecord *get_iohandler(int fd) /* XXX: fd_read_poll should be suppressed, but an API change is necessary in the character devices to suppress fd_can_read(). */ -int qemu_set_fd_handler2(int fd, - IOCanReadHandler *fd_read_poll, - IOHandler *fd_read, - IOHandler *fd_write, - void *opaque) +int assign_fd_handlers(int fd, + IOCanReadHandler *fd_read_poll, + IOHandler *fd_read, + IOHandler *fd_write, + void *opaque) { IOHandlerRecord *ioh; @@ -1066,6 +1066,20 @@ int qemu_set_fd_handler2(int fd, return 0; } +void remove_fd_handlers(int fd) +{ + assign_fd_handlers(fd, NULL, NULL, NULL, NULL); +} + +int qemu_set_fd_handler2(int fd, + IOCanReadHandler *fd_read_poll, + IOHandler *fd_read, + IOHandler *fd_write, + void *opaque) +{ + return assign_fd_handlers(fd, fd_read_poll, fd_read, fd_write, opaque); +} + int qemu_set_fd_handler(int fd, IOHandler *fd_read, IOHandler *fd_write, -- 1.7.3.4